@opexa/portal-components 0.0.280 → 0.0.281

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -184
  2. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -184
  3. package/dist/components/KYC/utils.js +18 -18
  4. package/dist/components/SignUp/SignUpDefault/SignUpForm.js +3 -20
  5. package/dist/components/SignUp/SignUpKYC/CaptureIdDocument.js +2 -2
  6. package/dist/components/SignUp/SignUpKYC/CaptureSelfie.js +3 -3
  7. package/dist/components/SignUp/SignUpKYC/ImageUploader.js +1 -1
  8. package/dist/components/SignUp/SignUpKYC/SignUpFormKYC.js +2 -19
  9. package/dist/components/SignUp/SignUpKYC/useImageUploader.js +1 -1
  10. package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarouselItem.module.css +184 -184
  11. package/dist/components/Tournaments/TournamentsList/TournamentItem.module.css +184 -184
  12. package/dist/components/shared/IdDocumentField.client.d.ts +25 -0
  13. package/dist/components/shared/IdDocumentField.client.js +204 -0
  14. package/dist/components/shared/IdDocumentField.d.ts +2 -0
  15. package/dist/components/shared/IdDocumentField.js +11 -0
  16. package/dist/components/shared/SelfieField.client.d.ts +20 -0
  17. package/dist/components/shared/SelfieField.client.js +327 -0
  18. package/dist/components/shared/SelfieField.d.ts +2 -0
  19. package/dist/components/shared/SelfieField.js +11 -0
  20. package/dist/handlers/index.d.ts +7 -7
  21. package/dist/handlers/postTransformIdFrontImage.js +6 -21
  22. package/dist/handlers/postTransformSelfieImage.js +9 -20
  23. package/dist/handlers.d.ts +43 -0
  24. package/dist/handlers.js +297 -0
  25. package/dist/services/auth.js +4 -3
  26. package/dist/services/cmsPortal.js +2 -2
  27. package/dist/services/queries.d.ts +1 -1
  28. package/dist/services/queries.js +2574 -2570
  29. package/dist/services/wallet.js +18 -2
  30. package/dist/styles/theme.css +695 -695
  31. package/dist/ui/AlertDialog/AlertDialog.d.ts +55 -55
  32. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +5 -5
  33. package/dist/ui/Carousel/Carousel.d.ts +99 -99
  34. package/dist/ui/Carousel/carousel.recipe.d.ts +11 -11
  35. package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
  36. package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
  37. package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
  38. package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
  39. package/dist/ui/Collapsible/Collapsible.d.ts +20 -20
  40. package/dist/ui/Collapsible/collapsible.recipe.d.ts +5 -5
  41. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  42. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  43. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  44. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  45. package/dist/ui/Dialog/Dialog.d.ts +55 -55
  46. package/dist/ui/Dialog/dialog.recipe.d.ts +5 -5
  47. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  48. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  49. package/dist/ui/Field/Field.d.ts +21 -21
  50. package/dist/ui/Field/field.recipe.d.ts +3 -3
  51. package/dist/ui/Menu/Menu.d.ts +198 -198
  52. package/dist/ui/Menu/menu.recipe.d.ts +11 -11
  53. package/dist/ui/PasswordInput/PasswordInput.d.ts +18 -18
  54. package/dist/ui/PasswordInput/passwordInput.recipe.d.ts +3 -3
  55. package/dist/ui/Popover/Popover.d.ts +55 -55
  56. package/dist/ui/Popover/popover.recipe.d.ts +5 -5
  57. package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
  58. package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
  59. package/dist/ui/Select/Select.d.ts +45 -45
  60. package/dist/ui/Select/select.recipe.d.ts +3 -3
  61. package/dist/ui/Table/Table.d.ts +21 -21
  62. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  63. package/dist/ui/Table/table.recipe.d.ts +3 -3
  64. package/dist/ui/Tabs/Tabs.d.ts +15 -15
  65. package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
  66. package/package.json +163 -163
  67. package/dist/components/SignUp/SignUpKYC/PersonOverlayDesktop.d.ts +0 -7
  68. package/dist/components/SignUp/SignUpKYC/PersonOverlayDesktop.js +0 -9
  69. package/dist/components/SignUp/SignUpKYC/utils.d.ts +0 -9
  70. package/dist/components/SignUp/SignUpKYC/utils.js +0 -79
@@ -0,0 +1,297 @@
1
+ import { addDays, addMinutes, subMinutes } from 'date-fns';
2
+ import { NextResponse } from 'next/server';
3
+ import { z } from 'zod';
4
+ import { ACCESS_TOKEN_COOKIE_NAME, DOMAIN_COOKIE_NAME, DOMAIN_HEADER_KEY, RECAPTCHA_HEADER_KEY, REFRESH_TOKEN_COOKIE_NAME, } from './constants/index.js';
5
+ import { authenticate, createSession, destroySession, refreshSession, } from './services/auth.js';
6
+ const CreateSessionDefinition = z.union([
7
+ z.object({
8
+ type: z.literal('NAME_AND_PASSWORD'),
9
+ name: z.string(),
10
+ password: z.string(),
11
+ }),
12
+ z.object({
13
+ type: z.literal('MOBILE_NUMBER'),
14
+ mobileNumber: z.string(),
15
+ verificationCode: z.string(),
16
+ }),
17
+ z.object({
18
+ type: z.literal('MAYA'),
19
+ session: z.string(),
20
+ }),
21
+ z.object({
22
+ type: z.union([
23
+ z.literal('SOCIALS'),
24
+ z.literal('CABINET'),
25
+ z.literal('SINGLE_USE_TOKEN'),
26
+ ]),
27
+ token: z.string(),
28
+ }),
29
+ ]);
30
+ const AuthenticateDefinition = z.object({
31
+ type: z.literal('SECURITY_QUESTION'),
32
+ token: z.string(),
33
+ secretAnswer: z.string(),
34
+ });
35
+ export const GET = async (request, { params }) => {
36
+ const { auth } = await params;
37
+ const path = auth[0];
38
+ /*
39
+ *
40
+ * GET -> /api/health
41
+ * GET -> /api/healthcheck
42
+ * GET -> /api/health-check
43
+ *
44
+ */
45
+ if (/^health(-?check)?$/i.test(path)) {
46
+ return NextResponse.json({
47
+ ok: true,
48
+ }, {
49
+ headers: {
50
+ 'Access-Control-Allow-Origin': '*',
51
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
52
+ Pragma: 'no-cache',
53
+ Expires: '0',
54
+ },
55
+ });
56
+ }
57
+ /*
58
+ *
59
+ * GET -> /api/sessions
60
+ *
61
+ */
62
+ if (path === 'sessions') {
63
+ const accessToken = request.cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;
64
+ const refreshToken = request.cookies.get(REFRESH_TOKEN_COOKIE_NAME)?.value;
65
+ const domain = request.cookies.get(DOMAIN_COOKIE_NAME)?.value;
66
+ if (!refreshToken) {
67
+ const response = NextResponse.json({
68
+ ok: true,
69
+ data: {
70
+ domain,
71
+ status: 'unauthenticated',
72
+ },
73
+ });
74
+ response.cookies.delete(ACCESS_TOKEN_COOKIE_NAME);
75
+ response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);
76
+ return response;
77
+ }
78
+ if (!accessToken) {
79
+ try {
80
+ const data = await refreshSession({
81
+ headers: {
82
+ Authorization: `Bearer ${refreshToken}`,
83
+ },
84
+ });
85
+ const response = NextResponse.json({
86
+ ok: true,
87
+ data: {
88
+ status: 'authenticated',
89
+ domain,
90
+ token: data.accessToken,
91
+ },
92
+ });
93
+ response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, data.accessToken, {
94
+ expires: addMinutes(new Date(), 9),
95
+ httpOnly: true,
96
+ sameSite: 'strict',
97
+ });
98
+ return response;
99
+ }
100
+ catch {
101
+ const response = NextResponse.json({
102
+ ok: true,
103
+ data: {
104
+ status: 'unauthenticated',
105
+ domain,
106
+ },
107
+ });
108
+ response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);
109
+ return response;
110
+ }
111
+ }
112
+ return NextResponse.json({
113
+ ok: true,
114
+ data: {
115
+ status: 'authenticated',
116
+ domain,
117
+ token: accessToken,
118
+ },
119
+ });
120
+ }
121
+ return NextResponse.json({
122
+ ok: false,
123
+ message: 'Not found',
124
+ }, { status: 404 });
125
+ };
126
+ export const DELETE = async (request, { params }) => {
127
+ const { auth } = await params;
128
+ const path = auth[0];
129
+ /*
130
+ *
131
+ * DELETE -> /api/sessions
132
+ *
133
+ */
134
+ if (path === 'sessions') {
135
+ const accessToken = request.cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;
136
+ if (accessToken) {
137
+ await destroySession({
138
+ headers: {
139
+ Authorization: `Bearer ${accessToken}`,
140
+ },
141
+ });
142
+ }
143
+ const response = NextResponse.json({
144
+ ok: true,
145
+ });
146
+ response.cookies.delete(ACCESS_TOKEN_COOKIE_NAME);
147
+ response.cookies.delete(REFRESH_TOKEN_COOKIE_NAME);
148
+ return response;
149
+ }
150
+ return NextResponse.json({
151
+ ok: false,
152
+ message: 'Not found',
153
+ }, { status: 404 });
154
+ };
155
+ export const POST = async (request, { params }) => {
156
+ const { auth } = await params;
157
+ const path = auth[0];
158
+ /*
159
+ *
160
+ * POST -> /api/sessions
161
+ *
162
+ */
163
+ if (path === 'sessions') {
164
+ const body = await request.json();
165
+ const parsed = CreateSessionDefinition.safeParse(body);
166
+ if (!parsed.success) {
167
+ return NextResponse.json({
168
+ ok: false,
169
+ message: parsed.error.issues[0].message,
170
+ }, { status: 400 });
171
+ }
172
+ const recaptcha = request.headers.get(RECAPTCHA_HEADER_KEY);
173
+ const domain = request.headers.get(DOMAIN_HEADER_KEY);
174
+ try {
175
+ const res = await createSession(parsed.data, {
176
+ headers: {
177
+ ...(recaptcha && {
178
+ [RECAPTCHA_HEADER_KEY]: recaptcha,
179
+ }),
180
+ ...(domain && {
181
+ [DOMAIN_HEADER_KEY]: domain,
182
+ }),
183
+ },
184
+ });
185
+ if (res.authenticator) {
186
+ return NextResponse.json({
187
+ ok: true,
188
+ data: res.authenticator,
189
+ });
190
+ }
191
+ const response = NextResponse.json({ ok: true, data: null }, { status: 201 });
192
+ response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, res.accessToken, {
193
+ expires: addMinutes(new Date(), 9),
194
+ httpOnly: true,
195
+ sameSite: 'strict',
196
+ });
197
+ response.cookies.set(REFRESH_TOKEN_COOKIE_NAME, res.refreshToken, {
198
+ expires: subMinutes(addDays(new Date(), 30), 1),
199
+ httpOnly: true,
200
+ sameSite: 'strict',
201
+ });
202
+ return response;
203
+ }
204
+ catch (e) {
205
+ return NextResponse.json({
206
+ ok: false,
207
+ message: 'Unauthorized',
208
+ __error: e,
209
+ }, { status: 401 });
210
+ }
211
+ }
212
+ /*
213
+ *
214
+ * POST -> /api/authenticate
215
+ *
216
+ */
217
+ if (path === 'authenticate') {
218
+ const body = await request.json();
219
+ const parsed = AuthenticateDefinition.safeParse(body);
220
+ if (!parsed.success) {
221
+ return NextResponse.json({
222
+ ok: false,
223
+ message: parsed.error.issues[0].message,
224
+ }, { status: 400 });
225
+ }
226
+ const recaptcha = request.headers.get(RECAPTCHA_HEADER_KEY);
227
+ const domain = request.headers.get(DOMAIN_HEADER_KEY);
228
+ try {
229
+ const res = await authenticate(parsed.data, {
230
+ headers: {
231
+ ...(recaptcha && {
232
+ [RECAPTCHA_HEADER_KEY]: recaptcha,
233
+ }),
234
+ ...(domain && {
235
+ [DOMAIN_HEADER_KEY]: domain,
236
+ }),
237
+ },
238
+ });
239
+ const response = NextResponse.json({ ok: true }, { status: 201 });
240
+ response.cookies.set(ACCESS_TOKEN_COOKIE_NAME, res.accessToken, {
241
+ expires: addMinutes(new Date(), 9),
242
+ httpOnly: true,
243
+ });
244
+ response.cookies.set(REFRESH_TOKEN_COOKIE_NAME, res.refreshToken, {
245
+ expires: subMinutes(addDays(new Date(), 30), 1),
246
+ httpOnly: true,
247
+ });
248
+ return response;
249
+ }
250
+ catch (e) {
251
+ return NextResponse.json({
252
+ ok: false,
253
+ message: 'Unauthorized',
254
+ __error: e,
255
+ }, { status: 401 });
256
+ }
257
+ }
258
+ return NextResponse.json({
259
+ ok: false,
260
+ message: 'Not found',
261
+ }, { status: 404 });
262
+ };
263
+ const UpdateSessionDefinition = z.object({
264
+ domain: z.string().optional().nullable(),
265
+ });
266
+ export const PATCH = async (request, { params }) => {
267
+ const { auth } = await params;
268
+ const path = auth[0];
269
+ /*
270
+ *
271
+ * PATCH -> /api/sessions
272
+ *
273
+ */
274
+ if (path === 'sessions') {
275
+ const body = await request.json();
276
+ const parsed = UpdateSessionDefinition.safeParse(body);
277
+ if (!parsed.success) {
278
+ return NextResponse.json({
279
+ ok: false,
280
+ message: parsed.error.issues[0].message,
281
+ }, { status: 400 });
282
+ }
283
+ const response = NextResponse.json({ ok: true });
284
+ if (parsed.data.domain) {
285
+ response.cookies.set(DOMAIN_COOKIE_NAME, parsed.data.domain, {
286
+ expires: addDays(new Date(), 30),
287
+ httpOnly: true,
288
+ sameSite: 'strict',
289
+ });
290
+ }
291
+ return response;
292
+ }
293
+ return NextResponse.json({
294
+ ok: false,
295
+ message: 'Not found',
296
+ }, { status: 404 });
297
+ };
@@ -128,11 +128,12 @@ export async function destroySession(options) {
128
128
  }
129
129
  export async function getSessionHealth(options) {
130
130
  try {
131
- await httpRequest(`${AUTH_ENDPOINT}/session`, options);
132
- return true;
131
+ const res = await fetch(`${AUTH_ENDPOINT}/session`, options);
132
+ return res.ok;
133
133
  }
134
134
  catch {
135
- return false;
135
+ /* Network errors should not be logged out */
136
+ return true;
136
137
  }
137
138
  }
138
139
  export async function sendVerificationCode(input, options) {
@@ -7,7 +7,7 @@ export const getSite = cache(async (options) => {
7
7
  cache: 'force-cache',
8
8
  ...options,
9
9
  next: {
10
- revalidate: 60 * 5,
10
+ revalidate: 60 * 5 /* 5mins */,
11
11
  tags: ['site', SITE_ID],
12
12
  ...options?.next,
13
13
  },
@@ -144,7 +144,7 @@ export const getGames__next = cache(async (input, options) => {
144
144
  cache: 'force-cache',
145
145
  ...options,
146
146
  next: {
147
- revalidate: 60 * 5,
147
+ revalidate: 60 * 60 * 4 /* 4hr */,
148
148
  tags: ['games', qs],
149
149
  ...options?.next,
150
150
  },
@@ -20,7 +20,7 @@ export declare const CREATE_MAYA_WITHDRAWAL = "\n mutation CreateMayaWithdrawal
20
20
  export declare const CREATE_MAYA_APP_WITHDRAWAL = "\n mutation CreateMayaAppWithdrawal($input: CreateMayaAppWithdrawalInput!) {\n createMayaAppWithdrawal(input: $input) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidTransactionPasswordError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n ... on TransactionPasswordNotSetError {\n name: __typename\n message\n }\n }\n }\n";
21
21
  export declare const CREATE_BANK_WITHDRAWAL = "\n mutation CreateBankWithdrawal($input: CreateBankWithdrawalInput!) {\n createBankWithdrawal(input: $input) {\n ... on MobileNumberNotVerifiedError {\n name: __typename\n message\n }\n }\n }\n";
22
22
  export declare const CREATE_AIO_INSTAPAY_WITHDRAWAL = "\n mutation CreateAIOInstapayWithdrawal(\n $input: CreateAIOInstapayWithdrawalInput!\n ) {\n createAIOInstapayWithdrawal(input: $input) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on InvalidTransactionPasswordError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n ... on TransactionPasswordNotSetError {\n name: __typename\n message\n }\n }\n }\n";
23
- export declare const CREATE_VENTAJA_WITHDRAWAL = "\n mutation CreateVentajaDisbursementWithdrawal(\n $input: CreateVentajaDisbursementWithdrawalInput!\n ) {\n createVentajaDisbursementWithdrawal(input: $input) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n }\n }\n";
23
+ export declare const CREATE_VENTAJA_WITHDRAWAL = "\n mutation CreateVentajaDisbursementWithdrawal(\n $input: CreateVentajaDisbursementWithdrawalInput!\n $transactionPassword: String!\n ) {\n createVentajaDisbursementWithdrawal(\n input: $input\n transactionPassword: $transactionPassword\n ) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n }\n }\n";
24
24
  export declare const CREATE_PISO_PAY_WITHDRAWAL = "\n mutation CreatePisopayWithdrawal(\n $input: CreatePisoPayRemittanceWithdrawalInput!\n $transactionPassword: String!\n ) {\n createPisoPayRemittanceWithdrawal(\n input: $input\n transactionPassword: $transactionPassword\n ) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on InvalidTransactionPasswordError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n ... on TransactionPasswordNotSetError {\n name: __typename\n message\n }\n }\n }\n";
25
25
  export declare const CREATE_MANUAL_UPI_WITHDRAWAL = "\n mutation CreateManualUPIWithdrawal($input: CreateManualUPIWithdrawalInput!) {\n createManualUPIWithdrawal(input: $input) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n }\n }\n";
26
26
  export declare const CREATE_MANUAL_BANK_WITHDRAWAL = "\n mutation CreateManualBankWithdrawal(\n $input: CreateManualBankWithdrawalInput!\n ) {\n createManualBankWithdrawal(input: $input) {\n ... on AccountNotVerifiedError {\n name: __typename\n message\n }\n ... on InvalidWithdrawalAmountError {\n name: __typename\n message\n }\n ... on WithdrawalDailyLimitExceededError {\n name: __typename\n message\n }\n ... on NotEnoughBalanceError {\n name: __typename\n message\n }\n ... on WalletDoesNotExistError {\n name: __typename\n message\n }\n }\n }\n";