@openora/core 0.4.1-canary.47 → 0.4.1-canary.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/admin-console/__tests__/backoffice.service.test.js +62 -41
- package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
- package/dist/admin-console/contract/index.d.ts +2 -1
- package/dist/admin-console/contract/index.d.ts.map +1 -1
- package/dist/admin-console/contract/index.js +2 -9
- package/dist/admin-console/contract/index.js.map +1 -1
- package/dist/admin-console/router/index.d.ts +1 -0
- package/dist/admin-console/router/index.d.ts.map +1 -1
- package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
- package/dist/admin-console/service/backoffice.service.js +1 -0
- package/dist/admin-console/service/backoffice.service.js.map +1 -1
- package/dist/analytics/__tests__/funnel-analytics.service.test.js +3 -3
- package/dist/analytics/__tests__/funnel-analytics.service.test.js.map +1 -1
- package/dist/analytics/contract/funnel.d.ts +3 -3
- package/dist/analytics/contract/funnel.js +1 -1
- package/dist/analytics/contract/funnel.js.map +1 -1
- package/dist/analytics/contract/index.d.ts +1 -1
- package/dist/analytics/router/index.d.ts +1 -1
- package/dist/analytics/service/funnel-analytics.service.js +1 -1
- package/dist/analytics/service/funnel-analytics.service.js.map +1 -1
- package/dist/audit/contract/index.d.ts +2 -2
- package/dist/audit/router/index.d.ts +1 -1
- package/dist/casino/gaming/__tests__/admin-reporting.test.js +114 -75
- package/dist/casino/gaming/__tests__/admin-reporting.test.js.map +1 -1
- package/dist/casino/gaming/admin-reporting.d.ts.map +1 -1
- package/dist/casino/gaming/admin-reporting.js +6 -3
- package/dist/casino/gaming/admin-reporting.js.map +1 -1
- package/dist/casino/server.d.ts +1 -0
- package/dist/casino/server.d.ts.map +1 -1
- package/dist/casino/server.js +1 -0
- package/dist/casino/server.js.map +1 -1
- package/dist/contracts/adapters/admin-game-reporting.d.ts +1 -0
- package/dist/contracts/adapters/admin-game-reporting.d.ts.map +1 -1
- package/dist/contracts/adapters/admin-game-reporting.js.map +1 -1
- package/dist/contracts/schemas/game.d.ts.map +1 -1
- package/dist/contracts/schemas/game.js +0 -6
- package/dist/contracts/schemas/game.js.map +1 -1
- package/dist/iam/__tests__/admin-player-activity.test.js +111 -43
- package/dist/iam/__tests__/admin-player-activity.test.js.map +1 -1
- package/dist/iam/adapters/admin-player-activity.d.ts.map +1 -1
- package/dist/iam/adapters/admin-player-activity.js +21 -14
- package/dist/iam/adapters/admin-player-activity.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,8 +10,6 @@ function resolveRange(filter) {
|
|
|
10
10
|
const from = filter.dateFrom ?? new Date(to.getTime() - DEFAULT_RANGE_DAYS * 24 * 60 * 60 * 1000);
|
|
11
11
|
return { from, to };
|
|
12
12
|
}
|
|
13
|
-
// See ADR-0017/0025. iam/AGENTS.md documents why this port lives here even though
|
|
14
|
-
// identity owns the underlying tables.
|
|
15
13
|
export class DrizzleAdminPlayerActivity {
|
|
16
14
|
drizzle;
|
|
17
15
|
constructor(drizzle) {
|
|
@@ -35,18 +33,28 @@ export class DrizzleAdminPlayerActivity {
|
|
|
35
33
|
// the same "active" definition reused below for retention's "has a session row" check.
|
|
36
34
|
async getActiveUsersTrend(filter) {
|
|
37
35
|
const { from, to } = resolveRange(filter);
|
|
36
|
+
// A single join bounded by the widest (MAU) window, then FILTER narrows the
|
|
37
|
+
// distinct-user count per day - one pass over `session` instead of three
|
|
38
|
+
// correlated subqueries re-scanning it for every generated day.
|
|
38
39
|
const result = await this.drizzle.db.execute(sql `
|
|
39
40
|
select
|
|
40
41
|
gs::date::text as date,
|
|
41
|
-
|
|
42
|
-
where ${session.updatedAt} >= gs and ${session.updatedAt} < gs + interval '1 day'
|
|
43
|
-
|
|
42
|
+
count(distinct ${session.userId}) filter (
|
|
43
|
+
where ${session.updatedAt} >= gs and ${session.updatedAt} < gs + interval '1 day'
|
|
44
|
+
) as dau,
|
|
45
|
+
count(distinct ${session.userId}) filter (
|
|
44
46
|
where ${session.updatedAt} >= gs - interval '6 days'
|
|
45
|
-
and ${session.updatedAt} < gs + interval '1 day'
|
|
46
|
-
|
|
47
|
+
and ${session.updatedAt} < gs + interval '1 day'
|
|
48
|
+
) as wau,
|
|
49
|
+
count(distinct ${session.userId}) filter (
|
|
47
50
|
where ${session.updatedAt} >= gs - interval '29 days'
|
|
48
|
-
and ${session.updatedAt} < gs + interval '1 day'
|
|
51
|
+
and ${session.updatedAt} < gs + interval '1 day'
|
|
52
|
+
) as mau
|
|
49
53
|
from generate_series(${from}::date, ${to}::date, interval '1 day') as gs
|
|
54
|
+
left join ${session}
|
|
55
|
+
on ${session.updatedAt} >= gs - interval '29 days'
|
|
56
|
+
and ${session.updatedAt} < gs + interval '1 day'
|
|
57
|
+
group by gs
|
|
50
58
|
order by gs
|
|
51
59
|
`);
|
|
52
60
|
return result.rows.map((r) => ({
|
|
@@ -60,18 +68,17 @@ export class DrizzleAdminPlayerActivity {
|
|
|
60
68
|
const { from, to } = resolveRange(filter);
|
|
61
69
|
const result = await this.drizzle.db.execute(sql `
|
|
62
70
|
with cohort_users as (
|
|
63
|
-
select ${user.id} as user_id, date_trunc('day', ${user.createdAt}) as cohort_date
|
|
64
|
-
${user.createdAt} as registered_at
|
|
71
|
+
select ${user.id} as user_id, date_trunc('day', ${user.createdAt}) as cohort_date
|
|
65
72
|
from ${user}
|
|
66
73
|
where ${user.createdAt} >= ${from} and ${user.createdAt} <= ${to}
|
|
67
74
|
),
|
|
68
75
|
returned_users as (
|
|
69
76
|
select distinct cu.user_id
|
|
70
77
|
from cohort_users cu
|
|
71
|
-
inner join ${session}
|
|
72
|
-
on
|
|
73
|
-
and
|
|
74
|
-
and
|
|
78
|
+
inner join ${session}
|
|
79
|
+
on ${session.userId} = cu.user_id
|
|
80
|
+
and ${session.updatedAt} >= cu.cohort_date + interval '1 day'
|
|
81
|
+
and ${session.updatedAt} <= cu.cohort_date + interval '1 day' * ${windowDays}
|
|
75
82
|
)
|
|
76
83
|
select
|
|
77
84
|
cu.cohort_date::date::text as cohort_date,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-player-activity.js","sourceRoot":"","sources":["../../../src/iam/adapters/admin-player-activity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,gFAAgF;AAChF,qFAAqF;AACrF,kFAAkF;AAClF,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,YAAY,CAAC,MAA4B;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAClG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"admin-player-activity.js","sourceRoot":"","sources":["../../../src/iam/adapters/admin-player-activity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,gFAAgF;AAChF,qFAAqF;AACrF,kFAAkF;AAClF,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,YAAY,CAAC,MAA4B;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAClG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,KAAK,CAAC,wBAAwB,CAC5B,MAA4B;QAE5B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAA0C,GAAG,CAAA;6CAChD,IAAI,CAAC,EAAE;6BACvB,IAAI,WAAW,EAAE;kBAC5B,IAAI,yBAAyB,IAAI,CAAC,SAAS;;;KAGxD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,uFAAuF;IACvF,qFAAqF;IACrF,kFAAkF;IAClF,sFAAsF;IACtF,uFAAuF;IACvF,KAAK,CAAC,mBAAmB,CAAC,MAA4B;QACpD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,4EAA4E;QAC5E,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAKzC,GAAG,CAAA;;;yBAGe,OAAO,CAAC,MAAM;kBACrB,OAAO,CAAC,SAAS,cAAc,OAAO,CAAC,SAAS;;yBAEzC,OAAO,CAAC,MAAM;kBACrB,OAAO,CAAC,SAAS;kBACjB,OAAO,CAAC,SAAS;;yBAEV,OAAO,CAAC,MAAM;kBACrB,OAAO,CAAC,SAAS;kBACjB,OAAO,CAAC,SAAS;;6BAEN,IAAI,WAAW,EAAE;kBAC5B,OAAO;aACZ,OAAO,CAAC,SAAS;cAChB,OAAO,CAAC,SAAS;;;KAG1B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YAClB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YAClB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,MAA4B,EAC5B,UAAkB;QAElB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAKzC,GAAG,CAAA;;iBAEO,IAAI,CAAC,EAAE,kCAAkC,IAAI,CAAC,SAAS;eACzD,IAAI;gBACH,IAAI,CAAC,SAAS,OAAO,IAAI,QAAQ,IAAI,CAAC,SAAS,OAAO,EAAE;;;;;qBAKnD,OAAO;eACb,OAAO,CAAC,MAAM;gBACb,OAAO,CAAC,SAAS;gBACjB,OAAO,CAAC,SAAS,2CAA2C,UAAU;;;;;;+CAMvC,UAAU;;;;;KAKpD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO;gBACL,UAAU,EAAE,CAAC,CAAC,WAAW;gBACzB,UAAU;gBACV,QAAQ;gBACR,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACtD,UAAU,EAAE,CAAC,CAAC,WAAW;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openora/core",
|
|
3
|
-
"version": "0.4.1-canary.
|
|
3
|
+
"version": "0.4.1-canary.49",
|
|
4
4
|
"description": "Open-source, headless, plugin-based, AI-native iGaming framework - domain modules, plugin engine, Zod-first contracts, typed React SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-native",
|