steamutils 1.4.21 → 1.4.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/.idea/codeStyles/Project.xml +1 -0
  2. package/.idea/deployment.xml +14 -0
  3. package/.idea/jsLibraryMappings.xml +6 -0
  4. package/.prettierrc.json +3 -3
  5. package/SteamClient.js +2658 -2658
  6. package/bufferHelpers.js +115 -115
  7. package/cheerio.js +103 -103
  8. package/const.js +336 -336
  9. package/create_remote_file.js +66 -66
  10. package/index.js +284 -3
  11. package/package.json +1 -1
  12. package/protos/csgo/base_gcmessages.proto +553 -553
  13. package/protos/csgo/base_gcmessages_csgo.proto +547 -547
  14. package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
  15. package/protos/csgo/clientmessages.proto +48 -48
  16. package/protos/csgo/connectionless_netmessages.proto +17 -17
  17. package/protos/csgo/cs_gameevents.proto +35 -35
  18. package/protos/csgo/cs_usercmd.proto +34 -34
  19. package/protos/csgo/cstrike15_gcmessages.proto +1431 -1431
  20. package/protos/csgo/cstrike15_usermessages.proto +592 -592
  21. package/protos/csgo/demo.proto +165 -165
  22. package/protos/csgo/econ_gcmessages.proto +219 -219
  23. package/protos/csgo/engine_gcmessages.proto +14 -14
  24. package/protos/csgo/enums_clientserver.proto +1529 -1529
  25. package/protos/csgo/fatdemo.proto +125 -125
  26. package/protos/csgo/gameevents.proto +120 -120
  27. package/protos/csgo/gcsdk_gcmessages.proto +323 -323
  28. package/protos/csgo/gcsystemmsgs.proto +243 -243
  29. package/protos/csgo/netmessages.proto +618 -618
  30. package/protos/csgo/network_connection.proto +126 -126
  31. package/protos/csgo/networkbasetypes.proto +246 -246
  32. package/protos/csgo/networksystem_protomessages.proto +17 -17
  33. package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
  34. package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
  35. package/protos/csgo/steammessages.proto +620 -620
  36. package/protos/csgo/steammessages_base.proto +301 -301
  37. package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
  38. package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
  39. package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
  40. package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
  41. package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
  42. package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
  43. package/protos/csgo/steammessages_unified_base.steamworkssdk.proto +30 -30
  44. package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
  45. package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
  46. package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
  47. package/protos/csgo/te.proto +259 -259
  48. package/protos/csgo/uifontfile_format.proto +13 -13
  49. package/protos/csgo/usercmd.proto +39 -39
  50. package/protos/csgo/usermessages.proto +752 -752
  51. package/protos/csgo/valveextensions.proto +17 -17
  52. package/protos/google/protobuf/descriptor.proto +281 -281
  53. package/protos/steam/clientmetrics.proto +45 -45
  54. package/protos/steam/content_manifest.proto +62 -62
  55. package/protos/steam/contenthubs.proto +41 -41
  56. package/protos/steam/encrypted_app_ticket.proto +10 -10
  57. package/protos/steam/enums.proto +501 -501
  58. package/protos/steam/enums_clientserver.proto +1508 -1508
  59. package/protos/steam/enums_productinfo.proto +14 -14
  60. package/protos/steam/htmlmessages.proto +1039 -1039
  61. package/protos/steam/offline_ticket.proto +8 -8
  62. package/protos/steam/steamdatagram_messages_auth.proto +65 -65
  63. package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
  64. package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
  65. package/protos/steam/steammessages_appoverview.proto +204 -204
  66. package/protos/steam/steammessages_auth.steamclient.proto +375 -375
  67. package/protos/steam/steammessages_base.proto +335 -335
  68. package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
  69. package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
  70. package/protos/steam/steammessages_client_objects.proto +649 -649
  71. package/protos/steam/steammessages_clientlanp2p.proto +43 -43
  72. package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
  73. package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
  74. package/protos/steam/steammessages_clientserver.proto +392 -392
  75. package/protos/steam/steammessages_clientserver_2.proto +771 -771
  76. package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
  77. package/protos/steam/steammessages_clientserver_friends.proto +260 -260
  78. package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
  79. package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
  80. package/protos/steam/steammessages_clientserver_login.proto +167 -167
  81. package/protos/steam/steammessages_clientserver_mms.proto +233 -233
  82. package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
  83. package/protos/steam/steammessages_clientserver_uds.proto +125 -125
  84. package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
  85. package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
  86. package/protos/steam/steammessages_clientsettings.proto +208 -208
  87. package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
  88. package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
  89. package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
  90. package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
  91. package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
  92. package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
  93. package/protos/steam/steammessages_econ.steamclient.proto +137 -137
  94. package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
  95. package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
  96. package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
  97. package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
  98. package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
  99. package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
  100. package/protos/steam/steammessages_hiddevices.proto +157 -157
  101. package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
  102. package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
  103. package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
  104. package/protos/steam/steammessages_market.steamclient.proto +22 -22
  105. package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
  106. package/protos/steam/steammessages_offline.steamclient.proto +33 -33
  107. package/protos/steam/steammessages_parental.steamclient.proto +262 -262
  108. package/protos/steam/steammessages_parties.steamclient.proto +75 -75
  109. package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
  110. package/protos/steam/steammessages_player.steamclient.proto +915 -915
  111. package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
  112. package/protos/steam/steammessages_qms.steamclient.proto +111 -111
  113. package/protos/steam/steammessages_remoteclient.proto +100 -100
  114. package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
  115. package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
  116. package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
  117. package/protos/steam/steammessages_remoteplay.proto +975 -975
  118. package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
  119. package/protos/steam/steammessages_shader.steamclient.proto +89 -89
  120. package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
  121. package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
  122. package/protos/steam/steammessages_siteserverui.proto +130 -130
  123. package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
  124. package/protos/steam/steammessages_store.steamclient.proto +404 -404
  125. package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
  126. package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
  127. package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
  128. package/protos/steam/steammessages_unified_base.steamclient.proto +45 -45
  129. package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
  130. package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
  131. package/protos/steam/steammessages_vac.steamclient.proto +37 -37
  132. package/protos/steam/steammessages_video.steamclient.proto +68 -68
  133. package/protos/steam/steammessages_virtualcontroller.proto +138 -138
  134. package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
  135. package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
  136. package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
  137. package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
  138. package/protos/steam/webuimessages_achievements.proto +29 -29
  139. package/protos/steam/webuimessages_base.proto +24 -24
  140. package/protos/steam/webuimessages_gamenotes.proto +21 -21
  141. package/protos/steam/webuimessages_gamescope.proto +57 -57
  142. package/protos/steam/webuimessages_steamengine.proto +41 -41
  143. package/protos/steam/webuimessages_steamos.proto +114 -114
  144. package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
  145. package/protos/steam/webuimessages_systemmanager.proto +17 -17
  146. package/protos/steam/webuimessages_transport.proto +22 -22
  147. package/protos/steam/webuimessages_transportvalidation.proto +111 -111
  148. package/protos/webui/common.proto +4024 -4024
  149. package/protos/webui/common_base.proto +27 -27
  150. package/protos/webui/service_accountcart.proto +153 -153
  151. package/protos/webui/service_accountlinking.proto +27 -27
  152. package/protos/webui/service_accountprivacy.proto +42 -42
  153. package/protos/webui/service_accountprivateapps.proto +34 -34
  154. package/protos/webui/service_auction.proto +97 -97
  155. package/protos/webui/service_authentication.proto +222 -222
  156. package/protos/webui/service_authenticationsupport.proto +74 -74
  157. package/protos/webui/service_broadcast.proto +562 -562
  158. package/protos/webui/service_chat.proto +11 -11
  159. package/protos/webui/service_chatroom.proto +810 -810
  160. package/protos/webui/service_chatusability.proto +107 -107
  161. package/protos/webui/service_checkout.proto +84 -84
  162. package/protos/webui/service_clan.proto +41 -41
  163. package/protos/webui/service_clanchatrooms.proto +25 -25
  164. package/protos/webui/service_clanfaqs.proto +202 -202
  165. package/protos/webui/service_clientcomm.proto +151 -151
  166. package/protos/webui/service_clientmetrics.proto +22 -22
  167. package/protos/webui/service_cloud.proto +222 -222
  168. package/protos/webui/service_cloudconfigstore.proto +51 -51
  169. package/protos/webui/service_cloudgaming.proto +30 -30
  170. package/protos/webui/service_community.proto +365 -365
  171. package/protos/webui/service_dailydeal.proto +89 -89
  172. package/protos/webui/service_econ.proto +134 -134
  173. package/protos/webui/service_embedded.proto +24 -24
  174. package/protos/webui/service_experimentservice.proto +6 -6
  175. package/protos/webui/service_familygroups.proto +355 -355
  176. package/protos/webui/service_fovasvideo.proto +15 -15
  177. package/protos/webui/service_friendmessages.proto +133 -133
  178. package/protos/webui/service_friendslist.proto +70 -70
  179. package/protos/webui/service_gamenotes.proto +15 -15
  180. package/protos/webui/service_gamerecording.proto +265 -265
  181. package/protos/webui/service_gamerecordingclip.proto +85 -85
  182. package/protos/webui/service_gamerecordingdebug.proto +52 -52
  183. package/protos/webui/service_helprequestlogs.proto +16 -16
  184. package/protos/webui/service_loyaltyrewards.proto +252 -252
  185. package/protos/webui/service_marketingmessages.proto +215 -215
  186. package/protos/webui/service_mobileapp.proto +18 -18
  187. package/protos/webui/service_mobileauth.proto +24 -24
  188. package/protos/webui/service_mobiledevice.proto +26 -26
  189. package/protos/webui/service_mobileperaccount.proto +31 -31
  190. package/protos/webui/service_news.proto +110 -110
  191. package/protos/webui/service_parental.proto +258 -258
  192. package/protos/webui/service_partnermembershipinvite.proto +34 -34
  193. package/protos/webui/service_partnerstorebrowse.proto +28 -28
  194. package/protos/webui/service_phone.proto +51 -51
  195. package/protos/webui/service_physicalgoods.proto +15 -15
  196. package/protos/webui/service_player.proto +918 -918
  197. package/protos/webui/service_promotioneventinvites.proto +109 -109
  198. package/protos/webui/service_promotionplanning.proto +186 -186
  199. package/protos/webui/service_promotionstats.proto +23 -23
  200. package/protos/webui/service_publishedfile.proto +714 -714
  201. package/protos/webui/service_publishing.proto +200 -200
  202. package/protos/webui/service_quest.proto +127 -127
  203. package/protos/webui/service_salefeature.proto +373 -373
  204. package/protos/webui/service_saleitemrewards.proto +54 -54
  205. package/protos/webui/service_shoppingcart.proto +152 -152
  206. package/protos/webui/service_steamawards.proto +76 -76
  207. package/protos/webui/service_steamcharts.proto +75 -75
  208. package/protos/webui/service_steamengine.proto +36 -36
  209. package/protos/webui/service_steamlearn.proto +876 -876
  210. package/protos/webui/service_steamnotification.proto +73 -73
  211. package/protos/webui/service_steamtv.proto +495 -495
  212. package/protos/webui/service_steamvrvoicechat.proto +67 -67
  213. package/protos/webui/service_steamvrwebrtc.proto +48 -48
  214. package/protos/webui/service_storagedevicemanager.proto +104 -104
  215. package/protos/webui/service_store.proto +359 -359
  216. package/protos/webui/service_storeappsimilarity.proto +76 -76
  217. package/protos/webui/service_storebrowse.proto +103 -103
  218. package/protos/webui/service_storemarketing.proto +44 -44
  219. package/protos/webui/service_storequery.proto +103 -103
  220. package/protos/webui/service_storesales.proto +87 -87
  221. package/protos/webui/service_storetopsellers.proto +44 -44
  222. package/protos/webui/service_systemmanager.proto +11 -11
  223. package/protos/webui/service_test_transporterror.proto +6 -6
  224. package/protos/webui/service_transportauth.proto +17 -17
  225. package/protos/webui/service_transportvalidation.proto +69 -69
  226. package/protos/webui/service_twofactor.proto +170 -170
  227. package/protos/webui/service_useraccount.proto +142 -142
  228. package/protos/webui/service_usergameactivity.proto +34 -34
  229. package/protos/webui/service_usergamenotes.proto +70 -70
  230. package/protos/webui/service_usernews.proto +68 -68
  231. package/protos/webui/service_userreviews.proto +97 -97
  232. package/protos/webui/service_video.proto +50 -50
  233. package/protos/webui/service_videoclip.proto +62 -62
  234. package/protos/webui/service_voicechat.proto +139 -139
  235. package/protos/webui/service_webrtc.proto +52 -52
  236. package/remote.js +6784 -6259
  237. package/utils.js +168 -168
  238. package/.idea/git_toolbox_blame.xml +0 -6
  239. package/.idea/git_toolbox_prj.xml +0 -15
@@ -1,66 +1,66 @@
1
- import SteamUser from "./index.js";
2
- import _ from "lodash";
3
-
4
- (async function () {
5
- const xx = SteamUser;
6
-
7
- let json = "";
8
-
9
- function doWrite(user, is_static) {
10
- for (const methodName of Object.getOwnPropertyNames(user)) {
11
- if (methodName === "constructor" || methodName === "length" || methodName === "name" || methodName === "prototype" || methodName === "RequestXML_TooManyRequests" || methodName === "MAX_RETRY") {
12
- continue;
13
- }
14
- const fnString = user[methodName].toString().trim();
15
- const async = "async";
16
- // const async = fnString.startsWith("async") ? "async" : "";
17
- let params = fnString.split("(")[1].split(")")[0];
18
- const paramsList = params.split(",");
19
- for (let i = 0; i < paramsList.length; i++) {
20
- if (paramsList[i].includes("=")) {
21
- paramsList[i] = paramsList[i].split("=")[0].trim();
22
- }
23
- }
24
- params = paramsList.join(", ").trim();
25
- if (params.startsWith("{") && !params.endsWith("}")) {
26
- params = `${params}}`;
27
- }
28
-
29
- json += `${`
30
- ${is_static ? "static " : ""} ${async} ${methodName}(${params}){
31
- const __params = [${params}];
32
- if(__params.length === 1 && __params[0] === undefined){
33
- __params.length = 0
34
- }
35
- let __cookies = this._cookies;
36
- if (__cookies) {
37
- if (!Array.isArray(__cookies)) {
38
- __cookies = [__cookies];
39
- }
40
- __cookies = __cookies.map(function (cookie) {
41
- return cookie.toString();
42
- });
43
- }
44
-
45
- try {
46
- const result = (
47
- await axios.post(getAppURL(), {
48
- method: "${methodName}",
49
- params: __params,
50
- cookies: __cookies,
51
- is_static: ${!!is_static}
52
- })
53
- ).data?.result;
54
- return result
55
- } catch (e) {
56
- /* empty */
57
- }
58
- }`.trim()}\n`;
59
- }
60
- }
61
-
62
- doWrite(SteamUser.prototype, false);
63
- doWrite(SteamUser, true);
64
-
65
- console.log("");
66
- })();
1
+ import SteamUser from "./index.js";
2
+ import _ from "lodash";
3
+
4
+ (async function () {
5
+ const xx = SteamUser;
6
+
7
+ let json = "";
8
+
9
+ function doWrite(user, is_static) {
10
+ for (const methodName of Object.getOwnPropertyNames(user)) {
11
+ if (methodName === "constructor" || methodName === "length" || methodName === "name" || methodName === "prototype" || methodName === "RequestXML_TooManyRequests" || methodName === "MAX_RETRY") {
12
+ continue;
13
+ }
14
+ const fnString = user[methodName].toString().trim();
15
+ const async = "async";
16
+ // const async = fnString.startsWith("async") ? "async" : "";
17
+ let params = fnString.split("(")[1].split(")")[0];
18
+ const paramsList = params.split(",");
19
+ for (let i = 0; i < paramsList.length; i++) {
20
+ if (paramsList[i].includes("=")) {
21
+ paramsList[i] = paramsList[i].split("=")[0].trim();
22
+ }
23
+ }
24
+ params = paramsList.join(", ").trim();
25
+ if (params.startsWith("{") && !params.endsWith("}")) {
26
+ params = `${params}}`;
27
+ }
28
+
29
+ json += `${`
30
+ ${is_static ? "static " : ""} ${async} ${methodName}(${params}){
31
+ const __params = [${params}];
32
+ if(__params.length === 1 && __params[0] === undefined){
33
+ __params.length = 0
34
+ }
35
+ let __cookies = this._cookies;
36
+ if (__cookies) {
37
+ if (!Array.isArray(__cookies)) {
38
+ __cookies = [__cookies];
39
+ }
40
+ __cookies = __cookies.map(function (cookie) {
41
+ return cookie.toString();
42
+ });
43
+ }
44
+
45
+ try {
46
+ const result = (
47
+ await axios.post(getAppURL(), {
48
+ method: "${methodName}",
49
+ params: __params,
50
+ cookies: __cookies,
51
+ is_static: ${!!is_static}
52
+ })
53
+ ).data?.result;
54
+ return result
55
+ } catch (e) {
56
+ /* empty */
57
+ }
58
+ }`.trim()}\n`;
59
+ }
60
+ }
61
+
62
+ doWrite(SteamUser.prototype, false);
63
+ doWrite(SteamUser, true);
64
+
65
+ console.log("");
66
+ })();
package/index.js CHANGED
@@ -2596,6 +2596,48 @@ export default class SteamUser {
2596
2596
  return result?.data;
2597
2597
  }
2598
2598
 
2599
+ async removeFriends(steamIds) {
2600
+ if (!steamIds) {
2601
+ return;
2602
+ }
2603
+ if (!Array.isArray(steamIds)) {
2604
+ steamIds = [steamIds];
2605
+ }
2606
+
2607
+ const form = new FormData();
2608
+ for (const steamId of steamIds) {
2609
+ form.append("steamids[]", steamId);
2610
+ }
2611
+ form.append("action", "remove");
2612
+ form.append("ajax", "1");
2613
+ form.append("steamid", this.getSteamIdUser());
2614
+
2615
+ const result = await this._httpRequestAjax({
2616
+ url: `profiles/${this.getSteamIdUser()}/friends/action`,
2617
+ data: form,
2618
+ headers: {
2619
+ "content-type": "multipart/form-data",
2620
+ },
2621
+ method: "POST",
2622
+ });
2623
+ if (result instanceof ResponseError) {
2624
+ return result;
2625
+ }
2626
+ return result?.data;
2627
+ const resultExample = {
2628
+ success: 1,
2629
+ rgCounts: {
2630
+ cFriendsPending: 89,
2631
+ cFriendsBlocked: 0,
2632
+ cFollowing: 0,
2633
+ cGroupsPending: 0,
2634
+ cFriends: 5,
2635
+ cGroups: 0,
2636
+ success: 1,
2637
+ },
2638
+ };
2639
+ }
2640
+
2599
2641
  async acceptFriendRequest(steamId) {
2600
2642
  const result = await this._httpMyRequest({
2601
2643
  url: `friends/action`,
@@ -4870,11 +4912,12 @@ export default class SteamUser {
4870
4912
 
4871
4913
  async removePhoneNumber() {
4872
4914
  const result = await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpRemovePhoneNumber?redir=store/account`);
4873
- if (result instanceof ResponseError) {
4874
- return result;
4915
+ if (!result?.data || typeof result.data !== "string" || result instanceof ResponseError) {
4916
+ return;
4875
4917
  }
4918
+
4876
4919
  let href = null;
4877
- const $ = result._$();
4920
+ const $ = cheerio.load(result.data);
4878
4921
  $("a").each(function (index, el) {
4879
4922
  if (!href) {
4880
4923
  const link = $(el).attr("href");
@@ -7404,6 +7447,244 @@ export default class SteamUser {
7404
7447
 
7405
7448
  return result?.data;
7406
7449
  }
7450
+
7451
+ async changeEmail(newEmail, getNewEmailOptCodes, accessToken, identitySecret) {
7452
+ const account = SteamUser.steamID642Miniprofile(this.getSteamIdUser());
7453
+
7454
+ const getHelpLink = async () => {
7455
+ const response = await this._httpRequest("https://help.steampowered.com/en/wizard/HelpChangeEmail?redir=store/account/");
7456
+ const html = response.data;
7457
+ const $ = cheerio.load(html);
7458
+ let buttons = $("a.help_wizard_button");
7459
+ const helpButton = [...buttons].find((el) => $(el).text().trim() === "Send a confirmation to my Steam Mobile app");
7460
+ if (!helpButton) return;
7461
+ return $(helpButton).attr("href");
7462
+ };
7463
+ const sendAppConfirmation = async (helpLink) => {
7464
+ const response = await this._httpRequest(helpLink);
7465
+ const html = response.data;
7466
+ if (!html.includes("For security, verify that the code in the box below matches the code we display on the confirmations page.")) {
7467
+ return;
7468
+ }
7469
+ const $ = cheerio.load(html);
7470
+ const forgot_login_code_form = $("#forgot_login_code_form");
7471
+ const s = forgot_login_code_form.find('input[name="s"]').val();
7472
+ const reset = forgot_login_code_form.find('input[name="reset"]').val();
7473
+ const lost = forgot_login_code_form.find('input[name="lost"]').val();
7474
+ const method = forgot_login_code_form.find('input[name="method"]').val();
7475
+ const issueid = forgot_login_code_form.find('input[name="issueid"]').val();
7476
+
7477
+ const cleanHtml = html.replaceAll(/\s+/gi, " ");
7478
+ //do not remove this line
7479
+ const g_sessionID = cleanHtml.substringAfter("g_sessionID =").trim().substringBefore(";").replaceAll('"', "").trim();
7480
+ const g_rgDefaultWizardPageParamsStr = cleanHtml.substringAfter("g_rgDefaultWizardPageParams =").trim().substringBefore(";").trim();
7481
+ const g_rgDefaultWizardPageParams = eval(`() => {return ${g_rgDefaultWizardPageParamsStr};}`)();
7482
+ delete g_rgDefaultWizardPageParams.sessionid;
7483
+
7484
+ return {
7485
+ issue: {
7486
+ s,
7487
+ reset,
7488
+ lost,
7489
+ method,
7490
+ issueid,
7491
+ },
7492
+ g_rgDefaultWizardPageParams,
7493
+ };
7494
+ };
7495
+ const sendAccountRecoveryCode = async (issue, g_rgDefaultWizardPageParams, helpLink) => {
7496
+ const result = await this._httpRequest({
7497
+ url: "https://help.steampowered.com/en/wizard/AjaxSendAccountRecoveryCode",
7498
+ method: "POST",
7499
+ data: {
7500
+ ...g_rgDefaultWizardPageParams,
7501
+ s: issue.s,
7502
+ method: issue.method,
7503
+ link: "",
7504
+ },
7505
+ headers: {
7506
+ "content-type": "application/x-www-form-urlencoded",
7507
+ "x-requested-with": "XMLHttpRequest",
7508
+ Referer: helpLink,
7509
+ },
7510
+ });
7511
+
7512
+ return result?.data?.success === true;
7513
+ };
7514
+ const checkAccountRecoveryConfirmation = async (issue, g_rgDefaultWizardPageParams, helpLink) => {
7515
+ const result = await this._httpRequest({
7516
+ url: "https://help.steampowered.com/en/wizard/AjaxPollAccountRecoveryConfirmation",
7517
+ method: "POST",
7518
+ data: {
7519
+ ...g_rgDefaultWizardPageParams,
7520
+ s: issue.s,
7521
+ reset: issue.reset,
7522
+ lost: issue.lost,
7523
+ method: issue.method,
7524
+ issueid: issue.issueid,
7525
+ },
7526
+ headers: {
7527
+ "content-type": "application/x-www-form-urlencoded",
7528
+ "x-requested-with": "XMLHttpRequest",
7529
+ Referer: helpLink,
7530
+ },
7531
+ });
7532
+
7533
+ return result?.data || { continue: true, success: false };
7534
+ };
7535
+ const submitNewEmail = async (issue, g_rgDefaultWizardPageParams, newEmail) => {
7536
+ const result = await this._httpRequest({
7537
+ url: "https://help.steampowered.com/en/wizard/AjaxAccountRecoveryChangeEmail/",
7538
+ method: "POST",
7539
+ data: {
7540
+ ...g_rgDefaultWizardPageParams,
7541
+ s: issue.s,
7542
+ account: account,
7543
+ email: newEmail,
7544
+ },
7545
+ headers: {
7546
+ "content-type": "application/x-www-form-urlencoded",
7547
+ "x-requested-with": "XMLHttpRequest",
7548
+ Referer: `https://help.steampowered.com/en/wizard/HelpWithLoginInfoReset/?s=${issue.s}&account=${account}&reset=${issue.reset}&issueid=${issue.issueid}`,
7549
+ },
7550
+ });
7551
+
7552
+ return result?.data || { hash: "", errorMsg: "", show_confirmation: true };
7553
+ };
7554
+ const confirmNewEmail = async (issue, g_rgDefaultWizardPageParams, newEmail, code) => {
7555
+ const result = await this._httpRequest({
7556
+ url: "https://help.steampowered.com/en/wizard/AjaxAccountRecoveryConfirmChangeEmail/",
7557
+ method: "POST",
7558
+ data: {
7559
+ ...g_rgDefaultWizardPageParams,
7560
+ s: issue.s,
7561
+ account: account,
7562
+ email: newEmail,
7563
+ email_change_code: code,
7564
+ },
7565
+ headers: {
7566
+ "content-type": "application/x-www-form-urlencoded",
7567
+ "x-requested-with": "XMLHttpRequest",
7568
+ Referer: `https://help.steampowered.com/en/wizard/HelpWithLoginInfoReset/?s=${issue.s}&account=${account}&reset=${issue.reset}&issueid=${issue.issueid}`,
7569
+ },
7570
+ });
7571
+
7572
+ return result?.data || { hash: "", errorMsg: "", show_confirmation: true };
7573
+ };
7574
+ const onError = (msg) => ({ error: msg });
7575
+
7576
+ const helpLink = await getHelpLink();
7577
+ if (!helpLink) return onError("Can't get help link");
7578
+ const issueData = await sendAppConfirmation(helpLink);
7579
+ if (!issueData) return onError("Can't send app confirmation");
7580
+ const { issue, g_rgDefaultWizardPageParams } = issueData;
7581
+
7582
+ await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpWithLoginInfoEnterCode?s=${issue.s}&account=${account}&reset=${issue.reset}&lost=${issue.lost}&issueid=${issue.issueid}&wizard_ajax=1&gamepad=0`);
7583
+
7584
+ const sendResult = await sendAccountRecoveryCode(issue, g_rgDefaultWizardPageParams, helpLink);
7585
+ if (!sendResult) return onError("Can't send app recovery code");
7586
+
7587
+ await sleep(1000);
7588
+ let confirmations = await this.getConfirmations(accessToken, identitySecret);
7589
+ if (!confirmations?.confirmations) {
7590
+ await sleep(2000);
7591
+ confirmations = await this.getConfirmations(accessToken, identitySecret);
7592
+ }
7593
+ if (!confirmations?.confirmations) {
7594
+ return onError("Can't get app recovery code");
7595
+ }
7596
+ for (const confirmation of confirmations?.confirmations) {
7597
+ await this.acceptConfirmationForObject(accessToken, identitySecret, confirmation.creator);
7598
+ }
7599
+
7600
+ let checkingOk = null;
7601
+ for (let i = 0; i < 10; i++) {
7602
+ checkingOk = await checkAccountRecoveryConfirmation(issue, g_rgDefaultWizardPageParams, helpLink);
7603
+ if (checkingOk.continue) {
7604
+ await sleep(5000);
7605
+ } else if (checkingOk.success) {
7606
+ break;
7607
+ } else if (checkingOk.error) {
7608
+ break;
7609
+ } else {
7610
+ break;
7611
+ }
7612
+ }
7613
+ if (!checkingOk.success) {
7614
+ return onError("Can't confirm app recovery code");
7615
+ }
7616
+
7617
+ const resss = await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpWithLoginInfoReset/?s=${issue.s}&account=${account}&reset=${issue.reset}&issueid=${issue.issueid}`);
7618
+
7619
+ const submitResult = await submitNewEmail(issue, g_rgDefaultWizardPageParams, newEmail);
7620
+ if (submitResult.errorMsg) {
7621
+ console.log(submitResult.errorMsg);
7622
+ return onError("submitNewEmail Failed: " + submitResult.errorMsg);
7623
+ }
7624
+
7625
+ //confirm code sent to new email
7626
+ for (let i = 0; i < 5; i++) {
7627
+ let codes = await getNewEmailOptCodes();
7628
+ if (codes) {
7629
+ codes = Array.isArray(codes) ? codes : [codes];
7630
+ for (const code of codes) {
7631
+ const confirmResult = await confirmNewEmail(issue, g_rgDefaultWizardPageParams, newEmail, code);
7632
+ if (confirmResult?.hash?.includes?.("HelpWithLoginInfoComplete")) {
7633
+ return {
7634
+ success: true,
7635
+ };
7636
+ } else {
7637
+ await sleep(1000);
7638
+ }
7639
+ }
7640
+ } else {
7641
+ await sleep(5000);
7642
+ }
7643
+ }
7644
+
7645
+ return onError("Can't confirm new email code");
7646
+ }
7647
+
7648
+ async sendMessage({ steamId, content, accessToken }) {
7649
+ if (!accessToken || typeof accessToken !== "string") {
7650
+ console.error("revokeAccessToken", "invalid accessToken", accessToken);
7651
+ return;
7652
+ }
7653
+ const Protos = helpers([
7654
+ {
7655
+ name: "csgo",
7656
+ protos: loadProfos(`${__dirname}/protos/webui`),
7657
+ },
7658
+ ]);
7659
+ const params = {
7660
+ access_token: accessToken,
7661
+ origin: "https://store.steampowered.com",
7662
+ input_protobuf_encoded: protoEncode(Protos.csgo.CFriendMessages_SendMessage_Request, {
7663
+ steamid: steamId,
7664
+ message: content,
7665
+ chat_entry_type: 1,
7666
+ contains_bbcode: false,
7667
+ }).toString("base64"),
7668
+ };
7669
+
7670
+ const result = await this._httpRequest({
7671
+ url: `https://api.steampowered.com/IFriendMessagesService/SendMessage/v1?${Object.keys(params)
7672
+ .map((k) => `${k}=${encodeURIComponent(params[k])}`)
7673
+ .join("&")}`,
7674
+ // responseType: "arraybuffer",
7675
+ // method: "POST",
7676
+ });
7677
+ if (result instanceof ResponseError) {
7678
+ return result;
7679
+ }
7680
+
7681
+ let response = null;
7682
+ try {
7683
+ response = protoDecode(Protos.csgo.CFriendMessages_SendMessage_Response, result.data);
7684
+ } catch (e) {}
7685
+
7686
+ return response;
7687
+ }
7407
7688
  }
7408
7689
 
7409
7690
  SteamUser.MAX_RETRY = 10;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "steamutils",
3
- "version": "1.4.21",
3
+ "version": "1.4.23",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "alpha-common-utils": "^1.0.6",