amule-ec-client 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/{AddLinkRequest-DwUbSMXD.mjs → AddLinkRequest-DEKGy-R2.js} +2 -5
- package/dist/{ClientQueueRequest-D9FaX5K9.mjs → ClientQueueRequest-DrLXSxtp.js} +2 -5
- package/dist/{ClientQueueResponse-FVQBR_8b.mjs → ClientQueueResponse-CXxY_9wU.js} +6 -6
- package/dist/{CreateCategoryRequest-Br6yfDhZ.mjs → CreateCategoryRequest-COulF12x.js} +2 -5
- package/dist/{DeleteCategoryRequest-C2-p6sx0.mjs → DeleteCategoryRequest-D-mljaNV.js} +2 -5
- package/dist/{DownloadCommandRequest-CaULjfNi.mjs → DownloadCommandRequest-Bf1Ez8Da.js} +3 -6
- package/dist/{DownloadFileRequest-CcNqsBo7.mjs → DownloadFileRequest-WfOIV07R.js} +2 -5
- package/dist/{DownloadQueueRequest-bd7lFiMj.mjs → DownloadQueueRequest-Br-pgrRt.js} +2 -5
- package/dist/DownloadQueueResponse-C-5d4teB.js +241 -0
- package/dist/{GetPreferencesRequest-C94Su9IH.mjs → GetPreferencesRequest-BE3RbRRn.js} +2 -5
- package/dist/{PreferencesDetailsResponse-BjMxbvVY.mjs → PreferencesDetailsResponse-D8lBd8Ot.js} +1 -4
- package/dist/{PreferencesResponse-Dth-n2sA.mjs → PreferencesResponse-BmGTQM30.js} +1 -4
- package/dist/{ReloadSharedFilesRequest-CPwAEJYG.mjs → ReloadSharedFilesRequest-BbDUeGcq.js} +2 -4
- package/dist/{Request-C0UUuQIX.mjs → Request-BvScDpeu.js} +3 -11
- package/dist/{SearchProgressResponse-Bputc9Ww.mjs → SearchProgressResponse-BQPliUup.js} +1 -4
- package/dist/{SearchRequest-CNqz-K1Z.mjs → SearchRequest-DOakj8fA.js} +3 -6
- package/dist/{SearchResultsRequest-DKG508KF.mjs → SearchResultsRequest-oZBs5KKm.js} +2 -4
- package/dist/{SearchResultsResponse-ChNrKJ6_.mjs → SearchResultsResponse-C9I9x035.js} +1 -4
- package/dist/{SearchStatusRequest-Bv6iaC9Y.mjs → SearchStatusRequest-B1ZzSQlE.js} +2 -4
- package/dist/{SearchStopRequest-rET-2Nsz.mjs → SearchStopRequest-FfXf_DCn.js} +2 -4
- package/dist/{ServerConnectRequest-CcO2-Eqd.mjs → ServerConnectRequest-Cdiw-KWu.js} +2 -5
- package/dist/{ServerDisconnectRequest-DEORM3SF.mjs → ServerDisconnectRequest-BVXSumxX.js} +2 -4
- package/dist/{ServerListRequest-FwFQBp12.mjs → ServerListRequest-3yMrgZID.js} +2 -4
- package/dist/{ServerListResponse-ZAKSSCPZ.mjs → ServerListResponse-Do3iRai0.js} +5 -6
- package/dist/{ServerUpdateFromUrlRequest-D4xBqJDJ.mjs → ServerUpdateFromUrlRequest-DpxBII5W.js} +2 -5
- package/dist/{SetFileCategoryRequest-BwEPJVeR.mjs → SetFileCategoryRequest-CFgkJB-H.js} +2 -5
- package/dist/{SetPreferencesRequest-D2fVIH3P.mjs → SetPreferencesRequest-BdZ40Ao_.js} +2 -5
- package/dist/{SharedFilePriorityRequest-j6ImgagV.mjs → SharedFilePriorityRequest-BMNmaL06.js} +2 -5
- package/dist/{SharedFilesRequest-D2M3K0eB.mjs → SharedFilesRequest-BZKz0oyn.js} +2 -5
- package/dist/SharedFilesResponse-DE0cd1DT.js +45 -0
- package/dist/{StatsRequest-B8v9LLHG.mjs → StatsRequest-DVwx5wk1.js} +2 -5
- package/dist/{StatsResponse-BVUxNPbz.mjs → StatsResponse-CP2F2zt0.js} +25 -4
- package/dist/{Codes-CjiW7Pdl.mjs → Tag-B5gWV2XF.js} +268 -3
- package/dist/{UpdateCategoryRequest-CgzH7SxP.mjs → UpdateCategoryRequest-Bu22YjOm.js} +2 -5
- package/dist/{UpdateRequest-Bunl73Ga.mjs → UpdateRequest-CaQ867p8.js} +2 -5
- package/dist/UpdateState-Dn-SuAsj.js +173 -0
- package/dist/{download-details-OM0FJUhZ.mjs → download-details-OM0FJUhZ.js} +0 -2
- package/dist/{index.d.mts → index.d.ts} +358 -337
- package/dist/{index.mjs → index.js} +94 -54
- package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/{utils-DBnUQnZ-.mjs → utils-CNoUroOI.js} +11 -3
- package/package.json +1 -1
- package/dist/AddLinkRequest-DwUbSMXD.mjs.map +0 -1
- package/dist/ClientQueueRequest-D9FaX5K9.mjs.map +0 -1
- package/dist/ClientQueueResponse-FVQBR_8b.mjs.map +0 -1
- package/dist/Codes-CjiW7Pdl.mjs.map +0 -1
- package/dist/CreateCategoryRequest-Br6yfDhZ.mjs.map +0 -1
- package/dist/DeleteCategoryRequest-C2-p6sx0.mjs.map +0 -1
- package/dist/DownloadCommandRequest-CaULjfNi.mjs.map +0 -1
- package/dist/DownloadFileRequest-CcNqsBo7.mjs.map +0 -1
- package/dist/DownloadQueueRequest-bd7lFiMj.mjs.map +0 -1
- package/dist/DownloadQueueResponse-DyP1rLTV.mjs +0 -261
- package/dist/DownloadQueueResponse-DyP1rLTV.mjs.map +0 -1
- package/dist/GetPreferencesRequest-C94Su9IH.mjs.map +0 -1
- package/dist/PreferencesDetailsResponse-BjMxbvVY.mjs.map +0 -1
- package/dist/PreferencesResponse-Dth-n2sA.mjs.map +0 -1
- package/dist/ReloadSharedFilesRequest-CPwAEJYG.mjs.map +0 -1
- package/dist/Request-C0UUuQIX.mjs.map +0 -1
- package/dist/SearchProgressResponse-Bputc9Ww.mjs.map +0 -1
- package/dist/SearchRequest-CNqz-K1Z.mjs.map +0 -1
- package/dist/SearchResultsRequest-DKG508KF.mjs.map +0 -1
- package/dist/SearchResultsResponse-ChNrKJ6_.mjs.map +0 -1
- package/dist/SearchStatusRequest-Bv6iaC9Y.mjs.map +0 -1
- package/dist/SearchStopRequest-rET-2Nsz.mjs.map +0 -1
- package/dist/ServerConnectRequest-CcO2-Eqd.mjs.map +0 -1
- package/dist/ServerDisconnectRequest-DEORM3SF.mjs.map +0 -1
- package/dist/ServerListRequest-FwFQBp12.mjs.map +0 -1
- package/dist/ServerListResponse-ZAKSSCPZ.mjs.map +0 -1
- package/dist/ServerUpdateFromUrlRequest-D4xBqJDJ.mjs.map +0 -1
- package/dist/SetFileCategoryRequest-BwEPJVeR.mjs.map +0 -1
- package/dist/SetPreferencesRequest-D2fVIH3P.mjs.map +0 -1
- package/dist/SharedFilePriorityRequest-j6ImgagV.mjs.map +0 -1
- package/dist/SharedFilesRequest-D2M3K0eB.mjs.map +0 -1
- package/dist/SharedFilesResponse-BiXT_oCx.mjs +0 -41
- package/dist/SharedFilesResponse-BiXT_oCx.mjs.map +0 -1
- package/dist/StatsRequest-B8v9LLHG.mjs.map +0 -1
- package/dist/StatsResponse-BVUxNPbz.mjs.map +0 -1
- package/dist/Tag-CZF6BRMY.mjs +0 -262
- package/dist/Tag-CZF6BRMY.mjs.map +0 -1
- package/dist/UpdateCategoryRequest-CgzH7SxP.mjs.map +0 -1
- package/dist/UpdateRequest-Bunl73Ga.mjs.map +0 -1
- package/dist/UpdateResponse-1LhyH9Zf.mjs +0 -47
- package/dist/UpdateResponse-1LhyH9Zf.mjs.map +0 -1
- package/dist/download-details-OM0FJUhZ.mjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/utils-DBnUQnZ-.mjs.map +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { n as Packet, r as Flags, t as Request } from "./Request-
|
|
2
|
-
import { a as
|
|
3
|
-
import {
|
|
4
|
-
import { n as PARTSIZE, t as ChunkStatus } from "./download-details-OM0FJUhZ.mjs";
|
|
1
|
+
import { n as Packet, r as Flags, t as Request } from "./Request-BvScDpeu.js";
|
|
2
|
+
import { _ as ECSearchType, a as StringTag, b as ProtocolVersion, c as UInt128Tag, d as UShortTag, f as findNumericTag, g as ECSearchFileDownloadStatus, h as ECOpCode, i as Ipv4Tag, l as UIntTag, m as ECDetailLevel, n as DoubleTag, o as Tag, p as findTag, r as Hash16Tag, s as UByteTag, t as CustomTag, u as ULongTag, v as ECTagName, y as EcPrefs } from "./Tag-B5gWV2XF.js";
|
|
3
|
+
import { n as PARTSIZE, t as ChunkStatus } from "./download-details-OM0FJUhZ.js";
|
|
5
4
|
import * as net from "net";
|
|
6
5
|
import * as zlib from "zlib";
|
|
7
6
|
import * as crypto from "crypto";
|
|
@@ -518,8 +517,8 @@ var PasswordHasher = class {
|
|
|
518
517
|
/**
|
|
519
518
|
* Hash a password with salt using MD5
|
|
520
519
|
*
|
|
521
|
-
* This matches aMule's password hashing algorithm (
|
|
522
|
-
* 1. saltHash = MD5(salt
|
|
520
|
+
* This matches aMule's password hashing algorithm (ExternalConn.cpp):
|
|
521
|
+
* 1. saltHash = MD5(salt formatted as "%lX")
|
|
523
522
|
* 2. passwordHash = MD5(password)
|
|
524
523
|
* 3. return MD5(passwordHash.toHex().lowercase() + saltHash.toHex().lowercase())
|
|
525
524
|
*
|
|
@@ -528,7 +527,7 @@ var PasswordHasher = class {
|
|
|
528
527
|
* @returns The hashed password as a Buffer
|
|
529
528
|
*/
|
|
530
529
|
static hash(password, salt) {
|
|
531
|
-
const saltHexUpper = salt.toString(16).toUpperCase()
|
|
530
|
+
const saltHexUpper = salt.toString(16).toUpperCase();
|
|
532
531
|
const saltHash = crypto.createHash("md5").update(saltHexUpper, "utf-8").digest();
|
|
533
532
|
const passwordHashHex = crypto.createHash("md5").update(password, "utf-8").digest().toString("hex").toLowerCase();
|
|
534
533
|
const saltHashHex = saltHash.toString("hex").toLowerCase();
|
|
@@ -549,7 +548,7 @@ var PasswordHasher = class {
|
|
|
549
548
|
/**
|
|
550
549
|
* AmuleConnection - Manages the low-level connection to aMule EC
|
|
551
550
|
*/
|
|
552
|
-
var AmuleConnection = class {
|
|
551
|
+
var AmuleConnection = class AmuleConnection {
|
|
553
552
|
host;
|
|
554
553
|
port;
|
|
555
554
|
password;
|
|
@@ -560,6 +559,7 @@ var AmuleConnection = class {
|
|
|
560
559
|
pendingResponses = [];
|
|
561
560
|
connectionPromise;
|
|
562
561
|
requestTimeout = 0;
|
|
562
|
+
sessionGeneration = 0;
|
|
563
563
|
debug = false;
|
|
564
564
|
/**
|
|
565
565
|
* Enable or disable debug logging
|
|
@@ -595,6 +595,13 @@ var AmuleConnection = class {
|
|
|
595
595
|
return this.requestTimeout;
|
|
596
596
|
}
|
|
597
597
|
/**
|
|
598
|
+
* Monotonic counter incremented on every (re)connection attempt.
|
|
599
|
+
* Lets consumers detect that the daemon-side per-connection state was reset.
|
|
600
|
+
*/
|
|
601
|
+
getSessionGeneration() {
|
|
602
|
+
return this.sessionGeneration;
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
598
605
|
* Reject and clear all pending responses.
|
|
599
606
|
*/
|
|
600
607
|
rejectAllPending(error) {
|
|
@@ -611,7 +618,9 @@ var AmuleConnection = class {
|
|
|
611
618
|
if (this.connectionPromise) return this.connectionPromise;
|
|
612
619
|
this.connectionPromise = (async () => {
|
|
613
620
|
this.connected = false;
|
|
621
|
+
this.sessionGeneration++;
|
|
614
622
|
if (this.socket) this.socket.destroy();
|
|
623
|
+
this.buffer = Buffer.allocUnsafe(0);
|
|
615
624
|
this.socket = new net.Socket();
|
|
616
625
|
if (this.timeout > 0) this.socket.setTimeout(this.timeout);
|
|
617
626
|
this.socket.on("data", (data) => this.handleData(Buffer.isBuffer(data) ? data : Buffer.from(data)));
|
|
@@ -621,6 +630,7 @@ var AmuleConnection = class {
|
|
|
621
630
|
try {
|
|
622
631
|
await this.connectSocket();
|
|
623
632
|
await this.authenticate();
|
|
633
|
+
this.socket?.setTimeout(0);
|
|
624
634
|
this.connected = true;
|
|
625
635
|
} finally {
|
|
626
636
|
this.connectionPromise = void 0;
|
|
@@ -633,11 +643,14 @@ var AmuleConnection = class {
|
|
|
633
643
|
*/
|
|
634
644
|
connectSocket() {
|
|
635
645
|
return new Promise((resolve, reject) => {
|
|
636
|
-
|
|
637
|
-
|
|
646
|
+
const socket = this.socket;
|
|
647
|
+
if (!socket) return reject(new CommunicationException("Socket not initialized"));
|
|
648
|
+
const onError = (error) => reject(error);
|
|
649
|
+
socket.once("error", onError);
|
|
650
|
+
socket.connect(this.port, this.host, () => {
|
|
651
|
+
socket.removeListener("error", onError);
|
|
638
652
|
resolve();
|
|
639
653
|
});
|
|
640
|
-
this.socket.once("error", reject);
|
|
641
654
|
});
|
|
642
655
|
}
|
|
643
656
|
/**
|
|
@@ -649,7 +662,7 @@ var AmuleConnection = class {
|
|
|
649
662
|
this.log("Sending client info...");
|
|
650
663
|
const saltPacket = await this.sendRequestNoAuth(clientInfoRequest);
|
|
651
664
|
this.log("Received salt response");
|
|
652
|
-
if (saltPacket.opCode === 3) throw new ServerException(
|
|
665
|
+
if (saltPacket.opCode === 3) throw new ServerException(`Authentication failed: ${AmuleConnection.authFailReason(saltPacket) ?? "connection refused with no reason; the daemon usually does this when its EC password is empty (external connections disabled)"}`);
|
|
653
666
|
if (saltPacket.opCode !== 79) throw new ServerException(`Unexpected response to client info: ${saltPacket.opCode}`);
|
|
654
667
|
const saltResponse = AuthSaltResponse.fromPacket(saltPacket);
|
|
655
668
|
this.log("Salt:", saltResponse.salt);
|
|
@@ -659,11 +672,18 @@ var AmuleConnection = class {
|
|
|
659
672
|
this.log("Sending hashed password...");
|
|
660
673
|
const authPacket = await this.sendRequestNoAuth(authRequest);
|
|
661
674
|
this.log("Received auth response");
|
|
662
|
-
if (authPacket.opCode === 3) throw new ServerException(
|
|
675
|
+
if (authPacket.opCode === 3) throw new ServerException(`Authentication failed: ${AmuleConnection.authFailReason(authPacket) ?? "unknown reason"}`);
|
|
663
676
|
if (authPacket.opCode !== 4) throw new ServerException(`Unexpected auth response: ${authPacket.opCode}`);
|
|
664
677
|
this.log("Authentication successful!");
|
|
665
678
|
}
|
|
666
679
|
/**
|
|
680
|
+
* Extract the human-readable reason the daemon attaches to EC_OP_AUTH_FAIL packets.
|
|
681
|
+
*/
|
|
682
|
+
static authFailReason(packet) {
|
|
683
|
+
const reason = findTag(packet.tags, 0)?.getValue();
|
|
684
|
+
return typeof reason === "string" && reason.length > 0 ? reason : void 0;
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
667
687
|
* Handle incoming data
|
|
668
688
|
*/
|
|
669
689
|
handleData(data) {
|
|
@@ -790,6 +810,7 @@ let SearchType = /* @__PURE__ */ function(SearchType) {
|
|
|
790
810
|
*/
|
|
791
811
|
var AmuleClient = class {
|
|
792
812
|
connection;
|
|
813
|
+
updateState;
|
|
793
814
|
constructor(options) {
|
|
794
815
|
this.connection = new AmuleConnection(options.host, options.port, options.password, options.timeout || 0, options.requestTimeout || 0);
|
|
795
816
|
}
|
|
@@ -810,33 +831,53 @@ var AmuleClient = class {
|
|
|
810
831
|
* Reconnect to the server
|
|
811
832
|
*/
|
|
812
833
|
async reconnect() {
|
|
834
|
+
this.updateState = void 0;
|
|
813
835
|
await this.connection.reconnect();
|
|
814
836
|
}
|
|
815
837
|
/**
|
|
816
838
|
* Get server statistics
|
|
817
839
|
*/
|
|
818
840
|
async getStats() {
|
|
819
|
-
const { StatsRequest } = await import("./StatsRequest-
|
|
820
|
-
const { StatsResponseParser } = await import("./StatsResponse-
|
|
841
|
+
const { StatsRequest } = await import("./StatsRequest-DVwx5wk1.js");
|
|
842
|
+
const { StatsResponseParser } = await import("./StatsResponse-CP2F2zt0.js");
|
|
821
843
|
const request = new StatsRequest();
|
|
822
844
|
const packet = await this.connection.sendRequest(request);
|
|
823
845
|
return StatsResponseParser.fromPacket(packet);
|
|
824
846
|
}
|
|
825
847
|
/**
|
|
826
|
-
* Get
|
|
848
|
+
* Get updates for files, clients, servers, and friends.
|
|
849
|
+
*
|
|
850
|
+
* The underlying EC_OP_GET_UPDATE request is incremental per connection: the daemon
|
|
851
|
+
* only sends the fields that changed since the previous call. This method keeps a
|
|
852
|
+
* client-side cache and merges those diffs, so it always returns full snapshots.
|
|
853
|
+
* Downloads carry their connected peers in `sources` (linked via client requestFileId
|
|
854
|
+
* and file ecid). The cache is reset whenever the connection is re-established.
|
|
827
855
|
*/
|
|
828
856
|
async getUpdate(detailLevel = 4) {
|
|
829
|
-
const { UpdateRequest } = await import("./UpdateRequest-
|
|
830
|
-
const {
|
|
857
|
+
const { UpdateRequest } = await import("./UpdateRequest-CaQ867p8.js");
|
|
858
|
+
const { UpdateState } = await import("./UpdateState-Dn-SuAsj.js");
|
|
831
859
|
const request = new UpdateRequest(detailLevel);
|
|
832
860
|
const packet = await this.connection.sendRequest(request);
|
|
833
|
-
|
|
861
|
+
const generation = this.connection.getSessionGeneration();
|
|
862
|
+
if (!this.updateState || this.updateState.sessionGeneration !== generation) this.updateState = new UpdateState(generation);
|
|
863
|
+
return this.updateState.apply(packet);
|
|
864
|
+
}
|
|
865
|
+
/**
|
|
866
|
+
* Get the download queue including per-peer source details.
|
|
867
|
+
*
|
|
868
|
+
* Unlike getDownloadQueue() (EC_OP_GET_DLOAD_QUEUE, which never includes peers),
|
|
869
|
+
* this uses the incremental update mechanism (see getUpdate), the only way the
|
|
870
|
+
* daemon exposes the clients each download is fed from. Each returned file has
|
|
871
|
+
* `sources` filled with the currently connected peers for that download.
|
|
872
|
+
*/
|
|
873
|
+
async getDownloadQueueWithSources() {
|
|
874
|
+
return (await this.getUpdate()).downloadQueue;
|
|
834
875
|
}
|
|
835
876
|
/**
|
|
836
877
|
* Start an asynchronous search
|
|
837
878
|
*/
|
|
838
879
|
async searchAsync(query, searchType, filters) {
|
|
839
|
-
const { SearchRequest } = await import("./SearchRequest-
|
|
880
|
+
const { SearchRequest } = await import("./SearchRequest-DOakj8fA.js");
|
|
840
881
|
const request = new SearchRequest(query, searchType, filters);
|
|
841
882
|
await this.connection.sendRequest(request);
|
|
842
883
|
return query;
|
|
@@ -845,8 +886,8 @@ var AmuleClient = class {
|
|
|
845
886
|
* Get search status (0-1)
|
|
846
887
|
*/
|
|
847
888
|
async searchStatus() {
|
|
848
|
-
const { SearchStatusRequest } = await import("./SearchStatusRequest-
|
|
849
|
-
const { SearchProgressResponse } = await import("./SearchProgressResponse-
|
|
889
|
+
const { SearchStatusRequest } = await import("./SearchStatusRequest-B1ZzSQlE.js");
|
|
890
|
+
const { SearchProgressResponse } = await import("./SearchProgressResponse-BQPliUup.js");
|
|
850
891
|
const request = new SearchStatusRequest();
|
|
851
892
|
const packet = await this.connection.sendRequest(request);
|
|
852
893
|
return SearchProgressResponse.fromPacket(packet).progress;
|
|
@@ -855,8 +896,8 @@ var AmuleClient = class {
|
|
|
855
896
|
* Get search results
|
|
856
897
|
*/
|
|
857
898
|
async searchResults() {
|
|
858
|
-
const { SearchResultsRequest } = await import("./SearchResultsRequest-
|
|
859
|
-
const { SearchResultsResponseParser } = await import("./SearchResultsResponse-
|
|
899
|
+
const { SearchResultsRequest } = await import("./SearchResultsRequest-oZBs5KKm.js");
|
|
900
|
+
const { SearchResultsResponseParser } = await import("./SearchResultsResponse-C9I9x035.js");
|
|
860
901
|
const request = new SearchResultsRequest();
|
|
861
902
|
const packet = await this.connection.sendRequest(request);
|
|
862
903
|
return SearchResultsResponseParser.fromPacket(packet);
|
|
@@ -877,7 +918,7 @@ var AmuleClient = class {
|
|
|
877
918
|
* Stop current search
|
|
878
919
|
*/
|
|
879
920
|
async searchStop() {
|
|
880
|
-
const { SearchStopRequest } = await import("./SearchStopRequest-
|
|
921
|
+
const { SearchStopRequest } = await import("./SearchStopRequest-FfXf_DCn.js");
|
|
881
922
|
const request = new SearchStopRequest();
|
|
882
923
|
await this.connection.sendRequest(request);
|
|
883
924
|
}
|
|
@@ -885,7 +926,7 @@ var AmuleClient = class {
|
|
|
885
926
|
* Download a file from search results
|
|
886
927
|
*/
|
|
887
928
|
async downloadSearchResult(hash) {
|
|
888
|
-
const { DownloadFileRequest } = await import("./DownloadFileRequest-
|
|
929
|
+
const { DownloadFileRequest } = await import("./DownloadFileRequest-WfOIV07R.js");
|
|
889
930
|
const request = new DownloadFileRequest(hash);
|
|
890
931
|
await this.connection.sendRequest(request);
|
|
891
932
|
}
|
|
@@ -893,7 +934,7 @@ var AmuleClient = class {
|
|
|
893
934
|
* Download from an ed2k link
|
|
894
935
|
*/
|
|
895
936
|
async downloadEd2kLink(link) {
|
|
896
|
-
const { AddLinkRequest } = await import("./AddLinkRequest-
|
|
937
|
+
const { AddLinkRequest } = await import("./AddLinkRequest-DEKGy-R2.js");
|
|
897
938
|
const request = new AddLinkRequest(link);
|
|
898
939
|
await this.connection.sendRequest(request);
|
|
899
940
|
}
|
|
@@ -901,8 +942,8 @@ var AmuleClient = class {
|
|
|
901
942
|
* Get download queue
|
|
902
943
|
*/
|
|
903
944
|
async getDownloadQueue() {
|
|
904
|
-
const { DownloadQueueRequest } = await import("./DownloadQueueRequest-
|
|
905
|
-
const { DownloadQueueResponseParser } = await import("./DownloadQueueResponse-
|
|
945
|
+
const { DownloadQueueRequest } = await import("./DownloadQueueRequest-Br-pgrRt.js");
|
|
946
|
+
const { DownloadQueueResponseParser } = await import("./DownloadQueueResponse-C-5d4teB.js").then((n) => n.n);
|
|
906
947
|
const request = new DownloadQueueRequest();
|
|
907
948
|
const packet = await this.connection.sendRequest(request);
|
|
908
949
|
return DownloadQueueResponseParser.fromPacket(packet).files;
|
|
@@ -911,8 +952,8 @@ var AmuleClient = class {
|
|
|
911
952
|
* Get shared files
|
|
912
953
|
*/
|
|
913
954
|
async getSharedFiles() {
|
|
914
|
-
const { SharedFilesRequest } = await import("./SharedFilesRequest-
|
|
915
|
-
const { SharedFilesResponseParser } = await import("./SharedFilesResponse-
|
|
955
|
+
const { SharedFilesRequest } = await import("./SharedFilesRequest-BZKz0oyn.js");
|
|
956
|
+
const { SharedFilesResponseParser } = await import("./SharedFilesResponse-DE0cd1DT.js").then((n) => n.n);
|
|
916
957
|
const request = new SharedFilesRequest();
|
|
917
958
|
const packet = await this.connection.sendRequest(request);
|
|
918
959
|
return SharedFilesResponseParser.fromPacket(packet).files;
|
|
@@ -921,16 +962,17 @@ var AmuleClient = class {
|
|
|
921
962
|
* Reload shared files list
|
|
922
963
|
*/
|
|
923
964
|
async reloadSharedFiles() {
|
|
924
|
-
const { ReloadSharedFilesRequest } = await import("./ReloadSharedFilesRequest-
|
|
965
|
+
const { ReloadSharedFilesRequest } = await import("./ReloadSharedFilesRequest-BbDUeGcq.js");
|
|
925
966
|
const request = new ReloadSharedFilesRequest();
|
|
926
967
|
await this.connection.sendRequest(request);
|
|
927
968
|
}
|
|
928
969
|
/**
|
|
929
|
-
* Get
|
|
970
|
+
* Get the upload queue: clients we are uploading to or that wait in our queue
|
|
971
|
+
* (EC_OP_GET_ULOAD_QUEUE). For download sources use getDownloadQueueWithSources().
|
|
930
972
|
*/
|
|
931
973
|
async getClientQueue() {
|
|
932
|
-
const { ClientQueueRequest } = await import("./ClientQueueRequest-
|
|
933
|
-
const { ClientQueueResponseParser } = await import("./ClientQueueResponse-
|
|
974
|
+
const { ClientQueueRequest } = await import("./ClientQueueRequest-DrLXSxtp.js");
|
|
975
|
+
const { ClientQueueResponseParser } = await import("./ClientQueueResponse-CXxY_9wU.js").then((n) => n.n);
|
|
934
976
|
const request = new ClientQueueRequest();
|
|
935
977
|
const packet = await this.connection.sendRequest(request);
|
|
936
978
|
return ClientQueueResponseParser.fromPacket(packet).clients;
|
|
@@ -939,8 +981,8 @@ var AmuleClient = class {
|
|
|
939
981
|
* Get the list of servers
|
|
940
982
|
*/
|
|
941
983
|
async getServerList() {
|
|
942
|
-
const { ServerListRequest } = await import("./ServerListRequest-
|
|
943
|
-
const { ServerListResponseParser } = await import("./ServerListResponse-
|
|
984
|
+
const { ServerListRequest } = await import("./ServerListRequest-3yMrgZID.js");
|
|
985
|
+
const { ServerListResponseParser } = await import("./ServerListResponse-Do3iRai0.js").then((n) => n.n);
|
|
944
986
|
const request = new ServerListRequest();
|
|
945
987
|
const packet = await this.connection.sendRequest(request);
|
|
946
988
|
return ServerListResponseParser.fromPacket(packet).servers;
|
|
@@ -949,7 +991,7 @@ var AmuleClient = class {
|
|
|
949
991
|
* Connect to a specific server
|
|
950
992
|
*/
|
|
951
993
|
async connectToServer(ip, port) {
|
|
952
|
-
const { ServerConnectRequest } = await import("./ServerConnectRequest-
|
|
994
|
+
const { ServerConnectRequest } = await import("./ServerConnectRequest-Cdiw-KWu.js");
|
|
953
995
|
const request = new ServerConnectRequest(ip, port);
|
|
954
996
|
await this.connection.sendRequest(request);
|
|
955
997
|
}
|
|
@@ -957,7 +999,7 @@ var AmuleClient = class {
|
|
|
957
999
|
* Disconnect from the current server
|
|
958
1000
|
*/
|
|
959
1001
|
async disconnectFromServer() {
|
|
960
|
-
const { ServerDisconnectRequest } = await import("./ServerDisconnectRequest-
|
|
1002
|
+
const { ServerDisconnectRequest } = await import("./ServerDisconnectRequest-BVXSumxX.js");
|
|
961
1003
|
const request = new ServerDisconnectRequest();
|
|
962
1004
|
await this.connection.sendRequest(request);
|
|
963
1005
|
}
|
|
@@ -965,7 +1007,7 @@ var AmuleClient = class {
|
|
|
965
1007
|
* Create a category
|
|
966
1008
|
*/
|
|
967
1009
|
async createCategory(category) {
|
|
968
|
-
const { CreateCategoryRequest } = await import("./CreateCategoryRequest-
|
|
1010
|
+
const { CreateCategoryRequest } = await import("./CreateCategoryRequest-COulF12x.js");
|
|
969
1011
|
const request = new CreateCategoryRequest(category);
|
|
970
1012
|
await this.connection.sendRequest(request);
|
|
971
1013
|
}
|
|
@@ -973,7 +1015,7 @@ var AmuleClient = class {
|
|
|
973
1015
|
* Update a category
|
|
974
1016
|
*/
|
|
975
1017
|
async updateCategory(id, category) {
|
|
976
|
-
const { UpdateCategoryRequest } = await import("./UpdateCategoryRequest-
|
|
1018
|
+
const { UpdateCategoryRequest } = await import("./UpdateCategoryRequest-Bu22YjOm.js");
|
|
977
1019
|
const request = new UpdateCategoryRequest(id, category);
|
|
978
1020
|
await this.connection.sendRequest(request);
|
|
979
1021
|
}
|
|
@@ -981,7 +1023,7 @@ var AmuleClient = class {
|
|
|
981
1023
|
* Delete a category
|
|
982
1024
|
*/
|
|
983
1025
|
async deleteCategory(id) {
|
|
984
|
-
const { DeleteCategoryRequest } = await import("./DeleteCategoryRequest-
|
|
1026
|
+
const { DeleteCategoryRequest } = await import("./DeleteCategoryRequest-D-mljaNV.js");
|
|
985
1027
|
const request = new DeleteCategoryRequest(id);
|
|
986
1028
|
await this.connection.sendRequest(request);
|
|
987
1029
|
}
|
|
@@ -989,8 +1031,8 @@ var AmuleClient = class {
|
|
|
989
1031
|
* Get all categories
|
|
990
1032
|
*/
|
|
991
1033
|
async getCategories() {
|
|
992
|
-
const { GetPreferencesRequest } = await import("./GetPreferencesRequest-
|
|
993
|
-
const { PreferencesResponseParser } = await import("./PreferencesResponse-
|
|
1034
|
+
const { GetPreferencesRequest } = await import("./GetPreferencesRequest-BE3RbRRn.js");
|
|
1035
|
+
const { PreferencesResponseParser } = await import("./PreferencesResponse-BmGTQM30.js");
|
|
994
1036
|
const request = new GetPreferencesRequest(1);
|
|
995
1037
|
const packet = await this.connection.sendRequest(request);
|
|
996
1038
|
return PreferencesResponseParser.fromPacket(packet).categories;
|
|
@@ -999,7 +1041,7 @@ var AmuleClient = class {
|
|
|
999
1041
|
* Set file category
|
|
1000
1042
|
*/
|
|
1001
1043
|
async setFileCategory(hash, categoryId) {
|
|
1002
|
-
const { SetFileCategoryRequest } = await import("./SetFileCategoryRequest-
|
|
1044
|
+
const { SetFileCategoryRequest } = await import("./SetFileCategoryRequest-CFgkJB-H.js");
|
|
1003
1045
|
const request = new SetFileCategoryRequest(hash, categoryId);
|
|
1004
1046
|
await this.connection.sendRequest(request);
|
|
1005
1047
|
}
|
|
@@ -1007,7 +1049,7 @@ var AmuleClient = class {
|
|
|
1007
1049
|
* Send a download command (PAUSE, RESUME, STOP, DELETE, etc.)
|
|
1008
1050
|
*/
|
|
1009
1051
|
async sendDownloadCommand(hash, command) {
|
|
1010
|
-
const { DownloadCommandRequest } = await import("./DownloadCommandRequest-
|
|
1052
|
+
const { DownloadCommandRequest } = await import("./DownloadCommandRequest-Bf1Ez8Da.js");
|
|
1011
1053
|
const request = new DownloadCommandRequest(hash, command);
|
|
1012
1054
|
await this.connection.sendRequest(request);
|
|
1013
1055
|
}
|
|
@@ -1039,7 +1081,7 @@ var AmuleClient = class {
|
|
|
1039
1081
|
* Trigger a server list update from an URL.
|
|
1040
1082
|
*/
|
|
1041
1083
|
async updateServerListFromUrl(url) {
|
|
1042
|
-
const { ServerUpdateFromUrlRequest } = await import("./ServerUpdateFromUrlRequest-
|
|
1084
|
+
const { ServerUpdateFromUrlRequest } = await import("./ServerUpdateFromUrlRequest-DpxBII5W.js");
|
|
1043
1085
|
const request = new ServerUpdateFromUrlRequest(url);
|
|
1044
1086
|
await this.connection.sendRequest(request);
|
|
1045
1087
|
}
|
|
@@ -1047,7 +1089,7 @@ var AmuleClient = class {
|
|
|
1047
1089
|
* Set upload priority for a shared file.
|
|
1048
1090
|
*/
|
|
1049
1091
|
async setSharedFilePriority(hash, priority) {
|
|
1050
|
-
const { SharedFilePriorityRequest } = await import("./SharedFilePriorityRequest-
|
|
1092
|
+
const { SharedFilePriorityRequest } = await import("./SharedFilePriorityRequest-BMNmaL06.js");
|
|
1051
1093
|
const request = new SharedFilePriorityRequest(hash, priority);
|
|
1052
1094
|
await this.connection.sendRequest(request);
|
|
1053
1095
|
}
|
|
@@ -1055,8 +1097,8 @@ var AmuleClient = class {
|
|
|
1055
1097
|
* Get daemon preferences for general/connection/servers/security sections.
|
|
1056
1098
|
*/
|
|
1057
1099
|
async getPreferences() {
|
|
1058
|
-
const { GetPreferencesRequest } = await import("./GetPreferencesRequest-
|
|
1059
|
-
const { PreferencesDetailsResponseParser } = await import("./PreferencesDetailsResponse-
|
|
1100
|
+
const { GetPreferencesRequest } = await import("./GetPreferencesRequest-BE3RbRRn.js");
|
|
1101
|
+
const { PreferencesDetailsResponseParser } = await import("./PreferencesDetailsResponse-D8lBd8Ot.js");
|
|
1060
1102
|
const request = new GetPreferencesRequest(2118);
|
|
1061
1103
|
const packet = await this.connection.sendRequest(request);
|
|
1062
1104
|
return PreferencesDetailsResponseParser.fromPacket(packet).preferences;
|
|
@@ -1066,12 +1108,10 @@ var AmuleClient = class {
|
|
|
1066
1108
|
*/
|
|
1067
1109
|
async setPreferences(preferences) {
|
|
1068
1110
|
if (!preferences.general && !preferences.connection && !preferences.servers && !preferences.security) return;
|
|
1069
|
-
const { SetPreferencesRequest } = await import("./SetPreferencesRequest-
|
|
1111
|
+
const { SetPreferencesRequest } = await import("./SetPreferencesRequest-BdZ40Ao_.js");
|
|
1070
1112
|
const request = new SetPreferencesRequest(preferences);
|
|
1071
1113
|
await this.connection.sendRequest(request);
|
|
1072
1114
|
}
|
|
1073
1115
|
};
|
|
1074
1116
|
//#endregion
|
|
1075
|
-
export { AmuleClient, AmuleException, ChunkStatus, CommunicationException, CustomTag, DoubleTag, DownloadCommand, ECDetailLevel, ECOpCode, ECSearchType, ECTagName, EcPrefs, FileStatus, Flags, Hash16Tag, InvalidECException, Ipv4Tag, PARTSIZE, Packet, PacketParser, PacketWriter, ProtocolVersion, SearchType, ServerException, StringTag, Tag, UByteTag, UInt128Tag, UIntTag, ULongTag, UShortTag };
|
|
1076
|
-
|
|
1077
|
-
//# sourceMappingURL=index.mjs.map
|
|
1117
|
+
export { AmuleClient, AmuleException, ChunkStatus, CommunicationException, CustomTag, DoubleTag, DownloadCommand, ECDetailLevel, ECOpCode, ECSearchFileDownloadStatus, ECSearchType, ECTagName, EcPrefs, FileStatus, Flags, Hash16Tag, InvalidECException, Ipv4Tag, PARTSIZE, Packet, PacketParser, PacketWriter, ProtocolVersion, SearchType, ServerException, StringTag, Tag, UByteTag, UInt128Tag, UIntTag, ULongTag, UShortTag };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __exportAll = (all, no_symbols) => {
|
|
4
|
+
let target = {};
|
|
5
|
+
for (var name in all) __defProp(target, name, {
|
|
6
|
+
get: all[name],
|
|
7
|
+
enumerable: true
|
|
8
|
+
});
|
|
9
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
10
|
+
return target;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { __exportAll as t };
|
|
@@ -20,7 +20,15 @@ function toOptionalIp(value) {
|
|
|
20
20
|
if (value === void 0) return void 0;
|
|
21
21
|
return formatIp(value);
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Read the own numeric value of a tag (e.g. the ECID carried by EC_TAG_PARTFILE / EC_TAG_CLIENT container tags).
|
|
25
|
+
* Returns undefined when the tag value is not numeric (string, buffer, ...).
|
|
26
|
+
*/
|
|
27
|
+
function tagOwnNumericValue(tag) {
|
|
28
|
+
if (!tag) return void 0;
|
|
29
|
+
const value = tag.getValue();
|
|
30
|
+
if (typeof value === "number") return value;
|
|
31
|
+
if (typeof value === "bigint") return Number(value);
|
|
32
|
+
}
|
|
23
33
|
//#endregion
|
|
24
|
-
export { toOptionalNumber as i,
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=utils-DBnUQnZ-.mjs.map
|
|
34
|
+
export { toOptionalNumber as a, toOptionalIp as i, tagOwnNumericValue as n, toOptionalBool as r, formatIp as t };
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AddLinkRequest-DwUbSMXD.mjs","names":[],"sources":["../src/request/AddLinkRequest.ts"],"sourcesContent":["/**\n * Add Link Request - Download from ED2K link\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { StringTag } from '../ec/tag/Tag';\n\nexport class AddLinkRequest extends Request {\n\tconstructor(link: string) {\n\t\tsuper(ECOpCode.EC_OP_ADD_LINK);\n\n\t\tthis.addTag(new StringTag(ECTagName.EC_TAG_PARTFILE_ED2K_LINK, link));\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,iBAAb,cAAoC,QAAQ;CAC3C,YAAY,MAAc;EACzB,MAAA,CAA6B;EAE7B,KAAK,OAAO,IAAI,UAAA,KAA+C,IAAI,CAAC;CACrE;AACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClientQueueRequest-D9FaX5K9.mjs","names":[],"sources":["../src/request/ClientQueueRequest.ts"],"sourcesContent":["/**\n * Client Queue Request - Get client upload queue\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName, ECDetailLevel } from '../ec/Codes';\nimport { UByteTag } from '../ec/tag/Tag';\n\nexport class ClientQueueRequest extends Request {\n\tconstructor(detailLevel: ECDetailLevel = ECDetailLevel.EC_DETAIL_FULL) {\n\t\tsuper(ECOpCode.EC_OP_GET_ULOAD_QUEUE);\n\n\t\tthis.addTag(new UByteTag(ECTagName.EC_TAG_DETAIL_LEVEL, detailLevel));\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,qBAAb,cAAwC,QAAQ;CAC/C,YAAY,cAAA,GAA2D;EACtE,MAAA,EAAoC;EAEpC,KAAK,OAAO,IAAI,SAAA,GAAwC,WAAW,CAAC;CACrE;AACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClientQueueResponse-FVQBR_8b.mjs","names":[],"sources":["../src/response/ClientQueueResponse.ts"],"sourcesContent":["/**\n * Client Queue Response - Parse client upload queue\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { ECTagName } from '../ec/Codes';\nimport { findNumericTag, findTag } from '../ec/tag/Tag';\nimport { toOptionalBool, toOptionalIp, toOptionalNumber } from './utils';\nimport { AmuleUpDownClient } from '../model';\n\nexport interface ClientQueueResponse {\n\tclients: AmuleUpDownClient[];\n}\n\nexport class ClientQueueResponseParser {\n\tstatic fromPacket(packet: Packet): ClientQueueResponse {\n\t\treturn this.fromTags(packet.tags);\n\t}\n\n\tstatic fromTags(allTags: any[]): ClientQueueResponse {\n\t\tconst clients: AmuleUpDownClient[] = [];\n\n\t\t// Find all client tags\n\t\tconst clientTags = allTags.filter((tag) => tag.name === ECTagName.EC_TAG_CLIENT);\n\n\t\tfor (const clientTag of clientTags) {\n\t\t\tconst tags = clientTag.nestedTags || [];\n\n\t\t\tconst client: AmuleUpDownClient = {\n\t\t\t\tclientName: findTag(tags, ECTagName.EC_TAG_CLIENT_NAME)?.getValue(),\n\t\t\t\tuserHashHexString: findTag(tags, ECTagName.EC_TAG_CLIENT_HASH)?.getValue()?.toString('hex'),\n\t\t\t\tuserID: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_USER_ID)?.getInt(),\n\t\t\t\tscore: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_SCORE)?.getInt(),\n\t\t\t\tsoftware: findTag(tags, ECTagName.EC_TAG_CLIENT_SOFTWARE)?.getValue(),\n\t\t\t\tsoftVerStr: findTag(tags, ECTagName.EC_TAG_CLIENT_SOFT_VER_STR)?.getValue(),\n\t\t\t\tuserIP: toOptionalIp(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_USER_IP)?.getInt()),\n\t\t\t\tuserPort: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_USER_PORT)?.getInt(),\n\t\t\t\tsourceFrom: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_FROM)?.getLong()),\n\t\t\t\tserverIP: toOptionalIp(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_SERVER_IP)?.getInt()),\n\t\t\t\tserverPort: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_SERVER_PORT)?.getInt(),\n\t\t\t\tserverName: findTag(tags, ECTagName.EC_TAG_CLIENT_SERVER_NAME)?.getValue(),\n\n\t\t\t\tupSpeed: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_UP_SPEED)?.getLong()),\n\t\t\t\tdownSpeed: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_DOWN_SPEED)?.getLong()),\n\t\t\t\tuploadSession: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_UPLOAD_SESSION)?.getLong()),\n\t\t\t\ttransferredDown: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SIZE_XFER)?.getLong()),\n\t\t\t\tuploadedTotal: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_UPLOAD_TOTAL)?.getLong()),\n\t\t\t\tdownloadedTotal: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_DOWNLOAD_TOTAL)?.getLong()),\n\n\t\t\t\tuploadState: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_UPLOAD_STATE)?.getInt(),\n\t\t\t\tdownloadState: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_DOWNLOAD_STATE)?.getInt(),\n\t\t\t\tidentState: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_IDENT_STATE)?.getInt(),\n\t\t\t\textProtocol: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_EXT_PROTOCOL)?.getInt(),\n\t\t\t\twaitingPosition: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_WAITING_POSITION)?.getInt(),\n\t\t\t\tremoteQueueRank: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_REMOTE_QUEUE_RANK)?.getInt(),\n\t\t\t\toldRemoteQueueRank: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK)?.getInt(),\n\t\t\t\tobfuscationStatus: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_OBFUSCATION_STATUS)?.getInt(),\n\t\t\t\tkadPort: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_KAD_PORT)?.getInt(),\n\t\t\t\tfriendSlot: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_FRIEND_SLOT)?.getInt(),\n\t\t\t\tuploadFileId: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_UPLOAD_FILE)?.getLong()),\n\t\t\t\tuploadFilename: findTag(tags, ECTagName.EC_TAG_PARTFILE_NAME)?.getValue(),\n\t\t\t\trequestFileId: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_REQUEST_FILE)?.getLong()),\n\t\t\t\tremoteFilename: findTag(tags, ECTagName.EC_TAG_CLIENT_REMOTE_FILENAME)?.getValue(),\n\t\t\t\tdisableViewShared: toOptionalBool(findNumericTag(tags, ECTagName.EC_TAG_CLIENT_DISABLE_VIEW_SHARED)?.getInt()),\n\t\t\t\tversion: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_VERSION)?.getInt(),\n\t\t\t\tmodVersion: findTag(tags, ECTagName.EC_TAG_CLIENT_MOD_VERSION)?.getValue(),\n\t\t\t\tosInfo: findTag(tags, ECTagName.EC_TAG_CLIENT_OS_INFO)?.getValue(),\n\t\t\t\tavailableParts: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_AVAILABLE_PARTS)?.getInt(),\n\t\t\t\tpartStatus: findTag(tags, ECTagName.EC_TAG_CLIENT_PART_STATUS)?.getValue(),\n\t\t\t\tnextRequestedPart: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_NEXT_REQUESTED_PART)?.getInt(),\n\t\t\t\tlastDownloadingPart: findNumericTag(tags, ECTagName.EC_TAG_CLIENT_LAST_DOWNLOADING_PART)?.getInt(),\n\t\t\t\tuploadPartStatus: findTag(tags, ECTagName.EC_TAG_CLIENT_UPLOAD_PART_STATUS)?.getValue(),\n\t\t\t\t// Additional fields can be added here as needed\n\t\t\t};\n\n\t\t\tclients.push(client);\n\t\t}\n\n\t\treturn { clients };\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Codes-CjiW7Pdl.mjs","names":[],"sources":["../src/ec/Codes.ts"],"sourcesContent":["// EC Protocol constants and enumerations\n\nexport enum ProtocolVersion {\n\tEC_CURRENT_PROTOCOL_VERSION = 0x0204,\n}\n\nexport enum ECFlag {\n\tEC_FLAG_ZLIB = 0x00000001,\n\tEC_FLAG_UTF8_NUMBERS = 0x00000002,\n\tEC_FLAG_HAS_ID = 0x00000004,\n\tEC_FLAG_ACCEPTS = 0x00000010,\n\tEC_FLAG_UNKNOWN_MASK = 0xff7f7f08,\n}\n\nexport enum ECOpCode {\n\tEC_OP_NOOP = 0x01,\n\tEC_OP_AUTH_REQ = 0x02,\n\tEC_OP_AUTH_FAIL = 0x03,\n\tEC_OP_AUTH_OK = 0x04,\n\tEC_OP_FAILED = 0x05,\n\tEC_OP_STRINGS = 0x06,\n\tEC_OP_MISC_DATA = 0x07,\n\tEC_OP_SHUTDOWN = 0x08,\n\tEC_OP_ADD_LINK = 0x09,\n\tEC_OP_STAT_REQ = 0x0a,\n\tEC_OP_GET_CONNSTATE = 0x0b,\n\tEC_OP_STATS = 0x0c,\n\tEC_OP_GET_DLOAD_QUEUE = 0x0d,\n\tEC_OP_GET_ULOAD_QUEUE = 0x0e,\n\tEC_OP_GET_SHARED_FILES = 0x10,\n\tEC_OP_SHARED_SET_PRIO = 0x11,\n\tEC_OP_PARTFILE_SWAP_A4AF_THIS = 0x16,\n\tEC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO = 0x17,\n\tEC_OP_PARTFILE_SWAP_A4AF_OTHERS = 0x18,\n\tEC_OP_PARTFILE_PAUSE = 0x19,\n\tEC_OP_PARTFILE_RESUME = 0x1a,\n\tEC_OP_PARTFILE_STOP = 0x1b,\n\tEC_OP_PARTFILE_PRIO_SET = 0x1c,\n\tEC_OP_PARTFILE_DELETE = 0x1d,\n\tEC_OP_PARTFILE_SET_CAT = 0x1e,\n\tEC_OP_DLOAD_QUEUE = 0x1f,\n\tEC_OP_ULOAD_QUEUE = 0x20,\n\tEC_OP_SHARED_FILES = 0x22,\n\tEC_OP_SHAREDFILES_RELOAD = 0x23,\n\tEC_OP_RENAME_FILE = 0x25,\n\tEC_OP_SEARCH_START = 0x26,\n\tEC_OP_SEARCH_STOP = 0x27,\n\tEC_OP_SEARCH_RESULTS = 0x28,\n\tEC_OP_SEARCH_PROGRESS = 0x29,\n\tEC_OP_DOWNLOAD_SEARCH_RESULT = 0x2a,\n\tEC_OP_IPFILTER_RELOAD = 0x2b,\n\tEC_OP_GET_SERVER_LIST = 0x2c,\n\tEC_OP_SERVER_LIST = 0x2d,\n\tEC_OP_SERVER_DISCONNECT = 0x2e,\n\tEC_OP_SERVER_CONNECT = 0x2f,\n\tEC_OP_SERVER_REMOVE = 0x30,\n\tEC_OP_SERVER_ADD = 0x31,\n\tEC_OP_SERVER_UPDATE_FROM_URL = 0x32,\n\tEC_OP_ADDLOGLINE = 0x33,\n\tEC_OP_ADDDEBUGLOGLINE = 0x34,\n\tEC_OP_GET_LOG = 0x35,\n\tEC_OP_GET_DEBUGLOG = 0x36,\n\tEC_OP_GET_SERVERINFO = 0x37,\n\tEC_OP_LOG = 0x38,\n\tEC_OP_DEBUGLOG = 0x39,\n\tEC_OP_SERVERINFO = 0x3a,\n\tEC_OP_RESET_LOG = 0x3b,\n\tEC_OP_RESET_DEBUGLOG = 0x3c,\n\tEC_OP_CLEAR_SERVERINFO = 0x3d,\n\tEC_OP_GET_LAST_LOG_ENTRY = 0x3e,\n\tEC_OP_GET_PREFERENCES = 0x3f,\n\tEC_OP_SET_PREFERENCES = 0x40,\n\tEC_OP_CREATE_CATEGORY = 0x41,\n\tEC_OP_UPDATE_CATEGORY = 0x42,\n\tEC_OP_DELETE_CATEGORY = 0x43,\n\tEC_OP_GET_STATSGRAPHS = 0x44,\n\tEC_OP_STATSGRAPHS = 0x45,\n\tEC_OP_GET_STATSTREE = 0x46,\n\tEC_OP_STATSTREE = 0x47,\n\tEC_OP_KAD_START = 0x48,\n\tEC_OP_KAD_STOP = 0x49,\n\tEC_OP_CONNECT = 0x4a,\n\tEC_OP_DISCONNECT = 0x4b,\n\tEC_OP_KAD_UPDATE_FROM_URL = 0x4d,\n\tEC_OP_KAD_BOOTSTRAP_FROM_IP = 0x4e,\n\tEC_OP_AUTH_SALT = 0x4f,\n\tEC_OP_AUTH_PASSWD = 0x50,\n\tEC_OP_IPFILTER_UPDATE = 0x51,\n\tEC_OP_GET_UPDATE = 0x52,\n\tEC_OP_CLEAR_COMPLETED = 0x53,\n\tEC_OP_CLIENT_SWAP_TO_ANOTHER_FILE = 0x54,\n\tEC_OP_SHARED_FILE_SET_COMMENT = 0x55,\n\tEC_OP_SERVER_SET_STATIC_PRIO = 0x56,\n\tEC_OP_FRIEND = 0x57,\n}\n\nexport enum ECTagName {\n\tEC_TAG_STRING = 0x0000,\n\tEC_TAG_PASSWD_HASH = 0x0001,\n\tEC_TAG_PROTOCOL_VERSION = 0x0002,\n\tEC_TAG_VERSION_ID = 0x0003,\n\tEC_TAG_DETAIL_LEVEL = 0x0004,\n\tEC_TAG_CONNSTATE = 0x0005,\n\tEC_TAG_ED2K_ID = 0x0006,\n\tEC_TAG_LOG_TO_STATUS = 0x0007,\n\tEC_TAG_BOOTSTRAP_IP = 0x0008,\n\tEC_TAG_BOOTSTRAP_PORT = 0x0009,\n\tEC_TAG_CLIENT_ID = 0x000a,\n\tEC_TAG_PASSWD_SALT = 0x000b,\n\tEC_TAG_CAN_ZLIB = 0x000c,\n\tEC_TAG_CAN_UTF8_NUMBERS = 0x000d,\n\tEC_TAG_CAN_NOTIFY = 0x000e,\n\tEC_TAG_ECID = 0x000f,\n\tEC_TAG_KAD_ID = 0x0010,\n\tEC_TAG_CLIENT_NAME = 0x0100,\n\tEC_TAG_CLIENT_VERSION = 0x0101,\n\tEC_TAG_CLIENT_MOD = 0x0102,\n\tEC_TAG_STATS_UL_SPEED = 0x0200,\n\tEC_TAG_STATS_DL_SPEED = 0x0201,\n\tEC_TAG_STATS_UL_SPEED_LIMIT = 0x0202,\n\tEC_TAG_STATS_DL_SPEED_LIMIT = 0x0203,\n\tEC_TAG_STATS_UP_OVERHEAD = 0x0204,\n\tEC_TAG_STATS_DOWN_OVERHEAD = 0x0205,\n\tEC_TAG_STATS_TOTAL_SRC_COUNT = 0x0206,\n\tEC_TAG_STATS_BANNED_COUNT = 0x0207,\n\tEC_TAG_STATS_UL_QUEUE_LEN = 0x0208,\n\tEC_TAG_STATS_ED2K_USERS = 0x0209,\n\tEC_TAG_STATS_KAD_USERS = 0x020a,\n\tEC_TAG_STATS_ED2K_FILES = 0x020b,\n\tEC_TAG_STATS_KAD_FILES = 0x020c,\n\tEC_TAG_STATS_LOGGER_MESSAGE = 0x020d,\n\tEC_TAG_STATS_KAD_FIREWALLED_UDP = 0x020e,\n\tEC_TAG_STATS_KAD_INDEXED_SOURCES = 0x020f,\n\tEC_TAG_STATS_KAD_INDEXED_KEYWORDS = 0x0210,\n\tEC_TAG_STATS_KAD_INDEXED_NOTES = 0x0211,\n\tEC_TAG_STATS_KAD_INDEXED_LOAD = 0x0212,\n\tEC_TAG_STATS_KAD_IP_ADRESS = 0x0213,\n\tEC_TAG_STATS_BUDDY_STATUS = 0x0214,\n\tEC_TAG_STATS_BUDDY_IP = 0x0215,\n\tEC_TAG_STATS_BUDDY_PORT = 0x0216,\n\tEC_TAG_STATS_KAD_IN_LAN_MODE = 0x0217,\n\tEC_TAG_STATS_TOTAL_SENT_BYTES = 0x0218,\n\tEC_TAG_STATS_TOTAL_RECEIVED_BYTES = 0x0219,\n\tEC_TAG_STATS_SHARED_FILE_COUNT = 0x021a,\n\tEC_TAG_STATS_KAD_NODES = 0x021b,\n\tEC_TAG_PARTFILE = 0x0300,\n\tEC_TAG_PARTFILE_NAME = 0x0301,\n\tEC_TAG_PARTFILE_PARTMETID = 0x0302,\n\tEC_TAG_PARTFILE_SIZE_FULL = 0x0303,\n\tEC_TAG_PARTFILE_SIZE_XFER = 0x0304,\n\tEC_TAG_PARTFILE_SIZE_XFER_UP = 0x0305,\n\tEC_TAG_PARTFILE_SIZE_DONE = 0x0306,\n\tEC_TAG_PARTFILE_SPEED = 0x0307,\n\tEC_TAG_PARTFILE_STATUS = 0x0308,\n\tEC_TAG_PARTFILE_PRIO = 0x0309,\n\tEC_TAG_PARTFILE_SOURCE_COUNT = 0x030a,\n\tEC_TAG_PARTFILE_SOURCE_COUNT_A4AF = 0x030b,\n\tEC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT = 0x030c,\n\tEC_TAG_PARTFILE_SOURCE_COUNT_XFER = 0x030d,\n\tEC_TAG_PARTFILE_ED2K_LINK = 0x030e,\n\tEC_TAG_PARTFILE_CAT = 0x030f,\n\tEC_TAG_PARTFILE_LAST_RECV = 0x0310,\n\tEC_TAG_PARTFILE_LAST_SEEN_COMP = 0x0311,\n\tEC_TAG_PARTFILE_PART_STATUS = 0x0312,\n\tEC_TAG_PARTFILE_GAP_STATUS = 0x0313,\n\tEC_TAG_PARTFILE_REQ_STATUS = 0x0314,\n\tEC_TAG_PARTFILE_SOURCE_NAMES = 0x0315,\n\tEC_TAG_PARTFILE_COMMENTS = 0x0316,\n\tEC_TAG_PARTFILE_STOPPED = 0x0317,\n\tEC_TAG_PARTFILE_DOWNLOAD_ACTIVE = 0x0318,\n\tEC_TAG_PARTFILE_LOST_CORRUPTION = 0x0319,\n\tEC_TAG_PARTFILE_GAINED_COMPRESSION = 0x031a,\n\tEC_TAG_PARTFILE_SAVED_ICH = 0x031b,\n\tEC_TAG_PARTFILE_SOURCE_NAMES_COUNTS = 0x031c,\n\tEC_TAG_PARTFILE_AVAILABLE_PARTS = 0x031d,\n\tEC_TAG_PARTFILE_HASH = 0x031e,\n\tEC_TAG_PARTFILE_SHARED = 0x031f,\n\tEC_TAG_PARTFILE_HASHED_PART_COUNT = 0x0320,\n\tEC_TAG_PARTFILE_A4AFAUTO = 0x0321,\n\tEC_TAG_PARTFILE_A4AF_SOURCES = 0x0322,\n\tEC_TAG_KNOWNFILE = 0x0400,\n\tEC_TAG_KNOWNFILE_XFERRED = 0x0401,\n\tEC_TAG_KNOWNFILE_XFERRED_ALL = 0x0402,\n\tEC_TAG_KNOWNFILE_REQ_COUNT = 0x0403,\n\tEC_TAG_KNOWNFILE_REQ_COUNT_ALL = 0x0404,\n\tEC_TAG_KNOWNFILE_ACCEPT_COUNT = 0x0405,\n\tEC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL = 0x0406,\n\tEC_TAG_KNOWNFILE_AICH_MASTERHASH = 0x0407,\n\tEC_TAG_KNOWNFILE_FILENAME = 0x0408,\n\tEC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW = 0x0409,\n\tEC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH = 0x040a,\n\tEC_TAG_KNOWNFILE_PRIO = 0x040b,\n\tEC_TAG_KNOWNFILE_ON_QUEUE = 0x040c,\n\tEC_TAG_KNOWNFILE_COMPLETE_SOURCES = 0x040d,\n\tEC_TAG_KNOWNFILE_COMMENT = 0x040e,\n\tEC_TAG_KNOWNFILE_RATING = 0x040f,\n\tEC_TAG_SERVER = 0x0500,\n\tEC_TAG_SERVER_NAME = 0x0501,\n\tEC_TAG_SERVER_DESC = 0x0502,\n\tEC_TAG_SERVER_ADDRESS = 0x0503,\n\tEC_TAG_SERVER_PING = 0x0504,\n\tEC_TAG_SERVER_USERS = 0x0505,\n\tEC_TAG_SERVER_USERS_MAX = 0x0506,\n\tEC_TAG_SERVER_FILES = 0x0507,\n\tEC_TAG_SERVER_PRIO = 0x0508,\n\tEC_TAG_SERVER_FAILED = 0x0509,\n\tEC_TAG_SERVER_STATIC = 0x050a,\n\tEC_TAG_SERVER_VERSION = 0x050b,\n\tEC_TAG_SERVER_IP = 0x050c,\n\tEC_TAG_SERVER_PORT = 0x050d,\n\tEC_TAG_CLIENT = 0x0600,\n\tEC_TAG_CLIENT_SOFTWARE = 0x0601,\n\tEC_TAG_CLIENT_SCORE = 0x0602,\n\tEC_TAG_CLIENT_HASH = 0x0603,\n\tEC_TAG_CLIENT_FRIEND_SLOT = 0x0604,\n\tEC_TAG_CLIENT_WAIT_TIME = 0x0605,\n\tEC_TAG_CLIENT_XFER_TIME = 0x0606,\n\tEC_TAG_CLIENT_QUEUE_TIME = 0x0607,\n\tEC_TAG_CLIENT_LAST_TIME = 0x0608,\n\tEC_TAG_CLIENT_UPLOAD_SESSION = 0x0609,\n\tEC_TAG_CLIENT_UPLOAD_TOTAL = 0x060a,\n\tEC_TAG_CLIENT_DOWNLOAD_TOTAL = 0x060b,\n\tEC_TAG_CLIENT_DOWNLOAD_STATE = 0x060c,\n\tEC_TAG_CLIENT_UP_SPEED = 0x060d,\n\tEC_TAG_CLIENT_DOWN_SPEED = 0x060e,\n\tEC_TAG_CLIENT_FROM = 0x060f,\n\tEC_TAG_CLIENT_USER_IP = 0x0610,\n\tEC_TAG_CLIENT_USER_PORT = 0x0611,\n\tEC_TAG_CLIENT_SERVER_IP = 0x0612,\n\tEC_TAG_CLIENT_SERVER_PORT = 0x0613,\n\tEC_TAG_CLIENT_SERVER_NAME = 0x0614,\n\tEC_TAG_CLIENT_SOFT_VER_STR = 0x0615,\n\tEC_TAG_CLIENT_WAITING_POSITION = 0x0616,\n\tEC_TAG_CLIENT_IDENT_STATE = 0x0617,\n\tEC_TAG_CLIENT_OBFUSCATION_STATUS = 0x0618,\n\tEC_TAG_CLIENT_CURRENTLYUNUSED1 = 0x0619,\n\tEC_TAG_CLIENT_REMOTE_QUEUE_RANK = 0x061a,\n\tEC_TAG_CLIENT_DISABLE_VIEW_SHARED = 0x061b,\n\tEC_TAG_CLIENT_UPLOAD_STATE = 0x061c,\n\tEC_TAG_CLIENT_EXT_PROTOCOL = 0x061d,\n\tEC_TAG_CLIENT_USER_ID = 0x061e,\n\tEC_TAG_CLIENT_UPLOAD_FILE = 0x061f,\n\tEC_TAG_CLIENT_REQUEST_FILE = 0x0620,\n\tEC_TAG_CLIENT_A4AF_FILES = 0x0621,\n\tEC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK = 0x0622,\n\tEC_TAG_CLIENT_KAD_PORT = 0x0623,\n\tEC_TAG_CLIENT_PART_STATUS = 0x0624,\n\tEC_TAG_CLIENT_NEXT_REQUESTED_PART = 0x0625,\n\tEC_TAG_CLIENT_LAST_DOWNLOADING_PART = 0x0626,\n\tEC_TAG_CLIENT_REMOTE_FILENAME = 0x0627,\n\tEC_TAG_CLIENT_MOD_VERSION = 0x0628,\n\tEC_TAG_CLIENT_OS_INFO = 0x0629,\n\tEC_TAG_CLIENT_AVAILABLE_PARTS = 0x062a,\n\tEC_TAG_CLIENT_UPLOAD_PART_STATUS = 0x062b,\n\tEC_TAG_SEARCHFILE = 0x0700,\n\tEC_TAG_SEARCH_TYPE = 0x0701,\n\tEC_TAG_SEARCH_NAME = 0x0702,\n\tEC_TAG_SEARCH_MIN_SIZE = 0x0703,\n\tEC_TAG_SEARCH_MAX_SIZE = 0x0704,\n\tEC_TAG_SEARCH_FILE_TYPE = 0x0705,\n\tEC_TAG_SEARCH_EXTENSION = 0x0706,\n\tEC_TAG_SEARCH_AVAILABILITY = 0x0707,\n\tEC_TAG_SEARCH_STATUS = 0x0708,\n\tEC_TAG_SEARCH_PARENT = 0x0709,\n\tEC_TAG_FRIEND = 0x0800,\n\tEC_TAG_FRIEND_NAME = 0x0801,\n\tEC_TAG_FRIEND_HASH = 0x0802,\n\tEC_TAG_FRIEND_IP = 0x0803,\n\tEC_TAG_FRIEND_PORT = 0x0804,\n\tEC_TAG_FRIEND_CLIENT = 0x0805,\n\tEC_TAG_FRIEND_ADD = 0x0806,\n\tEC_TAG_FRIEND_REMOVE = 0x0807,\n\tEC_TAG_FRIEND_FRIENDSLOT = 0x0808,\n\tEC_TAG_FRIEND_SHARED = 0x0809,\n\tEC_TAG_SELECT_PREFS = 0x1000,\n\tEC_TAG_PREFS_CATEGORIES = 0x1100,\n\tEC_TAG_CATEGORY = 0x1101,\n\tEC_TAG_CATEGORY_TITLE = 0x1102,\n\tEC_TAG_CATEGORY_PATH = 0x1103,\n\tEC_TAG_CATEGORY_COMMENT = 0x1104,\n\tEC_TAG_CATEGORY_COLOR = 0x1105,\n\tEC_TAG_CATEGORY_PRIO = 0x1106,\n\tEC_TAG_PREFS_GENERAL = 0x1200,\n\tEC_TAG_USER_NICK = 0x1201,\n\tEC_TAG_USER_HASH = 0x1202,\n\tEC_TAG_USER_HOST = 0x1203,\n\tEC_TAG_GENERAL_CHECK_NEW_VERSION = 0x1204,\n\tEC_TAG_PREFS_CONNECTIONS = 0x1300,\n\tEC_TAG_CONN_DL_CAP = 0x1301,\n\tEC_TAG_CONN_UL_CAP = 0x1302,\n\tEC_TAG_CONN_MAX_DL = 0x1303,\n\tEC_TAG_CONN_MAX_UL = 0x1304,\n\tEC_TAG_CONN_SLOT_ALLOCATION = 0x1305,\n\tEC_TAG_CONN_TCP_PORT = 0x1306,\n\tEC_TAG_CONN_UDP_PORT = 0x1307,\n\tEC_TAG_CONN_UDP_DISABLE = 0x1308,\n\tEC_TAG_CONN_MAX_FILE_SOURCES = 0x1309,\n\tEC_TAG_CONN_MAX_CONN = 0x130a,\n\tEC_TAG_CONN_AUTOCONNECT = 0x130b,\n\tEC_TAG_CONN_RECONNECT = 0x130c,\n\tEC_TAG_NETWORK_ED2K = 0x130d,\n\tEC_TAG_NETWORK_KADEMLIA = 0x130e,\n\tEC_TAG_PREFS_MESSAGEFILTER = 0x1400,\n\tEC_TAG_MSGFILTER_ENABLED = 0x1401,\n\tEC_TAG_MSGFILTER_ALL = 0x1402,\n\tEC_TAG_MSGFILTER_FRIENDS = 0x1403,\n\tEC_TAG_MSGFILTER_SECURE = 0x1404,\n\tEC_TAG_MSGFILTER_BY_KEYWORD = 0x1405,\n\tEC_TAG_MSGFILTER_KEYWORDS = 0x1406,\n\tEC_TAG_PREFS_REMOTECTRL = 0x1500,\n\tEC_TAG_WEBSERVER_AUTORUN = 0x1501,\n\tEC_TAG_WEBSERVER_PORT = 0x1502,\n\tEC_TAG_WEBSERVER_GUEST = 0x1503,\n\tEC_TAG_WEBSERVER_USEGZIP = 0x1504,\n\tEC_TAG_WEBSERVER_REFRESH = 0x1505,\n\tEC_TAG_WEBSERVER_TEMPLATE = 0x1506,\n\tEC_TAG_PREFS_ONLINESIG = 0x1600,\n\tEC_TAG_ONLINESIG_ENABLED = 0x1601,\n\tEC_TAG_PREFS_SERVERS = 0x1700,\n\tEC_TAG_SERVERS_REMOVE_DEAD = 0x1701,\n\tEC_TAG_SERVERS_DEAD_SERVER_RETRIES = 0x1702,\n\tEC_TAG_SERVERS_AUTO_UPDATE = 0x1703,\n\tEC_TAG_SERVERS_URL_LIST = 0x1704,\n\tEC_TAG_SERVERS_ADD_FROM_SERVER = 0x1705,\n\tEC_TAG_SERVERS_ADD_FROM_CLIENT = 0x1706,\n\tEC_TAG_SERVERS_USE_SCORE_SYSTEM = 0x1707,\n\tEC_TAG_SERVERS_SMART_ID_CHECK = 0x1708,\n\tEC_TAG_SERVERS_SAFE_SERVER_CONNECT = 0x1709,\n\tEC_TAG_SERVERS_AUTOCONN_STATIC_ONLY = 0x170a,\n\tEC_TAG_SERVERS_MANUAL_HIGH_PRIO = 0x170b,\n\tEC_TAG_SERVERS_UPDATE_URL = 0x170c,\n\tEC_TAG_PREFS_FILES = 0x1800,\n\tEC_TAG_FILES_ICH_ENABLED = 0x1801,\n\tEC_TAG_FILES_AICH_TRUST = 0x1802,\n\tEC_TAG_FILES_NEW_PAUSED = 0x1803,\n\tEC_TAG_FILES_NEW_AUTO_DL_PRIO = 0x1804,\n\tEC_TAG_FILES_PREVIEW_PRIO = 0x1805,\n\tEC_TAG_FILES_NEW_AUTO_UL_PRIO = 0x1806,\n\tEC_TAG_FILES_UL_FULL_CHUNKS = 0x1807,\n\tEC_TAG_FILES_START_NEXT_PAUSED = 0x1808,\n\tEC_TAG_FILES_RESUME_SAME_CAT = 0x1809,\n\tEC_TAG_FILES_SAVE_SOURCES = 0x180a,\n\tEC_TAG_FILES_EXTRACT_METADATA = 0x180b,\n\tEC_TAG_FILES_ALLOC_FULL_SIZE = 0x180c,\n\tEC_TAG_FILES_CHECK_FREE_SPACE = 0x180d,\n\tEC_TAG_FILES_MIN_FREE_SPACE = 0x180e,\n\tEC_TAG_FILES_CREATE_NORMAL = 0x180f,\n\tEC_TAG_PREFS_DIRECTORIES = 0x1a00,\n\tEC_TAG_DIRECTORIES_INCOMING = 0x1a01,\n\tEC_TAG_DIRECTORIES_TEMP = 0x1a02,\n\tEC_TAG_DIRECTORIES_SHARED = 0x1a03,\n\tEC_TAG_DIRECTORIES_SHARE_HIDDEN = 0x1a04,\n\tEC_TAG_PREFS_STATISTICS = 0x1b00,\n\tEC_TAG_STATSGRAPH_WIDTH = 0x1b01,\n\tEC_TAG_STATSGRAPH_SCALE = 0x1b02,\n\tEC_TAG_STATSGRAPH_LAST = 0x1b03,\n\tEC_TAG_STATSGRAPH_DATA = 0x1b04,\n\tEC_TAG_STATTREE_CAPPING = 0x1b05,\n\tEC_TAG_STATTREE_NODE = 0x1b06,\n\tEC_TAG_STAT_NODE_VALUE = 0x1b07,\n\tEC_TAG_STAT_VALUE_TYPE = 0x1b08,\n\tEC_TAG_STATTREE_NODEID = 0x1b09,\n\tEC_TAG_PREFS_SECURITY = 0x1c00,\n\tEC_TAG_SECURITY_CAN_SEE_SHARES = 0x1c01,\n\tEC_TAG_IPFILTER_CLIENTS = 0x1c02,\n\tEC_TAG_IPFILTER_SERVERS = 0x1c03,\n\tEC_TAG_IPFILTER_AUTO_UPDATE = 0x1c04,\n\tEC_TAG_IPFILTER_UPDATE_URL = 0x1c05,\n\tEC_TAG_IPFILTER_LEVEL = 0x1c06,\n\tEC_TAG_IPFILTER_FILTER_LAN = 0x1c07,\n\tEC_TAG_SECURITY_USE_SECIDENT = 0x1c08,\n\tEC_TAG_SECURITY_OBFUSCATION_SUPPORTED = 0x1c09,\n\tEC_TAG_SECURITY_OBFUSCATION_REQUESTED = 0x1c0a,\n\tEC_TAG_SECURITY_OBFUSCATION_REQUIRED = 0x1c0b,\n\tEC_TAG_PREFS_CORETWEAKS = 0x1d00,\n\tEC_TAG_CORETW_MAX_CONN_PER_FIVE = 0x1d01,\n\tEC_TAG_CORETW_VERBOSE = 0x1d02,\n\tEC_TAG_CORETW_FILEBUFFER = 0x1d03,\n\tEC_TAG_CORETW_UL_QUEUE = 0x1d04,\n\tEC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT = 0x1d05,\n\tEC_TAG_PREFS_KADEMLIA = 0x1e00,\n\tEC_TAG_KADEMLIA_UPDATE_URL = 0x1e01,\n\tEC_TAG_UNKNOWN = 0xffff,\n}\n\nexport enum ECDetailLevel {\n\tEC_DETAIL_CMD = 0x00,\n\tEC_DETAIL_WEB = 0x01,\n\tEC_DETAIL_FULL = 0x02,\n\tEC_DETAIL_UPDATE = 0x03,\n\tEC_DETAIL_INC_UPDATE = 0x04,\n}\n\nexport enum ECSearchType {\n\tEC_SEARCH_LOCAL = 0x00,\n\tEC_SEARCH_GLOBAL = 0x01,\n\tEC_SEARCH_KAD = 0x02,\n\tEC_SEARCH_WEB = 0x03,\n}\n\nexport enum ECSearchFileDownloadStatus {\n\tNEW = 0,\n\tDOWNLOADED = 1,\n\tQUEUED = 2,\n\tCANCELED = 3,\n\tQUEUEDCANCELED = 4,\n}\n\nexport enum ECStatTreeNodeValueType {\n\tEC_VALUE_INTEGER = 0x00,\n\tEC_VALUE_ISTRING = 0x01,\n\tEC_VALUE_BYTES = 0x02,\n\tEC_VALUE_ISHORT = 0x03,\n\tEC_VALUE_TIME = 0x04,\n\tEC_VALUE_SPEED = 0x05,\n\tEC_VALUE_STRING = 0x06,\n\tEC_VALUE_DOUBLE = 0x07,\n}\n\nexport enum EcPrefs {\n\tEC_PREFS_CATEGORIES = 0x00000001,\n\tEC_PREFS_GENERAL = 0x00000002,\n\tEC_PREFS_CONNECTIONS = 0x00000004,\n\tEC_PREFS_MESSAGEFILTER = 0x00000008,\n\tEC_PREFS_REMOTECONTROLS = 0x00000010,\n\tEC_PREFS_ONLINESIG = 0x00000020,\n\tEC_PREFS_SERVERS = 0x00000040,\n\tEC_PREFS_FILES = 0x00000080,\n\tEC_PREFS_DIRECTORIES = 0x00000200,\n\tEC_PREFS_STATISTICS = 0x00000400,\n\tEC_PREFS_SECURITY = 0x00000800,\n\tEC_PREFS_CORETWEAKS = 0x00001000,\n\tEC_PREFS_KADEMLIA = 0x00002000,\n}\n\nexport enum ECTagType {\n\tEC_TAGTYPE_UNKNOWN = 0,\n\tEC_TAGTYPE_CUSTOM = 1,\n\tEC_TAGTYPE_UINT8 = 2,\n\tEC_TAGTYPE_UINT16 = 3,\n\tEC_TAGTYPE_UINT32 = 4,\n\tEC_TAGTYPE_UINT64 = 5,\n\tEC_TAGTYPE_STRING = 6,\n\tEC_TAGTYPE_DOUBLE = 7,\n\tEC_TAGTYPE_IPV4 = 8,\n\tEC_TAGTYPE_HASH16 = 9,\n\tEC_TAGTYPE_UINT128 = 10,\n}\n\n// Type sizes\nexport const LEN_UBYTE = 1;\nexport const LEN_USHORT = 2;\nexport const LEN_UINT = 4;\nexport const LEN_ULONG = 8;\nexport const LEN_UINT128 = 16;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCategoryRequest-Br6yfDhZ.mjs","names":[],"sources":["../src/request/CreateCategoryRequest.ts"],"sourcesContent":["/**\n * Create Category Request - Create a new category\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { StringTag, UByteTag, UIntTag } from '../ec/tag/Tag';\nimport type { AmuleCategory } from '../model';\n\nexport class CreateCategoryRequest extends Request {\n\tconstructor(category: AmuleCategory) {\n\t\tsuper(ECOpCode.EC_OP_CREATE_CATEGORY);\n\n\t\tconst subtags = [\n\t\t\tnew StringTag(ECTagName.EC_TAG_CATEGORY_TITLE, category.name),\n\t\t\tnew StringTag(ECTagName.EC_TAG_CATEGORY_PATH, category.path),\n\t\t\tnew StringTag(ECTagName.EC_TAG_CATEGORY_COMMENT, category.comment),\n\t\t\tnew UIntTag(ECTagName.EC_TAG_CATEGORY_COLOR, category.color),\n\t\t\tnew UByteTag(ECTagName.EC_TAG_CATEGORY_PRIO, category.priority),\n\t\t];\n\n\t\t// Category tag is a container for all category properties\n\t\tthis.addTag(new UIntTag(ECTagName.EC_TAG_CATEGORY, 0, subtags));\n\t}\n}\n"],"mappings":";;;;;;;AASA,IAAa,wBAAb,cAA2C,QAAQ;CAClD,YAAY,UAAyB;EACpC,MAAA,EAAoC;EAEpC,MAAM,UAAU;GACf,IAAI,UAAA,MAA2C,SAAS,IAAI;GAC5D,IAAI,UAAA,MAA0C,SAAS,IAAI;GAC3D,IAAI,UAAA,MAA6C,SAAS,OAAO;GACjE,IAAI,QAAA,MAAyC,SAAS,KAAK;GAC3D,IAAI,SAAA,MAAyC,SAAS,QAAQ;EAC/D;EAGA,KAAK,OAAO,IAAI,QAAA,MAAmC,GAAG,OAAO,CAAC;CAC/D;AACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteCategoryRequest-C2-p6sx0.mjs","names":[],"sources":["../src/request/DeleteCategoryRequest.ts"],"sourcesContent":["/**\n * Delete Category Request - Delete an existing category\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { UIntTag } from '../ec/tag/Tag';\n\nexport class DeleteCategoryRequest extends Request {\n\tconstructor(id: number) {\n\t\tsuper(ECOpCode.EC_OP_DELETE_CATEGORY);\n\n\t\tthis.addTag(new UIntTag(ECTagName.EC_TAG_CATEGORY, id));\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,wBAAb,cAA2C,QAAQ;CAClD,YAAY,IAAY;EACvB,MAAA,EAAoC;EAEpC,KAAK,OAAO,IAAI,QAAA,MAAmC,EAAE,CAAC;CACvD;AACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadCommandRequest-CaULjfNi.mjs","names":[],"sources":["../src/request/DownloadCommandRequest.ts"],"sourcesContent":["/**\n * Download Command Request - Send commands to files in download queue\n * Commands: PAUSE, RESUME, STOP, DELETE, SWAP_A4AF_THIS, etc.\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { Hash16Tag } from '../ec/tag/Tag';\nimport { DownloadCommand } from '../model';\n\nexport class DownloadCommandRequest extends Request {\n\tconstructor(hash: Buffer, command: DownloadCommand) {\n\t\t// The command IS the opcode\n\t\tsuper(DownloadCommandRequest.commandToOpCode(command));\n\n\t\tthis.addTag(new Hash16Tag(ECTagName.EC_TAG_PARTFILE, hash));\n\t}\n\n\tprivate static commandToOpCode(command: DownloadCommand): ECOpCode {\n\t\tswitch (command) {\n\t\t\tcase DownloadCommand.SWAP_A4AF_THIS:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_SWAP_A4AF_THIS;\n\t\t\tcase DownloadCommand.SWAP_A4AF_THIS_AUTO:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO;\n\t\t\tcase DownloadCommand.SWAP_A4AF_OTHERS:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_SWAP_A4AF_OTHERS;\n\t\t\tcase DownloadCommand.PAUSE:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_PAUSE;\n\t\t\tcase DownloadCommand.RESUME:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_RESUME;\n\t\t\tcase DownloadCommand.STOP:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_STOP;\n\t\t\tcase DownloadCommand.DELETE:\n\t\t\t\treturn ECOpCode.EC_OP_PARTFILE_DELETE;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown download command: ${command}`);\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,yBAAb,MAAa,+BAA+B,QAAQ;CACnD,YAAY,MAAc,SAA0B;EAEnD,MAAM,uBAAuB,gBAAgB,OAAO,CAAC;EAErD,KAAK,OAAO,IAAI,UAAA,KAAqC,IAAI,CAAC;CAC3D;CAEA,OAAe,gBAAgB,SAAoC;EAClE,QAAQ,SAAR;GACC,KAAA,IACC,OAAA;GACD,KAAA,IACC,OAAA;GACD,KAAA,IACC,OAAA;GACD,KAAA,IACC,OAAA;GACD,KAAA,IACC,OAAA;GACD,KAAA,IACC,OAAA;GACD,KAAA,IACC,OAAA;GACD,SACC,MAAM,IAAI,MAAM,6BAA6B,SAAS;EACxD;CACD;AACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadFileRequest-CcNqsBo7.mjs","names":[],"sources":["../src/request/DownloadFileRequest.ts"],"sourcesContent":["/**\n * Download File Request - Download a file from search results\n *\n * This request downloads a file that was found in search results.\n * It uses the file hash to identify the file to download.\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { Hash16Tag } from '../ec/tag/Tag';\n\nexport class DownloadFileRequest extends Request {\n\tconstructor(hash: Buffer) {\n\t\tsuper(ECOpCode.EC_OP_DOWNLOAD_SEARCH_RESULT);\n\n\t\t// Only send the hash - same as jamule DownloadSearchResultRequest\n\t\tthis.addTag(new Hash16Tag(ECTagName.EC_TAG_PARTFILE, hash));\n\t}\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,sBAAb,cAAyC,QAAQ;CAChD,YAAY,MAAc;EACzB,MAAA,EAA2C;EAG3C,KAAK,OAAO,IAAI,UAAA,KAAqC,IAAI,CAAC;CAC3D;AACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadQueueRequest-bd7lFiMj.mjs","names":[],"sources":["../src/request/DownloadQueueRequest.ts"],"sourcesContent":["/**\n * Download Queue Request - Get download queue\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName, ECDetailLevel } from '../ec/Codes';\nimport { UByteTag } from '../ec/tag/Tag';\n\nexport class DownloadQueueRequest extends Request {\n\tconstructor(detailLevel: ECDetailLevel = ECDetailLevel.EC_DETAIL_FULL) {\n\t\tsuper(ECOpCode.EC_OP_GET_DLOAD_QUEUE);\n\n\t\tthis.addTag(new UByteTag(ECTagName.EC_TAG_DETAIL_LEVEL, detailLevel));\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,uBAAb,cAA0C,QAAQ;CACjD,YAAY,cAAA,GAA2D;EACtE,MAAA,EAAoC;EAEpC,KAAK,OAAO,IAAI,SAAA,GAAwC,WAAW,CAAC;CACrE;AACD"}
|