steamutils 1.4.37 → 1.4.39
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/.idea/codeStyles/Project.xml +1 -0
- package/.idea/deployment.xml +14 -0
- package/.prettierrc.json +3 -3
- package/SteamClient.js +35 -22
- package/_steamproto.js +29 -29
- package/axios.js +84 -84
- package/bufferHelpers.js +115 -115
- package/cheerio.js +103 -103
- package/const.js +451 -451
- package/create_proto.js +47 -47
- package/create_remote_file.js +66 -66
- package/helpers/protos.js +52 -52
- package/package.json +1 -1
- package/protos/csgo/base_gcmessages.proto +553 -553
- package/protos/csgo/base_gcmessages_csgo.proto +547 -547
- package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
- package/protos/csgo/clientmessages.proto +48 -48
- package/protos/csgo/connectionless_netmessages.proto +17 -17
- package/protos/csgo/cs_gameevents.proto +35 -35
- package/protos/csgo/cs_usercmd.proto +34 -34
- package/protos/csgo/cstrike15_gcmessages.proto +1431 -1431
- package/protos/csgo/cstrike15_usermessages.proto +592 -592
- package/protos/csgo/demo.proto +165 -165
- package/protos/csgo/econ_gcmessages.proto +219 -219
- package/protos/csgo/enums_clientserver.proto +1529 -1529
- package/protos/csgo/fatdemo.proto +125 -125
- package/protos/csgo/gameevents.proto +120 -120
- package/protos/csgo/gcsdk_gcmessages.proto +323 -323
- package/protos/csgo/gcsystemmsgs.proto +243 -243
- package/protos/csgo/netmessages.proto +618 -618
- package/protos/csgo/networkbasetypes.proto +246 -246
- package/protos/csgo/networksystem_protomessages.proto +17 -17
- package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
- package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
- package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
- package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
- package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
- package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
- package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
- package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
- package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
- package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/csgo/te.proto +259 -259
- package/protos/csgo/uifontfile_format.proto +13 -13
- package/protos/csgo/usercmd.proto +39 -39
- package/protos/csgo/usermessages.proto +752 -752
- package/protos/google/protobuf/descriptor.proto +281 -281
- package/protos/steam/clientmetrics.proto +45 -45
- package/protos/steam/content_manifest.proto +62 -62
- package/protos/steam/contenthubs.proto +41 -41
- package/protos/steam/encrypted_app_ticket.proto +10 -10
- package/protos/steam/enums.proto +501 -501
- package/protos/steam/enums_clientserver.proto +1508 -1508
- package/protos/steam/enums_productinfo.proto +14 -14
- package/protos/steam/htmlmessages.proto +1039 -1039
- package/protos/steam/offline_ticket.proto +8 -8
- package/protos/steam/steamdatagram_messages_auth.proto +65 -65
- package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
- package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
- package/protos/steam/steammessages_appoverview.proto +204 -204
- package/protos/steam/steammessages_auth.steamclient.proto +375 -375
- package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
- package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
- package/protos/steam/steammessages_client_objects.proto +649 -649
- package/protos/steam/steammessages_clientlanp2p.proto +43 -43
- package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
- package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
- package/protos/steam/steammessages_clientserver.proto +392 -392
- package/protos/steam/steammessages_clientserver_2.proto +771 -771
- package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
- package/protos/steam/steammessages_clientserver_friends.proto +260 -260
- package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
- package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
- package/protos/steam/steammessages_clientserver_login.proto +167 -167
- package/protos/steam/steammessages_clientserver_mms.proto +233 -233
- package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
- package/protos/steam/steammessages_clientserver_uds.proto +125 -125
- package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
- package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
- package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
- package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
- package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
- package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
- package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
- package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
- package/protos/steam/steammessages_econ.steamclient.proto +137 -137
- package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
- package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
- package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
- package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
- package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
- package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
- package/protos/steam/steammessages_hiddevices.proto +157 -157
- package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
- package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
- package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
- package/protos/steam/steammessages_market.steamclient.proto +22 -22
- package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
- package/protos/steam/steammessages_offline.steamclient.proto +33 -33
- package/protos/steam/steammessages_parental.steamclient.proto +262 -262
- package/protos/steam/steammessages_parties.steamclient.proto +75 -75
- package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
- package/protos/steam/steammessages_player.steamclient.proto +915 -915
- package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
- package/protos/steam/steammessages_qms.steamclient.proto +111 -111
- package/protos/steam/steammessages_remoteclient.proto +100 -100
- package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
- package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
- package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
- package/protos/steam/steammessages_remoteplay.proto +975 -975
- package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
- package/protos/steam/steammessages_shader.steamclient.proto +89 -89
- package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
- package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
- package/protos/steam/steammessages_siteserverui.proto +130 -130
- package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
- package/protos/steam/steammessages_store.steamclient.proto +404 -404
- package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
- package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
- package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
- package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
- package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
- package/protos/steam/steammessages_vac.steamclient.proto +37 -37
- package/protos/steam/steammessages_video.steamclient.proto +68 -68
- package/protos/steam/steammessages_virtualcontroller.proto +138 -138
- package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
- package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
- package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/steam/webuimessages_achievements.proto +29 -29
- package/protos/steam/webuimessages_gamenotes.proto +21 -21
- package/protos/steam/webuimessages_gamescope.proto +57 -57
- package/protos/steam/webuimessages_steamengine.proto +41 -41
- package/protos/steam/webuimessages_steamos.proto +114 -114
- package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
- package/protos/steam/webuimessages_systemmanager.proto +17 -17
- package/protos/steam/webuimessages_transport.proto +22 -22
- package/protos/steam/webuimessages_transportvalidation.proto +111 -111
- package/protos/webui/common.proto +4024 -4024
- package/protos/webui/service_accountcart.proto +153 -153
- package/protos/webui/service_accountlinking.proto +27 -27
- package/protos/webui/service_accountprivacy.proto +42 -42
- package/protos/webui/service_accountprivateapps.proto +34 -34
- package/protos/webui/service_auction.proto +97 -97
- package/protos/webui/service_authentication.proto +222 -222
- package/protos/webui/service_authenticationsupport.proto +74 -74
- package/protos/webui/service_broadcast.proto +562 -562
- package/protos/webui/service_chat.proto +11 -11
- package/protos/webui/service_chatroom.proto +810 -810
- package/protos/webui/service_chatusability.proto +107 -107
- package/protos/webui/service_checkout.proto +84 -84
- package/protos/webui/service_clan.proto +41 -41
- package/protos/webui/service_clanchatrooms.proto +25 -25
- package/protos/webui/service_clanfaqs.proto +202 -202
- package/protos/webui/service_clientcomm.proto +151 -151
- package/protos/webui/service_clientmetrics.proto +22 -22
- package/protos/webui/service_cloud.proto +222 -222
- package/protos/webui/service_cloudconfigstore.proto +51 -51
- package/protos/webui/service_cloudgaming.proto +30 -30
- package/protos/webui/service_community.proto +365 -365
- package/protos/webui/service_dailydeal.proto +89 -89
- package/protos/webui/service_econ.proto +134 -134
- package/protos/webui/service_embedded.proto +24 -24
- package/protos/webui/service_experimentservice.proto +6 -6
- package/protos/webui/service_familygroups.proto +355 -355
- package/protos/webui/service_fovasvideo.proto +15 -15
- package/protos/webui/service_friendmessages.proto +133 -133
- package/protos/webui/service_friendslist.proto +70 -70
- package/protos/webui/service_gamenotes.proto +15 -15
- package/protos/webui/service_gamerecording.proto +265 -265
- package/protos/webui/service_gamerecordingclip.proto +85 -85
- package/protos/webui/service_gamerecordingdebug.proto +52 -52
- package/protos/webui/service_helprequestlogs.proto +16 -16
- package/protos/webui/service_loyaltyrewards.proto +252 -252
- package/protos/webui/service_marketingmessages.proto +215 -215
- package/protos/webui/service_mobileapp.proto +18 -18
- package/protos/webui/service_mobileauth.proto +24 -24
- package/protos/webui/service_mobiledevice.proto +26 -26
- package/protos/webui/service_mobileperaccount.proto +31 -31
- package/protos/webui/service_news.proto +110 -110
- package/protos/webui/service_parental.proto +258 -258
- package/protos/webui/service_partnermembershipinvite.proto +34 -34
- package/protos/webui/service_partnerstorebrowse.proto +28 -28
- package/protos/webui/service_phone.proto +51 -51
- package/protos/webui/service_physicalgoods.proto +15 -15
- package/protos/webui/service_player.proto +918 -918
- package/protos/webui/service_promotioneventinvites.proto +109 -109
- package/protos/webui/service_promotionplanning.proto +186 -186
- package/protos/webui/service_promotionstats.proto +23 -23
- package/protos/webui/service_publishedfile.proto +714 -714
- package/protos/webui/service_publishing.proto +200 -200
- package/protos/webui/service_quest.proto +127 -127
- package/protos/webui/service_salefeature.proto +373 -373
- package/protos/webui/service_saleitemrewards.proto +54 -54
- package/protos/webui/service_shoppingcart.proto +152 -152
- package/protos/webui/service_steamawards.proto +76 -76
- package/protos/webui/service_steamcharts.proto +75 -75
- package/protos/webui/service_steamengine.proto +36 -36
- package/protos/webui/service_steamlearn.proto +876 -876
- package/protos/webui/service_steamnotification.proto +73 -73
- package/protos/webui/service_steamtv.proto +495 -495
- package/protos/webui/service_steamvrvoicechat.proto +67 -67
- package/protos/webui/service_steamvrwebrtc.proto +48 -48
- package/protos/webui/service_storagedevicemanager.proto +104 -104
- package/protos/webui/service_store.proto +359 -359
- package/protos/webui/service_storeappsimilarity.proto +76 -76
- package/protos/webui/service_storebrowse.proto +103 -103
- package/protos/webui/service_storemarketing.proto +44 -44
- package/protos/webui/service_storequery.proto +103 -103
- package/protos/webui/service_storesales.proto +87 -87
- package/protos/webui/service_storetopsellers.proto +44 -44
- package/protos/webui/service_systemmanager.proto +11 -11
- package/protos/webui/service_test_transporterror.proto +6 -6
- package/protos/webui/service_transportauth.proto +17 -17
- package/protos/webui/service_transportvalidation.proto +69 -69
- package/protos/webui/service_twofactor.proto +170 -170
- package/protos/webui/service_useraccount.proto +142 -142
- package/protos/webui/service_usergameactivity.proto +34 -34
- package/protos/webui/service_usergamenotes.proto +70 -70
- package/protos/webui/service_usernews.proto +68 -68
- package/protos/webui/service_userreviews.proto +97 -97
- package/protos/webui/service_video.proto +50 -50
- package/protos/webui/service_videoclip.proto +62 -62
- package/protos/webui/service_voicechat.proto +139 -139
- package/protos/webui/service_webrtc.proto +52 -52
- package/remote.js +6784 -6784
- package/steamproto.js +6159 -6159
- package/utils.js +872 -872
- package/.idea/gbrowser_project.xml +0 -11
- package/.idea/git_toolbox_blame.xml +0 -6
- package/.idea/git_toolbox_prj.xml +0 -15
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
<code_scheme name="Project" version="173">
|
|
3
3
|
<HTMLCodeStyleSettings>
|
|
4
4
|
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
|
5
|
+
<option name="HTML_ENFORCE_QUOTES" value="true" />
|
|
5
6
|
</HTMLCodeStyleSettings>
|
|
6
7
|
<JSCodeStyleSettings version="0">
|
|
7
8
|
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
|
4
|
+
<serverData>
|
|
5
|
+
<paths name="botnatridiscord">
|
|
6
|
+
<serverdata>
|
|
7
|
+
<mappings>
|
|
8
|
+
<mapping local="$PROJECT_DIR$" web="/" />
|
|
9
|
+
</mappings>
|
|
10
|
+
</serverdata>
|
|
11
|
+
</paths>
|
|
12
|
+
</serverData>
|
|
13
|
+
</component>
|
|
14
|
+
</project>
|
package/.prettierrc.json
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"printWidth": 1000
|
|
3
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"printWidth": 1000
|
|
3
|
+
}
|
package/SteamClient.js
CHANGED
|
@@ -90,6 +90,7 @@ export const SteamClientEvents = {
|
|
|
90
90
|
emailInfo: "emailInfo",
|
|
91
91
|
accountLimitations: "accountLimitations",
|
|
92
92
|
wallet: "wallet",
|
|
93
|
+
licenses: "licenses",
|
|
93
94
|
};
|
|
94
95
|
const PersonasCache = [];
|
|
95
96
|
let isSendingFriendMessages = false;
|
|
@@ -437,7 +438,7 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
437
438
|
}),
|
|
438
439
|
function (payload) {
|
|
439
440
|
clearTimeout(timeout);
|
|
440
|
-
const result = new SteamProto(SteamProtoType.CMsgClientMMSCreateLobbyResponse).
|
|
441
|
+
const result = new SteamProto(SteamProtoType.CMsgClientMMSCreateLobbyResponse).protoDecode(payload.toBuffer());
|
|
441
442
|
const steam_id_lobby = result.steam_id_lobby.toString();
|
|
442
443
|
currentLobby.lobbyID = steam_id_lobby;
|
|
443
444
|
currentLobby.timestamp = Date.now();
|
|
@@ -941,6 +942,10 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
941
942
|
_clientWelcome = obj;
|
|
942
943
|
callEvent(events.csgoOnline, obj);
|
|
943
944
|
|
|
945
|
+
setTimeout(function () {
|
|
946
|
+
_clientWelcome.items = {};
|
|
947
|
+
}, 10000);
|
|
948
|
+
|
|
944
949
|
if (isPartyRegister) {
|
|
945
950
|
partyRegister();
|
|
946
951
|
doSetInterval(
|
|
@@ -1421,6 +1426,11 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
1421
1426
|
},
|
|
1422
1427
|
async friendsList() {
|
|
1423
1428
|
callEvent(events.friendsList, getFriendList());
|
|
1429
|
+
|
|
1430
|
+
steamClient.myFriends = {};
|
|
1431
|
+
setTimeout(function () {
|
|
1432
|
+
steamClient.myFriends = {};
|
|
1433
|
+
}, 10000);
|
|
1424
1434
|
},
|
|
1425
1435
|
async gifts(gid, packageid, TimeCreated, TimeExpiration, TimeSent, TimeAcked, TimeRedeemed, RecipientAddress, SenderAddress, SenderName) {
|
|
1426
1436
|
callEvent(events.gifts, {
|
|
@@ -1464,6 +1474,18 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
1464
1474
|
balance: balance,
|
|
1465
1475
|
});
|
|
1466
1476
|
},
|
|
1477
|
+
async licenses() {
|
|
1478
|
+
steamClient.licenses = [];
|
|
1479
|
+
setTimeout(function () {
|
|
1480
|
+
steamClient.licenses = [];
|
|
1481
|
+
}, 10000);
|
|
1482
|
+
},
|
|
1483
|
+
async users() {
|
|
1484
|
+
steamClient.users = {};
|
|
1485
|
+
setTimeout(function () {
|
|
1486
|
+
steamClient.users = {};
|
|
1487
|
+
}, 10000);
|
|
1488
|
+
},
|
|
1467
1489
|
};
|
|
1468
1490
|
|
|
1469
1491
|
const _chatEvents = {
|
|
@@ -2193,28 +2215,19 @@ function SteamClient({ username, password, cookie, clientJsToken, isAutoRequestF
|
|
|
2193
2215
|
|
|
2194
2216
|
const encodedMessages = new SteamProto(SteamProtoType.CMsgGCCstrike15_v2_ClientRedeemFreeReward).protoEncode({
|
|
2195
2217
|
items: itemIds,
|
|
2196
|
-
redeemable_balance: 0,
|
|
2197
|
-
generation_time: generation_time,
|
|
2198
2218
|
});
|
|
2199
|
-
steamClient.sendToGC(
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
},
|
|
2212
|
-
encodedMessages,
|
|
2213
|
-
function (payload) {
|
|
2214
|
-
console.log(payload);
|
|
2215
|
-
},
|
|
2216
|
-
);
|
|
2217
|
-
}, 30000);
|
|
2219
|
+
steamClient.sendToGC(
|
|
2220
|
+
730,
|
|
2221
|
+
ESteamProto.ECsgoGCMsg.k_EMsgGCCStrike15_v2_ClientRedeemFreeReward,
|
|
2222
|
+
{
|
|
2223
|
+
steamid: steamClient.steamID.getSteamID64(),
|
|
2224
|
+
routing_appid: 730,
|
|
2225
|
+
},
|
|
2226
|
+
encodedMessages,
|
|
2227
|
+
function (payload) {
|
|
2228
|
+
console.log(payload);
|
|
2229
|
+
},
|
|
2230
|
+
);
|
|
2218
2231
|
}
|
|
2219
2232
|
|
|
2220
2233
|
function requestRankingInfo() {
|
package/_steamproto.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { loadProfos } from "./helpers/protos.js";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = path.dirname(__filename);
|
|
6
|
-
|
|
7
|
-
export class SteamProto {
|
|
8
|
-
constructor(proto) {
|
|
9
|
-
this._proto = proto;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
toProto() {
|
|
13
|
-
const file = loadProfos(path.join(`${__dirname}/protos/`, this._proto.filename));
|
|
14
|
-
const root = root.loadSync(file, {
|
|
15
|
-
keepCase: true,
|
|
16
|
-
});
|
|
17
|
-
return root[this._proto.name];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
protoEncode(obj) {
|
|
21
|
-
const protobuf = this.toProto();
|
|
22
|
-
return protobuf.encode(protobuf.create(obj)).finish();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
protoDecode(obj) {
|
|
26
|
-
const protobuf = this.toProto();
|
|
27
|
-
return protobuf.toObject(protobuf.decode(obj), { defaults: true });
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { loadProfos } from "./helpers/protos.js";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = path.dirname(__filename);
|
|
6
|
+
|
|
7
|
+
export class SteamProto {
|
|
8
|
+
constructor(proto) {
|
|
9
|
+
this._proto = proto;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
toProto() {
|
|
13
|
+
const file = loadProfos(path.join(`${__dirname}/protos/`, this._proto.filename));
|
|
14
|
+
const root = root.loadSync(file, {
|
|
15
|
+
keepCase: true,
|
|
16
|
+
});
|
|
17
|
+
return root[this._proto.name];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
protoEncode(obj) {
|
|
21
|
+
const protobuf = this.toProto();
|
|
22
|
+
return protobuf.encode(protobuf.create(obj)).finish();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
protoDecode(obj) {
|
|
26
|
+
const protobuf = this.toProto();
|
|
27
|
+
return protobuf.toObject(protobuf.decode(obj), { defaults: true });
|
|
28
|
+
}
|
|
29
|
+
}
|
package/axios.js
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import * as _axios from "axios";
|
|
2
|
-
import * as cheerio from "cheerio";
|
|
3
|
-
|
|
4
|
-
export class Header {
|
|
5
|
-
headers = {};
|
|
6
|
-
|
|
7
|
-
constructor(headers) {
|
|
8
|
-
if (typeof headers === "object" && Object.keys(headers).length) {
|
|
9
|
-
this.headers = this.validate(headers);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
validate(headers) {
|
|
14
|
-
headers = Object.keys(headers).reduce(function (previousValue, currentValue, currentIndex, array) {
|
|
15
|
-
previousValue[currentValue.toLowerCase()] = headers[currentValue]?.trim();
|
|
16
|
-
return previousValue;
|
|
17
|
-
}, {});
|
|
18
|
-
if (headers.cookie === undefined || headers.cookie === null) {
|
|
19
|
-
headers.cookie = "";
|
|
20
|
-
}
|
|
21
|
-
return headers;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
get(key) {
|
|
25
|
-
if (key === undefined) {
|
|
26
|
-
return { ...this.headers };
|
|
27
|
-
} else {
|
|
28
|
-
return this.headers[key.toLowerCase()];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
set(key, value) {
|
|
33
|
-
if (typeof key === "string") {
|
|
34
|
-
this.headers[key.toLowerCase()] = value;
|
|
35
|
-
} else {
|
|
36
|
-
for (let _key in key) {
|
|
37
|
-
this.headers[_key.toLowerCase()] = key[_key];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
this.headers = this.validate(this.headers);
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const axios = _axios.default.create({
|
|
46
|
-
baseURL: "/",
|
|
47
|
-
timeout: 60000,
|
|
48
|
-
headers: {
|
|
49
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
|
|
50
|
-
},
|
|
51
|
-
validateStatus: () => true,
|
|
52
|
-
withCredentials: true,
|
|
53
|
-
maxContentLength: Infinity,
|
|
54
|
-
maxBodyLength: Infinity,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
//debug
|
|
58
|
-
// axios.interceptors.request.use(function (config) {
|
|
59
|
-
// console_log(`[axios]`, config.method, config.url)
|
|
60
|
-
// return config
|
|
61
|
-
// }, function (error) {
|
|
62
|
-
// return Promise.reject(error)
|
|
63
|
-
// })
|
|
64
|
-
|
|
65
|
-
export async function request(config) {
|
|
66
|
-
try {
|
|
67
|
-
if (!config?.headers?.cookie) {
|
|
68
|
-
try {
|
|
69
|
-
delete config.headers.cookie;
|
|
70
|
-
} catch (e) {}
|
|
71
|
-
}
|
|
72
|
-
const result = await axios.request(config);
|
|
73
|
-
if (result.data && typeof result.data === "string") {
|
|
74
|
-
result._$ = function () {
|
|
75
|
-
return cheerio.load(result.data.replaceAll(/[\t\n\r]/gi, "").trim());
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
return result;
|
|
79
|
-
} catch (e) {
|
|
80
|
-
return {
|
|
81
|
-
error: e,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
}
|
|
1
|
+
import * as _axios from "axios";
|
|
2
|
+
import * as cheerio from "cheerio";
|
|
3
|
+
|
|
4
|
+
export class Header {
|
|
5
|
+
headers = {};
|
|
6
|
+
|
|
7
|
+
constructor(headers) {
|
|
8
|
+
if (typeof headers === "object" && Object.keys(headers).length) {
|
|
9
|
+
this.headers = this.validate(headers);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
validate(headers) {
|
|
14
|
+
headers = Object.keys(headers).reduce(function (previousValue, currentValue, currentIndex, array) {
|
|
15
|
+
previousValue[currentValue.toLowerCase()] = headers[currentValue]?.trim();
|
|
16
|
+
return previousValue;
|
|
17
|
+
}, {});
|
|
18
|
+
if (headers.cookie === undefined || headers.cookie === null) {
|
|
19
|
+
headers.cookie = "";
|
|
20
|
+
}
|
|
21
|
+
return headers;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get(key) {
|
|
25
|
+
if (key === undefined) {
|
|
26
|
+
return { ...this.headers };
|
|
27
|
+
} else {
|
|
28
|
+
return this.headers[key.toLowerCase()];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
set(key, value) {
|
|
33
|
+
if (typeof key === "string") {
|
|
34
|
+
this.headers[key.toLowerCase()] = value;
|
|
35
|
+
} else {
|
|
36
|
+
for (let _key in key) {
|
|
37
|
+
this.headers[_key.toLowerCase()] = key[_key];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
this.headers = this.validate(this.headers);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const axios = _axios.default.create({
|
|
46
|
+
baseURL: "/",
|
|
47
|
+
timeout: 60000,
|
|
48
|
+
headers: {
|
|
49
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
|
|
50
|
+
},
|
|
51
|
+
validateStatus: () => true,
|
|
52
|
+
withCredentials: true,
|
|
53
|
+
maxContentLength: Infinity,
|
|
54
|
+
maxBodyLength: Infinity,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
//debug
|
|
58
|
+
// axios.interceptors.request.use(function (config) {
|
|
59
|
+
// console_log(`[axios]`, config.method, config.url)
|
|
60
|
+
// return config
|
|
61
|
+
// }, function (error) {
|
|
62
|
+
// return Promise.reject(error)
|
|
63
|
+
// })
|
|
64
|
+
|
|
65
|
+
export async function request(config) {
|
|
66
|
+
try {
|
|
67
|
+
if (!config?.headers?.cookie) {
|
|
68
|
+
try {
|
|
69
|
+
delete config.headers.cookie;
|
|
70
|
+
} catch (e) {}
|
|
71
|
+
}
|
|
72
|
+
const result = await axios.request(config);
|
|
73
|
+
if (result.data && typeof result.data === "string") {
|
|
74
|
+
result._$ = function () {
|
|
75
|
+
return cheerio.load(result.data.replaceAll(/[\t\n\r]/gi, "").trim());
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
} catch (e) {
|
|
80
|
+
return {
|
|
81
|
+
error: e,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
package/bufferHelpers.js
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
import ByteBuffer from 'bytebuffer';
|
|
2
|
-
import SteamID from 'steamid';
|
|
3
|
-
|
|
4
|
-
const Type = {
|
|
5
|
-
None : 0,
|
|
6
|
-
String : 1,
|
|
7
|
-
Int32 : 2,
|
|
8
|
-
Float32 : 3,
|
|
9
|
-
Pointer : 4,
|
|
10
|
-
WideString : 5,
|
|
11
|
-
Color : 6,
|
|
12
|
-
UInt64 : 7,
|
|
13
|
-
End : 8
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Encodes an object into a ByteBuffer
|
|
17
|
-
export const encode = (
|
|
18
|
-
_object,
|
|
19
|
-
prefix = [0x00, 0x00],
|
|
20
|
-
suffix = [],
|
|
21
|
-
customEncodeFields = {}
|
|
22
|
-
) => {
|
|
23
|
-
// Create a copy of the input object to avoid modifying it
|
|
24
|
-
const object = { ..._object };
|
|
25
|
-
const buffer = new ByteBuffer();
|
|
26
|
-
|
|
27
|
-
// Write the prefix bytes to the buffer
|
|
28
|
-
for (let pre of prefix) {
|
|
29
|
-
buffer.writeByte(pre);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Iterate through the object's properties and encode them
|
|
33
|
-
for (let item in object) {
|
|
34
|
-
if (object.hasOwnProperty(item) === false) {
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// If a custom encoder function exists for the property, use it
|
|
39
|
-
if (typeof customEncodeFields[item] === 'function') {
|
|
40
|
-
object[item] = customEncodeFields[item](object[item]);
|
|
41
|
-
}
|
|
42
|
-
_encode(object[item], buffer, item);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Write the suffix bytes to the buffer
|
|
46
|
-
for (let suf of suffix) {
|
|
47
|
-
buffer.writeByte(suf);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Write an End marker to the buffer
|
|
51
|
-
buffer.writeByte(Type.End);
|
|
52
|
-
buffer.flip(); // Prepare the buffer for reading
|
|
53
|
-
return buffer;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// Encodes individual properties into the ByteBuffer
|
|
57
|
-
const _encode = (object, buffer, name) => {
|
|
58
|
-
if (object instanceof Buffer) {
|
|
59
|
-
// If the object is a Buffer
|
|
60
|
-
buffer.writeByte(Type.String);
|
|
61
|
-
buffer.writeCString(name);
|
|
62
|
-
|
|
63
|
-
// Convert the Buffer to a hexadecimal string, split into 2-character parts, and write each part as a byte
|
|
64
|
-
let parts = object
|
|
65
|
-
.toString('hex')
|
|
66
|
-
.toUpperCase()
|
|
67
|
-
.match(/.{1,2}/g);
|
|
68
|
-
|
|
69
|
-
for (let part of parts) {
|
|
70
|
-
buffer.writeByte(parseInt('0x' + part));
|
|
71
|
-
}
|
|
72
|
-
} else {
|
|
73
|
-
// If the object is not a Buffer, check its type
|
|
74
|
-
switch (typeof object) {
|
|
75
|
-
case 'object': {
|
|
76
|
-
buffer.writeByte(Type.None);
|
|
77
|
-
buffer.writeCString(name);
|
|
78
|
-
|
|
79
|
-
for (let index in object) {
|
|
80
|
-
_encode(object[index], buffer, index); // Recursively encode each property
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
buffer.writeByte(Type.End);
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
case 'string': {
|
|
87
|
-
buffer.writeByte(Type.String);
|
|
88
|
-
buffer.writeCString(name);
|
|
89
|
-
buffer.writeCString(object ? object : '');
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
case 'number': {
|
|
93
|
-
buffer.writeByte(Type.String);
|
|
94
|
-
buffer.writeCString(name);
|
|
95
|
-
buffer.writeCString(object.toString());
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// Encodes SteamIDs into a Buffer
|
|
103
|
-
export const encodeUids = (steamids) => {
|
|
104
|
-
const outputBuffer = [];
|
|
105
|
-
|
|
106
|
-
for (let id of steamids.map((s) => s.accountid)) {
|
|
107
|
-
while (id > 0x7f) {
|
|
108
|
-
outputBuffer.push((id | 0x80) & 0xff);
|
|
109
|
-
id >>= 7;
|
|
110
|
-
}
|
|
111
|
-
outputBuffer.push(id);
|
|
112
|
-
}
|
|
113
|
-
outputBuffer.push(0x00); // Null terminator
|
|
114
|
-
return Buffer.from(outputBuffer);
|
|
115
|
-
};
|
|
1
|
+
import ByteBuffer from 'bytebuffer';
|
|
2
|
+
import SteamID from 'steamid';
|
|
3
|
+
|
|
4
|
+
const Type = {
|
|
5
|
+
None : 0,
|
|
6
|
+
String : 1,
|
|
7
|
+
Int32 : 2,
|
|
8
|
+
Float32 : 3,
|
|
9
|
+
Pointer : 4,
|
|
10
|
+
WideString : 5,
|
|
11
|
+
Color : 6,
|
|
12
|
+
UInt64 : 7,
|
|
13
|
+
End : 8
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Encodes an object into a ByteBuffer
|
|
17
|
+
export const encode = (
|
|
18
|
+
_object,
|
|
19
|
+
prefix = [0x00, 0x00],
|
|
20
|
+
suffix = [],
|
|
21
|
+
customEncodeFields = {}
|
|
22
|
+
) => {
|
|
23
|
+
// Create a copy of the input object to avoid modifying it
|
|
24
|
+
const object = { ..._object };
|
|
25
|
+
const buffer = new ByteBuffer();
|
|
26
|
+
|
|
27
|
+
// Write the prefix bytes to the buffer
|
|
28
|
+
for (let pre of prefix) {
|
|
29
|
+
buffer.writeByte(pre);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Iterate through the object's properties and encode them
|
|
33
|
+
for (let item in object) {
|
|
34
|
+
if (object.hasOwnProperty(item) === false) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// If a custom encoder function exists for the property, use it
|
|
39
|
+
if (typeof customEncodeFields[item] === 'function') {
|
|
40
|
+
object[item] = customEncodeFields[item](object[item]);
|
|
41
|
+
}
|
|
42
|
+
_encode(object[item], buffer, item);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Write the suffix bytes to the buffer
|
|
46
|
+
for (let suf of suffix) {
|
|
47
|
+
buffer.writeByte(suf);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Write an End marker to the buffer
|
|
51
|
+
buffer.writeByte(Type.End);
|
|
52
|
+
buffer.flip(); // Prepare the buffer for reading
|
|
53
|
+
return buffer;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Encodes individual properties into the ByteBuffer
|
|
57
|
+
const _encode = (object, buffer, name) => {
|
|
58
|
+
if (object instanceof Buffer) {
|
|
59
|
+
// If the object is a Buffer
|
|
60
|
+
buffer.writeByte(Type.String);
|
|
61
|
+
buffer.writeCString(name);
|
|
62
|
+
|
|
63
|
+
// Convert the Buffer to a hexadecimal string, split into 2-character parts, and write each part as a byte
|
|
64
|
+
let parts = object
|
|
65
|
+
.toString('hex')
|
|
66
|
+
.toUpperCase()
|
|
67
|
+
.match(/.{1,2}/g);
|
|
68
|
+
|
|
69
|
+
for (let part of parts) {
|
|
70
|
+
buffer.writeByte(parseInt('0x' + part));
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
// If the object is not a Buffer, check its type
|
|
74
|
+
switch (typeof object) {
|
|
75
|
+
case 'object': {
|
|
76
|
+
buffer.writeByte(Type.None);
|
|
77
|
+
buffer.writeCString(name);
|
|
78
|
+
|
|
79
|
+
for (let index in object) {
|
|
80
|
+
_encode(object[index], buffer, index); // Recursively encode each property
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
buffer.writeByte(Type.End);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'string': {
|
|
87
|
+
buffer.writeByte(Type.String);
|
|
88
|
+
buffer.writeCString(name);
|
|
89
|
+
buffer.writeCString(object ? object : '');
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case 'number': {
|
|
93
|
+
buffer.writeByte(Type.String);
|
|
94
|
+
buffer.writeCString(name);
|
|
95
|
+
buffer.writeCString(object.toString());
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Encodes SteamIDs into a Buffer
|
|
103
|
+
export const encodeUids = (steamids) => {
|
|
104
|
+
const outputBuffer = [];
|
|
105
|
+
|
|
106
|
+
for (let id of steamids.map((s) => s.accountid)) {
|
|
107
|
+
while (id > 0x7f) {
|
|
108
|
+
outputBuffer.push((id | 0x80) & 0xff);
|
|
109
|
+
id >>= 7;
|
|
110
|
+
}
|
|
111
|
+
outputBuffer.push(id);
|
|
112
|
+
}
|
|
113
|
+
outputBuffer.push(0x00); // Null terminator
|
|
114
|
+
return Buffer.from(outputBuffer);
|
|
115
|
+
};
|