@openora/core 0.4.1-canary.100 → 0.4.1-canary.102
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/plugin.d.ts +1 -1
- package/dist/analytics/plugin.d.ts +1 -1
- package/dist/audit/__tests__/map-event.test.js +27 -0
- package/dist/audit/__tests__/map-event.test.js.map +1 -1
- package/dist/audit/plugin.d.ts +1 -1
- package/dist/audit/plugin.d.ts.map +1 -1
- package/dist/audit/plugin.js +7 -0
- package/dist/audit/plugin.js.map +1 -1
- package/dist/casino/gaming/plugin.d.ts +1 -1
- package/dist/casino/lobby/plugin.d.ts +1 -1
- package/dist/cms/plugin.d.ts +1 -1
- package/dist/compliance/plugin.d.ts +1 -1
- package/dist/contracts/__tests__/identity.test.d.ts +2 -0
- package/dist/contracts/__tests__/identity.test.d.ts.map +1 -0
- package/dist/contracts/__tests__/identity.test.js +49 -0
- package/dist/contracts/__tests__/identity.test.js.map +1 -0
- package/dist/contracts/__tests__/player.test.d.ts +2 -0
- package/dist/contracts/__tests__/player.test.d.ts.map +1 -0
- package/dist/contracts/__tests__/player.test.js +51 -0
- package/dist/contracts/__tests__/player.test.js.map +1 -0
- package/dist/contracts/adapters/email-template.d.ts +6 -3
- package/dist/contracts/adapters/email-template.d.ts.map +1 -1
- package/dist/contracts/adapters/email-template.js +12 -1
- package/dist/contracts/adapters/email-template.js.map +1 -1
- package/dist/contracts/schemas/events.d.ts +17 -0
- package/dist/contracts/schemas/events.d.ts.map +1 -1
- package/dist/contracts/schemas/events.js +14 -0
- package/dist/contracts/schemas/events.js.map +1 -1
- package/dist/contracts/schemas/identity.d.ts +32 -1
- package/dist/contracts/schemas/identity.d.ts.map +1 -1
- package/dist/contracts/schemas/identity.js +33 -6
- package/dist/contracts/schemas/identity.js.map +1 -1
- package/dist/contracts/schemas/platform-config.d.ts +3 -3
- package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
- package/dist/contracts/schemas/platform-config.js +5 -2
- package/dist/contracts/schemas/platform-config.js.map +1 -1
- package/dist/contracts/schemas/player.d.ts +23 -1
- package/dist/contracts/schemas/player.d.ts.map +1 -1
- package/dist/contracts/schemas/player.js +43 -5
- package/dist/contracts/schemas/player.js.map +1 -1
- package/dist/engagement/chat/plugin.d.ts +1 -1
- package/dist/engagement/chat-commands/plugin.d.ts +1 -1
- package/dist/engagement/notifications/plugin.d.ts +1 -1
- package/dist/engagement/social/plugin.d.ts +1 -1
- package/dist/engagement/social-transfers/plugin.d.ts +1 -1
- package/dist/iam/plugin.d.ts +1 -1
- package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js +10 -9
- package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js.map +1 -1
- package/dist/pam/identity/__tests__/identity.registration-gates.int.test.js +25 -1
- package/dist/pam/identity/__tests__/identity.registration-gates.int.test.js.map +1 -1
- package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.js +11 -3
- package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.js.map +1 -1
- package/dist/pam/identity/contract/index.d.ts +28 -3
- package/dist/pam/identity/contract/index.d.ts.map +1 -1
- package/dist/pam/identity/contract/index.js +12 -2
- package/dist/pam/identity/contract/index.js.map +1 -1
- package/dist/pam/identity/plugin.d.ts +1 -1
- package/dist/pam/identity/react/account.d.ts +24 -3
- package/dist/pam/identity/react/account.d.ts.map +1 -1
- package/dist/pam/identity/router/index.d.ts +28 -3
- package/dist/pam/identity/router/index.d.ts.map +1 -1
- package/dist/pam/identity/router/index.js +2 -2
- package/dist/pam/identity/router/index.js.map +1 -1
- package/dist/pam/identity/service/identity.service.d.ts +55 -9
- package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
- package/dist/pam/identity/service/identity.service.js +220 -120
- package/dist/pam/identity/service/identity.service.js.map +1 -1
- package/dist/pam/identity/service/phone-login.service.d.ts.map +1 -1
- package/dist/pam/identity/service/phone-login.service.js +13 -43
- package/dist/pam/identity/service/phone-login.service.js.map +1 -1
- package/dist/pam/identity/service/rg-guard.service.d.ts +32 -0
- package/dist/pam/identity/service/rg-guard.service.d.ts.map +1 -1
- package/dist/pam/identity/service/rg-guard.service.js +56 -0
- package/dist/pam/identity/service/rg-guard.service.js.map +1 -1
- package/dist/pam/player-management/contract/index.d.ts +20 -0
- package/dist/pam/player-management/contract/index.d.ts.map +1 -1
- package/dist/pam/player-management/plugin.d.ts +1 -1
- package/dist/pam/player-management/router/index.d.ts +16 -0
- package/dist/pam/player-management/router/index.d.ts.map +1 -1
- package/dist/pam/player-management/service/player.service.d.ts +20 -0
- package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
- package/dist/pam/player-note/plugin.d.ts +1 -1
- package/dist/pam/profile/__tests__/profile.service.int.test.js +45 -0
- package/dist/pam/profile/__tests__/profile.service.int.test.js.map +1 -1
- package/dist/pam/profile/contract/index.d.ts +13 -1
- package/dist/pam/profile/contract/index.d.ts.map +1 -1
- package/dist/pam/profile/drizzle/migrations/0003_absurd_morbius.sql +4 -0
- package/dist/pam/profile/drizzle/migrations/meta/0003_snapshot.json +224 -0
- package/dist/pam/profile/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/pam/profile/plugin.d.ts +1 -1
- package/dist/pam/profile/react/profile.d.ts +13 -1
- package/dist/pam/profile/react/profile.d.ts.map +1 -1
- package/dist/pam/profile/router/index.d.ts +13 -1
- package/dist/pam/profile/router/index.d.ts.map +1 -1
- package/dist/pam/profile/schema/index.d.ts +68 -0
- package/dist/pam/profile/schema/index.d.ts.map +1 -1
- package/dist/pam/profile/schema/index.js +10 -1
- package/dist/pam/profile/schema/index.js.map +1 -1
- package/dist/pam/profile/service/profile.service.d.ts +8 -0
- package/dist/pam/profile/service/profile.service.d.ts.map +1 -1
- package/dist/pam/shared/player-mapper.d.ts +4 -0
- package/dist/pam/shared/player-mapper.d.ts.map +1 -1
- package/dist/pam/shared/player-mapper.js +6 -0
- package/dist/pam/shared/player-mapper.js.map +1 -1
- package/dist/pam/tag/plugin.d.ts +1 -1
- package/dist/server/auth/__tests__/auth.test.js +60 -1
- package/dist/server/auth/__tests__/auth.test.js.map +1 -1
- package/dist/server/auth/auth.d.ts +13 -1
- package/dist/server/auth/auth.d.ts.map +1 -1
- package/dist/server/auth/auth.js +20 -17
- package/dist/server/auth/auth.js.map +1 -1
- package/dist/server/runtime/core-token-catalog.d.ts +1 -1
- package/dist/testing/seed-player.d.ts +4 -0
- package/dist/testing/seed-player.d.ts.map +1 -1
- package/dist/wallet/plugin.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "3a65a978-c6e6-4a7d-8a4b-138c529b8ba1",
|
|
3
|
+
"prevId": "f0525db2-f419-41f1-913d-ddf84c172e55",
|
|
4
|
+
"version": "7",
|
|
5
|
+
"dialect": "postgresql",
|
|
6
|
+
"tables": {
|
|
7
|
+
"public.player": {
|
|
8
|
+
"name": "player",
|
|
9
|
+
"schema": "",
|
|
10
|
+
"columns": {
|
|
11
|
+
"id": {
|
|
12
|
+
"name": "id",
|
|
13
|
+
"type": "uuid",
|
|
14
|
+
"primaryKey": true,
|
|
15
|
+
"notNull": true,
|
|
16
|
+
"default": "gen_random_uuid()"
|
|
17
|
+
},
|
|
18
|
+
"user_id": {
|
|
19
|
+
"name": "user_id",
|
|
20
|
+
"type": "uuid",
|
|
21
|
+
"primaryKey": false,
|
|
22
|
+
"notNull": true
|
|
23
|
+
},
|
|
24
|
+
"first_name": {
|
|
25
|
+
"name": "first_name",
|
|
26
|
+
"type": "text",
|
|
27
|
+
"primaryKey": false,
|
|
28
|
+
"notNull": false
|
|
29
|
+
},
|
|
30
|
+
"last_name": {
|
|
31
|
+
"name": "last_name",
|
|
32
|
+
"type": "text",
|
|
33
|
+
"primaryKey": false,
|
|
34
|
+
"notNull": false
|
|
35
|
+
},
|
|
36
|
+
"date_of_birth": {
|
|
37
|
+
"name": "date_of_birth",
|
|
38
|
+
"type": "date",
|
|
39
|
+
"primaryKey": false,
|
|
40
|
+
"notNull": false
|
|
41
|
+
},
|
|
42
|
+
"phone": {
|
|
43
|
+
"name": "phone",
|
|
44
|
+
"type": "text",
|
|
45
|
+
"primaryKey": false,
|
|
46
|
+
"notNull": false
|
|
47
|
+
},
|
|
48
|
+
"country": {
|
|
49
|
+
"name": "country",
|
|
50
|
+
"type": "text",
|
|
51
|
+
"primaryKey": false,
|
|
52
|
+
"notNull": false
|
|
53
|
+
},
|
|
54
|
+
"currency": {
|
|
55
|
+
"name": "currency",
|
|
56
|
+
"type": "text",
|
|
57
|
+
"primaryKey": false,
|
|
58
|
+
"notNull": true,
|
|
59
|
+
"default": "'USD'"
|
|
60
|
+
},
|
|
61
|
+
"status": {
|
|
62
|
+
"name": "status",
|
|
63
|
+
"type": "player_status",
|
|
64
|
+
"typeSchema": "public",
|
|
65
|
+
"primaryKey": false,
|
|
66
|
+
"notNull": true,
|
|
67
|
+
"default": "'active'"
|
|
68
|
+
},
|
|
69
|
+
"kyc_status": {
|
|
70
|
+
"name": "kyc_status",
|
|
71
|
+
"type": "kyc_status",
|
|
72
|
+
"typeSchema": "public",
|
|
73
|
+
"primaryKey": false,
|
|
74
|
+
"notNull": true,
|
|
75
|
+
"default": "'pending'"
|
|
76
|
+
},
|
|
77
|
+
"level": {
|
|
78
|
+
"name": "level",
|
|
79
|
+
"type": "integer",
|
|
80
|
+
"primaryKey": false,
|
|
81
|
+
"notNull": true,
|
|
82
|
+
"default": 1
|
|
83
|
+
},
|
|
84
|
+
"total_wagered": {
|
|
85
|
+
"name": "total_wagered",
|
|
86
|
+
"type": "numeric(18, 2)",
|
|
87
|
+
"primaryKey": false,
|
|
88
|
+
"notNull": true,
|
|
89
|
+
"default": "'0'"
|
|
90
|
+
},
|
|
91
|
+
"total_deposits": {
|
|
92
|
+
"name": "total_deposits",
|
|
93
|
+
"type": "numeric(18, 2)",
|
|
94
|
+
"primaryKey": false,
|
|
95
|
+
"notNull": true,
|
|
96
|
+
"default": "'0'"
|
|
97
|
+
},
|
|
98
|
+
"last_seen_at": {
|
|
99
|
+
"name": "last_seen_at",
|
|
100
|
+
"type": "timestamp with time zone",
|
|
101
|
+
"primaryKey": false,
|
|
102
|
+
"notNull": false
|
|
103
|
+
},
|
|
104
|
+
"terms_version": {
|
|
105
|
+
"name": "terms_version",
|
|
106
|
+
"type": "text",
|
|
107
|
+
"primaryKey": false,
|
|
108
|
+
"notNull": false
|
|
109
|
+
},
|
|
110
|
+
"terms_accepted_at": {
|
|
111
|
+
"name": "terms_accepted_at",
|
|
112
|
+
"type": "timestamp with time zone",
|
|
113
|
+
"primaryKey": false,
|
|
114
|
+
"notNull": false
|
|
115
|
+
},
|
|
116
|
+
"age_accepted_at": {
|
|
117
|
+
"name": "age_accepted_at",
|
|
118
|
+
"type": "timestamp with time zone",
|
|
119
|
+
"primaryKey": false,
|
|
120
|
+
"notNull": false
|
|
121
|
+
},
|
|
122
|
+
"registration_ip": {
|
|
123
|
+
"name": "registration_ip",
|
|
124
|
+
"type": "text",
|
|
125
|
+
"primaryKey": false,
|
|
126
|
+
"notNull": false
|
|
127
|
+
},
|
|
128
|
+
"registration_user_agent": {
|
|
129
|
+
"name": "registration_user_agent",
|
|
130
|
+
"type": "text",
|
|
131
|
+
"primaryKey": false,
|
|
132
|
+
"notNull": false
|
|
133
|
+
},
|
|
134
|
+
"created_at": {
|
|
135
|
+
"name": "created_at",
|
|
136
|
+
"type": "timestamp with time zone",
|
|
137
|
+
"primaryKey": false,
|
|
138
|
+
"notNull": true,
|
|
139
|
+
"default": "now()"
|
|
140
|
+
},
|
|
141
|
+
"updated_at": {
|
|
142
|
+
"name": "updated_at",
|
|
143
|
+
"type": "timestamp with time zone",
|
|
144
|
+
"primaryKey": false,
|
|
145
|
+
"notNull": true
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"indexes": {
|
|
149
|
+
"player_status_idx": {
|
|
150
|
+
"name": "player_status_idx",
|
|
151
|
+
"columns": [
|
|
152
|
+
{
|
|
153
|
+
"expression": "status",
|
|
154
|
+
"isExpression": false,
|
|
155
|
+
"asc": true,
|
|
156
|
+
"nulls": "last"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"isUnique": false,
|
|
160
|
+
"concurrently": false,
|
|
161
|
+
"method": "btree",
|
|
162
|
+
"with": {}
|
|
163
|
+
},
|
|
164
|
+
"player_created_at_idx": {
|
|
165
|
+
"name": "player_created_at_idx",
|
|
166
|
+
"columns": [
|
|
167
|
+
{
|
|
168
|
+
"expression": "created_at",
|
|
169
|
+
"isExpression": false,
|
|
170
|
+
"asc": true,
|
|
171
|
+
"nulls": "last"
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"isUnique": false,
|
|
175
|
+
"concurrently": false,
|
|
176
|
+
"method": "btree",
|
|
177
|
+
"with": {}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"foreignKeys": {},
|
|
181
|
+
"compositePrimaryKeys": {},
|
|
182
|
+
"uniqueConstraints": {
|
|
183
|
+
"player_user_id_unique": {
|
|
184
|
+
"name": "player_user_id_unique",
|
|
185
|
+
"nullsNotDistinct": false,
|
|
186
|
+
"columns": ["user_id"]
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"policies": {},
|
|
190
|
+
"checkConstraints": {},
|
|
191
|
+
"isRLSEnabled": false
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"enums": {
|
|
195
|
+
"public.kyc_status": {
|
|
196
|
+
"name": "kyc_status",
|
|
197
|
+
"schema": "public",
|
|
198
|
+
"values": [
|
|
199
|
+
"not_started",
|
|
200
|
+
"pending",
|
|
201
|
+
"approved",
|
|
202
|
+
"verified",
|
|
203
|
+
"rejected",
|
|
204
|
+
"resubmission_requested",
|
|
205
|
+
"manually_overridden"
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
"public.player_status": {
|
|
209
|
+
"name": "player_status",
|
|
210
|
+
"schema": "public",
|
|
211
|
+
"values": ["active", "dormant", "self_excluded", "suspended", "closed"]
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"schemas": {},
|
|
215
|
+
"sequences": {},
|
|
216
|
+
"roles": {},
|
|
217
|
+
"policies": {},
|
|
218
|
+
"views": {},
|
|
219
|
+
"_meta": {
|
|
220
|
+
"columns": {},
|
|
221
|
+
"schemas": {},
|
|
222
|
+
"tables": {}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
@@ -5,6 +5,10 @@ export declare function usePlayerProfile(): import("@tanstack/react-query").UseQ
|
|
|
5
5
|
userId: string;
|
|
6
6
|
username: string;
|
|
7
7
|
email: string;
|
|
8
|
+
firstName: string | null;
|
|
9
|
+
lastName: string | null;
|
|
10
|
+
dateOfBirth: string | null;
|
|
11
|
+
phone: string | null;
|
|
8
12
|
country: string | null;
|
|
9
13
|
currency: string;
|
|
10
14
|
status: "active" | "self_excluded" | "dormant" | "suspended" | "closed";
|
|
@@ -21,6 +25,10 @@ export declare function useUpdatePlayerProfile(): import("@tanstack/react-query"
|
|
|
21
25
|
userId: string;
|
|
22
26
|
username: string;
|
|
23
27
|
email: string;
|
|
28
|
+
firstName: string | null;
|
|
29
|
+
lastName: string | null;
|
|
30
|
+
dateOfBirth: string | null;
|
|
31
|
+
phone: string | null;
|
|
24
32
|
country: string | null;
|
|
25
33
|
currency: string;
|
|
26
34
|
status: "active" | "self_excluded" | "dormant" | "suspended" | "closed";
|
|
@@ -32,7 +40,11 @@ export declare function useUpdatePlayerProfile(): import("@tanstack/react-query"
|
|
|
32
40
|
createdAt: string;
|
|
33
41
|
updatedAt: string;
|
|
34
42
|
}, Error, {
|
|
35
|
-
|
|
43
|
+
firstName?: string | null | undefined;
|
|
44
|
+
lastName?: string | null | undefined;
|
|
45
|
+
dateOfBirth?: string | null | undefined;
|
|
46
|
+
phone?: string | null | undefined;
|
|
36
47
|
country?: string | null | undefined;
|
|
48
|
+
currency?: string | undefined;
|
|
37
49
|
}, unknown>;
|
|
38
50
|
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/react/profile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,wBAAgB,gBAAgB
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/react/profile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;WAG/B;AAED,wBAAgB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;YAOrC"}
|
|
@@ -6,6 +6,10 @@ export declare function createProfileRouter(profile: ProfileService): {
|
|
|
6
6
|
userId: import("zod").ZodUUID;
|
|
7
7
|
username: import("zod").ZodString;
|
|
8
8
|
email: import("zod").ZodString;
|
|
9
|
+
firstName: import("zod").ZodNullable<import("zod").ZodString>;
|
|
10
|
+
lastName: import("zod").ZodNullable<import("zod").ZodString>;
|
|
11
|
+
dateOfBirth: import("zod").ZodNullable<import("zod").ZodISODate>;
|
|
12
|
+
phone: import("zod").ZodNullable<import("zod").ZodString>;
|
|
9
13
|
country: import("zod").ZodNullable<import("zod").ZodString>;
|
|
10
14
|
currency: import("zod").ZodString;
|
|
11
15
|
status: import("zod").ZodEnum<{
|
|
@@ -32,13 +36,21 @@ export declare function createProfileRouter(profile: ProfileService): {
|
|
|
32
36
|
updatedAt: import("zod").ZodISODateTime;
|
|
33
37
|
}, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
34
38
|
update: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
|
|
35
|
-
|
|
39
|
+
firstName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
40
|
+
lastName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
41
|
+
dateOfBirth: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodISODate>>;
|
|
42
|
+
phone: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
36
43
|
country: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
44
|
+
currency: import("zod").ZodOptional<import("zod").ZodString>;
|
|
37
45
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
38
46
|
id: import("zod").ZodUUID;
|
|
39
47
|
userId: import("zod").ZodUUID;
|
|
40
48
|
username: import("zod").ZodString;
|
|
41
49
|
email: import("zod").ZodString;
|
|
50
|
+
firstName: import("zod").ZodNullable<import("zod").ZodString>;
|
|
51
|
+
lastName: import("zod").ZodNullable<import("zod").ZodString>;
|
|
52
|
+
dateOfBirth: import("zod").ZodNullable<import("zod").ZodISODate>;
|
|
53
|
+
phone: import("zod").ZodNullable<import("zod").ZodString>;
|
|
42
54
|
country: import("zod").ZodNullable<import("zod").ZodString>;
|
|
43
55
|
currency: import("zod").ZodString;
|
|
44
56
|
status: import("zod").ZodEnum<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/router/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/router/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU1D"}
|
|
@@ -38,6 +38,74 @@ export declare const player: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
38
38
|
identity: undefined;
|
|
39
39
|
generated: undefined;
|
|
40
40
|
}, {}, {}>;
|
|
41
|
+
firstName: import("drizzle-orm/pg-core").PgColumn<{
|
|
42
|
+
name: "firstName";
|
|
43
|
+
tableName: "player";
|
|
44
|
+
dataType: "string";
|
|
45
|
+
columnType: "PgText";
|
|
46
|
+
data: string;
|
|
47
|
+
driverParam: string;
|
|
48
|
+
notNull: false;
|
|
49
|
+
hasDefault: false;
|
|
50
|
+
isPrimaryKey: false;
|
|
51
|
+
isAutoincrement: false;
|
|
52
|
+
hasRuntimeDefault: false;
|
|
53
|
+
enumValues: [string, ...string[]];
|
|
54
|
+
baseColumn: never;
|
|
55
|
+
identity: undefined;
|
|
56
|
+
generated: undefined;
|
|
57
|
+
}, {}, {}>;
|
|
58
|
+
lastName: import("drizzle-orm/pg-core").PgColumn<{
|
|
59
|
+
name: "lastName";
|
|
60
|
+
tableName: "player";
|
|
61
|
+
dataType: "string";
|
|
62
|
+
columnType: "PgText";
|
|
63
|
+
data: string;
|
|
64
|
+
driverParam: string;
|
|
65
|
+
notNull: false;
|
|
66
|
+
hasDefault: false;
|
|
67
|
+
isPrimaryKey: false;
|
|
68
|
+
isAutoincrement: false;
|
|
69
|
+
hasRuntimeDefault: false;
|
|
70
|
+
enumValues: [string, ...string[]];
|
|
71
|
+
baseColumn: never;
|
|
72
|
+
identity: undefined;
|
|
73
|
+
generated: undefined;
|
|
74
|
+
}, {}, {}>;
|
|
75
|
+
dateOfBirth: import("drizzle-orm/pg-core").PgColumn<{
|
|
76
|
+
name: "dateOfBirth";
|
|
77
|
+
tableName: "player";
|
|
78
|
+
dataType: "string";
|
|
79
|
+
columnType: "PgDateString";
|
|
80
|
+
data: string;
|
|
81
|
+
driverParam: string;
|
|
82
|
+
notNull: false;
|
|
83
|
+
hasDefault: false;
|
|
84
|
+
isPrimaryKey: false;
|
|
85
|
+
isAutoincrement: false;
|
|
86
|
+
hasRuntimeDefault: false;
|
|
87
|
+
enumValues: undefined;
|
|
88
|
+
baseColumn: never;
|
|
89
|
+
identity: undefined;
|
|
90
|
+
generated: undefined;
|
|
91
|
+
}, {}, {}>;
|
|
92
|
+
phone: import("drizzle-orm/pg-core").PgColumn<{
|
|
93
|
+
name: "phone";
|
|
94
|
+
tableName: "player";
|
|
95
|
+
dataType: "string";
|
|
96
|
+
columnType: "PgText";
|
|
97
|
+
data: string;
|
|
98
|
+
driverParam: string;
|
|
99
|
+
notNull: false;
|
|
100
|
+
hasDefault: false;
|
|
101
|
+
isPrimaryKey: false;
|
|
102
|
+
isAutoincrement: false;
|
|
103
|
+
hasRuntimeDefault: false;
|
|
104
|
+
enumValues: [string, ...string[]];
|
|
105
|
+
baseColumn: never;
|
|
106
|
+
identity: undefined;
|
|
107
|
+
generated: undefined;
|
|
108
|
+
}, {}, {}>;
|
|
41
109
|
country: import("drizzle-orm/pg-core").PgColumn<{
|
|
42
110
|
name: "country";
|
|
43
111
|
tableName: "player";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/schema/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/schema/index.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB,qGAA2C,CAAC;AACzE,eAAO,MAAM,aAAa,uJAAqC,CAAC;AAEhE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiClB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,YAAY,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { pgTable, uuid, text, integer, decimal, timestamp, pgEnum, index, } from 'drizzle-orm/pg-core';
|
|
1
|
+
import { pgTable, uuid, text, integer, decimal, date, timestamp, pgEnum, index, } from 'drizzle-orm/pg-core';
|
|
2
2
|
import { PLAYER_STATUSES, KYC_STATUSES } from '@openora/core/contracts';
|
|
3
3
|
export const playerStatusEnum = pgEnum('player_status', PLAYER_STATUSES);
|
|
4
4
|
export const kycStatusEnum = pgEnum('kyc_status', KYC_STATUSES);
|
|
5
5
|
export const player = pgTable('player', {
|
|
6
6
|
id: uuid().primaryKey().defaultRandom(),
|
|
7
7
|
userId: uuid().notNull().unique('player_user_id_unique'),
|
|
8
|
+
firstName: text(),
|
|
9
|
+
lastName: text(),
|
|
10
|
+
// `mode: 'string'` keeps a birth date a plain calendar date: the default Date mode
|
|
11
|
+
// round-trips through a timestamp and shifts the day for players east or west of UTC.
|
|
12
|
+
dateOfBirth: date({ mode: 'string' }),
|
|
13
|
+
// Self-declared contact number - deliberately not unique. `user.phoneNumber` is unique
|
|
14
|
+
// because it is a login credential; making this one unique too would turn an optional
|
|
15
|
+
// profile field into a phone-enumeration oracle and let anyone squat a stranger's number.
|
|
16
|
+
phone: text(),
|
|
8
17
|
country: text(),
|
|
9
18
|
currency: text().notNull().default('USD'),
|
|
10
19
|
status: playerStatusEnum().notNull().default('active'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/pam/profile/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,GACN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAC3B,QAAQ,EACR;IACE,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IACvC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE;IACf,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,MAAM,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,SAAS,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACvD,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACzE,aAAa,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1E,UAAU,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC7C,YAAY,EAAE,IAAI,EAAE;IACpB,eAAe,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAClD,aAAa,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChD,cAAc,EAAE,IAAI,EAAE;IACtB,qBAAqB,EAAE,IAAI,EAAE;IAC7B,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACnE,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACzC,OAAO,EAAE;SACT,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;CACjC,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACjG,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/pam/profile/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EACJ,SAAS,EACT,MAAM,EACN,KAAK,GACN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAC3B,QAAQ,EACR;IACE,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IACvC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACxD,SAAS,EAAE,IAAI,EAAE;IACjB,QAAQ,EAAE,IAAI,EAAE;IAChB,mFAAmF;IACnF,sFAAsF;IACtF,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrC,uFAAuF;IACvF,sFAAsF;IACtF,0FAA0F;IAC1F,KAAK,EAAE,IAAI,EAAE;IACb,OAAO,EAAE,IAAI,EAAE;IACf,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,MAAM,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,SAAS,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACvD,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACzE,aAAa,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1E,UAAU,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC7C,YAAY,EAAE,IAAI,EAAE;IACpB,eAAe,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAClD,aAAa,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChD,cAAc,EAAE,IAAI,EAAE;IACtB,qBAAqB,EAAE,IAAI,EAAE;IAC7B,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACnE,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACzC,OAAO,EAAE;SACT,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;CACjC,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACjG,CAAC"}
|
|
@@ -24,6 +24,10 @@ export declare class ProfileService implements PlayerProvisioning {
|
|
|
24
24
|
userId: string;
|
|
25
25
|
username: string;
|
|
26
26
|
email: string;
|
|
27
|
+
firstName: string | null;
|
|
28
|
+
lastName: string | null;
|
|
29
|
+
dateOfBirth: string | null;
|
|
30
|
+
phone: string | null;
|
|
27
31
|
country: string | null;
|
|
28
32
|
currency: string;
|
|
29
33
|
status: "active" | "self_excluded" | "dormant" | "suspended" | "closed";
|
|
@@ -40,6 +44,10 @@ export declare class ProfileService implements PlayerProvisioning {
|
|
|
40
44
|
userId: string;
|
|
41
45
|
username: string;
|
|
42
46
|
email: string;
|
|
47
|
+
firstName: string | null;
|
|
48
|
+
lastName: string | null;
|
|
49
|
+
dateOfBirth: string | null;
|
|
50
|
+
phone: string | null;
|
|
43
51
|
country: string | null;
|
|
44
52
|
currency: string;
|
|
45
53
|
status: "active" | "self_excluded" | "dormant" | "suspended" | "closed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/service/profile.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,eAAO,MAAM,wBAAwB,2BAA4B,CAAC;AAElE,qBAAa,cAAe,YAAW,kBAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,uFAAuF;IACjF,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,wBAAwB;;;;;;;IAS5E;;;;OAIG;YACW,aAAa;IAsBrB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"profile.service.d.ts","sourceRoot":"","sources":["../../../../src/pam/profile/service/profile.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,eAAO,MAAM,wBAAwB,2BAA4B,CAAC;AAElE,qBAAa,cAAe,YAAW,kBAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,uFAAuF;IACjF,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,wBAAwB;;;;;;;IAS5E;;;;OAIG;YACW,aAAa;IAsBrB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;IAI/B,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;CASzE"}
|
|
@@ -6,6 +6,10 @@ export declare function toPlayer(row: typeof player.$inferSelect, email: string,
|
|
|
6
6
|
userId: string;
|
|
7
7
|
username: string;
|
|
8
8
|
email: string;
|
|
9
|
+
firstName: string | null;
|
|
10
|
+
lastName: string | null;
|
|
11
|
+
dateOfBirth: string | null;
|
|
12
|
+
phone: string | null;
|
|
9
13
|
country: string | null;
|
|
10
14
|
currency: string;
|
|
11
15
|
status: "active" | "self_excluded" | "dormant" | "suspended" | "closed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player-mapper.d.ts","sourceRoot":"","sources":["../../../src/pam/shared/player-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"player-mapper.d.ts","sourceRoot":"","sources":["../../../src/pam/shared/player-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;EAuBxF;AAED,gFAAgF;AAChF,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;;;GAMtF"}
|
|
@@ -6,6 +6,12 @@ export function toPlayer(row, email, username) {
|
|
|
6
6
|
userId: row.userId,
|
|
7
7
|
username,
|
|
8
8
|
email,
|
|
9
|
+
firstName: row.firstName,
|
|
10
|
+
lastName: row.lastName,
|
|
11
|
+
// Already a 'YYYY-MM-DD' string - the column is a `date` in string mode, unlike the
|
|
12
|
+
// timestamps below.
|
|
13
|
+
dateOfBirth: row.dateOfBirth,
|
|
14
|
+
phone: row.phone,
|
|
9
15
|
country: row.country,
|
|
10
16
|
currency: row.currency,
|
|
11
17
|
status: row.status,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player-mapper.js","sourceRoot":"","sources":["../../../src/pam/shared/player-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIjC,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,MAAM,UAAU,QAAQ,CAAC,GAA+B,EAAE,KAAa,EAAE,QAAgB;IACvF,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ;QACR,KAAK;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QAChE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAuB,EAAE,MAAkB;IACrF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE;SAC9B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9B,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"player-mapper.js","sourceRoot":"","sources":["../../../src/pam/shared/player-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIjC,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,MAAM,UAAU,QAAQ,CAAC,GAA+B,EAAE,KAAa,EAAE,QAAgB;IACvF,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ;QACR,KAAK;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,oFAAoF;QACpF,oBAAoB;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QAChE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAuB,EAAE,MAAkB;IACrF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE;SAC9B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9B,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC"}
|
package/dist/pam/tag/plugin.d.ts
CHANGED
|
@@ -47,6 +47,47 @@ describe('createAuth', () => {
|
|
|
47
47
|
body: 'Code: 123456',
|
|
48
48
|
});
|
|
49
49
|
});
|
|
50
|
+
it('renders the existing-account template when the reset came from a sign-up', async () => {
|
|
51
|
+
// better-auth issues both through the same `forget-password` type, so without the
|
|
52
|
+
// predicate a duplicate sign-up mails a bare "Reset your password" to someone who
|
|
53
|
+
// never asked to reset anything.
|
|
54
|
+
const sendEmail = vi.fn().mockResolvedValue(undefined);
|
|
55
|
+
const templateRenderer = {
|
|
56
|
+
render: vi.fn().mockResolvedValue({ subject: 'Exists', body: 'Code: 123456' }),
|
|
57
|
+
};
|
|
58
|
+
createAuth({
|
|
59
|
+
db: {},
|
|
60
|
+
sendEmail,
|
|
61
|
+
templateRenderer,
|
|
62
|
+
isExistingAccountSignUp: (email) => email === 'test@example.com',
|
|
63
|
+
});
|
|
64
|
+
const emailOtpOpts = emailOTPMock.mock.calls[0][0];
|
|
65
|
+
await emailOtpOpts.sendVerificationOTP({
|
|
66
|
+
email: 'test@example.com',
|
|
67
|
+
otp: '123456',
|
|
68
|
+
type: 'forget-password',
|
|
69
|
+
});
|
|
70
|
+
expect(templateRenderer.render).toHaveBeenCalledWith('existingAccountSignUp', { otp: '123456', email: 'test@example.com' }, 'en');
|
|
71
|
+
});
|
|
72
|
+
it('renders the verification code template for an email-verification OTP', async () => {
|
|
73
|
+
const sendEmail = vi.fn().mockResolvedValue(undefined);
|
|
74
|
+
const templateRenderer = {
|
|
75
|
+
render: vi.fn().mockResolvedValue({ subject: 'Verify your email', body: 'code' }),
|
|
76
|
+
};
|
|
77
|
+
createAuth({ db: {}, sendEmail, templateRenderer });
|
|
78
|
+
const emailOtpOpts = emailOTPMock.mock.calls[0][0];
|
|
79
|
+
await emailOtpOpts.sendVerificationOTP({
|
|
80
|
+
email: 'test@example.com',
|
|
81
|
+
otp: '123456',
|
|
82
|
+
type: 'email-verification',
|
|
83
|
+
});
|
|
84
|
+
expect(templateRenderer.render).toHaveBeenCalledWith('verifyEmail', { otp: '123456' }, 'en');
|
|
85
|
+
expect(sendEmail).toHaveBeenCalledWith({
|
|
86
|
+
to: 'test@example.com',
|
|
87
|
+
subject: 'Verify your email',
|
|
88
|
+
body: 'code',
|
|
89
|
+
});
|
|
90
|
+
});
|
|
50
91
|
it('returns early without sending an email for other types', async () => {
|
|
51
92
|
const sendEmail = vi.fn().mockResolvedValue(undefined);
|
|
52
93
|
const templateRenderer = {
|
|
@@ -63,13 +104,31 @@ describe('createAuth', () => {
|
|
|
63
104
|
await emailOtpOpts.sendVerificationOTP({
|
|
64
105
|
email: 'test@example.com',
|
|
65
106
|
otp: '123456',
|
|
66
|
-
type: '
|
|
107
|
+
type: 'sign-in',
|
|
67
108
|
});
|
|
68
109
|
expect(getUserLanguage).not.toHaveBeenCalled();
|
|
69
110
|
expect(templateRenderer.render).not.toHaveBeenCalled();
|
|
70
111
|
expect(sendEmail).not.toHaveBeenCalled();
|
|
71
112
|
});
|
|
72
113
|
});
|
|
114
|
+
describe('email verification gate', () => {
|
|
115
|
+
it('does not require a verified address by default', () => {
|
|
116
|
+
// Unverified players stay unrestricted while the KYC toggle is off.
|
|
117
|
+
createAuth({ db: {} });
|
|
118
|
+
expect(betterAuthMock.mock.calls[0][0].emailAndPassword.requireEmailVerification).toBe(false);
|
|
119
|
+
});
|
|
120
|
+
it('requires one when the operator turns the gate on', () => {
|
|
121
|
+
createAuth({ db: {}, requireEmailVerification: true });
|
|
122
|
+
expect(betterAuthMock.mock.calls[0][0].emailAndPassword.requireEmailVerification).toBe(true);
|
|
123
|
+
});
|
|
124
|
+
it('never lets better-auth mail the code on sign-up', () => {
|
|
125
|
+
// Its sign-up hook also fires on the synthetic duplicate-email response, which
|
|
126
|
+
// would mail a live code to an address whose owner never asked for it.
|
|
127
|
+
createAuth({ db: {} });
|
|
128
|
+
expect(betterAuthMock.mock.calls[0][0].emailVerification.sendOnSignUp).toBe(false);
|
|
129
|
+
expect(betterAuthMock.mock.calls[0][0].emailVerification.autoSignInAfterVerification).toBe(true);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
73
132
|
describe('cookie domain', () => {
|
|
74
133
|
it('leaves the session cookie host-only by default', () => {
|
|
75
134
|
createAuth({ db: {} });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../../src/server/auth/__tests__/auth.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../../src/server/auth/__tests__/auth.test.ts"],"names":[],"mappings":"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"}
|