amule-ec-client 0.5.1 → 0.6.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.
Files changed (86) hide show
  1. package/README.md +6 -4
  2. package/dist/AddLinkRequest-DwUbSMXD.mjs +17 -0
  3. package/dist/AddLinkRequest-DwUbSMXD.mjs.map +1 -0
  4. package/dist/ClientQueueRequest-D9FaX5K9.mjs +17 -0
  5. package/dist/ClientQueueRequest-D9FaX5K9.mjs.map +1 -0
  6. package/dist/ClientQueueResponse-FVQBR_8b.mjs +65 -0
  7. package/dist/ClientQueueResponse-FVQBR_8b.mjs.map +1 -0
  8. package/dist/Codes-CjiW7Pdl.mjs +411 -0
  9. package/dist/Codes-CjiW7Pdl.mjs.map +1 -0
  10. package/dist/CreateCategoryRequest-Br6yfDhZ.mjs +24 -0
  11. package/dist/CreateCategoryRequest-Br6yfDhZ.mjs.map +1 -0
  12. package/dist/DeleteCategoryRequest-C2-p6sx0.mjs +17 -0
  13. package/dist/DeleteCategoryRequest-C2-p6sx0.mjs.map +1 -0
  14. package/dist/DownloadCommandRequest-CaULjfNi.mjs +31 -0
  15. package/dist/DownloadCommandRequest-CaULjfNi.mjs.map +1 -0
  16. package/dist/DownloadFileRequest-CcNqsBo7.mjs +20 -0
  17. package/dist/DownloadFileRequest-CcNqsBo7.mjs.map +1 -0
  18. package/dist/DownloadQueueRequest-bd7lFiMj.mjs +17 -0
  19. package/dist/DownloadQueueRequest-bd7lFiMj.mjs.map +1 -0
  20. package/dist/DownloadQueueResponse-DyP1rLTV.mjs +261 -0
  21. package/dist/DownloadQueueResponse-DyP1rLTV.mjs.map +1 -0
  22. package/dist/GetPreferencesRequest-C94Su9IH.mjs +18 -0
  23. package/dist/GetPreferencesRequest-C94Su9IH.mjs.map +1 -0
  24. package/dist/PreferencesDetailsResponse-BjMxbvVY.mjs +96 -0
  25. package/dist/PreferencesDetailsResponse-BjMxbvVY.mjs.map +1 -0
  26. package/dist/PreferencesResponse-Dth-n2sA.mjs +39 -0
  27. package/dist/PreferencesResponse-Dth-n2sA.mjs.map +1 -0
  28. package/dist/ReloadSharedFilesRequest-CPwAEJYG.mjs +15 -0
  29. package/dist/ReloadSharedFilesRequest-CPwAEJYG.mjs.map +1 -0
  30. package/dist/Request-C0UUuQIX.mjs +160 -0
  31. package/dist/Request-C0UUuQIX.mjs.map +1 -0
  32. package/dist/SearchProgressResponse-Bputc9Ww.mjs +17 -0
  33. package/dist/SearchProgressResponse-Bputc9Ww.mjs.map +1 -0
  34. package/dist/SearchRequest-CNqz-K1Z.mjs +57 -0
  35. package/dist/SearchRequest-CNqz-K1Z.mjs.map +1 -0
  36. package/dist/SearchResultsRequest-DKG508KF.mjs +15 -0
  37. package/dist/SearchResultsRequest-DKG508KF.mjs.map +1 -0
  38. package/dist/SearchResultsResponse-ChNrKJ6_.mjs +31 -0
  39. package/dist/SearchResultsResponse-ChNrKJ6_.mjs.map +1 -0
  40. package/dist/SearchStatusRequest-Bv6iaC9Y.mjs +15 -0
  41. package/dist/SearchStatusRequest-Bv6iaC9Y.mjs.map +1 -0
  42. package/dist/SearchStopRequest-rET-2Nsz.mjs +15 -0
  43. package/dist/SearchStopRequest-rET-2Nsz.mjs.map +1 -0
  44. package/dist/ServerConnectRequest-CcO2-Eqd.mjs +20 -0
  45. package/dist/ServerConnectRequest-CcO2-Eqd.mjs.map +1 -0
  46. package/dist/ServerDisconnectRequest-DEORM3SF.mjs +15 -0
  47. package/dist/ServerDisconnectRequest-DEORM3SF.mjs.map +1 -0
  48. package/dist/ServerListRequest-FwFQBp12.mjs +15 -0
  49. package/dist/ServerListRequest-FwFQBp12.mjs.map +1 -0
  50. package/dist/ServerListResponse-ZAKSSCPZ.mjs +52 -0
  51. package/dist/ServerListResponse-ZAKSSCPZ.mjs.map +1 -0
  52. package/dist/ServerUpdateFromUrlRequest-D4xBqJDJ.mjs +14 -0
  53. package/dist/ServerUpdateFromUrlRequest-D4xBqJDJ.mjs.map +1 -0
  54. package/dist/SetFileCategoryRequest-BwEPJVeR.mjs +17 -0
  55. package/dist/SetFileCategoryRequest-BwEPJVeR.mjs.map +1 -0
  56. package/dist/SetPreferencesRequest-D2fVIH3P.mjs +66 -0
  57. package/dist/SetPreferencesRequest-D2fVIH3P.mjs.map +1 -0
  58. package/dist/SharedFilePriorityRequest-j6ImgagV.mjs +15 -0
  59. package/dist/SharedFilePriorityRequest-j6ImgagV.mjs.map +1 -0
  60. package/dist/SharedFilesRequest-D2M3K0eB.mjs +17 -0
  61. package/dist/SharedFilesRequest-D2M3K0eB.mjs.map +1 -0
  62. package/dist/SharedFilesResponse-BiXT_oCx.mjs +41 -0
  63. package/dist/SharedFilesResponse-BiXT_oCx.mjs.map +1 -0
  64. package/dist/StatsRequest-B8v9LLHG.mjs +17 -0
  65. package/dist/StatsRequest-B8v9LLHG.mjs.map +1 -0
  66. package/dist/StatsResponse-BVUxNPbz.mjs +78 -0
  67. package/dist/StatsResponse-BVUxNPbz.mjs.map +1 -0
  68. package/dist/Tag-CZF6BRMY.mjs +262 -0
  69. package/dist/Tag-CZF6BRMY.mjs.map +1 -0
  70. package/dist/UpdateCategoryRequest-CgzH7SxP.mjs +24 -0
  71. package/dist/UpdateCategoryRequest-CgzH7SxP.mjs.map +1 -0
  72. package/dist/UpdateRequest-Bunl73Ga.mjs +17 -0
  73. package/dist/UpdateRequest-Bunl73Ga.mjs.map +1 -0
  74. package/dist/UpdateResponse-1LhyH9Zf.mjs +47 -0
  75. package/dist/UpdateResponse-1LhyH9Zf.mjs.map +1 -0
  76. package/dist/download-details-OM0FJUhZ.mjs +12 -0
  77. package/dist/download-details-OM0FJUhZ.mjs.map +1 -0
  78. package/dist/index.d.mts +1130 -0
  79. package/dist/index.mjs +1077 -0
  80. package/dist/index.mjs.map +1 -0
  81. package/dist/utils-DBnUQnZ-.mjs +26 -0
  82. package/dist/utils-DBnUQnZ-.mjs.map +1 -0
  83. package/package.json +5 -5
  84. package/dist/index.d.ts +0 -1016
  85. package/dist/index.js +0 -3130
  86. package/dist/index.js.map +0 -1
package/dist/index.js DELETED
@@ -1,3130 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropNames = Object.getOwnPropertyNames;
3
- var __esm = (fn, res) => function __init() {
4
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
5
- };
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
-
11
- // src/ec/packet/Flags.ts
12
- var Flags;
13
- var init_Flags = __esm({
14
- "src/ec/packet/Flags.ts"() {
15
- "use strict";
16
- Flags = class _Flags {
17
- static FLAG_ACCEPTS = 16;
18
- static FLAG_ZLIB = 1;
19
- static FLAG_UTF8_NUMBERS = 2;
20
- static FLAG_ALWAYS_SET = 32;
21
- // Bit 5 always set to distinguish from older clients
22
- flags;
23
- constructor(flags) {
24
- this.flags = flags ?? 0;
25
- }
26
- /**
27
- * Create flags from buffer
28
- */
29
- static fromBuffer(buffer, offset = 0) {
30
- const flags = buffer.readUInt32BE(offset);
31
- return new _Flags(flags);
32
- }
33
- /**
34
- * Write flags to buffer
35
- */
36
- writeToBuffer(buffer, offset = 0) {
37
- buffer.writeUInt32BE(this.flags, offset);
38
- }
39
- /**
40
- * Check if UTF-8 number encoding is supported/accepted
41
- */
42
- isUtf8NumbersAccepted() {
43
- return (this.flags & _Flags.FLAG_ACCEPTS) > 0 && (this.flags & _Flags.FLAG_UTF8_NUMBERS) > 0;
44
- }
45
- /**
46
- * Check if ZLIB compression is supported/accepted
47
- */
48
- isZlibAccepted() {
49
- return (this.flags & _Flags.FLAG_ACCEPTS) > 0 && (this.flags & _Flags.FLAG_ZLIB) > 0;
50
- }
51
- /**
52
- * Check if UTF-8 number encoding is used
53
- */
54
- isUtf8Numbers() {
55
- return (this.flags & _Flags.FLAG_UTF8_NUMBERS) > 0;
56
- }
57
- /**
58
- * Check if ZLIB compression is used
59
- */
60
- isZlib() {
61
- return (this.flags & _Flags.FLAG_ZLIB) > 0;
62
- }
63
- /**
64
- * Create flags accepting UTF-8 numbers and ZLIB
65
- */
66
- static accept() {
67
- return new _Flags(_Flags.FLAG_ACCEPTS | _Flags.FLAG_UTF8_NUMBERS | _Flags.FLAG_ZLIB | _Flags.FLAG_ALWAYS_SET);
68
- }
69
- /**
70
- * Create flags using UTF-8 numbers
71
- */
72
- static useUtf8Numbers() {
73
- return new _Flags(_Flags.FLAG_UTF8_NUMBERS | _Flags.FLAG_ALWAYS_SET);
74
- }
75
- /**
76
- * Create flags without UTF-8 numbers (required for search)
77
- */
78
- static noUtf8() {
79
- return new _Flags(_Flags.FLAG_ALWAYS_SET);
80
- }
81
- /**
82
- * Create flags using ZLIB compression
83
- */
84
- static useZlib() {
85
- return new _Flags(_Flags.FLAG_ZLIB | _Flags.FLAG_ALWAYS_SET);
86
- }
87
- /**
88
- * Get numeric value of flags
89
- */
90
- getValue() {
91
- return this.flags;
92
- }
93
- };
94
- }
95
- });
96
-
97
- // src/ec/packet/Packet.ts
98
- var Packet;
99
- var init_Packet = __esm({
100
- "src/ec/packet/Packet.ts"() {
101
- "use strict";
102
- init_Flags();
103
- Packet = class _Packet {
104
- constructor(opCode, flags = new Flags(), tags = []) {
105
- this.opCode = opCode;
106
- this.flags = flags;
107
- this.tags = tags;
108
- }
109
- static EC_CURRENT_PROTOCOL_VERSION = 516;
110
- /**
111
- * Add a tag to the packet
112
- */
113
- addTag(tag) {
114
- this.tags.push(tag);
115
- return this;
116
- }
117
- /**
118
- * Add multiple tags to the packet
119
- */
120
- addTags(tags) {
121
- this.tags.push(...tags);
122
- return this;
123
- }
124
- /**
125
- * Get protocol version
126
- */
127
- static getProtocolVersion() {
128
- return _Packet.EC_CURRENT_PROTOCOL_VERSION;
129
- }
130
- /**
131
- * Find a tag by name
132
- */
133
- findTag(tagName) {
134
- return this.tags.find((tag) => tag.name === tagName);
135
- }
136
- /**
137
- * Get all tags with a specific name
138
- */
139
- findAllTags(tagName) {
140
- return this.tags.filter((tag) => tag.name === tagName);
141
- }
142
- /**
143
- * Check if packet has a specific tag
144
- */
145
- hasTag(tagName) {
146
- return this.findTag(tagName) !== void 0;
147
- }
148
- };
149
- }
150
- });
151
-
152
- // src/ec/Codes.ts
153
- var ProtocolVersion, ECOpCode, ECTagName, ECDetailLevel, ECSearchType, EcPrefs;
154
- var init_Codes = __esm({
155
- "src/ec/Codes.ts"() {
156
- "use strict";
157
- ProtocolVersion = /* @__PURE__ */ ((ProtocolVersion2) => {
158
- ProtocolVersion2[ProtocolVersion2["EC_CURRENT_PROTOCOL_VERSION"] = 516] = "EC_CURRENT_PROTOCOL_VERSION";
159
- return ProtocolVersion2;
160
- })(ProtocolVersion || {});
161
- ECOpCode = /* @__PURE__ */ ((ECOpCode2) => {
162
- ECOpCode2[ECOpCode2["EC_OP_NOOP"] = 1] = "EC_OP_NOOP";
163
- ECOpCode2[ECOpCode2["EC_OP_AUTH_REQ"] = 2] = "EC_OP_AUTH_REQ";
164
- ECOpCode2[ECOpCode2["EC_OP_AUTH_FAIL"] = 3] = "EC_OP_AUTH_FAIL";
165
- ECOpCode2[ECOpCode2["EC_OP_AUTH_OK"] = 4] = "EC_OP_AUTH_OK";
166
- ECOpCode2[ECOpCode2["EC_OP_FAILED"] = 5] = "EC_OP_FAILED";
167
- ECOpCode2[ECOpCode2["EC_OP_STRINGS"] = 6] = "EC_OP_STRINGS";
168
- ECOpCode2[ECOpCode2["EC_OP_MISC_DATA"] = 7] = "EC_OP_MISC_DATA";
169
- ECOpCode2[ECOpCode2["EC_OP_SHUTDOWN"] = 8] = "EC_OP_SHUTDOWN";
170
- ECOpCode2[ECOpCode2["EC_OP_ADD_LINK"] = 9] = "EC_OP_ADD_LINK";
171
- ECOpCode2[ECOpCode2["EC_OP_STAT_REQ"] = 10] = "EC_OP_STAT_REQ";
172
- ECOpCode2[ECOpCode2["EC_OP_GET_CONNSTATE"] = 11] = "EC_OP_GET_CONNSTATE";
173
- ECOpCode2[ECOpCode2["EC_OP_STATS"] = 12] = "EC_OP_STATS";
174
- ECOpCode2[ECOpCode2["EC_OP_GET_DLOAD_QUEUE"] = 13] = "EC_OP_GET_DLOAD_QUEUE";
175
- ECOpCode2[ECOpCode2["EC_OP_GET_ULOAD_QUEUE"] = 14] = "EC_OP_GET_ULOAD_QUEUE";
176
- ECOpCode2[ECOpCode2["EC_OP_GET_SHARED_FILES"] = 16] = "EC_OP_GET_SHARED_FILES";
177
- ECOpCode2[ECOpCode2["EC_OP_SHARED_SET_PRIO"] = 17] = "EC_OP_SHARED_SET_PRIO";
178
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_SWAP_A4AF_THIS"] = 22] = "EC_OP_PARTFILE_SWAP_A4AF_THIS";
179
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO"] = 23] = "EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO";
180
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_SWAP_A4AF_OTHERS"] = 24] = "EC_OP_PARTFILE_SWAP_A4AF_OTHERS";
181
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_PAUSE"] = 25] = "EC_OP_PARTFILE_PAUSE";
182
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_RESUME"] = 26] = "EC_OP_PARTFILE_RESUME";
183
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_STOP"] = 27] = "EC_OP_PARTFILE_STOP";
184
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_PRIO_SET"] = 28] = "EC_OP_PARTFILE_PRIO_SET";
185
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_DELETE"] = 29] = "EC_OP_PARTFILE_DELETE";
186
- ECOpCode2[ECOpCode2["EC_OP_PARTFILE_SET_CAT"] = 30] = "EC_OP_PARTFILE_SET_CAT";
187
- ECOpCode2[ECOpCode2["EC_OP_DLOAD_QUEUE"] = 31] = "EC_OP_DLOAD_QUEUE";
188
- ECOpCode2[ECOpCode2["EC_OP_ULOAD_QUEUE"] = 32] = "EC_OP_ULOAD_QUEUE";
189
- ECOpCode2[ECOpCode2["EC_OP_SHARED_FILES"] = 34] = "EC_OP_SHARED_FILES";
190
- ECOpCode2[ECOpCode2["EC_OP_SHAREDFILES_RELOAD"] = 35] = "EC_OP_SHAREDFILES_RELOAD";
191
- ECOpCode2[ECOpCode2["EC_OP_RENAME_FILE"] = 37] = "EC_OP_RENAME_FILE";
192
- ECOpCode2[ECOpCode2["EC_OP_SEARCH_START"] = 38] = "EC_OP_SEARCH_START";
193
- ECOpCode2[ECOpCode2["EC_OP_SEARCH_STOP"] = 39] = "EC_OP_SEARCH_STOP";
194
- ECOpCode2[ECOpCode2["EC_OP_SEARCH_RESULTS"] = 40] = "EC_OP_SEARCH_RESULTS";
195
- ECOpCode2[ECOpCode2["EC_OP_SEARCH_PROGRESS"] = 41] = "EC_OP_SEARCH_PROGRESS";
196
- ECOpCode2[ECOpCode2["EC_OP_DOWNLOAD_SEARCH_RESULT"] = 42] = "EC_OP_DOWNLOAD_SEARCH_RESULT";
197
- ECOpCode2[ECOpCode2["EC_OP_IPFILTER_RELOAD"] = 43] = "EC_OP_IPFILTER_RELOAD";
198
- ECOpCode2[ECOpCode2["EC_OP_GET_SERVER_LIST"] = 44] = "EC_OP_GET_SERVER_LIST";
199
- ECOpCode2[ECOpCode2["EC_OP_SERVER_LIST"] = 45] = "EC_OP_SERVER_LIST";
200
- ECOpCode2[ECOpCode2["EC_OP_SERVER_DISCONNECT"] = 46] = "EC_OP_SERVER_DISCONNECT";
201
- ECOpCode2[ECOpCode2["EC_OP_SERVER_CONNECT"] = 47] = "EC_OP_SERVER_CONNECT";
202
- ECOpCode2[ECOpCode2["EC_OP_SERVER_REMOVE"] = 48] = "EC_OP_SERVER_REMOVE";
203
- ECOpCode2[ECOpCode2["EC_OP_SERVER_ADD"] = 49] = "EC_OP_SERVER_ADD";
204
- ECOpCode2[ECOpCode2["EC_OP_SERVER_UPDATE_FROM_URL"] = 50] = "EC_OP_SERVER_UPDATE_FROM_URL";
205
- ECOpCode2[ECOpCode2["EC_OP_ADDLOGLINE"] = 51] = "EC_OP_ADDLOGLINE";
206
- ECOpCode2[ECOpCode2["EC_OP_ADDDEBUGLOGLINE"] = 52] = "EC_OP_ADDDEBUGLOGLINE";
207
- ECOpCode2[ECOpCode2["EC_OP_GET_LOG"] = 53] = "EC_OP_GET_LOG";
208
- ECOpCode2[ECOpCode2["EC_OP_GET_DEBUGLOG"] = 54] = "EC_OP_GET_DEBUGLOG";
209
- ECOpCode2[ECOpCode2["EC_OP_GET_SERVERINFO"] = 55] = "EC_OP_GET_SERVERINFO";
210
- ECOpCode2[ECOpCode2["EC_OP_LOG"] = 56] = "EC_OP_LOG";
211
- ECOpCode2[ECOpCode2["EC_OP_DEBUGLOG"] = 57] = "EC_OP_DEBUGLOG";
212
- ECOpCode2[ECOpCode2["EC_OP_SERVERINFO"] = 58] = "EC_OP_SERVERINFO";
213
- ECOpCode2[ECOpCode2["EC_OP_RESET_LOG"] = 59] = "EC_OP_RESET_LOG";
214
- ECOpCode2[ECOpCode2["EC_OP_RESET_DEBUGLOG"] = 60] = "EC_OP_RESET_DEBUGLOG";
215
- ECOpCode2[ECOpCode2["EC_OP_CLEAR_SERVERINFO"] = 61] = "EC_OP_CLEAR_SERVERINFO";
216
- ECOpCode2[ECOpCode2["EC_OP_GET_LAST_LOG_ENTRY"] = 62] = "EC_OP_GET_LAST_LOG_ENTRY";
217
- ECOpCode2[ECOpCode2["EC_OP_GET_PREFERENCES"] = 63] = "EC_OP_GET_PREFERENCES";
218
- ECOpCode2[ECOpCode2["EC_OP_SET_PREFERENCES"] = 64] = "EC_OP_SET_PREFERENCES";
219
- ECOpCode2[ECOpCode2["EC_OP_CREATE_CATEGORY"] = 65] = "EC_OP_CREATE_CATEGORY";
220
- ECOpCode2[ECOpCode2["EC_OP_UPDATE_CATEGORY"] = 66] = "EC_OP_UPDATE_CATEGORY";
221
- ECOpCode2[ECOpCode2["EC_OP_DELETE_CATEGORY"] = 67] = "EC_OP_DELETE_CATEGORY";
222
- ECOpCode2[ECOpCode2["EC_OP_GET_STATSGRAPHS"] = 68] = "EC_OP_GET_STATSGRAPHS";
223
- ECOpCode2[ECOpCode2["EC_OP_STATSGRAPHS"] = 69] = "EC_OP_STATSGRAPHS";
224
- ECOpCode2[ECOpCode2["EC_OP_GET_STATSTREE"] = 70] = "EC_OP_GET_STATSTREE";
225
- ECOpCode2[ECOpCode2["EC_OP_STATSTREE"] = 71] = "EC_OP_STATSTREE";
226
- ECOpCode2[ECOpCode2["EC_OP_KAD_START"] = 72] = "EC_OP_KAD_START";
227
- ECOpCode2[ECOpCode2["EC_OP_KAD_STOP"] = 73] = "EC_OP_KAD_STOP";
228
- ECOpCode2[ECOpCode2["EC_OP_CONNECT"] = 74] = "EC_OP_CONNECT";
229
- ECOpCode2[ECOpCode2["EC_OP_DISCONNECT"] = 75] = "EC_OP_DISCONNECT";
230
- ECOpCode2[ECOpCode2["EC_OP_KAD_UPDATE_FROM_URL"] = 77] = "EC_OP_KAD_UPDATE_FROM_URL";
231
- ECOpCode2[ECOpCode2["EC_OP_KAD_BOOTSTRAP_FROM_IP"] = 78] = "EC_OP_KAD_BOOTSTRAP_FROM_IP";
232
- ECOpCode2[ECOpCode2["EC_OP_AUTH_SALT"] = 79] = "EC_OP_AUTH_SALT";
233
- ECOpCode2[ECOpCode2["EC_OP_AUTH_PASSWD"] = 80] = "EC_OP_AUTH_PASSWD";
234
- ECOpCode2[ECOpCode2["EC_OP_IPFILTER_UPDATE"] = 81] = "EC_OP_IPFILTER_UPDATE";
235
- ECOpCode2[ECOpCode2["EC_OP_GET_UPDATE"] = 82] = "EC_OP_GET_UPDATE";
236
- ECOpCode2[ECOpCode2["EC_OP_CLEAR_COMPLETED"] = 83] = "EC_OP_CLEAR_COMPLETED";
237
- ECOpCode2[ECOpCode2["EC_OP_CLIENT_SWAP_TO_ANOTHER_FILE"] = 84] = "EC_OP_CLIENT_SWAP_TO_ANOTHER_FILE";
238
- ECOpCode2[ECOpCode2["EC_OP_SHARED_FILE_SET_COMMENT"] = 85] = "EC_OP_SHARED_FILE_SET_COMMENT";
239
- ECOpCode2[ECOpCode2["EC_OP_SERVER_SET_STATIC_PRIO"] = 86] = "EC_OP_SERVER_SET_STATIC_PRIO";
240
- ECOpCode2[ECOpCode2["EC_OP_FRIEND"] = 87] = "EC_OP_FRIEND";
241
- return ECOpCode2;
242
- })(ECOpCode || {});
243
- ECTagName = /* @__PURE__ */ ((ECTagName4) => {
244
- ECTagName4[ECTagName4["EC_TAG_STRING"] = 0] = "EC_TAG_STRING";
245
- ECTagName4[ECTagName4["EC_TAG_PASSWD_HASH"] = 1] = "EC_TAG_PASSWD_HASH";
246
- ECTagName4[ECTagName4["EC_TAG_PROTOCOL_VERSION"] = 2] = "EC_TAG_PROTOCOL_VERSION";
247
- ECTagName4[ECTagName4["EC_TAG_VERSION_ID"] = 3] = "EC_TAG_VERSION_ID";
248
- ECTagName4[ECTagName4["EC_TAG_DETAIL_LEVEL"] = 4] = "EC_TAG_DETAIL_LEVEL";
249
- ECTagName4[ECTagName4["EC_TAG_CONNSTATE"] = 5] = "EC_TAG_CONNSTATE";
250
- ECTagName4[ECTagName4["EC_TAG_ED2K_ID"] = 6] = "EC_TAG_ED2K_ID";
251
- ECTagName4[ECTagName4["EC_TAG_LOG_TO_STATUS"] = 7] = "EC_TAG_LOG_TO_STATUS";
252
- ECTagName4[ECTagName4["EC_TAG_BOOTSTRAP_IP"] = 8] = "EC_TAG_BOOTSTRAP_IP";
253
- ECTagName4[ECTagName4["EC_TAG_BOOTSTRAP_PORT"] = 9] = "EC_TAG_BOOTSTRAP_PORT";
254
- ECTagName4[ECTagName4["EC_TAG_CLIENT_ID"] = 10] = "EC_TAG_CLIENT_ID";
255
- ECTagName4[ECTagName4["EC_TAG_PASSWD_SALT"] = 11] = "EC_TAG_PASSWD_SALT";
256
- ECTagName4[ECTagName4["EC_TAG_CAN_ZLIB"] = 12] = "EC_TAG_CAN_ZLIB";
257
- ECTagName4[ECTagName4["EC_TAG_CAN_UTF8_NUMBERS"] = 13] = "EC_TAG_CAN_UTF8_NUMBERS";
258
- ECTagName4[ECTagName4["EC_TAG_CAN_NOTIFY"] = 14] = "EC_TAG_CAN_NOTIFY";
259
- ECTagName4[ECTagName4["EC_TAG_ECID"] = 15] = "EC_TAG_ECID";
260
- ECTagName4[ECTagName4["EC_TAG_KAD_ID"] = 16] = "EC_TAG_KAD_ID";
261
- ECTagName4[ECTagName4["EC_TAG_CLIENT_NAME"] = 256] = "EC_TAG_CLIENT_NAME";
262
- ECTagName4[ECTagName4["EC_TAG_CLIENT_VERSION"] = 257] = "EC_TAG_CLIENT_VERSION";
263
- ECTagName4[ECTagName4["EC_TAG_CLIENT_MOD"] = 258] = "EC_TAG_CLIENT_MOD";
264
- ECTagName4[ECTagName4["EC_TAG_STATS_UL_SPEED"] = 512] = "EC_TAG_STATS_UL_SPEED";
265
- ECTagName4[ECTagName4["EC_TAG_STATS_DL_SPEED"] = 513] = "EC_TAG_STATS_DL_SPEED";
266
- ECTagName4[ECTagName4["EC_TAG_STATS_UL_SPEED_LIMIT"] = 514] = "EC_TAG_STATS_UL_SPEED_LIMIT";
267
- ECTagName4[ECTagName4["EC_TAG_STATS_DL_SPEED_LIMIT"] = 515] = "EC_TAG_STATS_DL_SPEED_LIMIT";
268
- ECTagName4[ECTagName4["EC_TAG_STATS_UP_OVERHEAD"] = 516] = "EC_TAG_STATS_UP_OVERHEAD";
269
- ECTagName4[ECTagName4["EC_TAG_STATS_DOWN_OVERHEAD"] = 517] = "EC_TAG_STATS_DOWN_OVERHEAD";
270
- ECTagName4[ECTagName4["EC_TAG_STATS_TOTAL_SRC_COUNT"] = 518] = "EC_TAG_STATS_TOTAL_SRC_COUNT";
271
- ECTagName4[ECTagName4["EC_TAG_STATS_BANNED_COUNT"] = 519] = "EC_TAG_STATS_BANNED_COUNT";
272
- ECTagName4[ECTagName4["EC_TAG_STATS_UL_QUEUE_LEN"] = 520] = "EC_TAG_STATS_UL_QUEUE_LEN";
273
- ECTagName4[ECTagName4["EC_TAG_STATS_ED2K_USERS"] = 521] = "EC_TAG_STATS_ED2K_USERS";
274
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_USERS"] = 522] = "EC_TAG_STATS_KAD_USERS";
275
- ECTagName4[ECTagName4["EC_TAG_STATS_ED2K_FILES"] = 523] = "EC_TAG_STATS_ED2K_FILES";
276
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_FILES"] = 524] = "EC_TAG_STATS_KAD_FILES";
277
- ECTagName4[ECTagName4["EC_TAG_STATS_LOGGER_MESSAGE"] = 525] = "EC_TAG_STATS_LOGGER_MESSAGE";
278
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_FIREWALLED_UDP"] = 526] = "EC_TAG_STATS_KAD_FIREWALLED_UDP";
279
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_INDEXED_SOURCES"] = 527] = "EC_TAG_STATS_KAD_INDEXED_SOURCES";
280
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_INDEXED_KEYWORDS"] = 528] = "EC_TAG_STATS_KAD_INDEXED_KEYWORDS";
281
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_INDEXED_NOTES"] = 529] = "EC_TAG_STATS_KAD_INDEXED_NOTES";
282
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_INDEXED_LOAD"] = 530] = "EC_TAG_STATS_KAD_INDEXED_LOAD";
283
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_IP_ADRESS"] = 531] = "EC_TAG_STATS_KAD_IP_ADRESS";
284
- ECTagName4[ECTagName4["EC_TAG_STATS_BUDDY_STATUS"] = 532] = "EC_TAG_STATS_BUDDY_STATUS";
285
- ECTagName4[ECTagName4["EC_TAG_STATS_BUDDY_IP"] = 533] = "EC_TAG_STATS_BUDDY_IP";
286
- ECTagName4[ECTagName4["EC_TAG_STATS_BUDDY_PORT"] = 534] = "EC_TAG_STATS_BUDDY_PORT";
287
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_IN_LAN_MODE"] = 535] = "EC_TAG_STATS_KAD_IN_LAN_MODE";
288
- ECTagName4[ECTagName4["EC_TAG_STATS_TOTAL_SENT_BYTES"] = 536] = "EC_TAG_STATS_TOTAL_SENT_BYTES";
289
- ECTagName4[ECTagName4["EC_TAG_STATS_TOTAL_RECEIVED_BYTES"] = 537] = "EC_TAG_STATS_TOTAL_RECEIVED_BYTES";
290
- ECTagName4[ECTagName4["EC_TAG_STATS_SHARED_FILE_COUNT"] = 538] = "EC_TAG_STATS_SHARED_FILE_COUNT";
291
- ECTagName4[ECTagName4["EC_TAG_STATS_KAD_NODES"] = 539] = "EC_TAG_STATS_KAD_NODES";
292
- ECTagName4[ECTagName4["EC_TAG_PARTFILE"] = 768] = "EC_TAG_PARTFILE";
293
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_NAME"] = 769] = "EC_TAG_PARTFILE_NAME";
294
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_PARTMETID"] = 770] = "EC_TAG_PARTFILE_PARTMETID";
295
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SIZE_FULL"] = 771] = "EC_TAG_PARTFILE_SIZE_FULL";
296
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SIZE_XFER"] = 772] = "EC_TAG_PARTFILE_SIZE_XFER";
297
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SIZE_XFER_UP"] = 773] = "EC_TAG_PARTFILE_SIZE_XFER_UP";
298
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SIZE_DONE"] = 774] = "EC_TAG_PARTFILE_SIZE_DONE";
299
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SPEED"] = 775] = "EC_TAG_PARTFILE_SPEED";
300
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_STATUS"] = 776] = "EC_TAG_PARTFILE_STATUS";
301
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_PRIO"] = 777] = "EC_TAG_PARTFILE_PRIO";
302
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SOURCE_COUNT"] = 778] = "EC_TAG_PARTFILE_SOURCE_COUNT";
303
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SOURCE_COUNT_A4AF"] = 779] = "EC_TAG_PARTFILE_SOURCE_COUNT_A4AF";
304
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT"] = 780] = "EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT";
305
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SOURCE_COUNT_XFER"] = 781] = "EC_TAG_PARTFILE_SOURCE_COUNT_XFER";
306
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_ED2K_LINK"] = 782] = "EC_TAG_PARTFILE_ED2K_LINK";
307
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_CAT"] = 783] = "EC_TAG_PARTFILE_CAT";
308
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_LAST_RECV"] = 784] = "EC_TAG_PARTFILE_LAST_RECV";
309
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_LAST_SEEN_COMP"] = 785] = "EC_TAG_PARTFILE_LAST_SEEN_COMP";
310
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_PART_STATUS"] = 786] = "EC_TAG_PARTFILE_PART_STATUS";
311
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_GAP_STATUS"] = 787] = "EC_TAG_PARTFILE_GAP_STATUS";
312
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_REQ_STATUS"] = 788] = "EC_TAG_PARTFILE_REQ_STATUS";
313
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SOURCE_NAMES"] = 789] = "EC_TAG_PARTFILE_SOURCE_NAMES";
314
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_COMMENTS"] = 790] = "EC_TAG_PARTFILE_COMMENTS";
315
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_STOPPED"] = 791] = "EC_TAG_PARTFILE_STOPPED";
316
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_DOWNLOAD_ACTIVE"] = 792] = "EC_TAG_PARTFILE_DOWNLOAD_ACTIVE";
317
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_LOST_CORRUPTION"] = 793] = "EC_TAG_PARTFILE_LOST_CORRUPTION";
318
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_GAINED_COMPRESSION"] = 794] = "EC_TAG_PARTFILE_GAINED_COMPRESSION";
319
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SAVED_ICH"] = 795] = "EC_TAG_PARTFILE_SAVED_ICH";
320
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS"] = 796] = "EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS";
321
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_AVAILABLE_PARTS"] = 797] = "EC_TAG_PARTFILE_AVAILABLE_PARTS";
322
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_HASH"] = 798] = "EC_TAG_PARTFILE_HASH";
323
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_SHARED"] = 799] = "EC_TAG_PARTFILE_SHARED";
324
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_HASHED_PART_COUNT"] = 800] = "EC_TAG_PARTFILE_HASHED_PART_COUNT";
325
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_A4AFAUTO"] = 801] = "EC_TAG_PARTFILE_A4AFAUTO";
326
- ECTagName4[ECTagName4["EC_TAG_PARTFILE_A4AF_SOURCES"] = 802] = "EC_TAG_PARTFILE_A4AF_SOURCES";
327
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE"] = 1024] = "EC_TAG_KNOWNFILE";
328
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_XFERRED"] = 1025] = "EC_TAG_KNOWNFILE_XFERRED";
329
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_XFERRED_ALL"] = 1026] = "EC_TAG_KNOWNFILE_XFERRED_ALL";
330
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_REQ_COUNT"] = 1027] = "EC_TAG_KNOWNFILE_REQ_COUNT";
331
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_REQ_COUNT_ALL"] = 1028] = "EC_TAG_KNOWNFILE_REQ_COUNT_ALL";
332
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_ACCEPT_COUNT"] = 1029] = "EC_TAG_KNOWNFILE_ACCEPT_COUNT";
333
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL"] = 1030] = "EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL";
334
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_AICH_MASTERHASH"] = 1031] = "EC_TAG_KNOWNFILE_AICH_MASTERHASH";
335
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_FILENAME"] = 1032] = "EC_TAG_KNOWNFILE_FILENAME";
336
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW"] = 1033] = "EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW";
337
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH"] = 1034] = "EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH";
338
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_PRIO"] = 1035] = "EC_TAG_KNOWNFILE_PRIO";
339
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_ON_QUEUE"] = 1036] = "EC_TAG_KNOWNFILE_ON_QUEUE";
340
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_COMPLETE_SOURCES"] = 1037] = "EC_TAG_KNOWNFILE_COMPLETE_SOURCES";
341
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_COMMENT"] = 1038] = "EC_TAG_KNOWNFILE_COMMENT";
342
- ECTagName4[ECTagName4["EC_TAG_KNOWNFILE_RATING"] = 1039] = "EC_TAG_KNOWNFILE_RATING";
343
- ECTagName4[ECTagName4["EC_TAG_SERVER"] = 1280] = "EC_TAG_SERVER";
344
- ECTagName4[ECTagName4["EC_TAG_SERVER_NAME"] = 1281] = "EC_TAG_SERVER_NAME";
345
- ECTagName4[ECTagName4["EC_TAG_SERVER_DESC"] = 1282] = "EC_TAG_SERVER_DESC";
346
- ECTagName4[ECTagName4["EC_TAG_SERVER_ADDRESS"] = 1283] = "EC_TAG_SERVER_ADDRESS";
347
- ECTagName4[ECTagName4["EC_TAG_SERVER_PING"] = 1284] = "EC_TAG_SERVER_PING";
348
- ECTagName4[ECTagName4["EC_TAG_SERVER_USERS"] = 1285] = "EC_TAG_SERVER_USERS";
349
- ECTagName4[ECTagName4["EC_TAG_SERVER_USERS_MAX"] = 1286] = "EC_TAG_SERVER_USERS_MAX";
350
- ECTagName4[ECTagName4["EC_TAG_SERVER_FILES"] = 1287] = "EC_TAG_SERVER_FILES";
351
- ECTagName4[ECTagName4["EC_TAG_SERVER_PRIO"] = 1288] = "EC_TAG_SERVER_PRIO";
352
- ECTagName4[ECTagName4["EC_TAG_SERVER_FAILED"] = 1289] = "EC_TAG_SERVER_FAILED";
353
- ECTagName4[ECTagName4["EC_TAG_SERVER_STATIC"] = 1290] = "EC_TAG_SERVER_STATIC";
354
- ECTagName4[ECTagName4["EC_TAG_SERVER_VERSION"] = 1291] = "EC_TAG_SERVER_VERSION";
355
- ECTagName4[ECTagName4["EC_TAG_SERVER_IP"] = 1292] = "EC_TAG_SERVER_IP";
356
- ECTagName4[ECTagName4["EC_TAG_SERVER_PORT"] = 1293] = "EC_TAG_SERVER_PORT";
357
- ECTagName4[ECTagName4["EC_TAG_CLIENT"] = 1536] = "EC_TAG_CLIENT";
358
- ECTagName4[ECTagName4["EC_TAG_CLIENT_SOFTWARE"] = 1537] = "EC_TAG_CLIENT_SOFTWARE";
359
- ECTagName4[ECTagName4["EC_TAG_CLIENT_SCORE"] = 1538] = "EC_TAG_CLIENT_SCORE";
360
- ECTagName4[ECTagName4["EC_TAG_CLIENT_HASH"] = 1539] = "EC_TAG_CLIENT_HASH";
361
- ECTagName4[ECTagName4["EC_TAG_CLIENT_FRIEND_SLOT"] = 1540] = "EC_TAG_CLIENT_FRIEND_SLOT";
362
- ECTagName4[ECTagName4["EC_TAG_CLIENT_WAIT_TIME"] = 1541] = "EC_TAG_CLIENT_WAIT_TIME";
363
- ECTagName4[ECTagName4["EC_TAG_CLIENT_XFER_TIME"] = 1542] = "EC_TAG_CLIENT_XFER_TIME";
364
- ECTagName4[ECTagName4["EC_TAG_CLIENT_QUEUE_TIME"] = 1543] = "EC_TAG_CLIENT_QUEUE_TIME";
365
- ECTagName4[ECTagName4["EC_TAG_CLIENT_LAST_TIME"] = 1544] = "EC_TAG_CLIENT_LAST_TIME";
366
- ECTagName4[ECTagName4["EC_TAG_CLIENT_UPLOAD_SESSION"] = 1545] = "EC_TAG_CLIENT_UPLOAD_SESSION";
367
- ECTagName4[ECTagName4["EC_TAG_CLIENT_UPLOAD_TOTAL"] = 1546] = "EC_TAG_CLIENT_UPLOAD_TOTAL";
368
- ECTagName4[ECTagName4["EC_TAG_CLIENT_DOWNLOAD_TOTAL"] = 1547] = "EC_TAG_CLIENT_DOWNLOAD_TOTAL";
369
- ECTagName4[ECTagName4["EC_TAG_CLIENT_DOWNLOAD_STATE"] = 1548] = "EC_TAG_CLIENT_DOWNLOAD_STATE";
370
- ECTagName4[ECTagName4["EC_TAG_CLIENT_UP_SPEED"] = 1549] = "EC_TAG_CLIENT_UP_SPEED";
371
- ECTagName4[ECTagName4["EC_TAG_CLIENT_DOWN_SPEED"] = 1550] = "EC_TAG_CLIENT_DOWN_SPEED";
372
- ECTagName4[ECTagName4["EC_TAG_CLIENT_FROM"] = 1551] = "EC_TAG_CLIENT_FROM";
373
- ECTagName4[ECTagName4["EC_TAG_CLIENT_USER_IP"] = 1552] = "EC_TAG_CLIENT_USER_IP";
374
- ECTagName4[ECTagName4["EC_TAG_CLIENT_USER_PORT"] = 1553] = "EC_TAG_CLIENT_USER_PORT";
375
- ECTagName4[ECTagName4["EC_TAG_CLIENT_SERVER_IP"] = 1554] = "EC_TAG_CLIENT_SERVER_IP";
376
- ECTagName4[ECTagName4["EC_TAG_CLIENT_SERVER_PORT"] = 1555] = "EC_TAG_CLIENT_SERVER_PORT";
377
- ECTagName4[ECTagName4["EC_TAG_CLIENT_SERVER_NAME"] = 1556] = "EC_TAG_CLIENT_SERVER_NAME";
378
- ECTagName4[ECTagName4["EC_TAG_CLIENT_SOFT_VER_STR"] = 1557] = "EC_TAG_CLIENT_SOFT_VER_STR";
379
- ECTagName4[ECTagName4["EC_TAG_CLIENT_WAITING_POSITION"] = 1558] = "EC_TAG_CLIENT_WAITING_POSITION";
380
- ECTagName4[ECTagName4["EC_TAG_CLIENT_IDENT_STATE"] = 1559] = "EC_TAG_CLIENT_IDENT_STATE";
381
- ECTagName4[ECTagName4["EC_TAG_CLIENT_OBFUSCATION_STATUS"] = 1560] = "EC_TAG_CLIENT_OBFUSCATION_STATUS";
382
- ECTagName4[ECTagName4["EC_TAG_CLIENT_CURRENTLYUNUSED1"] = 1561] = "EC_TAG_CLIENT_CURRENTLYUNUSED1";
383
- ECTagName4[ECTagName4["EC_TAG_CLIENT_REMOTE_QUEUE_RANK"] = 1562] = "EC_TAG_CLIENT_REMOTE_QUEUE_RANK";
384
- ECTagName4[ECTagName4["EC_TAG_CLIENT_DISABLE_VIEW_SHARED"] = 1563] = "EC_TAG_CLIENT_DISABLE_VIEW_SHARED";
385
- ECTagName4[ECTagName4["EC_TAG_CLIENT_UPLOAD_STATE"] = 1564] = "EC_TAG_CLIENT_UPLOAD_STATE";
386
- ECTagName4[ECTagName4["EC_TAG_CLIENT_EXT_PROTOCOL"] = 1565] = "EC_TAG_CLIENT_EXT_PROTOCOL";
387
- ECTagName4[ECTagName4["EC_TAG_CLIENT_USER_ID"] = 1566] = "EC_TAG_CLIENT_USER_ID";
388
- ECTagName4[ECTagName4["EC_TAG_CLIENT_UPLOAD_FILE"] = 1567] = "EC_TAG_CLIENT_UPLOAD_FILE";
389
- ECTagName4[ECTagName4["EC_TAG_CLIENT_REQUEST_FILE"] = 1568] = "EC_TAG_CLIENT_REQUEST_FILE";
390
- ECTagName4[ECTagName4["EC_TAG_CLIENT_A4AF_FILES"] = 1569] = "EC_TAG_CLIENT_A4AF_FILES";
391
- ECTagName4[ECTagName4["EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK"] = 1570] = "EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK";
392
- ECTagName4[ECTagName4["EC_TAG_CLIENT_KAD_PORT"] = 1571] = "EC_TAG_CLIENT_KAD_PORT";
393
- ECTagName4[ECTagName4["EC_TAG_CLIENT_PART_STATUS"] = 1572] = "EC_TAG_CLIENT_PART_STATUS";
394
- ECTagName4[ECTagName4["EC_TAG_CLIENT_NEXT_REQUESTED_PART"] = 1573] = "EC_TAG_CLIENT_NEXT_REQUESTED_PART";
395
- ECTagName4[ECTagName4["EC_TAG_CLIENT_LAST_DOWNLOADING_PART"] = 1574] = "EC_TAG_CLIENT_LAST_DOWNLOADING_PART";
396
- ECTagName4[ECTagName4["EC_TAG_CLIENT_REMOTE_FILENAME"] = 1575] = "EC_TAG_CLIENT_REMOTE_FILENAME";
397
- ECTagName4[ECTagName4["EC_TAG_CLIENT_MOD_VERSION"] = 1576] = "EC_TAG_CLIENT_MOD_VERSION";
398
- ECTagName4[ECTagName4["EC_TAG_CLIENT_OS_INFO"] = 1577] = "EC_TAG_CLIENT_OS_INFO";
399
- ECTagName4[ECTagName4["EC_TAG_CLIENT_AVAILABLE_PARTS"] = 1578] = "EC_TAG_CLIENT_AVAILABLE_PARTS";
400
- ECTagName4[ECTagName4["EC_TAG_CLIENT_UPLOAD_PART_STATUS"] = 1579] = "EC_TAG_CLIENT_UPLOAD_PART_STATUS";
401
- ECTagName4[ECTagName4["EC_TAG_SEARCHFILE"] = 1792] = "EC_TAG_SEARCHFILE";
402
- ECTagName4[ECTagName4["EC_TAG_SEARCH_TYPE"] = 1793] = "EC_TAG_SEARCH_TYPE";
403
- ECTagName4[ECTagName4["EC_TAG_SEARCH_NAME"] = 1794] = "EC_TAG_SEARCH_NAME";
404
- ECTagName4[ECTagName4["EC_TAG_SEARCH_MIN_SIZE"] = 1795] = "EC_TAG_SEARCH_MIN_SIZE";
405
- ECTagName4[ECTagName4["EC_TAG_SEARCH_MAX_SIZE"] = 1796] = "EC_TAG_SEARCH_MAX_SIZE";
406
- ECTagName4[ECTagName4["EC_TAG_SEARCH_FILE_TYPE"] = 1797] = "EC_TAG_SEARCH_FILE_TYPE";
407
- ECTagName4[ECTagName4["EC_TAG_SEARCH_EXTENSION"] = 1798] = "EC_TAG_SEARCH_EXTENSION";
408
- ECTagName4[ECTagName4["EC_TAG_SEARCH_AVAILABILITY"] = 1799] = "EC_TAG_SEARCH_AVAILABILITY";
409
- ECTagName4[ECTagName4["EC_TAG_SEARCH_STATUS"] = 1800] = "EC_TAG_SEARCH_STATUS";
410
- ECTagName4[ECTagName4["EC_TAG_SEARCH_PARENT"] = 1801] = "EC_TAG_SEARCH_PARENT";
411
- ECTagName4[ECTagName4["EC_TAG_FRIEND"] = 2048] = "EC_TAG_FRIEND";
412
- ECTagName4[ECTagName4["EC_TAG_FRIEND_NAME"] = 2049] = "EC_TAG_FRIEND_NAME";
413
- ECTagName4[ECTagName4["EC_TAG_FRIEND_HASH"] = 2050] = "EC_TAG_FRIEND_HASH";
414
- ECTagName4[ECTagName4["EC_TAG_FRIEND_IP"] = 2051] = "EC_TAG_FRIEND_IP";
415
- ECTagName4[ECTagName4["EC_TAG_FRIEND_PORT"] = 2052] = "EC_TAG_FRIEND_PORT";
416
- ECTagName4[ECTagName4["EC_TAG_FRIEND_CLIENT"] = 2053] = "EC_TAG_FRIEND_CLIENT";
417
- ECTagName4[ECTagName4["EC_TAG_FRIEND_ADD"] = 2054] = "EC_TAG_FRIEND_ADD";
418
- ECTagName4[ECTagName4["EC_TAG_FRIEND_REMOVE"] = 2055] = "EC_TAG_FRIEND_REMOVE";
419
- ECTagName4[ECTagName4["EC_TAG_FRIEND_FRIENDSLOT"] = 2056] = "EC_TAG_FRIEND_FRIENDSLOT";
420
- ECTagName4[ECTagName4["EC_TAG_FRIEND_SHARED"] = 2057] = "EC_TAG_FRIEND_SHARED";
421
- ECTagName4[ECTagName4["EC_TAG_SELECT_PREFS"] = 4096] = "EC_TAG_SELECT_PREFS";
422
- ECTagName4[ECTagName4["EC_TAG_PREFS_CATEGORIES"] = 4352] = "EC_TAG_PREFS_CATEGORIES";
423
- ECTagName4[ECTagName4["EC_TAG_CATEGORY"] = 4353] = "EC_TAG_CATEGORY";
424
- ECTagName4[ECTagName4["EC_TAG_CATEGORY_TITLE"] = 4354] = "EC_TAG_CATEGORY_TITLE";
425
- ECTagName4[ECTagName4["EC_TAG_CATEGORY_PATH"] = 4355] = "EC_TAG_CATEGORY_PATH";
426
- ECTagName4[ECTagName4["EC_TAG_CATEGORY_COMMENT"] = 4356] = "EC_TAG_CATEGORY_COMMENT";
427
- ECTagName4[ECTagName4["EC_TAG_CATEGORY_COLOR"] = 4357] = "EC_TAG_CATEGORY_COLOR";
428
- ECTagName4[ECTagName4["EC_TAG_CATEGORY_PRIO"] = 4358] = "EC_TAG_CATEGORY_PRIO";
429
- ECTagName4[ECTagName4["EC_TAG_PREFS_GENERAL"] = 4608] = "EC_TAG_PREFS_GENERAL";
430
- ECTagName4[ECTagName4["EC_TAG_USER_NICK"] = 4609] = "EC_TAG_USER_NICK";
431
- ECTagName4[ECTagName4["EC_TAG_USER_HASH"] = 4610] = "EC_TAG_USER_HASH";
432
- ECTagName4[ECTagName4["EC_TAG_USER_HOST"] = 4611] = "EC_TAG_USER_HOST";
433
- ECTagName4[ECTagName4["EC_TAG_GENERAL_CHECK_NEW_VERSION"] = 4612] = "EC_TAG_GENERAL_CHECK_NEW_VERSION";
434
- ECTagName4[ECTagName4["EC_TAG_PREFS_CONNECTIONS"] = 4864] = "EC_TAG_PREFS_CONNECTIONS";
435
- ECTagName4[ECTagName4["EC_TAG_CONN_DL_CAP"] = 4865] = "EC_TAG_CONN_DL_CAP";
436
- ECTagName4[ECTagName4["EC_TAG_CONN_UL_CAP"] = 4866] = "EC_TAG_CONN_UL_CAP";
437
- ECTagName4[ECTagName4["EC_TAG_CONN_MAX_DL"] = 4867] = "EC_TAG_CONN_MAX_DL";
438
- ECTagName4[ECTagName4["EC_TAG_CONN_MAX_UL"] = 4868] = "EC_TAG_CONN_MAX_UL";
439
- ECTagName4[ECTagName4["EC_TAG_CONN_SLOT_ALLOCATION"] = 4869] = "EC_TAG_CONN_SLOT_ALLOCATION";
440
- ECTagName4[ECTagName4["EC_TAG_CONN_TCP_PORT"] = 4870] = "EC_TAG_CONN_TCP_PORT";
441
- ECTagName4[ECTagName4["EC_TAG_CONN_UDP_PORT"] = 4871] = "EC_TAG_CONN_UDP_PORT";
442
- ECTagName4[ECTagName4["EC_TAG_CONN_UDP_DISABLE"] = 4872] = "EC_TAG_CONN_UDP_DISABLE";
443
- ECTagName4[ECTagName4["EC_TAG_CONN_MAX_FILE_SOURCES"] = 4873] = "EC_TAG_CONN_MAX_FILE_SOURCES";
444
- ECTagName4[ECTagName4["EC_TAG_CONN_MAX_CONN"] = 4874] = "EC_TAG_CONN_MAX_CONN";
445
- ECTagName4[ECTagName4["EC_TAG_CONN_AUTOCONNECT"] = 4875] = "EC_TAG_CONN_AUTOCONNECT";
446
- ECTagName4[ECTagName4["EC_TAG_CONN_RECONNECT"] = 4876] = "EC_TAG_CONN_RECONNECT";
447
- ECTagName4[ECTagName4["EC_TAG_NETWORK_ED2K"] = 4877] = "EC_TAG_NETWORK_ED2K";
448
- ECTagName4[ECTagName4["EC_TAG_NETWORK_KADEMLIA"] = 4878] = "EC_TAG_NETWORK_KADEMLIA";
449
- ECTagName4[ECTagName4["EC_TAG_PREFS_MESSAGEFILTER"] = 5120] = "EC_TAG_PREFS_MESSAGEFILTER";
450
- ECTagName4[ECTagName4["EC_TAG_MSGFILTER_ENABLED"] = 5121] = "EC_TAG_MSGFILTER_ENABLED";
451
- ECTagName4[ECTagName4["EC_TAG_MSGFILTER_ALL"] = 5122] = "EC_TAG_MSGFILTER_ALL";
452
- ECTagName4[ECTagName4["EC_TAG_MSGFILTER_FRIENDS"] = 5123] = "EC_TAG_MSGFILTER_FRIENDS";
453
- ECTagName4[ECTagName4["EC_TAG_MSGFILTER_SECURE"] = 5124] = "EC_TAG_MSGFILTER_SECURE";
454
- ECTagName4[ECTagName4["EC_TAG_MSGFILTER_BY_KEYWORD"] = 5125] = "EC_TAG_MSGFILTER_BY_KEYWORD";
455
- ECTagName4[ECTagName4["EC_TAG_MSGFILTER_KEYWORDS"] = 5126] = "EC_TAG_MSGFILTER_KEYWORDS";
456
- ECTagName4[ECTagName4["EC_TAG_PREFS_REMOTECTRL"] = 5376] = "EC_TAG_PREFS_REMOTECTRL";
457
- ECTagName4[ECTagName4["EC_TAG_WEBSERVER_AUTORUN"] = 5377] = "EC_TAG_WEBSERVER_AUTORUN";
458
- ECTagName4[ECTagName4["EC_TAG_WEBSERVER_PORT"] = 5378] = "EC_TAG_WEBSERVER_PORT";
459
- ECTagName4[ECTagName4["EC_TAG_WEBSERVER_GUEST"] = 5379] = "EC_TAG_WEBSERVER_GUEST";
460
- ECTagName4[ECTagName4["EC_TAG_WEBSERVER_USEGZIP"] = 5380] = "EC_TAG_WEBSERVER_USEGZIP";
461
- ECTagName4[ECTagName4["EC_TAG_WEBSERVER_REFRESH"] = 5381] = "EC_TAG_WEBSERVER_REFRESH";
462
- ECTagName4[ECTagName4["EC_TAG_WEBSERVER_TEMPLATE"] = 5382] = "EC_TAG_WEBSERVER_TEMPLATE";
463
- ECTagName4[ECTagName4["EC_TAG_PREFS_ONLINESIG"] = 5632] = "EC_TAG_PREFS_ONLINESIG";
464
- ECTagName4[ECTagName4["EC_TAG_ONLINESIG_ENABLED"] = 5633] = "EC_TAG_ONLINESIG_ENABLED";
465
- ECTagName4[ECTagName4["EC_TAG_PREFS_SERVERS"] = 5888] = "EC_TAG_PREFS_SERVERS";
466
- ECTagName4[ECTagName4["EC_TAG_SERVERS_REMOVE_DEAD"] = 5889] = "EC_TAG_SERVERS_REMOVE_DEAD";
467
- ECTagName4[ECTagName4["EC_TAG_SERVERS_DEAD_SERVER_RETRIES"] = 5890] = "EC_TAG_SERVERS_DEAD_SERVER_RETRIES";
468
- ECTagName4[ECTagName4["EC_TAG_SERVERS_AUTO_UPDATE"] = 5891] = "EC_TAG_SERVERS_AUTO_UPDATE";
469
- ECTagName4[ECTagName4["EC_TAG_SERVERS_URL_LIST"] = 5892] = "EC_TAG_SERVERS_URL_LIST";
470
- ECTagName4[ECTagName4["EC_TAG_SERVERS_ADD_FROM_SERVER"] = 5893] = "EC_TAG_SERVERS_ADD_FROM_SERVER";
471
- ECTagName4[ECTagName4["EC_TAG_SERVERS_ADD_FROM_CLIENT"] = 5894] = "EC_TAG_SERVERS_ADD_FROM_CLIENT";
472
- ECTagName4[ECTagName4["EC_TAG_SERVERS_USE_SCORE_SYSTEM"] = 5895] = "EC_TAG_SERVERS_USE_SCORE_SYSTEM";
473
- ECTagName4[ECTagName4["EC_TAG_SERVERS_SMART_ID_CHECK"] = 5896] = "EC_TAG_SERVERS_SMART_ID_CHECK";
474
- ECTagName4[ECTagName4["EC_TAG_SERVERS_SAFE_SERVER_CONNECT"] = 5897] = "EC_TAG_SERVERS_SAFE_SERVER_CONNECT";
475
- ECTagName4[ECTagName4["EC_TAG_SERVERS_AUTOCONN_STATIC_ONLY"] = 5898] = "EC_TAG_SERVERS_AUTOCONN_STATIC_ONLY";
476
- ECTagName4[ECTagName4["EC_TAG_SERVERS_MANUAL_HIGH_PRIO"] = 5899] = "EC_TAG_SERVERS_MANUAL_HIGH_PRIO";
477
- ECTagName4[ECTagName4["EC_TAG_SERVERS_UPDATE_URL"] = 5900] = "EC_TAG_SERVERS_UPDATE_URL";
478
- ECTagName4[ECTagName4["EC_TAG_PREFS_FILES"] = 6144] = "EC_TAG_PREFS_FILES";
479
- ECTagName4[ECTagName4["EC_TAG_FILES_ICH_ENABLED"] = 6145] = "EC_TAG_FILES_ICH_ENABLED";
480
- ECTagName4[ECTagName4["EC_TAG_FILES_AICH_TRUST"] = 6146] = "EC_TAG_FILES_AICH_TRUST";
481
- ECTagName4[ECTagName4["EC_TAG_FILES_NEW_PAUSED"] = 6147] = "EC_TAG_FILES_NEW_PAUSED";
482
- ECTagName4[ECTagName4["EC_TAG_FILES_NEW_AUTO_DL_PRIO"] = 6148] = "EC_TAG_FILES_NEW_AUTO_DL_PRIO";
483
- ECTagName4[ECTagName4["EC_TAG_FILES_PREVIEW_PRIO"] = 6149] = "EC_TAG_FILES_PREVIEW_PRIO";
484
- ECTagName4[ECTagName4["EC_TAG_FILES_NEW_AUTO_UL_PRIO"] = 6150] = "EC_TAG_FILES_NEW_AUTO_UL_PRIO";
485
- ECTagName4[ECTagName4["EC_TAG_FILES_UL_FULL_CHUNKS"] = 6151] = "EC_TAG_FILES_UL_FULL_CHUNKS";
486
- ECTagName4[ECTagName4["EC_TAG_FILES_START_NEXT_PAUSED"] = 6152] = "EC_TAG_FILES_START_NEXT_PAUSED";
487
- ECTagName4[ECTagName4["EC_TAG_FILES_RESUME_SAME_CAT"] = 6153] = "EC_TAG_FILES_RESUME_SAME_CAT";
488
- ECTagName4[ECTagName4["EC_TAG_FILES_SAVE_SOURCES"] = 6154] = "EC_TAG_FILES_SAVE_SOURCES";
489
- ECTagName4[ECTagName4["EC_TAG_FILES_EXTRACT_METADATA"] = 6155] = "EC_TAG_FILES_EXTRACT_METADATA";
490
- ECTagName4[ECTagName4["EC_TAG_FILES_ALLOC_FULL_SIZE"] = 6156] = "EC_TAG_FILES_ALLOC_FULL_SIZE";
491
- ECTagName4[ECTagName4["EC_TAG_FILES_CHECK_FREE_SPACE"] = 6157] = "EC_TAG_FILES_CHECK_FREE_SPACE";
492
- ECTagName4[ECTagName4["EC_TAG_FILES_MIN_FREE_SPACE"] = 6158] = "EC_TAG_FILES_MIN_FREE_SPACE";
493
- ECTagName4[ECTagName4["EC_TAG_FILES_CREATE_NORMAL"] = 6159] = "EC_TAG_FILES_CREATE_NORMAL";
494
- ECTagName4[ECTagName4["EC_TAG_PREFS_DIRECTORIES"] = 6656] = "EC_TAG_PREFS_DIRECTORIES";
495
- ECTagName4[ECTagName4["EC_TAG_DIRECTORIES_INCOMING"] = 6657] = "EC_TAG_DIRECTORIES_INCOMING";
496
- ECTagName4[ECTagName4["EC_TAG_DIRECTORIES_TEMP"] = 6658] = "EC_TAG_DIRECTORIES_TEMP";
497
- ECTagName4[ECTagName4["EC_TAG_DIRECTORIES_SHARED"] = 6659] = "EC_TAG_DIRECTORIES_SHARED";
498
- ECTagName4[ECTagName4["EC_TAG_DIRECTORIES_SHARE_HIDDEN"] = 6660] = "EC_TAG_DIRECTORIES_SHARE_HIDDEN";
499
- ECTagName4[ECTagName4["EC_TAG_PREFS_STATISTICS"] = 6912] = "EC_TAG_PREFS_STATISTICS";
500
- ECTagName4[ECTagName4["EC_TAG_STATSGRAPH_WIDTH"] = 6913] = "EC_TAG_STATSGRAPH_WIDTH";
501
- ECTagName4[ECTagName4["EC_TAG_STATSGRAPH_SCALE"] = 6914] = "EC_TAG_STATSGRAPH_SCALE";
502
- ECTagName4[ECTagName4["EC_TAG_STATSGRAPH_LAST"] = 6915] = "EC_TAG_STATSGRAPH_LAST";
503
- ECTagName4[ECTagName4["EC_TAG_STATSGRAPH_DATA"] = 6916] = "EC_TAG_STATSGRAPH_DATA";
504
- ECTagName4[ECTagName4["EC_TAG_STATTREE_CAPPING"] = 6917] = "EC_TAG_STATTREE_CAPPING";
505
- ECTagName4[ECTagName4["EC_TAG_STATTREE_NODE"] = 6918] = "EC_TAG_STATTREE_NODE";
506
- ECTagName4[ECTagName4["EC_TAG_STAT_NODE_VALUE"] = 6919] = "EC_TAG_STAT_NODE_VALUE";
507
- ECTagName4[ECTagName4["EC_TAG_STAT_VALUE_TYPE"] = 6920] = "EC_TAG_STAT_VALUE_TYPE";
508
- ECTagName4[ECTagName4["EC_TAG_STATTREE_NODEID"] = 6921] = "EC_TAG_STATTREE_NODEID";
509
- ECTagName4[ECTagName4["EC_TAG_PREFS_SECURITY"] = 7168] = "EC_TAG_PREFS_SECURITY";
510
- ECTagName4[ECTagName4["EC_TAG_SECURITY_CAN_SEE_SHARES"] = 7169] = "EC_TAG_SECURITY_CAN_SEE_SHARES";
511
- ECTagName4[ECTagName4["EC_TAG_IPFILTER_CLIENTS"] = 7170] = "EC_TAG_IPFILTER_CLIENTS";
512
- ECTagName4[ECTagName4["EC_TAG_IPFILTER_SERVERS"] = 7171] = "EC_TAG_IPFILTER_SERVERS";
513
- ECTagName4[ECTagName4["EC_TAG_IPFILTER_AUTO_UPDATE"] = 7172] = "EC_TAG_IPFILTER_AUTO_UPDATE";
514
- ECTagName4[ECTagName4["EC_TAG_IPFILTER_UPDATE_URL"] = 7173] = "EC_TAG_IPFILTER_UPDATE_URL";
515
- ECTagName4[ECTagName4["EC_TAG_IPFILTER_LEVEL"] = 7174] = "EC_TAG_IPFILTER_LEVEL";
516
- ECTagName4[ECTagName4["EC_TAG_IPFILTER_FILTER_LAN"] = 7175] = "EC_TAG_IPFILTER_FILTER_LAN";
517
- ECTagName4[ECTagName4["EC_TAG_SECURITY_USE_SECIDENT"] = 7176] = "EC_TAG_SECURITY_USE_SECIDENT";
518
- ECTagName4[ECTagName4["EC_TAG_SECURITY_OBFUSCATION_SUPPORTED"] = 7177] = "EC_TAG_SECURITY_OBFUSCATION_SUPPORTED";
519
- ECTagName4[ECTagName4["EC_TAG_SECURITY_OBFUSCATION_REQUESTED"] = 7178] = "EC_TAG_SECURITY_OBFUSCATION_REQUESTED";
520
- ECTagName4[ECTagName4["EC_TAG_SECURITY_OBFUSCATION_REQUIRED"] = 7179] = "EC_TAG_SECURITY_OBFUSCATION_REQUIRED";
521
- ECTagName4[ECTagName4["EC_TAG_PREFS_CORETWEAKS"] = 7424] = "EC_TAG_PREFS_CORETWEAKS";
522
- ECTagName4[ECTagName4["EC_TAG_CORETW_MAX_CONN_PER_FIVE"] = 7425] = "EC_TAG_CORETW_MAX_CONN_PER_FIVE";
523
- ECTagName4[ECTagName4["EC_TAG_CORETW_VERBOSE"] = 7426] = "EC_TAG_CORETW_VERBOSE";
524
- ECTagName4[ECTagName4["EC_TAG_CORETW_FILEBUFFER"] = 7427] = "EC_TAG_CORETW_FILEBUFFER";
525
- ECTagName4[ECTagName4["EC_TAG_CORETW_UL_QUEUE"] = 7428] = "EC_TAG_CORETW_UL_QUEUE";
526
- ECTagName4[ECTagName4["EC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT"] = 7429] = "EC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT";
527
- ECTagName4[ECTagName4["EC_TAG_PREFS_KADEMLIA"] = 7680] = "EC_TAG_PREFS_KADEMLIA";
528
- ECTagName4[ECTagName4["EC_TAG_KADEMLIA_UPDATE_URL"] = 7681] = "EC_TAG_KADEMLIA_UPDATE_URL";
529
- ECTagName4[ECTagName4["EC_TAG_UNKNOWN"] = 65535] = "EC_TAG_UNKNOWN";
530
- return ECTagName4;
531
- })(ECTagName || {});
532
- ECDetailLevel = /* @__PURE__ */ ((ECDetailLevel2) => {
533
- ECDetailLevel2[ECDetailLevel2["EC_DETAIL_CMD"] = 0] = "EC_DETAIL_CMD";
534
- ECDetailLevel2[ECDetailLevel2["EC_DETAIL_WEB"] = 1] = "EC_DETAIL_WEB";
535
- ECDetailLevel2[ECDetailLevel2["EC_DETAIL_FULL"] = 2] = "EC_DETAIL_FULL";
536
- ECDetailLevel2[ECDetailLevel2["EC_DETAIL_UPDATE"] = 3] = "EC_DETAIL_UPDATE";
537
- ECDetailLevel2[ECDetailLevel2["EC_DETAIL_INC_UPDATE"] = 4] = "EC_DETAIL_INC_UPDATE";
538
- return ECDetailLevel2;
539
- })(ECDetailLevel || {});
540
- ECSearchType = /* @__PURE__ */ ((ECSearchType2) => {
541
- ECSearchType2[ECSearchType2["EC_SEARCH_LOCAL"] = 0] = "EC_SEARCH_LOCAL";
542
- ECSearchType2[ECSearchType2["EC_SEARCH_GLOBAL"] = 1] = "EC_SEARCH_GLOBAL";
543
- ECSearchType2[ECSearchType2["EC_SEARCH_KAD"] = 2] = "EC_SEARCH_KAD";
544
- ECSearchType2[ECSearchType2["EC_SEARCH_WEB"] = 3] = "EC_SEARCH_WEB";
545
- return ECSearchType2;
546
- })(ECSearchType || {});
547
- EcPrefs = /* @__PURE__ */ ((EcPrefs3) => {
548
- EcPrefs3[EcPrefs3["EC_PREFS_CATEGORIES"] = 1] = "EC_PREFS_CATEGORIES";
549
- EcPrefs3[EcPrefs3["EC_PREFS_GENERAL"] = 2] = "EC_PREFS_GENERAL";
550
- EcPrefs3[EcPrefs3["EC_PREFS_CONNECTIONS"] = 4] = "EC_PREFS_CONNECTIONS";
551
- EcPrefs3[EcPrefs3["EC_PREFS_MESSAGEFILTER"] = 8] = "EC_PREFS_MESSAGEFILTER";
552
- EcPrefs3[EcPrefs3["EC_PREFS_REMOTECONTROLS"] = 16] = "EC_PREFS_REMOTECONTROLS";
553
- EcPrefs3[EcPrefs3["EC_PREFS_ONLINESIG"] = 32] = "EC_PREFS_ONLINESIG";
554
- EcPrefs3[EcPrefs3["EC_PREFS_SERVERS"] = 64] = "EC_PREFS_SERVERS";
555
- EcPrefs3[EcPrefs3["EC_PREFS_FILES"] = 128] = "EC_PREFS_FILES";
556
- EcPrefs3[EcPrefs3["EC_PREFS_DIRECTORIES"] = 512] = "EC_PREFS_DIRECTORIES";
557
- EcPrefs3[EcPrefs3["EC_PREFS_STATISTICS"] = 1024] = "EC_PREFS_STATISTICS";
558
- EcPrefs3[EcPrefs3["EC_PREFS_SECURITY"] = 2048] = "EC_PREFS_SECURITY";
559
- EcPrefs3[EcPrefs3["EC_PREFS_CORETWEAKS"] = 4096] = "EC_PREFS_CORETWEAKS";
560
- EcPrefs3[EcPrefs3["EC_PREFS_KADEMLIA"] = 8192] = "EC_PREFS_KADEMLIA";
561
- return EcPrefs3;
562
- })(EcPrefs || {});
563
- }
564
- });
565
-
566
- // src/ec/tag/Tag.ts
567
- function findTag(tags, name) {
568
- return tags.find((tag) => tag.name === name);
569
- }
570
- function findNumericTag(tags, name) {
571
- const tag = tags.find((tag2) => tag2.name === name);
572
- if (tag && "getInt" in tag && "getShort" in tag && "getLong" in tag) {
573
- return tag;
574
- }
575
- return void 0;
576
- }
577
- var Tag, CustomTag, UByteTag, UShortTag, UIntTag, ULongTag, UInt128Tag, StringTag, DoubleTag, Ipv4Tag, Hash16Tag;
578
- var init_Tag = __esm({
579
- "src/ec/tag/Tag.ts"() {
580
- "use strict";
581
- init_Codes();
582
- Tag = class {
583
- constructor(name, type, nestedTags = [], nameValue = name) {
584
- this.name = name;
585
- this.type = type;
586
- this.nameValue = nameValue;
587
- if (nestedTags.length > 0) {
588
- this.nestedTags = nestedTags;
589
- }
590
- }
591
- value;
592
- nestedTags;
593
- getValue() {
594
- return this.value;
595
- }
596
- setValue(value) {
597
- this.value = value;
598
- }
599
- };
600
- CustomTag = class extends Tag {
601
- constructor(name, value, subtags = [], nameValue = name) {
602
- super(name, 1 /* EC_TAGTYPE_CUSTOM */, subtags, nameValue);
603
- if (value !== void 0) {
604
- this.setValue(value);
605
- }
606
- }
607
- parseValue(value) {
608
- this.setValue(value);
609
- }
610
- encodeValue() {
611
- return this.getValue();
612
- }
613
- };
614
- UByteTag = class _UByteTag extends Tag {
615
- constructor(name, value, subtags = [], nameValue = name) {
616
- super(name, 2 /* EC_TAGTYPE_UINT8 */, subtags, nameValue);
617
- if (value !== void 0) {
618
- this.setValue(value);
619
- }
620
- }
621
- static withValue(name, value, subtags = []) {
622
- return new _UByteTag(name, value, subtags);
623
- }
624
- parseValue(value) {
625
- if (value.length === 0) {
626
- this.setValue(0);
627
- } else if (value.length === 1) {
628
- this.setValue(value[0]);
629
- } else {
630
- throw new Error("UInt8Tag value must be 1 byte long");
631
- }
632
- }
633
- encodeValue() {
634
- const buf = Buffer.allocUnsafe(1);
635
- buf.writeUInt8(this.getValue());
636
- return buf;
637
- }
638
- getShort() {
639
- return this.getValue();
640
- }
641
- getInt() {
642
- return this.getValue();
643
- }
644
- getLong() {
645
- return BigInt(this.getValue());
646
- }
647
- };
648
- UShortTag = class _UShortTag extends Tag {
649
- constructor(name, value, subtags = [], nameValue = name) {
650
- super(name, 3 /* EC_TAGTYPE_UINT16 */, subtags, nameValue);
651
- if (value !== void 0) {
652
- this.setValue(value);
653
- }
654
- }
655
- static withValue(name, value, subtags = []) {
656
- return new _UShortTag(name, value, subtags);
657
- }
658
- parseValue(value) {
659
- if (value.length === 0) {
660
- this.setValue(0);
661
- } else if (value.length === 2) {
662
- this.setValue(value.readUInt16BE(0));
663
- } else {
664
- throw new Error("UInt16Tag value must be 2 bytes long");
665
- }
666
- }
667
- encodeValue() {
668
- const buf = Buffer.allocUnsafe(2);
669
- buf.writeUInt16BE(this.getValue());
670
- return buf;
671
- }
672
- getShort() {
673
- return this.getValue();
674
- }
675
- getInt() {
676
- return this.getValue();
677
- }
678
- getLong() {
679
- return BigInt(this.getValue());
680
- }
681
- };
682
- UIntTag = class _UIntTag extends Tag {
683
- constructor(name, value, subtags = [], nameValue = name) {
684
- super(name, 4 /* EC_TAGTYPE_UINT32 */, subtags, nameValue);
685
- if (value !== void 0) {
686
- this.setValue(value);
687
- }
688
- }
689
- static withValue(name, value, subtags = []) {
690
- return new _UIntTag(name, value, subtags);
691
- }
692
- parseValue(value) {
693
- if (value.length === 0) {
694
- this.setValue(0);
695
- } else if (value.length === 4) {
696
- this.setValue(value.readUInt32BE(0));
697
- } else {
698
- throw new Error("UInt32Tag value must be 4 bytes long");
699
- }
700
- }
701
- encodeValue() {
702
- const buf = Buffer.allocUnsafe(4);
703
- buf.writeUInt32BE(this.getValue());
704
- return buf;
705
- }
706
- getShort() {
707
- throw new Error("Unsigned Integer cannot be cast to short");
708
- }
709
- getInt() {
710
- return this.getValue();
711
- }
712
- getLong() {
713
- return BigInt(this.getValue());
714
- }
715
- };
716
- ULongTag = class _ULongTag extends Tag {
717
- constructor(name, value, subtags = [], nameValue = name) {
718
- super(name, 5 /* EC_TAGTYPE_UINT64 */, subtags, nameValue);
719
- if (value !== void 0) {
720
- this.setValue(value);
721
- }
722
- }
723
- static withValue(name, value, subtags = []) {
724
- return new _ULongTag(name, value, subtags);
725
- }
726
- parseValue(value) {
727
- if (value.length === 0) {
728
- this.setValue(0n);
729
- } else if (value.length === 8) {
730
- this.setValue(value.readBigUInt64BE(0));
731
- } else {
732
- throw new Error("UInt64Tag value must be 8 bytes long");
733
- }
734
- }
735
- encodeValue() {
736
- const buf = Buffer.allocUnsafe(8);
737
- buf.writeBigUInt64BE(this.getValue());
738
- return buf;
739
- }
740
- getShort() {
741
- throw new Error("Unsigned Long cannot be cast to short");
742
- }
743
- getInt() {
744
- throw new Error("Unsigned Long cannot be cast to int");
745
- }
746
- getLong() {
747
- return this.getValue();
748
- }
749
- };
750
- UInt128Tag = class _UInt128Tag extends Tag {
751
- constructor(name, value, subtags = [], nameValue = name) {
752
- super(name, 10 /* EC_TAGTYPE_UINT128 */, subtags, nameValue);
753
- if (value !== void 0) {
754
- this.setValue(value);
755
- }
756
- }
757
- static withValue(name, value, subtags = []) {
758
- return new _UInt128Tag(name, value, subtags);
759
- }
760
- parseValue(value) {
761
- if (value.length === 0) {
762
- this.setValue(0n);
763
- } else {
764
- let result = 0n;
765
- for (let i = 0; i < value.length; i++) {
766
- result = result << 8n | BigInt(value[i]);
767
- }
768
- this.setValue(result);
769
- }
770
- }
771
- encodeValue() {
772
- const val = this.getValue();
773
- const bytes = [];
774
- let remaining = val;
775
- while (remaining > 0n) {
776
- bytes.unshift(Number(remaining & 0xffn));
777
- remaining >>= 8n;
778
- }
779
- while (bytes.length < 16) {
780
- bytes.unshift(0);
781
- }
782
- return Buffer.from(bytes);
783
- }
784
- };
785
- StringTag = class _StringTag extends Tag {
786
- constructor(name, value, subtags = [], nameValue = name) {
787
- super(name, 6 /* EC_TAGTYPE_STRING */, subtags, nameValue);
788
- if (value !== void 0) {
789
- this.setValue(value);
790
- }
791
- }
792
- static withValue(name, value, subtags = []) {
793
- return new _StringTag(name, value, subtags);
794
- }
795
- parseValue(value) {
796
- if (value[value.length - 1] !== 0) {
797
- throw new Error("StringTag value must be null terminated");
798
- }
799
- this.setValue(value.toString("utf8", 0, value.length - 1));
800
- }
801
- encodeValue() {
802
- return Buffer.concat([Buffer.from(this.getValue(), "utf8"), Buffer.from([0])]);
803
- }
804
- };
805
- DoubleTag = class _DoubleTag extends Tag {
806
- constructor(name, value, subtags = [], nameValue = name) {
807
- super(name, 7 /* EC_TAGTYPE_DOUBLE */, subtags, nameValue);
808
- if (value !== void 0) {
809
- this.setValue(value);
810
- }
811
- }
812
- static withValue(name, value, subtags = []) {
813
- return new _DoubleTag(name, value, subtags);
814
- }
815
- parseValue(value) {
816
- const numValue = value.length >= 8 ? value.readDoubleBE(0) : 0;
817
- this.setValue(numValue);
818
- }
819
- encodeValue() {
820
- const buf = Buffer.allocUnsafe(8);
821
- buf.writeDoubleBE(this.getValue());
822
- return buf;
823
- }
824
- };
825
- Ipv4Tag = class _Ipv4Tag extends Tag {
826
- constructor(name, value, subtags = [], nameValue = name) {
827
- super(name, 8 /* EC_TAGTYPE_IPV4 */, subtags, nameValue);
828
- if (value !== void 0) {
829
- this.setValue(value);
830
- }
831
- }
832
- static withValue(name, value, subtags = []) {
833
- return new _Ipv4Tag(name, value, subtags);
834
- }
835
- parseValue(value) {
836
- if (value.length !== 6) {
837
- throw new Error("Ipv4Tag value must be 6 bytes long");
838
- }
839
- const address = `${value[0]}.${value[1]}.${value[2]}.${value[3]}`;
840
- const port = value.readUInt16BE(4);
841
- this.setValue({ address, port });
842
- }
843
- encodeValue() {
844
- const val = this.getValue();
845
- const parts = val.address.split(".").map(Number);
846
- const buf = Buffer.allocUnsafe(6);
847
- buf[0] = parts[0];
848
- buf[1] = parts[1];
849
- buf[2] = parts[2];
850
- buf[3] = parts[3];
851
- buf.writeUInt16BE(val.port, 4);
852
- return buf;
853
- }
854
- };
855
- Hash16Tag = class _Hash16Tag extends Tag {
856
- constructor(name, value, subtags = [], nameValue = name) {
857
- super(name, 9 /* EC_TAGTYPE_HASH16 */, subtags, nameValue);
858
- if (value !== void 0) {
859
- this.setValue(value);
860
- }
861
- }
862
- static withValue(name, value, subtags = []) {
863
- return new _Hash16Tag(name, value, subtags);
864
- }
865
- parseValue(value) {
866
- if (value.length === 16) {
867
- this.setValue(value);
868
- } else {
869
- throw new Error("Hash16Tag value must be 16 bytes long");
870
- }
871
- }
872
- encodeValue() {
873
- return this.getValue();
874
- }
875
- };
876
- }
877
- });
878
-
879
- // src/request/Request.ts
880
- var Request;
881
- var init_Request = __esm({
882
- "src/request/Request.ts"() {
883
- "use strict";
884
- init_Packet();
885
- init_Flags();
886
- Request = class {
887
- opCode;
888
- tags = [];
889
- constructor(opCode) {
890
- this.opCode = opCode;
891
- }
892
- /**
893
- * Add a tag to the request
894
- */
895
- addTag(tag) {
896
- this.tags.push(tag);
897
- }
898
- /**
899
- * Build the packet for this request
900
- */
901
- buildPacket() {
902
- const flags = Flags.useUtf8Numbers();
903
- return new Packet(this.opCode, flags, this.tags);
904
- }
905
- };
906
- }
907
- });
908
-
909
- // src/request/StatsRequest.ts
910
- var StatsRequest_exports = {};
911
- __export(StatsRequest_exports, {
912
- StatsRequest: () => StatsRequest
913
- });
914
- var StatsRequest;
915
- var init_StatsRequest = __esm({
916
- "src/request/StatsRequest.ts"() {
917
- "use strict";
918
- init_Request();
919
- init_Codes();
920
- init_Tag();
921
- StatsRequest = class extends Request {
922
- constructor(detailLevel = 2 /* EC_DETAIL_FULL */) {
923
- super(10 /* EC_OP_STAT_REQ */);
924
- this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, detailLevel));
925
- }
926
- };
927
- }
928
- });
929
-
930
- // src/response/StatsResponse.ts
931
- var StatsResponse_exports = {};
932
- __export(StatsResponse_exports, {
933
- StatsResponseParser: () => StatsResponseParser
934
- });
935
- var StatsResponseParser;
936
- var init_StatsResponse = __esm({
937
- "src/response/StatsResponse.ts"() {
938
- "use strict";
939
- init_Codes();
940
- init_Tag();
941
- StatsResponseParser = class {
942
- static fromPacket(packet) {
943
- const uploadOverhead = findNumericTag(packet.tags, 516 /* EC_TAG_STATS_UP_OVERHEAD */)?.getValue() || 0;
944
- const downloadOverhead = findNumericTag(packet.tags, 517 /* EC_TAG_STATS_DOWN_OVERHEAD */)?.getValue() || 0;
945
- const bannedCount = findNumericTag(packet.tags, 519 /* EC_TAG_STATS_BANNED_COUNT */)?.getValue() || 0;
946
- const totalSentBytes = findNumericTag(packet.tags, 536 /* EC_TAG_STATS_TOTAL_SENT_BYTES */)?.getValue() || 0;
947
- const totalReceivedBytes = findNumericTag(packet.tags, 537 /* EC_TAG_STATS_TOTAL_RECEIVED_BYTES */)?.getValue() || 0;
948
- const sharedFileCount = findNumericTag(packet.tags, 538 /* EC_TAG_STATS_SHARED_FILE_COUNT */)?.getValue() || 0;
949
- const uploadSpeed = findNumericTag(packet.tags, 512 /* EC_TAG_STATS_UL_SPEED */)?.getValue() || 0;
950
- const downloadSpeed = findNumericTag(packet.tags, 513 /* EC_TAG_STATS_DL_SPEED */)?.getValue() || 0;
951
- const uploadSpeedLimit = findNumericTag(packet.tags, 514 /* EC_TAG_STATS_UL_SPEED_LIMIT */)?.getValue() || 0;
952
- const downloadSpeedLimit = findNumericTag(packet.tags, 515 /* EC_TAG_STATS_DL_SPEED_LIMIT */)?.getValue() || 0;
953
- const uploadQueueLength = findNumericTag(packet.tags, 520 /* EC_TAG_STATS_UL_QUEUE_LEN */)?.getValue() || 0;
954
- const totalSourceCount = findNumericTag(packet.tags, 518 /* EC_TAG_STATS_TOTAL_SRC_COUNT */)?.getValue() || 0;
955
- const ed2kUsers = findNumericTag(packet.tags, 521 /* EC_TAG_STATS_ED2K_USERS */)?.getValue() || 0;
956
- const kadUsers = findNumericTag(packet.tags, 522 /* EC_TAG_STATS_KAD_USERS */)?.getValue() || 0;
957
- const ed2kFiles = findNumericTag(packet.tags, 523 /* EC_TAG_STATS_ED2K_FILES */)?.getValue() || 0;
958
- const kadFiles = findNumericTag(packet.tags, 524 /* EC_TAG_STATS_KAD_FILES */)?.getValue() || 0;
959
- const kadNodes = findNumericTag(packet.tags, 539 /* EC_TAG_STATS_KAD_NODES */)?.getValue() || 0;
960
- const connStateTag = findTag(packet.tags, 5 /* EC_TAG_CONNSTATE */);
961
- let ed2kId = 0;
962
- let clientId = 0;
963
- let kadId;
964
- let connectedServer;
965
- if (connStateTag && connStateTag.nestedTags) {
966
- ed2kId = Number(findNumericTag(connStateTag.nestedTags, 6 /* EC_TAG_ED2K_ID */)?.getValue() || 0);
967
- clientId = Number(findNumericTag(connStateTag.nestedTags, 10 /* EC_TAG_CLIENT_ID */)?.getValue() || 0);
968
- const kadIdTag = findTag(connStateTag.nestedTags, 16 /* EC_TAG_KAD_ID */);
969
- if (kadIdTag && kadIdTag.getValue() !== void 0) {
970
- const val = kadIdTag.getValue();
971
- if (typeof val === "bigint") {
972
- kadId = val.toString(16).padStart(32, "0");
973
- } else if (val instanceof Buffer) {
974
- kadId = val.toString("hex");
975
- }
976
- }
977
- const serverTag = findTag(connStateTag.nestedTags, 1280 /* EC_TAG_SERVER */);
978
- if (serverTag) {
979
- const serverVal = serverTag.getValue();
980
- if (serverVal && typeof serverVal === "object" && "address" in serverVal) {
981
- connectedServer = {
982
- ip: serverVal.address,
983
- port: serverVal.port,
984
- name: findTag(serverTag.nestedTags || [], 1281 /* EC_TAG_SERVER_NAME */)?.getValue(),
985
- description: findTag(serverTag.nestedTags || [], 1282 /* EC_TAG_SERVER_DESC */)?.getValue()
986
- };
987
- }
988
- }
989
- }
990
- const id = clientId || Number(findNumericTag(packet.tags, 10 /* EC_TAG_CLIENT_ID */)?.getValue() || 0);
991
- const loggerMessage = [];
992
- return {
993
- id: Number(id),
994
- ed2kId,
995
- kadId,
996
- connectedServer,
997
- uploadOverhead: Number(uploadOverhead),
998
- downloadOverhead: Number(downloadOverhead),
999
- bannedCount: Number(bannedCount),
1000
- loggerMessage,
1001
- totalSentBytes: Number(totalSentBytes),
1002
- totalReceivedBytes: Number(totalReceivedBytes),
1003
- sharedFileCount: Number(sharedFileCount),
1004
- uploadSpeed: Number(uploadSpeed),
1005
- downloadSpeed: Number(downloadSpeed),
1006
- uploadSpeedLimit: Number(uploadSpeedLimit),
1007
- downloadSpeedLimit: Number(downloadSpeedLimit),
1008
- uploadQueueLength: Number(uploadQueueLength),
1009
- totalSourceCount: Number(totalSourceCount),
1010
- ed2kUsers: Number(ed2kUsers),
1011
- kadUsers: Number(kadUsers),
1012
- ed2kFiles: Number(ed2kFiles),
1013
- kadFiles: Number(kadFiles),
1014
- kadNodes: Number(kadNodes)
1015
- };
1016
- }
1017
- };
1018
- }
1019
- });
1020
-
1021
- // src/request/UpdateRequest.ts
1022
- var UpdateRequest_exports = {};
1023
- __export(UpdateRequest_exports, {
1024
- UpdateRequest: () => UpdateRequest
1025
- });
1026
- var UpdateRequest;
1027
- var init_UpdateRequest = __esm({
1028
- "src/request/UpdateRequest.ts"() {
1029
- "use strict";
1030
- init_Request();
1031
- init_Codes();
1032
- init_Tag();
1033
- UpdateRequest = class extends Request {
1034
- constructor(detailLevel = 4 /* EC_DETAIL_INC_UPDATE */) {
1035
- super(82 /* EC_OP_GET_UPDATE */);
1036
- this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, detailLevel));
1037
- }
1038
- };
1039
- }
1040
- });
1041
-
1042
- // src/response/utils.ts
1043
- function formatIp(ip) {
1044
- if (ip === void 0) return "";
1045
- return [ip >>> 24 & 255, ip >>> 16 & 255, ip >>> 8 & 255, ip & 255].join(".");
1046
- }
1047
- function toOptionalNumber(value) {
1048
- if (value === void 0) return void 0;
1049
- return typeof value === "bigint" ? Number(value) : value;
1050
- }
1051
- function toOptionalBool(value) {
1052
- if (value === void 0) return void 0;
1053
- return value !== 0;
1054
- }
1055
- function toOptionalIp(value) {
1056
- if (value === void 0) return void 0;
1057
- return formatIp(value);
1058
- }
1059
- var init_utils = __esm({
1060
- "src/response/utils.ts"() {
1061
- "use strict";
1062
- }
1063
- });
1064
-
1065
- // src/response/SharedFilesResponse.ts
1066
- var SharedFilesResponse_exports = {};
1067
- __export(SharedFilesResponse_exports, {
1068
- SharedFilesResponseParser: () => SharedFilesResponseParser
1069
- });
1070
- var SharedFilesResponseParser;
1071
- var init_SharedFilesResponse = __esm({
1072
- "src/response/SharedFilesResponse.ts"() {
1073
- "use strict";
1074
- init_Codes();
1075
- init_Tag();
1076
- init_utils();
1077
- SharedFilesResponseParser = class {
1078
- static fromPacket(packet) {
1079
- const files = [];
1080
- const knownfileTags = packet.tags.filter((tag) => tag.name === 1024 /* EC_TAG_KNOWNFILE */);
1081
- for (const fileTag of knownfileTags) {
1082
- const tags = fileTag.nestedTags || [];
1083
- const hashTag = findTag(tags, 798 /* EC_TAG_PARTFILE_HASH */);
1084
- const fileNameTag = findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */);
1085
- const file = {
1086
- fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
1087
- fileName: fileNameTag ? fileNameTag.getValue() : void 0,
1088
- filePath: findTag(tags, 1032 /* EC_TAG_KNOWNFILE_FILENAME */)?.getValue(),
1089
- sizeFull: toOptionalNumber(findNumericTag(tags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */)?.getLong()),
1090
- fileEd2kLink: findTag(tags, 782 /* EC_TAG_PARTFILE_ED2K_LINK */)?.getValue(),
1091
- upPrio: findNumericTag(tags, 1035 /* EC_TAG_KNOWNFILE_PRIO */)?.getInt(),
1092
- getRequests: findNumericTag(tags, 1027 /* EC_TAG_KNOWNFILE_REQ_COUNT */)?.getShort(),
1093
- getAllRequests: findNumericTag(tags, 1028 /* EC_TAG_KNOWNFILE_REQ_COUNT_ALL */)?.getInt(),
1094
- getAccepts: findNumericTag(tags, 1029 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT */)?.getShort(),
1095
- getAllAccepts: findNumericTag(tags, 1030 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL */)?.getInt(),
1096
- getXferred: toOptionalNumber(findNumericTag(tags, 1025 /* EC_TAG_KNOWNFILE_XFERRED */)?.getLong()),
1097
- getAllXferred: toOptionalNumber(findNumericTag(tags, 1026 /* EC_TAG_KNOWNFILE_XFERRED_ALL */)?.getLong()),
1098
- getCompleteSourcesLow: findNumericTag(tags, 1033 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW */)?.getShort(),
1099
- getCompleteSourcesHigh: findNumericTag(tags, 1034 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH */)?.getShort(),
1100
- getCompleteSources: findNumericTag(tags, 1037 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES */)?.getShort(),
1101
- getOnQueue: findNumericTag(tags, 1036 /* EC_TAG_KNOWNFILE_ON_QUEUE */)?.getShort(),
1102
- getComment: findTag(tags, 1038 /* EC_TAG_KNOWNFILE_COMMENT */)?.getValue(),
1103
- getRating: findNumericTag(tags, 1039 /* EC_TAG_KNOWNFILE_RATING */)?.getInt()
1104
- };
1105
- files.push(file);
1106
- }
1107
- return { files };
1108
- }
1109
- };
1110
- }
1111
- });
1112
-
1113
- // src/response/DownloadQueueResponse.ts
1114
- var DownloadQueueResponse_exports = {};
1115
- __export(DownloadQueueResponse_exports, {
1116
- DownloadQueueResponseParser: () => DownloadQueueResponseParser
1117
- });
1118
- var DownloadQueueResponseParser;
1119
- var init_DownloadQueueResponse = __esm({
1120
- "src/response/DownloadQueueResponse.ts"() {
1121
- "use strict";
1122
- init_Codes();
1123
- init_Tag();
1124
- init_utils();
1125
- DownloadQueueResponseParser = class {
1126
- static fromPacket(packet) {
1127
- const files = [];
1128
- const partfileTags = packet.tags.filter((tag) => tag.name === 768 /* EC_TAG_PARTFILE */);
1129
- for (const fileTag of partfileTags) {
1130
- const tags = fileTag.nestedTags || [];
1131
- const hashTag = findTag(tags, 798 /* EC_TAG_PARTFILE_HASH */);
1132
- const fileNameTag = findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */);
1133
- let a4afSources = void 0;
1134
- const a4afSourcesTag = findTag(tags, 802 /* EC_TAG_PARTFILE_A4AF_SOURCES */);
1135
- if (a4afSourcesTag) {
1136
- a4afSources = [];
1137
- a4afSourcesTag.nestedTags = a4afSourcesTag.nestedTags || [];
1138
- for (const sourceTag of a4afSourcesTag.nestedTags) {
1139
- if (sourceTag.name === 15 /* EC_TAG_ECID */) {
1140
- a4afSources.push(sourceTag.getValue());
1141
- }
1142
- }
1143
- }
1144
- const file = {
1145
- fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
1146
- fileName: fileNameTag ? fileNameTag.getValue() : void 0,
1147
- filePath: findTag(tags, 1032 /* EC_TAG_KNOWNFILE_FILENAME */)?.getValue(),
1148
- sizeFull: toOptionalNumber(findNumericTag(tags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */)?.getLong()),
1149
- fileEd2kLink: findTag(tags, 782 /* EC_TAG_PARTFILE_ED2K_LINK */)?.getValue(),
1150
- // Transfer info
1151
- partMetID: findNumericTag(tags, 770 /* EC_TAG_PARTFILE_PARTMETID */)?.getShort(),
1152
- sizeXfer: toOptionalNumber(findNumericTag(tags, 772 /* EC_TAG_PARTFILE_SIZE_XFER */)?.getLong()),
1153
- sizeDone: toOptionalNumber(findNumericTag(tags, 774 /* EC_TAG_PARTFILE_SIZE_DONE */)?.getLong()),
1154
- fileStatus: findNumericTag(tags, 776 /* EC_TAG_PARTFILE_STATUS */)?.getInt(),
1155
- stopped: toOptionalBool(findNumericTag(tags, 791 /* EC_TAG_PARTFILE_STOPPED */)?.getInt()),
1156
- sourceCount: findNumericTag(tags, 778 /* EC_TAG_PARTFILE_SOURCE_COUNT */)?.getShort(),
1157
- sourceNotCurrCount: findNumericTag(tags, 780 /* EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT */)?.getShort(),
1158
- sourceXferCount: findNumericTag(tags, 781 /* EC_TAG_PARTFILE_SOURCE_COUNT_XFER */)?.getShort(),
1159
- sourceCountA4AF: findNumericTag(tags, 779 /* EC_TAG_PARTFILE_SOURCE_COUNT_A4AF */)?.getShort(),
1160
- speed: toOptionalNumber(findNumericTag(tags, 775 /* EC_TAG_PARTFILE_SPEED */)?.getLong()),
1161
- downPrio: findNumericTag(tags, 777 /* EC_TAG_PARTFILE_PRIO */)?.getInt(),
1162
- fileCat: toOptionalNumber(findNumericTag(tags, 783 /* EC_TAG_PARTFILE_CAT */)?.getLong()),
1163
- lastSeenComplete: toOptionalNumber(findNumericTag(tags, 785 /* EC_TAG_PARTFILE_LAST_SEEN_COMP */)?.getLong()),
1164
- lastDateChanged: toOptionalNumber(findNumericTag(tags, 784 /* EC_TAG_PARTFILE_LAST_RECV */)?.getLong()),
1165
- downloadActiveTime: findNumericTag(tags, 792 /* EC_TAG_PARTFILE_DOWNLOAD_ACTIVE */)?.getInt(),
1166
- availablePartCount: findNumericTag(tags, 797 /* EC_TAG_PARTFILE_AVAILABLE_PARTS */)?.getShort(),
1167
- a4AFAuto: toOptionalBool(findNumericTag(tags, 801 /* EC_TAG_PARTFILE_A4AFAUTO */)?.getInt()),
1168
- hashingProgress: toOptionalBool(findNumericTag(tags, 800 /* EC_TAG_PARTFILE_HASHED_PART_COUNT */)?.getInt()),
1169
- // Statistics
1170
- getLostDueToCorruption: toOptionalNumber(findNumericTag(tags, 793 /* EC_TAG_PARTFILE_LOST_CORRUPTION */)?.getLong()),
1171
- getGainDueToCompression: toOptionalNumber(findNumericTag(tags, 794 /* EC_TAG_PARTFILE_GAINED_COMPRESSION */)?.getLong()),
1172
- totalPacketsSavedDueToICH: findNumericTag(tags, 795 /* EC_TAG_PARTFILE_SAVED_ICH */)?.getInt(),
1173
- // Known file shared info
1174
- upPrio: findNumericTag(tags, 1035 /* EC_TAG_KNOWNFILE_PRIO */)?.getInt(),
1175
- getRequests: findNumericTag(tags, 1027 /* EC_TAG_KNOWNFILE_REQ_COUNT */)?.getShort(),
1176
- getAllRequests: findNumericTag(tags, 1028 /* EC_TAG_KNOWNFILE_REQ_COUNT_ALL */)?.getInt(),
1177
- getAccepts: findNumericTag(tags, 1029 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT */)?.getShort(),
1178
- getAllAccepts: findNumericTag(tags, 1030 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL */)?.getInt(),
1179
- getXferred: toOptionalNumber(findNumericTag(tags, 1025 /* EC_TAG_KNOWNFILE_XFERRED */)?.getLong()),
1180
- getAllXferred: toOptionalNumber(findNumericTag(tags, 1026 /* EC_TAG_KNOWNFILE_XFERRED_ALL */)?.getLong()),
1181
- getCompleteSourcesLow: findNumericTag(tags, 1033 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW */)?.getShort(),
1182
- getCompleteSourcesHigh: findNumericTag(tags, 1034 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH */)?.getShort(),
1183
- getCompleteSources: findNumericTag(tags, 1037 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES */)?.getShort(),
1184
- getOnQueue: findNumericTag(tags, 1036 /* EC_TAG_KNOWNFILE_ON_QUEUE */)?.getShort(),
1185
- getComment: findTag(tags, 1038 /* EC_TAG_KNOWNFILE_COMMENT */)?.getValue(),
1186
- getRating: findNumericTag(tags, 1039 /* EC_TAG_KNOWNFILE_RATING */)?.getInt(),
1187
- a4afSources
1188
- };
1189
- files.push(file);
1190
- }
1191
- return { files };
1192
- }
1193
- };
1194
- }
1195
- });
1196
-
1197
- // src/response/ClientQueueResponse.ts
1198
- var ClientQueueResponse_exports = {};
1199
- __export(ClientQueueResponse_exports, {
1200
- ClientQueueResponseParser: () => ClientQueueResponseParser
1201
- });
1202
- var ClientQueueResponseParser;
1203
- var init_ClientQueueResponse = __esm({
1204
- "src/response/ClientQueueResponse.ts"() {
1205
- "use strict";
1206
- init_Codes();
1207
- init_Tag();
1208
- init_utils();
1209
- ClientQueueResponseParser = class {
1210
- static fromPacket(packet) {
1211
- return this.fromTags(packet.tags);
1212
- }
1213
- static fromTags(allTags) {
1214
- const clients = [];
1215
- const clientTags = allTags.filter((tag) => tag.name === 1536 /* EC_TAG_CLIENT */);
1216
- for (const clientTag of clientTags) {
1217
- const tags = clientTag.nestedTags || [];
1218
- const client = {
1219
- clientName: findTag(tags, 256 /* EC_TAG_CLIENT_NAME */)?.getValue(),
1220
- userHashHexString: findTag(tags, 1539 /* EC_TAG_CLIENT_HASH */)?.getValue()?.toString("hex"),
1221
- userID: findNumericTag(tags, 1566 /* EC_TAG_CLIENT_USER_ID */)?.getInt(),
1222
- score: findNumericTag(tags, 1538 /* EC_TAG_CLIENT_SCORE */)?.getInt(),
1223
- software: findTag(tags, 1537 /* EC_TAG_CLIENT_SOFTWARE */)?.getValue(),
1224
- softVerStr: findTag(tags, 1557 /* EC_TAG_CLIENT_SOFT_VER_STR */)?.getValue(),
1225
- userIP: toOptionalIp(findNumericTag(tags, 1552 /* EC_TAG_CLIENT_USER_IP */)?.getInt()),
1226
- userPort: findNumericTag(tags, 1553 /* EC_TAG_CLIENT_USER_PORT */)?.getInt(),
1227
- sourceFrom: toOptionalNumber(findNumericTag(tags, 1551 /* EC_TAG_CLIENT_FROM */)?.getLong()),
1228
- serverIP: toOptionalIp(findNumericTag(tags, 1554 /* EC_TAG_CLIENT_SERVER_IP */)?.getInt()),
1229
- serverPort: findNumericTag(tags, 1555 /* EC_TAG_CLIENT_SERVER_PORT */)?.getInt(),
1230
- serverName: findTag(tags, 1556 /* EC_TAG_CLIENT_SERVER_NAME */)?.getValue(),
1231
- upSpeed: toOptionalNumber(findNumericTag(tags, 1549 /* EC_TAG_CLIENT_UP_SPEED */)?.getLong()),
1232
- downSpeed: toOptionalNumber(findNumericTag(tags, 1550 /* EC_TAG_CLIENT_DOWN_SPEED */)?.getLong()),
1233
- uploadSession: toOptionalNumber(findNumericTag(tags, 1545 /* EC_TAG_CLIENT_UPLOAD_SESSION */)?.getLong()),
1234
- transferredDown: toOptionalNumber(findNumericTag(tags, 772 /* EC_TAG_PARTFILE_SIZE_XFER */)?.getLong()),
1235
- uploadedTotal: toOptionalNumber(findNumericTag(tags, 1546 /* EC_TAG_CLIENT_UPLOAD_TOTAL */)?.getLong()),
1236
- downloadedTotal: toOptionalNumber(findNumericTag(tags, 1547 /* EC_TAG_CLIENT_DOWNLOAD_TOTAL */)?.getLong()),
1237
- uploadState: findNumericTag(tags, 1564 /* EC_TAG_CLIENT_UPLOAD_STATE */)?.getInt(),
1238
- downloadState: findNumericTag(tags, 1548 /* EC_TAG_CLIENT_DOWNLOAD_STATE */)?.getInt(),
1239
- identState: findNumericTag(tags, 1559 /* EC_TAG_CLIENT_IDENT_STATE */)?.getInt(),
1240
- extProtocol: findNumericTag(tags, 1565 /* EC_TAG_CLIENT_EXT_PROTOCOL */)?.getInt(),
1241
- waitingPosition: findNumericTag(tags, 1558 /* EC_TAG_CLIENT_WAITING_POSITION */)?.getInt(),
1242
- remoteQueueRank: findNumericTag(tags, 1562 /* EC_TAG_CLIENT_REMOTE_QUEUE_RANK */)?.getInt(),
1243
- oldRemoteQueueRank: findNumericTag(tags, 1570 /* EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK */)?.getInt(),
1244
- obfuscationStatus: findNumericTag(tags, 1560 /* EC_TAG_CLIENT_OBFUSCATION_STATUS */)?.getInt(),
1245
- kadPort: findNumericTag(tags, 1571 /* EC_TAG_CLIENT_KAD_PORT */)?.getInt(),
1246
- friendSlot: findNumericTag(tags, 1540 /* EC_TAG_CLIENT_FRIEND_SLOT */)?.getInt(),
1247
- uploadFileId: toOptionalNumber(findNumericTag(tags, 1567 /* EC_TAG_CLIENT_UPLOAD_FILE */)?.getLong()),
1248
- uploadFilename: findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */)?.getValue(),
1249
- requestFileId: toOptionalNumber(findNumericTag(tags, 1568 /* EC_TAG_CLIENT_REQUEST_FILE */)?.getLong()),
1250
- remoteFilename: findTag(tags, 1575 /* EC_TAG_CLIENT_REMOTE_FILENAME */)?.getValue(),
1251
- disableViewShared: toOptionalBool(findNumericTag(tags, 1563 /* EC_TAG_CLIENT_DISABLE_VIEW_SHARED */)?.getInt()),
1252
- version: findNumericTag(tags, 257 /* EC_TAG_CLIENT_VERSION */)?.getInt(),
1253
- modVersion: findTag(tags, 1576 /* EC_TAG_CLIENT_MOD_VERSION */)?.getValue(),
1254
- osInfo: findTag(tags, 1577 /* EC_TAG_CLIENT_OS_INFO */)?.getValue(),
1255
- availableParts: findNumericTag(tags, 1578 /* EC_TAG_CLIENT_AVAILABLE_PARTS */)?.getInt(),
1256
- partStatus: findTag(tags, 1572 /* EC_TAG_CLIENT_PART_STATUS */)?.getValue(),
1257
- nextRequestedPart: findNumericTag(tags, 1573 /* EC_TAG_CLIENT_NEXT_REQUESTED_PART */)?.getInt(),
1258
- lastDownloadingPart: findNumericTag(tags, 1574 /* EC_TAG_CLIENT_LAST_DOWNLOADING_PART */)?.getInt(),
1259
- uploadPartStatus: findTag(tags, 1579 /* EC_TAG_CLIENT_UPLOAD_PART_STATUS */)?.getValue()
1260
- // Additional fields can be added here as needed
1261
- };
1262
- clients.push(client);
1263
- }
1264
- return { clients };
1265
- }
1266
- };
1267
- }
1268
- });
1269
-
1270
- // src/response/ServerListResponse.ts
1271
- var ServerListResponse_exports = {};
1272
- __export(ServerListResponse_exports, {
1273
- ServerListResponseParser: () => ServerListResponseParser
1274
- });
1275
- var ServerListResponseParser;
1276
- var init_ServerListResponse = __esm({
1277
- "src/response/ServerListResponse.ts"() {
1278
- "use strict";
1279
- init_Codes();
1280
- init_Tag();
1281
- init_utils();
1282
- ServerListResponseParser = class {
1283
- static fromPacket(packet) {
1284
- return this.fromTags(packet.tags);
1285
- }
1286
- static fromTags(allTags) {
1287
- const servers = [];
1288
- const serverTags = allTags.filter((tag) => tag.name === 1280 /* EC_TAG_SERVER */);
1289
- for (const serverTag of serverTags) {
1290
- const nested = serverTag.nestedTags || [];
1291
- const ipv4Tag = findTag(nested, 1292 /* EC_TAG_SERVER_IP */) || findTag(nested, 1283 /* EC_TAG_SERVER_ADDRESS */) || (serverTag.constructor.name.includes("Ipv4") ? serverTag : null);
1292
- let ip = void 0;
1293
- let port = void 0;
1294
- if (ipv4Tag && ipv4Tag.getValue() && typeof ipv4Tag.getValue() === "object" && "address" in ipv4Tag.getValue()) {
1295
- const val = ipv4Tag.getValue();
1296
- ip = val.address;
1297
- port = val.port;
1298
- } else {
1299
- const ipNum = findNumericTag(nested, 1292 /* EC_TAG_SERVER_IP */)?.getInt() || findNumericTag(allTags, 1292 /* EC_TAG_SERVER_IP */)?.getInt();
1300
- port = findNumericTag(nested, 1293 /* EC_TAG_SERVER_PORT */)?.getInt() || findNumericTag(allTags, 1293 /* EC_TAG_SERVER_PORT */)?.getInt();
1301
- ip = ipNum !== void 0 ? formatIp(ipNum) : void 0;
1302
- }
1303
- if (port === void 0 || port === 0) {
1304
- const extraPort = findNumericTag(nested, 1293 /* EC_TAG_SERVER_PORT */)?.getInt();
1305
- if (extraPort !== void 0) port = extraPort;
1306
- }
1307
- servers.push({
1308
- name: findTag(nested, 1281 /* EC_TAG_SERVER_NAME */)?.getValue(),
1309
- description: findTag(nested, 1282 /* EC_TAG_SERVER_DESC */)?.getValue(),
1310
- address: findTag(nested, 1283 /* EC_TAG_SERVER_ADDRESS */)?.getValue(),
1311
- ip,
1312
- port,
1313
- ping: findNumericTag(nested, 1284 /* EC_TAG_SERVER_PING */)?.getInt(),
1314
- users: findNumericTag(nested, 1285 /* EC_TAG_SERVER_USERS */)?.getInt(),
1315
- maxUsers: findNumericTag(nested, 1286 /* EC_TAG_SERVER_USERS_MAX */)?.getInt(),
1316
- files: findNumericTag(nested, 1287 /* EC_TAG_SERVER_FILES */)?.getInt(),
1317
- priority: findNumericTag(nested, 1288 /* EC_TAG_SERVER_PRIO */)?.getInt(),
1318
- version: findTag(nested, 1291 /* EC_TAG_SERVER_VERSION */)?.getValue(),
1319
- isStatic: toOptionalBool(findNumericTag(nested, 1290 /* EC_TAG_SERVER_STATIC */)?.getInt()),
1320
- failedCount: findNumericTag(nested, 1289 /* EC_TAG_SERVER_FAILED */)?.getInt()
1321
- });
1322
- }
1323
- return { servers };
1324
- }
1325
- };
1326
- }
1327
- });
1328
-
1329
- // src/response/UpdateResponse.ts
1330
- var UpdateResponse_exports = {};
1331
- __export(UpdateResponse_exports, {
1332
- UpdateResponseParser: () => UpdateResponseParser
1333
- });
1334
- var UpdateResponseParser;
1335
- var init_UpdateResponse = __esm({
1336
- "src/response/UpdateResponse.ts"() {
1337
- "use strict";
1338
- init_Codes();
1339
- init_Tag();
1340
- init_utils();
1341
- init_SharedFilesResponse();
1342
- init_DownloadQueueResponse();
1343
- init_ClientQueueResponse();
1344
- init_ServerListResponse();
1345
- UpdateResponseParser = class {
1346
- static fromPacket(packet) {
1347
- const sharedFiles = SharedFilesResponseParser.fromPacket(packet).files;
1348
- const downloadQueue = DownloadQueueResponseParser.fromPacket(packet).files;
1349
- const clientContainer = findTag(packet.tags, 1536 /* EC_TAG_CLIENT */);
1350
- const clients = clientContainer && clientContainer.nestedTags ? ClientQueueResponseParser.fromTags(clientContainer.nestedTags).clients : [];
1351
- const serverContainer = findTag(packet.tags, 1280 /* EC_TAG_SERVER */);
1352
- const servers = serverContainer && serverContainer.nestedTags ? ServerListResponseParser.fromTags(serverContainer.nestedTags).servers : [];
1353
- const friendContainer = findTag(packet.tags, 2048 /* EC_TAG_FRIEND */);
1354
- const friends = friendContainer && friendContainer.nestedTags ? this.parseFriends(friendContainer.nestedTags) : [];
1355
- return {
1356
- sharedFiles,
1357
- downloadQueue,
1358
- clients,
1359
- servers,
1360
- friends
1361
- };
1362
- }
1363
- static parseFriends(tags) {
1364
- const friends = [];
1365
- const friendTags = tags.filter((t) => t.name === 2048 /* EC_TAG_FRIEND */);
1366
- for (const friendTag of friendTags) {
1367
- const nested = friendTag.nestedTags || [];
1368
- friends.push({
1369
- name: findTag(nested, 2049 /* EC_TAG_FRIEND_NAME */)?.getValue(),
1370
- userHashHexString: findTag(nested, 2050 /* EC_TAG_FRIEND_HASH */)?.getValue()?.toString("hex"),
1371
- ip: toOptionalIp(findNumericTag(nested, 2051 /* EC_TAG_FRIEND_IP */)?.getInt()),
1372
- port: findNumericTag(nested, 2052 /* EC_TAG_FRIEND_PORT */)?.getInt(),
1373
- friendSlot: toOptionalBool(findNumericTag(nested, 2056 /* EC_TAG_FRIEND_FRIENDSLOT */)?.getInt()),
1374
- shared: toOptionalBool(findNumericTag(nested, 2057 /* EC_TAG_FRIEND_SHARED */)?.getInt()),
1375
- // Friend client information might be nested as a client tag
1376
- client: ClientQueueResponseParser.fromTags(nested).clients[0]
1377
- });
1378
- }
1379
- return friends;
1380
- }
1381
- };
1382
- }
1383
- });
1384
-
1385
- // src/model/index.ts
1386
- var model_exports = {};
1387
- __export(model_exports, {
1388
- DownloadCommand: () => DownloadCommand,
1389
- FileStatus: () => FileStatus,
1390
- SearchType: () => SearchType
1391
- });
1392
- var FileStatus, DownloadCommand, SearchType;
1393
- var init_model = __esm({
1394
- "src/model/index.ts"() {
1395
- "use strict";
1396
- FileStatus = /* @__PURE__ */ ((FileStatus2) => {
1397
- FileStatus2[FileStatus2["READY"] = 0] = "READY";
1398
- FileStatus2[FileStatus2["EMPTY"] = 1] = "EMPTY";
1399
- FileStatus2[FileStatus2["WAITINGFORHASH"] = 2] = "WAITINGFORHASH";
1400
- FileStatus2[FileStatus2["HASHING"] = 3] = "HASHING";
1401
- FileStatus2[FileStatus2["ERROR"] = 4] = "ERROR";
1402
- FileStatus2[FileStatus2["INSUFFICIENT"] = 5] = "INSUFFICIENT";
1403
- FileStatus2[FileStatus2["UNKNOWN"] = 6] = "UNKNOWN";
1404
- FileStatus2[FileStatus2["PAUSED"] = 7] = "PAUSED";
1405
- FileStatus2[FileStatus2["COMPLETING"] = 8] = "COMPLETING";
1406
- FileStatus2[FileStatus2["COMPLETE"] = 9] = "COMPLETE";
1407
- FileStatus2[FileStatus2["ALLOCATING"] = 10] = "ALLOCATING";
1408
- return FileStatus2;
1409
- })(FileStatus || {});
1410
- DownloadCommand = /* @__PURE__ */ ((DownloadCommand2) => {
1411
- DownloadCommand2[DownloadCommand2["SWAP_A4AF_THIS"] = 22] = "SWAP_A4AF_THIS";
1412
- DownloadCommand2[DownloadCommand2["SWAP_A4AF_THIS_AUTO"] = 23] = "SWAP_A4AF_THIS_AUTO";
1413
- DownloadCommand2[DownloadCommand2["SWAP_A4AF_OTHERS"] = 24] = "SWAP_A4AF_OTHERS";
1414
- DownloadCommand2[DownloadCommand2["PAUSE"] = 25] = "PAUSE";
1415
- DownloadCommand2[DownloadCommand2["RESUME"] = 26] = "RESUME";
1416
- DownloadCommand2[DownloadCommand2["STOP"] = 27] = "STOP";
1417
- DownloadCommand2[DownloadCommand2["DELETE"] = 29] = "DELETE";
1418
- return DownloadCommand2;
1419
- })(DownloadCommand || {});
1420
- SearchType = /* @__PURE__ */ ((SearchType2) => {
1421
- SearchType2[SearchType2["GLOBAL"] = 1] = "GLOBAL";
1422
- SearchType2[SearchType2["KAD"] = 2] = "KAD";
1423
- SearchType2[SearchType2["LOCAL"] = 0] = "LOCAL";
1424
- SearchType2[SearchType2["WEB"] = 3] = "WEB";
1425
- return SearchType2;
1426
- })(SearchType || {});
1427
- }
1428
- });
1429
-
1430
- // src/request/SearchRequest.ts
1431
- var SearchRequest_exports = {};
1432
- __export(SearchRequest_exports, {
1433
- SearchRequest: () => SearchRequest
1434
- });
1435
- var SearchRequest;
1436
- var init_SearchRequest = __esm({
1437
- "src/request/SearchRequest.ts"() {
1438
- "use strict";
1439
- init_Request();
1440
- init_Packet();
1441
- init_Flags();
1442
- init_Codes();
1443
- init_Tag();
1444
- init_model();
1445
- SearchRequest = class extends Request {
1446
- query;
1447
- searchType;
1448
- filters;
1449
- constructor(query, searchType = 0 /* LOCAL */, filters) {
1450
- super(38 /* EC_OP_SEARCH_START */);
1451
- this.query = query;
1452
- this.searchType = searchType;
1453
- this.filters = filters;
1454
- }
1455
- /**
1456
- * Override buildPacket to use non-UTF8 flags and correct tag structure
1457
- */
1458
- buildPacket() {
1459
- const flags = Flags.noUtf8();
1460
- const tags = this.buildTags();
1461
- return new Packet(this.opCode, flags, tags);
1462
- }
1463
- buildTags() {
1464
- const tags = [];
1465
- const ecSearchType = this.convertSearchType(this.searchType);
1466
- const searchNameTag = new StringTag(1794 /* EC_TAG_SEARCH_NAME */, this.query);
1467
- const searchTypeTag = new UByteTag(1793 /* EC_TAG_SEARCH_TYPE */, ecSearchType, [searchNameTag]);
1468
- tags.push(searchTypeTag);
1469
- if (this.filters) {
1470
- if (this.filters.minSize !== void 0) {
1471
- tags.push(new ULongTag(1795 /* EC_TAG_SEARCH_MIN_SIZE */, BigInt(this.filters.minSize)));
1472
- }
1473
- if (this.filters.maxSize !== void 0) {
1474
- tags.push(new ULongTag(1796 /* EC_TAG_SEARCH_MAX_SIZE */, BigInt(this.filters.maxSize)));
1475
- }
1476
- if (this.filters.fileType !== void 0) {
1477
- tags.push(new StringTag(1797 /* EC_TAG_SEARCH_FILE_TYPE */, this.filters.fileType));
1478
- }
1479
- if (this.filters.extension !== void 0) {
1480
- tags.push(new StringTag(1798 /* EC_TAG_SEARCH_EXTENSION */, this.filters.extension));
1481
- }
1482
- if (this.filters.availability !== void 0) {
1483
- tags.push(new UIntTag(1799 /* EC_TAG_SEARCH_AVAILABILITY */, this.filters.availability));
1484
- }
1485
- }
1486
- return tags;
1487
- }
1488
- convertSearchType(searchType) {
1489
- switch (searchType) {
1490
- case 0 /* LOCAL */:
1491
- return 0 /* EC_SEARCH_LOCAL */;
1492
- case 1 /* GLOBAL */:
1493
- return 1 /* EC_SEARCH_GLOBAL */;
1494
- case 2 /* KAD */:
1495
- return 2 /* EC_SEARCH_KAD */;
1496
- case 3 /* WEB */:
1497
- return 3 /* EC_SEARCH_WEB */;
1498
- }
1499
- }
1500
- };
1501
- }
1502
- });
1503
-
1504
- // src/request/SearchStatusRequest.ts
1505
- var SearchStatusRequest_exports = {};
1506
- __export(SearchStatusRequest_exports, {
1507
- SearchStatusRequest: () => SearchStatusRequest
1508
- });
1509
- var SearchStatusRequest;
1510
- var init_SearchStatusRequest = __esm({
1511
- "src/request/SearchStatusRequest.ts"() {
1512
- "use strict";
1513
- init_Request();
1514
- init_Codes();
1515
- SearchStatusRequest = class extends Request {
1516
- constructor() {
1517
- super(41 /* EC_OP_SEARCH_PROGRESS */);
1518
- }
1519
- };
1520
- }
1521
- });
1522
-
1523
- // src/response/SearchProgressResponse.ts
1524
- var SearchProgressResponse_exports = {};
1525
- __export(SearchProgressResponse_exports, {
1526
- SearchProgressResponse: () => SearchProgressResponse
1527
- });
1528
- var SearchProgressResponse;
1529
- var init_SearchProgressResponse = __esm({
1530
- "src/response/SearchProgressResponse.ts"() {
1531
- "use strict";
1532
- init_Codes();
1533
- init_Tag();
1534
- SearchProgressResponse = class _SearchProgressResponse {
1535
- constructor(progress) {
1536
- this.progress = progress;
1537
- }
1538
- static fromPacket(packet) {
1539
- const progressTag = findNumericTag(packet.tags, 1800 /* EC_TAG_SEARCH_STATUS */);
1540
- const progress = progressTag ? Number(progressTag.getValue()) / 100 : 0;
1541
- return new _SearchProgressResponse(progress);
1542
- }
1543
- };
1544
- }
1545
- });
1546
-
1547
- // src/request/SearchResultsRequest.ts
1548
- var SearchResultsRequest_exports = {};
1549
- __export(SearchResultsRequest_exports, {
1550
- SearchResultsRequest: () => SearchResultsRequest
1551
- });
1552
- var SearchResultsRequest;
1553
- var init_SearchResultsRequest = __esm({
1554
- "src/request/SearchResultsRequest.ts"() {
1555
- "use strict";
1556
- init_Request();
1557
- init_Codes();
1558
- SearchResultsRequest = class extends Request {
1559
- constructor() {
1560
- super(40 /* EC_OP_SEARCH_RESULTS */);
1561
- }
1562
- };
1563
- }
1564
- });
1565
-
1566
- // src/response/SearchResultsResponse.ts
1567
- var SearchResultsResponse_exports = {};
1568
- __export(SearchResultsResponse_exports, {
1569
- SearchResultsResponseParser: () => SearchResultsResponseParser
1570
- });
1571
- var SearchResultsResponseParser;
1572
- var init_SearchResultsResponse = __esm({
1573
- "src/response/SearchResultsResponse.ts"() {
1574
- "use strict";
1575
- init_Codes();
1576
- init_Tag();
1577
- SearchResultsResponseParser = class {
1578
- static fromPacket(packet) {
1579
- const files = [];
1580
- const searchFileTags = packet.tags.filter((tag) => tag.name === 1792 /* EC_TAG_SEARCHFILE */);
1581
- for (const fileTag of searchFileTags) {
1582
- const nestedTags = fileTag.nestedTags || [];
1583
- const fileNameTag = findTag(nestedTags, 769 /* EC_TAG_PARTFILE_NAME */);
1584
- const hashTag = findTag(nestedTags, 798 /* EC_TAG_PARTFILE_HASH */);
1585
- const sizeTag = findNumericTag(nestedTags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */);
1586
- const sourceCountTag = findNumericTag(nestedTags, 778 /* EC_TAG_PARTFILE_SOURCE_COUNT */);
1587
- const completeSourcesTag = findNumericTag(nestedTags, 781 /* EC_TAG_PARTFILE_SOURCE_COUNT_XFER */);
1588
- const downloadStatusTag = findNumericTag(nestedTags, 776 /* EC_TAG_PARTFILE_STATUS */);
1589
- if (fileNameTag && hashTag) {
1590
- files.push({
1591
- fileName: fileNameTag.getValue(),
1592
- hash: hashTag.getValue(),
1593
- sizeFull: sizeTag ? Number(sizeTag.getLong()) : 0,
1594
- downloadStatus: downloadStatusTag ? downloadStatusTag.getInt() : 0,
1595
- completeSourceCount: completeSourcesTag ? completeSourcesTag.getInt() : 0,
1596
- sourceCount: sourceCountTag ? sourceCountTag.getInt() : 0
1597
- });
1598
- }
1599
- }
1600
- return { files };
1601
- }
1602
- };
1603
- }
1604
- });
1605
-
1606
- // src/request/SearchStopRequest.ts
1607
- var SearchStopRequest_exports = {};
1608
- __export(SearchStopRequest_exports, {
1609
- SearchStopRequest: () => SearchStopRequest
1610
- });
1611
- var SearchStopRequest;
1612
- var init_SearchStopRequest = __esm({
1613
- "src/request/SearchStopRequest.ts"() {
1614
- "use strict";
1615
- init_Request();
1616
- init_Codes();
1617
- SearchStopRequest = class extends Request {
1618
- constructor() {
1619
- super(39 /* EC_OP_SEARCH_STOP */);
1620
- }
1621
- };
1622
- }
1623
- });
1624
-
1625
- // src/request/DownloadFileRequest.ts
1626
- var DownloadFileRequest_exports = {};
1627
- __export(DownloadFileRequest_exports, {
1628
- DownloadFileRequest: () => DownloadFileRequest
1629
- });
1630
- var DownloadFileRequest;
1631
- var init_DownloadFileRequest = __esm({
1632
- "src/request/DownloadFileRequest.ts"() {
1633
- "use strict";
1634
- init_Request();
1635
- init_Codes();
1636
- init_Tag();
1637
- DownloadFileRequest = class extends Request {
1638
- constructor(hash) {
1639
- super(42 /* EC_OP_DOWNLOAD_SEARCH_RESULT */);
1640
- this.addTag(new Hash16Tag(768 /* EC_TAG_PARTFILE */, hash));
1641
- }
1642
- };
1643
- }
1644
- });
1645
-
1646
- // src/request/AddLinkRequest.ts
1647
- var AddLinkRequest_exports = {};
1648
- __export(AddLinkRequest_exports, {
1649
- AddLinkRequest: () => AddLinkRequest
1650
- });
1651
- var AddLinkRequest;
1652
- var init_AddLinkRequest = __esm({
1653
- "src/request/AddLinkRequest.ts"() {
1654
- "use strict";
1655
- init_Request();
1656
- init_Codes();
1657
- init_Tag();
1658
- AddLinkRequest = class extends Request {
1659
- constructor(link) {
1660
- super(9 /* EC_OP_ADD_LINK */);
1661
- this.addTag(new StringTag(782 /* EC_TAG_PARTFILE_ED2K_LINK */, link));
1662
- }
1663
- };
1664
- }
1665
- });
1666
-
1667
- // src/request/DownloadQueueRequest.ts
1668
- var DownloadQueueRequest_exports = {};
1669
- __export(DownloadQueueRequest_exports, {
1670
- DownloadQueueRequest: () => DownloadQueueRequest
1671
- });
1672
- var DownloadQueueRequest;
1673
- var init_DownloadQueueRequest = __esm({
1674
- "src/request/DownloadQueueRequest.ts"() {
1675
- "use strict";
1676
- init_Request();
1677
- init_Codes();
1678
- init_Tag();
1679
- DownloadQueueRequest = class extends Request {
1680
- constructor(detailLevel = 2 /* EC_DETAIL_FULL */) {
1681
- super(13 /* EC_OP_GET_DLOAD_QUEUE */);
1682
- this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, detailLevel));
1683
- }
1684
- };
1685
- }
1686
- });
1687
-
1688
- // src/request/SharedFilesRequest.ts
1689
- var SharedFilesRequest_exports = {};
1690
- __export(SharedFilesRequest_exports, {
1691
- SharedFilesRequest: () => SharedFilesRequest
1692
- });
1693
- var SharedFilesRequest;
1694
- var init_SharedFilesRequest = __esm({
1695
- "src/request/SharedFilesRequest.ts"() {
1696
- "use strict";
1697
- init_Request();
1698
- init_Codes();
1699
- init_Tag();
1700
- SharedFilesRequest = class extends Request {
1701
- constructor(detailLevel = 2 /* EC_DETAIL_FULL */) {
1702
- super(16 /* EC_OP_GET_SHARED_FILES */);
1703
- this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, detailLevel));
1704
- }
1705
- };
1706
- }
1707
- });
1708
-
1709
- // src/request/ClientQueueRequest.ts
1710
- var ClientQueueRequest_exports = {};
1711
- __export(ClientQueueRequest_exports, {
1712
- ClientQueueRequest: () => ClientQueueRequest
1713
- });
1714
- var ClientQueueRequest;
1715
- var init_ClientQueueRequest = __esm({
1716
- "src/request/ClientQueueRequest.ts"() {
1717
- "use strict";
1718
- init_Request();
1719
- init_Codes();
1720
- init_Tag();
1721
- ClientQueueRequest = class extends Request {
1722
- constructor(detailLevel = 2 /* EC_DETAIL_FULL */) {
1723
- super(14 /* EC_OP_GET_ULOAD_QUEUE */);
1724
- this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, detailLevel));
1725
- }
1726
- };
1727
- }
1728
- });
1729
-
1730
- // src/request/ServerListRequest.ts
1731
- var ServerListRequest_exports = {};
1732
- __export(ServerListRequest_exports, {
1733
- ServerListRequest: () => ServerListRequest
1734
- });
1735
- var ServerListRequest;
1736
- var init_ServerListRequest = __esm({
1737
- "src/request/ServerListRequest.ts"() {
1738
- "use strict";
1739
- init_Request();
1740
- init_Codes();
1741
- ServerListRequest = class extends Request {
1742
- constructor() {
1743
- super(44 /* EC_OP_GET_SERVER_LIST */);
1744
- }
1745
- };
1746
- }
1747
- });
1748
-
1749
- // src/request/ServerConnectRequest.ts
1750
- var ServerConnectRequest_exports = {};
1751
- __export(ServerConnectRequest_exports, {
1752
- ServerConnectRequest: () => ServerConnectRequest
1753
- });
1754
- var ServerConnectRequest;
1755
- var init_ServerConnectRequest = __esm({
1756
- "src/request/ServerConnectRequest.ts"() {
1757
- "use strict";
1758
- init_Request();
1759
- init_Codes();
1760
- init_Tag();
1761
- ServerConnectRequest = class extends Request {
1762
- constructor(ip, port) {
1763
- super(47 /* EC_OP_SERVER_CONNECT */);
1764
- if (ip && port) {
1765
- this.addTag(new Ipv4Tag(1280 /* EC_TAG_SERVER */, { address: ip, port }));
1766
- }
1767
- }
1768
- };
1769
- }
1770
- });
1771
-
1772
- // src/request/ServerDisconnectRequest.ts
1773
- var ServerDisconnectRequest_exports = {};
1774
- __export(ServerDisconnectRequest_exports, {
1775
- ServerDisconnectRequest: () => ServerDisconnectRequest
1776
- });
1777
- var ServerDisconnectRequest;
1778
- var init_ServerDisconnectRequest = __esm({
1779
- "src/request/ServerDisconnectRequest.ts"() {
1780
- "use strict";
1781
- init_Request();
1782
- init_Codes();
1783
- ServerDisconnectRequest = class extends Request {
1784
- constructor() {
1785
- super(46 /* EC_OP_SERVER_DISCONNECT */);
1786
- }
1787
- };
1788
- }
1789
- });
1790
-
1791
- // src/request/CreateCategoryRequest.ts
1792
- var CreateCategoryRequest_exports = {};
1793
- __export(CreateCategoryRequest_exports, {
1794
- CreateCategoryRequest: () => CreateCategoryRequest
1795
- });
1796
- var CreateCategoryRequest;
1797
- var init_CreateCategoryRequest = __esm({
1798
- "src/request/CreateCategoryRequest.ts"() {
1799
- "use strict";
1800
- init_Request();
1801
- init_Codes();
1802
- init_Tag();
1803
- CreateCategoryRequest = class extends Request {
1804
- constructor(category) {
1805
- super(65 /* EC_OP_CREATE_CATEGORY */);
1806
- const subtags = [
1807
- new StringTag(4354 /* EC_TAG_CATEGORY_TITLE */, category.name),
1808
- new StringTag(4355 /* EC_TAG_CATEGORY_PATH */, category.path),
1809
- new StringTag(4356 /* EC_TAG_CATEGORY_COMMENT */, category.comment),
1810
- new UIntTag(4357 /* EC_TAG_CATEGORY_COLOR */, category.color),
1811
- new UByteTag(4358 /* EC_TAG_CATEGORY_PRIO */, category.priority)
1812
- ];
1813
- this.addTag(new UIntTag(4353 /* EC_TAG_CATEGORY */, 0, subtags));
1814
- }
1815
- };
1816
- }
1817
- });
1818
-
1819
- // src/request/UpdateCategoryRequest.ts
1820
- var UpdateCategoryRequest_exports = {};
1821
- __export(UpdateCategoryRequest_exports, {
1822
- UpdateCategoryRequest: () => UpdateCategoryRequest
1823
- });
1824
- var UpdateCategoryRequest;
1825
- var init_UpdateCategoryRequest = __esm({
1826
- "src/request/UpdateCategoryRequest.ts"() {
1827
- "use strict";
1828
- init_Request();
1829
- init_Codes();
1830
- init_Tag();
1831
- UpdateCategoryRequest = class extends Request {
1832
- constructor(id, category) {
1833
- super(66 /* EC_OP_UPDATE_CATEGORY */);
1834
- const subtags = [
1835
- new StringTag(4354 /* EC_TAG_CATEGORY_TITLE */, category.name),
1836
- new StringTag(4355 /* EC_TAG_CATEGORY_PATH */, category.path),
1837
- new StringTag(4356 /* EC_TAG_CATEGORY_COMMENT */, category.comment),
1838
- new UIntTag(4357 /* EC_TAG_CATEGORY_COLOR */, category.color),
1839
- new UByteTag(4358 /* EC_TAG_CATEGORY_PRIO */, category.priority)
1840
- ];
1841
- this.addTag(new UIntTag(4353 /* EC_TAG_CATEGORY */, id, subtags));
1842
- }
1843
- };
1844
- }
1845
- });
1846
-
1847
- // src/request/DeleteCategoryRequest.ts
1848
- var DeleteCategoryRequest_exports = {};
1849
- __export(DeleteCategoryRequest_exports, {
1850
- DeleteCategoryRequest: () => DeleteCategoryRequest
1851
- });
1852
- var DeleteCategoryRequest;
1853
- var init_DeleteCategoryRequest = __esm({
1854
- "src/request/DeleteCategoryRequest.ts"() {
1855
- "use strict";
1856
- init_Request();
1857
- init_Codes();
1858
- init_Tag();
1859
- DeleteCategoryRequest = class extends Request {
1860
- constructor(id) {
1861
- super(67 /* EC_OP_DELETE_CATEGORY */);
1862
- this.addTag(new UIntTag(4353 /* EC_TAG_CATEGORY */, id));
1863
- }
1864
- };
1865
- }
1866
- });
1867
-
1868
- // src/request/GetPreferencesRequest.ts
1869
- var GetPreferencesRequest_exports = {};
1870
- __export(GetPreferencesRequest_exports, {
1871
- GetPreferencesRequest: () => GetPreferencesRequest
1872
- });
1873
- var GetPreferencesRequest;
1874
- var init_GetPreferencesRequest = __esm({
1875
- "src/request/GetPreferencesRequest.ts"() {
1876
- "use strict";
1877
- init_Request();
1878
- init_Codes();
1879
- init_Tag();
1880
- GetPreferencesRequest = class extends Request {
1881
- constructor(pref) {
1882
- super(63 /* EC_OP_GET_PREFERENCES */);
1883
- this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, 2 /* EC_DETAIL_FULL */));
1884
- this.addTag(new UIntTag(4096 /* EC_TAG_SELECT_PREFS */, pref));
1885
- }
1886
- };
1887
- }
1888
- });
1889
-
1890
- // src/response/PreferencesResponse.ts
1891
- var PreferencesResponse_exports = {};
1892
- __export(PreferencesResponse_exports, {
1893
- PreferencesResponse: () => PreferencesResponse,
1894
- PreferencesResponseParser: () => PreferencesResponseParser
1895
- });
1896
- var PreferencesResponse, PreferencesResponseParser;
1897
- var init_PreferencesResponse = __esm({
1898
- "src/response/PreferencesResponse.ts"() {
1899
- "use strict";
1900
- init_Codes();
1901
- init_Tag();
1902
- PreferencesResponse = class {
1903
- constructor(categories) {
1904
- this.categories = categories;
1905
- }
1906
- };
1907
- PreferencesResponseParser = class {
1908
- static fromPacket(packet) {
1909
- const categories = [];
1910
- const prefsCategoriesTag = findTag(packet.tags, 4352 /* EC_TAG_PREFS_CATEGORIES */);
1911
- if (prefsCategoriesTag && prefsCategoriesTag.nestedTags) {
1912
- for (const categoryTag of prefsCategoriesTag.nestedTags) {
1913
- if (categoryTag.name === 4353 /* EC_TAG_CATEGORY */) {
1914
- const nestedTags = categoryTag.nestedTags || [];
1915
- const idTag = categoryTag;
1916
- const nameTag = findTag(nestedTags, 4354 /* EC_TAG_CATEGORY_TITLE */);
1917
- const pathTag = findTag(nestedTags, 4355 /* EC_TAG_CATEGORY_PATH */);
1918
- const commentTag = findTag(nestedTags, 4356 /* EC_TAG_CATEGORY_COMMENT */);
1919
- const colorTag = findNumericTag(nestedTags, 4357 /* EC_TAG_CATEGORY_COLOR */);
1920
- const priorityTag = findNumericTag(nestedTags, 4358 /* EC_TAG_CATEGORY_PRIO */);
1921
- if (nameTag) {
1922
- categories.push({
1923
- id: idTag ? Number(idTag.getInt()) : 0,
1924
- name: nameTag.getValue() || "",
1925
- path: pathTag ? pathTag.getValue() : "",
1926
- comment: commentTag ? commentTag.getValue() : "",
1927
- color: colorTag ? Number(colorTag.getInt()) : 0,
1928
- priority: priorityTag ? Number(priorityTag.getInt()) : 0
1929
- });
1930
- }
1931
- }
1932
- }
1933
- }
1934
- return new PreferencesResponse(categories);
1935
- }
1936
- };
1937
- }
1938
- });
1939
-
1940
- // src/request/SetFileCategoryRequest.ts
1941
- var SetFileCategoryRequest_exports = {};
1942
- __export(SetFileCategoryRequest_exports, {
1943
- SetFileCategoryRequest: () => SetFileCategoryRequest
1944
- });
1945
- var SetFileCategoryRequest;
1946
- var init_SetFileCategoryRequest = __esm({
1947
- "src/request/SetFileCategoryRequest.ts"() {
1948
- "use strict";
1949
- init_Request();
1950
- init_Codes();
1951
- init_Tag();
1952
- SetFileCategoryRequest = class extends Request {
1953
- constructor(hash, categoryId) {
1954
- super(30 /* EC_OP_PARTFILE_SET_CAT */);
1955
- this.addTag(new Hash16Tag(768 /* EC_TAG_PARTFILE */, hash, [new UByteTag(783 /* EC_TAG_PARTFILE_CAT */, categoryId)]));
1956
- }
1957
- };
1958
- }
1959
- });
1960
-
1961
- // src/request/DownloadCommandRequest.ts
1962
- var DownloadCommandRequest_exports = {};
1963
- __export(DownloadCommandRequest_exports, {
1964
- DownloadCommandRequest: () => DownloadCommandRequest
1965
- });
1966
- var DownloadCommandRequest;
1967
- var init_DownloadCommandRequest = __esm({
1968
- "src/request/DownloadCommandRequest.ts"() {
1969
- "use strict";
1970
- init_Request();
1971
- init_Codes();
1972
- init_Tag();
1973
- init_model();
1974
- DownloadCommandRequest = class _DownloadCommandRequest extends Request {
1975
- constructor(hash, command) {
1976
- super(_DownloadCommandRequest.commandToOpCode(command));
1977
- this.addTag(new Hash16Tag(768 /* EC_TAG_PARTFILE */, hash));
1978
- }
1979
- static commandToOpCode(command) {
1980
- switch (command) {
1981
- case 22 /* SWAP_A4AF_THIS */:
1982
- return 22 /* EC_OP_PARTFILE_SWAP_A4AF_THIS */;
1983
- case 23 /* SWAP_A4AF_THIS_AUTO */:
1984
- return 23 /* EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO */;
1985
- case 24 /* SWAP_A4AF_OTHERS */:
1986
- return 24 /* EC_OP_PARTFILE_SWAP_A4AF_OTHERS */;
1987
- case 25 /* PAUSE */:
1988
- return 25 /* EC_OP_PARTFILE_PAUSE */;
1989
- case 26 /* RESUME */:
1990
- return 26 /* EC_OP_PARTFILE_RESUME */;
1991
- case 27 /* STOP */:
1992
- return 27 /* EC_OP_PARTFILE_STOP */;
1993
- case 29 /* DELETE */:
1994
- return 29 /* EC_OP_PARTFILE_DELETE */;
1995
- default:
1996
- throw new Error(`Unknown download command: ${command}`);
1997
- }
1998
- }
1999
- };
2000
- }
2001
- });
2002
-
2003
- // src/client/AmuleConnection.ts
2004
- import * as net from "net";
2005
-
2006
- // src/exceptions/index.ts
2007
- var AmuleException = class extends Error {
2008
- constructor(message, cause) {
2009
- super(message);
2010
- this.cause = cause;
2011
- this.name = "AmuleException";
2012
- }
2013
- };
2014
- var InvalidECException = class extends AmuleException {
2015
- constructor(message, cause) {
2016
- super(message, cause);
2017
- this.name = "InvalidECException";
2018
- }
2019
- };
2020
- var CommunicationException = class extends AmuleException {
2021
- constructor(message, cause) {
2022
- super(message, cause);
2023
- this.name = "CommunicationException";
2024
- }
2025
- };
2026
- var ServerException = class extends AmuleException {
2027
- constructor(message, cause) {
2028
- super(message, cause);
2029
- this.name = "ServerException";
2030
- }
2031
- };
2032
-
2033
- // src/ec/packet/PacketParser.ts
2034
- init_Packet();
2035
- init_Flags();
2036
- import * as zlib from "zlib";
2037
-
2038
- // src/ec/tag/TagParser.ts
2039
- init_Codes();
2040
- init_Tag();
2041
-
2042
- // src/ec/Encoding.ts
2043
- function readUtf8Number(buffer, offset) {
2044
- const firstByte = buffer[offset];
2045
- let length;
2046
- if ((firstByte & 128) === 0) {
2047
- length = 1;
2048
- } else if ((firstByte & 224) === 192) {
2049
- length = 2;
2050
- } else if ((firstByte & 240) === 224) {
2051
- length = 3;
2052
- } else if ((firstByte & 248) === 240) {
2053
- length = 4;
2054
- } else {
2055
- throw new Error(`Invalid UTF-8 first byte: 0x${firstByte.toString(16)}`);
2056
- }
2057
- const utf8Bytes = buffer.subarray(offset, offset + length);
2058
- const str = utf8Bytes.toString("utf-8");
2059
- const codePoint = str.codePointAt(0);
2060
- if (codePoint === void 0) {
2061
- throw new Error("Failed to decode UTF-8 number");
2062
- }
2063
- return {
2064
- value: BigInt(codePoint),
2065
- newOffset: offset + length
2066
- };
2067
- }
2068
- function encodeUtf8Number(value) {
2069
- const num = Number(value);
2070
- const str = String.fromCodePoint(num);
2071
- return Buffer.from(str, "utf-8");
2072
- }
2073
- function numberLength(value) {
2074
- const num = Number(value);
2075
- if (num < 128) {
2076
- return 1;
2077
- } else if (num < 2048) {
2078
- return 2;
2079
- } else if (num < 65536) {
2080
- return 3;
2081
- } else if (num < 1114112) {
2082
- return 4;
2083
- } else {
2084
- throw new Error(`Code point out of range: ${num}`);
2085
- }
2086
- }
2087
-
2088
- // src/ec/tag/TagParser.ts
2089
- var TAG_NAME_SIZE = 2;
2090
- var TAG_TYPE_SIZE = 1;
2091
- var TAG_LENGTH_SIZE = 4;
2092
- var SUBTAG_COUNT_SIZE = 2;
2093
- var TagParser = class {
2094
- buffer;
2095
- offset;
2096
- useUtf8Numbers;
2097
- constructor(buffer, offset = 0, useUtf8Numbers = false) {
2098
- this.buffer = buffer;
2099
- this.offset = offset;
2100
- this.useUtf8Numbers = useUtf8Numbers;
2101
- }
2102
- /**
2103
- * Parse a single tag from the current position
2104
- */
2105
- parseTag() {
2106
- return this.parseTagWithMetadata().tag;
2107
- }
2108
- /**
2109
- * Internal parse that returns metadata needed for nested tag calculation
2110
- */
2111
- parseTagWithMetadata() {
2112
- const tagNameAndSubtags = this.readNumber(TAG_NAME_SIZE);
2113
- const tagNameRaw = tagNameAndSubtags >> 1 & 65535;
2114
- const tagName = tagNameRaw;
2115
- const hasSubtags = (tagNameAndSubtags & 1) !== 0;
2116
- const tagType = this.buffer.readUInt8(this.offset);
2117
- this.offset += TAG_TYPE_SIZE;
2118
- const tagLength = this.readNumber(TAG_LENGTH_SIZE);
2119
- let valueStartIndex = this.offset;
2120
- const subTags = [];
2121
- let theoreticalLength = 0;
2122
- let valueEndIndex;
2123
- if (!hasSubtags) {
2124
- valueEndIndex = valueStartIndex + tagLength - 1;
2125
- } else {
2126
- const subTagCount = this.readNumber(SUBTAG_COUNT_SIZE);
2127
- valueStartIndex = this.offset;
2128
- for (let i = 0; i < subTagCount; i++) {
2129
- const result = this.parseTagWithMetadata();
2130
- subTags.push(result.tag);
2131
- theoreticalLength += result.theoreticalLength;
2132
- }
2133
- if (subTags.length > subTagCount) {
2134
- throw new InvalidECException(`Error parsing subtags list - Expected subtags ${subTagCount} found subtags ${subTags.length}`);
2135
- }
2136
- valueEndIndex = this.offset + (tagLength - theoreticalLength - 1);
2137
- theoreticalLength += SUBTAG_COUNT_SIZE;
2138
- }
2139
- const valueSize = valueEndIndex - this.offset + 1;
2140
- const tagValue = this.buffer.subarray(this.offset, this.offset + valueSize);
2141
- this.offset += valueSize;
2142
- theoreticalLength += tagValue.length;
2143
- theoreticalLength += TAG_NAME_SIZE;
2144
- theoreticalLength += TAG_TYPE_SIZE;
2145
- theoreticalLength += TAG_LENGTH_SIZE;
2146
- const tag = this.createTagFromValue(tagName, tagType, tagValue);
2147
- if (subTags.length > 0) {
2148
- tag.nestedTags = subTags;
2149
- }
2150
- return {
2151
- tag,
2152
- theoreticalLength,
2153
- endIndex: this.offset - 1
2154
- };
2155
- }
2156
- /**
2157
- * Parse multiple tags
2158
- */
2159
- parseTags(count) {
2160
- const tags = [];
2161
- for (let i = 0; i < count; i++) {
2162
- tags.push(this.parseTag());
2163
- }
2164
- return tags;
2165
- }
2166
- /**
2167
- * Read a number with the given fixed size.
2168
- * In UTF-8 mode, reads as UTF-8 codepoint. Otherwise reads as big-endian integer.
2169
- */
2170
- readNumber(fixedSize) {
2171
- if (this.useUtf8Numbers) {
2172
- const result = readUtf8Number(this.buffer, this.offset);
2173
- this.offset = result.newOffset;
2174
- return Number(result.value);
2175
- } else {
2176
- let value;
2177
- switch (fixedSize) {
2178
- case 1:
2179
- value = this.buffer.readUInt8(this.offset);
2180
- break;
2181
- case 2:
2182
- value = this.buffer.readUInt16BE(this.offset);
2183
- break;
2184
- case 4:
2185
- value = this.buffer.readUInt32BE(this.offset);
2186
- break;
2187
- default:
2188
- throw new InvalidECException(`Unsupported number size: ${fixedSize}`);
2189
- }
2190
- this.offset += fixedSize;
2191
- return value;
2192
- }
2193
- }
2194
- /**
2195
- * Create a tag instance based on type and raw value bytes
2196
- */
2197
- createTagFromValue(name, type, value) {
2198
- switch (type) {
2199
- case 1 /* EC_TAGTYPE_CUSTOM */:
2200
- return new CustomTag(name, value);
2201
- case 2 /* EC_TAGTYPE_UINT8 */: {
2202
- const numValue2 = value.length > 0 ? value.readUInt8(0) : 0;
2203
- return new UByteTag(name, numValue2);
2204
- }
2205
- case 3 /* EC_TAGTYPE_UINT16 */: {
2206
- const numValue2 = value.length >= 2 ? value.readUInt16BE(0) : 0;
2207
- return new UShortTag(name, numValue2);
2208
- }
2209
- case 4 /* EC_TAGTYPE_UINT32 */: {
2210
- const numValue2 = value.length >= 4 ? value.readUInt32BE(0) : 0;
2211
- return new UIntTag(name, numValue2);
2212
- }
2213
- case 5 /* EC_TAGTYPE_UINT64 */: {
2214
- const numValue2 = value.length >= 8 ? value.readBigUInt64BE(0) : 0n;
2215
- return new ULongTag(name, numValue2);
2216
- }
2217
- case 10 /* EC_TAGTYPE_UINT128 */:
2218
- const numValue = value.length >= 16 ? this.parseUInt128(value) : 0n;
2219
- return new UInt128Tag(name, numValue);
2220
- case 6 /* EC_TAGTYPE_STRING */: {
2221
- const strValue = value[value.length - 1] === 0 ? value.toString("utf-8", 0, value.length - 1) : value.toString("utf-8");
2222
- return new StringTag(name, strValue);
2223
- }
2224
- case 7 /* EC_TAGTYPE_DOUBLE */: {
2225
- const numValue2 = value.length >= 8 ? value.readDoubleBE(0) : 0;
2226
- return new DoubleTag(name, numValue2);
2227
- }
2228
- case 8 /* EC_TAGTYPE_IPV4 */: {
2229
- if (value.length !== 6) {
2230
- throw new InvalidECException(`Ipv4Tag value must be 6 bytes long, got ${value.length}`);
2231
- }
2232
- const address = `${value[0]}.${value[1]}.${value[2]}.${value[3]}`;
2233
- const port = value.readUInt16BE(4);
2234
- const tag = new Ipv4Tag(name);
2235
- tag["value"] = { address, port };
2236
- return tag;
2237
- }
2238
- case 9 /* EC_TAGTYPE_HASH16 */:
2239
- return new Hash16Tag(name, value);
2240
- case 0 /* EC_TAGTYPE_UNKNOWN */:
2241
- default:
2242
- throw new InvalidECException(`Unknown tag type: ${type} for tag ${name}`);
2243
- }
2244
- }
2245
- parseUInt128(value) {
2246
- if (value.length < 16) {
2247
- throw new InvalidECException(`UInt128 value must be at least 16 bytes long, got ${value.length}`);
2248
- }
2249
- return value.readBigUInt64BE(0) << 64n | value.readBigUInt64BE(8);
2250
- }
2251
- /**
2252
- * Get current offset
2253
- */
2254
- getOffset() {
2255
- return this.offset;
2256
- }
2257
- };
2258
-
2259
- // src/ec/packet/PacketParser.ts
2260
- var PacketParser = class {
2261
- static HEADER_SIZE = 8;
2262
- // flags(4) + data_length(4)
2263
- /**
2264
- * Parse a packet from a buffer
2265
- */
2266
- static parse(buffer) {
2267
- if (buffer.length < this.HEADER_SIZE) {
2268
- throw new InvalidECException(`Buffer too small: ${buffer.length} bytes`);
2269
- }
2270
- const flags = Flags.fromBuffer(buffer, 0);
2271
- const dataLength = buffer.readUInt32BE(4);
2272
- if (buffer.length < this.HEADER_SIZE + dataLength) {
2273
- throw new InvalidECException(`Incomplete packet: expected ${this.HEADER_SIZE + dataLength} bytes, got ${buffer.length}`);
2274
- }
2275
- let data = buffer.subarray(this.HEADER_SIZE, this.HEADER_SIZE + dataLength);
2276
- if (flags.isZlib()) {
2277
- data = this.decompress(data);
2278
- }
2279
- return this.parsePacketData(data, flags);
2280
- }
2281
- /**
2282
- * Parse packet data (after decompression)
2283
- */
2284
- static parsePacketData(data, flags) {
2285
- let offset = 0;
2286
- const opCode = data.readUInt8(offset);
2287
- offset += 1;
2288
- const useUtf8 = flags.isUtf8Numbers();
2289
- let tagCount;
2290
- if (useUtf8) {
2291
- tagCount = data.readUInt8(offset);
2292
- offset += 1;
2293
- } else {
2294
- tagCount = data.readUInt16BE(offset);
2295
- offset += 2;
2296
- }
2297
- const tagParser = new TagParser(data, offset, useUtf8);
2298
- const tags = tagParser.parseTags(tagCount);
2299
- return new Packet(opCode, flags, tags);
2300
- }
2301
- /**
2302
- * Decompress ZLIB data
2303
- */
2304
- static decompress(data) {
2305
- try {
2306
- return zlib.inflateSync(data);
2307
- } catch (error) {
2308
- throw new InvalidECException(`Failed to decompress packet: ${error}`);
2309
- }
2310
- }
2311
- /**
2312
- * Calculate expected packet size from header
2313
- */
2314
- static getExpectedPacketSize(headerBuffer) {
2315
- if (headerBuffer.length < this.HEADER_SIZE) {
2316
- throw new InvalidECException("Header buffer too small");
2317
- }
2318
- const dataLength = headerBuffer.readUInt32BE(4);
2319
- return this.HEADER_SIZE + dataLength;
2320
- }
2321
- /**
2322
- * Check if buffer contains a complete packet
2323
- */
2324
- static hasCompletePacket(buffer) {
2325
- if (buffer.length < this.HEADER_SIZE) {
2326
- return false;
2327
- }
2328
- const expectedSize = this.getExpectedPacketSize(buffer);
2329
- return buffer.length >= expectedSize;
2330
- }
2331
- };
2332
-
2333
- // src/ec/packet/PacketWriter.ts
2334
- import * as zlib2 from "zlib";
2335
-
2336
- // src/ec/tag/TagEncoder.ts
2337
- init_Codes();
2338
- var TagEncoder = class {
2339
- useUtf8Numbers;
2340
- constructor(useUtf8Numbers = false) {
2341
- this.useUtf8Numbers = useUtf8Numbers;
2342
- }
2343
- /**
2344
- * Calculate total size needed for a tag (Physical Buffer Size)
2345
- */
2346
- calculateTagSize(tag) {
2347
- let size = 0;
2348
- if (this.useUtf8Numbers) {
2349
- const hasSubtags2 = (tag.nestedTags?.length ?? 0) > 0 ? 1 : 0;
2350
- const nameAndSubtags = (tag.name & 65535) << 1 | hasSubtags2;
2351
- size += numberLength(nameAndSubtags);
2352
- } else {
2353
- size += 2;
2354
- }
2355
- size += 1;
2356
- const reportedLength = this.calculateReportedLength(tag);
2357
- if (this.useUtf8Numbers) {
2358
- size += numberLength(reportedLength);
2359
- } else {
2360
- size += 4;
2361
- }
2362
- const hasSubtags = (tag.nestedTags?.length ?? 0) > 0;
2363
- if (hasSubtags) {
2364
- const nestedCount = tag.nestedTags?.length ?? 0;
2365
- if (this.useUtf8Numbers) {
2366
- size += numberLength(nestedCount);
2367
- } else {
2368
- size += 2;
2369
- }
2370
- }
2371
- if (tag.nestedTags) {
2372
- for (const nestedTag of tag.nestedTags) {
2373
- size += this.calculateTagSize(nestedTag);
2374
- }
2375
- }
2376
- size += this.calculateValueSize(tag);
2377
- return size;
2378
- }
2379
- /**
2380
- * Calculate the "Reported Length" of the tag content.
2381
- * This logic mimics Jamule's computeTagLength, which assumes FIXED header sizes
2382
- * (2 bytes name, 1 byte type, 4 bytes length, 2 bytes subtag count)
2383
- * even when UTF-8 encoding is used.
2384
- */
2385
- calculateReportedLength(tag) {
2386
- let length = 0;
2387
- if (tag.nestedTags) {
2388
- for (const nestedTag of tag.nestedTags) {
2389
- length += this.calculateReportedLength(nestedTag);
2390
- length += 7;
2391
- if ((nestedTag.nestedTags?.length ?? 0) > 0) {
2392
- length += 2;
2393
- }
2394
- }
2395
- }
2396
- length += this.calculateValueSize(tag);
2397
- return length;
2398
- }
2399
- /**
2400
- * Calculate size of tag value
2401
- */
2402
- calculateValueSize(tag) {
2403
- const encoded = tag.encodeValue();
2404
- switch (tag.type) {
2405
- case 1 /* EC_TAGTYPE_CUSTOM */:
2406
- if (encoded.length === 0) {
2407
- return 0;
2408
- }
2409
- return encoded.length;
2410
- case 6 /* EC_TAGTYPE_STRING */:
2411
- return encoded.length;
2412
- case 2 /* EC_TAGTYPE_UINT8 */:
2413
- return 1;
2414
- case 3 /* EC_TAGTYPE_UINT16 */:
2415
- return 2;
2416
- case 4 /* EC_TAGTYPE_UINT32 */:
2417
- return 4;
2418
- case 5 /* EC_TAGTYPE_UINT64 */:
2419
- return 8;
2420
- case 10 /* EC_TAGTYPE_UINT128 */:
2421
- return 16;
2422
- case 7 /* EC_TAGTYPE_DOUBLE */:
2423
- return 8;
2424
- case 8 /* EC_TAGTYPE_IPV4 */:
2425
- return 6;
2426
- // 4 bytes IP + 2 bytes port
2427
- case 9 /* EC_TAGTYPE_HASH16 */:
2428
- return 16;
2429
- default:
2430
- return 0;
2431
- }
2432
- }
2433
- /**
2434
- * Encode a tag to a buffer
2435
- */
2436
- encodeTag(tag, buffer, offset) {
2437
- let currentOffset = offset;
2438
- const hasSubtags = (tag.nestedTags?.length ?? 0) > 0 ? 1 : 0;
2439
- const nameAndSubtags = (tag.name & 65535) << 1 | hasSubtags;
2440
- if (this.useUtf8Numbers) {
2441
- const encoded = encodeUtf8Number(nameAndSubtags);
2442
- encoded.copy(buffer, currentOffset);
2443
- currentOffset += encoded.length;
2444
- } else {
2445
- buffer.writeUInt16BE(nameAndSubtags, currentOffset);
2446
- currentOffset += 2;
2447
- }
2448
- buffer.writeUInt8(tag.type, currentOffset);
2449
- currentOffset += 1;
2450
- const tagLength = this.calculateReportedLength(tag);
2451
- if (this.useUtf8Numbers) {
2452
- const encoded = encodeUtf8Number(tagLength);
2453
- encoded.copy(buffer, currentOffset);
2454
- currentOffset += encoded.length;
2455
- } else {
2456
- buffer.writeUInt32BE(tagLength, currentOffset);
2457
- currentOffset += 4;
2458
- }
2459
- const nestedCount = tag.nestedTags?.length ?? 0;
2460
- if (hasSubtags) {
2461
- if (this.useUtf8Numbers) {
2462
- const encoded = encodeUtf8Number(nestedCount);
2463
- encoded.copy(buffer, currentOffset);
2464
- currentOffset += encoded.length;
2465
- } else {
2466
- buffer.writeUInt16BE(nestedCount, currentOffset);
2467
- currentOffset += 2;
2468
- }
2469
- }
2470
- if (tag.nestedTags) {
2471
- for (const nestedTag of tag.nestedTags) {
2472
- currentOffset = this.encodeTag(nestedTag, buffer, currentOffset);
2473
- }
2474
- }
2475
- currentOffset = this.encodeValue(tag, buffer, currentOffset);
2476
- return currentOffset;
2477
- }
2478
- /**
2479
- * Encode tag value to buffer
2480
- */
2481
- encodeValue(tag, buffer, offset) {
2482
- const encoded = tag.encodeValue();
2483
- switch (tag.type) {
2484
- case 1 /* EC_TAGTYPE_CUSTOM */:
2485
- if (encoded.length > 0) {
2486
- encoded.copy(buffer, offset);
2487
- return offset + encoded.length;
2488
- }
2489
- return offset;
2490
- // Empty custom tag, no data to write
2491
- case 2 /* EC_TAGTYPE_UINT8 */:
2492
- case 3 /* EC_TAGTYPE_UINT16 */:
2493
- case 4 /* EC_TAGTYPE_UINT32 */:
2494
- case 5 /* EC_TAGTYPE_UINT64 */:
2495
- case 6 /* EC_TAGTYPE_STRING */:
2496
- case 7 /* EC_TAGTYPE_DOUBLE */:
2497
- case 8 /* EC_TAGTYPE_IPV4 */:
2498
- case 9 /* EC_TAGTYPE_HASH16 */:
2499
- case 10 /* EC_TAGTYPE_UINT128 */:
2500
- encoded.copy(buffer, offset);
2501
- return offset + encoded.length;
2502
- default:
2503
- return offset;
2504
- }
2505
- }
2506
- /**
2507
- * Encode multiple tags
2508
- */
2509
- encodeTags(tags) {
2510
- let totalSize = 0;
2511
- for (const tag of tags) {
2512
- totalSize += this.calculateTagSize(tag);
2513
- }
2514
- const buffer = Buffer.allocUnsafe(totalSize);
2515
- let offset = 0;
2516
- for (const tag of tags) {
2517
- offset = this.encodeTag(tag, buffer, offset);
2518
- }
2519
- return buffer;
2520
- }
2521
- };
2522
-
2523
- // src/ec/packet/PacketWriter.ts
2524
- var PacketWriter = class {
2525
- static HEADER_SIZE = 8;
2526
- // flags(4) + data_length(4)
2527
- /**
2528
- * Write a packet to a buffer
2529
- */
2530
- static write(packet) {
2531
- const useUtf8 = packet.flags.isUtf8Numbers();
2532
- const useZlib = packet.flags.isZlib();
2533
- let data = this.encodePacketData(packet, useUtf8);
2534
- if (useZlib) {
2535
- data = this.compress(data);
2536
- }
2537
- const buffer = Buffer.allocUnsafe(this.HEADER_SIZE + data.length);
2538
- packet.flags.writeToBuffer(buffer, 0);
2539
- buffer.writeUInt32BE(data.length, 4);
2540
- data.copy(buffer, this.HEADER_SIZE);
2541
- return buffer;
2542
- }
2543
- /**
2544
- * Encode packet data (before compression)
2545
- */
2546
- static encodePacketData(packet, useUtf8) {
2547
- const encoder = new TagEncoder(useUtf8);
2548
- let size = 1;
2549
- if (useUtf8) {
2550
- const countBuf = encodeUtf8Number(packet.tags.length);
2551
- size += countBuf.length;
2552
- } else {
2553
- size += 2;
2554
- }
2555
- for (const tag of packet.tags) {
2556
- size += encoder.calculateTagSize(tag);
2557
- }
2558
- const buffer = Buffer.allocUnsafe(size);
2559
- let offset = 0;
2560
- buffer.writeUInt8(packet.opCode, offset);
2561
- offset += 1;
2562
- if (useUtf8) {
2563
- const countBuf = encodeUtf8Number(packet.tags.length);
2564
- countBuf.copy(buffer, offset);
2565
- offset += countBuf.length;
2566
- } else {
2567
- buffer.writeUInt16BE(packet.tags.length, offset);
2568
- offset += 2;
2569
- }
2570
- for (const tag of packet.tags) {
2571
- offset = encoder.encodeTag(tag, buffer, offset);
2572
- }
2573
- return buffer;
2574
- }
2575
- /**
2576
- * Compress data with ZLIB
2577
- */
2578
- static compress(data) {
2579
- return zlib2.deflateSync(data, {
2580
- level: zlib2.constants.Z_BEST_COMPRESSION
2581
- });
2582
- }
2583
- };
2584
-
2585
- // src/client/AmuleConnection.ts
2586
- init_Codes();
2587
-
2588
- // src/request/AuthRequest.ts
2589
- init_Request();
2590
- init_Codes();
2591
- init_Tag();
2592
- var AuthClientInfoRequest = class extends Request {
2593
- constructor(clientName = "amule-ts-client", clientVersion = "1.0.0") {
2594
- super(2 /* EC_OP_AUTH_REQ */);
2595
- this.addTag(new StringTag(256 /* EC_TAG_CLIENT_NAME */, clientName));
2596
- this.addTag(new StringTag(257 /* EC_TAG_CLIENT_VERSION */, clientVersion));
2597
- this.addTag(new UShortTag(2 /* EC_TAG_PROTOCOL_VERSION */, 516));
2598
- this.addTag(new CustomTag(12 /* EC_TAG_CAN_ZLIB */, Buffer.alloc(0)));
2599
- this.addTag(new CustomTag(13 /* EC_TAG_CAN_UTF8_NUMBERS */, Buffer.alloc(0)));
2600
- }
2601
- };
2602
- var AuthPasswordRequest = class extends Request {
2603
- constructor(hashedPassword) {
2604
- super(80 /* EC_OP_AUTH_PASSWD */);
2605
- this.addTag(new Hash16Tag(1 /* EC_TAG_PASSWD_HASH */, hashedPassword));
2606
- }
2607
- };
2608
-
2609
- // src/response/AuthSaltResponse.ts
2610
- init_Codes();
2611
- init_Tag();
2612
- var AuthSaltResponse = class _AuthSaltResponse {
2613
- constructor(salt) {
2614
- this.salt = salt;
2615
- }
2616
- static fromPacket(packet) {
2617
- const saltTag = findNumericTag(packet.tags, 11 /* EC_TAG_PASSWD_SALT */);
2618
- if (!saltTag) {
2619
- throw new InvalidECException("Missing salt tag in auth salt response");
2620
- }
2621
- return new _AuthSaltResponse(saltTag.getLong());
2622
- }
2623
- };
2624
-
2625
- // src/auth/PasswordHasher.ts
2626
- import * as crypto from "crypto";
2627
- var PasswordHasher = class {
2628
- /**
2629
- * Hash a password with salt using MD5
2630
- *
2631
- * This matches aMule's password hashing algorithm (from jamule):
2632
- * 1. saltHash = MD5(salt.toHexString().uppercase())
2633
- * 2. passwordHash = MD5(password)
2634
- * 3. return MD5(passwordHash.toHex().lowercase() + saltHash.toHex().lowercase())
2635
- *
2636
- * @param password The password to hash
2637
- * @param salt The salt received from the server
2638
- * @returns The hashed password as a Buffer
2639
- */
2640
- static hash(password, salt) {
2641
- const saltHexUpper = salt.toString(16).toUpperCase().padStart(16, "0");
2642
- const saltHash = crypto.createHash("md5").update(saltHexUpper, "utf-8").digest();
2643
- const passwordHash = crypto.createHash("md5").update(password, "utf-8").digest();
2644
- const passwordHashHex = passwordHash.toString("hex").toLowerCase();
2645
- const saltHashHex = saltHash.toString("hex").toLowerCase();
2646
- const finalHash = crypto.createHash("md5").update(passwordHashHex + saltHashHex, "utf-8").digest();
2647
- return finalHash;
2648
- }
2649
- /**
2650
- * Hash a password without salt (for testing)
2651
- */
2652
- static hashWithoutSalt(password) {
2653
- const lowerPassword = password.toLowerCase();
2654
- const md5Hash = crypto.createHash("md5");
2655
- md5Hash.update(lowerPassword, "utf-8");
2656
- return md5Hash.digest();
2657
- }
2658
- };
2659
-
2660
- // src/client/AmuleConnection.ts
2661
- var AmuleConnection = class {
2662
- constructor(host, port, password, timeout) {
2663
- this.host = host;
2664
- this.port = port;
2665
- this.password = password;
2666
- this.timeout = timeout;
2667
- }
2668
- socket;
2669
- connected = false;
2670
- buffer = Buffer.allocUnsafe(0);
2671
- pendingResponses = [];
2672
- connectionPromise;
2673
- // Debug logging flag (disabled by default)
2674
- debug = false;
2675
- /**
2676
- * Enable or disable debug logging
2677
- */
2678
- setDebug(enabled) {
2679
- this.debug = !!enabled;
2680
- }
2681
- /**
2682
- * Internal debug logger
2683
- */
2684
- log(...args) {
2685
- if (!this.debug) {
2686
- return;
2687
- }
2688
- console.log("[DEBUG]", ...args);
2689
- }
2690
- /**
2691
- * Reconnect to the server
2692
- */
2693
- async reconnect() {
2694
- if (this.connectionPromise) {
2695
- return this.connectionPromise;
2696
- }
2697
- this.connectionPromise = (async () => {
2698
- this.connected = false;
2699
- if (this.socket) {
2700
- this.socket.destroy();
2701
- }
2702
- this.socket = new net.Socket();
2703
- if (this.timeout > 0) {
2704
- this.socket.setTimeout(this.timeout);
2705
- }
2706
- this.socket.on("data", (data) => this.handleData(Buffer.isBuffer(data) ? data : Buffer.from(data)));
2707
- this.socket.on("error", (error) => this.handleError(error));
2708
- this.socket.on("timeout", () => this.handleTimeout());
2709
- this.socket.on("close", () => this.handleClose());
2710
- try {
2711
- await this.connectSocket();
2712
- await this.authenticate();
2713
- this.connected = true;
2714
- } finally {
2715
- this.connectionPromise = void 0;
2716
- }
2717
- })();
2718
- return this.connectionPromise;
2719
- }
2720
- /**
2721
- * Connect socket to server
2722
- */
2723
- connectSocket() {
2724
- return new Promise((resolve, reject) => {
2725
- if (!this.socket) {
2726
- return reject(new CommunicationException("Socket not initialized"));
2727
- }
2728
- this.socket.connect(this.port, this.host, () => {
2729
- resolve();
2730
- });
2731
- this.socket.once("error", reject);
2732
- });
2733
- }
2734
- /**
2735
- * Perform authentication handshake
2736
- */
2737
- async authenticate() {
2738
- this.log("Starting authentication...");
2739
- const clientInfoRequest = new AuthClientInfoRequest();
2740
- this.log("Sending client info...");
2741
- const saltPacket = await this.sendRequestNoAuth(clientInfoRequest);
2742
- this.log("Received salt response");
2743
- if (saltPacket.opCode === 3 /* EC_OP_AUTH_FAIL */) {
2744
- throw new ServerException("Authentication failed: server rejected client");
2745
- }
2746
- if (saltPacket.opCode !== 79 /* EC_OP_AUTH_SALT */) {
2747
- throw new ServerException(`Unexpected response to client info: ${saltPacket.opCode}`);
2748
- }
2749
- const saltResponse = AuthSaltResponse.fromPacket(saltPacket);
2750
- this.log("Salt:", saltResponse.salt);
2751
- const hashedPassword = PasswordHasher.hash(this.password, saltResponse.salt);
2752
- this.log("Hashed password:", hashedPassword.toString("hex"));
2753
- const authRequest = new AuthPasswordRequest(hashedPassword);
2754
- this.log("Sending hashed password...");
2755
- const authPacket = await this.sendRequestNoAuth(authRequest);
2756
- this.log("Received auth response");
2757
- if (authPacket.opCode === 3 /* EC_OP_AUTH_FAIL */) {
2758
- throw new ServerException("Authentication failed: invalid password");
2759
- }
2760
- if (authPacket.opCode !== 4 /* EC_OP_AUTH_OK */) {
2761
- throw new ServerException(`Unexpected auth response: ${authPacket.opCode}`);
2762
- }
2763
- this.log("Authentication successful!");
2764
- }
2765
- /**
2766
- * Handle incoming data
2767
- */
2768
- handleData(data) {
2769
- this.log("Received data:", data.length, "bytes, hex:", data.toString("hex").substring(0, 100));
2770
- this.buffer = Buffer.concat([this.buffer, data]);
2771
- while (PacketParser.hasCompletePacket(this.buffer)) {
2772
- try {
2773
- const packet = PacketParser.parse(this.buffer);
2774
- this.log("Parsed packet, opCode:", packet.opCode);
2775
- const consumedBytes = PacketParser.getExpectedPacketSize(this.buffer);
2776
- this.buffer = this.buffer.subarray(consumedBytes);
2777
- const pending = this.pendingResponses.shift();
2778
- if (pending) {
2779
- pending.resolve(packet);
2780
- }
2781
- } catch (error) {
2782
- this.log("Parse error:", error);
2783
- const pending = this.pendingResponses.shift();
2784
- if (pending) {
2785
- pending.reject(error);
2786
- }
2787
- this.buffer = Buffer.allocUnsafe(0);
2788
- break;
2789
- }
2790
- }
2791
- }
2792
- /**
2793
- * Handle socket error
2794
- */
2795
- handleError(error) {
2796
- this.connected = false;
2797
- while (this.pendingResponses.length > 0) {
2798
- const pending = this.pendingResponses.shift();
2799
- pending?.reject(new CommunicationException(`Socket error: ${error.message}`));
2800
- }
2801
- }
2802
- /**
2803
- * Handle socket timeout
2804
- */
2805
- handleTimeout() {
2806
- this.connected = false;
2807
- while (this.pendingResponses.length > 0) {
2808
- const pending = this.pendingResponses.shift();
2809
- pending?.reject(new CommunicationException("Socket timeout"));
2810
- }
2811
- }
2812
- /**
2813
- * Handle socket close
2814
- */
2815
- handleClose() {
2816
- this.log("Socket closed! connected:", this.connected, "pendingResponses:", this.pendingResponses.length);
2817
- this.connected = false;
2818
- while (this.pendingResponses.length > 0) {
2819
- const pending = this.pendingResponses.shift();
2820
- pending?.reject(new CommunicationException("Socket closed"));
2821
- }
2822
- }
2823
- /**
2824
- * Send a request and wait for response
2825
- */
2826
- async sendRequest(request) {
2827
- if (!this.connected) {
2828
- await this.reconnect();
2829
- }
2830
- try {
2831
- return await this.sendRequestNoAuth(request);
2832
- } catch (error) {
2833
- this.connected = false;
2834
- throw error;
2835
- }
2836
- }
2837
- /**
2838
- * Send a request without checking authentication
2839
- */
2840
- async sendRequestNoAuth(request) {
2841
- if (!this.socket) {
2842
- throw new CommunicationException("Socket not initialized");
2843
- }
2844
- const packet = request.buildPacket();
2845
- const buffer = PacketWriter.write(packet);
2846
- this.log("Sending request:", packet.opCode.toString(16), "Size:", buffer.length);
2847
- const responsePromise = new Promise((resolve, reject) => {
2848
- this.pendingResponses.push({ resolve, reject });
2849
- });
2850
- this.socket.write(buffer);
2851
- return responsePromise;
2852
- }
2853
- };
2854
-
2855
- // src/client/AmuleClient.ts
2856
- init_Codes();
2857
- var AmuleClient = class {
2858
- connection;
2859
- constructor(options) {
2860
- this.connection = new AmuleConnection(options.host, options.port, options.password, options.timeout || 0);
2861
- }
2862
- /**
2863
- * Reconnect to the server
2864
- */
2865
- async reconnect() {
2866
- await this.connection.reconnect();
2867
- }
2868
- /**
2869
- * Get server statistics
2870
- */
2871
- async getStats() {
2872
- const { StatsRequest: StatsRequest2 } = await Promise.resolve().then(() => (init_StatsRequest(), StatsRequest_exports));
2873
- const { StatsResponseParser: StatsResponseParser2 } = await Promise.resolve().then(() => (init_StatsResponse(), StatsResponse_exports));
2874
- const request = new StatsRequest2();
2875
- const packet = await this.connection.sendRequest(request);
2876
- return StatsResponseParser2.fromPacket(packet);
2877
- }
2878
- /**
2879
- * Get incremental updates for files, clients, servers, and friends
2880
- */
2881
- async getUpdate(detailLevel = 4 /* EC_DETAIL_INC_UPDATE */) {
2882
- const { UpdateRequest: UpdateRequest2 } = await Promise.resolve().then(() => (init_UpdateRequest(), UpdateRequest_exports));
2883
- const { UpdateResponseParser: UpdateResponseParser2 } = await Promise.resolve().then(() => (init_UpdateResponse(), UpdateResponse_exports));
2884
- const request = new UpdateRequest2(detailLevel);
2885
- const packet = await this.connection.sendRequest(request);
2886
- return UpdateResponseParser2.fromPacket(packet);
2887
- }
2888
- /**
2889
- * Start an asynchronous search
2890
- */
2891
- async searchAsync(query, searchType, filters) {
2892
- const { SearchRequest: SearchRequest2 } = await Promise.resolve().then(() => (init_SearchRequest(), SearchRequest_exports));
2893
- const request = new SearchRequest2(query, searchType, filters);
2894
- await this.connection.sendRequest(request);
2895
- return query;
2896
- }
2897
- /**
2898
- * Get search status (0-1)
2899
- */
2900
- async searchStatus() {
2901
- const { SearchStatusRequest: SearchStatusRequest2 } = await Promise.resolve().then(() => (init_SearchStatusRequest(), SearchStatusRequest_exports));
2902
- const { SearchProgressResponse: SearchProgressResponse2 } = await Promise.resolve().then(() => (init_SearchProgressResponse(), SearchProgressResponse_exports));
2903
- const request = new SearchStatusRequest2();
2904
- const packet = await this.connection.sendRequest(request);
2905
- const response = SearchProgressResponse2.fromPacket(packet);
2906
- return response.progress;
2907
- }
2908
- /**
2909
- * Get search results
2910
- */
2911
- async searchResults() {
2912
- const { SearchResultsRequest: SearchResultsRequest2 } = await Promise.resolve().then(() => (init_SearchResultsRequest(), SearchResultsRequest_exports));
2913
- const { SearchResultsResponseParser: SearchResultsResponseParser2 } = await Promise.resolve().then(() => (init_SearchResultsResponse(), SearchResultsResponse_exports));
2914
- const request = new SearchResultsRequest2();
2915
- const packet = await this.connection.sendRequest(request);
2916
- return SearchResultsResponseParser2.fromPacket(packet);
2917
- }
2918
- /**
2919
- * Perform a synchronous search (waits for results)
2920
- */
2921
- async searchSync(query, searchType, filters, timeout = 3e4) {
2922
- await this.searchAsync(query, searchType, filters);
2923
- const startTime = Date.now();
2924
- while (Date.now() - startTime < timeout) {
2925
- const progress = await this.searchStatus();
2926
- if (progress >= 1) {
2927
- return await this.searchResults();
2928
- }
2929
- await new Promise((resolve) => setTimeout(resolve, 500));
2930
- }
2931
- throw new Error("Search timeout");
2932
- }
2933
- /**
2934
- * Stop current search
2935
- */
2936
- async searchStop() {
2937
- const { SearchStopRequest: SearchStopRequest2 } = await Promise.resolve().then(() => (init_SearchStopRequest(), SearchStopRequest_exports));
2938
- const request = new SearchStopRequest2();
2939
- await this.connection.sendRequest(request);
2940
- }
2941
- /**
2942
- * Download a file from search results
2943
- */
2944
- async downloadSearchResult(hash) {
2945
- const { DownloadFileRequest: DownloadFileRequest2 } = await Promise.resolve().then(() => (init_DownloadFileRequest(), DownloadFileRequest_exports));
2946
- const request = new DownloadFileRequest2(hash);
2947
- await this.connection.sendRequest(request);
2948
- }
2949
- /**
2950
- * Download from an ed2k link
2951
- */
2952
- async downloadEd2kLink(link) {
2953
- const { AddLinkRequest: AddLinkRequest2 } = await Promise.resolve().then(() => (init_AddLinkRequest(), AddLinkRequest_exports));
2954
- const request = new AddLinkRequest2(link);
2955
- await this.connection.sendRequest(request);
2956
- }
2957
- /**
2958
- * Get download queue
2959
- */
2960
- async getDownloadQueue() {
2961
- const { DownloadQueueRequest: DownloadQueueRequest2 } = await Promise.resolve().then(() => (init_DownloadQueueRequest(), DownloadQueueRequest_exports));
2962
- const { DownloadQueueResponseParser: DownloadQueueResponseParser2 } = await Promise.resolve().then(() => (init_DownloadQueueResponse(), DownloadQueueResponse_exports));
2963
- const request = new DownloadQueueRequest2();
2964
- const packet = await this.connection.sendRequest(request);
2965
- return DownloadQueueResponseParser2.fromPacket(packet).files;
2966
- }
2967
- /**
2968
- * Get shared files
2969
- */
2970
- async getSharedFiles() {
2971
- const { SharedFilesRequest: SharedFilesRequest2 } = await Promise.resolve().then(() => (init_SharedFilesRequest(), SharedFilesRequest_exports));
2972
- const { SharedFilesResponseParser: SharedFilesResponseParser2 } = await Promise.resolve().then(() => (init_SharedFilesResponse(), SharedFilesResponse_exports));
2973
- const request = new SharedFilesRequest2();
2974
- const packet = await this.connection.sendRequest(request);
2975
- return SharedFilesResponseParser2.fromPacket(packet).files;
2976
- }
2977
- /**
2978
- * Get client upload/download queue (clients we are uploading to/downloading from)
2979
- */
2980
- async getClientQueue() {
2981
- const { ClientQueueRequest: ClientQueueRequest2 } = await Promise.resolve().then(() => (init_ClientQueueRequest(), ClientQueueRequest_exports));
2982
- const { ClientQueueResponseParser: ClientQueueResponseParser2 } = await Promise.resolve().then(() => (init_ClientQueueResponse(), ClientQueueResponse_exports));
2983
- const request = new ClientQueueRequest2();
2984
- const packet = await this.connection.sendRequest(request);
2985
- return ClientQueueResponseParser2.fromPacket(packet).clients;
2986
- }
2987
- /**
2988
- * Get the list of servers
2989
- */
2990
- async getServerList() {
2991
- const { ServerListRequest: ServerListRequest2 } = await Promise.resolve().then(() => (init_ServerListRequest(), ServerListRequest_exports));
2992
- const { ServerListResponseParser: ServerListResponseParser2 } = await Promise.resolve().then(() => (init_ServerListResponse(), ServerListResponse_exports));
2993
- const request = new ServerListRequest2();
2994
- const packet = await this.connection.sendRequest(request);
2995
- return ServerListResponseParser2.fromPacket(packet).servers;
2996
- }
2997
- /**
2998
- * Connect to a specific server
2999
- */
3000
- async connectToServer(ip, port) {
3001
- const { ServerConnectRequest: ServerConnectRequest2 } = await Promise.resolve().then(() => (init_ServerConnectRequest(), ServerConnectRequest_exports));
3002
- const request = new ServerConnectRequest2(ip, port);
3003
- await this.connection.sendRequest(request);
3004
- }
3005
- /**
3006
- * Disconnect from the current server
3007
- */
3008
- async disconnectFromServer() {
3009
- const { ServerDisconnectRequest: ServerDisconnectRequest2 } = await Promise.resolve().then(() => (init_ServerDisconnectRequest(), ServerDisconnectRequest_exports));
3010
- const request = new ServerDisconnectRequest2();
3011
- await this.connection.sendRequest(request);
3012
- }
3013
- /**
3014
- * Create a category
3015
- */
3016
- async createCategory(category) {
3017
- const { CreateCategoryRequest: CreateCategoryRequest2 } = await Promise.resolve().then(() => (init_CreateCategoryRequest(), CreateCategoryRequest_exports));
3018
- const request = new CreateCategoryRequest2(category);
3019
- await this.connection.sendRequest(request);
3020
- }
3021
- /**
3022
- * Update a category
3023
- */
3024
- async updateCategory(id, category) {
3025
- const { UpdateCategoryRequest: UpdateCategoryRequest2 } = await Promise.resolve().then(() => (init_UpdateCategoryRequest(), UpdateCategoryRequest_exports));
3026
- const request = new UpdateCategoryRequest2(id, category);
3027
- await this.connection.sendRequest(request);
3028
- }
3029
- /**
3030
- * Delete a category
3031
- */
3032
- async deleteCategory(id) {
3033
- const { DeleteCategoryRequest: DeleteCategoryRequest2 } = await Promise.resolve().then(() => (init_DeleteCategoryRequest(), DeleteCategoryRequest_exports));
3034
- const request = new DeleteCategoryRequest2(id);
3035
- await this.connection.sendRequest(request);
3036
- }
3037
- /**
3038
- * Get all categories
3039
- */
3040
- async getCategories() {
3041
- const { GetPreferencesRequest: GetPreferencesRequest2 } = await Promise.resolve().then(() => (init_GetPreferencesRequest(), GetPreferencesRequest_exports));
3042
- const { PreferencesResponseParser: PreferencesResponseParser2 } = await Promise.resolve().then(() => (init_PreferencesResponse(), PreferencesResponse_exports));
3043
- const request = new GetPreferencesRequest2(1 /* EC_PREFS_CATEGORIES */);
3044
- const packet = await this.connection.sendRequest(request);
3045
- return PreferencesResponseParser2.fromPacket(packet).categories;
3046
- }
3047
- /**
3048
- * Set file category
3049
- */
3050
- async setFileCategory(hash, categoryId) {
3051
- const { SetFileCategoryRequest: SetFileCategoryRequest2 } = await Promise.resolve().then(() => (init_SetFileCategoryRequest(), SetFileCategoryRequest_exports));
3052
- const request = new SetFileCategoryRequest2(hash, categoryId);
3053
- await this.connection.sendRequest(request);
3054
- }
3055
- /**
3056
- * Send a download command (PAUSE, RESUME, STOP, DELETE, etc.)
3057
- */
3058
- async sendDownloadCommand(hash, command) {
3059
- const { DownloadCommandRequest: DownloadCommandRequest2 } = await Promise.resolve().then(() => (init_DownloadCommandRequest(), DownloadCommandRequest_exports));
3060
- const request = new DownloadCommandRequest2(hash, command);
3061
- await this.connection.sendRequest(request);
3062
- }
3063
- /**
3064
- * Pause a download
3065
- */
3066
- async pauseDownload(hash) {
3067
- const { DownloadCommand: DownloadCommand2 } = await Promise.resolve().then(() => (init_model(), model_exports));
3068
- await this.sendDownloadCommand(hash, DownloadCommand2.PAUSE);
3069
- }
3070
- /**
3071
- * Resume a download
3072
- */
3073
- async resumeDownload(hash) {
3074
- const { DownloadCommand: DownloadCommand2 } = await Promise.resolve().then(() => (init_model(), model_exports));
3075
- await this.sendDownloadCommand(hash, DownloadCommand2.RESUME);
3076
- }
3077
- /**
3078
- * Stop a download
3079
- */
3080
- async stopDownload(hash) {
3081
- const { DownloadCommand: DownloadCommand2 } = await Promise.resolve().then(() => (init_model(), model_exports));
3082
- await this.sendDownloadCommand(hash, DownloadCommand2.STOP);
3083
- }
3084
- /**
3085
- * Delete a download
3086
- */
3087
- async deleteDownload(hash) {
3088
- const { DownloadCommand: DownloadCommand2 } = await Promise.resolve().then(() => (init_model(), model_exports));
3089
- await this.sendDownloadCommand(hash, DownloadCommand2.DELETE);
3090
- }
3091
- };
3092
-
3093
- // src/index.ts
3094
- init_model();
3095
- init_Codes();
3096
- init_Packet();
3097
- init_Flags();
3098
- init_Tag();
3099
- export {
3100
- AmuleClient,
3101
- AmuleException,
3102
- CommunicationException,
3103
- CustomTag,
3104
- DoubleTag,
3105
- DownloadCommand,
3106
- ECDetailLevel,
3107
- ECOpCode,
3108
- ECSearchType,
3109
- ECTagName,
3110
- EcPrefs,
3111
- FileStatus,
3112
- Flags,
3113
- Hash16Tag,
3114
- InvalidECException,
3115
- Ipv4Tag,
3116
- Packet,
3117
- PacketParser,
3118
- PacketWriter,
3119
- ProtocolVersion,
3120
- SearchType,
3121
- ServerException,
3122
- StringTag,
3123
- Tag,
3124
- UByteTag,
3125
- UInt128Tag,
3126
- UIntTag,
3127
- ULongTag,
3128
- UShortTag
3129
- };
3130
- //# sourceMappingURL=index.js.map