@myrjfa/state 1.1.0 → 1.1.2
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/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/lib/actions/actions.d.ts +56 -7
- package/dist/lib/actions/actions.d.ts.map +1 -1
- package/dist/lib/actions/actions.js +50 -10
- package/dist/lib/actions/auth.d.ts +12 -2
- package/dist/lib/actions/auth.d.ts.map +1 -1
- package/dist/lib/actions/chat.d.ts +80 -11
- package/dist/lib/actions/chat.d.ts.map +1 -1
- package/dist/lib/actions/chat.js +81 -20
- package/dist/lib/actions/fetcher.d.ts +0 -3
- package/dist/lib/actions/fetcher.d.ts.map +1 -1
- package/dist/lib/actions/fetcher.js +44 -6
- package/dist/lib/{severActions.d.ts → actions/serverActions.d.ts} +1 -1
- package/dist/lib/actions/serverActions.d.ts.map +1 -0
- package/dist/lib/actions/{severActions.js → serverActions.js} +3 -0
- package/dist/lib/actions/user.d.ts +23 -0
- package/dist/lib/actions/user.d.ts.map +1 -0
- package/dist/lib/actions/user.js +55 -0
- package/dist/lib/authSessionManager.d.ts.map +1 -1
- package/dist/lib/authSessionManager.js +14 -7
- package/dist/lib/context/ChatContext.d.ts +7 -0
- package/dist/lib/context/ChatContext.d.ts.map +1 -1
- package/dist/lib/context/ChatContext.js +121 -11
- package/dist/lib/models/blog.d.ts +3 -2
- package/dist/lib/models/blog.d.ts.map +1 -1
- package/dist/lib/models/chat.d.ts +32 -7
- package/dist/lib/models/chat.d.ts.map +1 -1
- package/dist/lib/models/notifications.d.ts +94 -0
- package/dist/lib/models/notifications.d.ts.map +1 -0
- package/dist/lib/models/notifications.js +60 -0
- package/dist/lib/models/opportunities/freelance.d.ts +48 -20
- package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
- package/dist/lib/models/opportunities/internship.d.ts +48 -20
- package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
- package/dist/lib/models/opportunities/job.d.ts +58 -30
- package/dist/lib/models/opportunities/job.d.ts.map +1 -1
- package/dist/lib/models/opportunities/opportunity.d.ts +61 -33
- package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
- package/dist/lib/models/opportunities/opportunity.js +1 -0
- package/dist/lib/models/opportunities/volunteerJob.d.ts +48 -20
- package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
- package/dist/lib/models/portfolio.d.ts +2 -2
- package/dist/lib/models/props.d.ts +21 -4
- package/dist/lib/models/props.d.ts.map +1 -1
- package/dist/lib/models/user.d.ts +19 -4
- package/dist/lib/models/user.d.ts.map +1 -1
- package/dist/lib/models/user.js +5 -0
- package/dist/lib/userAtom.d.ts +24 -4
- package/dist/lib/userAtom.d.ts.map +1 -1
- package/dist/lib/userAtom.js +13 -11
- package/dist/lib/utils/fileCompression.d.ts +16 -0
- package/dist/lib/utils/fileCompression.d.ts.map +1 -0
- package/dist/lib/utils/fileCompression.js +56 -0
- package/dist/lib/utils/socialMediaUrl.d.ts +25 -0
- package/dist/lib/utils/socialMediaUrl.d.ts.map +1 -0
- package/dist/lib/utils/socialMediaUrl.js +97 -0
- package/dist/lib/utils.js +4 -4
- package/package.json +3 -1
- package/dist/lib/actions/severActions.d.ts +0 -3
- package/dist/lib/actions/severActions.d.ts.map +0 -1
- package/dist/lib/actions.d.ts +0 -141
- package/dist/lib/actions.d.ts.map +0 -1
- package/dist/lib/actions.js +0 -307
- package/dist/lib/auth.d.ts +0 -150
- package/dist/lib/auth.d.ts.map +0 -1
- package/dist/lib/auth.js +0 -125
- package/dist/lib/fetcher.d.ts +0 -9
- package/dist/lib/fetcher.d.ts.map +0 -1
- package/dist/lib/fetcher.js +0 -84
- package/dist/lib/models/notfications.d.ts +0 -26
- package/dist/lib/models/notfications.d.ts.map +0 -1
- package/dist/lib/models/notfications.js +0 -46
- package/dist/lib/models/volunteerJob.d.ts +0 -398
- package/dist/lib/models/volunteerJob.d.ts.map +0 -1
- package/dist/lib/models/volunteerJob.js +0 -152
- package/dist/lib/severActions.d.ts.map +0 -1
- package/dist/lib/severActions.js +0 -19
- package/dist/lib/socket.d.ts +0 -7
- package/dist/lib/socket.d.ts.map +0 -1
- package/dist/lib/socket.js +0 -22
|
@@ -10,22 +10,22 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
10
10
|
state: z.ZodString;
|
|
11
11
|
country: z.ZodString;
|
|
12
12
|
address: z.ZodOptional<z.ZodString>;
|
|
13
|
-
workMode: z.ZodOptional<z.ZodEnum<[
|
|
13
|
+
workMode: z.ZodOptional<z.ZodEnum<["onsite" | "remote" | "hybrid", ...("onsite" | "remote" | "hybrid")[]]>>;
|
|
14
14
|
compensation: z.ZodOptional<z.ZodObject<{
|
|
15
|
-
type: z.ZodEnum<[
|
|
15
|
+
type: z.ZodEnum<["free" | "stipend" | "salary" | "project-based", ...("free" | "stipend" | "salary" | "project-based")[]]>;
|
|
16
16
|
amount: z.ZodOptional<z.ZodNumber>;
|
|
17
17
|
currency: z.ZodEnum<[string, ...string[]]>;
|
|
18
|
-
frequency: z.ZodOptional<z.ZodEnum<[
|
|
18
|
+
frequency: z.ZodOptional<z.ZodEnum<["daily" | "weekly" | "monthly" | "yearly" | "one-time", ...("daily" | "weekly" | "monthly" | "yearly" | "one-time")[]]>>;
|
|
19
19
|
}, "strip", z.ZodTypeAny, {
|
|
20
|
-
type:
|
|
20
|
+
type: "free" | "stipend" | "salary" | "project-based";
|
|
21
21
|
currency: string;
|
|
22
22
|
amount?: number | undefined;
|
|
23
|
-
frequency?:
|
|
23
|
+
frequency?: "daily" | "weekly" | "monthly" | "yearly" | "one-time" | undefined;
|
|
24
24
|
}, {
|
|
25
|
-
type:
|
|
25
|
+
type: "free" | "stipend" | "salary" | "project-based";
|
|
26
26
|
currency: string;
|
|
27
27
|
amount?: number | undefined;
|
|
28
|
-
frequency?:
|
|
28
|
+
frequency?: "daily" | "weekly" | "monthly" | "yearly" | "one-time" | undefined;
|
|
29
29
|
}>>;
|
|
30
30
|
bondPlan: z.ZodOptional<z.ZodObject<{
|
|
31
31
|
enabled: z.ZodBoolean;
|
|
@@ -64,6 +64,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
64
64
|
answer: string;
|
|
65
65
|
}>, "many">;
|
|
66
66
|
applicationCount: z.ZodNumber;
|
|
67
|
+
pendingApplicationCount: z.ZodOptional<z.ZodNumber>;
|
|
67
68
|
views: z.ZodNumber;
|
|
68
69
|
shares: z.ZodNumber;
|
|
69
70
|
rating: z.ZodNumber;
|
|
@@ -100,7 +101,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
100
101
|
verifiedMobile: z.ZodBoolean;
|
|
101
102
|
verifiedIdCard: z.ZodOptional<z.ZodBoolean>;
|
|
102
103
|
role: z.ZodEnum<["host", "user", "admin", "hr", "sales"]>;
|
|
103
|
-
socialLinks: z.ZodOptional<z.ZodRecord<z.ZodEnum<[
|
|
104
|
+
socialLinks: z.ZodOptional<z.ZodRecord<z.ZodEnum<["instagram", "linkedin", "youtube", "googleBusiness"]>, z.ZodString>>;
|
|
104
105
|
userResume: z.ZodOptional<z.ZodString>;
|
|
105
106
|
skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
106
107
|
skill: z.ZodString;
|
|
@@ -123,6 +124,11 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
123
124
|
gstNumber: z.ZodOptional<z.ZodString>;
|
|
124
125
|
panCard: z.ZodOptional<z.ZodString>;
|
|
125
126
|
verifiedBusiness: z.ZodOptional<z.ZodEnum<["true", "false", "inProgress"]>>;
|
|
127
|
+
businessDocument: z.ZodOptional<z.ZodString>;
|
|
128
|
+
businessIdType: z.ZodOptional<z.ZodEnum<["PAN", "GST", "Udyam", "PersonalPAN"]>>;
|
|
129
|
+
businessIdNumber: z.ZodOptional<z.ZodString>;
|
|
130
|
+
businessApiVerificationStatus: z.ZodOptional<z.ZodEnum<["pending", "verified", "failed"]>>;
|
|
131
|
+
businessVerificationDenialReason: z.ZodOptional<z.ZodString>;
|
|
126
132
|
}, "strict", z.ZodTypeAny, {
|
|
127
133
|
username: string;
|
|
128
134
|
firstName: string;
|
|
@@ -153,7 +159,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
153
159
|
accessToken?: string | undefined;
|
|
154
160
|
refreshToken?: string | undefined;
|
|
155
161
|
verifiedIdCard?: boolean | undefined;
|
|
156
|
-
socialLinks?: Record<
|
|
162
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
157
163
|
userResume?: string | undefined;
|
|
158
164
|
skills?: {
|
|
159
165
|
skill: string;
|
|
@@ -170,6 +176,11 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
170
176
|
gstNumber?: string | undefined;
|
|
171
177
|
panCard?: string | undefined;
|
|
172
178
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
179
|
+
businessDocument?: string | undefined;
|
|
180
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
181
|
+
businessIdNumber?: string | undefined;
|
|
182
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
183
|
+
businessVerificationDenialReason?: string | undefined;
|
|
173
184
|
}, {
|
|
174
185
|
username: string;
|
|
175
186
|
firstName: string;
|
|
@@ -200,7 +211,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
200
211
|
accessToken?: string | undefined;
|
|
201
212
|
refreshToken?: string | undefined;
|
|
202
213
|
verifiedIdCard?: boolean | undefined;
|
|
203
|
-
socialLinks?: Record<
|
|
214
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
204
215
|
userResume?: string | undefined;
|
|
205
216
|
skills?: {
|
|
206
217
|
skill: string;
|
|
@@ -217,6 +228,11 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
217
228
|
gstNumber?: string | undefined;
|
|
218
229
|
panCard?: string | undefined;
|
|
219
230
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
231
|
+
businessDocument?: string | undefined;
|
|
232
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
233
|
+
businessIdNumber?: string | undefined;
|
|
234
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
235
|
+
businessVerificationDenialReason?: string | undefined;
|
|
220
236
|
}>>;
|
|
221
237
|
applicationObservers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
222
238
|
username: z.ZodString;
|
|
@@ -245,7 +261,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
245
261
|
opportunityType: z.ZodLiteral<"volunteer">;
|
|
246
262
|
}, "strict", z.ZodTypeAny, {
|
|
247
263
|
country: string;
|
|
248
|
-
status: "
|
|
264
|
+
status: "pending" | "draft" | "archived" | "denied" | "open" | "closed" | "deleted";
|
|
249
265
|
rating: number;
|
|
250
266
|
ratingCount: number;
|
|
251
267
|
reviewCount: number;
|
|
@@ -301,7 +317,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
301
317
|
accessToken?: string | undefined;
|
|
302
318
|
refreshToken?: string | undefined;
|
|
303
319
|
verifiedIdCard?: boolean | undefined;
|
|
304
|
-
socialLinks?: Record<
|
|
320
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
305
321
|
userResume?: string | undefined;
|
|
306
322
|
skills?: {
|
|
307
323
|
skill: string;
|
|
@@ -318,18 +334,23 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
318
334
|
gstNumber?: string | undefined;
|
|
319
335
|
panCard?: string | undefined;
|
|
320
336
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
337
|
+
businessDocument?: string | undefined;
|
|
338
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
339
|
+
businessIdNumber?: string | undefined;
|
|
340
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
341
|
+
businessVerificationDenialReason?: string | undefined;
|
|
321
342
|
};
|
|
322
343
|
adminApproval: boolean;
|
|
323
344
|
createdAt?: Date | undefined;
|
|
324
345
|
updatedAt?: Date | undefined;
|
|
325
346
|
categoryId?: string | undefined;
|
|
326
347
|
address?: string | undefined;
|
|
327
|
-
workMode?:
|
|
348
|
+
workMode?: "onsite" | "remote" | "hybrid" | undefined;
|
|
328
349
|
compensation?: {
|
|
329
|
-
type:
|
|
350
|
+
type: "free" | "stipend" | "salary" | "project-based";
|
|
330
351
|
currency: string;
|
|
331
352
|
amount?: number | undefined;
|
|
332
|
-
frequency?:
|
|
353
|
+
frequency?: "daily" | "weekly" | "monthly" | "yearly" | "one-time" | undefined;
|
|
333
354
|
} | undefined;
|
|
334
355
|
bondPlan?: {
|
|
335
356
|
enabled: boolean;
|
|
@@ -338,6 +359,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
338
359
|
hostFee?: number | undefined;
|
|
339
360
|
securityDeposit?: number | undefined;
|
|
340
361
|
} | undefined;
|
|
362
|
+
pendingApplicationCount?: number | undefined;
|
|
341
363
|
hostingType?: string | undefined;
|
|
342
364
|
applicationObservers?: {
|
|
343
365
|
username: string;
|
|
@@ -348,7 +370,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
348
370
|
}[] | undefined;
|
|
349
371
|
}, {
|
|
350
372
|
country: string;
|
|
351
|
-
status: "
|
|
373
|
+
status: "pending" | "draft" | "archived" | "denied" | "open" | "closed" | "deleted";
|
|
352
374
|
rating: number;
|
|
353
375
|
ratingCount: number;
|
|
354
376
|
reviewCount: number;
|
|
@@ -404,7 +426,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
404
426
|
accessToken?: string | undefined;
|
|
405
427
|
refreshToken?: string | undefined;
|
|
406
428
|
verifiedIdCard?: boolean | undefined;
|
|
407
|
-
socialLinks?: Record<
|
|
429
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
408
430
|
userResume?: string | undefined;
|
|
409
431
|
skills?: {
|
|
410
432
|
skill: string;
|
|
@@ -421,18 +443,23 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
421
443
|
gstNumber?: string | undefined;
|
|
422
444
|
panCard?: string | undefined;
|
|
423
445
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
446
|
+
businessDocument?: string | undefined;
|
|
447
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
448
|
+
businessIdNumber?: string | undefined;
|
|
449
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
450
|
+
businessVerificationDenialReason?: string | undefined;
|
|
424
451
|
};
|
|
425
452
|
adminApproval: boolean;
|
|
426
453
|
createdAt?: Date | undefined;
|
|
427
454
|
updatedAt?: Date | undefined;
|
|
428
455
|
categoryId?: string | undefined;
|
|
429
456
|
address?: string | undefined;
|
|
430
|
-
workMode?:
|
|
457
|
+
workMode?: "onsite" | "remote" | "hybrid" | undefined;
|
|
431
458
|
compensation?: {
|
|
432
|
-
type:
|
|
459
|
+
type: "free" | "stipend" | "salary" | "project-based";
|
|
433
460
|
currency: string;
|
|
434
461
|
amount?: number | undefined;
|
|
435
|
-
frequency?:
|
|
462
|
+
frequency?: "daily" | "weekly" | "monthly" | "yearly" | "one-time" | undefined;
|
|
436
463
|
} | undefined;
|
|
437
464
|
bondPlan?: {
|
|
438
465
|
enabled: boolean;
|
|
@@ -441,6 +468,7 @@ export declare const VolunteerOpportunitySchema: z.ZodObject<{
|
|
|
441
468
|
securityDeposit?: number | undefined;
|
|
442
469
|
commissionRate?: number | undefined;
|
|
443
470
|
} | undefined;
|
|
471
|
+
pendingApplicationCount?: number | undefined;
|
|
444
472
|
hostingType?: string | undefined;
|
|
445
473
|
applicationObservers?: {
|
|
446
474
|
username: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volunteerJob.d.ts","sourceRoot":"","sources":["../../../../src/lib/models/opportunities/volunteerJob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"volunteerJob.d.ts","sourceRoot":"","sources":["../../../../src/lib/models/opportunities/volunteerJob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErC,CAAC"}
|
|
@@ -20,10 +20,10 @@ export declare const PortfolioItemSchema: z.ZodObject<{
|
|
|
20
20
|
updatedAt: Date;
|
|
21
21
|
views: number;
|
|
22
22
|
shares: number;
|
|
23
|
+
caption: string;
|
|
23
24
|
likes: number;
|
|
24
25
|
comments: number;
|
|
25
26
|
mediaType: "image" | "video";
|
|
26
|
-
caption: string;
|
|
27
27
|
mainUrl?: string | undefined;
|
|
28
28
|
}, {
|
|
29
29
|
user: string;
|
|
@@ -33,10 +33,10 @@ export declare const PortfolioItemSchema: z.ZodObject<{
|
|
|
33
33
|
updatedAt: Date;
|
|
34
34
|
views: number;
|
|
35
35
|
shares: number;
|
|
36
|
+
caption: string;
|
|
36
37
|
likes: number;
|
|
37
38
|
comments: number;
|
|
38
39
|
mediaType: "image" | "video";
|
|
39
|
-
caption: string;
|
|
40
40
|
mainUrl?: string | undefined;
|
|
41
41
|
}>;
|
|
42
42
|
export type PortfolioItem = z.infer<typeof PortfolioItemSchema>;
|
|
@@ -17,6 +17,27 @@ export interface CardType {
|
|
|
17
17
|
desc?: string;
|
|
18
18
|
}
|
|
19
19
|
export type UserRole = 'user' | 'host' | 'admin';
|
|
20
|
+
export interface DisplayItem {
|
|
21
|
+
icon: string;
|
|
22
|
+
title: string;
|
|
23
|
+
}
|
|
24
|
+
export interface Interest {
|
|
25
|
+
type: 'opportunity' | 'package';
|
|
26
|
+
description: string;
|
|
27
|
+
preferredLocation?: string;
|
|
28
|
+
skillCategory?: string;
|
|
29
|
+
preferredDuration?: number;
|
|
30
|
+
opportunityType?: string;
|
|
31
|
+
preferredSkills?: string[];
|
|
32
|
+
preferredHostingType?: string;
|
|
33
|
+
availableFrom?: Date;
|
|
34
|
+
packageType?: string;
|
|
35
|
+
travelDates?: Date;
|
|
36
|
+
groupSize?: number;
|
|
37
|
+
preferredDifficulty?: string;
|
|
38
|
+
preferredActivities?: string[];
|
|
39
|
+
budget?: string;
|
|
40
|
+
}
|
|
20
41
|
export declare const skillsData: {
|
|
21
42
|
icon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
22
43
|
title: string;
|
|
@@ -24,9 +45,5 @@ export declare const skillsData: {
|
|
|
24
45
|
export declare const skillsOptions: {
|
|
25
46
|
title: string;
|
|
26
47
|
}[];
|
|
27
|
-
export interface DisplayItem {
|
|
28
|
-
icon: string;
|
|
29
|
-
title: string;
|
|
30
|
-
}
|
|
31
48
|
export declare const fallBackIcon = "/images/icons/miscellaneous.webp";
|
|
32
49
|
//# sourceMappingURL=props.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/lib/models/props.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;EAGhB,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/lib/models/props.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;EAGhB,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU;;;GA8BtB,CAAC;AAEF,eAAO,MAAM,aAAa;;GA+FzB,CAAC;AAEF,eAAO,MAAM,YAAY,qCAAqC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export declare const socialLinkTypes: [
|
|
2
|
+
export declare const socialLinkTypes: readonly ["instagram", "linkedin", "youtube", "googleBusiness"];
|
|
3
3
|
export declare const zroles: z.ZodEnum<["host", "user", "admin", "hr", "sales"]>;
|
|
4
4
|
export declare const UserSchema: z.ZodObject<{
|
|
5
5
|
username: z.ZodString;
|
|
@@ -31,7 +31,7 @@ export declare const UserSchema: z.ZodObject<{
|
|
|
31
31
|
verifiedMobile: z.ZodBoolean;
|
|
32
32
|
verifiedIdCard: z.ZodOptional<z.ZodBoolean>;
|
|
33
33
|
role: z.ZodEnum<["host", "user", "admin", "hr", "sales"]>;
|
|
34
|
-
socialLinks: z.ZodOptional<z.ZodRecord<z.ZodEnum<[
|
|
34
|
+
socialLinks: z.ZodOptional<z.ZodRecord<z.ZodEnum<["instagram", "linkedin", "youtube", "googleBusiness"]>, z.ZodString>>;
|
|
35
35
|
userResume: z.ZodOptional<z.ZodString>;
|
|
36
36
|
skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
37
37
|
skill: z.ZodString;
|
|
@@ -54,6 +54,11 @@ export declare const UserSchema: z.ZodObject<{
|
|
|
54
54
|
gstNumber: z.ZodOptional<z.ZodString>;
|
|
55
55
|
panCard: z.ZodOptional<z.ZodString>;
|
|
56
56
|
verifiedBusiness: z.ZodOptional<z.ZodEnum<["true", "false", "inProgress"]>>;
|
|
57
|
+
businessDocument: z.ZodOptional<z.ZodString>;
|
|
58
|
+
businessIdType: z.ZodOptional<z.ZodEnum<["PAN", "GST", "Udyam", "PersonalPAN"]>>;
|
|
59
|
+
businessIdNumber: z.ZodOptional<z.ZodString>;
|
|
60
|
+
businessApiVerificationStatus: z.ZodOptional<z.ZodEnum<["pending", "verified", "failed"]>>;
|
|
61
|
+
businessVerificationDenialReason: z.ZodOptional<z.ZodString>;
|
|
57
62
|
}, "strict", z.ZodTypeAny, {
|
|
58
63
|
username: string;
|
|
59
64
|
firstName: string;
|
|
@@ -84,7 +89,7 @@ export declare const UserSchema: z.ZodObject<{
|
|
|
84
89
|
accessToken?: string | undefined;
|
|
85
90
|
refreshToken?: string | undefined;
|
|
86
91
|
verifiedIdCard?: boolean | undefined;
|
|
87
|
-
socialLinks?: Record<
|
|
92
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
88
93
|
userResume?: string | undefined;
|
|
89
94
|
skills?: {
|
|
90
95
|
skill: string;
|
|
@@ -101,6 +106,11 @@ export declare const UserSchema: z.ZodObject<{
|
|
|
101
106
|
gstNumber?: string | undefined;
|
|
102
107
|
panCard?: string | undefined;
|
|
103
108
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
109
|
+
businessDocument?: string | undefined;
|
|
110
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
111
|
+
businessIdNumber?: string | undefined;
|
|
112
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
113
|
+
businessVerificationDenialReason?: string | undefined;
|
|
104
114
|
}, {
|
|
105
115
|
username: string;
|
|
106
116
|
firstName: string;
|
|
@@ -131,7 +141,7 @@ export declare const UserSchema: z.ZodObject<{
|
|
|
131
141
|
accessToken?: string | undefined;
|
|
132
142
|
refreshToken?: string | undefined;
|
|
133
143
|
verifiedIdCard?: boolean | undefined;
|
|
134
|
-
socialLinks?: Record<
|
|
144
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
135
145
|
userResume?: string | undefined;
|
|
136
146
|
skills?: {
|
|
137
147
|
skill: string;
|
|
@@ -148,6 +158,11 @@ export declare const UserSchema: z.ZodObject<{
|
|
|
148
158
|
gstNumber?: string | undefined;
|
|
149
159
|
panCard?: string | undefined;
|
|
150
160
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
161
|
+
businessDocument?: string | undefined;
|
|
162
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
163
|
+
businessIdNumber?: string | undefined;
|
|
164
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
165
|
+
businessVerificationDenialReason?: string | undefined;
|
|
151
166
|
}>;
|
|
152
167
|
export type User = z.infer<typeof UserSchema>;
|
|
153
168
|
export declare const sampleUser: User;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/models/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/models/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,iEAAkE,CAAC;AAE/F,eAAO,MAAM,MAAM,qDAAmD,CAAC;AAEvE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DZ,CAAC;AAEZ,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C,eAAO,MAAM,UAAU,EAAE,IAmCxB,CAAC"}
|
package/dist/lib/models/user.js
CHANGED
|
@@ -51,6 +51,11 @@ export const UserSchema = z.object({
|
|
|
51
51
|
gstNumber: z.string().optional(),
|
|
52
52
|
panCard: z.string().optional(),
|
|
53
53
|
verifiedBusiness: z.enum(["true", "false", "inProgress"]).optional(),
|
|
54
|
+
businessDocument: z.string().optional(),
|
|
55
|
+
businessIdType: z.enum(["PAN", "GST", "Udyam", "PersonalPAN"]).optional(),
|
|
56
|
+
businessIdNumber: z.string().optional(),
|
|
57
|
+
businessApiVerificationStatus: z.enum(["pending", "verified", "failed"]).optional(),
|
|
58
|
+
businessVerificationDenialReason: z.string().optional(),
|
|
54
59
|
}).strict(); // 👈 .strict() blocks unknown fields
|
|
55
60
|
export const sampleUser = {
|
|
56
61
|
username: "wanderlust_volunteer",
|
package/dist/lib/userAtom.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
31
31
|
accessToken?: string | undefined;
|
|
32
32
|
refreshToken?: string | undefined;
|
|
33
33
|
verifiedIdCard?: boolean | undefined;
|
|
34
|
-
socialLinks?: Record<
|
|
34
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
35
35
|
userResume?: string | undefined;
|
|
36
36
|
skills?: {
|
|
37
37
|
skill: string;
|
|
@@ -48,6 +48,11 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
48
48
|
gstNumber?: string | undefined;
|
|
49
49
|
panCard?: string | undefined;
|
|
50
50
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
51
|
+
businessDocument?: string | undefined;
|
|
52
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
53
|
+
businessIdNumber?: string | undefined;
|
|
54
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
55
|
+
businessVerificationDenialReason?: string | undefined;
|
|
51
56
|
} | null, [{
|
|
52
57
|
username: string;
|
|
53
58
|
firstName: string;
|
|
@@ -78,7 +83,7 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
78
83
|
accessToken?: string | undefined;
|
|
79
84
|
refreshToken?: string | undefined;
|
|
80
85
|
verifiedIdCard?: boolean | undefined;
|
|
81
|
-
socialLinks?: Record<
|
|
86
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
82
87
|
userResume?: string | undefined;
|
|
83
88
|
skills?: {
|
|
84
89
|
skill: string;
|
|
@@ -95,6 +100,11 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
95
100
|
gstNumber?: string | undefined;
|
|
96
101
|
panCard?: string | undefined;
|
|
97
102
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
103
|
+
businessDocument?: string | undefined;
|
|
104
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
105
|
+
businessIdNumber?: string | undefined;
|
|
106
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
107
|
+
businessVerificationDenialReason?: string | undefined;
|
|
98
108
|
} | typeof import("jotai/utils").RESET | ((prev: {
|
|
99
109
|
username: string;
|
|
100
110
|
firstName: string;
|
|
@@ -125,7 +135,7 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
125
135
|
accessToken?: string | undefined;
|
|
126
136
|
refreshToken?: string | undefined;
|
|
127
137
|
verifiedIdCard?: boolean | undefined;
|
|
128
|
-
socialLinks?: Record<
|
|
138
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
129
139
|
userResume?: string | undefined;
|
|
130
140
|
skills?: {
|
|
131
141
|
skill: string;
|
|
@@ -142,6 +152,11 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
142
152
|
gstNumber?: string | undefined;
|
|
143
153
|
panCard?: string | undefined;
|
|
144
154
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
155
|
+
businessDocument?: string | undefined;
|
|
156
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
157
|
+
businessIdNumber?: string | undefined;
|
|
158
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
159
|
+
businessVerificationDenialReason?: string | undefined;
|
|
145
160
|
} | null) => {
|
|
146
161
|
username: string;
|
|
147
162
|
firstName: string;
|
|
@@ -172,7 +187,7 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
172
187
|
accessToken?: string | undefined;
|
|
173
188
|
refreshToken?: string | undefined;
|
|
174
189
|
verifiedIdCard?: boolean | undefined;
|
|
175
|
-
socialLinks?: Record<
|
|
190
|
+
socialLinks?: Partial<Record<"instagram" | "linkedin" | "youtube" | "googleBusiness", string>> | undefined;
|
|
176
191
|
userResume?: string | undefined;
|
|
177
192
|
skills?: {
|
|
178
193
|
skill: string;
|
|
@@ -189,6 +204,11 @@ export declare const userAtom: import("jotai").WritableAtom<{
|
|
|
189
204
|
gstNumber?: string | undefined;
|
|
190
205
|
panCard?: string | undefined;
|
|
191
206
|
verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
|
|
207
|
+
businessDocument?: string | undefined;
|
|
208
|
+
businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
|
|
209
|
+
businessIdNumber?: string | undefined;
|
|
210
|
+
businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
|
|
211
|
+
businessVerificationDenialReason?: string | undefined;
|
|
192
212
|
} | typeof import("jotai/utils").RESET | null) | null], void>;
|
|
193
213
|
export declare const isLoggedInAtom: import("jotai").WritableAtom<boolean, [boolean | typeof import("jotai/utils").RESET | ((prev: boolean) => boolean | typeof import("jotai/utils").RESET)], void>;
|
|
194
214
|
export declare const userLoadingAtom: import("jotai").Atom<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userAtom.d.ts","sourceRoot":"","sources":["../../src/lib/userAtom.ts"],"names":[],"mappings":"AAgEA,eAAO,MAAM,sBAAsB;;CAAuB,CAAC;AAG3D,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"userAtom.d.ts","sourceRoot":"","sources":["../../src/lib/userAtom.ts"],"names":[],"mappings":"AAgEA,eAAO,MAAM,sBAAsB;;CAAuB,CAAC;AAG3D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAQpB,CAAC;AAEF,eAAO,MAAM,cAAc,iKAA6C,CAAC;AAGzE,eAAO,MAAM,eAAe,+BAM1B,CAAC;AAGH,eAAO,MAAM,yBAAyB;;CA+CrC,CAAC;AAGF,wBAAgB,cAAc,SAS7B"}
|
package/dist/lib/userAtom.js
CHANGED
|
@@ -3,7 +3,6 @@ import CryptoJS from 'crypto-js';
|
|
|
3
3
|
import { atom, getDefaultStore } from 'jotai';
|
|
4
4
|
import { atomWithStorage } from 'jotai/utils';
|
|
5
5
|
import { getCurrentUser } from './actions/actions';
|
|
6
|
-
import { validateSession } from './actions/auth';
|
|
7
6
|
const STORAGE_KEY = process.env.NEXT_PUBLIC_USER_KEY;
|
|
8
7
|
const LOGIN_KEY = process.env.NEXT_PUBLIC_LOGIN_KEY;
|
|
9
8
|
const SECRET_KEY = process.env.NEXT_PUBLIC_RACE;
|
|
@@ -77,16 +76,19 @@ export const initializeAuthSessionAtom = atom(null, async (get, set) => {
|
|
|
77
76
|
// Only run in browser
|
|
78
77
|
if (typeof window === 'undefined')
|
|
79
78
|
return;
|
|
80
|
-
// 1. Validate session (
|
|
81
|
-
const session = await validateSession();
|
|
82
|
-
if (session.success) {
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
// 1. Validate session (role-aware — host route differs from user route)
|
|
80
|
+
// const session = await validateSession();
|
|
81
|
+
// if (session.success) {
|
|
82
|
+
// Session validated successfully
|
|
83
|
+
// } else {
|
|
84
|
+
// resetAuthState();
|
|
85
|
+
// set(storageInitializedAtom, true);
|
|
86
|
+
// return;
|
|
87
|
+
// }
|
|
88
|
+
// NOTE: if validateSession fails we do NOT reset — we just fall through
|
|
89
|
+
// to cache/API. A failed ping could mean the backend is temporarily down,
|
|
90
|
+
// the user is a host (different endpoint), etc. We only clear state if we
|
|
91
|
+
// POSITIVELY know the user is logged out (getCurrentUser fails).
|
|
90
92
|
// 2. Try cache (localStorage)
|
|
91
93
|
const userData = getWithExpiry(STORAGE_KEY);
|
|
92
94
|
if (userData) {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility for client-side file compression before upload.
|
|
3
|
+
*/
|
|
4
|
+
interface CompressionOptions {
|
|
5
|
+
maxWidth?: number;
|
|
6
|
+
maxHeight?: number;
|
|
7
|
+
quality?: number;
|
|
8
|
+
mimeType?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function compressImage(file: File, options?: CompressionOptions): Promise<File>;
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a file is an image that can be compressed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isCompressibleImage(file: File): boolean;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=fileCompression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileCompression.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/fileCompression.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D/F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEvD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility for client-side file compression before upload.
|
|
3
|
+
*/
|
|
4
|
+
export async function compressImage(file, options = {}) {
|
|
5
|
+
const { maxWidth = 1920, maxHeight = 1080, quality = 0.2, mimeType = "image/jpeg" } = options;
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
const img = new Image();
|
|
8
|
+
img.src = URL.createObjectURL(file);
|
|
9
|
+
img.onload = () => {
|
|
10
|
+
URL.revokeObjectURL(img.src);
|
|
11
|
+
const canvas = document.createElement("canvas");
|
|
12
|
+
let width = img.width;
|
|
13
|
+
let height = img.height;
|
|
14
|
+
// Maintain aspect ratio
|
|
15
|
+
if (width > height) {
|
|
16
|
+
if (width > maxWidth) {
|
|
17
|
+
height *= maxWidth / width;
|
|
18
|
+
width = maxWidth;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (height > maxHeight) {
|
|
23
|
+
width *= maxHeight / height;
|
|
24
|
+
height = maxHeight;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
canvas.width = width;
|
|
28
|
+
canvas.height = height;
|
|
29
|
+
const ctx = canvas.getContext("2d");
|
|
30
|
+
if (!ctx) {
|
|
31
|
+
return reject(new Error("Could not get canvas context"));
|
|
32
|
+
}
|
|
33
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
34
|
+
canvas.toBlob((blob) => {
|
|
35
|
+
if (!blob) {
|
|
36
|
+
return reject(new Error("Canvas toBlob failed"));
|
|
37
|
+
}
|
|
38
|
+
const compressedFile = new File([blob], file.name, {
|
|
39
|
+
type: mimeType,
|
|
40
|
+
lastModified: Date.now(),
|
|
41
|
+
});
|
|
42
|
+
resolve(compressedFile);
|
|
43
|
+
}, mimeType, quality);
|
|
44
|
+
};
|
|
45
|
+
img.onerror = (err) => {
|
|
46
|
+
URL.revokeObjectURL(img.src);
|
|
47
|
+
reject(err);
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Checks if a file is an image that can be compressed.
|
|
53
|
+
*/
|
|
54
|
+
export function isCompressibleImage(file) {
|
|
55
|
+
return file.type.startsWith("image/") && !file.type.includes("svg") && !file.type.includes("gif");
|
|
56
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalizes social media input (username or partial URL) into a fully qualified URL.
|
|
3
|
+
* Handles cases where users enter just a username, handle, or partial URL.
|
|
4
|
+
*/
|
|
5
|
+
export type SocialPlatformType = 'instagram' | 'twitter' | 'linkedin' | 'facebook' | 'youtube' | 'github' | 'googleBusiness';
|
|
6
|
+
interface PlatformConfig {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
usernameRegex: RegExp;
|
|
9
|
+
urlPattern: RegExp;
|
|
10
|
+
buildUrl: (username: string) => string;
|
|
11
|
+
placeholder: string;
|
|
12
|
+
hint: string;
|
|
13
|
+
}
|
|
14
|
+
declare const PLATFORM_CONFIGS: Record<SocialPlatformType, PlatformConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* Attempts to normalize a social media input into a full URL.
|
|
17
|
+
* Returns { url, error } — url is the corrected URL or the original input, error is a message if invalid.
|
|
18
|
+
*/
|
|
19
|
+
export declare function normalizeSocialUrl(platform: SocialPlatformType, input: string): {
|
|
20
|
+
url: string;
|
|
21
|
+
error: string | null;
|
|
22
|
+
};
|
|
23
|
+
export { PLATFORM_CONFIGS };
|
|
24
|
+
export type { SocialPlatformType as SocialPlatform };
|
|
25
|
+
//# sourceMappingURL=socialMediaUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socialMediaUrl.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/socialMediaUrl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAE7H,UAAU,cAAc;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,aAAa,EAAE,MAAM,CAAC;IAEtB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAyDhE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,MAAM,GACd;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAiCvC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,kBAAkB,IAAI,cAAc,EAAE,CAAC"}
|