@clovnet/plugin-sdk 0.1.4
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 +21 -0
- package/README.md +114 -0
- package/dist/chunk-XRSKWL3A.js +1872 -0
- package/dist/chunk-XRSKWL3A.js.map +1 -0
- package/dist/index.d.ts +3658 -0
- package/dist/index.js +561 -0
- package/dist/index.js.map +1 -0
- package/dist/testing.d.ts +275 -0
- package/dist/testing.js +1010 -0
- package/dist/testing.js.map +1 -0
- package/package.json +75 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ACTION_KEY_RE,
|
|
3
|
+
CATALOG_ALLOWED_KINDS,
|
|
4
|
+
CATALOG_IMPORT_TASK_TYPE,
|
|
5
|
+
DataScopes,
|
|
6
|
+
PLUGIN_CATALOG_LIMITS,
|
|
7
|
+
PLUGIN_DATASET_LIMITS,
|
|
8
|
+
PLUGIN_JOB_LIMITS,
|
|
9
|
+
PLUGIN_MIGRATION_LIMITS,
|
|
10
|
+
READ_MODEL_MAX_PAGE,
|
|
11
|
+
ReadModelRequiredScopes,
|
|
12
|
+
deriveActionSchemas,
|
|
13
|
+
fullPluginEventName,
|
|
14
|
+
generateClientPackage,
|
|
15
|
+
jsonSchemaToTsType,
|
|
16
|
+
parseActionRoute,
|
|
17
|
+
pascalCase,
|
|
18
|
+
shortPluginEventType,
|
|
19
|
+
validateActionDecls
|
|
20
|
+
} from "./chunk-XRSKWL3A.js";
|
|
21
|
+
|
|
22
|
+
// src/manifest.ts
|
|
23
|
+
var PluginChannels = ["dev", "beta", "stable"];
|
|
24
|
+
var TenantPluginStates = ["installed", "enabled", "disabled", "errored"];
|
|
25
|
+
var PluginVersionStatuses = ["draft", "published", "yanked"];
|
|
26
|
+
|
|
27
|
+
// src/permissions.ts
|
|
28
|
+
var PluginScopes = {
|
|
29
|
+
WalletRead: "wallet:read",
|
|
30
|
+
WalletWrite: "wallet:write",
|
|
31
|
+
PlayerRead: "player:read",
|
|
32
|
+
PlayerWrite: "player:write",
|
|
33
|
+
CatalogRead: "catalog:read",
|
|
34
|
+
BonusWrite: "bonus:write",
|
|
35
|
+
EventsSubscribe: "events:subscribe",
|
|
36
|
+
EventsPublish: "events:publish",
|
|
37
|
+
CommandsExecute: "commands:execute"
|
|
38
|
+
};
|
|
39
|
+
function pluginEventPrefix(pluginKey) {
|
|
40
|
+
return `plugin.${pluginKey}.`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/settings.ts
|
|
44
|
+
import { z } from "zod";
|
|
45
|
+
function finalize(type, base, opts, enumValues) {
|
|
46
|
+
const required = opts.required ?? false;
|
|
47
|
+
let zod = opts.zod ?? base;
|
|
48
|
+
if (!required) zod = zod.optional();
|
|
49
|
+
if (opts.default !== void 0) zod = zod.default(opts.default);
|
|
50
|
+
return {
|
|
51
|
+
type,
|
|
52
|
+
label: opts.label,
|
|
53
|
+
description: opts.description,
|
|
54
|
+
required,
|
|
55
|
+
secret: opts.secret,
|
|
56
|
+
default: opts.default,
|
|
57
|
+
enumValues,
|
|
58
|
+
zod
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
var settingsField = {
|
|
62
|
+
string: (opts) => finalize("string", z.string().min(1), opts),
|
|
63
|
+
number: (opts) => finalize("number", z.number().finite(), opts),
|
|
64
|
+
boolean: (opts) => finalize("boolean", z.boolean(), opts),
|
|
65
|
+
enum: (opts) => finalize("enum", z.enum(opts.enumValues), opts, opts.enumValues),
|
|
66
|
+
json: (opts) => finalize("json", z.union([z.record(z.unknown()), z.array(z.unknown())]), opts)
|
|
67
|
+
};
|
|
68
|
+
function serializeSettingsSchema(schema) {
|
|
69
|
+
const out = {};
|
|
70
|
+
for (const [key, field] of Object.entries(schema.fields)) {
|
|
71
|
+
out[key] = {
|
|
72
|
+
type: field.type,
|
|
73
|
+
label: field.label,
|
|
74
|
+
...field.description !== void 0 ? { description: field.description } : {},
|
|
75
|
+
required: field.required,
|
|
76
|
+
secret: field.secret === true,
|
|
77
|
+
...field.secret !== true && field.default !== void 0 ? { default: field.default } : {},
|
|
78
|
+
...field.enumValues !== void 0 ? { enumValues: field.enumValues } : {}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
function settingsZodObject(schema, secret = "exclude") {
|
|
84
|
+
const shape = {};
|
|
85
|
+
for (const [key, field] of Object.entries(schema.fields)) {
|
|
86
|
+
const isSecret = field.secret === true;
|
|
87
|
+
if (secret === "exclude" && isSecret) continue;
|
|
88
|
+
if (secret === "only" && !isSecret) continue;
|
|
89
|
+
shape[key] = secret === "only" ? field.zod.optional() : field.zod;
|
|
90
|
+
}
|
|
91
|
+
return z.object(shape).strict();
|
|
92
|
+
}
|
|
93
|
+
function defaultSettingsValues(schema) {
|
|
94
|
+
const values = {};
|
|
95
|
+
for (const [key, field] of Object.entries(schema.fields)) {
|
|
96
|
+
if (field.secret === true) continue;
|
|
97
|
+
if (field.default !== void 0) values[key] = field.default;
|
|
98
|
+
}
|
|
99
|
+
return values;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/hooks.ts
|
|
103
|
+
var PluginHookNames = [
|
|
104
|
+
"onInstall",
|
|
105
|
+
"onEnable",
|
|
106
|
+
"onConfigure",
|
|
107
|
+
"onDisable",
|
|
108
|
+
"onUninstall",
|
|
109
|
+
"onMigrateSettings",
|
|
110
|
+
"onUpgrade"
|
|
111
|
+
];
|
|
112
|
+
|
|
113
|
+
// src/define.ts
|
|
114
|
+
function definePlugin(definition) {
|
|
115
|
+
return definition;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// src/routes.ts
|
|
119
|
+
var PLUGIN_ROUTE_LIMITS = {
|
|
120
|
+
/** Handler timeout (ms) — public/player/admin surfaces. */
|
|
121
|
+
timeoutMs: 5e3,
|
|
122
|
+
/** Handler timeout (ms) — callback surface (providers can be slow). */
|
|
123
|
+
callbackTimeoutMs: 1e4,
|
|
124
|
+
/** Serialized response body cap in bytes. */
|
|
125
|
+
maxResponseBytes: 1048576,
|
|
126
|
+
/** Default public-surface rate limit when the manifest omits one. */
|
|
127
|
+
defaultRateLimit: { windowSec: 60, max: 60 }
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// src/tasks.ts
|
|
131
|
+
var PLUGIN_TASK_LIMITS = {
|
|
132
|
+
/** Task execution timeout (ms). */
|
|
133
|
+
timeoutMs: 9e5
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// src/http.ts
|
|
137
|
+
var PLUGIN_HTTP_LIMITS = {
|
|
138
|
+
defaultTimeoutMs: 1e4,
|
|
139
|
+
maxResponseBytes: 31457280,
|
|
140
|
+
/** Retries on idempotent methods (GET/HEAD) only. */
|
|
141
|
+
maxRetries: 2,
|
|
142
|
+
maxRedirects: 3
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// src/flows.ts
|
|
146
|
+
var FLOW_STAGE_CATALOG = {
|
|
147
|
+
"signup.validate": { flow: "signup", modes: ["intercept"], failPolicy: "closed" },
|
|
148
|
+
"signup.completed": { flow: "signup", modes: ["observe"], failPolicy: "open" },
|
|
149
|
+
"kyc.requirements.resolve": { flow: "kyc", modes: ["intercept"], failPolicy: "closed" },
|
|
150
|
+
"kyc.document.submitted": { flow: "kyc", modes: ["observe"], failPolicy: "open" },
|
|
151
|
+
"kyc.decision": { flow: "kyc", modes: ["observe"], failPolicy: "open" },
|
|
152
|
+
"deposit.validate": { flow: "deposit", modes: ["intercept"], failPolicy: "closed" },
|
|
153
|
+
"deposit.completed": { flow: "deposit", modes: ["observe"], failPolicy: "open" },
|
|
154
|
+
"withdrawal.validate": { flow: "withdrawal", modes: ["intercept"], failPolicy: "closed" },
|
|
155
|
+
"withdrawal.review": { flow: "withdrawal", modes: ["intercept"], failPolicy: "open" },
|
|
156
|
+
"withdrawal.settled": { flow: "withdrawal", modes: ["observe"], failPolicy: "open" }
|
|
157
|
+
};
|
|
158
|
+
var FLOW_STAGE_NAMES = Object.keys(FLOW_STAGE_CATALOG);
|
|
159
|
+
var FLOW_HOOK_DEFAULT_TIMEOUT_MS = 2e3;
|
|
160
|
+
var FLOW_HOOK_MAX_TIMEOUT_MS = 5e3;
|
|
161
|
+
var flowModeSettingKey = (flow) => `flows.${flow}.mode`;
|
|
162
|
+
|
|
163
|
+
// ../domain-events/src/names.ts
|
|
164
|
+
var WalletEvents = {
|
|
165
|
+
CREDITED: "wallet.credited",
|
|
166
|
+
DEBITED: "wallet.debited",
|
|
167
|
+
TRANSFERRED: "wallet.transferred",
|
|
168
|
+
DEPOSIT_COMPLETED: "wallet.deposit_completed",
|
|
169
|
+
WITHDRAWAL_REQUESTED: "wallet.withdrawal_requested",
|
|
170
|
+
WITHDRAWAL_APPROVED: "wallet.withdrawal_approved",
|
|
171
|
+
WITHDRAWAL_REJECTED: "wallet.withdrawal_rejected",
|
|
172
|
+
TRANSACTION_REVERSED: "wallet.transaction_reversed",
|
|
173
|
+
WALLET_FROZEN: "wallet.frozen",
|
|
174
|
+
WALLET_UNFROZEN: "wallet.unfrozen"
|
|
175
|
+
};
|
|
176
|
+
var PlayerEvents = {
|
|
177
|
+
CREATED: "player.created",
|
|
178
|
+
LOGGED_IN: "player.logged_in",
|
|
179
|
+
LOGGED_OUT: "player.logged_out",
|
|
180
|
+
SESSION_REFRESHED: "player.session_refreshed",
|
|
181
|
+
SOCIAL_LINKED: "player.social_linked",
|
|
182
|
+
SOCIAL_UNLINKED: "player.social_unlinked",
|
|
183
|
+
PASSWORD_CHANGED: "player.password_changed",
|
|
184
|
+
LOGIN_FAILED: "player.login_failed",
|
|
185
|
+
ACCOUNT_LOCKED: "player.account_locked",
|
|
186
|
+
// Player account surface (docs/prompts/PLAYER_ACCOUNT_BUILD_PROMPT.md §13).
|
|
187
|
+
// Profile/lifecycle facts — payloads carry ids + changed-field NAMES only,
|
|
188
|
+
// never old/new PII values.
|
|
189
|
+
UPDATED: "player.updated",
|
|
190
|
+
/** KYC level-up: the player reached a higher verified level. */
|
|
191
|
+
VERIFIED: "player.verified",
|
|
192
|
+
CLOSED: "player.closed",
|
|
193
|
+
/** Staff suspended the account (backoffice action; payload = ids + reason only). */
|
|
194
|
+
SUSPENDED: "player.suspended",
|
|
195
|
+
/** Staff lifted a suspension, returning the account to active. */
|
|
196
|
+
REACTIVATED: "player.reactivated",
|
|
197
|
+
EMAIL_VERIFIED: "player.email_verified",
|
|
198
|
+
PHONE_VERIFIED: "player.phone_verified",
|
|
199
|
+
SESSION_REVOKED: "player.session_revoked",
|
|
200
|
+
PREFERENCES_UPDATED: "player.preferences_updated",
|
|
201
|
+
// Responsible gaming (compliance-critical; observe-only for plugins).
|
|
202
|
+
LIMIT_CHANGED: "player.limit_changed",
|
|
203
|
+
COOL_OFF_STARTED: "player.cool_off_started",
|
|
204
|
+
SELF_EXCLUDED: "player.self_excluded",
|
|
205
|
+
/**
|
|
206
|
+
* Reality-check tick (§8.2): produced by the worker sweep for active game
|
|
207
|
+
* sessions, delivered to the frontend via the realtime `player` channel.
|
|
208
|
+
* Transport fact only — carries session aggregates, never money truth.
|
|
209
|
+
*/
|
|
210
|
+
REALITY_CHECK: "player.reality_check",
|
|
211
|
+
// Presence transitions (docs/PROPOSED_DECISIONS.md §10). Emitted on
|
|
212
|
+
// offline→online / online→offline flips ONLY — never per heartbeat.
|
|
213
|
+
ONLINE: "player.online",
|
|
214
|
+
OFFLINE: "player.offline"
|
|
215
|
+
};
|
|
216
|
+
var KycEvents = {
|
|
217
|
+
CONFIG_UPDATED: "kyc.config_updated",
|
|
218
|
+
REQUEST_CREATED: "kyc.request_created",
|
|
219
|
+
DOCUMENT_UPLOADED: "kyc.document_uploaded",
|
|
220
|
+
DOCUMENT_APPROVED: "kyc.document_approved",
|
|
221
|
+
DOCUMENT_REJECTED: "kyc.document_rejected",
|
|
222
|
+
REQUEST_SUBMITTED: "kyc.request_submitted",
|
|
223
|
+
REQUEST_APPROVED: "kyc.request_approved",
|
|
224
|
+
REQUEST_REJECTED: "kyc.request_rejected",
|
|
225
|
+
REQUEST_NEEDS_MORE: "kyc.request_needs_more",
|
|
226
|
+
// TASK-013 — BO escalation: a submitted request moved to the in_review lane.
|
|
227
|
+
REQUEST_ESCALATED: "kyc.request_escalated"
|
|
228
|
+
};
|
|
229
|
+
var BonusEvents = {
|
|
230
|
+
GRANTED: "bonus.granted",
|
|
231
|
+
REVOKED: "bonus.revoked",
|
|
232
|
+
// Bonus platform lifecycle (docs/BONUS_PLATFORM.md §3.3).
|
|
233
|
+
OFFERED: "bonus.offered",
|
|
234
|
+
CLAIMED: "bonus.claimed",
|
|
235
|
+
ACTIVATED: "bonus.activated",
|
|
236
|
+
// Throttled: emitted on 10% progress milestones, not per settled round.
|
|
237
|
+
WAGERING_PROGRESSED: "bonus.wagering_progressed",
|
|
238
|
+
WAGERING_COMPLETED: "bonus.wagering_completed",
|
|
239
|
+
CONVERTED: "bonus.converted",
|
|
240
|
+
EXPIRED: "bonus.expired",
|
|
241
|
+
FORFEITED: "bonus.forfeited",
|
|
242
|
+
VOIDED: "bonus.voided",
|
|
243
|
+
GRANT_QUEUED: "bonus.grant_queued",
|
|
244
|
+
GRANT_REJECTED: "bonus.grant_rejected",
|
|
245
|
+
CONSTRAINT_BREACHED: "bonus.constraint_breached"
|
|
246
|
+
};
|
|
247
|
+
var TournamentEvents = {
|
|
248
|
+
STARTED: "tournament.started",
|
|
249
|
+
ENDED: "tournament.ended",
|
|
250
|
+
PRIZE_AWARDED: "tournament.prize_awarded"
|
|
251
|
+
};
|
|
252
|
+
var GamificationEvents = {
|
|
253
|
+
ACHIEVEMENT_UNLOCKED: "gamification.achievement_unlocked",
|
|
254
|
+
MISSION_COMPLETED: "gamification.mission_completed",
|
|
255
|
+
LEVEL_UP: "gamification.level_up"
|
|
256
|
+
};
|
|
257
|
+
var LoyaltyEvents = {
|
|
258
|
+
POINTS_EARNED: "loyalty.points_earned",
|
|
259
|
+
POINTS_REDEEMED: "loyalty.points_redeemed"
|
|
260
|
+
};
|
|
261
|
+
var BetEvents = {
|
|
262
|
+
PLACED: "bet.placed",
|
|
263
|
+
SETTLED: "bet.settled"
|
|
264
|
+
};
|
|
265
|
+
var AffiliateEvents = {
|
|
266
|
+
// Acquisition funnel (docs/AFFILIATE_ANALYTICS.md §C1): click → registration → FTD.
|
|
267
|
+
// CLICK_RECORDED is the irreversible capture — click IDs (gclid/fbclid/…) exist
|
|
268
|
+
// only if stored at click time.
|
|
269
|
+
CLICK_RECORDED: "affiliate.click_recorded",
|
|
270
|
+
REGISTRATION_ATTRIBUTED: "affiliate.registration_attributed",
|
|
271
|
+
/** The one-time, permanent player→affiliate assignment (one per player, ever). */
|
|
272
|
+
ASSIGNED: "affiliate.assigned",
|
|
273
|
+
COMMISSION_CREATED: "affiliate.commission_created",
|
|
274
|
+
COMMISSION_SETTLED: "affiliate.commission_settled"
|
|
275
|
+
};
|
|
276
|
+
var ClassificationEvents = {
|
|
277
|
+
PLAYER_TAG_ASSIGNED: "classification.tag_assigned",
|
|
278
|
+
PLAYER_TAG_REMOVED: "classification.tag_removed",
|
|
279
|
+
SEGMENT_MEMBERSHIP_CHANGED: "classification.segment_membership_changed",
|
|
280
|
+
AUDIENCE_EXPORTED: "classification.audience_exported",
|
|
281
|
+
CONVERSION_FEEDBACK_SENT: "classification.conversion_feedback_sent"
|
|
282
|
+
};
|
|
283
|
+
var CatalogEvents = {
|
|
284
|
+
SOURCE_REGISTERED: "catalog.source_registered",
|
|
285
|
+
SOURCE_IMPORTED: "catalog.source_imported",
|
|
286
|
+
PROVIDER_UPSERTED: "catalog.provider_upserted",
|
|
287
|
+
CATEGORY_UPSERTED: "catalog.category_upserted",
|
|
288
|
+
GAME_CREATED: "catalog.game_created",
|
|
289
|
+
GAME_UPDATED: "catalog.game_updated",
|
|
290
|
+
GAME_RETIRED: "catalog.game_retired",
|
|
291
|
+
TENANT_PROVIDER_TOGGLED: "catalog.tenant_provider_toggled",
|
|
292
|
+
TENANT_GAME_OVERLAID: "catalog.tenant_game_overlaid",
|
|
293
|
+
GAMES_BULK_UPDATED: "catalog.games_bulk_updated",
|
|
294
|
+
CACHE_INVALIDATED: "catalog.cache_invalidated"
|
|
295
|
+
};
|
|
296
|
+
var CashierEvents = {
|
|
297
|
+
DEPOSIT_INITIATED: "cashier.deposit_initiated",
|
|
298
|
+
DEPOSIT_COMPLETED: "cashier.deposit_completed",
|
|
299
|
+
DEPOSIT_FAILED: "cashier.deposit_failed",
|
|
300
|
+
WITHDRAWAL_REQUESTED: "cashier.withdrawal_requested",
|
|
301
|
+
WITHDRAWAL_APPROVED: "cashier.withdrawal_approved",
|
|
302
|
+
WITHDRAWAL_REJECTED: "cashier.withdrawal_rejected",
|
|
303
|
+
WITHDRAWAL_PAID: "cashier.withdrawal_paid",
|
|
304
|
+
WITHDRAWAL_FAILED: "cashier.withdrawal_failed",
|
|
305
|
+
/** Player/BO cancelled a not-yet-processing withdrawal; locked funds released. */
|
|
306
|
+
WITHDRAWAL_CANCELLED: "cashier.withdrawal_cancelled",
|
|
307
|
+
PAYMENT_FEE_RECORDED: "cashier.payment_fee_recorded",
|
|
308
|
+
CHARGEBACK_RECORDED: "cashier.chargeback_recorded",
|
|
309
|
+
PAYMENT_INSTRUMENT_ADDED: "cashier.payment_instrument_added"
|
|
310
|
+
};
|
|
311
|
+
var PluginEvents = {
|
|
312
|
+
INSTALLED: "plugin.installed",
|
|
313
|
+
ENABLED: "plugin.enabled",
|
|
314
|
+
DISABLED: "plugin.disabled",
|
|
315
|
+
UNINSTALLED: "plugin.uninstalled",
|
|
316
|
+
CONFIGURED: "plugin.configured",
|
|
317
|
+
PUBLISHED: "plugin.published",
|
|
318
|
+
VERSION_YANKED: "plugin.version_yanked",
|
|
319
|
+
// v2 developer surface: upgrades, async tasks, scheduled jobs, data retention.
|
|
320
|
+
UPGRADED: "plugin.upgraded",
|
|
321
|
+
TASK_STARTED: "plugin.task_started",
|
|
322
|
+
TASK_COMPLETED: "plugin.task_completed",
|
|
323
|
+
TASK_FAILED: "plugin.task_failed",
|
|
324
|
+
JOB_FAILED: "plugin.job_failed",
|
|
325
|
+
DATA_PURGED: "plugin.data_purged"
|
|
326
|
+
};
|
|
327
|
+
var ProviderEvents = {
|
|
328
|
+
ENABLED: "provider.enabled",
|
|
329
|
+
DISABLED: "provider.disabled"
|
|
330
|
+
};
|
|
331
|
+
var BackofficeEvents = {
|
|
332
|
+
VIEW_SAVED: "backoffice.view_saved",
|
|
333
|
+
DASHBOARD_SAVED: "backoffice.dashboard_saved",
|
|
334
|
+
EXPORT_COMPLETED: "backoffice.export_completed",
|
|
335
|
+
PII_REVEALED: "backoffice.pii_revealed",
|
|
336
|
+
TRANSLATIONS_UPDATED: "backoffice.translations_updated",
|
|
337
|
+
/**
|
|
338
|
+
* TASK-005: staff reassigned a player's CRM owner. Carries staff user ids
|
|
339
|
+
* (before/after, either may be null for unassign) + reason. No player PII.
|
|
340
|
+
*/
|
|
341
|
+
OWNER_ASSIGNED: "backoffice.owner_assigned",
|
|
342
|
+
/**
|
|
343
|
+
* TASK-007: staff logged a typed CRM activity on any entity record.
|
|
344
|
+
* Payload carries ids + kind + ownerActorId + dueAt/completedAt only —
|
|
345
|
+
* NO body text (PII exfiltration risk), NO authorActorId (retrievable
|
|
346
|
+
* from the audit row).
|
|
347
|
+
*/
|
|
348
|
+
ACTIVITY_CREATED: "backoffice.activity_created",
|
|
349
|
+
/** TASK-007: staff marked an activity complete. Payload = ids + timestamps. */
|
|
350
|
+
ACTIVITY_COMPLETED: "backoffice.activity_completed"
|
|
351
|
+
};
|
|
352
|
+
var SystemEvents = {
|
|
353
|
+
FX_RATES_UPDATED: "system.fx_rates_updated",
|
|
354
|
+
TENANT_SETTINGS_UPDATED: "system.tenant_settings_updated"
|
|
355
|
+
};
|
|
356
|
+
var DomainEventNames = {
|
|
357
|
+
...WalletEvents,
|
|
358
|
+
...PlayerEvents,
|
|
359
|
+
...KycEvents,
|
|
360
|
+
...BonusEvents,
|
|
361
|
+
...BetEvents,
|
|
362
|
+
...AffiliateEvents,
|
|
363
|
+
...ClassificationEvents,
|
|
364
|
+
...CatalogEvents,
|
|
365
|
+
...CashierEvents,
|
|
366
|
+
...PluginEvents,
|
|
367
|
+
...ProviderEvents,
|
|
368
|
+
...TournamentEvents,
|
|
369
|
+
...GamificationEvents,
|
|
370
|
+
...LoyaltyEvents,
|
|
371
|
+
...BackofficeEvents,
|
|
372
|
+
...SystemEvents
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
// ../domain-events/src/versions.ts
|
|
376
|
+
var DomainEventVersions = {
|
|
377
|
+
[WalletEvents.CREDITED]: 1,
|
|
378
|
+
[WalletEvents.DEBITED]: 1,
|
|
379
|
+
[WalletEvents.TRANSFERRED]: 1,
|
|
380
|
+
[WalletEvents.DEPOSIT_COMPLETED]: 1,
|
|
381
|
+
[WalletEvents.WITHDRAWAL_REQUESTED]: 1,
|
|
382
|
+
[WalletEvents.WITHDRAWAL_APPROVED]: 1,
|
|
383
|
+
[WalletEvents.WITHDRAWAL_REJECTED]: 1,
|
|
384
|
+
[WalletEvents.TRANSACTION_REVERSED]: 2,
|
|
385
|
+
// v2: + gameId
|
|
386
|
+
[WalletEvents.WALLET_FROZEN]: 1,
|
|
387
|
+
[WalletEvents.WALLET_UNFROZEN]: 1,
|
|
388
|
+
[PlayerEvents.CREATED]: 1,
|
|
389
|
+
[PlayerEvents.LOGGED_IN]: 1,
|
|
390
|
+
[PlayerEvents.LOGGED_OUT]: 1,
|
|
391
|
+
[PlayerEvents.SESSION_REFRESHED]: 1,
|
|
392
|
+
[PlayerEvents.SOCIAL_LINKED]: 1,
|
|
393
|
+
[PlayerEvents.SOCIAL_UNLINKED]: 1,
|
|
394
|
+
[PlayerEvents.PASSWORD_CHANGED]: 1,
|
|
395
|
+
[PlayerEvents.LOGIN_FAILED]: 1,
|
|
396
|
+
[PlayerEvents.ACCOUNT_LOCKED]: 1,
|
|
397
|
+
[PlayerEvents.UPDATED]: 1,
|
|
398
|
+
[PlayerEvents.VERIFIED]: 1,
|
|
399
|
+
[PlayerEvents.CLOSED]: 1,
|
|
400
|
+
[PlayerEvents.SUSPENDED]: 1,
|
|
401
|
+
[PlayerEvents.REACTIVATED]: 1,
|
|
402
|
+
[PlayerEvents.EMAIL_VERIFIED]: 1,
|
|
403
|
+
[PlayerEvents.PHONE_VERIFIED]: 1,
|
|
404
|
+
[PlayerEvents.SESSION_REVOKED]: 1,
|
|
405
|
+
[PlayerEvents.PREFERENCES_UPDATED]: 1,
|
|
406
|
+
[PlayerEvents.LIMIT_CHANGED]: 1,
|
|
407
|
+
[PlayerEvents.COOL_OFF_STARTED]: 1,
|
|
408
|
+
[PlayerEvents.SELF_EXCLUDED]: 1,
|
|
409
|
+
[PlayerEvents.REALITY_CHECK]: 1,
|
|
410
|
+
[PlayerEvents.ONLINE]: 1,
|
|
411
|
+
[PlayerEvents.OFFLINE]: 1,
|
|
412
|
+
[KycEvents.CONFIG_UPDATED]: 1,
|
|
413
|
+
[KycEvents.REQUEST_CREATED]: 1,
|
|
414
|
+
[KycEvents.DOCUMENT_UPLOADED]: 1,
|
|
415
|
+
[KycEvents.DOCUMENT_APPROVED]: 1,
|
|
416
|
+
[KycEvents.DOCUMENT_REJECTED]: 1,
|
|
417
|
+
[KycEvents.REQUEST_SUBMITTED]: 1,
|
|
418
|
+
[KycEvents.REQUEST_APPROVED]: 1,
|
|
419
|
+
[KycEvents.REQUEST_REJECTED]: 1,
|
|
420
|
+
[KycEvents.REQUEST_NEEDS_MORE]: 1,
|
|
421
|
+
[KycEvents.REQUEST_ESCALATED]: 1,
|
|
422
|
+
[BonusEvents.GRANTED]: 1,
|
|
423
|
+
[BonusEvents.REVOKED]: 1,
|
|
424
|
+
[BonusEvents.OFFERED]: 1,
|
|
425
|
+
[BonusEvents.CLAIMED]: 1,
|
|
426
|
+
[BonusEvents.ACTIVATED]: 1,
|
|
427
|
+
[BonusEvents.WAGERING_PROGRESSED]: 1,
|
|
428
|
+
[BonusEvents.WAGERING_COMPLETED]: 1,
|
|
429
|
+
[BonusEvents.CONVERTED]: 1,
|
|
430
|
+
[BonusEvents.EXPIRED]: 1,
|
|
431
|
+
[BonusEvents.FORFEITED]: 1,
|
|
432
|
+
[BonusEvents.VOIDED]: 1,
|
|
433
|
+
[BonusEvents.GRANT_QUEUED]: 1,
|
|
434
|
+
[BonusEvents.GRANT_REJECTED]: 1,
|
|
435
|
+
[BonusEvents.CONSTRAINT_BREACHED]: 1,
|
|
436
|
+
[BetEvents.PLACED]: 2,
|
|
437
|
+
// v2: + gameId
|
|
438
|
+
[BetEvents.SETTLED]: 2,
|
|
439
|
+
// v2: + gameId
|
|
440
|
+
[AffiliateEvents.CLICK_RECORDED]: 1,
|
|
441
|
+
[AffiliateEvents.REGISTRATION_ATTRIBUTED]: 1,
|
|
442
|
+
[AffiliateEvents.ASSIGNED]: 1,
|
|
443
|
+
[AffiliateEvents.COMMISSION_CREATED]: 2,
|
|
444
|
+
// v2: ledger semantics (entryId, kind, before/after, FX)
|
|
445
|
+
[AffiliateEvents.COMMISSION_SETTLED]: 1,
|
|
446
|
+
[ClassificationEvents.PLAYER_TAG_ASSIGNED]: 1,
|
|
447
|
+
[ClassificationEvents.PLAYER_TAG_REMOVED]: 1,
|
|
448
|
+
[ClassificationEvents.SEGMENT_MEMBERSHIP_CHANGED]: 1,
|
|
449
|
+
[ClassificationEvents.AUDIENCE_EXPORTED]: 1,
|
|
450
|
+
[ClassificationEvents.CONVERSION_FEEDBACK_SENT]: 1,
|
|
451
|
+
[CatalogEvents.SOURCE_REGISTERED]: 1,
|
|
452
|
+
[CatalogEvents.SOURCE_IMPORTED]: 1,
|
|
453
|
+
[CatalogEvents.PROVIDER_UPSERTED]: 1,
|
|
454
|
+
[CatalogEvents.CATEGORY_UPSERTED]: 1,
|
|
455
|
+
[CatalogEvents.GAME_CREATED]: 1,
|
|
456
|
+
[CatalogEvents.GAME_UPDATED]: 1,
|
|
457
|
+
[CatalogEvents.GAME_RETIRED]: 1,
|
|
458
|
+
[CatalogEvents.TENANT_PROVIDER_TOGGLED]: 1,
|
|
459
|
+
[CatalogEvents.TENANT_GAME_OVERLAID]: 1,
|
|
460
|
+
[CatalogEvents.GAMES_BULK_UPDATED]: 1,
|
|
461
|
+
[CatalogEvents.CACHE_INVALIDATED]: 1,
|
|
462
|
+
[CashierEvents.DEPOSIT_INITIATED]: 1,
|
|
463
|
+
[CashierEvents.DEPOSIT_COMPLETED]: 1,
|
|
464
|
+
[CashierEvents.DEPOSIT_FAILED]: 1,
|
|
465
|
+
[CashierEvents.WITHDRAWAL_REQUESTED]: 1,
|
|
466
|
+
[CashierEvents.WITHDRAWAL_APPROVED]: 1,
|
|
467
|
+
[CashierEvents.WITHDRAWAL_REJECTED]: 1,
|
|
468
|
+
[CashierEvents.WITHDRAWAL_PAID]: 1,
|
|
469
|
+
[CashierEvents.WITHDRAWAL_FAILED]: 1,
|
|
470
|
+
[CashierEvents.WITHDRAWAL_CANCELLED]: 1,
|
|
471
|
+
[CashierEvents.PAYMENT_FEE_RECORDED]: 1,
|
|
472
|
+
[CashierEvents.CHARGEBACK_RECORDED]: 1,
|
|
473
|
+
[CashierEvents.PAYMENT_INSTRUMENT_ADDED]: 1,
|
|
474
|
+
[PluginEvents.INSTALLED]: 1,
|
|
475
|
+
[PluginEvents.ENABLED]: 1,
|
|
476
|
+
[PluginEvents.DISABLED]: 1,
|
|
477
|
+
[PluginEvents.UNINSTALLED]: 1,
|
|
478
|
+
[PluginEvents.CONFIGURED]: 1,
|
|
479
|
+
[PluginEvents.PUBLISHED]: 1,
|
|
480
|
+
[PluginEvents.VERSION_YANKED]: 1,
|
|
481
|
+
[PluginEvents.UPGRADED]: 1,
|
|
482
|
+
[PluginEvents.TASK_STARTED]: 1,
|
|
483
|
+
[PluginEvents.TASK_COMPLETED]: 1,
|
|
484
|
+
[PluginEvents.TASK_FAILED]: 1,
|
|
485
|
+
[PluginEvents.JOB_FAILED]: 1,
|
|
486
|
+
[PluginEvents.DATA_PURGED]: 1,
|
|
487
|
+
[ProviderEvents.ENABLED]: 1,
|
|
488
|
+
[ProviderEvents.DISABLED]: 1,
|
|
489
|
+
[TournamentEvents.STARTED]: 1,
|
|
490
|
+
[TournamentEvents.ENDED]: 1,
|
|
491
|
+
[TournamentEvents.PRIZE_AWARDED]: 1,
|
|
492
|
+
[GamificationEvents.ACHIEVEMENT_UNLOCKED]: 1,
|
|
493
|
+
[GamificationEvents.MISSION_COMPLETED]: 1,
|
|
494
|
+
[GamificationEvents.LEVEL_UP]: 1,
|
|
495
|
+
[LoyaltyEvents.POINTS_EARNED]: 1,
|
|
496
|
+
[LoyaltyEvents.POINTS_REDEEMED]: 1,
|
|
497
|
+
[BackofficeEvents.VIEW_SAVED]: 1,
|
|
498
|
+
[BackofficeEvents.DASHBOARD_SAVED]: 1,
|
|
499
|
+
[BackofficeEvents.EXPORT_COMPLETED]: 1,
|
|
500
|
+
[BackofficeEvents.PII_REVEALED]: 1,
|
|
501
|
+
[BackofficeEvents.TRANSLATIONS_UPDATED]: 1,
|
|
502
|
+
[BackofficeEvents.OWNER_ASSIGNED]: 1,
|
|
503
|
+
[BackofficeEvents.ACTIVITY_CREATED]: 1,
|
|
504
|
+
[BackofficeEvents.ACTIVITY_COMPLETED]: 1,
|
|
505
|
+
[SystemEvents.FX_RATES_UPDATED]: 1,
|
|
506
|
+
[SystemEvents.TENANT_SETTINGS_UPDATED]: 1
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
// ../domain-events/src/subjects.ts
|
|
510
|
+
var SUBJECT_ROOT = "cwe";
|
|
511
|
+
var STREAM_SUBJECT = `${SUBJECT_ROOT}.>`;
|
|
512
|
+
export {
|
|
513
|
+
ACTION_KEY_RE,
|
|
514
|
+
AffiliateEvents,
|
|
515
|
+
BetEvents,
|
|
516
|
+
BonusEvents,
|
|
517
|
+
CATALOG_ALLOWED_KINDS,
|
|
518
|
+
CATALOG_IMPORT_TASK_TYPE,
|
|
519
|
+
CashierEvents,
|
|
520
|
+
CatalogEvents,
|
|
521
|
+
DataScopes,
|
|
522
|
+
DomainEventNames,
|
|
523
|
+
FLOW_HOOK_DEFAULT_TIMEOUT_MS,
|
|
524
|
+
FLOW_HOOK_MAX_TIMEOUT_MS,
|
|
525
|
+
FLOW_STAGE_CATALOG,
|
|
526
|
+
FLOW_STAGE_NAMES,
|
|
527
|
+
PLUGIN_CATALOG_LIMITS,
|
|
528
|
+
PLUGIN_DATASET_LIMITS,
|
|
529
|
+
PLUGIN_HTTP_LIMITS,
|
|
530
|
+
PLUGIN_JOB_LIMITS,
|
|
531
|
+
PLUGIN_MIGRATION_LIMITS,
|
|
532
|
+
PLUGIN_ROUTE_LIMITS,
|
|
533
|
+
PLUGIN_TASK_LIMITS,
|
|
534
|
+
PlayerEvents,
|
|
535
|
+
PluginChannels,
|
|
536
|
+
PluginEvents,
|
|
537
|
+
PluginHookNames,
|
|
538
|
+
PluginScopes,
|
|
539
|
+
PluginVersionStatuses,
|
|
540
|
+
ProviderEvents,
|
|
541
|
+
READ_MODEL_MAX_PAGE,
|
|
542
|
+
ReadModelRequiredScopes,
|
|
543
|
+
TenantPluginStates,
|
|
544
|
+
WalletEvents,
|
|
545
|
+
defaultSettingsValues,
|
|
546
|
+
definePlugin,
|
|
547
|
+
deriveActionSchemas,
|
|
548
|
+
flowModeSettingKey,
|
|
549
|
+
fullPluginEventName,
|
|
550
|
+
generateClientPackage,
|
|
551
|
+
jsonSchemaToTsType,
|
|
552
|
+
parseActionRoute,
|
|
553
|
+
pascalCase,
|
|
554
|
+
pluginEventPrefix,
|
|
555
|
+
serializeSettingsSchema,
|
|
556
|
+
settingsField,
|
|
557
|
+
settingsZodObject,
|
|
558
|
+
shortPluginEventType,
|
|
559
|
+
validateActionDecls
|
|
560
|
+
};
|
|
561
|
+
//# sourceMappingURL=index.js.map
|