@openora/core 0.4.0 → 0.4.1-canary.11

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 (427) hide show
  1. package/LICENSE-COMMERCIAL.md +2 -2
  2. package/README.md +8 -2
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/admin-console/__tests__/backoffice.service.test.js +1 -1
  5. package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
  6. package/dist/admin-console/contract/index.d.ts +14 -14
  7. package/dist/admin-console/contract/index.d.ts.map +1 -1
  8. package/dist/admin-console/contract/index.js +8 -8
  9. package/dist/admin-console/contract/index.js.map +1 -1
  10. package/dist/admin-console/router/index.d.ts +7 -7
  11. package/dist/admin-console/service/backoffice.service.d.ts +22 -49
  12. package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
  13. package/dist/admin-console/service/backoffice.service.js +16 -31
  14. package/dist/admin-console/service/backoffice.service.js.map +1 -1
  15. package/dist/audit/__tests__/audit.service.test.js +29 -2
  16. package/dist/audit/__tests__/audit.service.test.js.map +1 -1
  17. package/dist/audit/contract/index.d.ts.map +1 -1
  18. package/dist/audit/contract/index.js +2 -0
  19. package/dist/audit/contract/index.js.map +1 -1
  20. package/dist/audit/plugin.d.ts.map +1 -1
  21. package/dist/audit/plugin.js +54 -4
  22. package/dist/audit/plugin.js.map +1 -1
  23. package/dist/audit/service/audit.service.d.ts +1 -0
  24. package/dist/audit/service/audit.service.d.ts.map +1 -1
  25. package/dist/audit/service/audit.service.js +53 -25
  26. package/dist/audit/service/audit.service.js.map +1 -1
  27. package/dist/casino/gaming/contract/index.d.ts.map +1 -1
  28. package/dist/casino/gaming/contract/index.js +3 -3
  29. package/dist/casino/gaming/contract/index.js.map +1 -1
  30. package/dist/casino/gaming/drizzle/migrations/0001_easy_ben_grimm.sql +4 -0
  31. package/dist/casino/gaming/drizzle/migrations/meta/0001_snapshot.json +188 -0
  32. package/dist/casino/gaming/drizzle/migrations/meta/_journal.json +7 -0
  33. package/dist/casino/gaming/schema/index.js +2 -2
  34. package/dist/casino/gaming/schema/index.js.map +1 -1
  35. package/dist/casino/gaming/service/gaming.service.d.ts +11 -11
  36. package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
  37. package/dist/casino/gaming/service/gaming.service.js +4 -14
  38. package/dist/casino/gaming/service/gaming.service.js.map +1 -1
  39. package/dist/cms/__tests__/cms.cache.test.js +1 -1
  40. package/dist/cms/__tests__/cms.cache.test.js.map +1 -1
  41. package/dist/cms/__tests__/cms.router.test.d.ts +2 -0
  42. package/dist/cms/__tests__/cms.router.test.d.ts.map +1 -0
  43. package/dist/cms/__tests__/cms.router.test.js +51 -0
  44. package/dist/cms/__tests__/cms.router.test.js.map +1 -0
  45. package/dist/cms/router/index.d.ts.map +1 -1
  46. package/dist/cms/router/index.js +12 -12
  47. package/dist/cms/router/index.js.map +1 -1
  48. package/dist/cms/service/cms.service.d.ts +7 -7
  49. package/dist/cms/service/cms.service.d.ts.map +1 -1
  50. package/dist/cms/service/cms.service.js +39 -23
  51. package/dist/cms/service/cms.service.js.map +1 -1
  52. package/dist/compliance/__tests__/compliance.service.test.js +2 -1
  53. package/dist/compliance/__tests__/compliance.service.test.js.map +1 -1
  54. package/dist/compliance/__tests__/kyc.service.test.js +12 -10
  55. package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
  56. package/dist/compliance/__tests__/rg-monitoring.service.test.js +17 -6
  57. package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +1 -1
  58. package/dist/compliance/__tests__/rg.contract.test.js +18 -10
  59. package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
  60. package/dist/compliance/__tests__/rg.router.test.js +5 -4
  61. package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
  62. package/dist/compliance/__tests__/rg.service.test.js +18 -12
  63. package/dist/compliance/__tests__/rg.service.test.js.map +1 -1
  64. package/dist/compliance/contract/index.d.ts +20 -14
  65. package/dist/compliance/contract/index.d.ts.map +1 -1
  66. package/dist/compliance/contract/limits.d.ts +9 -2
  67. package/dist/compliance/contract/limits.d.ts.map +1 -1
  68. package/dist/compliance/contract/limits.js +21 -3
  69. package/dist/compliance/contract/limits.js.map +1 -1
  70. package/dist/compliance/contract/rg.d.ts +28 -23
  71. package/dist/compliance/contract/rg.d.ts.map +1 -1
  72. package/dist/compliance/contract/rg.js +14 -9
  73. package/dist/compliance/contract/rg.js.map +1 -1
  74. package/dist/compliance/drizzle/migrations/0001_funny_vance_astro.sql +5 -0
  75. package/dist/compliance/drizzle/migrations/meta/0001_snapshot.json +660 -0
  76. package/dist/compliance/drizzle/migrations/meta/_journal.json +7 -0
  77. package/dist/compliance/plugin.d.ts.map +1 -1
  78. package/dist/compliance/plugin.js +26 -12
  79. package/dist/compliance/plugin.js.map +1 -1
  80. package/dist/compliance/router/index.d.ts +20 -14
  81. package/dist/compliance/router/index.d.ts.map +1 -1
  82. package/dist/compliance/router/index.js +2 -1
  83. package/dist/compliance/router/index.js.map +1 -1
  84. package/dist/compliance/schema/index.d.ts +31 -14
  85. package/dist/compliance/schema/index.d.ts.map +1 -1
  86. package/dist/compliance/schema/index.js +10 -7
  87. package/dist/compliance/schema/index.js.map +1 -1
  88. package/dist/compliance/service/compliance.service.d.ts +27 -22
  89. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  90. package/dist/compliance/service/compliance.service.js +9 -22
  91. package/dist/compliance/service/compliance.service.js.map +1 -1
  92. package/dist/compliance/service/kyc.service.d.ts +22 -19
  93. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  94. package/dist/compliance/service/kyc.service.js +19 -24
  95. package/dist/compliance/service/kyc.service.js.map +1 -1
  96. package/dist/compliance/service/re-kyc-trigger.d.ts +4 -4
  97. package/dist/compliance/service/re-kyc-trigger.d.ts.map +1 -1
  98. package/dist/compliance/service/re-kyc-trigger.js +10 -6
  99. package/dist/compliance/service/re-kyc-trigger.js.map +1 -1
  100. package/dist/compliance/service/rg-eval.d.ts.map +1 -1
  101. package/dist/compliance/service/rg-eval.js +4 -2
  102. package/dist/compliance/service/rg-eval.js.map +1 -1
  103. package/dist/compliance/service/rg-monitoring.service.d.ts +6 -5
  104. package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
  105. package/dist/compliance/service/rg-monitoring.service.js +62 -31
  106. package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
  107. package/dist/compliance/service/rg.service.d.ts +28 -6
  108. package/dist/compliance/service/rg.service.d.ts.map +1 -1
  109. package/dist/compliance/service/rg.service.js +60 -34
  110. package/dist/compliance/service/rg.service.js.map +1 -1
  111. package/dist/contracts/adapters/admin-wallet-reporting.d.ts +5 -5
  112. package/dist/contracts/adapters/payment.d.ts +2 -2
  113. package/dist/contracts/adapters/wallet-commands.d.ts +5 -5
  114. package/dist/contracts/adapters/wallet-reader.d.ts +2 -2
  115. package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
  116. package/dist/contracts/schemas/common.d.ts +2 -5
  117. package/dist/contracts/schemas/common.d.ts.map +1 -1
  118. package/dist/contracts/schemas/common.js +3 -4
  119. package/dist/contracts/schemas/common.js.map +1 -1
  120. package/dist/contracts/schemas/events.d.ts +35 -9
  121. package/dist/contracts/schemas/events.d.ts.map +1 -1
  122. package/dist/contracts/schemas/events.js +32 -7
  123. package/dist/contracts/schemas/events.js.map +1 -1
  124. package/dist/contracts/schemas/platform-config.d.ts +9 -9
  125. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  126. package/dist/contracts/schemas/platform-config.js +6 -5
  127. package/dist/contracts/schemas/platform-config.js.map +1 -1
  128. package/dist/contracts/schemas/player.d.ts +2 -2
  129. package/dist/contracts/schemas/player.js +3 -3
  130. package/dist/contracts/schemas/player.js.map +1 -1
  131. package/dist/contracts/schemas/tag.d.ts +2 -2
  132. package/dist/contracts/schemas/tag.js +3 -3
  133. package/dist/contracts/schemas/tag.js.map +1 -1
  134. package/dist/engagement/chat/moderation/moderate.d.ts.map +1 -1
  135. package/dist/engagement/chat/moderation/moderate.js +2 -1
  136. package/dist/engagement/chat/moderation/moderate.js.map +1 -1
  137. package/dist/engagement/chat/react/use-chat-stream.d.ts +2 -3
  138. package/dist/engagement/chat/react/use-chat-stream.d.ts.map +1 -1
  139. package/dist/engagement/chat/react/use-chat-stream.js +4 -2
  140. package/dist/engagement/chat/react/use-chat-stream.js.map +1 -1
  141. package/dist/engagement/chat/router/index.d.ts.map +1 -1
  142. package/dist/engagement/chat/router/index.js +2 -1
  143. package/dist/engagement/chat/router/index.js.map +1 -1
  144. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  145. package/dist/engagement/chat/service/chat.service.js +22 -11
  146. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  147. package/dist/engagement/notifications/__tests__/notifications.service.test.js +4 -3
  148. package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +1 -1
  149. package/dist/engagement/notifications/contract/index.d.ts +24 -2
  150. package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
  151. package/dist/engagement/notifications/contract/index.js +10 -1
  152. package/dist/engagement/notifications/contract/index.js.map +1 -1
  153. package/dist/engagement/notifications/index.d.ts +1 -1
  154. package/dist/engagement/notifications/index.d.ts.map +1 -1
  155. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  156. package/dist/engagement/notifications/plugin.js +6 -3
  157. package/dist/engagement/notifications/plugin.js.map +1 -1
  158. package/dist/engagement/notifications/router/index.d.ts +4 -1
  159. package/dist/engagement/notifications/router/index.d.ts.map +1 -1
  160. package/dist/engagement/notifications/router/index.js +15 -6
  161. package/dist/engagement/notifications/router/index.js.map +1 -1
  162. package/dist/engagement/notifications/service/notifications.service.d.ts +6 -13
  163. package/dist/engagement/notifications/service/notifications.service.d.ts.map +1 -1
  164. package/dist/engagement/notifications/service/notifications.service.js +6 -14
  165. package/dist/engagement/notifications/service/notifications.service.js.map +1 -1
  166. package/dist/iam/__tests__/iam.service.test.js +14 -9
  167. package/dist/iam/__tests__/iam.service.test.js.map +1 -1
  168. package/dist/iam/plugin.d.ts.map +1 -1
  169. package/dist/iam/plugin.js +4 -2
  170. package/dist/iam/plugin.js.map +1 -1
  171. package/dist/iam/seed/seed-default-roles.d.ts.map +1 -1
  172. package/dist/iam/seed/seed-default-roles.js +2 -1
  173. package/dist/iam/seed/seed-default-roles.js.map +1 -1
  174. package/dist/iam/service/iam.service.d.ts +19 -17
  175. package/dist/iam/service/iam.service.d.ts.map +1 -1
  176. package/dist/iam/service/iam.service.js +68 -34
  177. package/dist/iam/service/iam.service.js.map +1 -1
  178. package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
  179. package/dist/pam/identity/admin-user-directory.js +18 -9
  180. package/dist/pam/identity/admin-user-directory.js.map +1 -1
  181. package/dist/pam/identity/router/index.d.ts.map +1 -1
  182. package/dist/pam/identity/router/index.js +4 -2
  183. package/dist/pam/identity/router/index.js.map +1 -1
  184. package/dist/pam/identity/service/identity.service.d.ts +24 -2
  185. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  186. package/dist/pam/identity/service/identity.service.js +51 -19
  187. package/dist/pam/identity/service/identity.service.js.map +1 -1
  188. package/dist/pam/identity/service/login-enforcement.service.d.ts +3 -3
  189. package/dist/pam/identity/service/login-enforcement.service.d.ts.map +1 -1
  190. package/dist/pam/identity/service/login-enforcement.service.js.map +1 -1
  191. package/dist/pam/identity/service/session.service.d.ts +5 -3
  192. package/dist/pam/identity/service/session.service.d.ts.map +1 -1
  193. package/dist/pam/identity/service/session.service.js +3 -3
  194. package/dist/pam/identity/service/session.service.js.map +1 -1
  195. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +2 -1
  196. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
  197. package/dist/pam/player-management/__tests__/player.router.test.js +2 -2
  198. package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
  199. package/dist/pam/player-management/__tests__/player.service.test.js +2 -1
  200. package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
  201. package/dist/pam/player-management/contract/index.d.ts +10 -10
  202. package/dist/pam/player-management/router/index.d.ts +8 -8
  203. package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
  204. package/dist/pam/player-management/service/kyc-status-writer.js +2 -1
  205. package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
  206. package/dist/pam/player-management/service/player.service.d.ts +15 -15
  207. package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
  208. package/dist/pam/player-management/service/player.service.js +15 -12
  209. package/dist/pam/player-management/service/player.service.js.map +1 -1
  210. package/dist/pam/player-note/schema/index.d.ts +4 -4
  211. package/dist/pam/player-note/schema/index.js +6 -6
  212. package/dist/pam/player-note/schema/index.js.map +1 -1
  213. package/dist/pam/player-note/service/player-note.service.d.ts +11 -3
  214. package/dist/pam/player-note/service/player-note.service.d.ts.map +1 -1
  215. package/dist/pam/player-note/service/player-note.service.js +1 -1
  216. package/dist/pam/player-note/service/player-note.service.js.map +1 -1
  217. package/dist/pam/profile/__tests__/profile.service.test.js +2 -1
  218. package/dist/pam/profile/__tests__/profile.service.test.js.map +1 -1
  219. package/dist/pam/profile/contract/index.d.ts +4 -4
  220. package/dist/pam/profile/react/profile.d.ts +6 -7
  221. package/dist/pam/profile/react/profile.d.ts.map +1 -1
  222. package/dist/pam/profile/react/profile.js.map +1 -1
  223. package/dist/pam/profile/router/index.d.ts +4 -4
  224. package/dist/pam/profile/service/profile.service.d.ts +4 -4
  225. package/dist/pam/profile/service/profile.service.d.ts.map +1 -1
  226. package/dist/pam/profile/service/profile.service.js +2 -1
  227. package/dist/pam/profile/service/profile.service.js.map +1 -1
  228. package/dist/pam/shared/headers-mapper.d.ts.map +1 -1
  229. package/dist/pam/shared/headers-mapper.js +2 -1
  230. package/dist/pam/shared/headers-mapper.js.map +1 -1
  231. package/dist/pam/shared/player-mapper.d.ts +17 -2
  232. package/dist/pam/shared/player-mapper.d.ts.map +1 -1
  233. package/dist/pam/shared/player-mapper.js +2 -2
  234. package/dist/pam/shared/player-mapper.js.map +1 -1
  235. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +2 -1
  236. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +1 -1
  237. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +19 -18
  238. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
  239. package/dist/pam/tag/__tests__/tag-mappers.test.js +6 -6
  240. package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
  241. package/dist/pam/tag/__tests__/tag-rule.service.test.js +14 -14
  242. package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +1 -1
  243. package/dist/pam/tag/__tests__/tag.router.test.d.ts +2 -0
  244. package/dist/pam/tag/__tests__/tag.router.test.d.ts.map +1 -0
  245. package/dist/pam/tag/__tests__/tag.router.test.js +38 -0
  246. package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -0
  247. package/dist/pam/tag/contract/index.d.ts +3 -3
  248. package/dist/pam/tag/drizzle/migrations/0001_neat_iron_monger.sql +2 -0
  249. package/dist/pam/tag/drizzle/migrations/meta/0001_snapshot.json +295 -0
  250. package/dist/pam/tag/drizzle/migrations/meta/_journal.json +7 -0
  251. package/dist/pam/tag/router/index.d.ts +3 -3
  252. package/dist/pam/tag/schema/index.d.ts +16 -16
  253. package/dist/pam/tag/schema/index.d.ts.map +1 -1
  254. package/dist/pam/tag/schema/index.js +19 -19
  255. package/dist/pam/tag/schema/index.js.map +1 -1
  256. package/dist/pam/tag/seed/data/default-tag-rules.js +6 -6
  257. package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
  258. package/dist/pam/tag/seed/seed-default-tag-rules.d.ts.map +1 -1
  259. package/dist/pam/tag/seed/seed-default-tag-rules.js +5 -3
  260. package/dist/pam/tag/seed/seed-default-tag-rules.js.map +1 -1
  261. package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
  262. package/dist/pam/tag/service/tag-evaluation.service.js +32 -18
  263. package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
  264. package/dist/pam/tag/service/tag-mappers.d.ts +8 -2
  265. package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
  266. package/dist/pam/tag/service/tag-mappers.js +3 -8
  267. package/dist/pam/tag/service/tag-mappers.js.map +1 -1
  268. package/dist/pam/tag/service/tag-rule.service.d.ts +34 -4
  269. package/dist/pam/tag/service/tag-rule.service.d.ts.map +1 -1
  270. package/dist/pam/tag/service/tag-rule.service.js +9 -15
  271. package/dist/pam/tag/service/tag-rule.service.js.map +1 -1
  272. package/dist/pam/tag/service/tag.service.d.ts +51 -8
  273. package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
  274. package/dist/pam/tag/service/tag.service.js +6 -11
  275. package/dist/pam/tag/service/tag.service.js.map +1 -1
  276. package/dist/react/context/api-client.d.ts.map +1 -1
  277. package/dist/react/context/api-client.js +14 -7
  278. package/dist/react/context/api-client.js.map +1 -1
  279. package/dist/react/hooks/use-event-stream.d.ts.map +1 -1
  280. package/dist/react/hooks/use-event-stream.js +6 -3
  281. package/dist/react/hooks/use-event-stream.js.map +1 -1
  282. package/dist/react/hooks/use-paginated-list.js +3 -3
  283. package/dist/react/hooks/use-paginated-list.js.map +1 -1
  284. package/dist/server/auth/admin-guard.d.ts +12 -0
  285. package/dist/server/auth/admin-guard.d.ts.map +1 -1
  286. package/dist/server/auth/admin-guard.js +14 -1
  287. package/dist/server/auth/admin-guard.js.map +1 -1
  288. package/dist/server/auth/auth.d.ts +9 -0
  289. package/dist/server/auth/auth.d.ts.map +1 -1
  290. package/dist/server/auth/auth.js +9 -1
  291. package/dist/server/auth/auth.js.map +1 -1
  292. package/dist/server/auth/permission-levels.d.ts.map +1 -1
  293. package/dist/server/auth/permission-levels.js +12 -6
  294. package/dist/server/auth/permission-levels.js.map +1 -1
  295. package/dist/server/db/drizzle.d.ts.map +1 -1
  296. package/dist/server/db/drizzle.js +2 -1
  297. package/dist/server/db/drizzle.js.map +1 -1
  298. package/dist/server/db/drizzle.service.d.ts.map +1 -1
  299. package/dist/server/db/drizzle.service.js +2 -1
  300. package/dist/server/db/drizzle.service.js.map +1 -1
  301. package/dist/server/db/index.d.ts +1 -1
  302. package/dist/server/db/index.d.ts.map +1 -1
  303. package/dist/server/db/index.js +1 -1
  304. package/dist/server/db/index.js.map +1 -1
  305. package/dist/server/db/migrate.d.ts.map +1 -1
  306. package/dist/server/db/migrate.js +2 -1
  307. package/dist/server/db/migrate.js.map +1 -1
  308. package/dist/server/db/outbox/__tests__/relay.test.js +4 -2
  309. package/dist/server/db/outbox/__tests__/relay.test.js.map +1 -1
  310. package/dist/server/db/outbox/relay.d.ts +15 -0
  311. package/dist/server/db/outbox/relay.d.ts.map +1 -1
  312. package/dist/server/db/outbox/relay.js +21 -14
  313. package/dist/server/db/outbox/relay.js.map +1 -1
  314. package/dist/server/db/query-helpers.d.ts +2 -0
  315. package/dist/server/db/query-helpers.d.ts.map +1 -1
  316. package/dist/server/db/query-helpers.js +28 -1
  317. package/dist/server/db/query-helpers.js.map +1 -1
  318. package/dist/server/kernel/__tests__/event-bus.test.js +10 -7
  319. package/dist/server/kernel/__tests__/event-bus.test.js.map +1 -1
  320. package/dist/server/kernel/__tests__/job-queue.test.js +5 -2
  321. package/dist/server/kernel/__tests__/job-queue.test.js.map +1 -1
  322. package/dist/server/kernel/__tests__/rate-limiter.test.js +10 -5
  323. package/dist/server/kernel/__tests__/rate-limiter.test.js.map +1 -1
  324. package/dist/server/kernel/__tests__/redis-cache.test.js +2 -1
  325. package/dist/server/kernel/__tests__/redis-cache.test.js.map +1 -1
  326. package/dist/server/kernel/bullmq-job-queue.d.ts +12 -0
  327. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  328. package/dist/server/kernel/bullmq-job-queue.js +21 -4
  329. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  330. package/dist/server/kernel/cache.d.ts.map +1 -1
  331. package/dist/server/kernel/cache.js +14 -7
  332. package/dist/server/kernel/cache.js.map +1 -1
  333. package/dist/server/kernel/container.d.ts +10 -0
  334. package/dist/server/kernel/container.d.ts.map +1 -1
  335. package/dist/server/kernel/container.js +12 -1
  336. package/dist/server/kernel/container.js.map +1 -1
  337. package/dist/server/kernel/event-bus.d.ts +9 -0
  338. package/dist/server/kernel/event-bus.d.ts.map +1 -1
  339. package/dist/server/kernel/event-bus.js +9 -1
  340. package/dist/server/kernel/event-bus.js.map +1 -1
  341. package/dist/server/kernel/event-stream.d.ts.map +1 -1
  342. package/dist/server/kernel/event-stream.js +2 -1
  343. package/dist/server/kernel/event-stream.js.map +1 -1
  344. package/dist/server/kernel/job-queue.d.ts +12 -0
  345. package/dist/server/kernel/job-queue.d.ts.map +1 -1
  346. package/dist/server/kernel/job-queue.js +38 -15
  347. package/dist/server/kernel/job-queue.js.map +1 -1
  348. package/dist/server/kernel/ownership.d.ts.map +1 -1
  349. package/dist/server/kernel/ownership.js +2 -1
  350. package/dist/server/kernel/ownership.js.map +1 -1
  351. package/dist/server/kernel/platform-config-loader.d.ts.map +1 -1
  352. package/dist/server/kernel/platform-config-loader.js +34 -16
  353. package/dist/server/kernel/platform-config-loader.js.map +1 -1
  354. package/dist/server/kernel/rate-limiter.d.ts.map +1 -1
  355. package/dist/server/kernel/rate-limiter.js +6 -3
  356. package/dist/server/kernel/rate-limiter.js.map +1 -1
  357. package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
  358. package/dist/server/kernel/realtime-transport.js +10 -5
  359. package/dist/server/kernel/realtime-transport.js.map +1 -1
  360. package/dist/server/kernel/redis-cache.d.ts.map +1 -1
  361. package/dist/server/kernel/redis-cache.js +10 -5
  362. package/dist/server/kernel/redis-cache.js.map +1 -1
  363. package/dist/server/kernel/redis-rate-limiter.d.ts +11 -0
  364. package/dist/server/kernel/redis-rate-limiter.d.ts.map +1 -1
  365. package/dist/server/kernel/redis-rate-limiter.js +13 -1
  366. package/dist/server/kernel/redis-rate-limiter.js.map +1 -1
  367. package/dist/server/kernel/serialize-row.d.ts.map +1 -1
  368. package/dist/server/kernel/serialize-row.js +4 -2
  369. package/dist/server/kernel/serialize-row.js.map +1 -1
  370. package/dist/server/plugin-host/load-extensions.js +2 -1
  371. package/dist/server/plugin-host/load-extensions.js.map +1 -1
  372. package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
  373. package/dist/server/plugin-host/load-plugins.js +4 -2
  374. package/dist/server/plugin-host/load-plugins.js.map +1 -1
  375. package/dist/server/plugin-host/service-manifest.d.ts.map +1 -1
  376. package/dist/server/plugin-host/service-manifest.js +4 -2
  377. package/dist/server/plugin-host/service-manifest.js.map +1 -1
  378. package/dist/server/runtime/create-app.d.ts +12 -0
  379. package/dist/server/runtime/create-app.d.ts.map +1 -1
  380. package/dist/server/runtime/create-app.js +27 -6
  381. package/dist/server/runtime/create-app.js.map +1 -1
  382. package/dist/wallet/__tests__/admin-reporting.test.js +2 -2
  383. package/dist/wallet/__tests__/admin-reporting.test.js.map +1 -1
  384. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +5 -5
  385. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
  386. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +45 -34
  387. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
  388. package/dist/wallet/__tests__/wallet-commands.service.test.js +54 -37
  389. package/dist/wallet/__tests__/wallet-commands.service.test.js.map +1 -1
  390. package/dist/wallet/__tests__/wallet-kyc-gate.test.js +5 -5
  391. package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +1 -1
  392. package/dist/wallet/__tests__/wallet.rate-limit.test.js +2 -2
  393. package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +1 -1
  394. package/dist/wallet/__tests__/wallet.service.test.js +62 -34
  395. package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
  396. package/dist/wallet/adapters/mock/mock-payment-adapter.d.ts +2 -2
  397. package/dist/wallet/adapters/wallet-reader.service.d.ts +1 -1
  398. package/dist/wallet/adapters/wallet-reader.service.js +1 -1
  399. package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
  400. package/dist/wallet/admin-reporting.d.ts +4 -4
  401. package/dist/wallet/admin-reporting.d.ts.map +1 -1
  402. package/dist/wallet/admin-reporting.js +8 -8
  403. package/dist/wallet/admin-reporting.js.map +1 -1
  404. package/dist/wallet/contract/index.d.ts +20 -20
  405. package/dist/wallet/contract/index.d.ts.map +1 -1
  406. package/dist/wallet/contract/index.js +14 -10
  407. package/dist/wallet/contract/index.js.map +1 -1
  408. package/dist/wallet/drizzle/migrations/0001_redundant_micromacro.sql +4 -0
  409. package/dist/wallet/drizzle/migrations/meta/0001_snapshot.json +397 -0
  410. package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
  411. package/dist/wallet/plugin.d.ts.map +1 -1
  412. package/dist/wallet/plugin.js +5 -1
  413. package/dist/wallet/plugin.js.map +1 -1
  414. package/dist/wallet/router/index.d.ts +11 -11
  415. package/dist/wallet/schema/index.js +3 -3
  416. package/dist/wallet/schema/index.js.map +1 -1
  417. package/dist/wallet/service/wallet-commands.service.d.ts +1 -0
  418. package/dist/wallet/service/wallet-commands.service.d.ts.map +1 -1
  419. package/dist/wallet/service/wallet-commands.service.js +32 -24
  420. package/dist/wallet/service/wallet-commands.service.js.map +1 -1
  421. package/dist/wallet/service/wallet.service.d.ts +46 -18
  422. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  423. package/dist/wallet/service/wallet.service.js +152 -74
  424. package/dist/wallet/service/wallet.service.js.map +1 -1
  425. package/oxlint/oxlintrc.json +19 -3
  426. package/package.json +1 -1
  427. package/turbo-generators/src/config.ts +18 -6
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/wallet/plugin.ts"],"names":[],"mappings":";AAmBA,wBA2BG"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/wallet/plugin.ts"],"names":[],"mappings":";AAmBA,wBA+BG"}
@@ -7,8 +7,12 @@ import { DrizzleAdminWalletReporting } from './admin-reporting.js';
7
7
  import { createWalletRouter } from './router/index.js';
8
8
  import { MockPaymentAdapter } from './adapters/mock/mock-payment-adapter.js';
9
9
  export default definePlugin({
10
+ // NOT dependsOn 'tag': that would cycle (tag hard-depends on wallet's WALLET_READER).
11
+ // wallet's use of tag's PLAYER_TAGS is optional and resolved lazily in the router
12
+ // factory (`c.has(PLAYER_TAGS)`), which runs after every plugin has registered - so
13
+ // the port is bound by then regardless of load order.
10
14
  id: 'wallet',
11
- dependsOn: ['identity', 'tag', 'audit'],
15
+ dependsOn: ['identity', 'audit'],
12
16
  register(ctx) {
13
17
  ctx.provide(PAYMENT_ADAPTER, () => new MockPaymentAdapter());
14
18
  // Other modules debit through this port within their own transaction (never importing wallet tables). See ADR-0016.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/wallet/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,QAAQ;IACZ,SAAS,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAC7D,oHAAoH;QACpH,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAChE,oGAAoG;QACpG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5F,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9B,kBAAkB,CAChB,IAAI,aAAa,CAAC;YAChB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YACxB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;YAC/B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACtC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3E,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5B,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;SAC3B,CAAC,EACF,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAClB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CACpB,CACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/wallet/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,eAAe,YAAY,CAAC;IAC1B,sFAAsF;IACtF,kFAAkF;IAClF,oFAAoF;IACpF,sDAAsD;IACtD,EAAE,EAAE,QAAQ;IACZ,SAAS,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAC7D,oHAAoH;QACpH,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAChE,oGAAoG;QACpG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5F,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9B,kBAAkB,CAChB,IAAI,aAAa,CAAC;YAChB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YACxB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;YAC/B,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACtC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3E,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5B,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;SAC3B,CAAC,EACF,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAClB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CACpB,CACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -3,11 +3,11 @@ import type { AuditWritePort } from '@openora/core/contracts';
3
3
  import { WalletService } from '../service/wallet.service.js';
4
4
  export declare function createWalletRouter(wallet: WalletService, adminGuard: AdminGuard, audit: AuditWritePort): {
5
5
  getBalance: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("@orpc/server").Schema<unknown, unknown>, import("zod").ZodObject<{
6
- balance: import("zod").ZodNumber;
6
+ balance: import("zod").ZodString;
7
7
  currency: import("zod").ZodString;
8
8
  }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
9
9
  deposit: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
10
- amount: import("zod").ZodNumber;
10
+ amount: import("zod").ZodString;
11
11
  currency: import("zod").ZodString;
12
12
  provider: import("zod").ZodOptional<import("zod").ZodString>;
13
13
  idempotencyKey: import("zod").ZodOptional<import("zod").ZodUUID>;
@@ -24,7 +24,7 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
24
24
  }>;
25
25
  }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
26
26
  withdraw: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
27
- amount: import("zod").ZodNumber;
27
+ amount: import("zod").ZodString;
28
28
  currency: import("zod").ZodString;
29
29
  provider: import("zod").ZodOptional<import("zod").ZodString>;
30
30
  idempotencyKey: import("zod").ZodOptional<import("zod").ZodUUID>;
@@ -55,7 +55,7 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
55
55
  bonus: "bonus";
56
56
  tip: "tip";
57
57
  }>;
58
- amount: import("zod").ZodNumber;
58
+ amount: import("zod").ZodString;
59
59
  currency: import("zod").ZodString;
60
60
  status: import("zod").ZodEnum<{
61
61
  pending: "pending";
@@ -88,7 +88,7 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
88
88
  bonus: "bonus";
89
89
  tip: "tip";
90
90
  }>;
91
- amount: import("zod").ZodNumber;
91
+ amount: import("zod").ZodString;
92
92
  currency: import("zod").ZodString;
93
93
  status: import("zod").ZodEnum<{
94
94
  pending: "pending";
@@ -123,8 +123,8 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
123
123
  crypto: "crypto";
124
124
  fiat: "fiat";
125
125
  }>>;
126
- minAmount: import("zod").ZodOptional<import("zod").ZodCoercedNumber<unknown>>;
127
- maxAmount: import("zod").ZodOptional<import("zod").ZodCoercedNumber<unknown>>;
126
+ minAmount: import("zod").ZodOptional<import("zod").ZodString>;
127
+ maxAmount: import("zod").ZodOptional<import("zod").ZodString>;
128
128
  kycStatus: import("zod").ZodOptional<import("zod").ZodEnum<{
129
129
  pending: "pending";
130
130
  not_started: "not_started";
@@ -140,7 +140,7 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
140
140
  transactionId: import("zod").ZodUUID;
141
141
  userId: import("zod").ZodUUID;
142
142
  username: import("zod").ZodString;
143
- amount: import("zod").ZodNumber;
143
+ amount: import("zod").ZodString;
144
144
  currency: import("zod").ZodString;
145
145
  rail: import("zod").ZodNullable<import("zod").ZodEnum<{
146
146
  crypto: "crypto";
@@ -203,12 +203,12 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
203
203
  autoWithdrawalRules: {
204
204
  set: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
205
205
  userId: import("zod").ZodUUID;
206
- threshold: import("zod").ZodNumber;
206
+ threshold: import("zod").ZodString;
207
207
  reason: import("zod").ZodString;
208
208
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
209
209
  id: import("zod").ZodUUID;
210
210
  userId: import("zod").ZodUUID;
211
- threshold: import("zod").ZodNumber;
211
+ threshold: import("zod").ZodString;
212
212
  reason: import("zod").ZodString;
213
213
  createdBy: import("zod").ZodUUID;
214
214
  createdAt: import("zod").ZodISODateTime;
@@ -219,7 +219,7 @@ export declare function createWalletRouter(wallet: WalletService, adminGuard: Ad
219
219
  }, import("zod/v4/core").$strip>, import("zod").ZodNullable<import("zod").ZodObject<{
220
220
  id: import("zod").ZodUUID;
221
221
  userId: import("zod").ZodUUID;
222
- threshold: import("zod").ZodNumber;
222
+ threshold: import("zod").ZodString;
223
223
  reason: import("zod").ZodString;
224
224
  createdBy: import("zod").ZodUUID;
225
225
  createdAt: import("zod").ZodISODateTime;
@@ -9,7 +9,7 @@ export const walletRailEnum = pgEnum('wallet_rail', WALLET_RAILS);
9
9
  export const wallet = pgTable('wallet', {
10
10
  id: uuid().primaryKey().defaultRandom(),
11
11
  userId: uuid().notNull().unique('wallet_user_id_unique'),
12
- balance: decimal().notNull().default('0'),
12
+ balance: decimal({ precision: 18, scale: 2 }).notNull().default('0'),
13
13
  currency: text().notNull().default('USD'),
14
14
  updatedAt: timestamp({ withTimezone: true })
15
15
  .notNull()
@@ -21,7 +21,7 @@ export const walletTransaction = pgTable('wallet_transaction', {
21
21
  .notNull()
22
22
  .references(() => wallet.id),
23
23
  type: walletTransactionTypeEnum().notNull(),
24
- amount: decimal().notNull(),
24
+ amount: decimal({ precision: 18, scale: 2 }).notNull(),
25
25
  currency: text().notNull(),
26
26
  status: walletTransactionStatusEnum()
27
27
  .$type()
@@ -61,7 +61,7 @@ export const walletTransaction = pgTable('wallet_transaction', {
61
61
  export const autoWithdrawalRule = pgTable('auto_withdrawal_rule', {
62
62
  id: uuid().primaryKey().defaultRandom(),
63
63
  userId: uuid().notNull().unique('auto_withdrawal_rule_user_id_unique'),
64
- threshold: decimal().notNull(),
64
+ threshold: decimal({ precision: 18, scale: 2 }).notNull(),
65
65
  reason: text().notNull(),
66
66
  createdBy: uuid().notNull(),
67
67
  createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { WalletCommands, WalletDebitArgs, WalletDebitOutcome, WalletCreditArgs, WalletCreditOutcome } from '@openora/core/contracts';
2
+ export declare const WalletCommandAmountError: new (operation: string, amount: string) => Error;
2
3
  export declare class WalletCommandsService implements WalletCommands {
3
4
  private writeLedgerRow;
4
5
  debit(tx: unknown, { userId, amount, type }: WalletDebitArgs): Promise<WalletDebitOutcome>;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-commands.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet-commands.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,yBAAyB,CAAC;AAkBjC,qBAAa,qBAAsB,YAAW,cAAc;IAE1D,OAAO,CAAC,cAAc;IAgBhB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6B1F,MAAM,CACV,EAAE,EAAE,OAAO,EACX,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,gBAAgB,GACzC,OAAO,CAAC,mBAAmB,CAAC;CAoBhC"}
1
+ {"version":3,"file":"wallet-commands.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet-commands.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,yBAAyB,CAAC;AAMjC,eAAO,MAAM,wBAAwB,kDAGpC,CAAC;AASF,qBAAa,qBAAsB,YAAW,cAAc;IAE1D,OAAO,CAAC,cAAc;IAgBhB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoC1F,MAAM,CACV,EAAE,EAAE,OAAO,EACX,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,gBAAgB,GACzC,OAAO,CAAC,mBAAmB,CAAC;CA0BhC"}
@@ -1,10 +1,8 @@
1
+ import { createDomainError } from '@openora/core/server';
1
2
  import { and, eq, gte, sql } from 'drizzle-orm';
2
3
  import { wallet, walletTransaction } from '../schema/index.js';
3
4
  import { railFor } from './wallet.service.js';
4
- // Round a money amount to 2 decimal places, avoiding binary float drift on the running balance.
5
- function round2(n) {
6
- return Math.round(n * 100) / 100;
7
- }
5
+ export const WalletCommandAmountError = createDomainError('WalletCommandAmountError', (operation, amount) => `wallet ${operation} amount must be positive (got ${amount})`);
8
6
  // Default in-process WALLET_COMMANDS implementation. Operates on the caller's
9
7
  // transaction handle, so a move commits or rolls back together with the caller's
10
8
  // other writes - the same atomicity the cross-module schema-write gave, now behind
@@ -18,7 +16,7 @@ export class WalletCommandsService {
18
16
  return txn.insert(walletTransaction).values({
19
17
  walletId: row.id,
20
18
  type,
21
- amount: amount.toString(),
19
+ amount,
22
20
  currency: row.currency,
23
21
  status: 'completed',
24
22
  rail: railFor(row.currency),
@@ -27,42 +25,52 @@ export class WalletCommandsService {
27
25
  async debit(tx, { userId, amount, type }) {
28
26
  const txn = tx;
29
27
  // `loss` is informational (stake already left at bet time): 0-amount row, balance untouched. Every other debit is real money.
30
- if (type !== 'loss' && amount <= 0) {
31
- throw new Error(`wallet debit amount must be positive (got ${amount})`);
28
+ if (type !== 'loss' && Number(amount) <= 0) {
29
+ throw new WalletCommandAmountError('debit', amount);
32
30
  }
33
31
  const [row] = await txn.select().from(wallet).where(eq(wallet.userId, userId));
34
- if (!row)
35
- return { ok: false, available: 0 };
36
- const available = Number(row.balance);
32
+ if (!row) {
33
+ return { ok: false, available: '0' };
34
+ }
35
+ const available = row.balance;
37
36
  if (type === 'loss') {
38
- await this.writeLedgerRow(txn, row, 'loss', 0);
37
+ await this.writeLedgerRow(txn, row, 'loss', '0');
39
38
  return { ok: true, newBalance: available };
40
39
  }
40
+ // The UPDATE ... RETURNING gives the new balance straight from Postgres numeric
41
+ // arithmetic - no JS float math on either side of the debit.
41
42
  const debited = await txn
42
43
  .update(wallet)
43
- .set({ balance: sql `${wallet.balance} - ${amount}` })
44
- .where(and(eq(wallet.id, row.id), gte(wallet.balance, amount.toString())))
45
- .returning({ id: wallet.id });
46
- if (debited.length !== 1)
44
+ .set({ balance: sql `${wallet.balance} - ${amount}::numeric` })
45
+ .where(and(eq(wallet.id, row.id), gte(wallet.balance, amount)))
46
+ .returning({ balance: wallet.balance });
47
+ const newBalance = debited[0]?.balance;
48
+ if (newBalance === undefined) {
47
49
  return { ok: false, available };
50
+ }
48
51
  await this.writeLedgerRow(txn, row, type, amount);
49
- return { ok: true, newBalance: round2(available - Number(amount)) };
52
+ return { ok: true, newBalance };
50
53
  }
51
54
  async credit(tx, { userId, amount, type }) {
52
55
  const txn = tx;
53
- if (amount <= 0) {
54
- throw new Error(`wallet credit amount must be positive (got ${amount})`);
56
+ if (Number(amount) <= 0) {
57
+ throw new WalletCommandAmountError('credit', amount);
55
58
  }
56
59
  const [row] = await txn.select().from(wallet).where(eq(wallet.userId, userId));
57
60
  // Fail closed: a credit never creates a wallet - a missing one is a caller bug.
58
- if (!row)
61
+ if (!row) {
59
62
  return { ok: false, reason: 'wallet not found' };
60
- await txn
63
+ }
64
+ const [credited] = await txn
61
65
  .update(wallet)
62
- .set({ balance: sql `${wallet.balance} + ${amount}` })
63
- .where(eq(wallet.id, row.id));
64
- await this.writeLedgerRow(txn, row, type, Number(amount));
65
- return { ok: true, newBalance: round2(Number(row.balance) + Number(amount)) };
66
+ .set({ balance: sql `${wallet.balance} + ${amount}::numeric` })
67
+ .where(eq(wallet.id, row.id))
68
+ .returning({ balance: wallet.balance });
69
+ if (!credited) {
70
+ throw new Error('wallet credit: no row');
71
+ }
72
+ await this.writeLedgerRow(txn, row, type, amount);
73
+ return { ok: true, newBalance: credited.balance };
66
74
  }
67
75
  }
68
76
  //# sourceMappingURL=wallet-commands.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-commands.service.js","sourceRoot":"","sources":["../../../src/wallet/service/wallet-commands.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet-commands.service.js","sourceRoot":"","sources":["../../../src/wallet/service/wallet-commands.service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { type EventBus, DrizzleService } from '@openora/core/server';
2
- import { type PaymentAdapter, type AdminUserDirectory, type PlatformConfig, type RateLimiterAdapter, type WalletRail, type PlayerTags, type AuditWritePort } from '@openora/core/contracts';
2
+ import { type PaymentAdapter, type AdminUserDirectory, type PlatformConfig, type RateLimiterAdapter, type WalletRail, type PlayerTags, type AuditWritePort, type User } from '@openora/core/contracts';
3
+ import { type WalletTransaction } from '../schema/index.js';
3
4
  import type { TransactionResult, WithdrawalQueueFilter, AutoWithdrawalRule } from '../contract/index.js';
4
5
  export declare const WalletNotFoundError: new (id: string) => Error;
5
6
  export declare const WithdrawalNotFoundError: new (id: string) => Error;
6
- export declare const InsufficientBalanceError: new (available: unknown, requested: unknown) => Error;
7
+ export declare const InsufficientBalanceError: new (available: string, requested: string) => Error;
7
8
  export declare const WithdrawalNotPendingError: new () => Error;
8
9
  export declare const KycRequiredError: new () => Error;
9
10
  export declare const IdempotencyKeyReuseError: new () => Error;
@@ -19,6 +20,14 @@ export type WalletServiceDeps = {
19
20
  riskTags?: PlayerTags;
20
21
  audit: AuditWritePort;
21
22
  };
23
+ /**
24
+ * Owns all wallet balance mutations and the withdrawal review/auto-approval
25
+ * pipeline. Every balance change is a transactional, idempotent-keyed ledger
26
+ * write (never a bare balance update) - `amount` is always a decimal string,
27
+ * mutated via SQL numeric arithmetic, never a JS float. Domain events emit only
28
+ * AFTER the owning transaction commits, and only for the non-replay branch of
29
+ * an idempotent call.
30
+ */
22
31
  export declare class WalletService {
23
32
  private readonly drizzle;
24
33
  private readonly events;
@@ -32,13 +41,23 @@ export declare class WalletService {
32
41
  private rateLimit;
33
42
  /** Fail-closed KYC gate: when enabled, a withdrawal needs a passing status (verified|manually_overridden). */
34
43
  private assertKycForWithdrawal;
35
- getBalance(userId: string): Promise<{
36
- balance: number;
44
+ getBalance(userId: User['id']): Promise<{
45
+ balance: string;
37
46
  currency: string;
38
47
  }>;
48
+ /**
49
+ * `idempotencyKey` (when supplied) makes a retried deposit a no-op: a replay
50
+ * returns the original committed result WITHOUT calling the PSP again or
51
+ * crediting the balance twice, and rejects if the same key is reused with a
52
+ * different amount/currency (`IdempotencyKeyReuseError`). A GENUINE
53
+ * concurrent race (two first-attempts, same key, landing at once) can both
54
+ * reach the PSP, but the ledger insert's unique-index conflict still
55
+ * guarantees only one balance credit - the loser's write becomes a replay
56
+ * read of the winner's row.
57
+ */
39
58
  deposit({ userId, amount, currency, provider, idempotencyKey, }: {
40
- userId: string;
41
- amount: number;
59
+ userId: User['id'];
60
+ amount: string;
42
61
  currency: string;
43
62
  provider?: string;
44
63
  idempotencyKey?: string;
@@ -46,10 +65,19 @@ export declare class WalletService {
46
65
  private findDepositReplay;
47
66
  private assertReplayMatches;
48
67
  private insertIdempotentTransaction;
49
- /** Creates a PENDING withdrawal and HOLDS the funds (balance debited at request time). Funds are returned on reject/PSP-failure. */
68
+ /**
69
+ * Creates a PENDING withdrawal and HOLDS the funds immediately (balance
70
+ * debited at request time, not on approval) - funds are returned on
71
+ * reject/PSP-failure. The debit is a conditional `UPDATE ... WHERE balance
72
+ * >= amount`, atomic with the row lock (`FOR UPDATE`) taken on the wallet,
73
+ * so two concurrent withdrawals can't both pass a balance check and
74
+ * double-spend. `idempotencyKey` replay semantics mirror `deposit()`. May
75
+ * return an already-`completed`/`processing` result if the request
76
+ * qualifies for (and passes) auto-approval - see `maybeAutoApprove`.
77
+ */
50
78
  withdraw({ userId, amount, currency, idempotencyKey, }: {
51
- userId: string;
52
- amount: number;
79
+ userId: User['id'];
80
+ amount: string;
53
81
  currency: string;
54
82
  idempotencyKey?: string;
55
83
  }): Promise<TransactionResult>;
@@ -58,7 +86,7 @@ export declare class WalletService {
58
86
  transactionId: string;
59
87
  userId: string;
60
88
  username: string;
61
- amount: number;
89
+ amount: string;
62
90
  currency: string;
63
91
  rail: "crypto" | "fiat" | null;
64
92
  status: "pending" | "rejected" | "processing" | "completed" | "failed" | "on_hold" | "cancelled";
@@ -75,7 +103,7 @@ export declare class WalletService {
75
103
  * or Failed + refund on PSP error. Robust PSP idempotency-key/reconciliation for a
76
104
  * lost-response is deferred - same scope boundary the deposit path declares.
77
105
  */
78
- approveWithdrawal(adminId: string, withdrawalId: string): Promise<TransactionResult>;
106
+ approveWithdrawal(adminId: User['id'], withdrawalId: WalletTransaction['id']): Promise<TransactionResult>;
79
107
  private flipToProcessing;
80
108
  private settleApproved;
81
109
  private maybeAutoApprove;
@@ -87,19 +115,19 @@ export declare class WalletService {
87
115
  private frequentWithdrawalWalletIds;
88
116
  private autoApprovalCaps;
89
117
  setAutoWithdrawalRule({ userId, threshold, reason, createdBy, }: {
90
- userId: string;
91
- threshold: number;
118
+ userId: User['id'];
119
+ threshold: string;
92
120
  reason: string;
93
121
  createdBy: string;
94
122
  }): Promise<AutoWithdrawalRule>;
95
- getAutoWithdrawalRule(userId: string): Promise<AutoWithdrawalRule | null>;
96
- deleteAutoWithdrawalRule(userId: string): Promise<boolean>;
97
- rejectWithdrawal(adminId: string, withdrawalId: string, reason: string): Promise<TransactionResult>;
98
- getTransactions(userId: string, page: number, limit: number): Promise<{
123
+ getAutoWithdrawalRule(userId: User['id']): Promise<AutoWithdrawalRule | null>;
124
+ deleteAutoWithdrawalRule(userId: User['id']): Promise<boolean>;
125
+ rejectWithdrawal(adminId: User['id'], withdrawalId: WalletTransaction['id'], reason: string): Promise<TransactionResult>;
126
+ getTransactions(userId: User['id'], page: number, limit: number): Promise<{
99
127
  items: {
100
128
  id: string;
101
129
  type: "deposit" | "loss" | "withdrawal" | "bet" | "win" | "bonus" | "tip";
102
- amount: number;
130
+ amount: string;
103
131
  currency: string;
104
132
  status: "pending" | "rejected" | "processing" | "completed" | "failed" | "on_hold" | "cancelled";
105
133
  createdAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet.service.ts"],"names":[],"mappings":"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"}