@takaro/modules 0.0.1 → 0.0.5

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 (99) hide show
  1. package/dist/BuiltinModule.js +0 -4
  2. package/dist/BuiltinModule.js.map +1 -1
  3. package/dist/community-modules.json +21 -0
  4. package/dist/dto/gameEvents.d.ts +3 -2
  5. package/dist/dto/gameEvents.js +1 -0
  6. package/dist/dto/gameEvents.js.map +1 -1
  7. package/dist/dto/index.d.ts +6 -0
  8. package/dist/dto/takaroEvents.d.ts +46 -0
  9. package/dist/dto/takaroEvents.js +129 -1
  10. package/dist/dto/takaroEvents.js.map +1 -1
  11. package/dist/main.js +1 -1
  12. package/dist/main.js.map +1 -1
  13. package/dist/modules/chatBridge/hooks/GameToDiscord.js +1 -1
  14. package/dist/modules/chatBridge/hooks/GameToDiscord.js.map +1 -1
  15. package/dist/modules/chatBridge/hooks/PlayerConnected.js +2 -2
  16. package/dist/modules/chatBridge/hooks/PlayerConnected.js.map +1 -1
  17. package/dist/modules/chatBridge/hooks/PlayerDisconnected.js +1 -1
  18. package/dist/modules/chatBridge/hooks/PlayerDisconnected.js.map +1 -1
  19. package/dist/modules/economyUtils/commands/transfer.js +1 -1
  20. package/dist/modules/economyUtils/commands/transfer.js.map +1 -1
  21. package/dist/modules/geoBlock/hooks/IPDetected.js +3 -5
  22. package/dist/modules/geoBlock/hooks/IPDetected.js.map +1 -1
  23. package/dist/modules/geoBlock/index.js +1 -1
  24. package/dist/modules/geoBlock/index.js.map +1 -1
  25. package/dist/modules/gimme/commands/gimme.js +1 -0
  26. package/dist/modules/gimme/commands/gimme.js.map +1 -1
  27. package/dist/modules/lottery/commands/nextDraw.js +1 -1
  28. package/dist/modules/lottery/commands/nextDraw.js.map +1 -1
  29. package/dist/modules/playerOnboarding/index.js.map +1 -1
  30. package/dist/modules/teleports/commands/deletetp.js +1 -1
  31. package/dist/modules/teleports/commands/deletetp.js.map +1 -1
  32. package/dist/modules/teleports/commands/setprivate.js +4 -6
  33. package/dist/modules/teleports/commands/setprivate.js.map +1 -1
  34. package/dist/modules/teleports/commands/setpublic.js +8 -15
  35. package/dist/modules/teleports/commands/setpublic.js.map +1 -1
  36. package/dist/modules/teleports/commands/settp.js +2 -2
  37. package/dist/modules/teleports/commands/settp.js.map +1 -1
  38. package/dist/modules/teleports/commands/teleport.js +3 -8
  39. package/dist/modules/teleports/commands/teleport.js.map +1 -1
  40. package/dist/modules/teleports/commands/teleportwaypoint.js +9 -1
  41. package/dist/modules/teleports/commands/teleportwaypoint.js.map +1 -1
  42. package/dist/modules/teleports/commands/tplist.js +13 -12
  43. package/dist/modules/teleports/commands/tplist.js.map +1 -1
  44. package/dist/modules/teleports/functions/utils.d.ts +2 -2
  45. package/dist/modules/teleports/functions/utils.js +21 -3
  46. package/dist/modules/teleports/functions/utils.js.map +1 -1
  47. package/dist/modules.json +99 -79
  48. package/package.json +4 -8
  49. package/scripts/buildBuiltinJson.ts +20 -0
  50. package/src/BuiltinModule.ts +1 -1
  51. package/src/__tests__/aliases.integration.test.ts +6 -7
  52. package/src/__tests__/bugRepros.integration.test.ts +72 -0
  53. package/src/__tests__/commandArgs.integration.test.ts +24 -25
  54. package/src/__tests__/economyUtils.integration.test.ts +66 -60
  55. package/src/__tests__/geoblock.integration.test.ts +22 -65
  56. package/src/__tests__/gimme.integration.test.ts +35 -36
  57. package/src/__tests__/help.integration.test.ts +47 -35
  58. package/src/__tests__/lottery.integration.test.ts +32 -28
  59. package/src/__tests__/modulePermission.integration.test.ts +24 -18
  60. package/src/__tests__/onboarding.integration.test.ts +13 -14
  61. package/src/__tests__/ping.integration.test.ts +5 -6
  62. package/src/__tests__/roleExpiry.integration.test.ts +9 -10
  63. package/src/__tests__/serverMessages.integration.test.ts +14 -12
  64. package/src/__tests__/systemConfigCost.integration.test.ts +14 -15
  65. package/src/__tests__/teleports/listtp.integration.test.ts +98 -22
  66. package/src/__tests__/teleports/publicteleports.integration.test.ts +55 -48
  67. package/src/__tests__/teleports/teleport.integration.test.ts +17 -16
  68. package/src/__tests__/teleports/tpManagement.integration.test.ts +26 -27
  69. package/src/__tests__/teleports/waypoints.integration.test.ts +113 -82
  70. package/src/community-modules/README.md +5 -0
  71. package/src/community-modules/modules/vote.json +19 -0
  72. package/src/dto/gameEvents.ts +2 -2
  73. package/src/dto/takaroEvents.ts +79 -0
  74. package/src/main.ts +2 -3
  75. package/src/modules/chatBridge/hooks/GameToDiscord.js +1 -1
  76. package/src/modules/chatBridge/hooks/PlayerConnected.js +2 -2
  77. package/src/modules/chatBridge/hooks/PlayerDisconnected.js +1 -1
  78. package/src/modules/chatBridge/index.ts +1 -1
  79. package/src/modules/economyUtils/commands/transfer.js +4 -4
  80. package/src/modules/economyUtils/index.ts +1 -1
  81. package/src/modules/geoBlock/hooks/IPDetected.js +3 -4
  82. package/src/modules/geoBlock/index.ts +2 -2
  83. package/src/modules/gimme/commands/gimme.js +2 -1
  84. package/src/modules/gimme/index.ts +1 -1
  85. package/src/modules/highPingKicker/index.ts +1 -1
  86. package/src/modules/lottery/commands/nextDraw.js +3 -1
  87. package/src/modules/lottery/index.ts +1 -1
  88. package/src/modules/playerOnboarding/index.ts +2 -1
  89. package/src/modules/serverMessages/index.ts +1 -1
  90. package/src/modules/teleports/commands/deletetp.js +1 -1
  91. package/src/modules/teleports/commands/setprivate.js +6 -6
  92. package/src/modules/teleports/commands/setpublic.js +18 -25
  93. package/src/modules/teleports/commands/settp.js +2 -2
  94. package/src/modules/teleports/commands/teleport.js +3 -10
  95. package/src/modules/teleports/commands/teleportwaypoint.js +12 -1
  96. package/src/modules/teleports/commands/tplist.js +16 -15
  97. package/src/modules/teleports/functions/utils.js +19 -3
  98. package/src/modules/teleports/index.ts +1 -1
  99. package/src/modules/utils/index.ts +1 -1
@@ -1,5 +1,11 @@
1
- import { IntegrationTest, expect } from '@takaro/test';
2
- import { IModuleTestsSetupData, modulesTestSetup, chatMessageSorter } from '@takaro/test';
1
+ import {
2
+ IntegrationTest,
3
+ expect,
4
+ IModuleTestsSetupData,
5
+ modulesTestSetup,
6
+ chatMessageSorter,
7
+ EventsAwaiter,
8
+ } from '@takaro/test';
3
9
  import { GameEvents } from '../dto/index.js';
4
10
 
5
11
  const group = 'Economy utils suite';
@@ -31,10 +37,10 @@ const tests = [
31
37
  test: async function () {
32
38
  await this.client.gameserver.gameServerControllerInstallModule(
33
39
  this.setupData.gameserver.id,
34
- this.setupData.economyUtilsModule.id
40
+ this.setupData.economyUtilsModule.id,
35
41
  );
36
42
 
37
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 2);
43
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
38
44
 
39
45
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
40
46
  msg: '/balance',
@@ -52,7 +58,7 @@ const tests = [
52
58
  playerOnGameServer[0].playerId,
53
59
  {
54
60
  currency: 1000,
55
- }
61
+ },
56
62
  );
57
63
 
58
64
  // trigger balance command
@@ -62,8 +68,8 @@ const tests = [
62
68
  });
63
69
 
64
70
  expect((await events).length).to.be.eq(2);
65
- expect((await events)[0].data.msg).to.be.eq('balance: 0 test coin');
66
- expect((await events)[1].data.msg).to.be.eq('balance: 1000 test coin');
71
+ expect((await events)[0].data.meta.msg).to.be.eq('balance: 0 test coin');
72
+ expect((await events)[1].data.meta.msg).to.be.eq('balance: 1000 test coin');
67
73
  },
68
74
  }),
69
75
  new IntegrationTest<IModuleTestsSetupData>({
@@ -75,7 +81,7 @@ const tests = [
75
81
  // install module
76
82
  await this.client.gameserver.gameServerControllerInstallModule(
77
83
  this.setupData.gameserver.id,
78
- this.setupData.economyUtilsModule.id
84
+ this.setupData.economyUtilsModule.id,
79
85
  );
80
86
 
81
87
  const giveCurrencies = this.setupData.players.map(async (player, index) => {
@@ -90,24 +96,24 @@ const tests = [
90
96
  playerOnGameServer[0].playerId,
91
97
  {
92
98
  currency: 1000 * index,
93
- }
99
+ },
94
100
  );
95
101
  });
96
102
  await Promise.all(giveCurrencies);
97
103
 
98
104
  // title message (1) + balance of player messages (5)
99
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 6);
105
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 6);
100
106
 
101
107
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
102
108
  msg: '/topcurrency',
103
109
  playerId: this.setupData.players[0].id,
104
110
  });
105
111
 
106
- const messages = (await events).map((e) => e.data.msg as string);
112
+ const messages = (await events).map((e) => e.data.meta.msg as string);
107
113
  expect((await events).length).to.be.eq(6);
108
114
  for (const message of messages) {
109
115
  expect(message).to.match(
110
- /(Richest players\:|1\. .+ - 4000 test coin|2\. .+ - 3000 test coin|3\. .+ - 2000 test coin|4\. .+ - 1000 test coin|5\. .+ - 0 test coin)/
116
+ /(Richest players\:|1\. .+ - 4000 test coin|2\. .+ - 3000 test coin|3\. .+ - 2000 test coin|4\. .+ - 1000 test coin|5\. .+ - 0 test coin)/,
111
117
  );
112
118
  }
113
119
  },
@@ -120,7 +126,7 @@ const tests = [
120
126
  test: async function () {
121
127
  await this.client.gameserver.gameServerControllerInstallModule(
122
128
  this.setupData.gameserver.id,
123
- this.setupData.economyUtilsModule.id
129
+ this.setupData.economyUtilsModule.id,
124
130
  );
125
131
 
126
132
  const transferAmount = 500;
@@ -133,36 +139,36 @@ const tests = [
133
139
  senderPog.playerId,
134
140
  {
135
141
  currency: transferAmount,
136
- }
142
+ },
137
143
  );
138
144
 
139
145
  const receiver = this.setupData.players[1];
140
146
  const receiverPog = receiver.playerOnGameServers?.find(
141
- (pog) => pog.gameServerId === this.setupData.gameserver.id
147
+ (pog) => pog.gameServerId === this.setupData.gameserver.id,
142
148
  );
143
149
  if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
144
150
  expect(receiverPog.currency).to.be.eq(0);
145
151
 
146
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 2);
152
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
147
153
 
148
154
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
149
155
  msg: `/transfer ${receiver.name} ${transferAmount}`,
150
156
  playerId: sender.id,
151
157
  });
152
158
 
153
- const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
159
+ const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
154
160
  expect((await events).length).to.be.eq(2);
155
161
 
156
162
  // check if balances are correct
157
163
  const updatedSender = await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
158
164
  senderPog.gameServerId,
159
- senderPog.playerId
165
+ senderPog.playerId,
160
166
  );
161
167
  expect(updatedSender.data.data.currency).to.be.eq(0);
162
168
 
163
169
  const updatedReceiver = await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
164
170
  receiverPog.gameServerId,
165
- receiverPog.playerId
171
+ receiverPog.playerId,
166
172
  );
167
173
  expect(updatedReceiver.data.data.currency).to.be.eq(transferAmount);
168
174
 
@@ -178,24 +184,24 @@ const tests = [
178
184
  test: async function () {
179
185
  await this.client.gameserver.gameServerControllerInstallModule(
180
186
  this.setupData.gameserver.id,
181
- this.setupData.economyUtilsModule.id
187
+ this.setupData.economyUtilsModule.id,
182
188
  );
183
189
 
184
190
  const sender = this.setupData.players[0];
185
191
  const receiver = this.setupData.players[1];
186
192
  const transferAmount = 500;
187
193
 
188
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 1);
194
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 1);
189
195
 
190
196
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
191
197
  msg: `/transfer ${receiver.name} ${transferAmount}`,
192
198
  playerId: sender.id,
193
199
  });
194
200
 
195
- const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
201
+ const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
196
202
  expect((await events).length).to.be.eq(1);
197
203
  expect(messages[0]).to.be.eq(
198
- `Failed to transfer ${transferAmount} test coin to ${receiver.name}. Are you sure you have enough balance?`
204
+ `Failed to transfer ${transferAmount} test coin to ${receiver.name}. Are you sure you have enough balance?`,
199
205
  );
200
206
  },
201
207
  }),
@@ -212,7 +218,7 @@ const tests = [
212
218
  userConfig: JSON.stringify({
213
219
  pendingAmount: 100,
214
220
  }),
215
- }
221
+ },
216
222
  );
217
223
 
218
224
  const transferAmount = 500;
@@ -228,73 +234,73 @@ const tests = [
228
234
  senderPog.playerId,
229
235
  {
230
236
  currency: transferAmount,
231
- }
237
+ },
232
238
  );
233
239
 
234
240
  const receiver = this.setupData.players[1];
235
241
  const receiverPog = receiver.playerOnGameServers?.find(
236
- (pog) => pog.gameServerId === this.setupData.gameserver.id
242
+ (pog) => pog.gameServerId === this.setupData.gameserver.id,
237
243
  );
238
244
  if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
239
245
  expect(receiverPog.currency).to.be.eq(0);
240
246
 
241
- let events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 1);
247
+ let events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 1);
242
248
 
243
249
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
244
250
  msg: `/transfer ${receiver.name} ${transferAmount}`,
245
251
  playerId: sender.id,
246
252
  });
247
253
 
248
- let messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
254
+ let messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
249
255
 
250
256
  // check if balances have not changed yet
251
257
  expect(
252
258
  (
253
259
  await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
254
260
  senderPog.gameServerId,
255
- senderPog.playerId
261
+ senderPog.playerId,
256
262
  )
257
- ).data.data.currency
263
+ ).data.data.currency,
258
264
  ).to.be.eq(transferAmount);
259
265
  expect(
260
266
  (
261
267
  await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
262
268
  receiverPog.gameServerId,
263
- receiverPog.playerId
269
+ receiverPog.playerId,
264
270
  )
265
- ).data.data.currency
271
+ ).data.data.currency,
266
272
  ).to.be.eq(0);
267
273
  expect(messages.length).to.be.eq(1);
268
274
  expect(messages[0]).to.be.eq(
269
- `You are about to send ${transferAmount} test coin to ${receiver.name}. (Please confirm by typing ${prefix}confirmtransfer)`
275
+ `You are about to send ${transferAmount} test coin to ${receiver.name}. (Please confirm by typing ${prefix}confirmtransfer)`,
270
276
  );
271
277
 
272
278
  // =================================================
273
279
  // transfer confirmed
274
280
  // =================================================
275
- events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 2);
281
+ events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
276
282
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
277
283
  msg: `${prefix}confirmtransfer`,
278
284
  playerId: sender.id,
279
285
  });
280
286
 
281
- messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
287
+ messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
282
288
  expect((await events).length).to.be.eq(2);
283
289
  expect(
284
290
  (
285
291
  await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
286
292
  senderPog.gameServerId,
287
- senderPog.playerId
293
+ senderPog.playerId,
288
294
  )
289
- ).data.data.currency
295
+ ).data.data.currency,
290
296
  ).to.be.eq(0);
291
297
  expect(
292
298
  (
293
299
  await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
294
300
  receiverPog.gameServerId,
295
- receiverPog.playerId
301
+ receiverPog.playerId,
296
302
  )
297
- ).data.data.currency
303
+ ).data.data.currency,
298
304
  ).to.be.eq(transferAmount);
299
305
 
300
306
  expect(messages[0]).to.be.eq(`You received ${transferAmount} test coin from ${sender.name}`);
@@ -314,15 +320,15 @@ const tests = [
314
320
  userConfig: JSON.stringify({
315
321
  pendingAmount: 100,
316
322
  }),
317
- }
323
+ },
318
324
  );
319
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 1);
325
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 1);
320
326
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
321
327
  msg: '/confirmtransfer',
322
328
  playerId: this.setupData.players[0].id,
323
329
  });
324
330
 
325
- const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
331
+ const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
326
332
  expect(messages[0]).to.be.eq('You have no pending transfer.');
327
333
  },
328
334
  }),
@@ -338,7 +344,7 @@ const tests = [
338
344
 
339
345
  await this.client.gameserver.gameServerControllerInstallModule(
340
346
  this.setupData.gameserver.id,
341
- this.setupData.economyUtilsModule.id
347
+ this.setupData.economyUtilsModule.id,
342
348
  );
343
349
 
344
350
  // Change permissions of role to only have manageCurrency permission
@@ -352,25 +358,25 @@ const tests = [
352
358
  });
353
359
 
354
360
  const receiverPog = receiver.playerOnGameServers?.find(
355
- (pog) => pog.gameServerId === this.setupData.gameserver.id
361
+ (pog) => pog.gameServerId === this.setupData.gameserver.id,
356
362
  );
357
363
  if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
358
364
  expect(receiverPog.currency).to.be.eq(0);
359
365
 
360
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 2);
366
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
361
367
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
362
368
  msg: `/grantcurrency ${receiver.name} ${grantAmount}`,
363
369
  playerId: granter.id,
364
370
  });
365
371
 
366
- const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
372
+ const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
367
373
  expect(
368
374
  (
369
375
  await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
370
376
  receiverPog.gameServerId,
371
- receiverPog.playerId
377
+ receiverPog.playerId,
372
378
  )
373
- ).data.data.currency
379
+ ).data.data.currency,
374
380
  ).to.be.eq(grantAmount);
375
381
  expect(messages[0]).to.be.eq(`Granted ${grantAmount} test coin by ${granter.name}`);
376
382
  expect(messages[1]).to.be.eq(`You successfully granted ${grantAmount} test coin to ${receiver.name}`);
@@ -388,7 +394,7 @@ const tests = [
388
394
 
389
395
  // make sure receiver has enough currency
390
396
  const receiverPog = receiver.playerOnGameServers?.find(
391
- (pog) => pog.gameServerId === this.setupData.gameserver.id
397
+ (pog) => pog.gameServerId === this.setupData.gameserver.id,
392
398
  );
393
399
  if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
394
400
  await this.client.playerOnGameserver.playerOnGameServerControllerSetCurrency(
@@ -396,12 +402,12 @@ const tests = [
396
402
  receiverPog.playerId,
397
403
  {
398
404
  currency: revokeAmount,
399
- }
405
+ },
400
406
  );
401
407
 
402
408
  await this.client.gameserver.gameServerControllerInstallModule(
403
409
  this.setupData.gameserver.id,
404
- this.setupData.economyUtilsModule.id
410
+ this.setupData.economyUtilsModule.id,
405
411
  );
406
412
 
407
413
  // Change permissions of role to only have manageCurrency permission
@@ -416,23 +422,23 @@ const tests = [
416
422
 
417
423
  // currency before revoke
418
424
  expect(
419
- receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency
425
+ receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency,
420
426
  ).to.be.eq(0);
421
427
 
422
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 2);
428
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
423
429
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
424
430
  msg: `/revokecurrency ${receiver.name} ${revokeAmount}`,
425
431
  playerId: revoker.id,
426
432
  });
427
433
 
428
- const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
434
+ const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
429
435
  expect(
430
436
  (
431
437
  await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
432
438
  receiverPog.gameServerId,
433
- receiverPog.playerId
439
+ receiverPog.playerId,
434
440
  )
435
- ).data.data.currency
441
+ ).data.data.currency,
436
442
  ).to.be.eq(0);
437
443
  expect(messages[0]).to.be.eq(`${revokeAmount} test coin were revoked by ${revoker.name}`);
438
444
  expect(messages[1]).to.be.eq(`You successfully revoked ${revokeAmount} test coin of ${receiver.name}'s balance`);
@@ -455,15 +461,15 @@ const tests = [
455
461
 
456
462
  await this.client.gameserver.gameServerControllerInstallModule(
457
463
  this.setupData.gameserver.id,
458
- this.setupData.economyUtilsModule.id
464
+ this.setupData.economyUtilsModule.id,
459
465
  );
460
466
 
461
467
  // currency before revoke
462
468
  expect(
463
- receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency
469
+ receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency,
464
470
  ).to.be.eq(0);
465
471
 
466
- const events = this.setupData.eventAwaiter.waitForEvents(GameEvents.CHAT_MESSAGE, 2);
472
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
467
473
  await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
468
474
  msg: `/grantcurrency ${receiver.name} ${amount}`,
469
475
  playerId: sender.id,
@@ -474,7 +480,7 @@ const tests = [
474
480
  playerId: sender.id,
475
481
  });
476
482
 
477
- const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
483
+ const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
478
484
  expect(messages[0]).to.be.eq('You do not have permission to use grant currency command.');
479
485
  expect(messages[1]).to.be.eq('You do not have permission to use revoke currency command.');
480
486
  },
@@ -1,5 +1,4 @@
1
- import { IntegrationTest, expect } from '@takaro/test';
2
- import { IModuleTestsSetupData, modulesTestSetup } from '@takaro/test';
1
+ import { IntegrationTest, expect, IModuleTestsSetupData, modulesTestSetup, EventsAwaiter } from '@takaro/test';
3
2
  import { HookEvents } from '../dto/index.js';
4
3
  import { TakaroEventPlayerNewIpDetected } from '@takaro/modules';
5
4
  import { faker } from '@faker-js/faker';
@@ -12,7 +11,7 @@ const customSetup = async function (this: IntegrationTest<IModuleTestsSetupData>
12
11
  await Promise.all(
13
12
  setupData.players.map(async (player) => {
14
13
  await this.client.player.playerControllerRemoveRole(player.id, setupData.role.id);
15
- })
14
+ }),
16
15
  );
17
16
 
18
17
  return setupData;
@@ -34,9 +33,9 @@ const tests = [
34
33
  countries: ['RU'],
35
34
  ban: false,
36
35
  }),
37
- }
36
+ },
38
37
  );
39
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.PLAYER_DISCONNECTED);
38
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
40
39
  await this.client.hook.hookControllerTrigger({
41
40
  gameServerId: this.setupData.gameserver.id,
42
41
  playerId: this.setupData.players[0].id,
@@ -51,8 +50,7 @@ const tests = [
51
50
  });
52
51
 
53
52
  expect((await events).length).to.be.eq(1);
54
- expect((await events)[0].data.msg).to.match(/Kicked Your IP address is banned/);
55
- expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
53
+ expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
56
54
  },
57
55
  }),
58
56
  new IntegrationTest<IModuleTestsSetupData>({
@@ -70,9 +68,9 @@ const tests = [
70
68
  countries: ['RU'],
71
69
  ban: false,
72
70
  }),
73
- }
71
+ },
74
72
  );
75
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.HOOK_EXECUTED);
73
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
76
74
 
77
75
  await this.client.hook.hookControllerTrigger({
78
76
  gameServerId: this.setupData.gameserver.id,
@@ -109,9 +107,9 @@ const tests = [
109
107
  countries: ['RU'],
110
108
  ban: false,
111
109
  }),
112
- }
110
+ },
113
111
  );
114
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.HOOK_EXECUTED);
112
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
115
113
 
116
114
  await this.client.hook.hookControllerTrigger({
117
115
  gameServerId: this.setupData.gameserver.id,
@@ -148,9 +146,9 @@ const tests = [
148
146
  countries: ['RU'],
149
147
  ban: false,
150
148
  }),
151
- }
149
+ },
152
150
  );
153
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.PLAYER_DISCONNECTED);
151
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
154
152
 
155
153
  await this.client.hook.hookControllerTrigger({
156
154
  gameServerId: this.setupData.gameserver.id,
@@ -166,8 +164,7 @@ const tests = [
166
164
  });
167
165
 
168
166
  expect((await events).length).to.be.eq(1);
169
- expect((await events)[0].data.msg).to.match(/Kicked Your IP address is banned/);
170
- expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
167
+ expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
171
168
  },
172
169
  }),
173
170
  new IntegrationTest<IModuleTestsSetupData>({
@@ -185,9 +182,9 @@ const tests = [
185
182
  countries: ['RU'],
186
183
  ban: true,
187
184
  }),
188
- }
185
+ },
189
186
  );
190
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.PLAYER_DISCONNECTED);
187
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
191
188
 
192
189
  await this.client.hook.hookControllerTrigger({
193
190
  gameServerId: this.setupData.gameserver.id,
@@ -203,46 +200,7 @@ const tests = [
203
200
  });
204
201
 
205
202
  expect((await events).length).to.be.eq(1);
206
- expect((await events)[0].data.msg).to.match(/Banned Your IP address is banned/);
207
- expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
208
- },
209
- }),
210
- new IntegrationTest<IModuleTestsSetupData>({
211
- group,
212
- snapshot: false,
213
- setup: customSetup,
214
- name: 'MESSAGE CONFIGURATION: Custom message displayed to player on kick/ban',
215
- test: async function () {
216
- await this.client.gameserver.gameServerControllerInstallModule(
217
- this.setupData.gameserver.id,
218
- this.setupData.geoBlockModule.id,
219
- {
220
- userConfig: JSON.stringify({
221
- mode: 'allow',
222
- countries: ['RU'],
223
- ban: true,
224
- message: 'Custom message',
225
- }),
226
- }
227
- );
228
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.PLAYER_DISCONNECTED);
229
-
230
- await this.client.hook.hookControllerTrigger({
231
- gameServerId: this.setupData.gameserver.id,
232
- playerId: this.setupData.players[0].id,
233
- eventType: HookEvents.PLAYER_NEW_IP_DETECTED,
234
- eventMeta: new TakaroEventPlayerNewIpDetected({
235
- city: 'nowhere',
236
- country: 'BE',
237
- latitude: '0',
238
- longitude: '0',
239
- ip: faker.internet.ip(),
240
- }),
241
- });
242
-
243
- expect((await events).length).to.be.eq(1);
244
- expect((await events)[0].data.msg).to.match(/Banned Custom message/);
245
- expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
203
+ expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
246
204
  },
247
205
  }),
248
206
  new IntegrationTest<IModuleTestsSetupData>({
@@ -261,9 +219,9 @@ const tests = [
261
219
  ban: true,
262
220
  message: 'Custom message',
263
221
  }),
264
- }
222
+ },
265
223
  );
266
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.PLAYER_DISCONNECTED);
224
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
267
225
 
268
226
  await this.client.hook.hookControllerTrigger({
269
227
  gameServerId: this.setupData.gameserver.id,
@@ -279,8 +237,7 @@ const tests = [
279
237
  });
280
238
 
281
239
  expect((await events).length).to.be.eq(1);
282
- expect((await events)[0].data.msg).to.match(/Banned Custom message/);
283
- expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
240
+ expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
284
241
  },
285
242
  }),
286
243
  new IntegrationTest<IModuleTestsSetupData>({
@@ -299,7 +256,7 @@ const tests = [
299
256
  ban: true,
300
257
  message: 'Custom message',
301
258
  }),
302
- }
259
+ },
303
260
  );
304
261
  const permissions = await this.client.permissionCodesToInputs(['GEOBLOCK_IMMUNITY']);
305
262
  const roleRes = await this.client.role.roleControllerCreate({
@@ -309,7 +266,7 @@ const tests = [
309
266
 
310
267
  await this.client.player.playerControllerAssignRole(this.setupData.players[0].id, roleRes.data.data.id);
311
268
 
312
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.HOOK_EXECUTED);
269
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
313
270
 
314
271
  await this.client.hook.hookControllerTrigger({
315
272
  gameServerId: this.setupData.gameserver.id,
@@ -347,9 +304,9 @@ const tests = [
347
304
  ban: true,
348
305
  message: 'Custom message',
349
306
  }),
350
- }
307
+ },
351
308
  );
352
- const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.HOOK_EXECUTED);
309
+ const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
353
310
 
354
311
  await this.client.hook.hookControllerTrigger({
355
312
  gameServerId: this.setupData.gameserver.id,