@openora/core 0.4.1-canary.48 → 0.4.1-canary.50
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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/admin-console/__tests__/backoffice.service.test.js +62 -41
- package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
- package/dist/admin-console/contract/index.d.ts +14 -1
- package/dist/admin-console/contract/index.d.ts.map +1 -1
- package/dist/admin-console/contract/index.js +2 -9
- package/dist/admin-console/contract/index.js.map +1 -1
- package/dist/admin-console/router/index.d.ts +7 -0
- package/dist/admin-console/router/index.d.ts.map +1 -1
- package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
- package/dist/admin-console/service/backoffice.service.js +1 -0
- package/dist/admin-console/service/backoffice.service.js.map +1 -1
- package/dist/audit/contract/index.d.ts +2 -2
- package/dist/audit/plugin.d.ts.map +1 -1
- package/dist/audit/plugin.js +19 -4
- package/dist/audit/plugin.js.map +1 -1
- package/dist/audit/router/index.d.ts +1 -1
- package/dist/audit/service/audit.service.d.ts +1 -0
- package/dist/audit/service/audit.service.d.ts.map +1 -1
- package/dist/audit/service/audit.service.js +11 -6
- package/dist/audit/service/audit.service.js.map +1 -1
- package/dist/casino/gaming/__tests__/admin-reporting.test.js +114 -75
- package/dist/casino/gaming/__tests__/admin-reporting.test.js.map +1 -1
- package/dist/casino/gaming/__tests__/gaming.service.test.js +2 -2
- package/dist/casino/gaming/__tests__/gaming.service.test.js.map +1 -1
- package/dist/casino/gaming/admin-reporting.d.ts +2 -1
- package/dist/casino/gaming/admin-reporting.d.ts.map +1 -1
- package/dist/casino/gaming/admin-reporting.js +20 -3
- package/dist/casino/gaming/admin-reporting.js.map +1 -1
- package/dist/casino/server.d.ts +1 -0
- package/dist/casino/server.d.ts.map +1 -1
- package/dist/casino/server.js +1 -0
- package/dist/casino/server.js.map +1 -1
- package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js +3 -0
- package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js.map +1 -1
- package/dist/compliance/drizzle/migrations/0004_military_silk_fever.sql +1 -1
- package/dist/contracts/adapters/admin-game-reporting.d.ts +6 -0
- package/dist/contracts/adapters/admin-game-reporting.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-game-reporting.js.map +1 -1
- package/dist/contracts/adapters/admin-user-directory.d.ts +6 -1
- package/dist/contracts/adapters/admin-user-directory.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-user-directory.js.map +1 -1
- package/dist/contracts/adapters/audit.d.ts +10 -0
- package/dist/contracts/adapters/audit.d.ts.map +1 -1
- package/dist/contracts/adapters/audit.js.map +1 -1
- package/dist/contracts/adapters/cache.d.ts +3 -0
- package/dist/contracts/adapters/cache.d.ts.map +1 -1
- package/dist/contracts/adapters/cache.js.map +1 -1
- package/dist/contracts/adapters/chat-block-writer.d.ts +8 -0
- package/dist/contracts/adapters/chat-block-writer.d.ts.map +1 -0
- package/dist/contracts/adapters/chat-block-writer.js +3 -0
- package/dist/contracts/adapters/chat-block-writer.js.map +1 -0
- package/dist/contracts/adapters/chat-room-access.d.ts +6 -0
- package/dist/contracts/adapters/chat-room-access.d.ts.map +1 -0
- package/dist/contracts/adapters/chat-room-access.js +3 -0
- package/dist/contracts/adapters/chat-room-access.js.map +1 -0
- package/dist/contracts/adapters/chat-system-writer.d.ts +12 -0
- package/dist/contracts/adapters/chat-system-writer.d.ts.map +1 -0
- package/dist/contracts/adapters/chat-system-writer.js +3 -0
- package/dist/contracts/adapters/chat-system-writer.js.map +1 -0
- package/dist/contracts/adapters/index.d.ts +8 -2
- package/dist/contracts/adapters/index.d.ts.map +1 -1
- package/dist/contracts/adapters/index.js +4 -1
- package/dist/contracts/adapters/index.js.map +1 -1
- package/dist/contracts/adapters/realtime.d.ts +3 -0
- package/dist/contracts/adapters/realtime.d.ts.map +1 -1
- package/dist/contracts/adapters/realtime.js +14 -0
- package/dist/contracts/adapters/realtime.js.map +1 -1
- package/dist/contracts/adapters/wallet-commands.d.ts +2 -0
- package/dist/contracts/adapters/wallet-commands.d.ts.map +1 -1
- package/dist/contracts/adapters/wallet-commands.js.map +1 -1
- package/dist/contracts/schemas/chat-command-metadata.d.ts +47 -0
- package/dist/contracts/schemas/chat-command-metadata.d.ts.map +1 -0
- package/dist/contracts/schemas/chat-command-metadata.js +42 -0
- package/dist/contracts/schemas/chat-command-metadata.js.map +1 -0
- package/dist/contracts/schemas/chat-command.d.ts +87 -0
- package/dist/contracts/schemas/chat-command.d.ts.map +1 -0
- package/dist/contracts/schemas/chat-command.js +26 -0
- package/dist/contracts/schemas/chat-command.js.map +1 -0
- package/dist/contracts/schemas/events.d.ts +59 -0
- package/dist/contracts/schemas/events.d.ts.map +1 -1
- package/dist/contracts/schemas/events.js +52 -2
- package/dist/contracts/schemas/events.js.map +1 -1
- package/dist/contracts/schemas/game.d.ts.map +1 -1
- package/dist/contracts/schemas/game.js +0 -6
- package/dist/contracts/schemas/game.js.map +1 -1
- package/dist/contracts/schemas/index.d.ts +2 -0
- package/dist/contracts/schemas/index.d.ts.map +1 -1
- package/dist/contracts/schemas/index.js +2 -0
- package/dist/contracts/schemas/index.js.map +1 -1
- package/dist/contracts/schemas/wallet-tx.d.ts +3 -1
- package/dist/contracts/schemas/wallet-tx.d.ts.map +1 -1
- package/dist/contracts/schemas/wallet-tx.js +2 -0
- package/dist/contracts/schemas/wallet-tx.js.map +1 -1
- package/dist/engagement/chat/__tests__/chat.service.test.js +138 -10
- package/dist/engagement/chat/__tests__/chat.service.test.js.map +1 -1
- package/dist/engagement/chat/contract/index.d.ts +285 -0
- package/dist/engagement/chat/contract/index.d.ts.map +1 -1
- package/dist/engagement/chat/contract/index.js +23 -1
- package/dist/engagement/chat/contract/index.js.map +1 -1
- package/dist/engagement/chat/drizzle/migrations/0002_steep_zodiak.sql +3 -0
- package/dist/engagement/chat/drizzle/migrations/0003_stormy_king_bedlam.sql +9 -0
- package/dist/engagement/chat/drizzle/migrations/meta/0002_snapshot.json +576 -0
- package/dist/engagement/chat/drizzle/migrations/meta/0003_snapshot.json +652 -0
- package/dist/engagement/chat/drizzle/migrations/meta/_journal.json +14 -0
- package/dist/engagement/chat/plugin.d.ts.map +1 -1
- package/dist/engagement/chat/plugin.js +15 -3
- package/dist/engagement/chat/plugin.js.map +1 -1
- package/dist/engagement/chat/router/index.d.ts +242 -0
- package/dist/engagement/chat/router/index.d.ts.map +1 -1
- package/dist/engagement/chat/router/index.js +14 -2
- package/dist/engagement/chat/router/index.js.map +1 -1
- package/dist/engagement/chat/schema/index.d.ts +179 -0
- package/dist/engagement/chat/schema/index.d.ts.map +1 -1
- package/dist/engagement/chat/schema/index.js +17 -1
- package/dist/engagement/chat/schema/index.js.map +1 -1
- package/dist/engagement/chat/service/chat.service.d.ts +176 -8
- package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
- package/dist/engagement/chat/service/chat.service.js +129 -13
- package/dist/engagement/chat/service/chat.service.js.map +1 -1
- package/dist/engagement/chat-commands/contract/index.d.ts +252 -0
- package/dist/engagement/chat-commands/contract/index.d.ts.map +1 -0
- package/dist/engagement/chat-commands/contract/index.js +138 -0
- package/dist/engagement/chat-commands/contract/index.js.map +1 -0
- package/dist/engagement/chat-commands/drizzle/migrations/0000_daffy_lady_bullseye.sql +24 -0
- package/dist/engagement/chat-commands/drizzle/migrations/meta/0000_snapshot.json +164 -0
- package/dist/engagement/chat-commands/drizzle/migrations/meta/_journal.json +13 -0
- package/dist/engagement/chat-commands/drizzle.config.d.ts +4 -0
- package/dist/engagement/chat-commands/drizzle.config.d.ts.map +1 -0
- package/dist/engagement/chat-commands/drizzle.config.js +21 -0
- package/dist/engagement/chat-commands/drizzle.config.js.map +1 -0
- package/dist/engagement/chat-commands/migrate.d.ts +3 -0
- package/dist/engagement/chat-commands/migrate.d.ts.map +1 -0
- package/dist/engagement/chat-commands/migrate.js +15 -0
- package/dist/engagement/chat-commands/migrate.js.map +1 -0
- package/dist/engagement/chat-commands/plugin.d.ts +3 -0
- package/dist/engagement/chat-commands/plugin.d.ts.map +1 -0
- package/dist/engagement/chat-commands/plugin.js +15 -0
- package/dist/engagement/chat-commands/plugin.js.map +1 -0
- package/dist/engagement/chat-commands/router/index.d.ts +173 -0
- package/dist/engagement/chat-commands/router/index.d.ts.map +1 -0
- package/dist/engagement/chat-commands/router/index.js +61 -0
- package/dist/engagement/chat-commands/router/index.js.map +1 -0
- package/dist/engagement/chat-commands/schema/index.d.ts +337 -0
- package/dist/engagement/chat-commands/schema/index.d.ts.map +1 -0
- package/dist/engagement/chat-commands/schema/index.js +29 -0
- package/dist/engagement/chat-commands/schema/index.js.map +1 -0
- package/dist/engagement/chat-commands/seed/index.d.ts +3 -0
- package/dist/engagement/chat-commands/seed/index.d.ts.map +1 -0
- package/dist/engagement/chat-commands/seed/index.js +54 -0
- package/dist/engagement/chat-commands/seed/index.js.map +1 -0
- package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.d.ts +2 -0
- package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.d.ts.map +1 -0
- package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js +888 -0
- package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js.map +1 -0
- package/dist/engagement/chat-commands/service/chat-commands.service.d.ts +90 -0
- package/dist/engagement/chat-commands/service/chat-commands.service.d.ts.map +1 -0
- package/dist/engagement/chat-commands/service/chat-commands.service.js +641 -0
- package/dist/engagement/chat-commands/service/chat-commands.service.js.map +1 -0
- package/dist/engagement/contracts.d.ts +1 -0
- package/dist/engagement/contracts.d.ts.map +1 -1
- package/dist/engagement/contracts.js +1 -0
- package/dist/engagement/contracts.js.map +1 -1
- package/dist/engagement/index.d.ts +1 -0
- package/dist/engagement/index.d.ts.map +1 -1
- package/dist/engagement/index.js +1 -0
- package/dist/engagement/index.js.map +1 -1
- package/dist/engagement/server.d.ts +1 -0
- package/dist/engagement/server.d.ts.map +1 -1
- package/dist/engagement/server.js +1 -0
- package/dist/engagement/server.js.map +1 -1
- package/dist/iam/__tests__/admin-player-activity.test.js +111 -43
- package/dist/iam/__tests__/admin-player-activity.test.js.map +1 -1
- package/dist/iam/adapters/admin-player-activity.d.ts.map +1 -1
- package/dist/iam/adapters/admin-player-activity.js +21 -14
- package/dist/iam/adapters/admin-player-activity.js.map +1 -1
- package/dist/iam/service/iam.service.d.ts +1 -1
- package/dist/pam/identity/__tests__/admin-user-directory.test.js +24 -0
- package/dist/pam/identity/__tests__/admin-user-directory.test.js.map +1 -1
- package/dist/pam/identity/admin-user-directory.d.ts +16 -1
- package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
- package/dist/pam/identity/admin-user-directory.js +39 -6
- package/dist/pam/identity/admin-user-directory.js.map +1 -1
- package/dist/react/hooks/__tests__/use-event-stream.test.d.ts +2 -0
- package/dist/react/hooks/__tests__/use-event-stream.test.d.ts.map +1 -0
- package/dist/react/hooks/__tests__/use-event-stream.test.js +153 -0
- package/dist/react/hooks/__tests__/use-event-stream.test.js.map +1 -0
- package/dist/react/hooks/use-event-stream.d.ts +3 -3
- package/dist/react/hooks/use-event-stream.d.ts.map +1 -1
- package/dist/react/hooks/use-event-stream.js +60 -28
- package/dist/react/hooks/use-event-stream.js.map +1 -1
- package/dist/server/kernel/__tests__/cache.test.js +1 -0
- package/dist/server/kernel/__tests__/cache.test.js.map +1 -1
- package/dist/server/kernel/__tests__/realtime-transport.test.js +11 -0
- package/dist/server/kernel/__tests__/realtime-transport.test.js.map +1 -1
- package/dist/server/kernel/realtime-transport.d.ts +2 -0
- package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
- package/dist/server/kernel/realtime-transport.js +13 -1
- package/dist/server/kernel/realtime-transport.js.map +1 -1
- package/dist/server/kernel/redis-cache.d.ts +3 -0
- package/dist/server/kernel/redis-cache.d.ts.map +1 -1
- package/dist/server/kernel/redis-cache.js +10 -0
- package/dist/server/kernel/redis-cache.js.map +1 -1
- package/dist/server/runtime/create-app.d.ts.map +1 -1
- package/dist/server/runtime/create-app.js +2 -4
- package/dist/server/runtime/create-app.js.map +1 -1
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock.d.ts +1 -0
- package/dist/testing/mock.d.ts.map +1 -1
- package/dist/testing/mock.js +7 -2
- package/dist/testing/mock.js.map +1 -1
- package/dist/testing/realtime-transport-conformance.d.ts +35 -0
- package/dist/testing/realtime-transport-conformance.d.ts.map +1 -0
- package/dist/testing/realtime-transport-conformance.js +77 -0
- package/dist/testing/realtime-transport-conformance.js.map +1 -0
- package/dist/wallet/__tests__/wallet-commands.service.test.js +36 -6
- package/dist/wallet/__tests__/wallet-commands.service.test.js.map +1 -1
- package/dist/wallet/admin-reporting.d.ts +2 -2
- package/dist/wallet/contract/index.d.ts +6 -0
- package/dist/wallet/contract/index.d.ts.map +1 -1
- package/dist/wallet/drizzle/migrations/0004_reflective_shriek.sql +2 -0
- package/dist/wallet/drizzle/migrations/meta/0004_snapshot.json +567 -0
- package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/wallet/router/index.d.ts +4 -0
- package/dist/wallet/router/index.d.ts.map +1 -1
- package/dist/wallet/schema/index.d.ts +3 -3
- package/dist/wallet/schema/index.d.ts.map +1 -1
- package/dist/wallet/service/wallet-commands.service.d.ts +1 -1
- package/dist/wallet/service/wallet-commands.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet-commands.service.js +6 -3
- package/dist/wallet/service/wallet-commands.service.js.map +1 -1
- package/dist/wallet/service/wallet.service.d.ts +1 -1
- package/package.json +30 -7
- package/dist/engagement/chat/react/use-chat-stream.d.ts +0 -26
- package/dist/engagement/chat/react/use-chat-stream.d.ts.map +0 -1
- package/dist/engagement/chat/react/use-chat-stream.js +0 -54
- package/dist/engagement/chat/react/use-chat-stream.js.map +0 -1
- package/dist/engagement/chat/react/use-join-room.d.ts +0 -13
- package/dist/engagement/chat/react/use-join-room.d.ts.map +0 -1
- package/dist/engagement/chat/react/use-join-room.js +0 -25
- package/dist/engagement/chat/react/use-join-room.js.map +0 -1
- package/dist/engagement/react.d.ts +0 -3
- package/dist/engagement/react.d.ts.map +0 -1
- package/dist/engagement/react.js +0 -4
- package/dist/engagement/react.js.map +0 -1
|
@@ -72,14 +72,19 @@ export class AuditService {
|
|
|
72
72
|
// crash can never leave a 'pending' hash. Serialized via pg advisory lock so
|
|
73
73
|
// concurrent record() calls cannot fork the chain. Append-only.
|
|
74
74
|
async record(input) {
|
|
75
|
-
const row = await this.drizzle.db.transaction((tx) =>
|
|
76
|
-
|
|
75
|
+
const row = await this.drizzle.db.transaction((tx) => this.recordInTransaction(tx, input));
|
|
76
|
+
return toDto(row);
|
|
77
|
+
}
|
|
78
|
+
async recordInTransaction(tx, input) {
|
|
79
|
+
const txn = tx;
|
|
80
|
+
const row = await withAdvisoryXactLock(txn, 'audit_log', async () => {
|
|
81
|
+
const [latest] = await txn
|
|
77
82
|
.select({ hash: auditLog.hash })
|
|
78
83
|
.from(auditLog)
|
|
79
84
|
.orderBy(desc(auditLog.seq))
|
|
80
85
|
.limit(1);
|
|
81
86
|
const prevHash = latest?.hash ?? null;
|
|
82
|
-
const seqResult = await
|
|
87
|
+
const seqResult = await txn.execute(sql `SELECT nextval(pg_get_serial_sequence('audit_log', 'seq')) AS seq`);
|
|
83
88
|
const seq = +(seqResult.rows.at(0)?.seq ?? 0);
|
|
84
89
|
const id = randomUUID();
|
|
85
90
|
const createdAt = new Date();
|
|
@@ -97,13 +102,13 @@ export class AuditService {
|
|
|
97
102
|
createdAt: createdAt.toISOString(),
|
|
98
103
|
prevHash,
|
|
99
104
|
});
|
|
100
|
-
const [inserted] = await
|
|
105
|
+
const [inserted] = await txn
|
|
101
106
|
.insert(auditLog)
|
|
102
107
|
.values({ ...input, id, seq, prevHash, createdAt, hash })
|
|
103
108
|
.returning();
|
|
104
109
|
return inserted;
|
|
105
|
-
})
|
|
106
|
-
return
|
|
110
|
+
});
|
|
111
|
+
return row;
|
|
107
112
|
}
|
|
108
113
|
async list(filters) {
|
|
109
114
|
const db = this.drizzle.db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../../src/audit/service/audit.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAEL,YAAY,EACZ,YAAY,EACZ,oBAAoB,GAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAG7D,MAAM,eAAe,GAAG;IACtB,SAAS,EAAE,QAAQ,CAAC,SAAS;IAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;IACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;IAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;IACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;CACvB,CAAC;AAoBX,sFAAsF;AACtF,qFAAqF;AACrF,uFAAuF;AACvF,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC;SAC1C,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,YAAY,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9E,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA0B;IACpD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;QAC3C,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA0B;IACpD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,oFAAoF;AACpF,+EAA+E;AAC/E,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,UAAU,CAAC,OAA2B;IAC7C,MAAM,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,CAAC,EACD,QAAQ,EACR,MAAM,GACP,GAAG,OAAO,CAAC;IAEZ,OAAO,GAAG,CACR,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EACnD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAkC,CAAC,CAAC,CAAC,CAAC,SAAS,EAClF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAChD,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1E,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,EAClE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,EAC5D,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACvE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACvE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAClE,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAMlF,MAAM,OAAO,YAAY;IAEJ;IACA;IAFnB,YACmB,OAAuB,EACvB,MAAgB;QADhB,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAAU;IAChC,CAAC;IAEJ,+EAA+E;IAC/E,6EAA6E;IAC7E,gEAAgE;IAChE,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../../src/audit/service/audit.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,87 +1,126 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
|
|
3
|
+
import { sql } from 'drizzle-orm';
|
|
4
|
+
import { createTestDb } from '@openora/core/testing';
|
|
5
|
+
import { migrate } from '../migrate.js';
|
|
6
|
+
import { game, gameRound } from '../schema/index.js';
|
|
3
7
|
import { DrizzleAdminGameReporting } from '../admin-reporting.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
builder['orderBy'] = vi.fn((arg) => {
|
|
14
|
-
orderByArgs.push(arg);
|
|
15
|
-
return builder;
|
|
16
|
-
});
|
|
17
|
-
builder['where'] = vi.fn((arg) => {
|
|
18
|
-
whereArgs.push(arg);
|
|
19
|
-
return builder;
|
|
20
|
-
});
|
|
21
|
-
// oxlint-disable-next-line unicorn/no-thenable -- builder must be awaitable to mimic Drizzle.
|
|
22
|
-
builder['then'] = (resolve) => resolve(rows);
|
|
23
|
-
const db = { ...builder };
|
|
24
|
-
return { drizzle: mock({ db }), whereArgs, orderByArgs };
|
|
8
|
+
let db;
|
|
9
|
+
let reporting;
|
|
10
|
+
const AT = (iso) => new Date(iso);
|
|
11
|
+
async function seedGame(overrides = {}) {
|
|
12
|
+
const [row] = await db.drizzle.db
|
|
13
|
+
.insert(game)
|
|
14
|
+
.values({ name: 'Aces', provider: 'p', category: 'slots', ...overrides })
|
|
15
|
+
.returning();
|
|
16
|
+
return row;
|
|
25
17
|
}
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
18
|
+
async function seedRound(gameId, overrides = {}) {
|
|
19
|
+
const [row] = await db.drizzle.db
|
|
20
|
+
.insert(gameRound)
|
|
21
|
+
.values({
|
|
22
|
+
gameId,
|
|
23
|
+
userId: randomUUID(),
|
|
24
|
+
status: 'completed',
|
|
25
|
+
betAmount: '100',
|
|
26
|
+
winAmount: '0',
|
|
27
|
+
currency: 'USD',
|
|
28
|
+
startedAt: AT('2026-01-01T00:00:00.000Z'),
|
|
29
|
+
...overrides,
|
|
30
|
+
})
|
|
31
|
+
.returning();
|
|
32
|
+
return row;
|
|
37
33
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
]);
|
|
34
|
+
beforeAll(async () => {
|
|
35
|
+
db = await createTestDb([migrate]);
|
|
36
|
+
reporting = new DrizzleAdminGameReporting(db.drizzle);
|
|
37
|
+
});
|
|
38
|
+
afterAll(async () => {
|
|
39
|
+
await db.drop();
|
|
40
|
+
});
|
|
41
|
+
beforeEach(async () => {
|
|
42
|
+
await db.drizzle.db.execute(sql `TRUNCATE ${gameRound}, ${game} RESTART IDENTITY CASCADE`);
|
|
43
|
+
});
|
|
44
|
+
describe('DrizzleAdminGameReporting.listGamePerformance (real PG)', () => {
|
|
45
|
+
it('sums volume/revenue and counts distinct players/rounds for completed rounds', async () => {
|
|
46
|
+
const g = await seedGame();
|
|
47
|
+
await seedRound(g.id, { betAmount: '100', winAmount: '20' });
|
|
48
|
+
await seedRound(g.id, { betAmount: '50', winAmount: '80' });
|
|
49
|
+
const [row] = await reporting.listGamePerformance({});
|
|
50
|
+
expect(row).toMatchObject({
|
|
51
|
+
gameId: g.id,
|
|
52
|
+
name: 'Aces',
|
|
53
|
+
gameType: 'casino',
|
|
54
|
+
uniquePlayers: 2,
|
|
55
|
+
roundsPlayed: 2,
|
|
56
|
+
});
|
|
57
|
+
expect(Number(row?.volume)).toBe(150);
|
|
58
|
+
expect(Number(row?.revenue)).toBe(50);
|
|
54
59
|
});
|
|
55
|
-
it('keeps
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
expect(
|
|
60
|
+
it('keeps revenue negative when a game pays out more than it takes in (GGR can go negative)', async () => {
|
|
61
|
+
const g = await seedGame();
|
|
62
|
+
await seedRound(g.id, { betAmount: '10', winAmount: '100' });
|
|
63
|
+
const [row] = await reporting.listGamePerformance({});
|
|
64
|
+
expect(Number(row?.revenue)).toBe(-90);
|
|
65
|
+
});
|
|
66
|
+
it('still lists a game with zero completed rounds in range, with all-zero metrics', async () => {
|
|
67
|
+
const g = await seedGame({ name: 'Empty' });
|
|
68
|
+
await seedRound(g.id, { status: 'active' });
|
|
69
|
+
const [row] = await reporting.listGamePerformance({});
|
|
70
|
+
expect(row).toMatchObject({ gameId: g.id, uniquePlayers: 0, roundsPlayed: 0 });
|
|
71
|
+
expect(Number(row?.volume)).toBe(0);
|
|
72
|
+
expect(Number(row?.revenue)).toBe(0);
|
|
73
|
+
});
|
|
74
|
+
it('ignores non-completed rounds when summing metrics', async () => {
|
|
75
|
+
const g = await seedGame();
|
|
76
|
+
await seedRound(g.id, { status: 'active', betAmount: '999' });
|
|
77
|
+
await seedRound(g.id, { status: 'cancelled', betAmount: '999' });
|
|
78
|
+
const counted = await seedRound(g.id, { status: 'completed', betAmount: '10' });
|
|
79
|
+
const [row] = await reporting.listGamePerformance({});
|
|
80
|
+
expect(row?.roundsPlayed).toBe(1);
|
|
81
|
+
expect(Number(row?.volume)).toBe(10);
|
|
82
|
+
void counted;
|
|
60
83
|
});
|
|
61
|
-
it('
|
|
62
|
-
const {
|
|
63
|
-
|
|
64
|
-
await reporting.listGamePerformance({ gameType: 'sportsbook' });
|
|
65
|
-
expect(
|
|
84
|
+
it('filters by gameType, dropping non-matching games entirely', async () => {
|
|
85
|
+
const casino = await seedGame({ gameType: 'casino' });
|
|
86
|
+
await seedGame({ gameType: 'sportsbook' });
|
|
87
|
+
const rows = await reporting.listGamePerformance({ gameType: 'sportsbook' });
|
|
88
|
+
expect(rows.map((r) => r.gameId)).not.toContain(casino.id);
|
|
66
89
|
});
|
|
67
|
-
it('
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
await
|
|
71
|
-
|
|
90
|
+
it('scopes rounds by dateFrom/dateTo without dropping the game', async () => {
|
|
91
|
+
const g = await seedGame();
|
|
92
|
+
await seedRound(g.id, { betAmount: '10', startedAt: AT('2025-01-01T00:00:00.000Z') });
|
|
93
|
+
await seedRound(g.id, { betAmount: '20', startedAt: AT('2026-01-15T00:00:00.000Z') });
|
|
94
|
+
const [row] = await reporting.listGamePerformance({
|
|
95
|
+
dateFrom: AT('2026-01-01T00:00:00.000Z'),
|
|
96
|
+
dateTo: AT('2026-02-01T00:00:00.000Z'),
|
|
97
|
+
});
|
|
98
|
+
expect(row?.roundsPlayed).toBe(1);
|
|
99
|
+
expect(Number(row?.volume)).toBe(20);
|
|
100
|
+
});
|
|
101
|
+
it('scopes rounds by currency without dropping the game or mixing currencies', async () => {
|
|
102
|
+
const g = await seedGame();
|
|
103
|
+
await seedRound(g.id, { betAmount: '100', currency: 'USD' });
|
|
104
|
+
await seedRound(g.id, { betAmount: '50', currency: 'EUR' });
|
|
105
|
+
const [row] = await reporting.listGamePerformance({ currency: 'USD' });
|
|
106
|
+
expect(row?.roundsPlayed).toBe(1);
|
|
107
|
+
expect(Number(row?.volume)).toBe(100);
|
|
72
108
|
});
|
|
73
109
|
it('sorts by the requested column and direction', async () => {
|
|
74
|
-
const {
|
|
75
|
-
const
|
|
76
|
-
await
|
|
77
|
-
|
|
110
|
+
const low = await seedGame({ name: 'Low' });
|
|
111
|
+
const high = await seedGame({ name: 'High' });
|
|
112
|
+
await seedRound(low.id, { betAmount: '10' });
|
|
113
|
+
await seedRound(high.id, { betAmount: '100' });
|
|
114
|
+
const rows = await reporting.listGamePerformance({ sortBy: 'volume', sortDir: 'asc' });
|
|
115
|
+
expect(rows.map((r) => r.gameId)).toEqual([low.id, high.id]);
|
|
78
116
|
});
|
|
79
|
-
it('defaults to
|
|
80
|
-
const {
|
|
81
|
-
const
|
|
82
|
-
await
|
|
83
|
-
|
|
84
|
-
|
|
117
|
+
it('defaults to sorting by volume descending when sortBy is omitted', async () => {
|
|
118
|
+
const low = await seedGame({ name: 'Low' });
|
|
119
|
+
const high = await seedGame({ name: 'High' });
|
|
120
|
+
await seedRound(low.id, { betAmount: '10' });
|
|
121
|
+
await seedRound(high.id, { betAmount: '100' });
|
|
122
|
+
const rows = await reporting.listGamePerformance({});
|
|
123
|
+
expect(rows.map((r) => r.gameId)).toEqual([high.id, low.id]);
|
|
85
124
|
});
|
|
86
125
|
});
|
|
87
126
|
//# sourceMappingURL=admin-reporting.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-reporting.test.js","sourceRoot":"","sources":["../../../../src/casino/gaming/__tests__/admin-reporting.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-reporting.test.js","sourceRoot":"","sources":["../../../../src/casino/gaming/__tests__/admin-reporting.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ function makeWalletCommands(debitResult) {
|
|
|
18
18
|
function makeService({ provider = mock({
|
|
19
19
|
launchGame: vi.fn().mockResolvedValue({ launchUrl: 'https://mock/play', token: 'tok' }),
|
|
20
20
|
endRound: vi.fn(),
|
|
21
|
-
}), playEligibility = unrestricted, walletCommands = makeWalletCommands({ ok: true, newBalance: '0' }), } = {}) {
|
|
21
|
+
}), playEligibility = unrestricted, walletCommands = makeWalletCommands({ ok: true, newBalance: '0', currency: 'USD' }), } = {}) {
|
|
22
22
|
return new GamingService(db.drizzle, noopEvents, provider, playEligibility, walletCommands);
|
|
23
23
|
}
|
|
24
24
|
async function seedGame(overrides = {}) {
|
|
@@ -72,7 +72,7 @@ describe('GamingService.startRound (real PG)', () => {
|
|
|
72
72
|
});
|
|
73
73
|
it('debits the stake and persists the round on sufficient balance', async () => {
|
|
74
74
|
const created = await seedGame({ id: '00000000-0000-0000-0000-0000000000a1', name: 'Aces' });
|
|
75
|
-
const walletCommands = makeWalletCommands({ ok: true, newBalance: '90' });
|
|
75
|
+
const walletCommands = makeWalletCommands({ ok: true, newBalance: '90', currency: 'USD' });
|
|
76
76
|
const launchGame = vi.fn().mockResolvedValue({ launchUrl: 'https://mock/play', token: 'tok' });
|
|
77
77
|
const svc = makeService({
|
|
78
78
|
provider: mock({ launchGame, endRound: vi.fn() }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gaming.service.test.js","sourceRoot":"","sources":["../../../../src/casino/gaming/__tests__/gaming.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAOlC,OAAO,EAAE,YAAY,EAAe,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AAEtC,IAAI,EAAU,CAAC;AAEf,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;AAElC,MAAM,WAAW,GAAG,CAAC,YAAqB,EAAE,EAAE,CAC5C,IAAI,CAAsB,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAEvF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAExC,SAAS,kBAAkB,CAAC,WAA+B;IACzD,OAAO,IAAI,CAAiB;QAC1B,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAC7C,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,QAAQ,GAAG,IAAI,CAAc;IAC3B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACvF,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;CAClB,CAAC,EACF,eAAe,GAAG,YAAY,EAC9B,cAAc,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"gaming.service.test.js","sourceRoot":"","sources":["../../../../src/casino/gaming/__tests__/gaming.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { AdminGameReporting, GamePerformanceFilter, GamePerformanceRow } from '@openora/core/contracts';
|
|
1
|
+
import type { AdminGameReporting, GamePerformanceFilter, GamePerformanceRow, PlayerGameStats } from '@openora/core/contracts';
|
|
2
2
|
import { DrizzleService } from '@openora/core/server';
|
|
3
3
|
export declare class DrizzleAdminGameReporting implements AdminGameReporting {
|
|
4
4
|
private readonly drizzle;
|
|
5
5
|
constructor(drizzle: DrizzleService);
|
|
6
6
|
listGamePerformance(filter: GamePerformanceFilter): Promise<GamePerformanceRow[]>;
|
|
7
|
+
getPlayerStats(userId: string): Promise<PlayerGameStats>;
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=admin-reporting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-reporting.d.ts","sourceRoot":"","sources":["../../../src/casino/gaming/admin-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"admin-reporting.d.ts","sourceRoot":"","sources":["../../../src/casino/gaming/admin-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,qBAAa,yBAA0B,YAAW,kBAAkB;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAE9C,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA6DjF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAc/D"}
|
|
@@ -8,15 +8,18 @@ export class DrizzleAdminGameReporting {
|
|
|
8
8
|
}
|
|
9
9
|
async listGamePerformance(filter) {
|
|
10
10
|
const db = this.drizzle.db;
|
|
11
|
-
// status/date filters scope which ROUNDS count towards a game's metrics,
|
|
12
|
-
// live in the join condition, not WHERE - a game with zero completed rounds
|
|
13
|
-
// range still appears with all-zero metrics rather than being dropped from the
|
|
11
|
+
// status/date/currency filters scope which ROUNDS count towards a game's metrics,
|
|
12
|
+
// so they live in the join condition, not WHERE - a game with zero completed rounds
|
|
13
|
+
// in range still appears with all-zero metrics rather than being dropped from the
|
|
14
14
|
// report. `gameType` narrows which GAMES appear at all, so it stays in WHERE.
|
|
15
15
|
const joinConditions = [
|
|
16
16
|
eq(gameRound.gameId, game.id),
|
|
17
17
|
eq(gameRound.status, 'completed'),
|
|
18
18
|
filter.dateFrom ? gte(gameRound.startedAt, filter.dateFrom) : undefined,
|
|
19
19
|
filter.dateTo ? lte(gameRound.startedAt, filter.dateTo) : undefined,
|
|
20
|
+
// No currency filter mixes bet/win amounts across currencies into one unconverted
|
|
21
|
+
// sum - the operator UI shows a disclaimer in that case; this is intentional.
|
|
22
|
+
filter.currency ? eq(gameRound.currency, filter.currency) : undefined,
|
|
20
23
|
].filter(Boolean);
|
|
21
24
|
const where = filter.gameType ? eq(game.gameType, filter.gameType) : undefined;
|
|
22
25
|
const volume = sql `coalesce(sum(${gameRound.betAmount}), 0)`;
|
|
@@ -58,5 +61,19 @@ export class DrizzleAdminGameReporting {
|
|
|
58
61
|
roundsPlayed: Number(r.roundsPlayed),
|
|
59
62
|
}));
|
|
60
63
|
}
|
|
64
|
+
async getPlayerStats(userId) {
|
|
65
|
+
const db = this.drizzle.db;
|
|
66
|
+
const [row] = await db
|
|
67
|
+
.select({
|
|
68
|
+
totalWagered: sql `coalesce(sum(${gameRound.betAmount}), 0)`,
|
|
69
|
+
totalBets: sql `count(${gameRound.id})`,
|
|
70
|
+
})
|
|
71
|
+
.from(gameRound)
|
|
72
|
+
.where(and(eq(gameRound.userId, userId), eq(gameRound.status, 'completed')));
|
|
73
|
+
return {
|
|
74
|
+
totalWagered: row?.totalWagered ?? '0',
|
|
75
|
+
totalBets: Number(row?.totalBets ?? 0),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
61
78
|
}
|
|
62
79
|
//# sourceMappingURL=admin-reporting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-reporting.js","sourceRoot":"","sources":["../../../src/casino/gaming/admin-reporting.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-reporting.js","sourceRoot":"","sources":["../../../src/casino/gaming/admin-reporting.ts"],"names":[],"mappings":"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"}
|
package/dist/casino/server.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/casino/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/casino/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/casino/server.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/casino/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/casino/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac-kyc-webhook-verifier.test.js","sourceRoot":"","sources":["../../../src/compliance/__tests__/hmac-kyc-webhook-verifier.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hmac-kyc-webhook-verifier.test.js","sourceRoot":"","sources":["../../../src/compliance/__tests__/hmac-kyc-webhook-verifier.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
DROP INDEX "kyc_verification_reference_id_idx";--> statement-breakpoint
|
|
2
|
-
CREATE UNIQUE INDEX "kyc_verification_reference_id_key" ON "kyc_verification" USING btree ("reference_id");
|
|
2
|
+
CREATE UNIQUE INDEX "kyc_verification_reference_id_key" ON "kyc_verification" USING btree ("reference_id");
|
|
@@ -6,6 +6,7 @@ export type GamePerformanceFilter = {
|
|
|
6
6
|
dateFrom?: Date;
|
|
7
7
|
dateTo?: Date;
|
|
8
8
|
gameType?: GameType;
|
|
9
|
+
currency?: string;
|
|
9
10
|
sortBy?: GamePerformanceSortBy;
|
|
10
11
|
sortDir?: 'asc' | 'desc';
|
|
11
12
|
};
|
|
@@ -18,8 +19,13 @@ export type GamePerformanceRow = {
|
|
|
18
19
|
uniquePlayers: number;
|
|
19
20
|
roundsPlayed: number;
|
|
20
21
|
};
|
|
22
|
+
export type PlayerGameStats = {
|
|
23
|
+
totalWagered: string;
|
|
24
|
+
totalBets: number;
|
|
25
|
+
};
|
|
21
26
|
export type AdminGameReporting = {
|
|
22
27
|
listGamePerformance(filter: GamePerformanceFilter): Promise<GamePerformanceRow[]>;
|
|
28
|
+
getPlayerStats(userId: string): Promise<PlayerGameStats>;
|
|
23
29
|
};
|
|
24
30
|
export declare const ADMIN_GAME_REPORTING: Token<AdminGameReporting>;
|
|
25
31
|
//# sourceMappingURL=admin-game-reporting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-game-reporting.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-game-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAOnD,eAAO,MAAM,4BAA4B,qFAO/B,CAAC;AACX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B,CAAC;AAMF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-game-reporting.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-game-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAOnD,eAAO,MAAM,4BAA4B,qFAO/B,CAAC;AACX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B,CAAC;AAMF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,kBAAkB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-game-reporting.js","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-game-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAGrD,0EAA0E;AAC1E,gFAAgF;AAChF,2EAA2E;AAC3E,6CAA6C;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,eAAe;IACf,cAAc;CACN,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-game-reporting.js","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-game-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAGrD,0EAA0E;AAC1E,gFAAgF;AAChF,2EAA2E;AAC3E,6CAA6C;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,eAAe;IACf,cAAc;CACN,CAAC;AAoCX,MAAM,CAAC,MAAM,oBAAoB,GAA8B,WAAW,CAAC,sBAAsB,CAAC,CAAC"}
|
|
@@ -28,6 +28,10 @@ export type AdminPlayerSummary = {
|
|
|
28
28
|
email: string;
|
|
29
29
|
kycStatus: KycStatus | null;
|
|
30
30
|
language: string | null;
|
|
31
|
+
avatarUrl: string | null;
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
level: number;
|
|
34
|
+
currency: string;
|
|
31
35
|
};
|
|
32
36
|
export type AdminUserDirectory = {
|
|
33
37
|
count(): Promise<number>;
|
|
@@ -41,7 +45,8 @@ export type AdminUserDirectory = {
|
|
|
41
45
|
role?: UserRole;
|
|
42
46
|
}, actorId: string, meta?: ClientMeta): Promise<AdminUserRow | null>;
|
|
43
47
|
lookupPlayers(userIds: readonly string[]): Promise<AdminPlayerSummary[]>;
|
|
44
|
-
findPlayerIds(query: string): Promise<string[]>;
|
|
48
|
+
findPlayerIds(query: string, limit?: number): Promise<string[]>;
|
|
49
|
+
getPlayerByUsername(username: string): Promise<AdminPlayerSummary | null>;
|
|
45
50
|
};
|
|
46
51
|
export declare const ADMIN_USER_DIRECTORY: Token<AdminUserDirectory>;
|
|
47
52
|
//# sourceMappingURL=admin-user-directory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-user-directory.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-user-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAO3C,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,yBAAyB,8EAO5B,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-user-directory.d.ts","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-user-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAO3C,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,yBAAyB,8EAO5B,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAE9C,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,EAC9C,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAGhC,aAAa,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAIzE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAMhE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,kBAAkB,CAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-user-directory.js","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-user-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAsBrD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW;IACX,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;IACV,eAAe;CACP,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-user-directory.js","sourceRoot":"","sources":["../../../src/contracts/adapters/admin-user-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAsBrD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW;IACX,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;IACV,eAAe;CACP,CAAC;AAmDX,MAAM,CAAC,MAAM,oBAAoB,GAA8B,WAAW,CAAC,sBAAsB,CAAC,CAAC"}
|