steamutils 1.4.2 → 1.4.3

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 (238) hide show
  1. package/.idea/codeStyles/Project.xml +0 -1
  2. package/.prettierrc.json +3 -3
  3. package/SteamClient.js +2468 -2418
  4. package/bufferHelpers.js +115 -115
  5. package/cheerio.js +103 -103
  6. package/const.js +336 -336
  7. package/create_remote_file.js +66 -66
  8. package/index.js +7350 -7350
  9. package/package.json +1 -1
  10. package/protos/csgo/base_gcmessages.proto +553 -553
  11. package/protos/csgo/base_gcmessages_csgo.proto +547 -547
  12. package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
  13. package/protos/csgo/clientmessages.proto +48 -48
  14. package/protos/csgo/connectionless_netmessages.proto +17 -17
  15. package/protos/csgo/cs_gameevents.proto +35 -35
  16. package/protos/csgo/cs_usercmd.proto +34 -34
  17. package/protos/csgo/cstrike15_gcmessages.proto +1431 -1431
  18. package/protos/csgo/cstrike15_usermessages.proto +592 -592
  19. package/protos/csgo/demo.proto +165 -165
  20. package/protos/csgo/econ_gcmessages.proto +219 -219
  21. package/protos/csgo/engine_gcmessages.proto +14 -14
  22. package/protos/csgo/enums_clientserver.proto +1529 -1529
  23. package/protos/csgo/fatdemo.proto +125 -125
  24. package/protos/csgo/gameevents.proto +120 -120
  25. package/protos/csgo/gcsdk_gcmessages.proto +323 -323
  26. package/protos/csgo/gcsystemmsgs.proto +243 -243
  27. package/protos/csgo/netmessages.proto +618 -618
  28. package/protos/csgo/network_connection.proto +126 -126
  29. package/protos/csgo/networkbasetypes.proto +246 -246
  30. package/protos/csgo/networksystem_protomessages.proto +17 -17
  31. package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
  32. package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
  33. package/protos/csgo/steammessages.proto +620 -620
  34. package/protos/csgo/steammessages_base.proto +301 -301
  35. package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
  36. package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
  37. package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
  38. package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
  39. package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
  40. package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
  41. package/protos/csgo/steammessages_unified_base.steamworkssdk.proto +30 -30
  42. package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
  43. package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
  44. package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
  45. package/protos/csgo/te.proto +259 -259
  46. package/protos/csgo/uifontfile_format.proto +13 -13
  47. package/protos/csgo/usercmd.proto +39 -39
  48. package/protos/csgo/usermessages.proto +752 -752
  49. package/protos/csgo/valveextensions.proto +17 -17
  50. package/protos/google/protobuf/descriptor.proto +281 -281
  51. package/protos/steam/clientmetrics.proto +45 -45
  52. package/protos/steam/content_manifest.proto +62 -62
  53. package/protos/steam/contenthubs.proto +41 -41
  54. package/protos/steam/encrypted_app_ticket.proto +10 -10
  55. package/protos/steam/enums.proto +501 -501
  56. package/protos/steam/enums_clientserver.proto +1508 -1508
  57. package/protos/steam/enums_productinfo.proto +14 -14
  58. package/protos/steam/htmlmessages.proto +1039 -1039
  59. package/protos/steam/offline_ticket.proto +8 -8
  60. package/protos/steam/steamdatagram_messages_auth.proto +65 -65
  61. package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
  62. package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
  63. package/protos/steam/steammessages_appoverview.proto +204 -204
  64. package/protos/steam/steammessages_auth.steamclient.proto +375 -375
  65. package/protos/steam/steammessages_base.proto +335 -335
  66. package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
  67. package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
  68. package/protos/steam/steammessages_client_objects.proto +649 -649
  69. package/protos/steam/steammessages_clientlanp2p.proto +43 -43
  70. package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
  71. package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
  72. package/protos/steam/steammessages_clientserver.proto +392 -392
  73. package/protos/steam/steammessages_clientserver_2.proto +771 -771
  74. package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
  75. package/protos/steam/steammessages_clientserver_friends.proto +260 -260
  76. package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
  77. package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
  78. package/protos/steam/steammessages_clientserver_login.proto +167 -167
  79. package/protos/steam/steammessages_clientserver_mms.proto +233 -233
  80. package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
  81. package/protos/steam/steammessages_clientserver_uds.proto +125 -125
  82. package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
  83. package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
  84. package/protos/steam/steammessages_clientsettings.proto +208 -208
  85. package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
  86. package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
  87. package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
  88. package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
  89. package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
  90. package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
  91. package/protos/steam/steammessages_econ.steamclient.proto +137 -137
  92. package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
  93. package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
  94. package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
  95. package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
  96. package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
  97. package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
  98. package/protos/steam/steammessages_hiddevices.proto +157 -157
  99. package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
  100. package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
  101. package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
  102. package/protos/steam/steammessages_market.steamclient.proto +22 -22
  103. package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
  104. package/protos/steam/steammessages_offline.steamclient.proto +33 -33
  105. package/protos/steam/steammessages_parental.steamclient.proto +262 -262
  106. package/protos/steam/steammessages_parties.steamclient.proto +75 -75
  107. package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
  108. package/protos/steam/steammessages_player.steamclient.proto +915 -915
  109. package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
  110. package/protos/steam/steammessages_qms.steamclient.proto +111 -111
  111. package/protos/steam/steammessages_remoteclient.proto +100 -100
  112. package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
  113. package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
  114. package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
  115. package/protos/steam/steammessages_remoteplay.proto +975 -975
  116. package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
  117. package/protos/steam/steammessages_shader.steamclient.proto +89 -89
  118. package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
  119. package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
  120. package/protos/steam/steammessages_siteserverui.proto +130 -130
  121. package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
  122. package/protos/steam/steammessages_store.steamclient.proto +404 -404
  123. package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
  124. package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
  125. package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
  126. package/protos/steam/steammessages_unified_base.steamclient.proto +45 -45
  127. package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
  128. package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
  129. package/protos/steam/steammessages_vac.steamclient.proto +37 -37
  130. package/protos/steam/steammessages_video.steamclient.proto +68 -68
  131. package/protos/steam/steammessages_virtualcontroller.proto +138 -138
  132. package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
  133. package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
  134. package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
  135. package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
  136. package/protos/steam/webuimessages_achievements.proto +29 -29
  137. package/protos/steam/webuimessages_base.proto +24 -24
  138. package/protos/steam/webuimessages_gamenotes.proto +21 -21
  139. package/protos/steam/webuimessages_gamescope.proto +57 -57
  140. package/protos/steam/webuimessages_steamengine.proto +41 -41
  141. package/protos/steam/webuimessages_steamos.proto +114 -114
  142. package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
  143. package/protos/steam/webuimessages_systemmanager.proto +17 -17
  144. package/protos/steam/webuimessages_transport.proto +22 -22
  145. package/protos/steam/webuimessages_transportvalidation.proto +111 -111
  146. package/protos/webui/common.proto +4024 -4024
  147. package/protos/webui/common_base.proto +27 -27
  148. package/protos/webui/service_accountcart.proto +153 -153
  149. package/protos/webui/service_accountlinking.proto +27 -27
  150. package/protos/webui/service_accountprivacy.proto +42 -42
  151. package/protos/webui/service_accountprivateapps.proto +34 -34
  152. package/protos/webui/service_auction.proto +97 -97
  153. package/protos/webui/service_authentication.proto +222 -222
  154. package/protos/webui/service_authenticationsupport.proto +74 -74
  155. package/protos/webui/service_broadcast.proto +562 -562
  156. package/protos/webui/service_chat.proto +11 -11
  157. package/protos/webui/service_chatroom.proto +810 -810
  158. package/protos/webui/service_chatusability.proto +107 -107
  159. package/protos/webui/service_checkout.proto +84 -84
  160. package/protos/webui/service_clan.proto +41 -41
  161. package/protos/webui/service_clanchatrooms.proto +25 -25
  162. package/protos/webui/service_clanfaqs.proto +202 -202
  163. package/protos/webui/service_clientcomm.proto +151 -151
  164. package/protos/webui/service_clientmetrics.proto +22 -22
  165. package/protos/webui/service_cloud.proto +222 -222
  166. package/protos/webui/service_cloudconfigstore.proto +51 -51
  167. package/protos/webui/service_cloudgaming.proto +30 -30
  168. package/protos/webui/service_community.proto +365 -365
  169. package/protos/webui/service_dailydeal.proto +89 -89
  170. package/protos/webui/service_econ.proto +134 -134
  171. package/protos/webui/service_embedded.proto +24 -24
  172. package/protos/webui/service_experimentservice.proto +6 -6
  173. package/protos/webui/service_familygroups.proto +355 -355
  174. package/protos/webui/service_fovasvideo.proto +15 -15
  175. package/protos/webui/service_friendmessages.proto +133 -133
  176. package/protos/webui/service_friendslist.proto +70 -70
  177. package/protos/webui/service_gamenotes.proto +15 -15
  178. package/protos/webui/service_gamerecording.proto +265 -265
  179. package/protos/webui/service_gamerecordingclip.proto +85 -85
  180. package/protos/webui/service_gamerecordingdebug.proto +52 -52
  181. package/protos/webui/service_helprequestlogs.proto +16 -16
  182. package/protos/webui/service_loyaltyrewards.proto +252 -252
  183. package/protos/webui/service_marketingmessages.proto +215 -215
  184. package/protos/webui/service_mobileapp.proto +18 -18
  185. package/protos/webui/service_mobileauth.proto +24 -24
  186. package/protos/webui/service_mobiledevice.proto +26 -26
  187. package/protos/webui/service_mobileperaccount.proto +31 -31
  188. package/protos/webui/service_news.proto +110 -110
  189. package/protos/webui/service_parental.proto +258 -258
  190. package/protos/webui/service_partnermembershipinvite.proto +34 -34
  191. package/protos/webui/service_partnerstorebrowse.proto +28 -28
  192. package/protos/webui/service_phone.proto +51 -51
  193. package/protos/webui/service_physicalgoods.proto +15 -15
  194. package/protos/webui/service_player.proto +918 -918
  195. package/protos/webui/service_promotioneventinvites.proto +109 -109
  196. package/protos/webui/service_promotionplanning.proto +186 -186
  197. package/protos/webui/service_promotionstats.proto +23 -23
  198. package/protos/webui/service_publishedfile.proto +714 -714
  199. package/protos/webui/service_publishing.proto +200 -200
  200. package/protos/webui/service_quest.proto +127 -127
  201. package/protos/webui/service_salefeature.proto +373 -373
  202. package/protos/webui/service_saleitemrewards.proto +54 -54
  203. package/protos/webui/service_shoppingcart.proto +152 -152
  204. package/protos/webui/service_steamawards.proto +76 -76
  205. package/protos/webui/service_steamcharts.proto +75 -75
  206. package/protos/webui/service_steamengine.proto +36 -36
  207. package/protos/webui/service_steamlearn.proto +876 -876
  208. package/protos/webui/service_steamnotification.proto +73 -73
  209. package/protos/webui/service_steamtv.proto +495 -495
  210. package/protos/webui/service_steamvrvoicechat.proto +67 -67
  211. package/protos/webui/service_steamvrwebrtc.proto +48 -48
  212. package/protos/webui/service_storagedevicemanager.proto +104 -104
  213. package/protos/webui/service_store.proto +359 -359
  214. package/protos/webui/service_storeappsimilarity.proto +76 -76
  215. package/protos/webui/service_storebrowse.proto +103 -103
  216. package/protos/webui/service_storemarketing.proto +44 -44
  217. package/protos/webui/service_storequery.proto +103 -103
  218. package/protos/webui/service_storesales.proto +87 -87
  219. package/protos/webui/service_storetopsellers.proto +44 -44
  220. package/protos/webui/service_systemmanager.proto +11 -11
  221. package/protos/webui/service_test_transporterror.proto +6 -6
  222. package/protos/webui/service_transportauth.proto +17 -17
  223. package/protos/webui/service_transportvalidation.proto +69 -69
  224. package/protos/webui/service_twofactor.proto +170 -170
  225. package/protos/webui/service_useraccount.proto +142 -142
  226. package/protos/webui/service_usergameactivity.proto +34 -34
  227. package/protos/webui/service_usergamenotes.proto +70 -70
  228. package/protos/webui/service_usernews.proto +68 -68
  229. package/protos/webui/service_userreviews.proto +97 -97
  230. package/protos/webui/service_video.proto +50 -50
  231. package/protos/webui/service_videoclip.proto +62 -62
  232. package/protos/webui/service_voicechat.proto +139 -139
  233. package/protos/webui/service_webrtc.proto +52 -52
  234. package/remote.js +6259 -6259
  235. package/utils.js +155 -155
  236. package/.idea/deployment.xml +0 -14
  237. package/.idea/jsLibraryMappings.xml +0 -6
  238. package/test_steamclient.js +0 -20
package/utils.js CHANGED
@@ -1,155 +1,155 @@
1
- const isBrowser = typeof window !== "undefined";
2
-
3
- export const sleep = (ms) => {
4
- return new Promise((resolve) => {
5
- setTimeout(resolve, ms);
6
- });
7
- };
8
-
9
- export const sleepRandom = async (startMs, endMs) => {
10
- return await sleep(Math.random() * (endMs - startMs) + startMs);
11
- };
12
-
13
- /**
14
- * const audioTrack = stream.getAudioTracks()[0]
15
- * const videoStream = UserMedia.createBlankVideoTrack()
16
- * videoStream.addTrack(audioTrack)
17
- * stream = videoStream
18
- * **/
19
- export const createBlankVideoTrack = (opts = {}) => {
20
- const { width = 1920, height = 1080 } = opts;
21
-
22
- const canvas = Object.assign(document.createElement("canvas"), {
23
- width,
24
- height,
25
- });
26
-
27
- canvas.getContext("2d").fillRect(0, 0, width, height);
28
-
29
- return canvas.captureStream();
30
- };
31
-
32
- const minDate = new Date(0),
33
- maxDate = new Date(parseInt("ffffffff", 16) * 1000);
34
-
35
- export function objectIdFromDate(date) {
36
- if (date < minDate || date > maxDate) {
37
- return `Error: date must be between ${minDate.getFullYear()} and ${maxDate.getFullYear()}`;
38
- }
39
- var pad = "00000000";
40
- var hexSeconds = Math.floor(date.getTime() / 1000).toString(16);
41
- return `${pad.substring(0, pad.length - hexSeconds.length) + hexSeconds}0000000000000000`;
42
- }
43
-
44
- export function dateFromObjectId(objectId) {
45
- return new Date(parseInt(objectId.substring(0, 8), 16) * 1000);
46
- }
47
-
48
- export function console_log(...args) {
49
- const params = [];
50
- params.push(new Date().toUTCString());
51
- const errorStack = new Error().stack;
52
- const fnName = errorStack
53
- .split("\n")
54
- .map((e) => e?.trim())
55
- .filter((e) => e.startsWith("at") && !e.startsWith("at console_log") && !e.startsWith("at processTicksAndRejections"))[0]
56
- .substr(3);
57
- params.push(fnName);
58
- console.log(
59
- params
60
- .filter(Boolean)
61
- .map((p) => `[${p.trim()}]`)
62
- .join(" "),
63
- ...args,
64
- );
65
- }
66
-
67
- export function removeSpaceKeys(object) {
68
- //mutate object
69
- if (!object || Array.isArray(object)) {
70
- return object;
71
- }
72
-
73
- Object.entries(object).forEach(([key, value]) => {
74
- const newKey = key.replaceAll(/[^a-zA-Z0-9]/gi, "_");
75
- if (newKey !== key) {
76
- delete object[key];
77
- object[newKey] = value;
78
- }
79
- });
80
- return object;
81
- }
82
-
83
- export function getCleanObject(object) {
84
- //like removeSpaceKeys but not mutate object
85
- if (!object || Array.isArray(object)) {
86
- return object;
87
- }
88
-
89
- const newObject = {};
90
- Object.entries(object).forEach(([key, value]) => {
91
- const newKey = key.replaceAll(/[^a-zA-Z0-9]/gi, "_");
92
- newObject[newKey] = value;
93
- });
94
- return newObject;
95
- }
96
-
97
- export function JSON_parse(data) {
98
- try {
99
- return JSON.parse(data);
100
- } catch (e) {
101
- return null;
102
- }
103
- }
104
-
105
- export function JSON_stringify(data) {
106
- try {
107
- return JSON.stringify(data);
108
- } catch (e) {
109
- return null;
110
- }
111
- }
112
-
113
- export async function throttle(fn, delay) {
114
- let canFire = true;
115
- let queue = [];
116
-
117
- async function pop() {
118
- if (queue.length < 1) return;
119
-
120
- const [that, args] = queue.pop();
121
- await fn.apply(that, args);
122
- canFire = false;
123
- setTimeout(async () => {
124
- canFire = true;
125
- await pop();
126
- }, delay);
127
- }
128
-
129
- async function push() {
130
- queue.push([this, arguments]);
131
- if (canFire) {
132
- await pop();
133
- }
134
- }
135
-
136
- push.cancel = () => {
137
- queue = [];
138
- };
139
-
140
- return push;
141
- }
142
-
143
- export const secretAsBuffer = (sharedSecret) => {
144
- if (Buffer.isBuffer(sharedSecret)) {
145
- return sharedSecret;
146
- }
147
-
148
- if (sharedSecret.match(/^[0-9a-f]{40}$/i)) {
149
- // Looks like it's hex
150
- return Buffer.from(sharedSecret, "hex");
151
- }
152
-
153
- // It must be base64
154
- return Buffer.from(sharedSecret, "base64");
155
- };
1
+ const isBrowser = typeof window !== "undefined";
2
+
3
+ export const sleep = (ms) => {
4
+ return new Promise((resolve) => {
5
+ setTimeout(resolve, ms);
6
+ });
7
+ };
8
+
9
+ export const sleepRandom = async (startMs, endMs) => {
10
+ return await sleep(Math.random() * (endMs - startMs) + startMs);
11
+ };
12
+
13
+ /**
14
+ * const audioTrack = stream.getAudioTracks()[0]
15
+ * const videoStream = UserMedia.createBlankVideoTrack()
16
+ * videoStream.addTrack(audioTrack)
17
+ * stream = videoStream
18
+ * **/
19
+ export const createBlankVideoTrack = (opts = {}) => {
20
+ const { width = 1920, height = 1080 } = opts;
21
+
22
+ const canvas = Object.assign(document.createElement("canvas"), {
23
+ width,
24
+ height,
25
+ });
26
+
27
+ canvas.getContext("2d").fillRect(0, 0, width, height);
28
+
29
+ return canvas.captureStream();
30
+ };
31
+
32
+ const minDate = new Date(0),
33
+ maxDate = new Date(parseInt("ffffffff", 16) * 1000);
34
+
35
+ export function objectIdFromDate(date) {
36
+ if (date < minDate || date > maxDate) {
37
+ return `Error: date must be between ${minDate.getFullYear()} and ${maxDate.getFullYear()}`;
38
+ }
39
+ var pad = "00000000";
40
+ var hexSeconds = Math.floor(date.getTime() / 1000).toString(16);
41
+ return `${pad.substring(0, pad.length - hexSeconds.length) + hexSeconds}0000000000000000`;
42
+ }
43
+
44
+ export function dateFromObjectId(objectId) {
45
+ return new Date(parseInt(objectId.substring(0, 8), 16) * 1000);
46
+ }
47
+
48
+ export function console_log(...args) {
49
+ const params = [];
50
+ params.push(new Date().toUTCString());
51
+ const errorStack = new Error().stack;
52
+ const fnName = errorStack
53
+ .split("\n")
54
+ .map((e) => e?.trim())
55
+ .filter((e) => e.startsWith("at") && !e.startsWith("at console_log") && !e.startsWith("at processTicksAndRejections"))[0]
56
+ .substr(3);
57
+ params.push(fnName);
58
+ console.log(
59
+ params
60
+ .filter(Boolean)
61
+ .map((p) => `[${p.trim()}]`)
62
+ .join(" "),
63
+ ...args,
64
+ );
65
+ }
66
+
67
+ export function removeSpaceKeys(object) {
68
+ //mutate object
69
+ if (!object || Array.isArray(object)) {
70
+ return object;
71
+ }
72
+
73
+ Object.entries(object).forEach(([key, value]) => {
74
+ const newKey = key.replaceAll(/[^a-zA-Z0-9]/gi, "_");
75
+ if (newKey !== key) {
76
+ delete object[key];
77
+ object[newKey] = value;
78
+ }
79
+ });
80
+ return object;
81
+ }
82
+
83
+ export function getCleanObject(object) {
84
+ //like removeSpaceKeys but not mutate object
85
+ if (!object || Array.isArray(object)) {
86
+ return object;
87
+ }
88
+
89
+ const newObject = {};
90
+ Object.entries(object).forEach(([key, value]) => {
91
+ const newKey = key.replaceAll(/[^a-zA-Z0-9]/gi, "_");
92
+ newObject[newKey] = value;
93
+ });
94
+ return newObject;
95
+ }
96
+
97
+ export function JSON_parse(data) {
98
+ try {
99
+ return JSON.parse(data);
100
+ } catch (e) {
101
+ return null;
102
+ }
103
+ }
104
+
105
+ export function JSON_stringify(data) {
106
+ try {
107
+ return JSON.stringify(data);
108
+ } catch (e) {
109
+ return null;
110
+ }
111
+ }
112
+
113
+ export async function throttle(fn, delay) {
114
+ let canFire = true;
115
+ let queue = [];
116
+
117
+ async function pop() {
118
+ if (queue.length < 1) return;
119
+
120
+ const [that, args] = queue.pop();
121
+ await fn.apply(that, args);
122
+ canFire = false;
123
+ setTimeout(async () => {
124
+ canFire = true;
125
+ await pop();
126
+ }, delay);
127
+ }
128
+
129
+ async function push() {
130
+ queue.push([this, arguments]);
131
+ if (canFire) {
132
+ await pop();
133
+ }
134
+ }
135
+
136
+ push.cancel = () => {
137
+ queue = [];
138
+ };
139
+
140
+ return push;
141
+ }
142
+
143
+ export const secretAsBuffer = (sharedSecret) => {
144
+ if (Buffer.isBuffer(sharedSecret)) {
145
+ return sharedSecret;
146
+ }
147
+
148
+ if (sharedSecret.match(/^[0-9a-f]{40}$/i)) {
149
+ // Looks like it's hex
150
+ return Buffer.from(sharedSecret, "hex");
151
+ }
152
+
153
+ // It must be base64
154
+ return Buffer.from(sharedSecret, "base64");
155
+ };
@@ -1,14 +0,0 @@
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>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="JavaScriptLibraryMappings">
4
- <includedPredefinedLibrary name="Node.js Core" />
5
- </component>
6
- </project>
@@ -1,20 +0,0 @@
1
- import SteamClient from "./SteamClient.js";
2
-
3
- async function fetchPlayerProfile() {}
4
-
5
- async function main() {
6
- const steamClient = new SteamClient({
7
- cookie: "",
8
- isAutoPlay: true,
9
- isInvisible: true,
10
- });
11
- steamClient.onEvent("csgoOnline", function (data) {
12
- const storeItems = data.personalStore.items.map(function (item) {
13
- return data.items[item];
14
- });
15
- console.log(storeItems);
16
- });
17
- steamClient.init();
18
- }
19
-
20
- main();