vantiv.io 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +864 -0
  3. package/index.js +13 -0
  4. package/package.json +28 -0
  5. package/src/classes/Actions/Awaiter.js +202 -0
  6. package/src/classes/Actions/Channel.js +73 -0
  7. package/src/classes/Actions/Direct.js +263 -0
  8. package/src/classes/Actions/Inventory.js +156 -0
  9. package/src/classes/Actions/Music.js +278 -0
  10. package/src/classes/Actions/Player.js +377 -0
  11. package/src/classes/Actions/Public.js +66 -0
  12. package/src/classes/Actions/Room.js +333 -0
  13. package/src/classes/Actions/Utils.js +29 -0
  14. package/src/classes/Actions/lib/AudioStreaming.js +447 -0
  15. package/src/classes/Caches/MovementCache.js +357 -0
  16. package/src/classes/Handlers/AxiosErrorHandler.js +68 -0
  17. package/src/classes/Handlers/ErrorHandler.js +65 -0
  18. package/src/classes/Handlers/EventHandlers.js +259 -0
  19. package/src/classes/Handlers/WebSocketHandlers.js +54 -0
  20. package/src/classes/Managers/ChannelManager.js +303 -0
  21. package/src/classes/Managers/DanceFloorManagers.js +509 -0
  22. package/src/classes/Managers/Helpers/CleanupManager.js +130 -0
  23. package/src/classes/Managers/Helpers/LoggerManager.js +171 -0
  24. package/src/classes/Managers/Helpers/MetricsManager.js +83 -0
  25. package/src/classes/Managers/Networking/ConnectionManager.js +259 -0
  26. package/src/classes/Managers/Networking/CooldownManager.js +516 -0
  27. package/src/classes/Managers/Networking/EventsManager.js +64 -0
  28. package/src/classes/Managers/Networking/KeepAliveManager.js +109 -0
  29. package/src/classes/Managers/Networking/MessageHandler.js +110 -0
  30. package/src/classes/Managers/Networking/Request.js +329 -0
  31. package/src/classes/Managers/PermissionManager.js +288 -0
  32. package/src/classes/WebApi/Category/Grab.js +98 -0
  33. package/src/classes/WebApi/Category/Item.js +347 -0
  34. package/src/classes/WebApi/Category/Post.js +154 -0
  35. package/src/classes/WebApi/Category/Room.js +137 -0
  36. package/src/classes/WebApi/Category/User.js +88 -0
  37. package/src/classes/WebApi/webapi.js +52 -0
  38. package/src/constants/TypesConstants.js +89 -0
  39. package/src/constants/WebSocketConstants.js +80 -0
  40. package/src/core/Highrise.js +123 -0
  41. package/src/core/HighriseWebsocket.js +228 -0
  42. package/src/utils/ConvertSvgToPng.js +51 -0
  43. package/src/utils/ModelPool.js +160 -0
  44. package/src/utils/Models.js +128 -0
  45. package/src/utils/versionCheck.js +27 -0
  46. package/src/validators/ConfigValidator.js +205 -0
  47. package/src/validators/ConnectionValidator.js +65 -0
  48. package/typings/index.d.ts +3820 -0
@@ -0,0 +1,333 @@
1
+ class RoomClass {
2
+ constructor(bot) {
3
+ this.bot = bot
4
+ this.logger = this.bot.logger
5
+ }
6
+
7
+ privilege = {
8
+ get: async (user_id) => {
9
+ const method = 'bot.room.privilege.get'
10
+
11
+ try {
12
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
13
+
14
+ const payload = {
15
+ _type: 'GetRoomPrivilegeRequest',
16
+ user_id: user_id
17
+ }
18
+
19
+ const response = await this.bot._requestResponse.send(payload)
20
+ return response.content
21
+ } catch (error) {
22
+ if (error instanceof TypeError) {
23
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
24
+ } else {
25
+ this.logger.error(method, `Failed to get user room privilege: ${error.message}`, { user_id }, error);
26
+ return {}
27
+ }
28
+ }
29
+ },
30
+
31
+ isModerator: async (user_id) => {
32
+ const method = 'bot.room.privilege.isModerator'
33
+
34
+ try {
35
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
36
+
37
+ const payload = {
38
+ _type: 'GetRoomPrivilegeRequest',
39
+ user_id: user_id
40
+ }
41
+
42
+ const response = await this.bot._requestResponse.send(payload)
43
+ return response.content.moderator === true
44
+ } catch (error) {
45
+ if (error instanceof TypeError) {
46
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
47
+ } else {
48
+ this.logger.error(method, `Failed to check moderator status: ${error.message}`, { user_id }, error);
49
+ }
50
+ }
51
+ },
52
+
53
+ isDesigner: async (user_id) => {
54
+ const method = 'bot.room.privilege.isDesigner'
55
+
56
+ try {
57
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
58
+
59
+ const payload = {
60
+ _type: 'GetRoomPrivilegeRequest',
61
+ user_id: user_id
62
+ }
63
+
64
+ const response = await this.bot._requestResponse.send(payload)
65
+ return response.content.designer === true
66
+ } catch (error) {
67
+ if (error instanceof TypeError) {
68
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
69
+ } else {
70
+ this.logger.error(method, `Failed to check designer status: ${error.message}`, { user_id }, error);
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+ designer = {
77
+ add: async (user_id) => {
78
+ const method = 'bot.room.designer.add'
79
+
80
+ try {
81
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
82
+
83
+
84
+ const payload = {
85
+ _type: 'ChangeRoomPrivilegeRequest',
86
+ user_id: user_id,
87
+ permissions: { designer: true }
88
+ }
89
+
90
+ const response = await this.bot._fireAndForget.send(payload)
91
+ return response.success
92
+ } catch (error) {
93
+ if (error instanceof TypeError) {
94
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
95
+ } else {
96
+ this.logger.error(method, `Failed to add user as designer: ${error.message}`, { user_id }, error);
97
+ return false
98
+ }
99
+ }
100
+ },
101
+
102
+ remove: async (user_id) => {
103
+ const method = 'bot.room.designer.remove'
104
+
105
+ try {
106
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
107
+
108
+
109
+ const payload = {
110
+ _type: 'ChangeRoomPrivilegeRequest',
111
+ user_id: user_id,
112
+ permissions: { designer: false }
113
+ }
114
+
115
+ const response = await this.bot._fireAndForget.send(payload)
116
+ return response.success
117
+ } catch (error) {
118
+ if (error instanceof TypeError) {
119
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
120
+ } else {
121
+ this.logger.error(method, `Failed to remove designer privilege: ${error.message}`, { user_id }, error);
122
+ return false
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ moderator = {
129
+ add: async (user_id) => {
130
+ const method = 'bot.room.moderator.add'
131
+
132
+ try {
133
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
134
+
135
+
136
+ const payload = {
137
+ _type: 'ChangeRoomPrivilegeRequest',
138
+ user_id: user_id,
139
+ permissions: { moderator: true }
140
+ }
141
+
142
+ const response = await this.bot._fireAndForget.send(payload)
143
+ return response.success
144
+ } catch (error) {
145
+ if (error instanceof TypeError) {
146
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
147
+ } else {
148
+ this.logger.error(method, `Failed to add user as moderator: ${error.message}`, { user_id }, error);
149
+ return false
150
+ }
151
+ }
152
+ },
153
+
154
+ remove: async (user_id) => {
155
+ const method = 'bot.room.moderator.remove'
156
+
157
+ try {
158
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
159
+
160
+
161
+ const payload = {
162
+ _type: 'ChangeRoomPrivilegeRequest',
163
+ user_id: user_id,
164
+ permissions: { moderator: false }
165
+ }
166
+
167
+ const response = await this.bot._fireAndForget.send(payload)
168
+ return response.success
169
+ } catch (error) {
170
+ if (error instanceof TypeError) {
171
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
172
+ } else {
173
+ this.logger.error(method, `Failed to remove moderator privilege: ${error.message}`, { user_id }, error);
174
+ return false
175
+ }
176
+ }
177
+ }
178
+ }
179
+
180
+ users = {
181
+ get: async () => {
182
+ const method = 'bot.room.users.get'
183
+
184
+ try {
185
+ const payload = {
186
+ _type: 'GetRoomUsersRequest'
187
+ }
188
+
189
+ const response = await this.bot._requestResponse.send(payload)
190
+ return response.content
191
+ } catch (error) {
192
+ this.logger.error(method, `Failed to get room users: ${error.message}`);
193
+ return []
194
+ }
195
+ },
196
+
197
+ id: async (username) => {
198
+ const method = 'bot.room.users.id'
199
+
200
+ try {
201
+ if (!username || typeof username !== 'string') throw new TypeError('username must be a non-empty string');
202
+
203
+ const users = await this.users.get()
204
+ const user = users.find(u => u[0].username === username)
205
+ if (!user) throw new Error(`User with username '${username}' not in room`)
206
+
207
+ return user[0].id
208
+ } catch (error) {
209
+ if (error instanceof TypeError) {
210
+ this.logger.error(method, `TypeError: ${error.message}`, { username }, error);
211
+ } else {
212
+ this.logger.error(method, `Failed to get user ID: ${error.message}`, { username }, error);
213
+ }
214
+ }
215
+ },
216
+
217
+ username: async (id) => {
218
+ const method = 'bot.room.users.username'
219
+
220
+ try {
221
+ if (!id || typeof id !== 'string') throw new TypeError('id must be a non-empty string');
222
+
223
+ const users = await this.users.get()
224
+ const user = users.find(u => u[0].id === id)
225
+ if (!user) throw new Error(`User with ID '${id}' not in room`)
226
+
227
+ return user[0].username
228
+ } catch (error) {
229
+ if (error instanceof TypeError) {
230
+ this.logger.error(method, `TypeError: ${error.message}`, { id }, error);
231
+ } else {
232
+ this.logger.error(method, `Failed to get username: ${error.message}`, { id }, error);
233
+ }
234
+ }
235
+ },
236
+
237
+ position: async (identifier) => {
238
+ const method = 'bot.room.users.position'
239
+
240
+ try {
241
+ if (!identifier || typeof identifier !== 'string') throw new TypeError('identifier must be a non-empty string');
242
+
243
+ const users = await this.users.get()
244
+ const user = users.find(u => u[0].id === identifier || u[0].username === identifier)
245
+ if (!user) throw new Error(`User '${identifier}' not in room`)
246
+
247
+ return user[1]
248
+ } catch (error) {
249
+ if (error instanceof TypeError) {
250
+ this.logger.error(method, `TypeError: ${error.message}`, { identifier }, error);
251
+ } else {
252
+ this.logger.error(method, `Failed to get user position: ${error.message}`, { identifier }, error);
253
+ }
254
+ }
255
+ }
256
+ }
257
+
258
+ voice = {
259
+ check: async () => {
260
+ const method = 'bot.room.voice.check'
261
+ let result = {}
262
+
263
+ try {
264
+ const payload = {
265
+ _type: 'CheckVoiceChatRequest'
266
+ }
267
+
268
+ const response = await this.bot._requestResponse.send(payload)
269
+
270
+ if (response.seconds_left) {
271
+ result.secondsLeft = response.seconds_left
272
+ result.autoSpeakersId = response.auto_speakers
273
+ result.users = response.users
274
+ } else {
275
+ result.message = response.message
276
+ }
277
+
278
+ return result
279
+ } catch (error) {
280
+ this.logger.error(method, `Failed to check room voice status: ${error.message}`);
281
+ }
282
+ },
283
+
284
+ invite: async (user_id) => {
285
+ const method = 'bot.room.voice.invite'
286
+
287
+ try {
288
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
289
+
290
+ const payload = {
291
+ _type: 'InviteSpeakerRequest',
292
+ user_id
293
+ }
294
+
295
+ const response = await this.bot._fireAndForget.send(payload)
296
+ return response.success
297
+ } catch (error) {
298
+ if (error instanceof TypeError) {
299
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
300
+ } else {
301
+ this.logger.error(method, `Failed to invite user to voice: ${error.message}`, { user_id }, error);
302
+ return false
303
+ }
304
+ }
305
+ },
306
+
307
+ remove: async (user_id) => {
308
+ const method = 'bot.room.voice.remove'
309
+
310
+ try {
311
+ if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
312
+
313
+ const payload = {
314
+ _type: 'RemoveSpeakerRequest',
315
+ user_id
316
+ }
317
+
318
+ const response = await this.bot._fireAndForget.send(payload)
319
+ return response.success
320
+ } catch (error) {
321
+ if (error instanceof TypeError) {
322
+ this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
323
+ } else {
324
+ this.logger.error(method, `Failed to remove user from voice: ${error.message}`, { user_id }, error);
325
+ return false
326
+ }
327
+ }
328
+ }
329
+ }
330
+
331
+ }
332
+
333
+ module.exports = { RoomClass }
@@ -0,0 +1,29 @@
1
+ const PermissionManager = require("highrise-core/src/classes/Managers/PermissionManager");
2
+ const CooldownManager = require("highrise-core/src/classes/Managers/Networking/CooldownManager");
3
+ const DanceFloor = require("highrise-core/src/classes/Managers/DanceFloorManagers");
4
+ const { Logger } = require("highrise-core/src/classes/Managers/Helpers/LoggerManager")
5
+
6
+ class Utils {
7
+ constructor(bot, options) {
8
+ this.bot = bot
9
+ this.logger = new Logger(this, options)
10
+ this.DanceFloor = new DanceFloor(this.bot)
11
+ this.cooldown = new CooldownManager()
12
+
13
+ this.permissions = new PermissionManager(bot, this, {
14
+ dataDir: './data/permissions',
15
+ filename: 'roles.json',
16
+ customRoles: options.customRoles || []
17
+ });
18
+ }
19
+
20
+ async sleep(ms) {
21
+ if (ms < 0) {
22
+ this.logger.warn('bot.utils.sleep', 'Negative delay provided, using 0ms');
23
+ ms = 0;
24
+ }
25
+ return new Promise(resolve => setTimeout(resolve, ms))
26
+ }
27
+ }
28
+
29
+ module.exports = Utils