amule-ec-client 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/AddLinkRequest-DwUbSMXD.mjs +17 -0
- package/dist/AddLinkRequest-DwUbSMXD.mjs.map +1 -0
- package/dist/ClientQueueRequest-D9FaX5K9.mjs +17 -0
- package/dist/ClientQueueRequest-D9FaX5K9.mjs.map +1 -0
- package/dist/ClientQueueResponse-FVQBR_8b.mjs +65 -0
- package/dist/ClientQueueResponse-FVQBR_8b.mjs.map +1 -0
- package/dist/Codes-CjiW7Pdl.mjs +411 -0
- package/dist/Codes-CjiW7Pdl.mjs.map +1 -0
- package/dist/CreateCategoryRequest-Br6yfDhZ.mjs +24 -0
- package/dist/CreateCategoryRequest-Br6yfDhZ.mjs.map +1 -0
- package/dist/DeleteCategoryRequest-C2-p6sx0.mjs +17 -0
- package/dist/DeleteCategoryRequest-C2-p6sx0.mjs.map +1 -0
- package/dist/DownloadCommandRequest-CaULjfNi.mjs +31 -0
- package/dist/DownloadCommandRequest-CaULjfNi.mjs.map +1 -0
- package/dist/DownloadFileRequest-CcNqsBo7.mjs +20 -0
- package/dist/DownloadFileRequest-CcNqsBo7.mjs.map +1 -0
- package/dist/DownloadQueueRequest-bd7lFiMj.mjs +17 -0
- package/dist/DownloadQueueRequest-bd7lFiMj.mjs.map +1 -0
- package/dist/DownloadQueueResponse-DyP1rLTV.mjs +261 -0
- package/dist/DownloadQueueResponse-DyP1rLTV.mjs.map +1 -0
- package/dist/GetPreferencesRequest-C94Su9IH.mjs +18 -0
- package/dist/GetPreferencesRequest-C94Su9IH.mjs.map +1 -0
- package/dist/PreferencesDetailsResponse-BjMxbvVY.mjs +96 -0
- package/dist/PreferencesDetailsResponse-BjMxbvVY.mjs.map +1 -0
- package/dist/PreferencesResponse-Dth-n2sA.mjs +39 -0
- package/dist/PreferencesResponse-Dth-n2sA.mjs.map +1 -0
- package/dist/ReloadSharedFilesRequest-CPwAEJYG.mjs +15 -0
- package/dist/ReloadSharedFilesRequest-CPwAEJYG.mjs.map +1 -0
- package/dist/Request-C0UUuQIX.mjs +160 -0
- package/dist/Request-C0UUuQIX.mjs.map +1 -0
- package/dist/SearchProgressResponse-Bputc9Ww.mjs +17 -0
- package/dist/SearchProgressResponse-Bputc9Ww.mjs.map +1 -0
- package/dist/SearchRequest-CNqz-K1Z.mjs +57 -0
- package/dist/SearchRequest-CNqz-K1Z.mjs.map +1 -0
- package/dist/SearchResultsRequest-DKG508KF.mjs +15 -0
- package/dist/SearchResultsRequest-DKG508KF.mjs.map +1 -0
- package/dist/SearchResultsResponse-ChNrKJ6_.mjs +31 -0
- package/dist/SearchResultsResponse-ChNrKJ6_.mjs.map +1 -0
- package/dist/SearchStatusRequest-Bv6iaC9Y.mjs +15 -0
- package/dist/SearchStatusRequest-Bv6iaC9Y.mjs.map +1 -0
- package/dist/SearchStopRequest-rET-2Nsz.mjs +15 -0
- package/dist/SearchStopRequest-rET-2Nsz.mjs.map +1 -0
- package/dist/ServerConnectRequest-CcO2-Eqd.mjs +20 -0
- package/dist/ServerConnectRequest-CcO2-Eqd.mjs.map +1 -0
- package/dist/ServerDisconnectRequest-DEORM3SF.mjs +15 -0
- package/dist/ServerDisconnectRequest-DEORM3SF.mjs.map +1 -0
- package/dist/ServerListRequest-FwFQBp12.mjs +15 -0
- package/dist/ServerListRequest-FwFQBp12.mjs.map +1 -0
- package/dist/ServerListResponse-ZAKSSCPZ.mjs +52 -0
- package/dist/ServerListResponse-ZAKSSCPZ.mjs.map +1 -0
- package/dist/ServerUpdateFromUrlRequest-D4xBqJDJ.mjs +14 -0
- package/dist/ServerUpdateFromUrlRequest-D4xBqJDJ.mjs.map +1 -0
- package/dist/SetFileCategoryRequest-BwEPJVeR.mjs +17 -0
- package/dist/SetFileCategoryRequest-BwEPJVeR.mjs.map +1 -0
- package/dist/SetPreferencesRequest-D2fVIH3P.mjs +66 -0
- package/dist/SetPreferencesRequest-D2fVIH3P.mjs.map +1 -0
- package/dist/SharedFilePriorityRequest-j6ImgagV.mjs +15 -0
- package/dist/SharedFilePriorityRequest-j6ImgagV.mjs.map +1 -0
- package/dist/SharedFilesRequest-D2M3K0eB.mjs +17 -0
- package/dist/SharedFilesRequest-D2M3K0eB.mjs.map +1 -0
- package/dist/SharedFilesResponse-BiXT_oCx.mjs +41 -0
- package/dist/SharedFilesResponse-BiXT_oCx.mjs.map +1 -0
- package/dist/StatsRequest-B8v9LLHG.mjs +17 -0
- package/dist/StatsRequest-B8v9LLHG.mjs.map +1 -0
- package/dist/StatsResponse-BVUxNPbz.mjs +78 -0
- package/dist/StatsResponse-BVUxNPbz.mjs.map +1 -0
- package/dist/Tag-CZF6BRMY.mjs +262 -0
- package/dist/Tag-CZF6BRMY.mjs.map +1 -0
- package/dist/UpdateCategoryRequest-CgzH7SxP.mjs +24 -0
- package/dist/UpdateCategoryRequest-CgzH7SxP.mjs.map +1 -0
- package/dist/UpdateRequest-Bunl73Ga.mjs +17 -0
- package/dist/UpdateRequest-Bunl73Ga.mjs.map +1 -0
- package/dist/UpdateResponse-1LhyH9Zf.mjs +47 -0
- package/dist/UpdateResponse-1LhyH9Zf.mjs.map +1 -0
- package/dist/download-details-OM0FJUhZ.mjs +12 -0
- package/dist/download-details-OM0FJUhZ.mjs.map +1 -0
- package/dist/index.d.mts +1130 -0
- package/dist/index.mjs +1077 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils-DBnUQnZ-.mjs +26 -0
- package/dist/utils-DBnUQnZ-.mjs.map +1 -0
- package/package.json +5 -5
- package/dist/index.d.ts +0 -1016
- package/dist/index.js +0 -3130
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { t as Request } from "./Request-C0UUuQIX.mjs";
|
|
2
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
3
|
+
import { a as StringTag, l as UIntTag, s as UByteTag } from "./Tag-CZF6BRMY.mjs";
|
|
4
|
+
//#region src/request/CreateCategoryRequest.ts
|
|
5
|
+
/**
|
|
6
|
+
* Create Category Request - Create a new category
|
|
7
|
+
*/
|
|
8
|
+
var CreateCategoryRequest = class extends Request {
|
|
9
|
+
constructor(category) {
|
|
10
|
+
super(65);
|
|
11
|
+
const subtags = [
|
|
12
|
+
new StringTag(4354, category.name),
|
|
13
|
+
new StringTag(4355, category.path),
|
|
14
|
+
new StringTag(4356, category.comment),
|
|
15
|
+
new UIntTag(4357, category.color),
|
|
16
|
+
new UByteTag(4358, category.priority)
|
|
17
|
+
];
|
|
18
|
+
this.addTag(new UIntTag(4353, 0, subtags));
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { CreateCategoryRequest };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=CreateCategoryRequest-Br6yfDhZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as Request } from "./Request-C0UUuQIX.mjs";
|
|
2
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
3
|
+
import { l as UIntTag } from "./Tag-CZF6BRMY.mjs";
|
|
4
|
+
//#region src/request/DeleteCategoryRequest.ts
|
|
5
|
+
/**
|
|
6
|
+
* Delete Category Request - Delete an existing category
|
|
7
|
+
*/
|
|
8
|
+
var DeleteCategoryRequest = class extends Request {
|
|
9
|
+
constructor(id) {
|
|
10
|
+
super(67);
|
|
11
|
+
this.addTag(new UIntTag(4353, id));
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { DeleteCategoryRequest };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=DeleteCategoryRequest-C2-p6sx0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { t as Request } from "./Request-C0UUuQIX.mjs";
|
|
2
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
3
|
+
import { r as Hash16Tag } from "./Tag-CZF6BRMY.mjs";
|
|
4
|
+
import "./index.mjs";
|
|
5
|
+
//#region src/request/DownloadCommandRequest.ts
|
|
6
|
+
/**
|
|
7
|
+
* Download Command Request - Send commands to files in download queue
|
|
8
|
+
* Commands: PAUSE, RESUME, STOP, DELETE, SWAP_A4AF_THIS, etc.
|
|
9
|
+
*/
|
|
10
|
+
var DownloadCommandRequest = class DownloadCommandRequest extends Request {
|
|
11
|
+
constructor(hash, command) {
|
|
12
|
+
super(DownloadCommandRequest.commandToOpCode(command));
|
|
13
|
+
this.addTag(new Hash16Tag(768, hash));
|
|
14
|
+
}
|
|
15
|
+
static commandToOpCode(command) {
|
|
16
|
+
switch (command) {
|
|
17
|
+
case 22: return 22;
|
|
18
|
+
case 23: return 23;
|
|
19
|
+
case 24: return 24;
|
|
20
|
+
case 25: return 25;
|
|
21
|
+
case 26: return 26;
|
|
22
|
+
case 27: return 27;
|
|
23
|
+
case 29: return 29;
|
|
24
|
+
default: throw new Error(`Unknown download command: ${command}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { DownloadCommandRequest };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=DownloadCommandRequest-CaULjfNi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { t as Request } from "./Request-C0UUuQIX.mjs";
|
|
2
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
3
|
+
import { r as Hash16Tag } from "./Tag-CZF6BRMY.mjs";
|
|
4
|
+
//#region src/request/DownloadFileRequest.ts
|
|
5
|
+
/**
|
|
6
|
+
* Download File Request - Download a file from search results
|
|
7
|
+
*
|
|
8
|
+
* This request downloads a file that was found in search results.
|
|
9
|
+
* It uses the file hash to identify the file to download.
|
|
10
|
+
*/
|
|
11
|
+
var DownloadFileRequest = class extends Request {
|
|
12
|
+
constructor(hash) {
|
|
13
|
+
super(42);
|
|
14
|
+
this.addTag(new Hash16Tag(768, hash));
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DownloadFileRequest };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=DownloadFileRequest-CcNqsBo7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as Request } from "./Request-C0UUuQIX.mjs";
|
|
2
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
3
|
+
import { s as UByteTag } from "./Tag-CZF6BRMY.mjs";
|
|
4
|
+
//#region src/request/DownloadQueueRequest.ts
|
|
5
|
+
/**
|
|
6
|
+
* Download Queue Request - Get download queue
|
|
7
|
+
*/
|
|
8
|
+
var DownloadQueueRequest = class extends Request {
|
|
9
|
+
constructor(detailLevel = 2) {
|
|
10
|
+
super(13);
|
|
11
|
+
this.addTag(new UByteTag(4, detailLevel));
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { DownloadQueueRequest };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=DownloadQueueRequest-bd7lFiMj.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
2
|
+
import { f as findNumericTag, p as findTag } from "./Tag-CZF6BRMY.mjs";
|
|
3
|
+
import { n as PARTSIZE, t as ChunkStatus } from "./download-details-OM0FJUhZ.mjs";
|
|
4
|
+
import { i as toOptionalNumber, n as toOptionalBool, t as formatIp } from "./utils-DBnUQnZ-.mjs";
|
|
5
|
+
//#region src/response/DownloadDetailsResponse.ts
|
|
6
|
+
function rleDecode(buf) {
|
|
7
|
+
const output = [];
|
|
8
|
+
let index = 0;
|
|
9
|
+
while (index < buf.length) if (index < buf.length - 2 && buf[index + 1] === buf[index]) {
|
|
10
|
+
const value = buf[index];
|
|
11
|
+
const count = buf[index + 2];
|
|
12
|
+
for (let i = 0; i < count; i++) output.push(value);
|
|
13
|
+
index += 3;
|
|
14
|
+
} else {
|
|
15
|
+
output.push(buf[index]);
|
|
16
|
+
index += 1;
|
|
17
|
+
}
|
|
18
|
+
return Buffer.from(output);
|
|
19
|
+
}
|
|
20
|
+
function decodePartStatus(buf) {
|
|
21
|
+
const decoded = rleDecode(buf);
|
|
22
|
+
const result = new Array(decoded.length);
|
|
23
|
+
for (let i = 0; i < decoded.length; i++) result[i] = decoded[i];
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function decodeUint64Array(buf) {
|
|
27
|
+
const decoded = rleDecode(buf);
|
|
28
|
+
if (decoded.length === 0 || decoded.length % 8 !== 0) return [];
|
|
29
|
+
const valueCount = decoded.length / 8;
|
|
30
|
+
const values = new Array(valueCount);
|
|
31
|
+
for (let i = 0; i < valueCount; i++) {
|
|
32
|
+
let value = 0;
|
|
33
|
+
for (let byte = 7; byte >= 0; byte--) value = value * 256 + decoded[i + byte * valueCount];
|
|
34
|
+
values[i] = value;
|
|
35
|
+
}
|
|
36
|
+
return values;
|
|
37
|
+
}
|
|
38
|
+
function stringValue(tag) {
|
|
39
|
+
if (!tag) return "";
|
|
40
|
+
const value = tag.getValue();
|
|
41
|
+
return typeof value === "string" ? value : "";
|
|
42
|
+
}
|
|
43
|
+
function bufferValue(tag) {
|
|
44
|
+
if (!tag) return;
|
|
45
|
+
const value = tag.getValue();
|
|
46
|
+
return Buffer.isBuffer(value) ? value : void 0;
|
|
47
|
+
}
|
|
48
|
+
function nestedTag(parent, tagName) {
|
|
49
|
+
return parent.nestedTags ? findTag(parent.nestedTags, tagName) : void 0;
|
|
50
|
+
}
|
|
51
|
+
function nestedNumeric(parent, tagName) {
|
|
52
|
+
if (!parent.nestedTags) return 0;
|
|
53
|
+
const numeric = findNumericTag(parent.nestedTags, tagName);
|
|
54
|
+
if (numeric) return Number(numeric.getValue());
|
|
55
|
+
const tag = findTag(parent.nestedTags, tagName);
|
|
56
|
+
if (!tag) return 0;
|
|
57
|
+
const value = tag.getValue();
|
|
58
|
+
if (typeof value === "number") return value;
|
|
59
|
+
if (typeof value === "bigint") return Number(value);
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
function nestedString(parent, tagName) {
|
|
63
|
+
if (!parent.nestedTags) return "";
|
|
64
|
+
return stringValue(findTag(parent.nestedTags, tagName));
|
|
65
|
+
}
|
|
66
|
+
function nestedIp(parent, tagName) {
|
|
67
|
+
const ipAsNumber = nestedNumeric(parent, tagName);
|
|
68
|
+
if (ipAsNumber === 0) return "";
|
|
69
|
+
return formatIp(ipAsNumber);
|
|
70
|
+
}
|
|
71
|
+
var DownloadChunkDetailsResponseParser = class {
|
|
72
|
+
static fromPacket(packet) {
|
|
73
|
+
const result = {};
|
|
74
|
+
const partfileTags = packet.tags.filter((tag) => tag.name === 768);
|
|
75
|
+
for (const fileTag of partfileTags) {
|
|
76
|
+
const hash = bufferValue(nestedTag(fileTag, 798));
|
|
77
|
+
if (!hash) continue;
|
|
78
|
+
const fileHash = hash.toString("hex");
|
|
79
|
+
const sizeFull = nestedNumeric(fileTag, 771);
|
|
80
|
+
const partCount = sizeFull > 0 ? Math.ceil(sizeFull / PARTSIZE) : 0;
|
|
81
|
+
const partStatusBuf = bufferValue(nestedTag(fileTag, 786));
|
|
82
|
+
const gapStatusBuf = bufferValue(nestedTag(fileTag, 787));
|
|
83
|
+
const reqStatusBuf = bufferValue(nestedTag(fileTag, 788));
|
|
84
|
+
const availability = new Array(partCount).fill(0);
|
|
85
|
+
if (partStatusBuf && partStatusBuf.length > 0) {
|
|
86
|
+
const decodedAvailability = decodePartStatus(partStatusBuf);
|
|
87
|
+
for (let i = 0; i < Math.min(decodedAvailability.length, partCount); i++) availability[i] = decodedAvailability[i];
|
|
88
|
+
}
|
|
89
|
+
const chunks = new Array(partCount).fill(ChunkStatus.COMPLETE);
|
|
90
|
+
if (partCount > 0 && gapStatusBuf && gapStatusBuf.length > 0) {
|
|
91
|
+
const gapValues = decodeUint64Array(gapStatusBuf);
|
|
92
|
+
for (let i = 0; i + 1 < gapValues.length; i += 2) {
|
|
93
|
+
const gapStart = gapValues[i];
|
|
94
|
+
const gapEnd = gapValues[i + 1];
|
|
95
|
+
if (gapStart > sizeFull || gapEnd > sizeFull || gapStart >= gapEnd) continue;
|
|
96
|
+
const startPart = Math.floor(gapStart / PARTSIZE);
|
|
97
|
+
const endPart = Math.min(Math.floor(gapEnd / PARTSIZE) + 1, partCount);
|
|
98
|
+
for (let part = startPart; part < endPart; part++) {
|
|
99
|
+
const chunkStart = part * PARTSIZE;
|
|
100
|
+
if (gapStart < Math.min((part + 1) * 9728e3, sizeFull) && gapEnd > chunkStart) chunks[part] = availability[part] > 0 ? ChunkStatus.AVAILABLE : ChunkStatus.UNAVAILABLE;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (partCount > 0 && reqStatusBuf && reqStatusBuf.length > 0) {
|
|
105
|
+
const reqValues = decodeUint64Array(reqStatusBuf);
|
|
106
|
+
for (let i = 0; i + 1 < reqValues.length; i += 2) {
|
|
107
|
+
const reqStart = reqValues[i];
|
|
108
|
+
const reqEnd = reqValues[i + 1];
|
|
109
|
+
if (reqStart > sizeFull || reqEnd > sizeFull || reqStart >= reqEnd) continue;
|
|
110
|
+
const startPart = Math.floor(reqStart / PARTSIZE);
|
|
111
|
+
const endPart = Math.min(Math.floor(reqEnd / PARTSIZE) + 1, partCount);
|
|
112
|
+
for (let part = startPart; part < endPart; part++) {
|
|
113
|
+
if (chunks[part] === ChunkStatus.COMPLETE) continue;
|
|
114
|
+
const chunkStart = part * PARTSIZE;
|
|
115
|
+
if (reqStart < Math.min((part + 1) * 9728e3, sizeFull) && reqEnd > chunkStart) chunks[part] = ChunkStatus.DOWNLOADING;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
result[fileHash] = {
|
|
120
|
+
chunks,
|
|
121
|
+
availability,
|
|
122
|
+
partCount,
|
|
123
|
+
sizeFull
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
var DownloadSourceDetailsResponseParser = class {
|
|
130
|
+
static fromPacket(packet) {
|
|
131
|
+
const result = {};
|
|
132
|
+
const partfileTags = packet.tags.filter((tag) => tag.name === 768);
|
|
133
|
+
for (const fileTag of partfileTags) {
|
|
134
|
+
const hash = bufferValue(nestedTag(fileTag, 798));
|
|
135
|
+
if (!hash) continue;
|
|
136
|
+
const fileHash = hash.toString("hex");
|
|
137
|
+
const sourceNames = [];
|
|
138
|
+
const sources = [];
|
|
139
|
+
for (const nested of fileTag.nestedTags || []) {
|
|
140
|
+
if (nested.name !== 1536) continue;
|
|
141
|
+
sources.push({
|
|
142
|
+
clientName: nestedString(nested, 256) || "Unknown",
|
|
143
|
+
userHash: bufferValue(nestedTag(nested, 1539))?.toString("hex") || "",
|
|
144
|
+
software: nestedString(nested, 1537),
|
|
145
|
+
softwareVersion: nestedString(nested, 1557),
|
|
146
|
+
score: nestedNumeric(nested, 1538),
|
|
147
|
+
uploadSpeed: nestedNumeric(nested, 1549),
|
|
148
|
+
downloadSpeed: nestedNumeric(nested, 1550),
|
|
149
|
+
uploadState: nestedNumeric(nested, 1564),
|
|
150
|
+
downloadState: nestedNumeric(nested, 1548),
|
|
151
|
+
ip: nestedIp(nested, 1552),
|
|
152
|
+
port: nestedNumeric(nested, 1553),
|
|
153
|
+
remoteQueueRank: nestedNumeric(nested, 1562),
|
|
154
|
+
waitingPosition: nestedNumeric(nested, 1558),
|
|
155
|
+
identState: nestedNumeric(nested, 1559),
|
|
156
|
+
obfuscationStatus: nestedNumeric(nested, 1560),
|
|
157
|
+
remoteFilename: nestedString(nested, 1575),
|
|
158
|
+
availableParts: nestedNumeric(nested, 1578),
|
|
159
|
+
sourceFrom: nestedNumeric(nested, 1551)
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
const namesTag = nestedTag(fileTag, 789);
|
|
163
|
+
const countsTag = nestedTag(fileTag, 796);
|
|
164
|
+
const nameTags = namesTag?.nestedTags || [];
|
|
165
|
+
const countTags = countsTag?.nestedTags || [];
|
|
166
|
+
for (let i = 0; i < nameTags.length; i++) {
|
|
167
|
+
const name = stringValue(nameTags[i]);
|
|
168
|
+
if (!name) continue;
|
|
169
|
+
const rawCount = countTags[i]?.getValue();
|
|
170
|
+
const count = typeof rawCount === "number" ? rawCount : typeof rawCount === "bigint" ? Number(rawCount) : 1;
|
|
171
|
+
sourceNames.push({
|
|
172
|
+
name,
|
|
173
|
+
count
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
result[fileHash] = {
|
|
177
|
+
sources,
|
|
178
|
+
sourceNames
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
//#endregion
|
|
185
|
+
//#region src/response/DownloadQueueResponse.ts
|
|
186
|
+
var DownloadQueueResponseParser = class {
|
|
187
|
+
static fromPacket(packet) {
|
|
188
|
+
const files = [];
|
|
189
|
+
const chunkDetailsByHash = DownloadChunkDetailsResponseParser.fromPacket(packet);
|
|
190
|
+
const sourceDetailsByHash = DownloadSourceDetailsResponseParser.fromPacket(packet);
|
|
191
|
+
const partfileTags = packet.tags.filter((tag) => tag.name === 768);
|
|
192
|
+
for (const fileTag of partfileTags) {
|
|
193
|
+
const tags = fileTag.nestedTags || [];
|
|
194
|
+
const hashTag = findTag(tags, 798);
|
|
195
|
+
const fileNameTag = findTag(tags, 769);
|
|
196
|
+
let a4afSources = void 0;
|
|
197
|
+
const a4afSourcesTag = findTag(tags, 802);
|
|
198
|
+
if (a4afSourcesTag) {
|
|
199
|
+
a4afSources = [];
|
|
200
|
+
a4afSourcesTag.nestedTags = a4afSourcesTag.nestedTags || [];
|
|
201
|
+
for (const sourceTag of a4afSourcesTag.nestedTags) if (sourceTag.name === 15) a4afSources.push(sourceTag.getValue());
|
|
202
|
+
}
|
|
203
|
+
const file = {
|
|
204
|
+
fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
|
|
205
|
+
fileName: fileNameTag ? fileNameTag.getValue() : void 0,
|
|
206
|
+
filePath: findTag(tags, 1032)?.getValue(),
|
|
207
|
+
sizeFull: toOptionalNumber(findNumericTag(tags, 771)?.getLong()),
|
|
208
|
+
fileEd2kLink: findTag(tags, 782)?.getValue(),
|
|
209
|
+
partMetID: findNumericTag(tags, 770)?.getShort(),
|
|
210
|
+
sizeXfer: toOptionalNumber(findNumericTag(tags, 772)?.getLong()),
|
|
211
|
+
sizeDone: toOptionalNumber(findNumericTag(tags, 774)?.getLong()),
|
|
212
|
+
fileStatus: findNumericTag(tags, 776)?.getInt(),
|
|
213
|
+
stopped: toOptionalBool(findNumericTag(tags, 791)?.getInt()),
|
|
214
|
+
sourceCount: findNumericTag(tags, 778)?.getShort(),
|
|
215
|
+
sourceNotCurrCount: findNumericTag(tags, 780)?.getShort(),
|
|
216
|
+
sourceXferCount: findNumericTag(tags, 781)?.getShort(),
|
|
217
|
+
sourceCountA4AF: findNumericTag(tags, 779)?.getShort(),
|
|
218
|
+
speed: toOptionalNumber(findNumericTag(tags, 775)?.getLong()),
|
|
219
|
+
downPrio: findNumericTag(tags, 777)?.getInt(),
|
|
220
|
+
fileCat: toOptionalNumber(findNumericTag(tags, 783)?.getLong()),
|
|
221
|
+
lastSeenComplete: toOptionalNumber(findNumericTag(tags, 785)?.getLong()),
|
|
222
|
+
lastDateChanged: toOptionalNumber(findNumericTag(tags, 784)?.getLong()),
|
|
223
|
+
downloadActiveTime: findNumericTag(tags, 792)?.getInt(),
|
|
224
|
+
availablePartCount: findNumericTag(tags, 797)?.getShort(),
|
|
225
|
+
a4AFAuto: toOptionalBool(findNumericTag(tags, 801)?.getInt()),
|
|
226
|
+
hashingProgress: toOptionalBool(findNumericTag(tags, 800)?.getInt()),
|
|
227
|
+
getLostDueToCorruption: toOptionalNumber(findNumericTag(tags, 793)?.getLong()),
|
|
228
|
+
getGainDueToCompression: toOptionalNumber(findNumericTag(tags, 794)?.getLong()),
|
|
229
|
+
totalPacketsSavedDueToICH: findNumericTag(tags, 795)?.getInt(),
|
|
230
|
+
upPrio: findNumericTag(tags, 1035)?.getInt(),
|
|
231
|
+
getRequests: findNumericTag(tags, 1027)?.getShort(),
|
|
232
|
+
getAllRequests: findNumericTag(tags, 1028)?.getInt(),
|
|
233
|
+
getAccepts: findNumericTag(tags, 1029)?.getShort(),
|
|
234
|
+
getAllAccepts: findNumericTag(tags, 1030)?.getInt(),
|
|
235
|
+
getXferred: toOptionalNumber(findNumericTag(tags, 1025)?.getLong()),
|
|
236
|
+
getAllXferred: toOptionalNumber(findNumericTag(tags, 1026)?.getLong()),
|
|
237
|
+
getCompleteSourcesLow: findNumericTag(tags, 1033)?.getShort(),
|
|
238
|
+
getCompleteSourcesHigh: findNumericTag(tags, 1034)?.getShort(),
|
|
239
|
+
getCompleteSources: findNumericTag(tags, 1037)?.getShort(),
|
|
240
|
+
getOnQueue: findNumericTag(tags, 1036)?.getShort(),
|
|
241
|
+
getComment: findTag(tags, 1038)?.getValue(),
|
|
242
|
+
getRating: findNumericTag(tags, 1039)?.getInt(),
|
|
243
|
+
a4afSources
|
|
244
|
+
};
|
|
245
|
+
if (file.fileHashHexString) {
|
|
246
|
+
file.chunkInfo = chunkDetailsByHash[file.fileHashHexString];
|
|
247
|
+
const sourceDetails = sourceDetailsByHash[file.fileHashHexString];
|
|
248
|
+
if (sourceDetails) {
|
|
249
|
+
file.sources = sourceDetails.sources;
|
|
250
|
+
file.sourceNames = sourceDetails.sourceNames;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
files.push(file);
|
|
254
|
+
}
|
|
255
|
+
return { files };
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
//#endregion
|
|
259
|
+
export { DownloadQueueResponseParser };
|
|
260
|
+
|
|
261
|
+
//# sourceMappingURL=DownloadQueueResponse-DyP1rLTV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { t as Request } from "./Request-C0UUuQIX.mjs";
|
|
2
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
3
|
+
import { l as UIntTag, s as UByteTag } from "./Tag-CZF6BRMY.mjs";
|
|
4
|
+
//#region src/request/GetPreferencesRequest.ts
|
|
5
|
+
/**
|
|
6
|
+
* Preferences Request - Get preferences
|
|
7
|
+
*/
|
|
8
|
+
var GetPreferencesRequest = class extends Request {
|
|
9
|
+
constructor(pref) {
|
|
10
|
+
super(63);
|
|
11
|
+
this.addTag(new UByteTag(4, 2));
|
|
12
|
+
this.addTag(new UIntTag(4096, pref));
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { GetPreferencesRequest };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=GetPreferencesRequest-C94Su9IH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import "./Codes-CjiW7Pdl.mjs";
|
|
2
|
+
import { f as findNumericTag, p as findTag } from "./Tag-CZF6BRMY.mjs";
|
|
3
|
+
//#region src/response/PreferencesDetailsResponse.ts
|
|
4
|
+
var PreferencesDetailsResponse = class {
|
|
5
|
+
preferences;
|
|
6
|
+
constructor(preferences) {
|
|
7
|
+
this.preferences = preferences;
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function getNestedTag(parent, name) {
|
|
11
|
+
if (!parent?.nestedTags) return;
|
|
12
|
+
return findTag(parent.nestedTags, name);
|
|
13
|
+
}
|
|
14
|
+
function getNestedNumber(parent, name, fallback) {
|
|
15
|
+
if (!parent?.nestedTags) return fallback;
|
|
16
|
+
const numeric = findNumericTag(parent.nestedTags, name);
|
|
17
|
+
if (numeric) return Number(numeric.getValue());
|
|
18
|
+
const tag = findTag(parent.nestedTags, name);
|
|
19
|
+
if (!tag) return fallback;
|
|
20
|
+
const value = tag.getValue();
|
|
21
|
+
if (typeof value === "number") return value;
|
|
22
|
+
if (typeof value === "bigint") return Number(value);
|
|
23
|
+
return fallback;
|
|
24
|
+
}
|
|
25
|
+
function getNestedBool(parent, name, fallback) {
|
|
26
|
+
const tag = getNestedTag(parent, name);
|
|
27
|
+
if (!tag) return fallback;
|
|
28
|
+
const value = tag.getValue();
|
|
29
|
+
if (typeof value === "boolean") return value;
|
|
30
|
+
if (typeof value === "number") return value !== 0;
|
|
31
|
+
if (typeof value === "bigint") return value !== 0n;
|
|
32
|
+
if (Buffer.isBuffer(value)) return value.length === 0 || value.some((byte) => byte !== 0);
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function getNestedString(parent, name, fallback) {
|
|
36
|
+
const tag = getNestedTag(parent, name);
|
|
37
|
+
if (!tag) return fallback;
|
|
38
|
+
const value = tag.getValue();
|
|
39
|
+
return typeof value === "string" ? value : fallback;
|
|
40
|
+
}
|
|
41
|
+
var PreferencesDetailsResponseParser = class {
|
|
42
|
+
static fromPacket(packet) {
|
|
43
|
+
const generalTag = findTag(packet.tags, 4608);
|
|
44
|
+
const connectionTag = findTag(packet.tags, 4864);
|
|
45
|
+
const serversTag = findTag(packet.tags, 5888);
|
|
46
|
+
const securityTag = findTag(packet.tags, 7168);
|
|
47
|
+
return new PreferencesDetailsResponse({
|
|
48
|
+
general: {
|
|
49
|
+
userNick: getNestedString(generalTag, 4609, ""),
|
|
50
|
+
checkNewVersion: getNestedBool(generalTag, 4612, false)
|
|
51
|
+
},
|
|
52
|
+
connection: {
|
|
53
|
+
uploadCapacity: getNestedNumber(connectionTag, 4866, 0),
|
|
54
|
+
downloadCapacity: getNestedNumber(connectionTag, 4865, 0),
|
|
55
|
+
maxUploadSpeed: getNestedNumber(connectionTag, 4868, 0),
|
|
56
|
+
maxDownloadSpeed: getNestedNumber(connectionTag, 4867, 0),
|
|
57
|
+
slotAllocation: getNestedNumber(connectionTag, 4869, 2),
|
|
58
|
+
tcpPort: getNestedNumber(connectionTag, 4870, 4662),
|
|
59
|
+
udpPort: getNestedNumber(connectionTag, 4871, 4672),
|
|
60
|
+
maxFileSources: getNestedNumber(connectionTag, 4873, 300),
|
|
61
|
+
maxConnections: getNestedNumber(connectionTag, 4874, 500),
|
|
62
|
+
autoconnect: getNestedBool(connectionTag, 4875, false),
|
|
63
|
+
reconnect: getNestedBool(connectionTag, 4876, false),
|
|
64
|
+
networkED2K: getNestedBool(connectionTag, 4877, true),
|
|
65
|
+
networkKademlia: getNestedBool(connectionTag, 4878, false)
|
|
66
|
+
},
|
|
67
|
+
servers: {
|
|
68
|
+
removeDead: getNestedBool(serversTag, 5889, true),
|
|
69
|
+
deadRetries: getNestedNumber(serversTag, 5890, 3),
|
|
70
|
+
useScoreSystem: getNestedBool(serversTag, 5895, true),
|
|
71
|
+
smartIdCheck: getNestedBool(serversTag, 5896, true),
|
|
72
|
+
updateUrl: getNestedString(serversTag, 5900, "")
|
|
73
|
+
},
|
|
74
|
+
security: {
|
|
75
|
+
canSeeShares: getNestedNumber(securityTag, 7169, 2),
|
|
76
|
+
ipFilterClients: getNestedBool(securityTag, 7170, true),
|
|
77
|
+
ipFilterServers: getNestedBool(securityTag, 7171, true),
|
|
78
|
+
ipFilterAutoUpdate: getNestedBool(securityTag, 7172, false),
|
|
79
|
+
ipFilterUpdateUrl: getNestedString(securityTag, 7173, ""),
|
|
80
|
+
ipFilterLevel: getNestedNumber(securityTag, 7174, 127),
|
|
81
|
+
filterLan: getNestedBool(securityTag, 7175, true),
|
|
82
|
+
useSecIdent: getNestedBool(securityTag, 7176, true),
|
|
83
|
+
obfuscationSupported: getNestedBool(securityTag, 7177, true),
|
|
84
|
+
obfuscationRequested: getNestedBool(securityTag, 7178, false),
|
|
85
|
+
obfuscationRequired: getNestedBool(securityTag, 7179, false)
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
static preferenceMaskForAllSections() {
|
|
90
|
+
return 2118;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
//#endregion
|
|
94
|
+
export { PreferencesDetailsResponseParser };
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=PreferencesDetailsResponse-BjMxbvVY.mjs.map
|