amule-ec-client 0.6.0 → 0.6.1

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 (82) hide show
  1. package/dist/{AddLinkRequest-DwUbSMXD.mjs → AddLinkRequest-D2IME4eb.js} +3 -5
  2. package/dist/{ClientQueueRequest-D9FaX5K9.mjs → ClientQueueRequest-DFfCiNcz.js} +3 -5
  3. package/dist/{ClientQueueResponse-FVQBR_8b.mjs → ClientQueueResponse-JTrBqrr1.js} +3 -5
  4. package/dist/{Codes-CjiW7Pdl.mjs → Codes-CjiW7Pdl.js} +0 -2
  5. package/dist/{CreateCategoryRequest-Br6yfDhZ.mjs → CreateCategoryRequest-CRUMcPo5.js} +3 -5
  6. package/dist/{DeleteCategoryRequest-C2-p6sx0.mjs → DeleteCategoryRequest-C8v9oGZ-.js} +3 -5
  7. package/dist/{DownloadCommandRequest-CaULjfNi.mjs → DownloadCommandRequest-B3KV_bvm.js} +4 -6
  8. package/dist/{DownloadFileRequest-CcNqsBo7.mjs → DownloadFileRequest-BjrroO3h.js} +3 -5
  9. package/dist/{DownloadQueueRequest-bd7lFiMj.mjs → DownloadQueueRequest-Dil5hl3D.js} +3 -5
  10. package/dist/{DownloadQueueResponse-DyP1rLTV.mjs → DownloadQueueResponse-DUam_zNf.js} +4 -6
  11. package/dist/{GetPreferencesRequest-C94Su9IH.mjs → GetPreferencesRequest-DsxlghqT.js} +3 -5
  12. package/dist/{PreferencesDetailsResponse-BjMxbvVY.mjs → PreferencesDetailsResponse-DapscVQi.js} +2 -4
  13. package/dist/{PreferencesResponse-Dth-n2sA.mjs → PreferencesResponse-8n1STWUZ.js} +2 -4
  14. package/dist/{ReloadSharedFilesRequest-CPwAEJYG.mjs → ReloadSharedFilesRequest-kt0Pxs8A.js} +2 -4
  15. package/dist/{Request-C0UUuQIX.mjs → Request-C0UUuQIX.js} +0 -2
  16. package/dist/{SearchProgressResponse-Bputc9Ww.mjs → SearchProgressResponse-C1CdzKnz.js} +2 -4
  17. package/dist/{SearchRequest-CNqz-K1Z.mjs → SearchRequest-DQnKfA5Z.js} +4 -6
  18. package/dist/{SearchResultsRequest-DKG508KF.mjs → SearchResultsRequest-2ejFGQmQ.js} +2 -4
  19. package/dist/{SearchResultsResponse-ChNrKJ6_.mjs → SearchResultsResponse-DwmvbQop.js} +2 -4
  20. package/dist/{SearchStatusRequest-Bv6iaC9Y.mjs → SearchStatusRequest-B_xr4-72.js} +2 -4
  21. package/dist/{SearchStopRequest-rET-2Nsz.mjs → SearchStopRequest-8hwXobty.js} +2 -4
  22. package/dist/{ServerConnectRequest-CcO2-Eqd.mjs → ServerConnectRequest-BhNpGiEJ.js} +3 -5
  23. package/dist/{ServerDisconnectRequest-DEORM3SF.mjs → ServerDisconnectRequest-BjCitLtU.js} +2 -4
  24. package/dist/{ServerListRequest-FwFQBp12.mjs → ServerListRequest-BWXLGJib.js} +2 -4
  25. package/dist/{ServerListResponse-ZAKSSCPZ.mjs → ServerListResponse-BUJ7sz5p.js} +3 -5
  26. package/dist/{ServerUpdateFromUrlRequest-D4xBqJDJ.mjs → ServerUpdateFromUrlRequest-K8C_d0UQ.js} +3 -5
  27. package/dist/{SetFileCategoryRequest-BwEPJVeR.mjs → SetFileCategoryRequest-VwroLBTV.js} +3 -5
  28. package/dist/{SetPreferencesRequest-D2fVIH3P.mjs → SetPreferencesRequest-KZ23VaBY.js} +3 -5
  29. package/dist/{SharedFilePriorityRequest-j6ImgagV.mjs → SharedFilePriorityRequest-7BriqAcr.js} +3 -5
  30. package/dist/{SharedFilesRequest-D2M3K0eB.mjs → SharedFilesRequest-B72XyRcA.js} +3 -5
  31. package/dist/{SharedFilesResponse-BiXT_oCx.mjs → SharedFilesResponse-CkqvYd3N.js} +3 -5
  32. package/dist/{StatsRequest-B8v9LLHG.mjs → StatsRequest-CGGumOOx.js} +3 -5
  33. package/dist/{StatsResponse-BVUxNPbz.mjs → StatsResponse-DxQk686g.js} +2 -4
  34. package/dist/{Tag-CZF6BRMY.mjs → Tag-CZF6BRMY.js} +0 -2
  35. package/dist/{UpdateCategoryRequest-CgzH7SxP.mjs → UpdateCategoryRequest-CzKJa_rC.js} +3 -5
  36. package/dist/{UpdateRequest-Bunl73Ga.mjs → UpdateRequest-g2ReOQ5m.js} +3 -5
  37. package/dist/{UpdateResponse-1LhyH9Zf.mjs → UpdateResponse-CGwVjn0Y.js} +7 -9
  38. package/dist/{download-details-OM0FJUhZ.mjs → download-details-OM0FJUhZ.js} +0 -2
  39. package/dist/{index.d.mts → index.d.ts} +1 -2
  40. package/dist/{index.mjs → index.js} +39 -41
  41. package/dist/{utils-DBnUQnZ-.mjs → utils-DBnUQnZ-.js} +0 -2
  42. package/package.json +1 -1
  43. package/dist/AddLinkRequest-DwUbSMXD.mjs.map +0 -1
  44. package/dist/ClientQueueRequest-D9FaX5K9.mjs.map +0 -1
  45. package/dist/ClientQueueResponse-FVQBR_8b.mjs.map +0 -1
  46. package/dist/Codes-CjiW7Pdl.mjs.map +0 -1
  47. package/dist/CreateCategoryRequest-Br6yfDhZ.mjs.map +0 -1
  48. package/dist/DeleteCategoryRequest-C2-p6sx0.mjs.map +0 -1
  49. package/dist/DownloadCommandRequest-CaULjfNi.mjs.map +0 -1
  50. package/dist/DownloadFileRequest-CcNqsBo7.mjs.map +0 -1
  51. package/dist/DownloadQueueRequest-bd7lFiMj.mjs.map +0 -1
  52. package/dist/DownloadQueueResponse-DyP1rLTV.mjs.map +0 -1
  53. package/dist/GetPreferencesRequest-C94Su9IH.mjs.map +0 -1
  54. package/dist/PreferencesDetailsResponse-BjMxbvVY.mjs.map +0 -1
  55. package/dist/PreferencesResponse-Dth-n2sA.mjs.map +0 -1
  56. package/dist/ReloadSharedFilesRequest-CPwAEJYG.mjs.map +0 -1
  57. package/dist/Request-C0UUuQIX.mjs.map +0 -1
  58. package/dist/SearchProgressResponse-Bputc9Ww.mjs.map +0 -1
  59. package/dist/SearchRequest-CNqz-K1Z.mjs.map +0 -1
  60. package/dist/SearchResultsRequest-DKG508KF.mjs.map +0 -1
  61. package/dist/SearchResultsResponse-ChNrKJ6_.mjs.map +0 -1
  62. package/dist/SearchStatusRequest-Bv6iaC9Y.mjs.map +0 -1
  63. package/dist/SearchStopRequest-rET-2Nsz.mjs.map +0 -1
  64. package/dist/ServerConnectRequest-CcO2-Eqd.mjs.map +0 -1
  65. package/dist/ServerDisconnectRequest-DEORM3SF.mjs.map +0 -1
  66. package/dist/ServerListRequest-FwFQBp12.mjs.map +0 -1
  67. package/dist/ServerListResponse-ZAKSSCPZ.mjs.map +0 -1
  68. package/dist/ServerUpdateFromUrlRequest-D4xBqJDJ.mjs.map +0 -1
  69. package/dist/SetFileCategoryRequest-BwEPJVeR.mjs.map +0 -1
  70. package/dist/SetPreferencesRequest-D2fVIH3P.mjs.map +0 -1
  71. package/dist/SharedFilePriorityRequest-j6ImgagV.mjs.map +0 -1
  72. package/dist/SharedFilesRequest-D2M3K0eB.mjs.map +0 -1
  73. package/dist/SharedFilesResponse-BiXT_oCx.mjs.map +0 -1
  74. package/dist/StatsRequest-B8v9LLHG.mjs.map +0 -1
  75. package/dist/StatsResponse-BVUxNPbz.mjs.map +0 -1
  76. package/dist/Tag-CZF6BRMY.mjs.map +0 -1
  77. package/dist/UpdateCategoryRequest-CgzH7SxP.mjs.map +0 -1
  78. package/dist/UpdateRequest-Bunl73Ga.mjs.map +0 -1
  79. package/dist/UpdateResponse-1LhyH9Zf.mjs.map +0 -1
  80. package/dist/download-details-OM0FJUhZ.mjs.map +0 -1
  81. package/dist/index.mjs.map +0 -1
  82. package/dist/utils-DBnUQnZ-.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
- import { n as Packet, r as Flags, t as Request } from "./Request-C0UUuQIX.mjs";
2
- import { a as EcPrefs, i as ECTagName, n as ECOpCode, o as ProtocolVersion, r as ECSearchType, t as ECDetailLevel } from "./Codes-CjiW7Pdl.mjs";
3
- import { a as StringTag, c as UInt128Tag, d as UShortTag, f as findNumericTag, i as Ipv4Tag, l as UIntTag, n as DoubleTag, o as Tag, r as Hash16Tag, s as UByteTag, t as CustomTag, u as ULongTag } from "./Tag-CZF6BRMY.mjs";
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-C0UUuQIX.js";
2
+ import { a as EcPrefs, i as ECTagName, n as ECOpCode, o as ProtocolVersion, r as ECSearchType, t as ECDetailLevel } from "./Codes-CjiW7Pdl.js";
3
+ import { a as StringTag, c as UInt128Tag, d as UShortTag, f as findNumericTag, i as Ipv4Tag, l as UIntTag, n as DoubleTag, o as Tag, r as Hash16Tag, s as UByteTag, t as CustomTag, u as ULongTag } from "./Tag-CZF6BRMY.js";
4
+ import { n as PARTSIZE, t as ChunkStatus } from "./download-details-OM0FJUhZ.js";
5
5
  import * as net from "net";
6
6
  import * as zlib from "zlib";
7
7
  import * as crypto from "crypto";
@@ -816,8 +816,8 @@ var AmuleClient = class {
816
816
  * Get server statistics
817
817
  */
818
818
  async getStats() {
819
- const { StatsRequest } = await import("./StatsRequest-B8v9LLHG.mjs");
820
- const { StatsResponseParser } = await import("./StatsResponse-BVUxNPbz.mjs");
819
+ const { StatsRequest } = await import("./StatsRequest-CGGumOOx.js");
820
+ const { StatsResponseParser } = await import("./StatsResponse-DxQk686g.js");
821
821
  const request = new StatsRequest();
822
822
  const packet = await this.connection.sendRequest(request);
823
823
  return StatsResponseParser.fromPacket(packet);
@@ -826,8 +826,8 @@ var AmuleClient = class {
826
826
  * Get incremental updates for files, clients, servers, and friends
827
827
  */
828
828
  async getUpdate(detailLevel = 4) {
829
- const { UpdateRequest } = await import("./UpdateRequest-Bunl73Ga.mjs");
830
- const { UpdateResponseParser } = await import("./UpdateResponse-1LhyH9Zf.mjs");
829
+ const { UpdateRequest } = await import("./UpdateRequest-g2ReOQ5m.js");
830
+ const { UpdateResponseParser } = await import("./UpdateResponse-CGwVjn0Y.js");
831
831
  const request = new UpdateRequest(detailLevel);
832
832
  const packet = await this.connection.sendRequest(request);
833
833
  return UpdateResponseParser.fromPacket(packet);
@@ -836,7 +836,7 @@ var AmuleClient = class {
836
836
  * Start an asynchronous search
837
837
  */
838
838
  async searchAsync(query, searchType, filters) {
839
- const { SearchRequest } = await import("./SearchRequest-CNqz-K1Z.mjs");
839
+ const { SearchRequest } = await import("./SearchRequest-DQnKfA5Z.js");
840
840
  const request = new SearchRequest(query, searchType, filters);
841
841
  await this.connection.sendRequest(request);
842
842
  return query;
@@ -845,8 +845,8 @@ var AmuleClient = class {
845
845
  * Get search status (0-1)
846
846
  */
847
847
  async searchStatus() {
848
- const { SearchStatusRequest } = await import("./SearchStatusRequest-Bv6iaC9Y.mjs");
849
- const { SearchProgressResponse } = await import("./SearchProgressResponse-Bputc9Ww.mjs");
848
+ const { SearchStatusRequest } = await import("./SearchStatusRequest-B_xr4-72.js");
849
+ const { SearchProgressResponse } = await import("./SearchProgressResponse-C1CdzKnz.js");
850
850
  const request = new SearchStatusRequest();
851
851
  const packet = await this.connection.sendRequest(request);
852
852
  return SearchProgressResponse.fromPacket(packet).progress;
@@ -855,8 +855,8 @@ var AmuleClient = class {
855
855
  * Get search results
856
856
  */
857
857
  async searchResults() {
858
- const { SearchResultsRequest } = await import("./SearchResultsRequest-DKG508KF.mjs");
859
- const { SearchResultsResponseParser } = await import("./SearchResultsResponse-ChNrKJ6_.mjs");
858
+ const { SearchResultsRequest } = await import("./SearchResultsRequest-2ejFGQmQ.js");
859
+ const { SearchResultsResponseParser } = await import("./SearchResultsResponse-DwmvbQop.js");
860
860
  const request = new SearchResultsRequest();
861
861
  const packet = await this.connection.sendRequest(request);
862
862
  return SearchResultsResponseParser.fromPacket(packet);
@@ -877,7 +877,7 @@ var AmuleClient = class {
877
877
  * Stop current search
878
878
  */
879
879
  async searchStop() {
880
- const { SearchStopRequest } = await import("./SearchStopRequest-rET-2Nsz.mjs");
880
+ const { SearchStopRequest } = await import("./SearchStopRequest-8hwXobty.js");
881
881
  const request = new SearchStopRequest();
882
882
  await this.connection.sendRequest(request);
883
883
  }
@@ -885,7 +885,7 @@ var AmuleClient = class {
885
885
  * Download a file from search results
886
886
  */
887
887
  async downloadSearchResult(hash) {
888
- const { DownloadFileRequest } = await import("./DownloadFileRequest-CcNqsBo7.mjs");
888
+ const { DownloadFileRequest } = await import("./DownloadFileRequest-BjrroO3h.js");
889
889
  const request = new DownloadFileRequest(hash);
890
890
  await this.connection.sendRequest(request);
891
891
  }
@@ -893,7 +893,7 @@ var AmuleClient = class {
893
893
  * Download from an ed2k link
894
894
  */
895
895
  async downloadEd2kLink(link) {
896
- const { AddLinkRequest } = await import("./AddLinkRequest-DwUbSMXD.mjs");
896
+ const { AddLinkRequest } = await import("./AddLinkRequest-D2IME4eb.js");
897
897
  const request = new AddLinkRequest(link);
898
898
  await this.connection.sendRequest(request);
899
899
  }
@@ -901,8 +901,8 @@ var AmuleClient = class {
901
901
  * Get download queue
902
902
  */
903
903
  async getDownloadQueue() {
904
- const { DownloadQueueRequest } = await import("./DownloadQueueRequest-bd7lFiMj.mjs");
905
- const { DownloadQueueResponseParser } = await import("./DownloadQueueResponse-DyP1rLTV.mjs");
904
+ const { DownloadQueueRequest } = await import("./DownloadQueueRequest-Dil5hl3D.js");
905
+ const { DownloadQueueResponseParser } = await import("./DownloadQueueResponse-DUam_zNf.js");
906
906
  const request = new DownloadQueueRequest();
907
907
  const packet = await this.connection.sendRequest(request);
908
908
  return DownloadQueueResponseParser.fromPacket(packet).files;
@@ -911,8 +911,8 @@ var AmuleClient = class {
911
911
  * Get shared files
912
912
  */
913
913
  async getSharedFiles() {
914
- const { SharedFilesRequest } = await import("./SharedFilesRequest-D2M3K0eB.mjs");
915
- const { SharedFilesResponseParser } = await import("./SharedFilesResponse-BiXT_oCx.mjs");
914
+ const { SharedFilesRequest } = await import("./SharedFilesRequest-B72XyRcA.js");
915
+ const { SharedFilesResponseParser } = await import("./SharedFilesResponse-CkqvYd3N.js");
916
916
  const request = new SharedFilesRequest();
917
917
  const packet = await this.connection.sendRequest(request);
918
918
  return SharedFilesResponseParser.fromPacket(packet).files;
@@ -921,7 +921,7 @@ var AmuleClient = class {
921
921
  * Reload shared files list
922
922
  */
923
923
  async reloadSharedFiles() {
924
- const { ReloadSharedFilesRequest } = await import("./ReloadSharedFilesRequest-CPwAEJYG.mjs");
924
+ const { ReloadSharedFilesRequest } = await import("./ReloadSharedFilesRequest-kt0Pxs8A.js");
925
925
  const request = new ReloadSharedFilesRequest();
926
926
  await this.connection.sendRequest(request);
927
927
  }
@@ -929,8 +929,8 @@ var AmuleClient = class {
929
929
  * Get client upload/download queue (clients we are uploading to/downloading from)
930
930
  */
931
931
  async getClientQueue() {
932
- const { ClientQueueRequest } = await import("./ClientQueueRequest-D9FaX5K9.mjs");
933
- const { ClientQueueResponseParser } = await import("./ClientQueueResponse-FVQBR_8b.mjs");
932
+ const { ClientQueueRequest } = await import("./ClientQueueRequest-DFfCiNcz.js");
933
+ const { ClientQueueResponseParser } = await import("./ClientQueueResponse-JTrBqrr1.js");
934
934
  const request = new ClientQueueRequest();
935
935
  const packet = await this.connection.sendRequest(request);
936
936
  return ClientQueueResponseParser.fromPacket(packet).clients;
@@ -939,8 +939,8 @@ var AmuleClient = class {
939
939
  * Get the list of servers
940
940
  */
941
941
  async getServerList() {
942
- const { ServerListRequest } = await import("./ServerListRequest-FwFQBp12.mjs");
943
- const { ServerListResponseParser } = await import("./ServerListResponse-ZAKSSCPZ.mjs");
942
+ const { ServerListRequest } = await import("./ServerListRequest-BWXLGJib.js");
943
+ const { ServerListResponseParser } = await import("./ServerListResponse-BUJ7sz5p.js");
944
944
  const request = new ServerListRequest();
945
945
  const packet = await this.connection.sendRequest(request);
946
946
  return ServerListResponseParser.fromPacket(packet).servers;
@@ -949,7 +949,7 @@ var AmuleClient = class {
949
949
  * Connect to a specific server
950
950
  */
951
951
  async connectToServer(ip, port) {
952
- const { ServerConnectRequest } = await import("./ServerConnectRequest-CcO2-Eqd.mjs");
952
+ const { ServerConnectRequest } = await import("./ServerConnectRequest-BhNpGiEJ.js");
953
953
  const request = new ServerConnectRequest(ip, port);
954
954
  await this.connection.sendRequest(request);
955
955
  }
@@ -957,7 +957,7 @@ var AmuleClient = class {
957
957
  * Disconnect from the current server
958
958
  */
959
959
  async disconnectFromServer() {
960
- const { ServerDisconnectRequest } = await import("./ServerDisconnectRequest-DEORM3SF.mjs");
960
+ const { ServerDisconnectRequest } = await import("./ServerDisconnectRequest-BjCitLtU.js");
961
961
  const request = new ServerDisconnectRequest();
962
962
  await this.connection.sendRequest(request);
963
963
  }
@@ -965,7 +965,7 @@ var AmuleClient = class {
965
965
  * Create a category
966
966
  */
967
967
  async createCategory(category) {
968
- const { CreateCategoryRequest } = await import("./CreateCategoryRequest-Br6yfDhZ.mjs");
968
+ const { CreateCategoryRequest } = await import("./CreateCategoryRequest-CRUMcPo5.js");
969
969
  const request = new CreateCategoryRequest(category);
970
970
  await this.connection.sendRequest(request);
971
971
  }
@@ -973,7 +973,7 @@ var AmuleClient = class {
973
973
  * Update a category
974
974
  */
975
975
  async updateCategory(id, category) {
976
- const { UpdateCategoryRequest } = await import("./UpdateCategoryRequest-CgzH7SxP.mjs");
976
+ const { UpdateCategoryRequest } = await import("./UpdateCategoryRequest-CzKJa_rC.js");
977
977
  const request = new UpdateCategoryRequest(id, category);
978
978
  await this.connection.sendRequest(request);
979
979
  }
@@ -981,7 +981,7 @@ var AmuleClient = class {
981
981
  * Delete a category
982
982
  */
983
983
  async deleteCategory(id) {
984
- const { DeleteCategoryRequest } = await import("./DeleteCategoryRequest-C2-p6sx0.mjs");
984
+ const { DeleteCategoryRequest } = await import("./DeleteCategoryRequest-C8v9oGZ-.js");
985
985
  const request = new DeleteCategoryRequest(id);
986
986
  await this.connection.sendRequest(request);
987
987
  }
@@ -989,8 +989,8 @@ var AmuleClient = class {
989
989
  * Get all categories
990
990
  */
991
991
  async getCategories() {
992
- const { GetPreferencesRequest } = await import("./GetPreferencesRequest-C94Su9IH.mjs");
993
- const { PreferencesResponseParser } = await import("./PreferencesResponse-Dth-n2sA.mjs");
992
+ const { GetPreferencesRequest } = await import("./GetPreferencesRequest-DsxlghqT.js");
993
+ const { PreferencesResponseParser } = await import("./PreferencesResponse-8n1STWUZ.js");
994
994
  const request = new GetPreferencesRequest(1);
995
995
  const packet = await this.connection.sendRequest(request);
996
996
  return PreferencesResponseParser.fromPacket(packet).categories;
@@ -999,7 +999,7 @@ var AmuleClient = class {
999
999
  * Set file category
1000
1000
  */
1001
1001
  async setFileCategory(hash, categoryId) {
1002
- const { SetFileCategoryRequest } = await import("./SetFileCategoryRequest-BwEPJVeR.mjs");
1002
+ const { SetFileCategoryRequest } = await import("./SetFileCategoryRequest-VwroLBTV.js");
1003
1003
  const request = new SetFileCategoryRequest(hash, categoryId);
1004
1004
  await this.connection.sendRequest(request);
1005
1005
  }
@@ -1007,7 +1007,7 @@ var AmuleClient = class {
1007
1007
  * Send a download command (PAUSE, RESUME, STOP, DELETE, etc.)
1008
1008
  */
1009
1009
  async sendDownloadCommand(hash, command) {
1010
- const { DownloadCommandRequest } = await import("./DownloadCommandRequest-CaULjfNi.mjs");
1010
+ const { DownloadCommandRequest } = await import("./DownloadCommandRequest-B3KV_bvm.js");
1011
1011
  const request = new DownloadCommandRequest(hash, command);
1012
1012
  await this.connection.sendRequest(request);
1013
1013
  }
@@ -1039,7 +1039,7 @@ var AmuleClient = class {
1039
1039
  * Trigger a server list update from an URL.
1040
1040
  */
1041
1041
  async updateServerListFromUrl(url) {
1042
- const { ServerUpdateFromUrlRequest } = await import("./ServerUpdateFromUrlRequest-D4xBqJDJ.mjs");
1042
+ const { ServerUpdateFromUrlRequest } = await import("./ServerUpdateFromUrlRequest-K8C_d0UQ.js");
1043
1043
  const request = new ServerUpdateFromUrlRequest(url);
1044
1044
  await this.connection.sendRequest(request);
1045
1045
  }
@@ -1047,7 +1047,7 @@ var AmuleClient = class {
1047
1047
  * Set upload priority for a shared file.
1048
1048
  */
1049
1049
  async setSharedFilePriority(hash, priority) {
1050
- const { SharedFilePriorityRequest } = await import("./SharedFilePriorityRequest-j6ImgagV.mjs");
1050
+ const { SharedFilePriorityRequest } = await import("./SharedFilePriorityRequest-7BriqAcr.js");
1051
1051
  const request = new SharedFilePriorityRequest(hash, priority);
1052
1052
  await this.connection.sendRequest(request);
1053
1053
  }
@@ -1055,8 +1055,8 @@ var AmuleClient = class {
1055
1055
  * Get daemon preferences for general/connection/servers/security sections.
1056
1056
  */
1057
1057
  async getPreferences() {
1058
- const { GetPreferencesRequest } = await import("./GetPreferencesRequest-C94Su9IH.mjs");
1059
- const { PreferencesDetailsResponseParser } = await import("./PreferencesDetailsResponse-BjMxbvVY.mjs");
1058
+ const { GetPreferencesRequest } = await import("./GetPreferencesRequest-DsxlghqT.js");
1059
+ const { PreferencesDetailsResponseParser } = await import("./PreferencesDetailsResponse-DapscVQi.js");
1060
1060
  const request = new GetPreferencesRequest(2118);
1061
1061
  const packet = await this.connection.sendRequest(request);
1062
1062
  return PreferencesDetailsResponseParser.fromPacket(packet).preferences;
@@ -1066,12 +1066,10 @@ var AmuleClient = class {
1066
1066
  */
1067
1067
  async setPreferences(preferences) {
1068
1068
  if (!preferences.general && !preferences.connection && !preferences.servers && !preferences.security) return;
1069
- const { SetPreferencesRequest } = await import("./SetPreferencesRequest-D2fVIH3P.mjs");
1069
+ const { SetPreferencesRequest } = await import("./SetPreferencesRequest-KZ23VaBY.js");
1070
1070
  const request = new SetPreferencesRequest(preferences);
1071
1071
  await this.connection.sendRequest(request);
1072
1072
  }
1073
1073
  };
1074
1074
  //#endregion
1075
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
@@ -22,5 +22,3 @@ function toOptionalIp(value) {
22
22
  }
23
23
  //#endregion
24
24
  export { toOptionalNumber as i, toOptionalBool as n, toOptionalIp as r, formatIp as t };
25
-
26
- //# sourceMappingURL=utils-DBnUQnZ-.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amule-ec-client",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "A TypeScript client for Amule EC API.",
5
5
  "author": "José Carlos HR <joecarlhr@gmail.com>",
6
6
  "license": "MIT",
@@ -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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DownloadQueueResponse-DyP1rLTV.mjs","names":[],"sources":["../src/response/DownloadDetailsResponse.ts","../src/response/DownloadQueueResponse.ts"],"sourcesContent":["import { ECTagName } from '../ec/Codes';\nimport { Packet } from '../ec/packet/Packet';\nimport { findNumericTag, findTag, type Tag } from '../ec/tag/Tag';\nimport { ChunkStatus, PARTSIZE, SourceInfo, type ChunkInfo, type ParsedSource, type SourceNameCount } from '../types/download-details';\nimport { formatIp } from './utils';\n\nfunction rleDecode(buf: Buffer): Buffer {\n\tconst output: number[] = [];\n\tlet index = 0;\n\n\twhile (index < buf.length) {\n\t\tif (index < buf.length - 2 && buf[index + 1] === buf[index]) {\n\t\t\tconst value = buf[index];\n\t\t\tconst count = buf[index + 2];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t\tindex += 3;\n\t\t} else {\n\t\t\toutput.push(buf[index]);\n\t\t\tindex += 1;\n\t\t}\n\t}\n\n\treturn Buffer.from(output);\n}\n\nfunction decodePartStatus(buf: Buffer): number[] {\n\tconst decoded = rleDecode(buf);\n\tconst result = new Array<number>(decoded.length);\n\tfor (let i = 0; i < decoded.length; i++) {\n\t\tresult[i] = decoded[i];\n\t}\n\treturn result;\n}\n\nfunction decodeUint64Array(buf: Buffer): number[] {\n\tconst decoded = rleDecode(buf);\n\tif (decoded.length === 0 || decoded.length % 8 !== 0) {\n\t\treturn [];\n\t}\n\n\tconst valueCount = decoded.length / 8;\n\tconst values = new Array<number>(valueCount);\n\tfor (let i = 0; i < valueCount; i++) {\n\t\tlet value = 0;\n\t\tfor (let byte = 7; byte >= 0; byte--) {\n\t\t\tvalue = value * 256 + decoded[i + byte * valueCount];\n\t\t}\n\t\tvalues[i] = value;\n\t}\n\treturn values;\n}\n\nfunction stringValue(tag: Tag<any> | undefined): string {\n\tif (!tag) {\n\t\treturn '';\n\t}\n\tconst value = tag.getValue();\n\treturn typeof value === 'string' ? value : '';\n}\n\nfunction bufferValue(tag: Tag<any> | undefined): Buffer | undefined {\n\tif (!tag) {\n\t\treturn undefined;\n\t}\n\tconst value = tag.getValue();\n\treturn Buffer.isBuffer(value) ? value : undefined;\n}\n\nfunction nestedTag(parent: Tag<any>, tagName: ECTagName): Tag<any> | undefined {\n\treturn parent.nestedTags ? findTag(parent.nestedTags, tagName) : undefined;\n}\n\nfunction nestedNumeric(parent: Tag<any>, tagName: ECTagName): number {\n\tif (!parent.nestedTags) {\n\t\treturn 0;\n\t}\n\tconst numeric = findNumericTag(parent.nestedTags, tagName);\n\tif (numeric) {\n\t\treturn Number(numeric.getValue());\n\t}\n\tconst tag = findTag(parent.nestedTags, tagName);\n\tif (!tag) return 0;\n\n\tconst value = tag.getValue();\n\tif (typeof value === 'number') return value;\n\tif (typeof value === 'bigint') return Number(value);\n\n\treturn 0;\n}\n\nfunction nestedString(parent: Tag<any>, tagName: ECTagName): string {\n\tif (!parent.nestedTags) {\n\t\treturn '';\n\t}\n\treturn stringValue(findTag(parent.nestedTags, tagName));\n}\n\nfunction nestedIp(parent: Tag<any>, tagName: ECTagName): string {\n\tconst ipAsNumber = nestedNumeric(parent, tagName);\n\tif (ipAsNumber === 0) {\n\t\treturn '';\n\t}\n\treturn formatIp(ipAsNumber);\n}\n\nexport class DownloadChunkDetailsResponseParser {\n\tstatic fromPacket(packet: Packet): Record<string, ChunkInfo> {\n\t\tconst result: Record<string, ChunkInfo> = {};\n\t\tconst partfileTags = packet.tags.filter((tag) => tag.name === ECTagName.EC_TAG_PARTFILE);\n\n\t\tfor (const fileTag of partfileTags) {\n\t\t\tconst hash = bufferValue(nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_HASH));\n\t\t\tif (!hash) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst fileHash = hash.toString('hex');\n\n\t\t\tconst sizeFull = nestedNumeric(fileTag, ECTagName.EC_TAG_PARTFILE_SIZE_FULL);\n\t\t\tconst partCount = sizeFull > 0 ? Math.ceil(sizeFull / PARTSIZE) : 0;\n\n\t\t\tconst partStatusBuf = bufferValue(nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_PART_STATUS));\n\t\t\tconst gapStatusBuf = bufferValue(nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_GAP_STATUS));\n\t\t\tconst reqStatusBuf = bufferValue(nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_REQ_STATUS));\n\n\t\t\tconst availability = new Array<number>(partCount).fill(0);\n\t\t\tif (partStatusBuf && partStatusBuf.length > 0) {\n\t\t\t\tconst decodedAvailability = decodePartStatus(partStatusBuf);\n\t\t\t\tfor (let i = 0; i < Math.min(decodedAvailability.length, partCount); i++) {\n\t\t\t\t\tavailability[i] = decodedAvailability[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst chunks = new Array<number>(partCount).fill(ChunkStatus.COMPLETE);\n\t\t\tif (partCount > 0 && gapStatusBuf && gapStatusBuf.length > 0) {\n\t\t\t\tconst gapValues = decodeUint64Array(gapStatusBuf);\n\t\t\t\tfor (let i = 0; i + 1 < gapValues.length; i += 2) {\n\t\t\t\t\tconst gapStart = gapValues[i];\n\t\t\t\t\tconst gapEnd = gapValues[i + 1];\n\t\t\t\t\tif (gapStart > sizeFull || gapEnd > sizeFull || gapStart >= gapEnd) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startPart = Math.floor(gapStart / PARTSIZE);\n\t\t\t\t\tconst endPart = Math.min(Math.floor(gapEnd / PARTSIZE) + 1, partCount);\n\t\t\t\t\tfor (let part = startPart; part < endPart; part++) {\n\t\t\t\t\t\tconst chunkStart = part * PARTSIZE;\n\t\t\t\t\t\tconst chunkEnd = Math.min((part + 1) * PARTSIZE, sizeFull);\n\t\t\t\t\t\tif (gapStart < chunkEnd && gapEnd > chunkStart) {\n\t\t\t\t\t\t\tchunks[part] = availability[part] > 0 ? ChunkStatus.AVAILABLE : ChunkStatus.UNAVAILABLE;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (partCount > 0 && reqStatusBuf && reqStatusBuf.length > 0) {\n\t\t\t\tconst reqValues = decodeUint64Array(reqStatusBuf);\n\t\t\t\tfor (let i = 0; i + 1 < reqValues.length; i += 2) {\n\t\t\t\t\tconst reqStart = reqValues[i];\n\t\t\t\t\tconst reqEnd = reqValues[i + 1];\n\t\t\t\t\tif (reqStart > sizeFull || reqEnd > sizeFull || reqStart >= reqEnd) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startPart = Math.floor(reqStart / PARTSIZE);\n\t\t\t\t\tconst endPart = Math.min(Math.floor(reqEnd / PARTSIZE) + 1, partCount);\n\t\t\t\t\tfor (let part = startPart; part < endPart; part++) {\n\t\t\t\t\t\tif (chunks[part] === ChunkStatus.COMPLETE) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst chunkStart = part * PARTSIZE;\n\t\t\t\t\t\tconst chunkEnd = Math.min((part + 1) * PARTSIZE, sizeFull);\n\t\t\t\t\t\tif (reqStart < chunkEnd && reqEnd > chunkStart) {\n\t\t\t\t\t\t\tchunks[part] = ChunkStatus.DOWNLOADING;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[fileHash] = { chunks, availability, partCount, sizeFull };\n\t\t}\n\n\t\treturn result;\n\t}\n}\n\nexport class DownloadSourceDetailsResponseParser {\n\tstatic fromPacket(packet: Packet): Record<string, SourceInfo> {\n\t\tconst result: Record<string, SourceInfo> = {};\n\t\tconst partfileTags = packet.tags.filter((tag) => tag.name === ECTagName.EC_TAG_PARTFILE);\n\n\t\tfor (const fileTag of partfileTags) {\n\t\t\tconst hash = bufferValue(nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_HASH));\n\t\t\tif (!hash) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst fileHash = hash.toString('hex');\n\t\t\tconst sourceNames: SourceNameCount[] = [];\n\t\t\tconst sources: ParsedSource[] = [];\n\n\t\t\tfor (const nested of fileTag.nestedTags || []) {\n\t\t\t\tif (nested.name !== ECTagName.EC_TAG_CLIENT) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsources.push({\n\t\t\t\t\tclientName: nestedString(nested, ECTagName.EC_TAG_CLIENT_NAME) || 'Unknown',\n\t\t\t\t\tuserHash: bufferValue(nestedTag(nested, ECTagName.EC_TAG_CLIENT_HASH))?.toString('hex') || '',\n\t\t\t\t\tsoftware: nestedString(nested, ECTagName.EC_TAG_CLIENT_SOFTWARE),\n\t\t\t\t\tsoftwareVersion: nestedString(nested, ECTagName.EC_TAG_CLIENT_SOFT_VER_STR),\n\t\t\t\t\tscore: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_SCORE),\n\t\t\t\t\tuploadSpeed: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_UP_SPEED),\n\t\t\t\t\tdownloadSpeed: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_DOWN_SPEED),\n\t\t\t\t\tuploadState: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_UPLOAD_STATE),\n\t\t\t\t\tdownloadState: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_DOWNLOAD_STATE),\n\t\t\t\t\tip: nestedIp(nested, ECTagName.EC_TAG_CLIENT_USER_IP),\n\t\t\t\t\tport: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_USER_PORT),\n\t\t\t\t\tremoteQueueRank: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_REMOTE_QUEUE_RANK),\n\t\t\t\t\twaitingPosition: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_WAITING_POSITION),\n\t\t\t\t\tidentState: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_IDENT_STATE),\n\t\t\t\t\tobfuscationStatus: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_OBFUSCATION_STATUS),\n\t\t\t\t\tremoteFilename: nestedString(nested, ECTagName.EC_TAG_CLIENT_REMOTE_FILENAME),\n\t\t\t\t\tavailableParts: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_AVAILABLE_PARTS),\n\t\t\t\t\tsourceFrom: nestedNumeric(nested, ECTagName.EC_TAG_CLIENT_FROM),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst namesTag = nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_SOURCE_NAMES);\n\t\t\tconst countsTag = nestedTag(fileTag, ECTagName.EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS);\n\t\t\tconst nameTags = namesTag?.nestedTags || [];\n\t\t\tconst countTags = countsTag?.nestedTags || [];\n\n\t\t\tfor (let i = 0; i < nameTags.length; i++) {\n\t\t\t\tconst name = stringValue(nameTags[i]);\n\t\t\t\tif (!name) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst countTag = countTags[i];\n\t\t\t\tconst rawCount = countTag?.getValue();\n\t\t\t\tconst count = typeof rawCount === 'number' ? rawCount : typeof rawCount === 'bigint' ? Number(rawCount) : 1;\n\t\t\t\tsourceNames.push({ name, count });\n\t\t\t}\n\n\t\t\tresult[fileHash] = { sources, sourceNames };\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","/**\n * Download Queue Response - Parse download queue\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { ECTagName } from '../ec/Codes';\nimport { findNumericTag, findTag } from '../ec/tag/Tag';\nimport type { AmuleTransferringFile, FileStatus } from '../model';\nimport { DownloadChunkDetailsResponseParser, DownloadSourceDetailsResponseParser } from './DownloadDetailsResponse';\nimport { toOptionalBool, toOptionalNumber } from './utils';\n\nexport interface DownloadQueueResponse {\n\tfiles: AmuleTransferringFile[];\n}\n\nexport class DownloadQueueResponseParser {\n\tstatic fromPacket(packet: Packet): DownloadQueueResponse {\n\t\tconst files: AmuleTransferringFile[] = [];\n\t\tconst chunkDetailsByHash = DownloadChunkDetailsResponseParser.fromPacket(packet);\n\t\tconst sourceDetailsByHash = DownloadSourceDetailsResponseParser.fromPacket(packet);\n\n\t\t// Find all partfile tags\n\t\tconst partfileTags = packet.tags.filter((tag) => tag.name === ECTagName.EC_TAG_PARTFILE);\n\n\t\tfor (const fileTag of partfileTags) {\n\t\t\tconst tags = fileTag.nestedTags || [];\n\n\t\t\tconst hashTag = findTag(tags, ECTagName.EC_TAG_PARTFILE_HASH);\n\t\t\tconst fileNameTag = findTag(tags, ECTagName.EC_TAG_PARTFILE_NAME);\n\n\t\t\tlet a4afSources: number[] | undefined = undefined; // Will be filled if A4AF sources are present\n\t\t\tconst a4afSourcesTag = findTag(tags, ECTagName.EC_TAG_PARTFILE_A4AF_SOURCES);\n\t\t\tif (a4afSourcesTag) {\n\t\t\t\ta4afSources = [];\n\t\t\t\ta4afSourcesTag.nestedTags = a4afSourcesTag.nestedTags || [];\n\t\t\t\tfor (const sourceTag of a4afSourcesTag.nestedTags) {\n\t\t\t\t\tif (sourceTag.name === ECTagName.EC_TAG_ECID) {\n\t\t\t\t\t\ta4afSources.push(sourceTag.getValue());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Basic file info\n\t\t\tconst file: AmuleTransferringFile = {\n\t\t\t\tfileHashHexString: hashTag ? hashTag.getValue().toString('hex') : undefined,\n\t\t\t\tfileName: fileNameTag ? fileNameTag.getValue() : undefined,\n\t\t\t\tfilePath: findTag(tags, ECTagName.EC_TAG_KNOWNFILE_FILENAME)?.getValue(),\n\t\t\t\tsizeFull: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SIZE_FULL)?.getLong()),\n\t\t\t\tfileEd2kLink: findTag(tags, ECTagName.EC_TAG_PARTFILE_ED2K_LINK)?.getValue(),\n\n\t\t\t\t// Transfer info\n\t\t\t\tpartMetID: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_PARTMETID)?.getShort(),\n\t\t\t\tsizeXfer: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SIZE_XFER)?.getLong()),\n\t\t\t\tsizeDone: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SIZE_DONE)?.getLong()),\n\t\t\t\tfileStatus: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_STATUS)?.getInt() as FileStatus | undefined,\n\t\t\t\tstopped: toOptionalBool(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_STOPPED)?.getInt()),\n\t\t\t\tsourceCount: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SOURCE_COUNT)?.getShort(),\n\t\t\t\tsourceNotCurrCount: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT)?.getShort(),\n\t\t\t\tsourceXferCount: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SOURCE_COUNT_XFER)?.getShort(),\n\t\t\t\tsourceCountA4AF: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SOURCE_COUNT_A4AF)?.getShort(),\n\t\t\t\tspeed: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SPEED)?.getLong()),\n\t\t\t\tdownPrio: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_PRIO)?.getInt(),\n\t\t\t\tfileCat: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_CAT)?.getLong()),\n\t\t\t\tlastSeenComplete: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_LAST_SEEN_COMP)?.getLong()),\n\t\t\t\tlastDateChanged: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_LAST_RECV)?.getLong()),\n\t\t\t\tdownloadActiveTime: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_DOWNLOAD_ACTIVE)?.getInt(),\n\t\t\t\tavailablePartCount: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_AVAILABLE_PARTS)?.getShort(),\n\t\t\t\ta4AFAuto: toOptionalBool(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_A4AFAUTO)?.getInt()),\n\t\t\t\thashingProgress: toOptionalBool(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_HASHED_PART_COUNT)?.getInt()),\n\n\t\t\t\t// Statistics\n\t\t\t\tgetLostDueToCorruption: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_LOST_CORRUPTION)?.getLong()),\n\t\t\t\tgetGainDueToCompression: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_GAINED_COMPRESSION)?.getLong()),\n\t\t\t\ttotalPacketsSavedDueToICH: findNumericTag(tags, ECTagName.EC_TAG_PARTFILE_SAVED_ICH)?.getInt(),\n\n\t\t\t\t// Known file shared info\n\t\t\t\tupPrio: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_PRIO)?.getInt(),\n\t\t\t\tgetRequests: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_REQ_COUNT)?.getShort(),\n\t\t\t\tgetAllRequests: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_REQ_COUNT_ALL)?.getInt(),\n\t\t\t\tgetAccepts: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_ACCEPT_COUNT)?.getShort(),\n\t\t\t\tgetAllAccepts: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL)?.getInt(),\n\t\t\t\tgetXferred: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_XFERRED)?.getLong()),\n\t\t\t\tgetAllXferred: toOptionalNumber(findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_XFERRED_ALL)?.getLong()),\n\t\t\t\tgetCompleteSourcesLow: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW)?.getShort(),\n\t\t\t\tgetCompleteSourcesHigh: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH)?.getShort(),\n\t\t\t\tgetCompleteSources: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_COMPLETE_SOURCES)?.getShort(),\n\t\t\t\tgetOnQueue: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_ON_QUEUE)?.getShort(),\n\t\t\t\tgetComment: findTag(tags, ECTagName.EC_TAG_KNOWNFILE_COMMENT)?.getValue(),\n\t\t\t\tgetRating: findNumericTag(tags, ECTagName.EC_TAG_KNOWNFILE_RATING)?.getInt(),\n\t\t\t\ta4afSources,\n\t\t\t};\n\n\t\t\tif (file.fileHashHexString) {\n\t\t\t\tfile.chunkInfo = chunkDetailsByHash[file.fileHashHexString];\n\t\t\t\tconst sourceDetails = sourceDetailsByHash[file.fileHashHexString];\n\t\t\t\tif (sourceDetails) {\n\t\t\t\t\tfile.sources = sourceDetails.sources;\n\t\t\t\t\tfile.sourceNames = sourceDetails.sourceNames;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfiles.push(file);\n\t\t}\n\n\t\treturn { files };\n\t}\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GetPreferencesRequest-C94Su9IH.mjs","names":[],"sources":["../src/request/GetPreferencesRequest.ts"],"sourcesContent":["/**\n * Preferences Request - Get preferences\n */\n\nimport { Request } from './Request';\nimport { ECDetailLevel, ECOpCode, EcPrefs, ECTagName } from '../ec/Codes';\nimport { UByteTag, UIntTag } from '../ec/tag/Tag';\n\nexport class GetPreferencesRequest extends Request {\n\tconstructor(pref: EcPrefs) {\n\t\tsuper(ECOpCode.EC_OP_GET_PREFERENCES);\n\t\tthis.addTag(new UByteTag(ECTagName.EC_TAG_DETAIL_LEVEL, ECDetailLevel.EC_DETAIL_FULL));\n\t\tthis.addTag(new UIntTag(ECTagName.EC_TAG_SELECT_PREFS, pref));\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,wBAAb,cAA2C,QAAQ;CAClD,YAAY,MAAe;EAC1B,MAAA,EAAoC;EACpC,KAAK,OAAO,IAAI,SAAA,GAAA,CAAoE,CAAC;EACrF,KAAK,OAAO,IAAI,QAAA,MAAuC,IAAI,CAAC;CAC7D;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreferencesDetailsResponse-BjMxbvVY.mjs","names":[],"sources":["../src/response/PreferencesDetailsResponse.ts"],"sourcesContent":["import { EcPrefs, ECTagName } from '../ec/Codes';\nimport { Packet } from '../ec/packet/Packet';\nimport { findNumericTag, findTag, type Tag } from '../ec/tag/Tag';\nimport type { AmulePreferences, AmulePrefsConnection, AmulePrefsGeneral, AmulePrefsSecurity, AmulePrefsServers } from '../types/preferences';\n\nexport class PreferencesDetailsResponse {\n\tconstructor(public readonly preferences: AmulePreferences) {}\n}\n\nfunction getNestedTag(parent: Tag<any> | undefined, name: ECTagName): Tag<any> | undefined {\n\tif (!parent?.nestedTags) {\n\t\treturn undefined;\n\t}\n\treturn findTag(parent.nestedTags, name);\n}\n\nfunction getNestedNumber(parent: Tag<any> | undefined, name: ECTagName, fallback: number): number {\n\tif (!parent?.nestedTags) {\n\t\treturn fallback;\n\t}\n\n\tconst numeric = findNumericTag(parent.nestedTags, name);\n\tif (numeric) {\n\t\treturn Number(numeric.getValue());\n\t}\n\n\tconst tag = findTag(parent.nestedTags, name);\n\tif (!tag) {\n\t\treturn fallback;\n\t}\n\n\tconst value = tag.getValue();\n\tif (typeof value === 'number') {\n\t\treturn value;\n\t}\n\tif (typeof value === 'bigint') {\n\t\treturn Number(value);\n\t}\n\treturn fallback;\n}\n\nfunction getNestedBool(parent: Tag<any> | undefined, name: ECTagName, fallback: boolean): boolean {\n\tconst tag = getNestedTag(parent, name);\n\tif (!tag) {\n\t\treturn fallback;\n\t}\n\n\tconst value = tag.getValue();\n\tif (typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tif (typeof value === 'number') {\n\t\treturn value !== 0;\n\t}\n\tif (typeof value === 'bigint') {\n\t\treturn value !== 0n;\n\t}\n\tif (Buffer.isBuffer(value)) {\n\t\treturn value.length === 0 || value.some((byte) => byte !== 0);\n\t}\n\n\t// For empty/presence tags in EC protocol, presence means true.\n\treturn true;\n}\n\nfunction getNestedString(parent: Tag<any> | undefined, name: ECTagName, fallback: string): string {\n\tconst tag = getNestedTag(parent, name);\n\tif (!tag) {\n\t\treturn fallback;\n\t}\n\n\tconst value = tag.getValue();\n\treturn typeof value === 'string' ? value : fallback;\n}\n\nexport class PreferencesDetailsResponseParser {\n\tstatic fromPacket(packet: Packet): PreferencesDetailsResponse {\n\t\tconst generalTag = findTag(packet.tags, ECTagName.EC_TAG_PREFS_GENERAL);\n\t\tconst connectionTag = findTag(packet.tags, ECTagName.EC_TAG_PREFS_CONNECTIONS);\n\t\tconst serversTag = findTag(packet.tags, ECTagName.EC_TAG_PREFS_SERVERS);\n\t\tconst securityTag = findTag(packet.tags, ECTagName.EC_TAG_PREFS_SECURITY);\n\n\t\tconst general: AmulePrefsGeneral = {\n\t\t\tuserNick: getNestedString(generalTag, ECTagName.EC_TAG_USER_NICK, ''),\n\t\t\tcheckNewVersion: getNestedBool(generalTag, ECTagName.EC_TAG_GENERAL_CHECK_NEW_VERSION, false),\n\t\t};\n\n\t\tconst connection: AmulePrefsConnection = {\n\t\t\tuploadCapacity: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_UL_CAP, 0),\n\t\t\tdownloadCapacity: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_DL_CAP, 0),\n\t\t\tmaxUploadSpeed: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_MAX_UL, 0),\n\t\t\tmaxDownloadSpeed: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_MAX_DL, 0),\n\t\t\tslotAllocation: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_SLOT_ALLOCATION, 2),\n\t\t\ttcpPort: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_TCP_PORT, 4662),\n\t\t\tudpPort: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_UDP_PORT, 4672),\n\t\t\tmaxFileSources: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_MAX_FILE_SOURCES, 300),\n\t\t\tmaxConnections: getNestedNumber(connectionTag, ECTagName.EC_TAG_CONN_MAX_CONN, 500),\n\t\t\tautoconnect: getNestedBool(connectionTag, ECTagName.EC_TAG_CONN_AUTOCONNECT, false),\n\t\t\treconnect: getNestedBool(connectionTag, ECTagName.EC_TAG_CONN_RECONNECT, false),\n\t\t\tnetworkED2K: getNestedBool(connectionTag, ECTagName.EC_TAG_NETWORK_ED2K, true),\n\t\t\tnetworkKademlia: getNestedBool(connectionTag, ECTagName.EC_TAG_NETWORK_KADEMLIA, false),\n\t\t};\n\n\t\tconst servers: AmulePrefsServers = {\n\t\t\tremoveDead: getNestedBool(serversTag, ECTagName.EC_TAG_SERVERS_REMOVE_DEAD, true),\n\t\t\tdeadRetries: getNestedNumber(serversTag, ECTagName.EC_TAG_SERVERS_DEAD_SERVER_RETRIES, 3),\n\t\t\tuseScoreSystem: getNestedBool(serversTag, ECTagName.EC_TAG_SERVERS_USE_SCORE_SYSTEM, true),\n\t\t\tsmartIdCheck: getNestedBool(serversTag, ECTagName.EC_TAG_SERVERS_SMART_ID_CHECK, true),\n\t\t\tupdateUrl: getNestedString(serversTag, ECTagName.EC_TAG_SERVERS_UPDATE_URL, ''),\n\t\t};\n\n\t\tconst security: AmulePrefsSecurity = {\n\t\t\tcanSeeShares: getNestedNumber(securityTag, ECTagName.EC_TAG_SECURITY_CAN_SEE_SHARES, 2),\n\t\t\tipFilterClients: getNestedBool(securityTag, ECTagName.EC_TAG_IPFILTER_CLIENTS, true),\n\t\t\tipFilterServers: getNestedBool(securityTag, ECTagName.EC_TAG_IPFILTER_SERVERS, true),\n\t\t\tipFilterAutoUpdate: getNestedBool(securityTag, ECTagName.EC_TAG_IPFILTER_AUTO_UPDATE, false),\n\t\t\tipFilterUpdateUrl: getNestedString(securityTag, ECTagName.EC_TAG_IPFILTER_UPDATE_URL, ''),\n\t\t\tipFilterLevel: getNestedNumber(securityTag, ECTagName.EC_TAG_IPFILTER_LEVEL, 127),\n\t\t\tfilterLan: getNestedBool(securityTag, ECTagName.EC_TAG_IPFILTER_FILTER_LAN, true),\n\t\t\tuseSecIdent: getNestedBool(securityTag, ECTagName.EC_TAG_SECURITY_USE_SECIDENT, true),\n\t\t\tobfuscationSupported: getNestedBool(securityTag, ECTagName.EC_TAG_SECURITY_OBFUSCATION_SUPPORTED, true),\n\t\t\tobfuscationRequested: getNestedBool(securityTag, ECTagName.EC_TAG_SECURITY_OBFUSCATION_REQUESTED, false),\n\t\t\tobfuscationRequired: getNestedBool(securityTag, ECTagName.EC_TAG_SECURITY_OBFUSCATION_REQUIRED, false),\n\t\t};\n\n\t\treturn new PreferencesDetailsResponse({ general, connection, servers, security });\n\t}\n\n\tstatic preferenceMaskForAllSections(): EcPrefs {\n\t\treturn EcPrefs.EC_PREFS_GENERAL | EcPrefs.EC_PREFS_CONNECTIONS | EcPrefs.EC_PREFS_SERVERS | EcPrefs.EC_PREFS_SECURITY;\n\t}\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreferencesResponse-Dth-n2sA.mjs","names":[],"sources":["../src/response/PreferencesResponse.ts"],"sourcesContent":["/**\n * Preferences Response - Contains aMule preferences, including categories\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { ECTagName } from '../ec/Codes';\nimport { findTag, findNumericTag, NumericTag } from '../ec/tag/Tag';\nimport type { AmuleCategory } from '../model';\n\nexport class PreferencesResponse {\n\tconstructor(public readonly categories: AmuleCategory[]) {}\n}\n\nexport class PreferencesResponseParser {\n\tstatic fromPacket(packet: Packet): PreferencesResponse {\n\t\tconst categories: AmuleCategory[] = [];\n\n\t\tconst prefsCategoriesTag = findTag(packet.tags, ECTagName.EC_TAG_PREFS_CATEGORIES);\n\n\t\tif (prefsCategoriesTag && prefsCategoriesTag.nestedTags) {\n\t\t\tfor (const categoryTag of prefsCategoriesTag.nestedTags) {\n\t\t\t\tif (categoryTag.name === ECTagName.EC_TAG_CATEGORY) {\n\t\t\t\t\tconst nestedTags = categoryTag.nestedTags || [];\n\n\t\t\t\t\tconst idTag = categoryTag;\n\t\t\t\t\tconst nameTag = findTag(nestedTags, ECTagName.EC_TAG_CATEGORY_TITLE);\n\t\t\t\t\tconst pathTag = findTag(nestedTags, ECTagName.EC_TAG_CATEGORY_PATH);\n\t\t\t\t\tconst commentTag = findTag(nestedTags, ECTagName.EC_TAG_CATEGORY_COMMENT);\n\t\t\t\t\tconst colorTag = findNumericTag(nestedTags, ECTagName.EC_TAG_CATEGORY_COLOR);\n\t\t\t\t\tconst priorityTag = findNumericTag(nestedTags, ECTagName.EC_TAG_CATEGORY_PRIO);\n\n\t\t\t\t\tif (nameTag) {\n\t\t\t\t\t\tcategories.push({\n\t\t\t\t\t\t\tid: idTag ? Number((idTag as unknown as NumericTag).getInt()) : 0,\n\t\t\t\t\t\t\tname: nameTag.getValue() || '',\n\t\t\t\t\t\t\tpath: pathTag ? pathTag.getValue() : '',\n\t\t\t\t\t\t\tcomment: commentTag ? commentTag.getValue() : '',\n\t\t\t\t\t\t\tcolor: colorTag ? Number((colorTag as unknown as NumericTag).getInt()) : 0,\n\t\t\t\t\t\t\tpriority: priorityTag ? Number((priorityTag as unknown as NumericTag).getInt()) : 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new PreferencesResponse(categories);\n\t}\n}\n"],"mappings":";;;AASA,IAAa,sBAAb,MAAiC;CACJ;CAA5B,YAAY,YAA6C;EAA7B,KAAA,aAAA;CAA8B;AAC3D;AAEA,IAAa,4BAAb,MAAuC;CACtC,OAAO,WAAW,QAAqC;EACtD,MAAM,aAA8B,CAAC;EAErC,MAAM,qBAAqB,QAAQ,OAAO,MAAA,IAAuC;EAEjF,IAAI,sBAAsB,mBAAmB;QACvC,MAAM,eAAe,mBAAmB,YAC5C,IAAI,YAAY,SAAA,MAAoC;IACnD,MAAM,aAAa,YAAY,cAAc,CAAC;IAE9C,MAAM,QAAQ;IACd,MAAM,UAAU,QAAQ,YAAA,IAA2C;IACnE,MAAM,UAAU,QAAQ,YAAA,IAA0C;IAClE,MAAM,aAAa,QAAQ,YAAA,IAA6C;IACxE,MAAM,WAAW,eAAe,YAAA,IAA2C;IAC3E,MAAM,cAAc,eAAe,YAAA,IAA0C;IAE7E,IAAI,SACH,WAAW,KAAK;KACf,IAAI,QAAQ,OAAQ,MAAgC,OAAO,CAAC,IAAI;KAChE,MAAM,QAAQ,SAAS,KAAK;KAC5B,MAAM,UAAU,QAAQ,SAAS,IAAI;KACrC,SAAS,aAAa,WAAW,SAAS,IAAI;KAC9C,OAAO,WAAW,OAAQ,SAAmC,OAAO,CAAC,IAAI;KACzE,UAAU,cAAc,OAAQ,YAAsC,OAAO,CAAC,IAAI;IACnF,CAAC;GAEH;;EAIF,OAAO,IAAI,oBAAoB,UAAU;CAC1C;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReloadSharedFilesRequest-CPwAEJYG.mjs","names":[],"sources":["../src/request/ReloadSharedFilesRequest.ts"],"sourcesContent":["/**\n * Reload Shared Files Request - Reload shared files list\n */\n\nimport { Request } from './Request';\nimport { ECOpCode } from '../ec/Codes';\n\nexport class ReloadSharedFilesRequest extends Request {\n\tconstructor() {\n\t\tsuper(ECOpCode.EC_OP_SHAREDFILES_RELOAD);\n\t}\n}\n"],"mappings":";;;;;;AAOA,IAAa,2BAAb,cAA8C,QAAQ;CACrD,cAAc;EACb,MAAA,EAAuC;CACxC;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Request-C0UUuQIX.mjs","names":[],"sources":["../src/ec/packet/Flags.ts","../src/ec/packet/Packet.ts","../src/request/Request.ts"],"sourcesContent":["/**\n * Packet flags for EC protocol\n */\n\nexport class Flags {\n\tprivate static readonly FLAG_ACCEPTS = 0x10;\n\tprivate static readonly FLAG_ZLIB = 0x01;\n\tprivate static readonly FLAG_UTF8_NUMBERS = 0x02;\n\tprivate static readonly FLAG_ALWAYS_SET = 0x20; // Bit 5 always set to distinguish from older clients\n\n\tprivate readonly flags: number;\n\n\tconstructor(flags?: number) {\n\t\tthis.flags = flags ?? 0;\n\t}\n\n\t/**\n\t * Create flags from buffer\n\t */\n\tstatic fromBuffer(buffer: Buffer, offset: number = 0): Flags {\n\t\tconst flags = buffer.readUInt32BE(offset);\n\t\treturn new Flags(flags);\n\t}\n\n\t/**\n\t * Write flags to buffer\n\t */\n\twriteToBuffer(buffer: Buffer, offset: number = 0): void {\n\t\tbuffer.writeUInt32BE(this.flags, offset);\n\t}\n\n\t/**\n\t * Check if UTF-8 number encoding is supported/accepted\n\t */\n\tisUtf8NumbersAccepted(): boolean {\n\t\treturn (this.flags & Flags.FLAG_ACCEPTS) > 0 && (this.flags & Flags.FLAG_UTF8_NUMBERS) > 0;\n\t}\n\n\t/**\n\t * Check if ZLIB compression is supported/accepted\n\t */\n\tisZlibAccepted(): boolean {\n\t\treturn (this.flags & Flags.FLAG_ACCEPTS) > 0 && (this.flags & Flags.FLAG_ZLIB) > 0;\n\t}\n\n\t/**\n\t * Check if UTF-8 number encoding is used\n\t */\n\tisUtf8Numbers(): boolean {\n\t\treturn (this.flags & Flags.FLAG_UTF8_NUMBERS) > 0;\n\t}\n\n\t/**\n\t * Check if ZLIB compression is used\n\t */\n\tisZlib(): boolean {\n\t\treturn (this.flags & Flags.FLAG_ZLIB) > 0;\n\t}\n\n\t/**\n\t * Create flags accepting UTF-8 numbers and ZLIB\n\t */\n\tstatic accept(): Flags {\n\t\treturn new Flags(Flags.FLAG_ACCEPTS | Flags.FLAG_UTF8_NUMBERS | Flags.FLAG_ZLIB | Flags.FLAG_ALWAYS_SET);\n\t}\n\n\t/**\n\t * Create flags using UTF-8 numbers\n\t */\n\tstatic useUtf8Numbers(): Flags {\n\t\treturn new Flags(Flags.FLAG_UTF8_NUMBERS | Flags.FLAG_ALWAYS_SET);\n\t}\n\n\t/**\n\t * Create flags without UTF-8 numbers (required for search)\n\t */\n\tstatic noUtf8(): Flags {\n\t\treturn new Flags(Flags.FLAG_ALWAYS_SET);\n\t}\n\n\t/**\n\t * Create flags using ZLIB compression\n\t */\n\tstatic useZlib(): Flags {\n\t\treturn new Flags(Flags.FLAG_ZLIB | Flags.FLAG_ALWAYS_SET);\n\t}\n\n\t/**\n\t * Get numeric value of flags\n\t */\n\tgetValue(): number {\n\t\treturn this.flags;\n\t}\n}\n","/**\n * EC Packet structure\n */\n\nimport { ECOpCode } from '../Codes';\nimport { Flags } from './Flags';\nimport type { Tag } from '../tag/Tag';\n\nexport class Packet {\n\tprivate static readonly EC_CURRENT_PROTOCOL_VERSION = 0x0204;\n\n\tconstructor(\n\t\tpublic readonly opCode: ECOpCode,\n\t\tpublic readonly flags: Flags = new Flags(),\n\t\tpublic readonly tags: Tag<any>[] = []\n\t) {}\n\n\t/**\n\t * Add a tag to the packet\n\t */\n\taddTag(tag: Tag<any>): this {\n\t\tthis.tags.push(tag);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add multiple tags to the packet\n\t */\n\taddTags(tags: Tag<any>[]): this {\n\t\tthis.tags.push(...tags);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get protocol version\n\t */\n\tstatic getProtocolVersion(): number {\n\t\treturn Packet.EC_CURRENT_PROTOCOL_VERSION;\n\t}\n\n\t/**\n\t * Find a tag by name\n\t */\n\tfindTag(tagName: number): Tag<any> | undefined {\n\t\treturn this.tags.find((tag) => tag.name === tagName);\n\t}\n\n\t/**\n\t * Get all tags with a specific name\n\t */\n\tfindAllTags(tagName: number): Tag<any>[] {\n\t\treturn this.tags.filter((tag) => tag.name === tagName);\n\t}\n\n\t/**\n\t * Check if packet has a specific tag\n\t */\n\thasTag(tagName: number): boolean {\n\t\treturn this.findTag(tagName) !== undefined;\n\t}\n}\n","/**\n * Base Request class\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { Flags } from '../ec/packet/Flags';\nimport { ECOpCode } from '../ec/Codes';\nimport type { Tag } from '../ec/tag/Tag';\n\nexport abstract class Request {\n\tprotected readonly opCode: ECOpCode;\n\tprotected readonly tags: Tag<any>[] = [];\n\n\tconstructor(opCode: ECOpCode) {\n\t\tthis.opCode = opCode;\n\t}\n\n\t/**\n\t * Add a tag to the request\n\t */\n\tprotected addTag(tag: Tag<any>): void {\n\t\tthis.tags.push(tag);\n\t}\n\n\t/**\n\t * Build the packet for this request\n\t */\n\tbuildPacket(): Packet {\n\t\tconst flags = Flags.useUtf8Numbers();\n\t\treturn new Packet(this.opCode, flags, this.tags);\n\t}\n}\n"],"mappings":";;;;AAIA,IAAa,QAAb,MAAa,MAAM;CAClB,OAAwB,eAAe;CACvC,OAAwB,YAAY;CACpC,OAAwB,oBAAoB;CAC5C,OAAwB,kBAAkB;CAE1C;CAEA,YAAY,OAAgB;EAC3B,KAAK,QAAQ,SAAS;CACvB;;;;CAKA,OAAO,WAAW,QAAgB,SAAiB,GAAU;EAE5D,OAAO,IAAI,MADG,OAAO,aAAa,MACb,CAAC;CACvB;;;;CAKA,cAAc,QAAgB,SAAiB,GAAS;EACvD,OAAO,cAAc,KAAK,OAAO,MAAM;CACxC;;;;CAKA,wBAAiC;EAChC,QAAQ,KAAK,QAAQ,MAAM,gBAAgB,MAAM,KAAK,QAAQ,MAAM,qBAAqB;CAC1F;;;;CAKA,iBAA0B;EACzB,QAAQ,KAAK,QAAQ,MAAM,gBAAgB,MAAM,KAAK,QAAQ,MAAM,aAAa;CAClF;;;;CAKA,gBAAyB;EACxB,QAAQ,KAAK,QAAQ,MAAM,qBAAqB;CACjD;;;;CAKA,SAAkB;EACjB,QAAQ,KAAK,QAAQ,MAAM,aAAa;CACzC;;;;CAKA,OAAO,SAAgB;EACtB,OAAO,IAAI,MAAM,MAAM,eAAe,MAAM,oBAAoB,MAAM,YAAY,MAAM,eAAe;CACxG;;;;CAKA,OAAO,iBAAwB;EAC9B,OAAO,IAAI,MAAM,MAAM,oBAAoB,MAAM,eAAe;CACjE;;;;CAKA,OAAO,SAAgB;EACtB,OAAO,IAAI,MAAM,MAAM,eAAe;CACvC;;;;CAKA,OAAO,UAAiB;EACvB,OAAO,IAAI,MAAM,MAAM,YAAY,MAAM,eAAe;CACzD;;;;CAKA,WAAmB;EAClB,OAAO,KAAK;CACb;AACD;;;ACrFA,IAAa,SAAb,MAAa,OAAO;CAIF;CACA;CACA;CALjB,OAAwB,8BAA8B;CAEtD,YACC,QACA,QAA+B,IAAI,MAAM,GACzC,OAAmC,CAAC,GACnC;EAHe,KAAA,SAAA;EACA,KAAA,QAAA;EACA,KAAA,OAAA;CACd;;;;CAKH,OAAO,KAAqB;EAC3B,KAAK,KAAK,KAAK,GAAG;EAClB,OAAO;CACR;;;;CAKA,QAAQ,MAAwB;EAC/B,KAAK,KAAK,KAAK,GAAG,IAAI;EACtB,OAAO;CACR;;;;CAKA,OAAO,qBAA6B;EACnC,OAAO,OAAO;CACf;;;;CAKA,QAAQ,SAAuC;EAC9C,OAAO,KAAK,KAAK,MAAM,QAAQ,IAAI,SAAS,OAAO;CACpD;;;;CAKA,YAAY,SAA6B;EACxC,OAAO,KAAK,KAAK,QAAQ,QAAQ,IAAI,SAAS,OAAO;CACtD;;;;CAKA,OAAO,SAA0B;EAChC,OAAO,KAAK,QAAQ,OAAO,MAAM,KAAA;CAClC;AACD;;;;;;ACnDA,IAAsB,UAAtB,MAA8B;CAC7B;CACA,OAAsC,CAAC;CAEvC,YAAY,QAAkB;EAC7B,KAAK,SAAS;CACf;;;;CAKA,OAAiB,KAAqB;EACrC,KAAK,KAAK,KAAK,GAAG;CACnB;;;;CAKA,cAAsB;EACrB,MAAM,QAAQ,MAAM,eAAe;EACnC,OAAO,IAAI,OAAO,KAAK,QAAQ,OAAO,KAAK,IAAI;CAChD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchProgressResponse-Bputc9Ww.mjs","names":[],"sources":["../src/response/SearchProgressResponse.ts"],"sourcesContent":["/**\n * Search Progress Response - Search status/progress\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { ECTagName } from '../ec/Codes';\nimport { findNumericTag } from '../ec/tag/Tag';\n\nexport class SearchProgressResponse {\n\tconstructor(public readonly progress: number) {}\n\n\tstatic fromPacket(packet: Packet): SearchProgressResponse {\n\t\tconst progressTag = findNumericTag(packet.tags, ECTagName.EC_TAG_SEARCH_STATUS);\n\t\tconst progress = progressTag ? Number(progressTag.getValue()) / 100.0 : 0;\n\n\t\treturn new SearchProgressResponse(progress);\n\t}\n}\n"],"mappings":";;;AAQA,IAAa,yBAAb,MAAa,uBAAuB;CACP;CAA5B,YAAY,UAAkC;EAAlB,KAAA,WAAA;CAAmB;CAE/C,OAAO,WAAW,QAAwC;EACzD,MAAM,cAAc,eAAe,OAAO,MAAA,IAAoC;EAG9E,OAAO,IAAI,uBAFM,cAAc,OAAO,YAAY,SAAS,CAAC,IAAI,MAAQ,CAE9B;CAC3C;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchRequest-CNqz-K1Z.mjs","names":[],"sources":["../src/request/SearchRequest.ts"],"sourcesContent":["/**\n * Search Request - Start a search\n *\n * In the EC protocol, search is structured as:\n * - EC_TAG_SEARCH_TYPE (UByte) containing subtag:\n * - EC_TAG_SEARCH_NAME (String) with the search query\n * - Uses non-UTF8 flags (Flags.noUtf8())\n */\n\nimport { Request } from './Request';\nimport { Packet } from '../ec/packet/Packet';\nimport { Flags } from '../ec/packet/Flags';\nimport { ECOpCode, ECTagName, ECSearchType } from '../ec/Codes';\nimport { StringTag, UByteTag, UIntTag, ULongTag } from '../ec/tag/Tag';\nimport { SearchType } from '../model';\nimport type { SearchFilters } from '../types';\n\nexport class SearchRequest extends Request {\n\tprivate readonly query: string;\n\tprivate readonly searchType: SearchType;\n\tprivate readonly filters?: SearchFilters;\n\n\tconstructor(query: string, searchType: SearchType = SearchType.LOCAL, filters?: SearchFilters) {\n\t\tsuper(ECOpCode.EC_OP_SEARCH_START);\n\t\tthis.query = query;\n\t\tthis.searchType = searchType;\n\t\tthis.filters = filters;\n\t}\n\n\t/**\n\t * Override buildPacket to use non-UTF8 flags and correct tag structure\n\t */\n\tbuildPacket(): Packet {\n\t\tconst flags = Flags.noUtf8();\n\t\tconst tags = this.buildTags();\n\t\treturn new Packet(this.opCode, flags, tags);\n\t}\n\n\tprivate buildTags(): any[] {\n\t\tconst tags: any[] = [];\n\n\t\t// EC_TAG_SEARCH_TYPE with EC_TAG_SEARCH_NAME as subtag\n\t\tconst ecSearchType = this.convertSearchType(this.searchType);\n\t\tconst searchNameTag = new StringTag(ECTagName.EC_TAG_SEARCH_NAME, this.query);\n\t\tconst searchTypeTag = new UByteTag(ECTagName.EC_TAG_SEARCH_TYPE, ecSearchType, [searchNameTag]);\n\t\ttags.push(searchTypeTag);\n\n\t\t// Add filters if provided\n\t\tif (this.filters) {\n\t\t\tif (this.filters.minSize !== undefined) {\n\t\t\t\ttags.push(new ULongTag(ECTagName.EC_TAG_SEARCH_MIN_SIZE, BigInt(this.filters.minSize)));\n\t\t\t}\n\t\t\tif (this.filters.maxSize !== undefined) {\n\t\t\t\ttags.push(new ULongTag(ECTagName.EC_TAG_SEARCH_MAX_SIZE, BigInt(this.filters.maxSize)));\n\t\t\t}\n\t\t\tif (this.filters.fileType !== undefined) {\n\t\t\t\ttags.push(new StringTag(ECTagName.EC_TAG_SEARCH_FILE_TYPE, this.filters.fileType));\n\t\t\t}\n\t\t\tif (this.filters.extension !== undefined) {\n\t\t\t\ttags.push(new StringTag(ECTagName.EC_TAG_SEARCH_EXTENSION, this.filters.extension));\n\t\t\t}\n\t\t\tif (this.filters.availability !== undefined) {\n\t\t\t\ttags.push(new UIntTag(ECTagName.EC_TAG_SEARCH_AVAILABILITY, this.filters.availability));\n\t\t\t}\n\t\t}\n\n\t\treturn tags;\n\t}\n\n\tprivate convertSearchType(searchType: SearchType): ECSearchType {\n\t\tswitch (searchType) {\n\t\t\tcase SearchType.LOCAL:\n\t\t\t\treturn ECSearchType.EC_SEARCH_LOCAL;\n\t\t\tcase SearchType.GLOBAL:\n\t\t\t\treturn ECSearchType.EC_SEARCH_GLOBAL;\n\t\t\tcase SearchType.KAD:\n\t\t\t\treturn ECSearchType.EC_SEARCH_KAD;\n\t\t\tcase SearchType.WEB:\n\t\t\t\treturn ECSearchType.EC_SEARCH_WEB;\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AAiBA,IAAa,gBAAb,cAAmC,QAAQ;CAC1C;CACA;CACA;CAEA,YAAY,OAAe,aAAA,GAA2C,SAAyB;EAC9F,MAAA,EAAiC;EACjC,KAAK,QAAQ;EACb,KAAK,aAAa;EAClB,KAAK,UAAU;CAChB;;;;CAKA,cAAsB;EACrB,MAAM,QAAQ,MAAM,OAAO;EAC3B,MAAM,OAAO,KAAK,UAAU;EAC5B,OAAO,IAAI,OAAO,KAAK,QAAQ,OAAO,IAAI;CAC3C;CAEA,YAA2B;EAC1B,MAAM,OAAc,CAAC;EAKrB,MAAM,gBAAgB,IAAI,SAAA,MAFL,KAAK,kBAAkB,KAAK,UAEgB,GAAc,CAAC,IADtD,UAAA,MAAwC,KAAK,KACS,CAAa,CAAC;EAC9F,KAAK,KAAK,aAAa;EAGvB,IAAI,KAAK,SAAS;GACjB,IAAI,KAAK,QAAQ,YAAY,KAAA,GAC5B,KAAK,KAAK,IAAI,SAAA,MAA2C,OAAO,KAAK,QAAQ,OAAO,CAAC,CAAC;GAEvF,IAAI,KAAK,QAAQ,YAAY,KAAA,GAC5B,KAAK,KAAK,IAAI,SAAA,MAA2C,OAAO,KAAK,QAAQ,OAAO,CAAC,CAAC;GAEvF,IAAI,KAAK,QAAQ,aAAa,KAAA,GAC7B,KAAK,KAAK,IAAI,UAAA,MAA6C,KAAK,QAAQ,QAAQ,CAAC;GAElF,IAAI,KAAK,QAAQ,cAAc,KAAA,GAC9B,KAAK,KAAK,IAAI,UAAA,MAA6C,KAAK,QAAQ,SAAS,CAAC;GAEnF,IAAI,KAAK,QAAQ,iBAAiB,KAAA,GACjC,KAAK,KAAK,IAAI,QAAA,MAA8C,KAAK,QAAQ,YAAY,CAAC;EAExF;EAEA,OAAO;CACR;CAEA,kBAA0B,YAAsC;EAC/D,QAAQ,YAAR;GACC,KAAA,GACC,OAAA;GACD,KAAA,GACC,OAAA;GACD,KAAA,GACC,OAAA;GACD,KAAA,GACC,OAAA;EACF;CACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchResultsRequest-DKG508KF.mjs","names":[],"sources":["../src/request/SearchResultsRequest.ts"],"sourcesContent":["/**\n * Search Results Request - Get search results\n */\n\nimport { Request } from './Request';\nimport { ECOpCode } from '../ec/Codes';\n\nexport class SearchResultsRequest extends Request {\n\tconstructor() {\n\t\tsuper(ECOpCode.EC_OP_SEARCH_RESULTS);\n\t}\n}\n"],"mappings":";;;;;;AAOA,IAAa,uBAAb,cAA0C,QAAQ;CACjD,cAAc;EACb,MAAA,EAAmC;CACpC;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchResultsResponse-ChNrKJ6_.mjs","names":[],"sources":["../src/response/SearchResultsResponse.ts"],"sourcesContent":["/**\n * Search Results Response - Search results\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { ECTagName } from '../ec/Codes';\nimport { findNumericTag, findTag } from '../ec/tag/Tag';\nimport type { SearchResultsResponse } from '../client/AmuleClient';\n\nexport class SearchResultsResponseParser {\n\tstatic fromPacket(packet: Packet): SearchResultsResponse {\n\t\tconst files: SearchResultsResponse['files'] = [];\n\n\t\t// Find all search result tags\n\t\tconst searchFileTags = packet.tags.filter((tag) => tag.name === ECTagName.EC_TAG_SEARCHFILE);\n\n\t\tfor (const fileTag of searchFileTags) {\n\t\t\tconst nestedTags = fileTag.nestedTags || [];\n\n\t\t\t// Extract file information\n\t\t\tconst fileNameTag = findTag(nestedTags, ECTagName.EC_TAG_PARTFILE_NAME);\n\t\t\tconst hashTag = findTag(nestedTags, ECTagName.EC_TAG_PARTFILE_HASH);\n\t\t\tconst sizeTag = findNumericTag(nestedTags, ECTagName.EC_TAG_PARTFILE_SIZE_FULL);\n\t\t\tconst sourceCountTag = findNumericTag(nestedTags, ECTagName.EC_TAG_PARTFILE_SOURCE_COUNT);\n\t\t\tconst completeSourcesTag = findNumericTag(nestedTags, ECTagName.EC_TAG_PARTFILE_SOURCE_COUNT_XFER);\n\t\t\tconst downloadStatusTag = findNumericTag(nestedTags, ECTagName.EC_TAG_PARTFILE_STATUS);\n\n\t\t\tif (fileNameTag && hashTag) {\n\t\t\t\tfiles.push({\n\t\t\t\t\tfileName: fileNameTag.getValue(),\n\t\t\t\t\thash: hashTag.getValue(),\n\t\t\t\t\tsizeFull: sizeTag ? Number(sizeTag.getLong()) : 0,\n\t\t\t\t\tdownloadStatus: downloadStatusTag ? downloadStatusTag.getInt() : 0,\n\t\t\t\t\tcompleteSourceCount: completeSourcesTag ? completeSourcesTag.getInt() : 0,\n\t\t\t\t\tsourceCount: sourceCountTag ? sourceCountTag.getInt() : 0,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn { files };\n\t}\n}\n"],"mappings":";;;AASA,IAAa,8BAAb,MAAyC;CACxC,OAAO,WAAW,QAAuC;EACxD,MAAM,QAAwC,CAAC;EAG/C,MAAM,iBAAiB,OAAO,KAAK,QAAQ,QAAQ,IAAI,SAAA,IAAoC;EAE3F,KAAK,MAAM,WAAW,gBAAgB;GACrC,MAAM,aAAa,QAAQ,cAAc,CAAC;GAG1C,MAAM,cAAc,QAAQ,YAAA,GAA0C;GACtE,MAAM,UAAU,QAAQ,YAAA,GAA0C;GAClE,MAAM,UAAU,eAAe,YAAA,GAA+C;GAC9E,MAAM,iBAAiB,eAAe,YAAA,GAAkD;GACxF,MAAM,qBAAqB,eAAe,YAAA,GAAuD;GACjG,MAAM,oBAAoB,eAAe,YAAA,GAA4C;GAErF,IAAI,eAAe,SAClB,MAAM,KAAK;IACV,UAAU,YAAY,SAAS;IAC/B,MAAM,QAAQ,SAAS;IACvB,UAAU,UAAU,OAAO,QAAQ,QAAQ,CAAC,IAAI;IAChD,gBAAgB,oBAAoB,kBAAkB,OAAO,IAAI;IACjE,qBAAqB,qBAAqB,mBAAmB,OAAO,IAAI;IACxE,aAAa,iBAAiB,eAAe,OAAO,IAAI;GACzD,CAAC;EAEH;EAEA,OAAO,EAAE,MAAM;CAChB;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchStatusRequest-Bv6iaC9Y.mjs","names":[],"sources":["../src/request/SearchStatusRequest.ts"],"sourcesContent":["/**\n * Search Status Request - Get search progress\n */\n\nimport { Request } from './Request';\nimport { ECOpCode } from '../ec/Codes';\n\nexport class SearchStatusRequest extends Request {\n\tconstructor() {\n\t\tsuper(ECOpCode.EC_OP_SEARCH_PROGRESS);\n\t}\n}\n"],"mappings":";;;;;;AAOA,IAAa,sBAAb,cAAyC,QAAQ;CAChD,cAAc;EACb,MAAA,EAAoC;CACrC;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchStopRequest-rET-2Nsz.mjs","names":[],"sources":["../src/request/SearchStopRequest.ts"],"sourcesContent":["/**\n * Search Stop Request - Stop current search\n */\n\nimport { Request } from './Request';\nimport { ECOpCode } from '../ec/Codes';\n\nexport class SearchStopRequest extends Request {\n\tconstructor() {\n\t\tsuper(ECOpCode.EC_OP_SEARCH_STOP);\n\t}\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,QAAQ;CAC9C,cAAc;EACb,MAAA,EAAgC;CACjC;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerConnectRequest-CcO2-Eqd.mjs","names":[],"sources":["../src/request/ServerConnectRequest.ts"],"sourcesContent":["/**\n * Server Connect Request - Connect to a specific server\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { Ipv4Tag } from '../ec/tag/Tag';\n\nexport class ServerConnectRequest extends Request {\n\tconstructor(ip?: string, port?: number) {\n\t\tsuper(ECOpCode.EC_OP_SERVER_CONNECT);\n\n\t\tif (ip && port) {\n\t\t\tthis.addTag(new Ipv4Tag(ECTagName.EC_TAG_SERVER, { address: ip, port }));\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,uBAAb,cAA0C,QAAQ;CACjD,YAAY,IAAa,MAAe;EACvC,MAAA,EAAmC;EAEnC,IAAI,MAAM,MACT,KAAK,OAAO,IAAI,QAAA,MAAiC;GAAE,SAAS;GAAI;EAAK,CAAC,CAAC;CAEzE;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerDisconnectRequest-DEORM3SF.mjs","names":[],"sources":["../src/request/ServerDisconnectRequest.ts"],"sourcesContent":["/**\n * Server Disconnect Request - Disconnect from the current server\n */\n\nimport { Request } from './Request';\nimport { ECOpCode } from '../ec/Codes';\n\nexport class ServerDisconnectRequest extends Request {\n\tconstructor() {\n\t\tsuper(ECOpCode.EC_OP_SERVER_DISCONNECT);\n\t}\n}\n"],"mappings":";;;;;;AAOA,IAAa,0BAAb,cAA6C,QAAQ;CACpD,cAAc;EACb,MAAA,EAAsC;CACvC;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerListRequest-FwFQBp12.mjs","names":[],"sources":["../src/request/ServerListRequest.ts"],"sourcesContent":["/**\n * Server List Request - Request the list of servers\n */\n\nimport { Request } from './Request';\nimport { ECOpCode } from '../ec/Codes';\n\nexport class ServerListRequest extends Request {\n\tconstructor() {\n\t\tsuper(ECOpCode.EC_OP_GET_SERVER_LIST);\n\t}\n}\n"],"mappings":";;;;;;AAOA,IAAa,oBAAb,cAAuC,QAAQ;CAC9C,cAAc;EACb,MAAA,EAAoC;CACrC;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerListResponse-ZAKSSCPZ.mjs","names":[],"sources":["../src/response/ServerListResponse.ts"],"sourcesContent":["/**\n * Server List Response - Parse the list of servers\n */\n\nimport { Packet } from '../ec/packet/Packet';\nimport { ECTagName } from '../ec/Codes';\nimport { findNumericTag, findTag } from '../ec/tag/Tag';\nimport { formatIp, toOptionalBool } from './utils';\nimport type { AmuleServer } from '../model';\n\nexport interface ServerListResponse {\n\tservers: AmuleServer[];\n}\n\nexport class ServerListResponseParser {\n\tstatic fromPacket(packet: Packet): ServerListResponse {\n\t\treturn this.fromTags(packet.tags);\n\t}\n\n\tstatic fromTags(allTags: any[]): ServerListResponse {\n\t\tconst servers: AmuleServer[] = [];\n\n\t\t// Find all server tags\n\t\tconst serverTags = allTags.filter((tag) => tag.name === ECTagName.EC_TAG_SERVER);\n\n\t\tfor (const serverTag of serverTags) {\n\t\t\tconst nested = serverTag.nestedTags || [];\n\n\t\t\t// aMule often sends IP and Port combined in an Ipv4Tag (6 bytes)\n\t\t\t// Or as separate UInt32/UInt16 tags.\n\t\t\t// In many cases, the top-level EC_TAG_SERVER itself IS the Ipv4Tag.\n\t\t\tconst ipv4Tag =\n\t\t\t\tfindTag(nested, ECTagName.EC_TAG_SERVER_IP) ||\n\t\t\t\tfindTag(nested, ECTagName.EC_TAG_SERVER_ADDRESS) ||\n\t\t\t\t(serverTag.constructor.name.includes('Ipv4') ? serverTag : null);\n\n\t\t\tlet ip: string | undefined = undefined;\n\t\t\tlet port: number | undefined = undefined;\n\n\t\t\tif (ipv4Tag && ipv4Tag.getValue() && typeof ipv4Tag.getValue() === 'object' && 'address' in (ipv4Tag.getValue() as any)) {\n\t\t\t\tconst val = ipv4Tag.getValue() as any;\n\t\t\t\tip = val.address;\n\t\t\t\tport = val.port;\n\t\t\t} else {\n\t\t\t\t// Fallback to separate tags if not combined or if top-level\n\t\t\t\tconst ipNum = findNumericTag(nested, ECTagName.EC_TAG_SERVER_IP)?.getInt() || findNumericTag(allTags, ECTagName.EC_TAG_SERVER_IP)?.getInt();\n\n\t\t\t\tport = findNumericTag(nested, ECTagName.EC_TAG_SERVER_PORT)?.getInt() || findNumericTag(allTags, ECTagName.EC_TAG_SERVER_PORT)?.getInt();\n\n\t\t\t\tip = ipNum !== undefined ? formatIp(ipNum) : undefined;\n\t\t\t}\n\n\t\t\t// Some servers might have port in EC_TAG_SERVER_PORT even if IP is in combined tag\n\t\t\tif (port === undefined || port === 0) {\n\t\t\t\tconst extraPort = findNumericTag(nested, ECTagName.EC_TAG_SERVER_PORT)?.getInt();\n\t\t\t\tif (extraPort !== undefined) port = extraPort;\n\t\t\t}\n\n\t\t\tservers.push({\n\t\t\t\tname: findTag(nested, ECTagName.EC_TAG_SERVER_NAME)?.getValue(),\n\t\t\t\tdescription: findTag(nested, ECTagName.EC_TAG_SERVER_DESC)?.getValue(),\n\t\t\t\taddress: findTag(nested, ECTagName.EC_TAG_SERVER_ADDRESS)?.getValue(),\n\t\t\t\tip: ip,\n\t\t\t\tport: port,\n\t\t\t\tping: findNumericTag(nested, ECTagName.EC_TAG_SERVER_PING)?.getInt(),\n\t\t\t\tusers: findNumericTag(nested, ECTagName.EC_TAG_SERVER_USERS)?.getInt(),\n\t\t\t\tmaxUsers: findNumericTag(nested, ECTagName.EC_TAG_SERVER_USERS_MAX)?.getInt(),\n\t\t\t\tfiles: findNumericTag(nested, ECTagName.EC_TAG_SERVER_FILES)?.getInt(),\n\t\t\t\tpriority: findNumericTag(nested, ECTagName.EC_TAG_SERVER_PRIO)?.getInt(),\n\t\t\t\tversion: findTag(nested, ECTagName.EC_TAG_SERVER_VERSION)?.getValue(),\n\t\t\t\tisStatic: toOptionalBool(findNumericTag(nested, ECTagName.EC_TAG_SERVER_STATIC)?.getInt()),\n\t\t\t\tfailedCount: findNumericTag(nested, ECTagName.EC_TAG_SERVER_FAILED)?.getInt(),\n\t\t\t});\n\t\t}\n\n\t\treturn { servers };\n\t}\n}\n"],"mappings":";;;;AAcA,IAAa,2BAAb,MAAsC;CACrC,OAAO,WAAW,QAAoC;EACrD,OAAO,KAAK,SAAS,OAAO,IAAI;CACjC;CAEA,OAAO,SAAS,SAAoC;EACnD,MAAM,UAAyB,CAAC;EAGhC,MAAM,aAAa,QAAQ,QAAQ,QAAQ,IAAI,SAAA,IAAgC;EAE/E,KAAK,MAAM,aAAa,YAAY;GACnC,MAAM,SAAS,UAAU,cAAc,CAAC;GAKxC,MAAM,UACL,QAAQ,QAAA,IAAkC,KAC1C,QAAQ,QAAA,IAAuC,MAC9C,UAAU,YAAY,KAAK,SAAS,MAAM,IAAI,YAAY;GAE5D,IAAI,KAAyB,KAAA;GAC7B,IAAI,OAA2B,KAAA;GAE/B,IAAI,WAAW,QAAQ,SAAS,KAAK,OAAO,QAAQ,SAAS,MAAM,YAAY,aAAc,QAAQ,SAAS,GAAW;IACxH,MAAM,MAAM,QAAQ,SAAS;IAC7B,KAAK,IAAI;IACT,OAAO,IAAI;GACZ,OAAO;IAEN,MAAM,QAAQ,eAAe,QAAA,IAAkC,CAAC,EAAE,OAAO,KAAK,eAAe,SAAA,IAAmC,CAAC,EAAE,OAAO;IAE1I,OAAO,eAAe,QAAA,IAAoC,CAAC,EAAE,OAAO,KAAK,eAAe,SAAA,IAAqC,CAAC,EAAE,OAAO;IAEvI,KAAK,UAAU,KAAA,IAAY,SAAS,KAAK,IAAI,KAAA;GAC9C;GAGA,IAAI,SAAS,KAAA,KAAa,SAAS,GAAG;IACrC,MAAM,YAAY,eAAe,QAAA,IAAoC,CAAC,EAAE,OAAO;IAC/E,IAAI,cAAc,KAAA,GAAW,OAAO;GACrC;GAEA,QAAQ,KAAK;IACZ,MAAM,QAAQ,QAAA,IAAoC,CAAC,EAAE,SAAS;IAC9D,aAAa,QAAQ,QAAA,IAAoC,CAAC,EAAE,SAAS;IACrE,SAAS,QAAQ,QAAA,IAAuC,CAAC,EAAE,SAAS;IAChE;IACE;IACN,MAAM,eAAe,QAAA,IAAoC,CAAC,EAAE,OAAO;IACnE,OAAO,eAAe,QAAA,IAAqC,CAAC,EAAE,OAAO;IACrE,UAAU,eAAe,QAAA,IAAyC,CAAC,EAAE,OAAO;IAC5E,OAAO,eAAe,QAAA,IAAqC,CAAC,EAAE,OAAO;IACrE,UAAU,eAAe,QAAA,IAAoC,CAAC,EAAE,OAAO;IACvE,SAAS,QAAQ,QAAA,IAAuC,CAAC,EAAE,SAAS;IACpE,UAAU,eAAe,eAAe,QAAA,IAAsC,CAAC,EAAE,OAAO,CAAC;IACzF,aAAa,eAAe,QAAA,IAAsC,CAAC,EAAE,OAAO;GAC7E,CAAC;EACF;EAEA,OAAO,EAAE,QAAQ;CAClB;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerUpdateFromUrlRequest-D4xBqJDJ.mjs","names":[],"sources":["../src/request/ServerUpdateFromUrlRequest.ts"],"sourcesContent":["import { ECOpCode, ECTagName } from '../ec/Codes';\nimport { StringTag } from '../ec/tag/Tag';\nimport { Request } from './Request';\n\nexport class ServerUpdateFromUrlRequest extends Request {\n\tconstructor(url: string) {\n\t\tsuper(ECOpCode.EC_OP_SERVER_UPDATE_FROM_URL);\n\t\tthis.addTag(new StringTag(ECTagName.EC_TAG_SERVERS_UPDATE_URL, url));\n\t}\n}\n"],"mappings":";;;;AAIA,IAAa,6BAAb,cAAgD,QAAQ;CACvD,YAAY,KAAa;EACxB,MAAA,EAA2C;EAC3C,KAAK,OAAO,IAAI,UAAA,MAA+C,GAAG,CAAC;CACpE;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SetFileCategoryRequest-BwEPJVeR.mjs","names":[],"sources":["../src/request/SetFileCategoryRequest.ts"],"sourcesContent":["/**\n * Set File Category Request - Change category of a file\n */\n\nimport { Request } from './Request';\nimport { ECOpCode, ECTagName } from '../ec/Codes';\nimport { Hash16Tag, UByteTag } from '../ec/tag/Tag';\n\nexport class SetFileCategoryRequest extends Request {\n\tconstructor(hash: Buffer, categoryId: number) {\n\t\tsuper(ECOpCode.EC_OP_PARTFILE_SET_CAT);\n\n\t\t// Hash tag with category as subtag\n\t\tthis.addTag(new Hash16Tag(ECTagName.EC_TAG_PARTFILE, hash, [new UByteTag(ECTagName.EC_TAG_PARTFILE_CAT, categoryId)]));\n\t}\n}\n"],"mappings":";;;;;;;AAQA,IAAa,yBAAb,cAA4C,QAAQ;CACnD,YAAY,MAAc,YAAoB;EAC7C,MAAA,EAAqC;EAGrC,KAAK,OAAO,IAAI,UAAA,KAAqC,MAAM,CAAC,IAAI,SAAA,KAAwC,UAAU,CAAC,CAAC,CAAC;CACtH;AACD"}