steamutils 1.5.21 → 1.5.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. package/.idea/codeStyles/Project.xml +1 -0
  2. package/.idea/deployment.xml +14 -0
  3. package/.prettierrc.json +3 -3
  4. package/_steamproto.js +39 -39
  5. package/axios.js +84 -84
  6. package/bufferHelpers.js +115 -115
  7. package/cheerio.js +103 -103
  8. package/const.js +1 -0
  9. package/create_proto.js +96 -96
  10. package/full_steamproto.js +39 -39
  11. package/helpers/protos.js +48 -48
  12. package/index.js +3 -4
  13. package/package.json +1 -1
  14. package/protos/csgo/base_gcmessages.proto +553 -553
  15. package/protos/csgo/base_gcmessages_csgo.proto +547 -547
  16. package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
  17. package/protos/csgo/clientmessages.proto +48 -48
  18. package/protos/csgo/connectionless_netmessages.proto +17 -17
  19. package/protos/csgo/cs_gameevents.proto +35 -35
  20. package/protos/csgo/cs_usercmd.proto +34 -34
  21. package/protos/csgo/cstrike15_usermessages.proto +592 -592
  22. package/protos/csgo/demo.proto +165 -165
  23. package/protos/csgo/econ_gcmessages.proto +219 -219
  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/networkbasetypes.proto +246 -246
  31. package/protos/csgo/networksystem_protomessages.proto +17 -17
  32. package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
  33. package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
  34. package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
  35. package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
  36. package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
  37. package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
  38. package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
  39. package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
  40. package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
  41. package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
  42. package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
  43. package/protos/csgo/te.proto +259 -259
  44. package/protos/csgo/uifontfile_format.proto +13 -13
  45. package/protos/csgo/usercmd.proto +39 -39
  46. package/protos/csgo/usermessages.proto +752 -752
  47. package/protos/google/protobuf/descriptor.proto +281 -281
  48. package/protos/steam/clientmetrics.proto +45 -45
  49. package/protos/steam/content_manifest.proto +62 -62
  50. package/protos/steam/contenthubs.proto +41 -41
  51. package/protos/steam/encrypted_app_ticket.proto +10 -10
  52. package/protos/steam/enums.proto +501 -501
  53. package/protos/steam/enums_clientserver.proto +1508 -1508
  54. package/protos/steam/enums_productinfo.proto +14 -14
  55. package/protos/steam/htmlmessages.proto +1039 -1039
  56. package/protos/steam/offline_ticket.proto +8 -8
  57. package/protos/steam/steamdatagram_messages_auth.proto +65 -65
  58. package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
  59. package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
  60. package/protos/steam/steammessages_appoverview.proto +204 -204
  61. package/protos/steam/steammessages_auth.steamclient.proto +375 -375
  62. package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
  63. package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
  64. package/protos/steam/steammessages_client_objects.proto +649 -649
  65. package/protos/steam/steammessages_clientlanp2p.proto +43 -43
  66. package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
  67. package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
  68. package/protos/steam/steammessages_clientserver.proto +392 -392
  69. package/protos/steam/steammessages_clientserver_2.proto +771 -771
  70. package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
  71. package/protos/steam/steammessages_clientserver_friends.proto +260 -260
  72. package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
  73. package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
  74. package/protos/steam/steammessages_clientserver_login.proto +167 -167
  75. package/protos/steam/steammessages_clientserver_mms.proto +233 -233
  76. package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
  77. package/protos/steam/steammessages_clientserver_uds.proto +125 -125
  78. package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
  79. package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
  80. package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
  81. package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
  82. package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
  83. package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
  84. package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
  85. package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
  86. package/protos/steam/steammessages_econ.steamclient.proto +137 -137
  87. package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
  88. package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
  89. package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
  90. package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
  91. package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
  92. package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
  93. package/protos/steam/steammessages_hiddevices.proto +157 -157
  94. package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
  95. package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
  96. package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
  97. package/protos/steam/steammessages_market.steamclient.proto +22 -22
  98. package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
  99. package/protos/steam/steammessages_offline.steamclient.proto +33 -33
  100. package/protos/steam/steammessages_parental.steamclient.proto +262 -262
  101. package/protos/steam/steammessages_parties.steamclient.proto +75 -75
  102. package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
  103. package/protos/steam/steammessages_player.steamclient.proto +915 -915
  104. package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
  105. package/protos/steam/steammessages_qms.steamclient.proto +111 -111
  106. package/protos/steam/steammessages_remoteclient.proto +100 -100
  107. package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
  108. package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
  109. package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
  110. package/protos/steam/steammessages_remoteplay.proto +975 -975
  111. package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
  112. package/protos/steam/steammessages_shader.steamclient.proto +89 -89
  113. package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
  114. package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
  115. package/protos/steam/steammessages_siteserverui.proto +130 -130
  116. package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
  117. package/protos/steam/steammessages_store.steamclient.proto +404 -404
  118. package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
  119. package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
  120. package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
  121. package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
  122. package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
  123. package/protos/steam/steammessages_vac.steamclient.proto +37 -37
  124. package/protos/steam/steammessages_video.steamclient.proto +68 -68
  125. package/protos/steam/steammessages_virtualcontroller.proto +138 -138
  126. package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
  127. package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
  128. package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
  129. package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
  130. package/protos/steam/webuimessages_achievements.proto +29 -29
  131. package/protos/steam/webuimessages_gamenotes.proto +21 -21
  132. package/protos/steam/webuimessages_gamescope.proto +57 -57
  133. package/protos/steam/webuimessages_steamengine.proto +41 -41
  134. package/protos/steam/webuimessages_steamos.proto +114 -114
  135. package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
  136. package/protos/steam/webuimessages_systemmanager.proto +17 -17
  137. package/protos/steam/webuimessages_transport.proto +22 -22
  138. package/protos/steam/webuimessages_transportvalidation.proto +111 -111
  139. package/protos/webui/common.proto +4024 -4024
  140. package/protos/webui/service_accountcart.proto +153 -153
  141. package/protos/webui/service_accountlinking.proto +27 -27
  142. package/protos/webui/service_accountprivacy.proto +42 -42
  143. package/protos/webui/service_accountprivateapps.proto +34 -34
  144. package/protos/webui/service_auction.proto +97 -97
  145. package/protos/webui/service_authentication.proto +222 -222
  146. package/protos/webui/service_authenticationsupport.proto +74 -74
  147. package/protos/webui/service_broadcast.proto +562 -562
  148. package/protos/webui/service_chat.proto +11 -11
  149. package/protos/webui/service_chatroom.proto +810 -810
  150. package/protos/webui/service_chatusability.proto +107 -107
  151. package/protos/webui/service_checkout.proto +84 -84
  152. package/protos/webui/service_clan.proto +41 -41
  153. package/protos/webui/service_clanchatrooms.proto +25 -25
  154. package/protos/webui/service_clanfaqs.proto +202 -202
  155. package/protos/webui/service_clientcomm.proto +151 -151
  156. package/protos/webui/service_clientmetrics.proto +22 -22
  157. package/protos/webui/service_cloud.proto +222 -222
  158. package/protos/webui/service_cloudconfigstore.proto +51 -51
  159. package/protos/webui/service_cloudgaming.proto +30 -30
  160. package/protos/webui/service_community.proto +365 -365
  161. package/protos/webui/service_dailydeal.proto +89 -89
  162. package/protos/webui/service_econ.proto +134 -134
  163. package/protos/webui/service_embedded.proto +24 -24
  164. package/protos/webui/service_experimentservice.proto +6 -6
  165. package/protos/webui/service_familygroups.proto +355 -355
  166. package/protos/webui/service_fovasvideo.proto +15 -15
  167. package/protos/webui/service_friendmessages.proto +133 -133
  168. package/protos/webui/service_friendslist.proto +70 -70
  169. package/protos/webui/service_gamenotes.proto +15 -15
  170. package/protos/webui/service_gamerecording.proto +265 -265
  171. package/protos/webui/service_gamerecordingclip.proto +85 -85
  172. package/protos/webui/service_gamerecordingdebug.proto +52 -52
  173. package/protos/webui/service_helprequestlogs.proto +16 -16
  174. package/protos/webui/service_loyaltyrewards.proto +252 -252
  175. package/protos/webui/service_marketingmessages.proto +215 -215
  176. package/protos/webui/service_mobileapp.proto +18 -18
  177. package/protos/webui/service_mobileauth.proto +24 -24
  178. package/protos/webui/service_mobiledevice.proto +26 -26
  179. package/protos/webui/service_mobileperaccount.proto +31 -31
  180. package/protos/webui/service_news.proto +110 -110
  181. package/protos/webui/service_parental.proto +258 -258
  182. package/protos/webui/service_partnermembershipinvite.proto +34 -34
  183. package/protos/webui/service_partnerstorebrowse.proto +28 -28
  184. package/protos/webui/service_phone.proto +51 -51
  185. package/protos/webui/service_physicalgoods.proto +15 -15
  186. package/protos/webui/service_player.proto +918 -918
  187. package/protos/webui/service_promotioneventinvites.proto +109 -109
  188. package/protos/webui/service_promotionplanning.proto +186 -186
  189. package/protos/webui/service_promotionstats.proto +23 -23
  190. package/protos/webui/service_publishedfile.proto +714 -714
  191. package/protos/webui/service_publishing.proto +200 -200
  192. package/protos/webui/service_quest.proto +127 -127
  193. package/protos/webui/service_salefeature.proto +373 -373
  194. package/protos/webui/service_saleitemrewards.proto +54 -54
  195. package/protos/webui/service_shoppingcart.proto +152 -152
  196. package/protos/webui/service_steamawards.proto +76 -76
  197. package/protos/webui/service_steamcharts.proto +75 -75
  198. package/protos/webui/service_steamengine.proto +36 -36
  199. package/protos/webui/service_steamlearn.proto +876 -876
  200. package/protos/webui/service_steamnotification.proto +73 -73
  201. package/protos/webui/service_steamtv.proto +495 -495
  202. package/protos/webui/service_steamvrvoicechat.proto +67 -67
  203. package/protos/webui/service_steamvrwebrtc.proto +48 -48
  204. package/protos/webui/service_storagedevicemanager.proto +104 -104
  205. package/protos/webui/service_store.proto +359 -359
  206. package/protos/webui/service_storeappsimilarity.proto +76 -76
  207. package/protos/webui/service_storebrowse.proto +103 -103
  208. package/protos/webui/service_storemarketing.proto +44 -44
  209. package/protos/webui/service_storequery.proto +103 -103
  210. package/protos/webui/service_storesales.proto +87 -87
  211. package/protos/webui/service_storetopsellers.proto +44 -44
  212. package/protos/webui/service_systemmanager.proto +11 -11
  213. package/protos/webui/service_test_transporterror.proto +6 -6
  214. package/protos/webui/service_transportauth.proto +17 -17
  215. package/protos/webui/service_transportvalidation.proto +69 -69
  216. package/protos/webui/service_twofactor.proto +170 -170
  217. package/protos/webui/service_useraccount.proto +142 -142
  218. package/protos/webui/service_usergameactivity.proto +34 -34
  219. package/protos/webui/service_usergamenotes.proto +70 -70
  220. package/protos/webui/service_usernews.proto +68 -68
  221. package/protos/webui/service_userreviews.proto +97 -97
  222. package/protos/webui/service_video.proto +50 -50
  223. package/protos/webui/service_videoclip.proto +62 -62
  224. package/protos/webui/service_voicechat.proto +139 -139
  225. package/protos/webui/service_webrtc.proto +52 -52
  226. package/steamproto.js +146 -146
  227. package/utils.js +1234 -1234
  228. package/.idea/gbrowser_project.xml +0 -11
  229. package/.idea/git_toolbox_blame.xml +0 -6
  230. package/.idea/git_toolbox_prj.xml +0 -15
  231. package/race.js +0 -2241
package/cheerio.js CHANGED
@@ -1,103 +1,103 @@
1
- import * as cheerio from "cheerio";
2
-
3
- export function tables2json($, tables, getValue) {
4
- const tablesData = [];
5
- $(tables).each(function (index, el) {
6
- tablesData.push(table2json($, el, getValue));
7
- });
8
- return tablesData;
9
- }
10
-
11
- export function table2json(
12
- $,
13
- table,
14
- getValue = function ($, el) {
15
- return $(el).text().trim();
16
- },
17
- ) {
18
- const data = [];
19
- const header = [];
20
- $($(table)[0])
21
- .find("tr")
22
- .each(function (trIndex, trEl) {
23
- const tr = $(trEl);
24
- const row = [];
25
- tr.children().each(function (tdIndex, tdEl) {
26
- const isHeader = tdEl.name.toLowerCase() === "th";
27
- tdEl = $(tdEl);
28
- const tdContent = getValue($, tdEl, isHeader);
29
- (isHeader ? header : row).push(tdContent);
30
- });
31
- if (row.length) {
32
- data.push(row);
33
- }
34
- });
35
-
36
- if (!header.length) return data;
37
-
38
- for (let i = 0; i < data.length; i++) {
39
- const obj = {};
40
- for (let j = 0; j < header.length; j++) {
41
- obj[header[j]] = data[i][j];
42
- }
43
- data[i] = obj;
44
- }
45
-
46
- return data;
47
- }
48
-
49
- export function getTableHasHeaders($, $tables, headers = []) {
50
- headers = headers.slice();
51
- const tables = [];
52
- $($tables).each((tableIndex, tableEl) => {
53
- const _headers = headers.slice();
54
- let table;
55
- if (table) {
56
- return;
57
- }
58
- const $tableEl = $(tableEl);
59
- $tableEl
60
- .find("tr")
61
- .children()
62
- .each(function (trIndex, trEl) {
63
- if (table) {
64
- return;
65
- }
66
- const $trEl = $(trEl);
67
- let text = $trEl.text().trim();
68
-
69
- if (_headers.includes(text)) {
70
- _headers.splice(_headers.indexOf(text), 1);
71
-
72
- if (!_headers.length) {
73
- table = $tableEl;
74
- }
75
- }
76
- });
77
- if (table) {
78
- tables.push(table);
79
- }
80
- });
81
- return tables;
82
- }
83
-
84
- export function querySelectorAll($, selector, root) {
85
- try {
86
- if (root) {
87
- return [...root.find(selector)].map((el) => $(el));
88
- } else {
89
- return [...$(selector)].map((el) => $(el));
90
- }
91
- } catch (e) {
92
- console.error(e);
93
- return [];
94
- }
95
- }
96
-
97
- export function getDocumentTitle(html) {
98
- if (!html || typeof html !== "string") return;
99
- return cheerio
100
- .load(html.replaceAll(/[\t\n\r]/gi, "").trim())("head > title")
101
- .text()
102
- .trim();
103
- }
1
+ import * as cheerio from "cheerio";
2
+
3
+ export function tables2json($, tables, getValue) {
4
+ const tablesData = [];
5
+ $(tables).each(function (index, el) {
6
+ tablesData.push(table2json($, el, getValue));
7
+ });
8
+ return tablesData;
9
+ }
10
+
11
+ export function table2json(
12
+ $,
13
+ table,
14
+ getValue = function ($, el) {
15
+ return $(el).text().trim();
16
+ },
17
+ ) {
18
+ const data = [];
19
+ const header = [];
20
+ $($(table)[0])
21
+ .find("tr")
22
+ .each(function (trIndex, trEl) {
23
+ const tr = $(trEl);
24
+ const row = [];
25
+ tr.children().each(function (tdIndex, tdEl) {
26
+ const isHeader = tdEl.name.toLowerCase() === "th";
27
+ tdEl = $(tdEl);
28
+ const tdContent = getValue($, tdEl, isHeader);
29
+ (isHeader ? header : row).push(tdContent);
30
+ });
31
+ if (row.length) {
32
+ data.push(row);
33
+ }
34
+ });
35
+
36
+ if (!header.length) return data;
37
+
38
+ for (let i = 0; i < data.length; i++) {
39
+ const obj = {};
40
+ for (let j = 0; j < header.length; j++) {
41
+ obj[header[j]] = data[i][j];
42
+ }
43
+ data[i] = obj;
44
+ }
45
+
46
+ return data;
47
+ }
48
+
49
+ export function getTableHasHeaders($, $tables, headers = []) {
50
+ headers = headers.slice();
51
+ const tables = [];
52
+ $($tables).each((tableIndex, tableEl) => {
53
+ const _headers = headers.slice();
54
+ let table;
55
+ if (table) {
56
+ return;
57
+ }
58
+ const $tableEl = $(tableEl);
59
+ $tableEl
60
+ .find("tr")
61
+ .children()
62
+ .each(function (trIndex, trEl) {
63
+ if (table) {
64
+ return;
65
+ }
66
+ const $trEl = $(trEl);
67
+ let text = $trEl.text().trim();
68
+
69
+ if (_headers.includes(text)) {
70
+ _headers.splice(_headers.indexOf(text), 1);
71
+
72
+ if (!_headers.length) {
73
+ table = $tableEl;
74
+ }
75
+ }
76
+ });
77
+ if (table) {
78
+ tables.push(table);
79
+ }
80
+ });
81
+ return tables;
82
+ }
83
+
84
+ export function querySelectorAll($, selector, root) {
85
+ try {
86
+ if (root) {
87
+ return [...root.find(selector)].map((el) => $(el));
88
+ } else {
89
+ return [...$(selector)].map((el) => $(el));
90
+ }
91
+ } catch (e) {
92
+ console.error(e);
93
+ return [];
94
+ }
95
+ }
96
+
97
+ export function getDocumentTitle(html) {
98
+ if (!html || typeof html !== "string") return;
99
+ return cheerio
100
+ .load(html.replaceAll(/[\t\n\r]/gi, "").trim())("head > title")
101
+ .text()
102
+ .trim();
103
+ }
package/const.js CHANGED
@@ -3,6 +3,7 @@ export const MatchHistoryType = {
3
3
  matchhistorycompetitive: "matchhistorycompetitive",
4
4
  matchhistorypremier: "matchhistorypremier",
5
5
  matchhistorycompetitivepermap: "matchhistorycompetitivepermap",
6
+ matchhistorywingman: "matchhistorywingman",
6
7
  };
7
8
 
8
9
  export const MatchWinLose = {
package/create_proto.js CHANGED
@@ -1,96 +1,96 @@
1
- import helpers, { loadProfos } from "./helpers/protos.js";
2
- import path from "path";
3
- import { fileURLToPath } from "url";
4
- import Protobuf from "protobufjs";
5
- import fs from "fs";
6
-
7
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
- const shortfileName = "steamproto.js";
9
- const fullfileName = "full_steamproto.js";
10
-
11
- function main() {
12
- const rootDir = `${__dirname}/protos/`;
13
- const Protos = helpers([
14
- {
15
- name: "csgo",
16
- protos: loadProfos(rootDir),
17
- },
18
- ]);
19
-
20
- const content = fs.readFileSync("_steamproto.js", { encoding: "utf8", flag: "r" });
21
-
22
- fs.writeFileSync(shortfileName, `${content}\nexport const SteamProtoType = {};export const ESteamProto = {};`);
23
- fs.writeFileSync(fullfileName, `${content}\nexport const SteamProtoType = {};export const ESteamProto = {};`);
24
-
25
- for (const key in Protos.csgo) {
26
- let csgo = Protos.csgo[key];
27
- if (typeof csgo === "function" || typeof csgo === "boolean" || typeof csgo === "string" || Array.isArray(csgo) || csgo === null) {
28
- continue;
29
- }
30
-
31
- if (csgo instanceof Protobuf.Type) {
32
- const fields = {};
33
- for (const fieldsKey in csgo.fields) {
34
- fields[fieldsKey] = fieldsKey;
35
- }
36
-
37
- const filename = path.relative(rootDir, csgo.filename);
38
- const text = `SteamProtoType.${key} = ${JSON.stringify({ name: csgo.name, filename })};`;
39
- fs.appendFileSync(fullfileName, text);
40
- if (hasKeyDir(key, __dirname)) {
41
- fs.appendFileSync(shortfileName, text);
42
- }
43
- } else {
44
- for (const csgoKey in csgo) {
45
- if (csgo[csgoKey] instanceof Protobuf.Enum) {
46
- const values = csgo[csgoKey].values;
47
- fs.appendFileSync(fullfileName, `ESteamProto.${csgoKey} = ${JSON.stringify(values)};`);
48
-
49
- for (const valuesKey in values) {
50
- if (!hasKeyDir(`${csgoKey}.${valuesKey}`, __dirname)) {
51
- delete values[valuesKey];
52
- }
53
- }
54
- if (Object.keys(values).length) {
55
- fs.appendFileSync(shortfileName, `ESteamProto.${csgoKey} = ${JSON.stringify(values)};`);
56
- }
57
- }
58
- }
59
- }
60
- }
61
- }
62
-
63
- const ignoreFiles = ["create_remote_file.js", shortfileName, fullfileName];
64
-
65
- export function hasKeyDir(key, dir) {
66
- const currentDir = fs.readdirSync(dir);
67
- for (const currentFile of currentDir) {
68
- if (!["SteamClient.js", "index.js"].includes(currentFile)) {
69
- continue;
70
- }
71
-
72
- const _dir = path.join(dir, currentFile);
73
- const isDirectory = fs.lstatSync(_dir).isDirectory();
74
- if (isDirectory) {
75
- if (currentFile !== "node_modules") {
76
- if (hasKeyDir(key, _dir)) {
77
- return true;
78
- }
79
- }
80
- } else {
81
- if (currentFile.endsWith(".js") && !ignoreFiles.includes(currentFile)) {
82
- if (hasKeyFile(key, _dir)) {
83
- return true;
84
- }
85
- }
86
- }
87
- }
88
- return false;
89
- }
90
-
91
- export function hasKeyFile(key, file) {
92
- const content = fs.readFileSync(file);
93
- return content.includes(key);
94
- }
95
-
96
- main();
1
+ import helpers, { loadProfos } from "./helpers/protos.js";
2
+ import path from "path";
3
+ import { fileURLToPath } from "url";
4
+ import Protobuf from "protobufjs";
5
+ import fs from "fs";
6
+
7
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
+ const shortfileName = "steamproto.js";
9
+ const fullfileName = "full_steamproto.js";
10
+
11
+ function main() {
12
+ const rootDir = `${__dirname}/protos/`;
13
+ const Protos = helpers([
14
+ {
15
+ name: "csgo",
16
+ protos: loadProfos(rootDir),
17
+ },
18
+ ]);
19
+
20
+ const content = fs.readFileSync("_steamproto.js", { encoding: "utf8", flag: "r" });
21
+
22
+ fs.writeFileSync(shortfileName, `${content}\nexport const SteamProtoType = {};export const ESteamProto = {};`);
23
+ fs.writeFileSync(fullfileName, `${content}\nexport const SteamProtoType = {};export const ESteamProto = {};`);
24
+
25
+ for (const key in Protos.csgo) {
26
+ let csgo = Protos.csgo[key];
27
+ if (typeof csgo === "function" || typeof csgo === "boolean" || typeof csgo === "string" || Array.isArray(csgo) || csgo === null) {
28
+ continue;
29
+ }
30
+
31
+ if (csgo instanceof Protobuf.Type) {
32
+ const fields = {};
33
+ for (const fieldsKey in csgo.fields) {
34
+ fields[fieldsKey] = fieldsKey;
35
+ }
36
+
37
+ const filename = path.relative(rootDir, csgo.filename);
38
+ const text = `SteamProtoType.${key} = ${JSON.stringify({ name: csgo.name, filename })};`;
39
+ fs.appendFileSync(fullfileName, text);
40
+ if (hasKeyDir(key, __dirname)) {
41
+ fs.appendFileSync(shortfileName, text);
42
+ }
43
+ } else {
44
+ for (const csgoKey in csgo) {
45
+ if (csgo[csgoKey] instanceof Protobuf.Enum) {
46
+ const values = csgo[csgoKey].values;
47
+ fs.appendFileSync(fullfileName, `ESteamProto.${csgoKey} = ${JSON.stringify(values)};`);
48
+
49
+ for (const valuesKey in values) {
50
+ if (!hasKeyDir(`${csgoKey}.${valuesKey}`, __dirname)) {
51
+ delete values[valuesKey];
52
+ }
53
+ }
54
+ if (Object.keys(values).length) {
55
+ fs.appendFileSync(shortfileName, `ESteamProto.${csgoKey} = ${JSON.stringify(values)};`);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ const ignoreFiles = ["create_remote_file.js", shortfileName, fullfileName];
64
+
65
+ export function hasKeyDir(key, dir) {
66
+ const currentDir = fs.readdirSync(dir);
67
+ for (const currentFile of currentDir) {
68
+ if (!["SteamClient.js", "index.js"].includes(currentFile)) {
69
+ continue;
70
+ }
71
+
72
+ const _dir = path.join(dir, currentFile);
73
+ const isDirectory = fs.lstatSync(_dir).isDirectory();
74
+ if (isDirectory) {
75
+ if (currentFile !== "node_modules") {
76
+ if (hasKeyDir(key, _dir)) {
77
+ return true;
78
+ }
79
+ }
80
+ } else {
81
+ if (currentFile.endsWith(".js") && !ignoreFiles.includes(currentFile)) {
82
+ if (hasKeyFile(key, _dir)) {
83
+ return true;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ return false;
89
+ }
90
+
91
+ export function hasKeyFile(key, file) {
92
+ const content = fs.readFileSync(file);
93
+ return content.includes(key);
94
+ }
95
+
96
+ main();