@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.
- package/LICENSE-COMMERCIAL.md +2 -2
- package/README.md +8 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/admin-console/__tests__/backoffice.service.test.js +1 -1
- package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
- package/dist/admin-console/contract/index.d.ts +14 -14
- package/dist/admin-console/contract/index.d.ts.map +1 -1
- package/dist/admin-console/contract/index.js +8 -8
- package/dist/admin-console/contract/index.js.map +1 -1
- package/dist/admin-console/router/index.d.ts +7 -7
- package/dist/admin-console/service/backoffice.service.d.ts +22 -49
- package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
- package/dist/admin-console/service/backoffice.service.js +16 -31
- package/dist/admin-console/service/backoffice.service.js.map +1 -1
- package/dist/audit/__tests__/audit.service.test.js +29 -2
- package/dist/audit/__tests__/audit.service.test.js.map +1 -1
- package/dist/audit/contract/index.d.ts.map +1 -1
- package/dist/audit/contract/index.js +2 -0
- package/dist/audit/contract/index.js.map +1 -1
- package/dist/audit/plugin.d.ts.map +1 -1
- package/dist/audit/plugin.js +54 -4
- package/dist/audit/plugin.js.map +1 -1
- package/dist/audit/service/audit.service.d.ts +1 -0
- package/dist/audit/service/audit.service.d.ts.map +1 -1
- package/dist/audit/service/audit.service.js +53 -25
- package/dist/audit/service/audit.service.js.map +1 -1
- package/dist/casino/gaming/contract/index.d.ts.map +1 -1
- package/dist/casino/gaming/contract/index.js +3 -3
- package/dist/casino/gaming/contract/index.js.map +1 -1
- package/dist/casino/gaming/drizzle/migrations/0001_easy_ben_grimm.sql +4 -0
- package/dist/casino/gaming/drizzle/migrations/meta/0001_snapshot.json +188 -0
- package/dist/casino/gaming/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/casino/gaming/schema/index.js +2 -2
- package/dist/casino/gaming/schema/index.js.map +1 -1
- package/dist/casino/gaming/service/gaming.service.d.ts +11 -11
- package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
- package/dist/casino/gaming/service/gaming.service.js +4 -14
- package/dist/casino/gaming/service/gaming.service.js.map +1 -1
- package/dist/cms/__tests__/cms.cache.test.js +1 -1
- package/dist/cms/__tests__/cms.cache.test.js.map +1 -1
- package/dist/cms/__tests__/cms.router.test.d.ts +2 -0
- package/dist/cms/__tests__/cms.router.test.d.ts.map +1 -0
- package/dist/cms/__tests__/cms.router.test.js +51 -0
- package/dist/cms/__tests__/cms.router.test.js.map +1 -0
- package/dist/cms/router/index.d.ts.map +1 -1
- package/dist/cms/router/index.js +12 -12
- package/dist/cms/router/index.js.map +1 -1
- package/dist/cms/service/cms.service.d.ts +7 -7
- package/dist/cms/service/cms.service.d.ts.map +1 -1
- package/dist/cms/service/cms.service.js +39 -23
- package/dist/cms/service/cms.service.js.map +1 -1
- package/dist/compliance/__tests__/compliance.service.test.js +2 -1
- package/dist/compliance/__tests__/compliance.service.test.js.map +1 -1
- package/dist/compliance/__tests__/kyc.service.test.js +12 -10
- package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
- package/dist/compliance/__tests__/rg-monitoring.service.test.js +17 -6
- package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +1 -1
- package/dist/compliance/__tests__/rg.contract.test.js +18 -10
- package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
- package/dist/compliance/__tests__/rg.router.test.js +5 -4
- package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
- package/dist/compliance/__tests__/rg.service.test.js +18 -12
- package/dist/compliance/__tests__/rg.service.test.js.map +1 -1
- package/dist/compliance/contract/index.d.ts +20 -14
- package/dist/compliance/contract/index.d.ts.map +1 -1
- package/dist/compliance/contract/limits.d.ts +9 -2
- package/dist/compliance/contract/limits.d.ts.map +1 -1
- package/dist/compliance/contract/limits.js +21 -3
- package/dist/compliance/contract/limits.js.map +1 -1
- package/dist/compliance/contract/rg.d.ts +28 -23
- package/dist/compliance/contract/rg.d.ts.map +1 -1
- package/dist/compliance/contract/rg.js +14 -9
- package/dist/compliance/contract/rg.js.map +1 -1
- package/dist/compliance/drizzle/migrations/0001_funny_vance_astro.sql +5 -0
- package/dist/compliance/drizzle/migrations/meta/0001_snapshot.json +660 -0
- package/dist/compliance/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/compliance/plugin.d.ts.map +1 -1
- package/dist/compliance/plugin.js +26 -12
- package/dist/compliance/plugin.js.map +1 -1
- package/dist/compliance/router/index.d.ts +20 -14
- package/dist/compliance/router/index.d.ts.map +1 -1
- package/dist/compliance/router/index.js +2 -1
- package/dist/compliance/router/index.js.map +1 -1
- package/dist/compliance/schema/index.d.ts +31 -14
- package/dist/compliance/schema/index.d.ts.map +1 -1
- package/dist/compliance/schema/index.js +10 -7
- package/dist/compliance/schema/index.js.map +1 -1
- package/dist/compliance/service/compliance.service.d.ts +27 -22
- package/dist/compliance/service/compliance.service.d.ts.map +1 -1
- package/dist/compliance/service/compliance.service.js +9 -22
- package/dist/compliance/service/compliance.service.js.map +1 -1
- package/dist/compliance/service/kyc.service.d.ts +22 -19
- package/dist/compliance/service/kyc.service.d.ts.map +1 -1
- package/dist/compliance/service/kyc.service.js +19 -24
- package/dist/compliance/service/kyc.service.js.map +1 -1
- package/dist/compliance/service/re-kyc-trigger.d.ts +4 -4
- package/dist/compliance/service/re-kyc-trigger.d.ts.map +1 -1
- package/dist/compliance/service/re-kyc-trigger.js +10 -6
- package/dist/compliance/service/re-kyc-trigger.js.map +1 -1
- package/dist/compliance/service/rg-eval.d.ts.map +1 -1
- package/dist/compliance/service/rg-eval.js +4 -2
- package/dist/compliance/service/rg-eval.js.map +1 -1
- package/dist/compliance/service/rg-monitoring.service.d.ts +6 -5
- package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
- package/dist/compliance/service/rg-monitoring.service.js +62 -31
- package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
- package/dist/compliance/service/rg.service.d.ts +28 -6
- package/dist/compliance/service/rg.service.d.ts.map +1 -1
- package/dist/compliance/service/rg.service.js +60 -34
- package/dist/compliance/service/rg.service.js.map +1 -1
- package/dist/contracts/adapters/admin-wallet-reporting.d.ts +5 -5
- package/dist/contracts/adapters/payment.d.ts +2 -2
- package/dist/contracts/adapters/wallet-commands.d.ts +5 -5
- package/dist/contracts/adapters/wallet-reader.d.ts +2 -2
- package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
- package/dist/contracts/schemas/common.d.ts +2 -5
- package/dist/contracts/schemas/common.d.ts.map +1 -1
- package/dist/contracts/schemas/common.js +3 -4
- package/dist/contracts/schemas/common.js.map +1 -1
- package/dist/contracts/schemas/events.d.ts +35 -9
- package/dist/contracts/schemas/events.d.ts.map +1 -1
- package/dist/contracts/schemas/events.js +32 -7
- package/dist/contracts/schemas/events.js.map +1 -1
- package/dist/contracts/schemas/platform-config.d.ts +9 -9
- package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
- package/dist/contracts/schemas/platform-config.js +6 -5
- package/dist/contracts/schemas/platform-config.js.map +1 -1
- package/dist/contracts/schemas/player.d.ts +2 -2
- package/dist/contracts/schemas/player.js +3 -3
- package/dist/contracts/schemas/player.js.map +1 -1
- package/dist/contracts/schemas/tag.d.ts +2 -2
- package/dist/contracts/schemas/tag.js +3 -3
- package/dist/contracts/schemas/tag.js.map +1 -1
- package/dist/engagement/chat/moderation/moderate.d.ts.map +1 -1
- package/dist/engagement/chat/moderation/moderate.js +2 -1
- package/dist/engagement/chat/moderation/moderate.js.map +1 -1
- package/dist/engagement/chat/react/use-chat-stream.d.ts +2 -3
- package/dist/engagement/chat/react/use-chat-stream.d.ts.map +1 -1
- package/dist/engagement/chat/react/use-chat-stream.js +4 -2
- package/dist/engagement/chat/react/use-chat-stream.js.map +1 -1
- package/dist/engagement/chat/router/index.d.ts.map +1 -1
- package/dist/engagement/chat/router/index.js +2 -1
- package/dist/engagement/chat/router/index.js.map +1 -1
- package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
- package/dist/engagement/chat/service/chat.service.js +22 -11
- package/dist/engagement/chat/service/chat.service.js.map +1 -1
- package/dist/engagement/notifications/__tests__/notifications.service.test.js +4 -3
- package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +1 -1
- package/dist/engagement/notifications/contract/index.d.ts +24 -2
- package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
- package/dist/engagement/notifications/contract/index.js +10 -1
- package/dist/engagement/notifications/contract/index.js.map +1 -1
- package/dist/engagement/notifications/index.d.ts +1 -1
- package/dist/engagement/notifications/index.d.ts.map +1 -1
- package/dist/engagement/notifications/plugin.d.ts.map +1 -1
- package/dist/engagement/notifications/plugin.js +6 -3
- package/dist/engagement/notifications/plugin.js.map +1 -1
- package/dist/engagement/notifications/router/index.d.ts +4 -1
- package/dist/engagement/notifications/router/index.d.ts.map +1 -1
- package/dist/engagement/notifications/router/index.js +15 -6
- package/dist/engagement/notifications/router/index.js.map +1 -1
- package/dist/engagement/notifications/service/notifications.service.d.ts +6 -13
- package/dist/engagement/notifications/service/notifications.service.d.ts.map +1 -1
- package/dist/engagement/notifications/service/notifications.service.js +6 -14
- package/dist/engagement/notifications/service/notifications.service.js.map +1 -1
- package/dist/iam/__tests__/iam.service.test.js +14 -9
- package/dist/iam/__tests__/iam.service.test.js.map +1 -1
- package/dist/iam/plugin.d.ts.map +1 -1
- package/dist/iam/plugin.js +4 -2
- package/dist/iam/plugin.js.map +1 -1
- package/dist/iam/seed/seed-default-roles.d.ts.map +1 -1
- package/dist/iam/seed/seed-default-roles.js +2 -1
- package/dist/iam/seed/seed-default-roles.js.map +1 -1
- package/dist/iam/service/iam.service.d.ts +19 -17
- package/dist/iam/service/iam.service.d.ts.map +1 -1
- package/dist/iam/service/iam.service.js +68 -34
- package/dist/iam/service/iam.service.js.map +1 -1
- package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
- package/dist/pam/identity/admin-user-directory.js +18 -9
- package/dist/pam/identity/admin-user-directory.js.map +1 -1
- package/dist/pam/identity/router/index.d.ts.map +1 -1
- package/dist/pam/identity/router/index.js +4 -2
- package/dist/pam/identity/router/index.js.map +1 -1
- package/dist/pam/identity/service/identity.service.d.ts +24 -2
- package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
- package/dist/pam/identity/service/identity.service.js +51 -19
- package/dist/pam/identity/service/identity.service.js.map +1 -1
- package/dist/pam/identity/service/login-enforcement.service.d.ts +3 -3
- package/dist/pam/identity/service/login-enforcement.service.d.ts.map +1 -1
- package/dist/pam/identity/service/login-enforcement.service.js.map +1 -1
- package/dist/pam/identity/service/session.service.d.ts +5 -3
- package/dist/pam/identity/service/session.service.d.ts.map +1 -1
- package/dist/pam/identity/service/session.service.js +3 -3
- package/dist/pam/identity/service/session.service.js.map +1 -1
- package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +2 -1
- package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
- package/dist/pam/player-management/__tests__/player.router.test.js +2 -2
- package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
- package/dist/pam/player-management/__tests__/player.service.test.js +2 -1
- package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
- package/dist/pam/player-management/contract/index.d.ts +10 -10
- package/dist/pam/player-management/router/index.d.ts +8 -8
- package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
- package/dist/pam/player-management/service/kyc-status-writer.js +2 -1
- package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
- package/dist/pam/player-management/service/player.service.d.ts +15 -15
- package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
- package/dist/pam/player-management/service/player.service.js +15 -12
- package/dist/pam/player-management/service/player.service.js.map +1 -1
- package/dist/pam/player-note/schema/index.d.ts +4 -4
- package/dist/pam/player-note/schema/index.js +6 -6
- package/dist/pam/player-note/schema/index.js.map +1 -1
- package/dist/pam/player-note/service/player-note.service.d.ts +11 -3
- package/dist/pam/player-note/service/player-note.service.d.ts.map +1 -1
- package/dist/pam/player-note/service/player-note.service.js +1 -1
- package/dist/pam/player-note/service/player-note.service.js.map +1 -1
- package/dist/pam/profile/__tests__/profile.service.test.js +2 -1
- package/dist/pam/profile/__tests__/profile.service.test.js.map +1 -1
- package/dist/pam/profile/contract/index.d.ts +4 -4
- package/dist/pam/profile/react/profile.d.ts +6 -7
- package/dist/pam/profile/react/profile.d.ts.map +1 -1
- package/dist/pam/profile/react/profile.js.map +1 -1
- package/dist/pam/profile/router/index.d.ts +4 -4
- package/dist/pam/profile/service/profile.service.d.ts +4 -4
- package/dist/pam/profile/service/profile.service.d.ts.map +1 -1
- package/dist/pam/profile/service/profile.service.js +2 -1
- package/dist/pam/profile/service/profile.service.js.map +1 -1
- package/dist/pam/shared/headers-mapper.d.ts.map +1 -1
- package/dist/pam/shared/headers-mapper.js +2 -1
- package/dist/pam/shared/headers-mapper.js.map +1 -1
- package/dist/pam/shared/player-mapper.d.ts +17 -2
- package/dist/pam/shared/player-mapper.d.ts.map +1 -1
- package/dist/pam/shared/player-mapper.js +2 -2
- package/dist/pam/shared/player-mapper.js.map +1 -1
- package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +2 -1
- package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +19 -18
- package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag-mappers.test.js +6 -6
- package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag-rule.service.test.js +14 -14
- package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +1 -1
- package/dist/pam/tag/__tests__/tag.router.test.d.ts +2 -0
- package/dist/pam/tag/__tests__/tag.router.test.d.ts.map +1 -0
- package/dist/pam/tag/__tests__/tag.router.test.js +38 -0
- package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -0
- package/dist/pam/tag/contract/index.d.ts +3 -3
- package/dist/pam/tag/drizzle/migrations/0001_neat_iron_monger.sql +2 -0
- package/dist/pam/tag/drizzle/migrations/meta/0001_snapshot.json +295 -0
- package/dist/pam/tag/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/pam/tag/router/index.d.ts +3 -3
- package/dist/pam/tag/schema/index.d.ts +16 -16
- package/dist/pam/tag/schema/index.d.ts.map +1 -1
- package/dist/pam/tag/schema/index.js +19 -19
- package/dist/pam/tag/schema/index.js.map +1 -1
- package/dist/pam/tag/seed/data/default-tag-rules.js +6 -6
- package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
- package/dist/pam/tag/seed/seed-default-tag-rules.d.ts.map +1 -1
- package/dist/pam/tag/seed/seed-default-tag-rules.js +5 -3
- package/dist/pam/tag/seed/seed-default-tag-rules.js.map +1 -1
- package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
- package/dist/pam/tag/service/tag-evaluation.service.js +32 -18
- package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
- package/dist/pam/tag/service/tag-mappers.d.ts +8 -2
- package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
- package/dist/pam/tag/service/tag-mappers.js +3 -8
- package/dist/pam/tag/service/tag-mappers.js.map +1 -1
- package/dist/pam/tag/service/tag-rule.service.d.ts +34 -4
- package/dist/pam/tag/service/tag-rule.service.d.ts.map +1 -1
- package/dist/pam/tag/service/tag-rule.service.js +9 -15
- package/dist/pam/tag/service/tag-rule.service.js.map +1 -1
- package/dist/pam/tag/service/tag.service.d.ts +51 -8
- package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
- package/dist/pam/tag/service/tag.service.js +6 -11
- package/dist/pam/tag/service/tag.service.js.map +1 -1
- package/dist/react/context/api-client.d.ts.map +1 -1
- package/dist/react/context/api-client.js +14 -7
- package/dist/react/context/api-client.js.map +1 -1
- package/dist/react/hooks/use-event-stream.d.ts.map +1 -1
- package/dist/react/hooks/use-event-stream.js +6 -3
- package/dist/react/hooks/use-event-stream.js.map +1 -1
- package/dist/react/hooks/use-paginated-list.js +3 -3
- package/dist/react/hooks/use-paginated-list.js.map +1 -1
- package/dist/server/auth/admin-guard.d.ts +12 -0
- package/dist/server/auth/admin-guard.d.ts.map +1 -1
- package/dist/server/auth/admin-guard.js +14 -1
- package/dist/server/auth/admin-guard.js.map +1 -1
- package/dist/server/auth/auth.d.ts +9 -0
- package/dist/server/auth/auth.d.ts.map +1 -1
- package/dist/server/auth/auth.js +9 -1
- package/dist/server/auth/auth.js.map +1 -1
- package/dist/server/auth/permission-levels.d.ts.map +1 -1
- package/dist/server/auth/permission-levels.js +12 -6
- package/dist/server/auth/permission-levels.js.map +1 -1
- package/dist/server/db/drizzle.d.ts.map +1 -1
- package/dist/server/db/drizzle.js +2 -1
- package/dist/server/db/drizzle.js.map +1 -1
- package/dist/server/db/drizzle.service.d.ts.map +1 -1
- package/dist/server/db/drizzle.service.js +2 -1
- package/dist/server/db/drizzle.service.js.map +1 -1
- package/dist/server/db/index.d.ts +1 -1
- package/dist/server/db/index.d.ts.map +1 -1
- package/dist/server/db/index.js +1 -1
- package/dist/server/db/index.js.map +1 -1
- package/dist/server/db/migrate.d.ts.map +1 -1
- package/dist/server/db/migrate.js +2 -1
- package/dist/server/db/migrate.js.map +1 -1
- package/dist/server/db/outbox/__tests__/relay.test.js +4 -2
- package/dist/server/db/outbox/__tests__/relay.test.js.map +1 -1
- package/dist/server/db/outbox/relay.d.ts +15 -0
- package/dist/server/db/outbox/relay.d.ts.map +1 -1
- package/dist/server/db/outbox/relay.js +21 -14
- package/dist/server/db/outbox/relay.js.map +1 -1
- package/dist/server/db/query-helpers.d.ts +2 -0
- package/dist/server/db/query-helpers.d.ts.map +1 -1
- package/dist/server/db/query-helpers.js +28 -1
- package/dist/server/db/query-helpers.js.map +1 -1
- package/dist/server/kernel/__tests__/event-bus.test.js +10 -7
- package/dist/server/kernel/__tests__/event-bus.test.js.map +1 -1
- package/dist/server/kernel/__tests__/job-queue.test.js +5 -2
- package/dist/server/kernel/__tests__/job-queue.test.js.map +1 -1
- package/dist/server/kernel/__tests__/rate-limiter.test.js +10 -5
- package/dist/server/kernel/__tests__/rate-limiter.test.js.map +1 -1
- package/dist/server/kernel/__tests__/redis-cache.test.js +2 -1
- package/dist/server/kernel/__tests__/redis-cache.test.js.map +1 -1
- package/dist/server/kernel/bullmq-job-queue.d.ts +12 -0
- package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
- package/dist/server/kernel/bullmq-job-queue.js +21 -4
- package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
- package/dist/server/kernel/cache.d.ts.map +1 -1
- package/dist/server/kernel/cache.js +14 -7
- package/dist/server/kernel/cache.js.map +1 -1
- package/dist/server/kernel/container.d.ts +10 -0
- package/dist/server/kernel/container.d.ts.map +1 -1
- package/dist/server/kernel/container.js +12 -1
- package/dist/server/kernel/container.js.map +1 -1
- package/dist/server/kernel/event-bus.d.ts +9 -0
- package/dist/server/kernel/event-bus.d.ts.map +1 -1
- package/dist/server/kernel/event-bus.js +9 -1
- package/dist/server/kernel/event-bus.js.map +1 -1
- package/dist/server/kernel/event-stream.d.ts.map +1 -1
- package/dist/server/kernel/event-stream.js +2 -1
- package/dist/server/kernel/event-stream.js.map +1 -1
- package/dist/server/kernel/job-queue.d.ts +12 -0
- package/dist/server/kernel/job-queue.d.ts.map +1 -1
- package/dist/server/kernel/job-queue.js +38 -15
- package/dist/server/kernel/job-queue.js.map +1 -1
- package/dist/server/kernel/ownership.d.ts.map +1 -1
- package/dist/server/kernel/ownership.js +2 -1
- package/dist/server/kernel/ownership.js.map +1 -1
- package/dist/server/kernel/platform-config-loader.d.ts.map +1 -1
- package/dist/server/kernel/platform-config-loader.js +34 -16
- package/dist/server/kernel/platform-config-loader.js.map +1 -1
- package/dist/server/kernel/rate-limiter.d.ts.map +1 -1
- package/dist/server/kernel/rate-limiter.js +6 -3
- package/dist/server/kernel/rate-limiter.js.map +1 -1
- package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
- package/dist/server/kernel/realtime-transport.js +10 -5
- package/dist/server/kernel/realtime-transport.js.map +1 -1
- package/dist/server/kernel/redis-cache.d.ts.map +1 -1
- package/dist/server/kernel/redis-cache.js +10 -5
- package/dist/server/kernel/redis-cache.js.map +1 -1
- package/dist/server/kernel/redis-rate-limiter.d.ts +11 -0
- package/dist/server/kernel/redis-rate-limiter.d.ts.map +1 -1
- package/dist/server/kernel/redis-rate-limiter.js +13 -1
- package/dist/server/kernel/redis-rate-limiter.js.map +1 -1
- package/dist/server/kernel/serialize-row.d.ts.map +1 -1
- package/dist/server/kernel/serialize-row.js +4 -2
- package/dist/server/kernel/serialize-row.js.map +1 -1
- package/dist/server/plugin-host/load-extensions.js +2 -1
- package/dist/server/plugin-host/load-extensions.js.map +1 -1
- package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
- package/dist/server/plugin-host/load-plugins.js +4 -2
- package/dist/server/plugin-host/load-plugins.js.map +1 -1
- package/dist/server/plugin-host/service-manifest.d.ts.map +1 -1
- package/dist/server/plugin-host/service-manifest.js +4 -2
- package/dist/server/plugin-host/service-manifest.js.map +1 -1
- package/dist/server/runtime/create-app.d.ts +12 -0
- package/dist/server/runtime/create-app.d.ts.map +1 -1
- package/dist/server/runtime/create-app.js +27 -6
- package/dist/server/runtime/create-app.js.map +1 -1
- package/dist/wallet/__tests__/admin-reporting.test.js +2 -2
- package/dist/wallet/__tests__/admin-reporting.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +5 -5
- package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +45 -34
- package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-commands.service.test.js +54 -37
- package/dist/wallet/__tests__/wallet-commands.service.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-kyc-gate.test.js +5 -5
- package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.rate-limit.test.js +2 -2
- package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.service.test.js +62 -34
- package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
- package/dist/wallet/adapters/mock/mock-payment-adapter.d.ts +2 -2
- package/dist/wallet/adapters/wallet-reader.service.d.ts +1 -1
- package/dist/wallet/adapters/wallet-reader.service.js +1 -1
- package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
- package/dist/wallet/admin-reporting.d.ts +4 -4
- package/dist/wallet/admin-reporting.d.ts.map +1 -1
- package/dist/wallet/admin-reporting.js +8 -8
- package/dist/wallet/admin-reporting.js.map +1 -1
- package/dist/wallet/contract/index.d.ts +20 -20
- package/dist/wallet/contract/index.d.ts.map +1 -1
- package/dist/wallet/contract/index.js +14 -10
- package/dist/wallet/contract/index.js.map +1 -1
- package/dist/wallet/drizzle/migrations/0001_redundant_micromacro.sql +4 -0
- package/dist/wallet/drizzle/migrations/meta/0001_snapshot.json +397 -0
- package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/wallet/plugin.d.ts.map +1 -1
- package/dist/wallet/plugin.js +5 -1
- package/dist/wallet/plugin.js.map +1 -1
- package/dist/wallet/router/index.d.ts +11 -11
- package/dist/wallet/schema/index.js +3 -3
- package/dist/wallet/schema/index.js.map +1 -1
- package/dist/wallet/service/wallet-commands.service.d.ts +1 -0
- package/dist/wallet/service/wallet-commands.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet-commands.service.js +32 -24
- package/dist/wallet/service/wallet-commands.service.js.map +1 -1
- package/dist/wallet/service/wallet.service.d.ts +46 -18
- package/dist/wallet/service/wallet.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet.service.js +152 -74
- package/dist/wallet/service/wallet.service.js.map +1 -1
- package/oxlint/oxlintrc.json +19 -3
- package/package.json +1 -1
- package/turbo-generators/src/config.ts +18 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-evaluation.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-evaluation.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"tag-evaluation.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-evaluation.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,cAAc,EAIpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAoD,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAE7E,eAAO,MAAM,eAAe,yCAAyC,CAAC;AAItE,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAHd,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc;IAGjD,wGAAwG;YAC1F,cAAc;IAe5B,iEAAiE;YACnD,YAAY;IAqB1B,uEAAuE;YACzD,YAAY;IAqB1B;;;OAGG;IACG,kBAAkB,CAAC,OAAO,EAAE,OAAO;IA4BzC;;;;;OAKG;IACG,qBAAqB,CAAC,OAAO,EAAE,OAAO;IA0B5C;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO;IAKlC;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,OAAO;IAUrC;;;;;;;;OAQG;IACG,kBAAkB,CAAC,OAAO,EAAE,OAAO;IAwBzC;;;OAGG;IACG,kBAAkB;CAezB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { domainEventSchemas, } from '@openora/core/contracts';
|
|
2
|
+
import { moneyToNumber, mapConcurrent } from '@openora/core/server';
|
|
2
3
|
import { TagAlreadyInUseError, TagAssignmentNotFoundError } from './tag.service.js';
|
|
3
4
|
import { TagRuleNotFoundError } from './tag-rule.service.js';
|
|
4
5
|
export const SYSTEM_ACTOR_ID = '00000000-0000-0000-0000-000000000000';
|
|
6
|
+
const EVAL_CHUNK_SIZE = 100;
|
|
5
7
|
export class TagEvaluationService {
|
|
6
8
|
tag;
|
|
7
9
|
rule;
|
|
@@ -17,21 +19,24 @@ export class TagEvaluationService {
|
|
|
17
19
|
async getEnabledRule(tagKey) {
|
|
18
20
|
try {
|
|
19
21
|
const rule = await this.rule.getTagRule(tagKey);
|
|
20
|
-
if (!rule.isEnabled)
|
|
22
|
+
if (!rule.isEnabled) {
|
|
21
23
|
return null;
|
|
24
|
+
}
|
|
22
25
|
return rule;
|
|
23
26
|
}
|
|
24
27
|
catch (e) {
|
|
25
|
-
if (e instanceof TagRuleNotFoundError)
|
|
28
|
+
if (e instanceof TagRuleNotFoundError) {
|
|
26
29
|
return null;
|
|
30
|
+
}
|
|
27
31
|
throw e;
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
34
|
/** Idempotently assigns a tag; swallows TagAlreadyInUseError. */
|
|
31
35
|
async tryAssignTag(userId, tagKey, reason) {
|
|
32
36
|
const playerId = await this.identityReader.getPlayerIdByUserId(userId);
|
|
33
|
-
if (!playerId)
|
|
37
|
+
if (!playerId) {
|
|
34
38
|
return;
|
|
39
|
+
}
|
|
35
40
|
try {
|
|
36
41
|
await this.tag.assignPlayerTag({
|
|
37
42
|
playerId,
|
|
@@ -42,16 +47,18 @@ export class TagEvaluationService {
|
|
|
42
47
|
});
|
|
43
48
|
}
|
|
44
49
|
catch (e) {
|
|
45
|
-
if (e instanceof TagAlreadyInUseError)
|
|
50
|
+
if (e instanceof TagAlreadyInUseError) {
|
|
46
51
|
return;
|
|
52
|
+
}
|
|
47
53
|
throw e;
|
|
48
54
|
}
|
|
49
55
|
}
|
|
50
56
|
/** Idempotently removes a tag; swallows TagAssignmentNotFoundError. */
|
|
51
57
|
async tryRemoveTag(userId, tagKey, reason) {
|
|
52
58
|
const playerId = await this.identityReader.getPlayerIdByUserId(userId);
|
|
53
|
-
if (!playerId)
|
|
59
|
+
if (!playerId) {
|
|
54
60
|
return;
|
|
61
|
+
}
|
|
55
62
|
try {
|
|
56
63
|
await this.tag.removePlayerTag({
|
|
57
64
|
playerId,
|
|
@@ -62,8 +69,9 @@ export class TagEvaluationService {
|
|
|
62
69
|
});
|
|
63
70
|
}
|
|
64
71
|
catch (e) {
|
|
65
|
-
if (e instanceof TagAssignmentNotFoundError)
|
|
72
|
+
if (e instanceof TagAssignmentNotFoundError) {
|
|
66
73
|
return;
|
|
74
|
+
}
|
|
67
75
|
throw e;
|
|
68
76
|
}
|
|
69
77
|
}
|
|
@@ -77,14 +85,16 @@ export class TagEvaluationService {
|
|
|
77
85
|
this.getEnabledRule('high_roller'),
|
|
78
86
|
this.getEnabledRule('large_depositor'),
|
|
79
87
|
]);
|
|
88
|
+
// Tag-threshold comparisons are evaluation decisions, not ledger writes -
|
|
89
|
+
// moneyToNumber is the documented single conversion point.
|
|
80
90
|
if (largeDepositor &&
|
|
81
|
-
largeDepositor.
|
|
82
|
-
amount >= largeDepositor.
|
|
91
|
+
largeDepositor.threshold !== null &&
|
|
92
|
+
moneyToNumber(amount) >= moneyToNumber(largeDepositor.threshold)) {
|
|
83
93
|
await this.tryAssignTag(userId, 'large_depositor', 'single deposit crossed threshold');
|
|
84
94
|
}
|
|
85
|
-
if (highRoller && highRoller.
|
|
95
|
+
if (highRoller && highRoller.threshold !== null) {
|
|
86
96
|
const lifetimeDeposit = await this.walletReader.getLifetimeDeposit(userId);
|
|
87
|
-
if (lifetimeDeposit >= highRoller.
|
|
97
|
+
if (moneyToNumber(lifetimeDeposit) >= moneyToNumber(highRoller.threshold)) {
|
|
88
98
|
await this.tryAssignTag(userId, 'high_roller', 'lifetime deposits crossed threshold');
|
|
89
99
|
}
|
|
90
100
|
else {
|
|
@@ -101,9 +111,10 @@ export class TagEvaluationService {
|
|
|
101
111
|
async onWithdrawalCompleted(payload) {
|
|
102
112
|
const { userId, amount } = domainEventSchemas['wallet.withdrawal.completed'].parse(payload);
|
|
103
113
|
const rule = await this.getEnabledRule('high_risk');
|
|
104
|
-
if (!rule)
|
|
114
|
+
if (!rule) {
|
|
105
115
|
return;
|
|
106
|
-
|
|
116
|
+
}
|
|
117
|
+
const amountBreached = rule.threshold !== null && moneyToNumber(amount) >= moneyToNumber(rule.threshold);
|
|
107
118
|
let countBreached = false;
|
|
108
119
|
if (rule.thresholdDays !== null && rule.thresholdCount !== null) {
|
|
109
120
|
const count = await this.walletReader.getWithdrawalCountInWindow(userId, rule.thresholdDays);
|
|
@@ -128,8 +139,9 @@ export class TagEvaluationService {
|
|
|
128
139
|
async onKycSubmitted(payload) {
|
|
129
140
|
const { userId } = domainEventSchemas['compliance.kyc.submitted'].parse(payload);
|
|
130
141
|
const rule = await this.getEnabledRule('kyc_pending');
|
|
131
|
-
if (!rule)
|
|
142
|
+
if (!rule) {
|
|
132
143
|
return;
|
|
144
|
+
}
|
|
133
145
|
await this.tryRemoveTag(userId, 'kyc_rejected', 'kyc resubmitted');
|
|
134
146
|
await this.tryAssignTag(userId, 'kyc_pending', 'kyc verification initiated');
|
|
135
147
|
}
|
|
@@ -145,8 +157,9 @@ export class TagEvaluationService {
|
|
|
145
157
|
async onKycStatusUpdated(payload) {
|
|
146
158
|
const { userId, status } = domainEventSchemas['compliance.kyc.updated'].parse(payload);
|
|
147
159
|
const rule = await this.getEnabledRule('kyc_pending');
|
|
148
|
-
if (!rule)
|
|
160
|
+
if (!rule) {
|
|
149
161
|
return;
|
|
162
|
+
}
|
|
150
163
|
if (status === 'verified' || status === 'manually_overridden') {
|
|
151
164
|
await this.tryRemoveTag(userId, 'kyc_pending', 'kyc approved');
|
|
152
165
|
await this.tryRemoveTag(userId, 'kyc_rejected', 'kyc approved');
|
|
@@ -167,13 +180,14 @@ export class TagEvaluationService {
|
|
|
167
180
|
*/
|
|
168
181
|
async runDailyEvaluation() {
|
|
169
182
|
const rule = await this.getEnabledRule('inactive');
|
|
170
|
-
if (!rule || rule.thresholdDays === null)
|
|
183
|
+
if (!rule || rule.thresholdDays === null) {
|
|
171
184
|
return;
|
|
185
|
+
}
|
|
172
186
|
const sinceDate = new Date(Date.now() - rule.thresholdDays * 24 * 60 * 60 * 1000);
|
|
173
187
|
const userIds = await this.identityReader.getPlayerIdsInactiveSince(sinceDate);
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
188
|
+
// Capped fan-out: the inactive-player set is unbounded, so hold at most EVAL_CHUNK_SIZE
|
|
189
|
+
// assignments in flight rather than one giant Promise.all that would exhaust the pool.
|
|
190
|
+
await mapConcurrent(userIds, EVAL_CHUNK_SIZE, (userId) => this.tryAssignTag(userId, 'inactive', 'no login for configured threshold'));
|
|
177
191
|
}
|
|
178
192
|
}
|
|
179
193
|
//# sourceMappingURL=tag-evaluation.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-evaluation.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-evaluation.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"tag-evaluation.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-evaluation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TagRule, TagKey } from '@openora/core/contracts';
|
|
2
2
|
import type { PlayerTagWithTag } from '../contract/index.js';
|
|
3
3
|
import { tag, playerTag, tagRule } from '../schema/index.js';
|
|
4
|
-
export declare function toTag(row: typeof tag.$inferSelect):
|
|
4
|
+
export declare function toTag(row: typeof tag.$inferSelect): import("@openora/core/server").SerializedRow<{
|
|
5
|
+
id: string;
|
|
6
|
+
createdAt: Date;
|
|
7
|
+
updatedAt: Date;
|
|
8
|
+
key: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
9
|
+
isSticky: boolean;
|
|
10
|
+
}, "createdAt" | "updatedAt">;
|
|
5
11
|
export declare function toPlayerTagWithTag(pt: typeof playerTag.$inferSelect, tagKey: TagKey): PlayerTagWithTag;
|
|
6
12
|
export declare function toTagRule(row: typeof tagRule.$inferSelect & {
|
|
7
13
|
tagKey: TagKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-mappers.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"tag-mappers.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7D,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,YAAY;;;;;;8BAEjD;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,OAAO,SAAS,CAAC,YAAY,EACjC,MAAM,EAAE,MAAM,GACb,gBAAgB,CAgBlB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,OAAO,CAAC,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAYxF"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
+
import { serializeRow } from '@openora/core/server';
|
|
1
2
|
export function toTag(row) {
|
|
2
|
-
return {
|
|
3
|
-
id: row.id,
|
|
4
|
-
key: row.key,
|
|
5
|
-
isSticky: row.isSticky,
|
|
6
|
-
createdAt: row.createdAt.toISOString(),
|
|
7
|
-
updatedAt: row.updatedAt.toISOString(),
|
|
8
|
-
};
|
|
3
|
+
return serializeRow(row, { dateFields: ['createdAt', 'updatedAt'] });
|
|
9
4
|
}
|
|
10
5
|
export function toPlayerTagWithTag(pt, tagKey) {
|
|
11
6
|
return {
|
|
@@ -30,7 +25,7 @@ export function toTagRule(row) {
|
|
|
30
25
|
tagId: row.tagId,
|
|
31
26
|
tagKey: row.tagKey,
|
|
32
27
|
isEnabled: row.isEnabled,
|
|
33
|
-
|
|
28
|
+
threshold: row.threshold,
|
|
34
29
|
thresholdDays: row.thresholdDays ?? null,
|
|
35
30
|
thresholdCount: row.thresholdCount ?? null,
|
|
36
31
|
createdAt: row.createdAt.toISOString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-mappers.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-mappers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tag-mappers.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-mappers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,MAAM,UAAU,KAAK,CAAC,GAA4B;IAChD,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAiC,EACjC,MAAc;IAEd,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,IAAI,IAAI;QAC/C,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI;QAC/B,aAAa,EAAE,EAAE,CAAC,aAAa,IAAI,IAAI;QACvC,YAAY,EAAE,EAAE,CAAC,YAAY,IAAI,IAAI;QACrC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,IAAI,IAAI;QACjD,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE;QACrC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE;QACrC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAqD;IAC7E,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;QACxC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QAC1C,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,42 @@
|
|
|
1
1
|
import { DrizzleService, EventBus } from '@openora/core/server';
|
|
2
|
-
import { type UpsertTagRuleInput, type TagKey, type
|
|
2
|
+
import { type UpsertTagRuleInput, type TagKey, type User } from '@openora/core/contracts';
|
|
3
3
|
export declare const TagRuleNotFoundError: new (id: string) => Error;
|
|
4
4
|
export declare class TagRuleService {
|
|
5
5
|
private readonly drizzle;
|
|
6
6
|
private readonly events;
|
|
7
7
|
constructor(drizzle: DrizzleService, events: EventBus);
|
|
8
|
-
listTagRules(): Promise<
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
listTagRules(): Promise<{
|
|
9
|
+
id: string;
|
|
10
|
+
tagId: string;
|
|
11
|
+
tagKey: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
12
|
+
isEnabled: boolean;
|
|
13
|
+
threshold: string | null;
|
|
14
|
+
thresholdDays: number | null;
|
|
15
|
+
thresholdCount: number | null;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
}[]>;
|
|
19
|
+
getTagRule(tagKey: TagKey): Promise<{
|
|
20
|
+
id: string;
|
|
21
|
+
tagId: string;
|
|
22
|
+
tagKey: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
23
|
+
isEnabled: boolean;
|
|
24
|
+
threshold: string | null;
|
|
25
|
+
thresholdDays: number | null;
|
|
26
|
+
thresholdCount: number | null;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
}>;
|
|
30
|
+
upsertTagRule(input: UpsertTagRuleInput, actorId: User['id']): Promise<{
|
|
31
|
+
id: string;
|
|
32
|
+
tagId: string;
|
|
33
|
+
tagKey: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
34
|
+
isEnabled: boolean;
|
|
35
|
+
threshold: string | null;
|
|
36
|
+
thresholdDays: number | null;
|
|
37
|
+
thresholdCount: number | null;
|
|
38
|
+
createdAt: string;
|
|
39
|
+
updatedAt: string;
|
|
40
|
+
}>;
|
|
11
41
|
}
|
|
12
42
|
//# sourceMappingURL=tag-rule.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-rule.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-rule.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"tag-rule.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-rule.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAqC,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAK1F,eAAO,MAAM,oBAAoB,2BAA+B,CAAC;AAEjE,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,QAAQ;IAG7B,YAAY;;;;;;;;;;;IAmBZ,UAAU,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;IAoBzB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;CA+BnE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeNotFoundError } from '@openora/core/server';
|
|
1
|
+
import { findOneOrThrow, makeNotFoundError } from '@openora/core/server';
|
|
2
2
|
import { asc, eq } from 'drizzle-orm';
|
|
3
3
|
import { tag, tagRule } from '../schema/index.js';
|
|
4
4
|
import { toTagRule } from './tag-mappers.js';
|
|
@@ -16,7 +16,7 @@ export class TagRuleService {
|
|
|
16
16
|
id: tagRule.id,
|
|
17
17
|
tagId: tagRule.tagId,
|
|
18
18
|
isEnabled: tagRule.isEnabled,
|
|
19
|
-
|
|
19
|
+
threshold: tagRule.threshold,
|
|
20
20
|
thresholdDays: tagRule.thresholdDays,
|
|
21
21
|
thresholdCount: tagRule.thresholdCount,
|
|
22
22
|
createdAt: tagRule.createdAt,
|
|
@@ -34,7 +34,7 @@ export class TagRuleService {
|
|
|
34
34
|
id: tagRule.id,
|
|
35
35
|
tagId: tagRule.tagId,
|
|
36
36
|
isEnabled: tagRule.isEnabled,
|
|
37
|
-
|
|
37
|
+
threshold: tagRule.threshold,
|
|
38
38
|
thresholdDays: tagRule.thresholdDays,
|
|
39
39
|
thresholdCount: tagRule.thresholdCount,
|
|
40
40
|
createdAt: tagRule.createdAt,
|
|
@@ -45,34 +45,28 @@ export class TagRuleService {
|
|
|
45
45
|
.innerJoin(tag, eq(tagRule.tagId, tag.id))
|
|
46
46
|
.where(eq(tag.key, tagKey))
|
|
47
47
|
.limit(1);
|
|
48
|
-
|
|
49
|
-
if (!row)
|
|
50
|
-
throw new TagRuleNotFoundError(tagKey);
|
|
51
|
-
return toTagRule(row);
|
|
48
|
+
return toTagRule(findOneOrThrow(results, new TagRuleNotFoundError(tagKey)));
|
|
52
49
|
}
|
|
53
50
|
async upsertTagRule(input, actorId) {
|
|
54
|
-
const
|
|
51
|
+
const tagRow = findOneOrThrow(await this.drizzle.db
|
|
55
52
|
.select({ id: tag.id })
|
|
56
53
|
.from(tag)
|
|
57
54
|
.where(eq(tag.key, input.tagKey))
|
|
58
|
-
.limit(1);
|
|
59
|
-
if (!tagRow)
|
|
60
|
-
throw new TagRuleNotFoundError(input.tagKey);
|
|
61
|
-
// decimal() columns require string on write; z.coerce.number() on the contract coerces back on read.
|
|
55
|
+
.limit(1), new TagRuleNotFoundError(input.tagKey));
|
|
62
56
|
const values = {
|
|
63
57
|
tagId: tagRow.id,
|
|
64
58
|
isEnabled: input.isEnabled,
|
|
65
|
-
|
|
59
|
+
threshold: input.threshold,
|
|
66
60
|
thresholdDays: input.thresholdDays,
|
|
67
61
|
thresholdCount: input.thresholdCount,
|
|
68
62
|
};
|
|
69
63
|
// Exclude the conflict-target column from the update set.
|
|
70
64
|
const { tagId: _id, ...updateValues } = values;
|
|
71
|
-
const
|
|
65
|
+
const row = findOneOrThrow(await this.drizzle.db
|
|
72
66
|
.insert(tagRule)
|
|
73
67
|
.values(values)
|
|
74
68
|
.onConflictDoUpdate({ target: tagRule.tagId, set: updateValues })
|
|
75
|
-
.returning();
|
|
69
|
+
.returning(), new TagRuleNotFoundError(input.tagKey));
|
|
76
70
|
const result = toTagRule({ ...row, tagKey: input.tagKey });
|
|
77
71
|
void this.events.emit('tag.rule.upserted', { tagKey: input.tagKey, actorId, after: result });
|
|
78
72
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-rule.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-rule.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tag-rule.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag-rule.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { DrizzleService, EventBus } from '@openora/core/server';
|
|
2
|
-
import { AssignPlayerTagInput, CreateTagInput, DeleteTagInput, RemovePlayerTagInput,
|
|
3
|
-
import { PlayerTagWithTag } from '../contract/index.js';
|
|
2
|
+
import { AssignPlayerTagInput, CreateTagInput, DeleteTagInput, RemovePlayerTagInput, type PlayerTags, type Player } from '@openora/core/contracts';
|
|
4
3
|
export declare const TagNotFoundError: new (id: string) => Error;
|
|
5
4
|
export declare const TagAlreadyInUseError: new () => Error;
|
|
6
5
|
export declare const TagAssignmentNotFoundError: new (id: string) => Error;
|
|
@@ -8,11 +7,17 @@ export declare class TagService implements PlayerTags {
|
|
|
8
7
|
private readonly drizzle;
|
|
9
8
|
private readonly event;
|
|
10
9
|
constructor(drizzle: DrizzleService, event: EventBus);
|
|
11
|
-
getActiveTagKeys(userIds: readonly string[]): Promise<Map<string,
|
|
10
|
+
getActiveTagKeys(userIds: readonly string[]): Promise<Map<string, ("high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account")[]>>;
|
|
12
11
|
private _findTagByKeyOrThrow;
|
|
13
|
-
createTag(args: CreateTagInput): Promise<
|
|
12
|
+
createTag(args: CreateTagInput): Promise<import("@openora/core/server").SerializedRow<{
|
|
13
|
+
id: string;
|
|
14
|
+
createdAt: Date;
|
|
15
|
+
updatedAt: Date;
|
|
16
|
+
key: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
17
|
+
isSticky: boolean;
|
|
18
|
+
}, "createdAt" | "updatedAt">>;
|
|
14
19
|
deleteTag(args: DeleteTagInput): Promise<boolean>;
|
|
15
|
-
listPlayerTags(playerId:
|
|
20
|
+
listPlayerTags(playerId: Player['id'], page: number, limit: number): Promise<{
|
|
16
21
|
items: {
|
|
17
22
|
id: string;
|
|
18
23
|
playerId: string;
|
|
@@ -34,8 +39,46 @@ export declare class TagService implements PlayerTags {
|
|
|
34
39
|
page: number;
|
|
35
40
|
limit: number;
|
|
36
41
|
}>;
|
|
37
|
-
listAssignableTags(playerId:
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
listAssignableTags(playerId: Player['id']): Promise<import("@openora/core/server").SerializedRow<{
|
|
43
|
+
id: string;
|
|
44
|
+
createdAt: Date;
|
|
45
|
+
updatedAt: Date;
|
|
46
|
+
key: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
47
|
+
isSticky: boolean;
|
|
48
|
+
}, "createdAt" | "updatedAt">[]>;
|
|
49
|
+
assignPlayerTag(args: AssignPlayerTagInput): Promise<{
|
|
50
|
+
id: string;
|
|
51
|
+
playerId: string;
|
|
52
|
+
tagId: string;
|
|
53
|
+
assignReason: string;
|
|
54
|
+
assignActor: "scheduled" | "manual";
|
|
55
|
+
assignActorUserId: string | null;
|
|
56
|
+
removedAt: Date | null;
|
|
57
|
+
removalReason: string | null;
|
|
58
|
+
removalActor: "scheduled" | "manual" | null;
|
|
59
|
+
removalActorUserId: string | null;
|
|
60
|
+
createdAt: string;
|
|
61
|
+
updatedAt: string;
|
|
62
|
+
tag: {
|
|
63
|
+
key: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
64
|
+
};
|
|
65
|
+
}>;
|
|
66
|
+
removePlayerTag(args: RemovePlayerTagInput): Promise<{
|
|
67
|
+
id: string;
|
|
68
|
+
playerId: string;
|
|
69
|
+
tagId: string;
|
|
70
|
+
assignReason: string;
|
|
71
|
+
assignActor: "scheduled" | "manual";
|
|
72
|
+
assignActorUserId: string | null;
|
|
73
|
+
removedAt: Date | null;
|
|
74
|
+
removalReason: string | null;
|
|
75
|
+
removalActor: "scheduled" | "manual" | null;
|
|
76
|
+
removalActorUserId: string | null;
|
|
77
|
+
createdAt: string;
|
|
78
|
+
updatedAt: string;
|
|
79
|
+
tag: {
|
|
80
|
+
key: "high_roller" | "vip" | "bonus_abuser" | "high_risk" | "inactive" | "large_depositor" | "self_excluded" | "kyc_pending" | "kyc_rejected" | "test_account";
|
|
81
|
+
};
|
|
82
|
+
}>;
|
|
40
83
|
}
|
|
41
84
|
//# sourceMappingURL=tag.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,QAAQ,
|
|
1
|
+
{"version":3,"file":"tag.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,QAAQ,EAKT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,KAAK,UAAU,EACf,KAAK,MAAM,EAEZ,MAAM,yBAAyB,CAAC;AAMjC,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,oBAAoB,iBAA2B,CAAC;AAC7D,eAAO,MAAM,0BAA0B,2BAAsC,CAAC;AAE9E,qBAAa,UAAW,YAAW,UAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,QAAQ;IAIrB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE;YAmB1C,oBAAoB;IAKrB,SAAS,CAAC,IAAI,EAAE,cAAc;;;;;;;IAU9B,SAAS,CAAC,IAAI,EAAE,cAAc;IAU9B,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;IAwBlE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;;;;;;;IAkBzC,eAAe,CAAC,IAAI,EAAE,oBAAoB;;;;;;;;;;;;;;;;;IAsC1C,eAAe,CAAC,IAAI,EAAE,oBAAoB;;;;;;;;;;;;;;;;;CA0CxD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeNotFoundError, pageToOffset, alreadyInUseError, } from '@openora/core/server';
|
|
1
|
+
import { findOneOrThrow, makeNotFoundError, pageToOffset, alreadyInUseError, } from '@openora/core/server';
|
|
2
2
|
import { and, asc, count, eq, inArray, isNull, notInArray } from 'drizzle-orm';
|
|
3
3
|
import { player } from '@openora/core/pam/schema/profile';
|
|
4
4
|
import { playerTag, tag } from '../schema/index.js';
|
|
@@ -17,8 +17,9 @@ export class TagService {
|
|
|
17
17
|
// Keyed by auth `userId`, not the internal `player.id`. Users with no active tags are absent from the map.
|
|
18
18
|
async getActiveTagKeys(userIds) {
|
|
19
19
|
const result = new Map();
|
|
20
|
-
if (userIds.length === 0)
|
|
20
|
+
if (userIds.length === 0) {
|
|
21
21
|
return result;
|
|
22
|
+
}
|
|
22
23
|
const rows = await this.drizzle.db
|
|
23
24
|
.select({ userId: player.userId, key: tag.key })
|
|
24
25
|
.from(player)
|
|
@@ -34,10 +35,7 @@ export class TagService {
|
|
|
34
35
|
}
|
|
35
36
|
async _findTagByKeyOrThrow(tagKey, trx) {
|
|
36
37
|
const results = await trx.select().from(tag).where(eq(tag.key, tagKey)).limit(1);
|
|
37
|
-
|
|
38
|
-
throw new TagNotFoundError(tagKey);
|
|
39
|
-
}
|
|
40
|
-
return toTag(results[0]);
|
|
38
|
+
return toTag(findOneOrThrow(results, new TagNotFoundError(tagKey)));
|
|
41
39
|
}
|
|
42
40
|
async createTag(args) {
|
|
43
41
|
try {
|
|
@@ -131,14 +129,11 @@ export class TagService {
|
|
|
131
129
|
const db = this.drizzle.db;
|
|
132
130
|
const result = await db.transaction(async (trx) => {
|
|
133
131
|
const foundTag = await this._findTagByKeyOrThrow(args.tagKey, trx);
|
|
134
|
-
const
|
|
132
|
+
const active = findOneOrThrow(await trx
|
|
135
133
|
.select()
|
|
136
134
|
.from(playerTag)
|
|
137
135
|
.where(and(eq(playerTag.tagId, foundTag.id), eq(playerTag.playerId, args.playerId), isNull(playerTag.removedAt)))
|
|
138
|
-
.limit(1);
|
|
139
|
-
if (!active) {
|
|
140
|
-
throw new TagAssignmentNotFoundError(args.playerId);
|
|
141
|
-
}
|
|
136
|
+
.limit(1), new TagAssignmentNotFoundError(args.playerId));
|
|
142
137
|
const [updated] = await trx
|
|
143
138
|
.update(playerTag)
|
|
144
139
|
.set({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAU/E,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tag.service.js","sourceRoot":"","sources":["../../../../src/pam/tag/service/tag.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/react/context/api-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/react/context/api-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAiEF,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAAC;IAC1C,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAGA;AAED,wBAAgB,YAAY,IAAI,YAAY,CAM3C"}
|
|
@@ -3,19 +3,23 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { createContext, useContext, useMemo } from 'react';
|
|
4
4
|
const ApiClientContext = createContext(null);
|
|
5
5
|
function buildQueryString(query) {
|
|
6
|
-
if (!query)
|
|
6
|
+
if (!query) {
|
|
7
7
|
return '';
|
|
8
|
+
}
|
|
8
9
|
const entries = Object.entries(query).filter(([, v]) => v !== undefined && v !== null && v !== '');
|
|
9
|
-
if (entries.length === 0)
|
|
10
|
+
if (entries.length === 0) {
|
|
10
11
|
return '';
|
|
12
|
+
}
|
|
11
13
|
const params = new URLSearchParams();
|
|
12
|
-
for (const [k, v] of entries)
|
|
14
|
+
for (const [k, v] of entries) {
|
|
13
15
|
params.set(k, String(v));
|
|
16
|
+
}
|
|
14
17
|
return `?${params.toString()}`;
|
|
15
18
|
}
|
|
16
19
|
function buildClient(config) {
|
|
17
|
-
if ('get' in config && 'post' in config && 'patch' in config)
|
|
20
|
+
if ('get' in config && 'post' in config && 'patch' in config) {
|
|
18
21
|
return config;
|
|
22
|
+
}
|
|
19
23
|
const baseUrl = config.baseUrl;
|
|
20
24
|
const send = async (method, path, body) => {
|
|
21
25
|
const init = { method, credentials: 'include' };
|
|
@@ -30,16 +34,18 @@ function buildClient(config) {
|
|
|
30
34
|
let message = `${method} ${path} -> ${res.status}`;
|
|
31
35
|
try {
|
|
32
36
|
const errorBody = (await res.json());
|
|
33
|
-
if (errorBody?.message)
|
|
37
|
+
if (errorBody?.message) {
|
|
34
38
|
message = errorBody.message;
|
|
39
|
+
}
|
|
35
40
|
}
|
|
36
41
|
catch {
|
|
37
42
|
/* non-JSON */
|
|
38
43
|
}
|
|
39
44
|
throw new Error(message);
|
|
40
45
|
}
|
|
41
|
-
if (res.status === 204)
|
|
46
|
+
if (res.status === 204) {
|
|
42
47
|
return undefined;
|
|
48
|
+
}
|
|
43
49
|
return (await res.json());
|
|
44
50
|
};
|
|
45
51
|
return {
|
|
@@ -56,8 +62,9 @@ export function ApiClientProvider({ client, children, }) {
|
|
|
56
62
|
}
|
|
57
63
|
export function useApiClient() {
|
|
58
64
|
const ctx = useContext(ApiClientContext);
|
|
59
|
-
if (!ctx)
|
|
65
|
+
if (!ctx) {
|
|
60
66
|
throw new Error('useApiClient must be used within ApiClientProvider');
|
|
67
|
+
}
|
|
61
68
|
return ctx;
|
|
62
69
|
}
|
|
63
70
|
//# sourceMappingURL=api-client.js.map
|