@openora/core 0.4.1-canary.37 → 0.4.1-canary.39

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 (259) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/__tests__/backoffice.router.test.js +67 -51
  3. package/dist/admin-console/__tests__/backoffice.router.test.js.map +1 -1
  4. package/dist/admin-console/__tests__/backoffice.service.test.js +1 -13
  5. package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
  6. package/dist/analytics/__tests__/analytics.contract.test.js +12 -0
  7. package/dist/analytics/__tests__/analytics.contract.test.js.map +1 -1
  8. package/dist/analytics/__tests__/financial-analytics.service.test.js +3 -3
  9. package/dist/analytics/__tests__/financial-analytics.service.test.js.map +1 -1
  10. package/dist/analytics/service/financial-analytics.service.d.ts.map +1 -1
  11. package/dist/analytics/service/financial-analytics.service.js +14 -17
  12. package/dist/analytics/service/financial-analytics.service.js.map +1 -1
  13. package/dist/analytics/service/funnel-analytics.service.d.ts.map +1 -1
  14. package/dist/analytics/service/funnel-analytics.service.js +8 -11
  15. package/dist/analytics/service/funnel-analytics.service.js.map +1 -1
  16. package/dist/audit/__tests__/audit.service.test.js +128 -251
  17. package/dist/audit/__tests__/audit.service.test.js.map +1 -1
  18. package/dist/casino/gaming/__tests__/gaming.service.test.js +83 -89
  19. package/dist/casino/gaming/__tests__/gaming.service.test.js.map +1 -1
  20. package/dist/casino/lobby/__tests__/lobby.cache.test.js +42 -33
  21. package/dist/casino/lobby/__tests__/lobby.cache.test.js.map +1 -1
  22. package/dist/cms/__tests__/cms.reads.test.js +59 -80
  23. package/dist/cms/__tests__/cms.reads.test.js.map +1 -1
  24. package/dist/cms/__tests__/cms.router.test.js +62 -20
  25. package/dist/cms/__tests__/cms.router.test.js.map +1 -1
  26. package/dist/cms/__tests__/cms.service.test.js +116 -14
  27. package/dist/cms/__tests__/cms.service.test.js.map +1 -1
  28. package/dist/common/errors/__tests__/errors.mapper.test.d.ts +2 -0
  29. package/dist/common/errors/__tests__/errors.mapper.test.d.ts.map +1 -0
  30. package/dist/common/errors/__tests__/errors.mapper.test.js +59 -0
  31. package/dist/common/errors/__tests__/errors.mapper.test.js.map +1 -0
  32. package/dist/compliance/__tests__/assert.test.d.ts +2 -0
  33. package/dist/compliance/__tests__/assert.test.d.ts.map +1 -0
  34. package/dist/compliance/__tests__/assert.test.js +34 -0
  35. package/dist/compliance/__tests__/assert.test.js.map +1 -0
  36. package/dist/compliance/__tests__/compliance.service.test.js +149 -84
  37. package/dist/compliance/__tests__/compliance.service.test.js.map +1 -1
  38. package/dist/compliance/__tests__/kyc.service.test.js +247 -155
  39. package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
  40. package/dist/compliance/__tests__/limits.contract.test.d.ts +2 -0
  41. package/dist/compliance/__tests__/limits.contract.test.d.ts.map +1 -0
  42. package/dist/compliance/__tests__/limits.contract.test.js +43 -0
  43. package/dist/compliance/__tests__/limits.contract.test.js.map +1 -0
  44. package/dist/compliance/__tests__/rg-monitoring.service.test.js +256 -101
  45. package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +1 -1
  46. package/dist/compliance/__tests__/rg.contract.test.js +1 -20
  47. package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
  48. package/dist/compliance/__tests__/rg.router.test.js +113 -65
  49. package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
  50. package/dist/compliance/__tests__/rg.service.test.js +277 -235
  51. package/dist/compliance/__tests__/rg.service.test.js.map +1 -1
  52. package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
  53. package/dist/compliance/service/rg-monitoring.service.js +11 -8
  54. package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
  55. package/dist/contracts/__tests__/compose-contract.test.d.ts +2 -0
  56. package/dist/contracts/__tests__/compose-contract.test.d.ts.map +1 -0
  57. package/dist/contracts/__tests__/compose-contract.test.js +27 -0
  58. package/dist/contracts/__tests__/compose-contract.test.js.map +1 -0
  59. package/dist/contracts/adapters/__tests__/token.test.d.ts +2 -0
  60. package/dist/contracts/adapters/__tests__/token.test.d.ts.map +1 -0
  61. package/dist/contracts/adapters/__tests__/token.test.js +14 -0
  62. package/dist/contracts/adapters/__tests__/token.test.js.map +1 -0
  63. package/dist/contracts/schemas/__tests__/events.test.d.ts +2 -0
  64. package/dist/contracts/schemas/__tests__/events.test.d.ts.map +1 -0
  65. package/dist/contracts/schemas/__tests__/events.test.js +51 -0
  66. package/dist/contracts/schemas/__tests__/events.test.js.map +1 -0
  67. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts +2 -0
  68. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts.map +1 -0
  69. package/dist/contracts/schemas/__tests__/igaming-config.test.js +38 -0
  70. package/dist/contracts/schemas/__tests__/igaming-config.test.js.map +1 -0
  71. package/dist/contracts/schemas/reporting.d.ts +7 -2
  72. package/dist/contracts/schemas/reporting.d.ts.map +1 -1
  73. package/dist/contracts/schemas/reporting.js +2 -1
  74. package/dist/contracts/schemas/reporting.js.map +1 -1
  75. package/dist/engagement/chat/__tests__/chat.service.test.js +524 -364
  76. package/dist/engagement/chat/__tests__/chat.service.test.js.map +1 -1
  77. package/dist/engagement/notifications/__tests__/notifications.service.test.js +125 -68
  78. package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +1 -1
  79. package/dist/iam/__tests__/iam.service.test.js +367 -596
  80. package/dist/iam/__tests__/iam.service.test.js.map +1 -1
  81. package/dist/pam/identity/__tests__/admin-user-directory.test.js +144 -68
  82. package/dist/pam/identity/__tests__/admin-user-directory.test.js.map +1 -1
  83. package/dist/pam/identity/__tests__/identity.rate-limit.test.js +33 -22
  84. package/dist/pam/identity/__tests__/identity.rate-limit.test.js.map +1 -1
  85. package/dist/pam/identity/__tests__/identity.service.test.js +217 -298
  86. package/dist/pam/identity/__tests__/identity.service.test.js.map +1 -1
  87. package/dist/pam/identity/__tests__/login-enforcement.service.test.js +97 -32
  88. package/dist/pam/identity/__tests__/login-enforcement.service.test.js.map +1 -1
  89. package/dist/pam/identity/__tests__/phone-login.service.test.js +163 -134
  90. package/dist/pam/identity/__tests__/phone-login.service.test.js.map +1 -1
  91. package/dist/pam/identity/__tests__/rg-guard.test.d.ts +2 -0
  92. package/dist/pam/identity/__tests__/rg-guard.test.d.ts.map +1 -0
  93. package/dist/pam/identity/__tests__/rg-guard.test.js +21 -0
  94. package/dist/pam/identity/__tests__/rg-guard.test.js.map +1 -0
  95. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +73 -26
  96. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
  97. package/dist/pam/player-management/__tests__/player.router.test.js +63 -46
  98. package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
  99. package/dist/pam/player-management/__tests__/player.service.test.js +207 -111
  100. package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
  101. package/dist/pam/profile/__tests__/profile.service.test.js +89 -41
  102. package/dist/pam/profile/__tests__/profile.service.test.js.map +1 -1
  103. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts +2 -0
  104. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts.map +1 -0
  105. package/dist/pam/shared/__tests__/shared-mappers.test.js +55 -0
  106. package/dist/pam/shared/__tests__/shared-mappers.test.js.map +1 -0
  107. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +72 -30
  108. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +1 -1
  109. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +308 -235
  110. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
  111. package/dist/pam/tag/__tests__/tag-rule.service.test.js +136 -140
  112. package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +1 -1
  113. package/dist/pam/tag/__tests__/tag.router.test.js +76 -25
  114. package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -1
  115. package/dist/pam/tag/__tests__/tag.service.test.js +224 -247
  116. package/dist/pam/tag/__tests__/tag.service.test.js.map +1 -1
  117. package/dist/server/auth/__tests__/admin-guard.test.js +107 -117
  118. package/dist/server/auth/__tests__/admin-guard.test.js.map +1 -1
  119. package/dist/server/auth/__tests__/permission-levels.test.d.ts +2 -0
  120. package/dist/server/auth/__tests__/permission-levels.test.d.ts.map +1 -0
  121. package/dist/server/auth/__tests__/permission-levels.test.js +89 -0
  122. package/dist/server/auth/__tests__/permission-levels.test.js.map +1 -0
  123. package/dist/server/auth/__tests__/session-resolver.test.js +45 -13
  124. package/dist/server/auth/__tests__/session-resolver.test.js.map +1 -1
  125. package/dist/server/db/__tests__/query-helpers.test.js +72 -1
  126. package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
  127. package/dist/server/db/outbox/__tests__/relay.test.js +74 -81
  128. package/dist/server/db/outbox/__tests__/relay.test.js.map +1 -1
  129. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js +204 -154
  130. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js.map +1 -1
  131. package/dist/server/kernel/__tests__/cache.test.js +26 -13
  132. package/dist/server/kernel/__tests__/cache.test.js.map +1 -1
  133. package/dist/server/kernel/__tests__/domain-error.test.d.ts +2 -0
  134. package/dist/server/kernel/__tests__/domain-error.test.d.ts.map +1 -0
  135. package/dist/server/kernel/__tests__/domain-error.test.js +35 -0
  136. package/dist/server/kernel/__tests__/domain-error.test.js.map +1 -0
  137. package/dist/server/kernel/__tests__/error-reporter.test.d.ts +2 -0
  138. package/dist/server/kernel/__tests__/error-reporter.test.d.ts.map +1 -0
  139. package/dist/server/kernel/__tests__/error-reporter.test.js +52 -0
  140. package/dist/server/kernel/__tests__/error-reporter.test.js.map +1 -0
  141. package/dist/server/kernel/__tests__/event-bus.test.js +60 -20
  142. package/dist/server/kernel/__tests__/event-bus.test.js.map +1 -1
  143. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts +2 -0
  144. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts.map +1 -0
  145. package/dist/server/kernel/__tests__/orpc-error-map.test.js +54 -0
  146. package/dist/server/kernel/__tests__/orpc-error-map.test.js.map +1 -0
  147. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts +2 -0
  148. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts.map +1 -0
  149. package/dist/server/kernel/__tests__/platform-config-loader.test.js +112 -0
  150. package/dist/server/kernel/__tests__/platform-config-loader.test.js.map +1 -0
  151. package/dist/server/kernel/__tests__/rate-limiter.test.js +22 -13
  152. package/dist/server/kernel/__tests__/rate-limiter.test.js.map +1 -1
  153. package/dist/server/kernel/__tests__/realtime-transport.test.d.ts.map +1 -0
  154. package/dist/{testing/fakes → server/kernel}/__tests__/realtime-transport.test.js.map +1 -1
  155. package/dist/server/kernel/__tests__/redis-cache.test.js +34 -34
  156. package/dist/server/kernel/__tests__/redis-cache.test.js.map +1 -1
  157. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js +49 -44
  158. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js.map +1 -1
  159. package/dist/server/kernel/__tests__/redis-streams-broker.test.js +141 -262
  160. package/dist/server/kernel/__tests__/redis-streams-broker.test.js.map +1 -1
  161. package/dist/server/kernel/__tests__/request-context.test.d.ts +2 -0
  162. package/dist/server/kernel/__tests__/request-context.test.d.ts.map +1 -0
  163. package/dist/server/kernel/__tests__/request-context.test.js +64 -0
  164. package/dist/server/kernel/__tests__/request-context.test.js.map +1 -0
  165. package/dist/server/kernel/__tests__/router-utils.test.d.ts +2 -0
  166. package/dist/server/kernel/__tests__/router-utils.test.d.ts.map +1 -0
  167. package/dist/server/kernel/__tests__/router-utils.test.js +80 -0
  168. package/dist/server/kernel/__tests__/router-utils.test.js.map +1 -0
  169. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  170. package/dist/server/kernel/bullmq-job-queue.js +8 -2
  171. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  172. package/dist/server/runtime/__tests__/create-app.test.js +26 -18
  173. package/dist/server/runtime/__tests__/create-app.test.js.map +1 -1
  174. package/dist/testing/index.d.ts +2 -6
  175. package/dist/testing/index.d.ts.map +1 -1
  176. package/dist/testing/index.js +2 -10
  177. package/dist/testing/index.js.map +1 -1
  178. package/dist/testing/mock.d.ts +28 -16
  179. package/dist/testing/mock.d.ts.map +1 -1
  180. package/dist/testing/mock.js +58 -37
  181. package/dist/testing/mock.js.map +1 -1
  182. package/dist/testing/real-infra.d.ts +47 -0
  183. package/dist/testing/real-infra.d.ts.map +1 -0
  184. package/dist/testing/real-infra.js +122 -0
  185. package/dist/testing/real-infra.js.map +1 -0
  186. package/dist/wallet/__tests__/admin-reporting.test.js +201 -90
  187. package/dist/wallet/__tests__/admin-reporting.test.js.map +1 -1
  188. package/dist/wallet/__tests__/rail-for.test.d.ts +2 -0
  189. package/dist/wallet/__tests__/rail-for.test.d.ts.map +1 -0
  190. package/dist/wallet/__tests__/rail-for.test.js +22 -0
  191. package/dist/wallet/__tests__/rail-for.test.js.map +1 -0
  192. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +82 -63
  193. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
  194. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +414 -437
  195. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
  196. package/dist/wallet/__tests__/wallet-commands.service.test.js +116 -155
  197. package/dist/wallet/__tests__/wallet-commands.service.test.js.map +1 -1
  198. package/dist/wallet/__tests__/wallet-kyc-gate.test.js +63 -42
  199. package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +1 -1
  200. package/dist/wallet/__tests__/wallet-webhook.router.test.js +129 -51
  201. package/dist/wallet/__tests__/wallet-webhook.router.test.js.map +1 -1
  202. package/dist/wallet/__tests__/wallet.rate-limit.test.js +74 -21
  203. package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +1 -1
  204. package/dist/wallet/__tests__/wallet.router.test.js +56 -36
  205. package/dist/wallet/__tests__/wallet.router.test.js.map +1 -1
  206. package/dist/wallet/__tests__/wallet.service.test.js +623 -887
  207. package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
  208. package/package.json +1 -2
  209. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts +0 -2
  210. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts.map +0 -1
  211. package/dist/casino/lobby/__tests__/lobby.service.test.js +0 -11
  212. package/dist/casino/lobby/__tests__/lobby.service.test.js.map +0 -1
  213. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts +0 -2
  214. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts.map +0 -1
  215. package/dist/contracts/schemas/__tests__/identity-schemas.test.js +0 -43
  216. package/dist/contracts/schemas/__tests__/identity-schemas.test.js.map +0 -1
  217. package/dist/testing/fakes/__tests__/cache.test.d.ts +0 -2
  218. package/dist/testing/fakes/__tests__/cache.test.d.ts.map +0 -1
  219. package/dist/testing/fakes/__tests__/cache.test.js +0 -89
  220. package/dist/testing/fakes/__tests__/cache.test.js.map +0 -1
  221. package/dist/testing/fakes/__tests__/job-queue.test.d.ts +0 -2
  222. package/dist/testing/fakes/__tests__/job-queue.test.d.ts.map +0 -1
  223. package/dist/testing/fakes/__tests__/job-queue.test.js +0 -135
  224. package/dist/testing/fakes/__tests__/job-queue.test.js.map +0 -1
  225. package/dist/testing/fakes/__tests__/rate-limiter.test.d.ts +0 -2
  226. package/dist/testing/fakes/__tests__/rate-limiter.test.d.ts.map +0 -1
  227. package/dist/testing/fakes/__tests__/rate-limiter.test.js +0 -83
  228. package/dist/testing/fakes/__tests__/rate-limiter.test.js.map +0 -1
  229. package/dist/testing/fakes/__tests__/realtime-authorizer.test.d.ts +0 -2
  230. package/dist/testing/fakes/__tests__/realtime-authorizer.test.d.ts.map +0 -1
  231. package/dist/testing/fakes/__tests__/realtime-authorizer.test.js +0 -19
  232. package/dist/testing/fakes/__tests__/realtime-authorizer.test.js.map +0 -1
  233. package/dist/testing/fakes/__tests__/realtime-transport.test.d.ts.map +0 -1
  234. package/dist/testing/fakes/cache.d.ts +0 -14
  235. package/dist/testing/fakes/cache.d.ts.map +0 -1
  236. package/dist/testing/fakes/cache.js +0 -56
  237. package/dist/testing/fakes/cache.js.map +0 -1
  238. package/dist/testing/fakes/event-bus.d.ts +0 -17
  239. package/dist/testing/fakes/event-bus.d.ts.map +0 -1
  240. package/dist/testing/fakes/event-bus.js +0 -30
  241. package/dist/testing/fakes/event-bus.js.map +0 -1
  242. package/dist/testing/fakes/job-queue.d.ts +0 -40
  243. package/dist/testing/fakes/job-queue.d.ts.map +0 -1
  244. package/dist/testing/fakes/job-queue.js +0 -200
  245. package/dist/testing/fakes/job-queue.js.map +0 -1
  246. package/dist/testing/fakes/rate-limiter.d.ts +0 -11
  247. package/dist/testing/fakes/rate-limiter.d.ts.map +0 -1
  248. package/dist/testing/fakes/rate-limiter.js +0 -39
  249. package/dist/testing/fakes/rate-limiter.js.map +0 -1
  250. package/dist/testing/fakes/realtime-authorizer.d.ts +0 -10
  251. package/dist/testing/fakes/realtime-authorizer.d.ts.map +0 -1
  252. package/dist/testing/fakes/realtime-authorizer.js +0 -10
  253. package/dist/testing/fakes/realtime-authorizer.js.map +0 -1
  254. package/dist/testing/fakes/realtime-transport.d.ts +0 -2
  255. package/dist/testing/fakes/realtime-transport.d.ts.map +0 -1
  256. package/dist/testing/fakes/realtime-transport.js +0 -2
  257. package/dist/testing/fakes/realtime-transport.js.map +0 -1
  258. /package/dist/{testing/fakes → server/kernel}/__tests__/realtime-transport.test.d.ts +0 -0
  259. /package/dist/{testing/fakes → server/kernel}/__tests__/realtime-transport.test.js +0 -0
@@ -1,84 +1,100 @@
1
1
  import { describe, it, expect, vi } from 'vitest';
2
- import { mock, adminCaller, testContext } from '../../testing/mock.js';
3
2
  import { call, ORPCError } from '@orpc/server';
3
+ import { mock, testContext, makeAuditWriter, makeAdminGuard } from '../../testing/mock.js';
4
4
  import { createBackofficeRouter } from '../router/index.js';
5
+ import { BackofficeService } from '../service/backoffice.service.js';
5
6
  const CTX = testContext();
6
7
  const USER_ID = '63d3c264-3bf4-4d08-9b92-ea3eaf40a440';
7
- const USER = {
8
- id: USER_ID,
9
- email: 'p@example.com',
10
- name: null,
11
- createdAt: '2026-01-01T00:00:00.000Z',
12
- isActive: true,
13
- role: 'player',
14
- };
15
- /** AdminGuard that only super-admins clear the `admin` resource; everyone clears `player`. */
16
- function fakeGuard(opts) {
8
+ function userRow(over = {}) {
17
9
  return mock({
18
- assert: vi.fn(async (_ctx, resource) => {
19
- if (resource === 'admin' && !opts.isSuper) {
20
- throw new ORPCError('FORBIDDEN', { message: 'Missing permission: admin:update' });
21
- }
22
- return adminCaller({ userId: 'caller-1', role: opts.isSuper ? 'admin' : 'support' });
23
- }),
24
- });
25
- }
26
- function fakeService() {
27
- return mock({
28
- getUser: vi.fn().mockResolvedValue(USER),
29
- updateUser: vi.fn().mockResolvedValue({ ...USER, role: 'admin' }),
30
- listTransactions: vi.fn().mockResolvedValue({ items: [], total: 0, page: 1, limit: 20 }),
31
- getTransaction: vi.fn().mockResolvedValue(null),
10
+ id: USER_ID,
11
+ email: 'p@example.com',
12
+ name: null,
13
+ createdAt: new Date('2026-01-01T00:00:00.000Z'),
14
+ isActive: true,
15
+ role: 'player',
16
+ ...over,
32
17
  });
33
18
  }
34
- /** AdminGuard that grants `player` ops but denies the `transaction` resource. */
35
- function fakeTransactionDenyingGuard() {
36
- return mock({
37
- assert: vi.fn(async (_ctx, resource) => {
38
- if (resource === 'transaction') {
39
- throw new ORPCError('FORBIDDEN', { message: 'Missing permission: transaction:view' });
40
- }
41
- return adminCaller({ userId: 'caller-1', role: 'support' });
19
+ function realService(over = {}) {
20
+ const stored = { row: userRow() };
21
+ const users = mock({
22
+ count: vi.fn().mockResolvedValue(0),
23
+ list: vi.fn().mockResolvedValue({ rows: [], total: 0 }),
24
+ get: vi.fn(async () => stored.row),
25
+ update: vi.fn(async (_id, data) => {
26
+ const set = Object.fromEntries(Object.entries(data).filter(([, v]) => v !== undefined));
27
+ stored.row = { ...stored.row, ...set };
28
+ return stored.row;
42
29
  }),
30
+ lookupPlayers: vi.fn().mockResolvedValue([]),
31
+ findPlayerIds: vi.fn().mockResolvedValue([]),
32
+ ...over.directory,
43
33
  });
34
+ const reporting = mock({
35
+ totals: vi.fn().mockResolvedValue({ deposits: '0', withdrawals: '0' }),
36
+ listTransactions: vi.fn().mockResolvedValue({ rows: [], total: 0 }),
37
+ getTransaction: vi.fn().mockResolvedValue(null),
38
+ });
39
+ return { service: new BackofficeService(users, reporting), users, stored };
44
40
  }
45
- function fakeAudit() {
46
- return { record: vi.fn().mockResolvedValue(undefined) };
47
- }
41
+ const guardWhereOnlySuperAdminClearsAdmin = (isSuper) => makeAdminGuard({
42
+ deny: isSuper ? [] : ['admin'],
43
+ caller: { userId: 'caller-1', role: isSuper ? 'admin' : 'support' },
44
+ });
45
+ const transactionDenyingGuard = () => makeAdminGuard({ deny: ['transaction'], caller: { userId: 'caller-1', role: 'support' } });
46
+ const audit = makeAuditWriter;
48
47
  describe('backoffice router updateUser authz', () => {
49
- it('rejects a role change from a non-super-admin', async () => {
50
- const guard = fakeGuard({ isSuper: false });
51
- const router = createBackofficeRouter(fakeService(), guard, fakeAudit());
48
+ it('rejects a role change from a non-super-admin and leaves the user untouched', async () => {
49
+ const { service, users } = realService();
50
+ const router = createBackofficeRouter(service, guardWhereOnlySuperAdminClearsAdmin(false), audit());
52
51
  await expect(call(router.updateUser, { userId: USER_ID, role: 'admin' }, { context: CTX })).rejects.toBeInstanceOf(ORPCError);
52
+ expect(users.update).not.toHaveBeenCalled();
53
53
  });
54
- it('allows a super-admin to change a role and writes an audit entry', async () => {
55
- const guard = fakeGuard({ isSuper: true });
56
- const audit = fakeAudit();
57
- const router = createBackofficeRouter(fakeService(), guard, audit);
54
+ it('allows a super-admin to change a role and writes the before/after audit entry', async () => {
55
+ const { service } = realService();
56
+ const writer = audit();
57
+ const router = createBackofficeRouter(service, guardWhereOnlySuperAdminClearsAdmin(true), writer);
58
58
  const result = await call(router.updateUser, { userId: USER_ID, role: 'admin' }, { context: CTX });
59
59
  expect(result.role).toBe('admin');
60
- expect(audit.record).toHaveBeenCalledWith(expect.objectContaining({
60
+ expect(writer.record).toHaveBeenCalledWith(expect.objectContaining({
61
61
  actorType: 'admin',
62
62
  action: 'admin.user.updated',
63
63
  resourceType: 'user',
64
64
  resourceId: USER_ID,
65
+ before: { isActive: true, role: 'player' },
66
+ after: { isActive: true, role: 'admin' },
65
67
  }));
66
68
  });
67
69
  it('allows an isActive-only change without the super-admin gate and audits it', async () => {
68
- const guard = fakeGuard({ isSuper: false });
69
- const audit = fakeAudit();
70
- const router = createBackofficeRouter(fakeService(), guard, audit);
71
- await call(router.updateUser, { userId: USER_ID, isActive: false }, { context: CTX });
72
- expect(audit.record).toHaveBeenCalledOnce();
70
+ const { service } = realService();
71
+ const writer = audit();
72
+ const router = createBackofficeRouter(service, guardWhereOnlySuperAdminClearsAdmin(false), writer);
73
+ const result = await call(router.updateUser, { userId: USER_ID, isActive: false }, { context: CTX });
74
+ expect(result.isActive).toBe(false);
75
+ expect(writer.record).toHaveBeenCalledOnce();
76
+ });
77
+ it('maps an unknown user to NOT_FOUND rather than a raw throw', async () => {
78
+ const { service } = realService({ directory: { get: vi.fn().mockResolvedValue(null) } });
79
+ const router = createBackofficeRouter(service, guardWhereOnlySuperAdminClearsAdmin(true), audit());
80
+ await expect(call(router.updateUser, { userId: USER_ID, isActive: false }, { context: CTX })).rejects.toMatchObject({ code: 'NOT_FOUND' });
81
+ });
82
+ it('serializes createdAt to an ISO string on the wire', async () => {
83
+ const { service } = realService();
84
+ const router = createBackofficeRouter(service, guardWhereOnlySuperAdminClearsAdmin(false), audit());
85
+ const result = await call(router.updateUser, { userId: USER_ID, isActive: false }, { context: CTX });
86
+ expect(result.createdAt).toBe('2026-01-01T00:00:00.000Z');
73
87
  });
74
88
  });
75
89
  describe('backoffice router transaction:view authz', () => {
76
90
  it('rejects listTransactions for a caller lacking transaction:view', async () => {
77
- const router = createBackofficeRouter(fakeService(), fakeTransactionDenyingGuard(), fakeAudit());
91
+ const { service } = realService();
92
+ const router = createBackofficeRouter(service, transactionDenyingGuard(), audit());
78
93
  await expect(call(router.listTransactions, { page: 1, limit: 20 }, { context: CTX })).rejects.toBeInstanceOf(ORPCError);
79
94
  });
80
95
  it('rejects getTransaction for a caller lacking transaction:view', async () => {
81
- const router = createBackofficeRouter(fakeService(), fakeTransactionDenyingGuard(), fakeAudit());
96
+ const { service } = realService();
97
+ const router = createBackofficeRouter(service, transactionDenyingGuard(), audit());
82
98
  await expect(call(router.getTransaction, { id: USER_ID }, { context: CTX })).rejects.toBeInstanceOf(ORPCError);
83
99
  });
84
100
  });
@@ -1 +1 @@
1
- {"version":3,"file":"backoffice.router.test.js","sourceRoot":"","sources":["../../../src/admin-console/__tests__/backoffice.router.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backoffice.router.test.js","sourceRoot":"","sources":["../../../src/admin-console/__tests__/backoffice.router.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi } from 'vitest';
2
2
  import { mock } from '../../testing/mock.js';
3
- import { BackofficeService, TransactionNotFoundError, UserNotFoundError, } from '../service/backoffice.service.js';
3
+ import { BackofficeService, TransactionNotFoundError } from '../service/backoffice.service.js';
4
4
  function makeUsers(over = {}) {
5
5
  return mock({
6
6
  count: vi.fn(),
@@ -33,18 +33,6 @@ function txRow(over = {}) {
33
33
  ...over,
34
34
  };
35
35
  }
36
- describe('BackofficeService domain errors', () => {
37
- it('UserNotFoundError carries the userId', () => {
38
- const err = new UserNotFoundError('user-123');
39
- expect(err.name).toBe('UserNotFoundError');
40
- expect(err.message).toContain('user-123');
41
- });
42
- it('TransactionNotFoundError carries the id', () => {
43
- const err = new TransactionNotFoundError('tx-123');
44
- expect(err.name).toBe('TransactionNotFoundError');
45
- expect(err.message).toContain('tx-123');
46
- });
47
- });
48
36
  describe('BackofficeService.listTransactions', () => {
49
37
  it('resolves a player query to userIds and enriches rows with email', async () => {
50
38
  const findPlayerIds = vi.fn().mockResolvedValue(['u-1']);
@@ -1 +1 @@
1
- {"version":3,"file":"backoffice.service.test.js","sourceRoot":"","sources":["../../../src/admin-console/__tests__/backoffice.service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backoffice.service.test.js","sourceRoot":"","sources":["../../../src/admin-console/__tests__/backoffice.service.test.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,18 @@ describe('analytics contract schemas', () => {
14
14
  it('accepts an empty funnel query (unranged)', () => {
15
15
  expect(() => FunnelQuerySchema.parse({})).not.toThrow();
16
16
  });
17
+ it('rejects a funnel query whose dateFrom is after its dateTo', () => {
18
+ expect(() => FunnelQuerySchema.parse({
19
+ dateFrom: '2026-02-01T00:00:00.000Z',
20
+ dateTo: '2026-01-01T00:00:00.000Z',
21
+ })).toThrow();
22
+ });
23
+ it('rejects a financial summary query whose dateFrom is after its dateTo', () => {
24
+ expect(() => FinancialSummaryQuerySchema.parse({
25
+ dateFrom: '2026-02-01T00:00:00.000Z',
26
+ dateTo: '2026-01-01T00:00:00.000Z',
27
+ })).toThrow();
28
+ });
17
29
  it('rejects a funnel stage count below zero', () => {
18
30
  expect(() => FunnelStageSchema.parse({ stage: 'registered', count: -1, dropOffRate: 0 })).toThrow();
19
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.contract.test.js","sourceRoot":"","sources":["../../../src/analytics/__tests__/analytics.contract.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,EAAE,CACV,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAC5E,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,CACV,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAC7E,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"analytics.contract.test.js","sourceRoot":"","sources":["../../../src/analytics/__tests__/analytics.contract.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,GAAG,EAAE,CACV,iBAAiB,CAAC,KAAK,CAAC;YACtB,QAAQ,EAAE,0BAA0B;YACpC,MAAM,EAAE,0BAA0B;SACnC,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,CAAC,GAAG,EAAE,CACV,2BAA2B,CAAC,KAAK,CAAC;YAChC,QAAQ,EAAE,0BAA0B;YACpC,MAAM,EAAE,0BAA0B;SACnC,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,EAAE,CACV,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAC5E,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,CACV,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAC7E,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -13,10 +13,10 @@ describe('FinancialAnalyticsService.summary', () => {
13
13
  const drizzle = makeDrizzle({
14
14
  select: [
15
15
  [
16
- { currency: 'USD', rail: 'fiat', type: 'deposit', total: '500.00' },
17
- { currency: 'USD', rail: 'crypto', type: 'withdrawal', total: '120.00' },
18
- { currency: 'EUR', rail: null, type: 'deposit', total: '75.00' },
16
+ { currency: 'USD', rail: 'fiat', total: '500.00' },
17
+ { currency: 'EUR', rail: null, total: '75.00' },
19
18
  ],
19
+ [{ currency: 'USD', rail: 'crypto', total: '120.00' }],
20
20
  [
21
21
  { currency: 'USD', netRevenue: '350.00', bonusCost: '30.00' },
22
22
  { currency: 'EUR', netRevenue: '75.00', bonusCost: '0' },
@@ -1 +1 @@
1
- {"version":3,"file":"financial-analytics.service.test.js","sourceRoot":"","sources":["../../../src/analytics/__tests__/financial-analytics.service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"financial-analytics.service.test.js","sourceRoot":"","sources":["../../../src/analytics/__tests__/financial-analytics.service.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"financial-analytics.service.d.ts","sourceRoot":"","sources":["../../../src/analytics/service/financial-analytics.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAmC9B,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY;IAGhC,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIhE,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAI3C,MAAM;YAWN,cAAc;YA6Dd,UAAU;CA8DzB"}
1
+ {"version":3,"file":"financial-analytics.service.d.ts","sourceRoot":"","sources":["../../../src/analytics/service/financial-analytics.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAmC9B,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY;IAGhC,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIhE,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAI3C,MAAM;YAWN,cAAc;YA4Dd,UAAU;CA8DzB"}
@@ -57,17 +57,18 @@ export class FinancialAnalyticsService {
57
57
  if (currency) {
58
58
  baseConditions.push(eq(walletTransaction.currency, currency));
59
59
  }
60
- const [byRail, byCurrency] = await Promise.all([
61
- db
62
- .select({
63
- currency: walletTransaction.currency,
64
- rail: walletTransaction.rail,
65
- type: walletTransaction.type,
66
- total: sql `sum(${walletTransaction.amount})`,
67
- })
68
- .from(walletTransaction)
69
- .where(and(eq(walletTransaction.status, COMPLETED_STATUS), inArray(walletTransaction.type, ['deposit', 'withdrawal']), ...baseConditions))
70
- .groupBy(walletTransaction.currency, walletTransaction.rail, walletTransaction.type),
60
+ const totalsByRail = (type) => db
61
+ .select({
62
+ currency: walletTransaction.currency,
63
+ rail: walletTransaction.rail,
64
+ total: sql `sum(${walletTransaction.amount})`,
65
+ })
66
+ .from(walletTransaction)
67
+ .where(and(eq(walletTransaction.status, COMPLETED_STATUS), eq(walletTransaction.type, type), ...baseConditions))
68
+ .groupBy(walletTransaction.currency, walletTransaction.rail);
69
+ const [deposits, withdrawals, byCurrency] = await Promise.all([
70
+ totalsByRail('deposit'),
71
+ totalsByRail('withdrawal'),
71
72
  db
72
73
  .select({
73
74
  currency: walletTransaction.currency,
@@ -83,12 +84,8 @@ export class FinancialAnalyticsService {
83
84
  .groupBy(walletTransaction.currency),
84
85
  ]);
85
86
  return {
86
- deposits: byRail
87
- .filter((r) => r.type === 'deposit')
88
- .map((r) => ({ currency: r.currency, rail: r.rail, total: r.total })),
89
- withdrawals: byRail
90
- .filter((r) => r.type === 'withdrawal')
91
- .map((r) => ({ currency: r.currency, rail: r.rail, total: r.total })),
87
+ deposits,
88
+ withdrawals,
92
89
  netRevenue: byCurrency.map((r) => ({ currency: r.currency, total: r.netRevenue })),
93
90
  bonusCost: byCurrency.map((r) => ({ currency: r.currency, total: r.bonusCost })),
94
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"financial-analytics.service.js","sourceRoot":"","sources":["../../../src/analytics/service/financial-analytics.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAQhE,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC,MAAM,qBAAqB,GAAgC;IACzD,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,SAAS,WAAW,CAAC,MAAqB;IACxC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,QAAiB,EAAE,MAAe;IACzD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ;QACnB,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QACpB,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1E,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAiB,EAAE,MAAe;IAC7D,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,IAAI,QAAQ,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,yBAAyB;IAEjB;IACA;IAFnB,YACmB,OAAuB,EACvB,KAAmB;QADnB,YAAO,GAAP,OAAO,CAAgB;QACvB,UAAK,GAAL,KAAK,CAAc;IACnC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAA4B;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAwB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,MAAM,CAAI,KAAa,EAAE,KAAa,EAAE,OAAyB;QAC7E,MAAM,GAAG,GAAG,aAAa,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EAC3B,QAAQ,EACR,MAAM,EACN,QAAQ,GACc;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,EAAE;iBACC,MAAM,CAAC;gBACN,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;gBACpC,IAAI,EAAE,iBAAiB,CAAC,IAAI;gBAC5B,IAAI,EAAE,iBAAiB,CAAC,IAAI;gBAC5B,KAAK,EAAE,GAAG,CAAQ,OAAO,iBAAiB,CAAC,MAAM,GAAG;aACrD,CAAC;iBACD,IAAI,CAAC,iBAAiB,CAAC;iBACvB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAC1D,GAAG,cAAc,CAClB,CACF;iBACA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;YACtF,EAAE;iBACC,MAAM,CAAC;gBACN,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;gBACpC,UAAU,EAAE,GAAG,CAAQ;2BACN,iBAAiB,CAAC,MAAM,mBAAmB,iBAAiB,CAAC,IAAI;6BAC/D,iBAAiB,CAAC,MAAM,mBAAmB,iBAAiB,CAAC,IAAI;6BACjE,iBAAiB,CAAC,MAAM,mBAAmB,iBAAiB,CAAC,IAAI;WACnF;gBACD,SAAS,EAAE,GAAG,CAAQ,gBAAgB,iBAAiB,CAAC,MAAM,mBAAmB,iBAAiB,CAAC,IAAI,iBAAiB;aACzH,CAAC;iBACD,IAAI,CAAC,iBAAiB,CAAC;iBACvB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,EACnE,GAAG,cAAc,CAClB,CACF;iBACA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC;SACvC,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,MAAM;iBACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;iBACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,WAAW,EAAE,MAAM;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAClF,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;SACjF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,WAAW,GACO;QAClB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAA,kBAAkB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,CAAC;QAC1E,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAA,gBAAgB,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,CAAC;QAE7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAIzC,GAAG,CAAA;;;uBAGa,WAAW,KAAK,KAAK,CAAC,IAAI;uBAC1B,WAAW,KAAK,KAAK,CAAC,EAAE;YACnC,QAAQ;;;;;eAKL,iBAAiB;yBACP,gBAAgB;;mCAEN,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;YACjD,cAAc;UAChB,aAAa;;;;;;;;uBAQA,WAAW;;;eAGnB,iBAAiB;yBACP,gBAAgB;;mCAEN,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;YACjD,cAAc;;;;;;;KAOrB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAqB,CAAC;QACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC5F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACtE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"financial-analytics.service.js","sourceRoot":"","sources":["../../../src/analytics/service/financial-analytics.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"funnel-analytics.service.d.ts","sourceRoot":"","sources":["../../../src/analytics/service/funnel-analytics.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAiB,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoB9F,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY;IAGhC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAWjD,iBAAiB;CA0DhC"}
1
+ {"version":3,"file":"funnel-analytics.service.d.ts","sourceRoot":"","sources":["../../../src/analytics/service/funnel-analytics.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAiB,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoB9F,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY;IAGhC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAWjD,iBAAiB;CAqDhC"}
@@ -70,17 +70,14 @@ export class FunnelAnalyticsService {
70
70
  first_deposit: Number(row?.first_deposit ?? 0),
71
71
  first_bet: Number(row?.first_bet ?? 0),
72
72
  };
73
- const orderedCounts = [
74
- counts.registered,
75
- counts.email_verified,
76
- counts.first_deposit,
77
- counts.first_bet,
78
- ];
79
- return FUNNEL_STAGES.map((stage, index) => ({
80
- stage,
81
- count: orderedCounts[index] ?? 0,
82
- dropOffRate: index === 0 ? 0 : dropOffRate(orderedCounts[index - 1] ?? 0, orderedCounts[index] ?? 0),
83
- }));
73
+ return FUNNEL_STAGES.map((stage, index) => {
74
+ const previousStage = FUNNEL_STAGES[index - 1];
75
+ return {
76
+ stage,
77
+ count: counts[stage],
78
+ dropOffRate: previousStage ? dropOffRate(counts[previousStage], counts[stage]) : 0,
79
+ };
80
+ });
84
81
  }
85
82
  }
86
83
  //# sourceMappingURL=funnel-analytics.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"funnel-analytics.service.js","sourceRoot":"","sources":["../../../src/analytics/service/funnel-analytics.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"funnel-analytics.service.js","sourceRoot":"","sources":["../../../src/analytics/service/funnel-analytics.service.ts"],"names":[],"mappings":"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"}