@openora/core 0.4.1-canary.176 → 0.4.1-canary.178

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 (75) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/audit/__tests__/map-event.test.js +122 -0
  3. package/dist/audit/__tests__/map-event.test.js.map +1 -1
  4. package/dist/audit/plugin.d.ts.map +1 -1
  5. package/dist/audit/plugin.js +44 -0
  6. package/dist/audit/plugin.js.map +1 -1
  7. package/dist/casino/gaming/__tests__/game-bulk.router.int.test.d.ts +2 -0
  8. package/dist/casino/gaming/__tests__/game-bulk.router.int.test.d.ts.map +1 -0
  9. package/dist/casino/gaming/__tests__/game-bulk.router.int.test.js +447 -0
  10. package/dist/casino/gaming/__tests__/game-bulk.router.int.test.js.map +1 -0
  11. package/dist/casino/gaming/__tests__/gaming-catalog-admin.router.int.test.js +21 -1
  12. package/dist/casino/gaming/__tests__/gaming-catalog-admin.router.int.test.js.map +1 -1
  13. package/dist/casino/gaming/contract/index.d.ts +92 -0
  14. package/dist/casino/gaming/contract/index.d.ts.map +1 -1
  15. package/dist/casino/gaming/contract/index.js +47 -1
  16. package/dist/casino/gaming/contract/index.js.map +1 -1
  17. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  18. package/dist/casino/gaming/plugin.js +2 -0
  19. package/dist/casino/gaming/plugin.js.map +1 -1
  20. package/dist/casino/gaming/router/index.d.ts +50 -1
  21. package/dist/casino/gaming/router/index.d.ts.map +1 -1
  22. package/dist/casino/gaming/router/index.js +14 -1
  23. package/dist/casino/gaming/router/index.js.map +1 -1
  24. package/dist/casino/gaming/service/game-bulk.service.d.ts +54 -0
  25. package/dist/casino/gaming/service/game-bulk.service.d.ts.map +1 -0
  26. package/dist/casino/gaming/service/game-bulk.service.js +338 -0
  27. package/dist/casino/gaming/service/game-bulk.service.js.map +1 -0
  28. package/dist/casino/gaming/service/game-provider.service.d.ts +12 -0
  29. package/dist/casino/gaming/service/game-provider.service.d.ts.map +1 -1
  30. package/dist/casino/gaming/service/game-provider.service.js +1 -1
  31. package/dist/casino/gaming/service/game-provider.service.js.map +1 -1
  32. package/dist/compliance/__tests__/compliance.service.int.test.js +163 -14
  33. package/dist/compliance/__tests__/compliance.service.int.test.js.map +1 -1
  34. package/dist/compliance/contract/index.d.ts +97 -18
  35. package/dist/compliance/contract/index.d.ts.map +1 -1
  36. package/dist/compliance/contract/index.js +51 -14
  37. package/dist/compliance/contract/index.js.map +1 -1
  38. package/dist/compliance/drizzle/migrations/0010_same_the_twelve.sql +12 -0
  39. package/dist/compliance/drizzle/migrations/meta/0010_snapshot.json +1078 -0
  40. package/dist/compliance/drizzle/migrations/meta/_journal.json +7 -0
  41. package/dist/compliance/router/index.d.ts +59 -10
  42. package/dist/compliance/router/index.d.ts.map +1 -1
  43. package/dist/compliance/router/index.js +17 -5
  44. package/dist/compliance/router/index.js.map +1 -1
  45. package/dist/compliance/schema/index.d.ts +110 -0
  46. package/dist/compliance/schema/index.d.ts.map +1 -1
  47. package/dist/compliance/schema/index.js +15 -0
  48. package/dist/compliance/schema/index.js.map +1 -1
  49. package/dist/compliance/service/compliance.service.d.ts +58 -10
  50. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  51. package/dist/compliance/service/compliance.service.js +203 -69
  52. package/dist/compliance/service/compliance.service.js.map +1 -1
  53. package/dist/contracts/adapters/game-geo-check.d.ts +5 -1
  54. package/dist/contracts/adapters/game-geo-check.d.ts.map +1 -1
  55. package/dist/contracts/adapters/game-geo-check.js +7 -1
  56. package/dist/contracts/adapters/game-geo-check.js.map +1 -1
  57. package/dist/contracts/schemas/__tests__/events.test.js +31 -0
  58. package/dist/contracts/schemas/__tests__/events.test.js.map +1 -1
  59. package/dist/contracts/schemas/events.d.ts +98 -0
  60. package/dist/contracts/schemas/events.d.ts.map +1 -1
  61. package/dist/contracts/schemas/events.js +45 -1
  62. package/dist/contracts/schemas/events.js.map +1 -1
  63. package/dist/contracts/schemas/game.d.ts +15 -0
  64. package/dist/contracts/schemas/game.d.ts.map +1 -1
  65. package/dist/contracts/schemas/game.js +7 -0
  66. package/dist/contracts/schemas/game.js.map +1 -1
  67. package/dist/server/db/index.d.ts +1 -1
  68. package/dist/server/db/index.d.ts.map +1 -1
  69. package/dist/server/db/index.js +1 -1
  70. package/dist/server/db/index.js.map +1 -1
  71. package/dist/server/db/query-helpers.d.ts +1 -0
  72. package/dist/server/db/query-helpers.d.ts.map +1 -1
  73. package/dist/server/db/query-helpers.js +10 -0
  74. package/dist/server/db/query-helpers.js.map +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,338 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { and, asc, count, eq, inArray, ne, or, sql } from 'drizzle-orm';
3
+ import { createDomainError, } from '@openora/core/server';
4
+ import { game, gameCategory, gameProvider, gameTag } from '../schema/index.js';
5
+ import { mappingsByProviderIds } from '../../shared/game-catalog.js';
6
+ import { GameCategoryNotFoundError } from './game-category.service.js';
7
+ import { GameTagNotFoundError } from './game-tag.service.js';
8
+ import { providerSnapshot } from './game-provider.service.js';
9
+ const GAME_BULK_CAP = 5000;
10
+ export const GameBulkTooManyGamesError = createDomainError('GameBulkTooManyGamesError', (matchedCount, cap) => `bulk action matched ${matchedCount} games, exceeding the ${cap}-game cap`);
11
+ class ScopeChangedDuringLockError extends Error {
12
+ }
13
+ const MAX_SCOPE_ATTEMPTS = 5;
14
+ function dedupe(ids) {
15
+ return ids ? [...new Set(ids)] : [];
16
+ }
17
+ function sortIds(ids) {
18
+ return [...ids].sort();
19
+ }
20
+ function targetCondition(gameIds, providerIds) {
21
+ return or(gameIds.length > 0 ? inArray(game.id, gameIds) : undefined, providerIds.length > 0 ? inArray(game.providerId, providerIds) : undefined);
22
+ }
23
+ /**
24
+ * Bulk catalog writes over `gameIds` and/or every game of `providerIds`. Unknown game or
25
+ * provider ids are returned in `notFound` while the rest applies; an unknown tag or
26
+ * category id rejects the whole call. Throws `GameBulkTooManyGamesError` past 5,000 games.
27
+ */
28
+ export class GameBulkService {
29
+ drizzle;
30
+ events;
31
+ constructor(drizzle, events) {
32
+ this.drizzle = drizzle;
33
+ this.events = events;
34
+ }
35
+ async assertWithinGameCap(tx, condition) {
36
+ const [row] = await tx.select({ n: count() }).from(game).where(condition);
37
+ const matched = Number(row?.n ?? 0);
38
+ if (matched > GAME_BULK_CAP) {
39
+ throw new GameBulkTooManyGamesError(matched, GAME_BULK_CAP);
40
+ }
41
+ }
42
+ async resolveGameScope(tx, gameIds, providerIds, gameLockMode) {
43
+ const condition = targetCondition(gameIds, providerIds);
44
+ for (let attempt = 0; attempt < MAX_SCOPE_ATTEMPTS; attempt++) {
45
+ try {
46
+ return await tx.transaction(async (tx2) => {
47
+ const games = await tx2
48
+ .select({ id: game.id, isActive: game.isActive, providerId: game.providerId })
49
+ .from(game)
50
+ .where(condition)
51
+ .orderBy(asc(game.id))
52
+ .for(gameLockMode);
53
+ let providerRows = [];
54
+ if (providerIds.length > 0) {
55
+ providerRows = await tx2
56
+ .select()
57
+ .from(gameProvider)
58
+ .where(inArray(gameProvider.id, providerIds))
59
+ .orderBy(asc(gameProvider.id))
60
+ .for('update');
61
+ }
62
+ // Under READ COMMITTED the locking scan above skips a game an uncommitted updateGame
63
+ // is moving onto these providers; once it commits, only a fresh read sees it.
64
+ if (providerRows.length > 0) {
65
+ const lockedIds = new Set(games.map((row) => row.id));
66
+ const currentlyUnderLockedProviders = await tx2
67
+ .select({ id: game.id })
68
+ .from(game)
69
+ .where(inArray(game.providerId, providerRows.map((row) => row.id)));
70
+ if (currentlyUnderLockedProviders.some((row) => !lockedIds.has(row.id))) {
71
+ throw new ScopeChangedDuringLockError();
72
+ }
73
+ }
74
+ const foundGameIds = new Set(games.map((row) => row.id));
75
+ const notFoundGameIds = sortIds(gameIds.filter((id) => !foundGameIds.has(id)));
76
+ const foundProviderIds = new Set(providerRows.map((row) => row.id));
77
+ const notFoundProviderIds = sortIds(providerIds.filter((id) => !foundProviderIds.has(id)));
78
+ return { games, providerRows, notFoundGameIds, notFoundProviderIds };
79
+ });
80
+ }
81
+ catch (error) {
82
+ if (error instanceof ScopeChangedDuringLockError) {
83
+ continue;
84
+ }
85
+ throw error;
86
+ }
87
+ }
88
+ throw new ScopeChangedDuringLockError();
89
+ }
90
+ async setGamesActive({ isActive, actorId, ip, userAgent, ...target }) {
91
+ const gameIds = sortIds(dedupe(target.gameIds));
92
+ const providerIds = sortIds(dedupe(target.providerIds));
93
+ const condition = targetCondition(gameIds, providerIds);
94
+ const bulkOperationId = randomUUID();
95
+ const outcome = await this.drizzle.db.transaction(async (tx) => {
96
+ await this.assertWithinGameCap(tx, condition);
97
+ const { games, providerRows, notFoundGameIds, notFoundProviderIds } = await this.resolveGameScope(tx, gameIds, providerIds, 'update');
98
+ const existingProviderIds = providerRows.map((row) => row.id);
99
+ const mappingsByProvider = existingProviderIds.length > 0
100
+ ? await mappingsByProviderIds(tx, existingProviderIds)
101
+ : new Map();
102
+ let changedProviderIds = [];
103
+ if (existingProviderIds.length > 0) {
104
+ const rows = await tx
105
+ .update(gameProvider)
106
+ .set({ isActive })
107
+ .where(and(inArray(gameProvider.id, existingProviderIds), ne(gameProvider.isActive, isActive)))
108
+ .returning({ id: gameProvider.id });
109
+ changedProviderIds = rows.map((row) => row.id);
110
+ }
111
+ const changedProviderIdSet = new Set(changedProviderIds);
112
+ const changedProviderSnapshots = providerRows
113
+ .filter((row) => changedProviderIdSet.has(row.id))
114
+ .map((row) => {
115
+ const mappings = mappingsByProvider.get(row.id) ?? [];
116
+ return {
117
+ providerId: row.id,
118
+ before: providerSnapshot(row, mappings),
119
+ after: providerSnapshot({ ...row, isActive }, mappings),
120
+ };
121
+ });
122
+ const toFlip = games.filter((row) => row.isActive !== isActive).map((row) => row.id);
123
+ let changedGameIds = [];
124
+ if (toFlip.length > 0) {
125
+ const rows = await tx
126
+ .update(game)
127
+ .set({ isActive })
128
+ .where(inArray(game.id, toFlip))
129
+ .returning({ id: game.id });
130
+ changedGameIds = rows.map((row) => row.id);
131
+ }
132
+ const unplayableGameIds = isActive
133
+ ? sortIds((await tx
134
+ .select({ id: game.id })
135
+ .from(game)
136
+ .innerJoin(gameProvider, eq(game.providerId, gameProvider.id))
137
+ .where(and(condition, eq(game.isActive, true), eq(gameProvider.isActive, false)))).map((row) => row.id))
138
+ : [];
139
+ return {
140
+ gameIds,
141
+ providerIds,
142
+ notFoundGameIds,
143
+ notFoundProviderIds,
144
+ changedGameIds: sortIds(changedGameIds),
145
+ changedProviderIds: sortIds(changedProviderIds),
146
+ changedProviderSnapshots,
147
+ gamesUpdatedCount: changedGameIds.length,
148
+ gamesUnchangedCount: games.length - changedGameIds.length,
149
+ providersUpdatedCount: changedProviderIds.length,
150
+ providersUnchangedCount: existingProviderIds.length - changedProviderIds.length,
151
+ unplayableGameIds,
152
+ };
153
+ });
154
+ if (outcome.changedGameIds.length > 0 || outcome.changedProviderIds.length > 0) {
155
+ this.events.emit('gaming.games.bulk_updated', {
156
+ operation: 'set_active',
157
+ actorId,
158
+ bulkOperationId,
159
+ target: { gameIds: outcome.gameIds, providerIds: outcome.providerIds },
160
+ isActive,
161
+ changedGameIds: outcome.changedGameIds,
162
+ changedProviderIds: outcome.changedProviderIds,
163
+ notFound: { gameIds: outcome.notFoundGameIds, providerIds: outcome.notFoundProviderIds },
164
+ ip: ip ?? null,
165
+ userAgent: userAgent ?? null,
166
+ });
167
+ }
168
+ for (const snapshot of outcome.changedProviderSnapshots) {
169
+ this.events.emit('gaming.provider.updated', {
170
+ providerId: snapshot.providerId,
171
+ actorId,
172
+ bulkOperationId,
173
+ before: snapshot.before,
174
+ after: snapshot.after,
175
+ ip: ip ?? null,
176
+ userAgent: userAgent ?? null,
177
+ });
178
+ }
179
+ return {
180
+ games: {
181
+ updatedCount: outcome.gamesUpdatedCount,
182
+ unchangedCount: outcome.gamesUnchangedCount,
183
+ },
184
+ providers: {
185
+ updatedCount: outcome.providersUpdatedCount,
186
+ unchangedCount: outcome.providersUnchangedCount,
187
+ },
188
+ notFound: { gameIds: outcome.notFoundGameIds, providerIds: outcome.notFoundProviderIds },
189
+ unplayableGameIds: outcome.unplayableGameIds,
190
+ };
191
+ }
192
+ async addGameTags({ tagIds: rawTagIds, actorId, ip, userAgent, ...target }) {
193
+ const tagIds = sortIds(dedupe(rawTagIds));
194
+ const gameIds = sortIds(dedupe(target.gameIds));
195
+ const providerIds = sortIds(dedupe(target.providerIds));
196
+ const condition = targetCondition(gameIds, providerIds);
197
+ const outcome = await this.drizzle.db.transaction(async (tx) => {
198
+ await this.assertWithinGameCap(tx, condition);
199
+ // The link insert's foreign-key check takes FOR KEY SHARE on each game row anyway;
200
+ // taking it up front, in id order and before provider locks, avoids a deadlock.
201
+ const { games, notFoundGameIds, notFoundProviderIds } = await this.resolveGameScope(tx, gameIds, providerIds, 'key share');
202
+ const foundTags = await tx
203
+ .select({ id: gameTag.id })
204
+ .from(gameTag)
205
+ .where(inArray(gameTag.id, tagIds))
206
+ .for('key share');
207
+ const foundTagIds = new Set(foundTags.map((row) => row.id));
208
+ const missingTagId = tagIds.find((id) => !foundTagIds.has(id));
209
+ if (missingTagId) {
210
+ throw new GameTagNotFoundError(missingTagId);
211
+ }
212
+ const matchedGameIds = games.map((row) => row.id);
213
+ let addedLinks = [];
214
+ if (matchedGameIds.length > 0) {
215
+ // Array parameters keep the insert under Postgres' 65,535 bind-parameter limit.
216
+ const { rows } = await tx.execute(sql `
217
+ INSERT INTO game_tag_game (game_id, tag_id)
218
+ SELECT g, t
219
+ FROM unnest(${sql.param(matchedGameIds)}::uuid[]) AS g
220
+ CROSS JOIN unnest(${sql.param(tagIds)}::uuid[]) AS t
221
+ ON CONFLICT (game_id, tag_id) DO NOTHING
222
+ RETURNING game_id, tag_id
223
+ `);
224
+ addedLinks = groupAddedLinks(rows, 'tag_id', 'tagIds');
225
+ }
226
+ const changedGameIds = addedLinks.map((link) => link.gameId);
227
+ return {
228
+ gameIds,
229
+ providerIds,
230
+ notFoundGameIds,
231
+ notFoundProviderIds,
232
+ addedLinks,
233
+ gamesUpdatedCount: changedGameIds.length,
234
+ gamesUnchangedCount: matchedGameIds.length - changedGameIds.length,
235
+ };
236
+ });
237
+ if (outcome.addedLinks.length > 0) {
238
+ this.events.emit('gaming.games.bulk_updated', {
239
+ operation: 'add_tags',
240
+ actorId,
241
+ target: { gameIds: outcome.gameIds, providerIds: outcome.providerIds },
242
+ tagIds,
243
+ addedLinks: outcome.addedLinks,
244
+ notFound: { gameIds: outcome.notFoundGameIds, providerIds: outcome.notFoundProviderIds },
245
+ ip: ip ?? null,
246
+ userAgent: userAgent ?? null,
247
+ });
248
+ }
249
+ return {
250
+ games: {
251
+ updatedCount: outcome.gamesUpdatedCount,
252
+ unchangedCount: outcome.gamesUnchangedCount,
253
+ },
254
+ notFound: { gameIds: outcome.notFoundGameIds, providerIds: outcome.notFoundProviderIds },
255
+ };
256
+ }
257
+ async addGameCategories({ categoryIds: rawCategoryIds, actorId, ip, userAgent, ...target }) {
258
+ const categoryIds = sortIds(dedupe(rawCategoryIds));
259
+ const gameIds = sortIds(dedupe(target.gameIds));
260
+ const providerIds = sortIds(dedupe(target.providerIds));
261
+ const condition = targetCondition(gameIds, providerIds);
262
+ const outcome = await this.drizzle.db.transaction(async (tx) => {
263
+ await this.assertWithinGameCap(tx, condition);
264
+ // The link insert's foreign-key check takes FOR KEY SHARE on each game row anyway;
265
+ // taking it up front, in id order and before provider locks, avoids a deadlock.
266
+ const { games, notFoundGameIds, notFoundProviderIds } = await this.resolveGameScope(tx, gameIds, providerIds, 'key share');
267
+ const foundCategories = await tx
268
+ .select({ id: gameCategory.id })
269
+ .from(gameCategory)
270
+ .where(inArray(gameCategory.id, categoryIds))
271
+ .for('key share');
272
+ const foundCategoryIds = new Set(foundCategories.map((row) => row.id));
273
+ const missingCategoryId = categoryIds.find((id) => !foundCategoryIds.has(id));
274
+ if (missingCategoryId) {
275
+ throw new GameCategoryNotFoundError(missingCategoryId);
276
+ }
277
+ const matchedGameIds = games.map((row) => row.id);
278
+ let addedLinks = [];
279
+ if (matchedGameIds.length > 0) {
280
+ const { rows } = await tx.execute(sql `
281
+ INSERT INTO game_category_game (game_id, category_id)
282
+ SELECT g, c
283
+ FROM unnest(${sql.param(matchedGameIds)}::uuid[]) AS g
284
+ CROSS JOIN unnest(${sql.param(categoryIds)}::uuid[]) AS c
285
+ ON CONFLICT (game_id, category_id) DO NOTHING
286
+ RETURNING game_id, category_id
287
+ `);
288
+ addedLinks = groupAddedLinks(rows, 'category_id', 'categoryIds');
289
+ }
290
+ const changedGameIds = addedLinks.map((link) => link.gameId);
291
+ return {
292
+ gameIds,
293
+ providerIds,
294
+ notFoundGameIds,
295
+ notFoundProviderIds,
296
+ addedLinks,
297
+ gamesUpdatedCount: changedGameIds.length,
298
+ gamesUnchangedCount: matchedGameIds.length - changedGameIds.length,
299
+ };
300
+ });
301
+ if (outcome.addedLinks.length > 0) {
302
+ this.events.emit('gaming.games.bulk_updated', {
303
+ operation: 'add_categories',
304
+ actorId,
305
+ target: { gameIds: outcome.gameIds, providerIds: outcome.providerIds },
306
+ categoryIds,
307
+ addedLinks: outcome.addedLinks,
308
+ notFound: { gameIds: outcome.notFoundGameIds, providerIds: outcome.notFoundProviderIds },
309
+ ip: ip ?? null,
310
+ userAgent: userAgent ?? null,
311
+ });
312
+ }
313
+ return {
314
+ games: {
315
+ updatedCount: outcome.gamesUpdatedCount,
316
+ unchangedCount: outcome.gamesUnchangedCount,
317
+ },
318
+ notFound: { gameIds: outcome.notFoundGameIds, providerIds: outcome.notFoundProviderIds },
319
+ };
320
+ }
321
+ }
322
+ function groupAddedLinks(rows, linkColumn, linkKey) {
323
+ const byGame = new Map();
324
+ for (const row of rows) {
325
+ const linkId = row[linkColumn];
326
+ const list = byGame.get(row.game_id);
327
+ if (list) {
328
+ list.push(linkId);
329
+ }
330
+ else {
331
+ byGame.set(row.game_id, [linkId]);
332
+ }
333
+ }
334
+ return [...byGame.entries()]
335
+ .map(([gameId, linkIds]) => ({ gameId, [linkKey]: sortIds(linkIds) }))
336
+ .sort((a, b) => (a.gameId < b.gameId ? -1 : a.gameId > b.gameId ? 1 : 0));
337
+ }
338
+ //# sourceMappingURL=game-bulk.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-bulk.service.js","sourceRoot":"","sources":["../../../../src/casino/gaming/service/game-bulk.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type EventBus, DrizzleService } from '@openora/core/server';
2
+ import type { GameProviderAggregatorMapping } from '@openora/core/contracts';
2
3
  import { gameProvider } from '../schema/index.js';
3
4
  import type { CreateProviderInput, UpdateProviderInput } from '../contract/index.js';
4
5
  import { type CatalogActor } from '../../shared/game-catalog.js';
@@ -20,6 +21,17 @@ export declare function toProviderSummary(record: typeof gameProvider.$inferSele
20
21
  name: string;
21
22
  logoUrl: string | null;
22
23
  };
24
+ export declare function providerSnapshot(record: typeof gameProvider.$inferSelect, aggregatorMappings: readonly GameProviderAggregatorMapping[]): {
25
+ slug: string;
26
+ name: string;
27
+ aggregatorMappings: {
28
+ aggregator: string;
29
+ vendorId: string;
30
+ }[];
31
+ logoUrl: string | null;
32
+ metadata: {} | null;
33
+ isActive: boolean;
34
+ };
23
35
  export declare class GameProviderService {
24
36
  private readonly drizzle;
25
37
  private readonly events;
@@ -1 +1 @@
1
- {"version":3,"file":"game-provider.service.d.ts","sourceRoot":"","sources":["../../../../src/casino/gaming/service/game-provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAIb,cAAc,EAMf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAQ,YAAY,EAAiC,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,yBAAyB;QAZ7B,CAAC;CAYgE,CAAC;AAC3E,eAAO,MAAM,0BAA0B;QAb9B,CAAC;CAgBT,CAAC;AACF,eAAO,MAAM,8BAA8B;QAjBlC,CAAC;CAoBT,CAAC;AACF,eAAO,MAAM,6BAA6B;QArBjC,CAAC;CA2BT,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC,YAAY;;;;;EAOzE;AAsCD,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,QAAQ;IAG7B,mBAAmB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;IAepE,kBAAkB,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,CAAC,EACD,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;;;;;;;;;;;;;;;;;;;IA6BK,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;IAStB,uBAAuB,CAAC,IAAI,EAAE,MAAM;;;;;;IAYpC,cAAc,CAAC,EACnB,IAAI,EACJ,IAAI,EACJ,kBAAuB,EACvB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,EAAE,EACF,SAAS,GACV,EAAE,mBAAmB,GAAG,YAAY;;;;;;;;;;;;;;IAsD/B,cAAc,CAAC,EACnB,EAAE,EACF,OAAO,EACP,EAAE,EACF,SAAS,EACT,kBAAkB,EAClB,GAAG,UAAU,EACd,EAAE,mBAAmB,GAAG,YAAY;;;;;;;;;;;;;;CA6GtC"}
1
+ {"version":3,"file":"game-provider.service.d.ts","sourceRoot":"","sources":["../../../../src/casino/gaming/service/game-provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAIb,cAAc,EAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAQ,YAAY,EAAiC,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,yBAAyB;QAZ7B,CAAC;CAYgE,CAAC;AAC3E,eAAO,MAAM,0BAA0B;QAb9B,CAAC;CAgBT,CAAC;AACF,eAAO,MAAM,8BAA8B;QAjBlC,CAAC;CAoBT,CAAC;AACF,eAAO,MAAM,6BAA6B;QArBjC,CAAC;CA2BT,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC,YAAY;;;;;EAOzE;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,YAAY,CAAC,YAAY,EACxC,kBAAkB,EAAE,SAAS,6BAA6B,EAAE;;;;;;;;;;EAU7D;AAwBD,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,QAAQ;IAG7B,mBAAmB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;IAepE,kBAAkB,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,CAAC,EACD,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;;;;;;;;;;;;;;;;;;;IA6BK,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;IAStB,uBAAuB,CAAC,IAAI,EAAE,MAAM;;;;;;IAYpC,cAAc,CAAC,EACnB,IAAI,EACJ,IAAI,EACJ,kBAAuB,EACvB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,EAAE,EACF,SAAS,GACV,EAAE,mBAAmB,GAAG,YAAY;;;;;;;;;;;;;;IAsD/B,cAAc,CAAC,EACnB,EAAE,EACF,OAAO,EACP,EAAE,EACF,SAAS,EACT,kBAAkB,EAClB,GAAG,UAAU,EACd,EAAE,mBAAmB,GAAG,YAAY;;;;;;;;;;;;;;CA6GtC"}
@@ -14,7 +14,7 @@ export function toProviderSummary(record) {
14
14
  logoUrl: record.logoUrl,
15
15
  };
16
16
  }
17
- function providerSnapshot(record, aggregatorMappings) {
17
+ export function providerSnapshot(record, aggregatorMappings) {
18
18
  return {
19
19
  slug: record.slug,
20
20
  name: record.name,
@@ -1 +1 @@
1
- {"version":3,"file":"game-provider.service.js","sourceRoot":"","sources":["../../../../src/casino/gaming/service/game-provider.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game-provider.service.js","sourceRoot":"","sources":["../../../../src/casino/gaming/service/game-provider.service.ts"],"names":[],"mappings":"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"}