@better-auth/infra 0.2.7 → 0.2.8
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.mts +8 -2
- package/dist/index.mjs +32 -26
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -753,7 +753,7 @@ interface DashIdRow {
|
|
|
753
753
|
id: string;
|
|
754
754
|
}
|
|
755
755
|
//#endregion
|
|
756
|
-
//#region ../../node_modules/.bun/@better-auth+scim@1.6.9+
|
|
756
|
+
//#region ../../node_modules/.bun/@better-auth+scim@1.6.9+5243a6431671e89e/node_modules/@better-auth/scim/dist/index.d.mts
|
|
757
757
|
//#region src/types.d.ts
|
|
758
758
|
interface SCIMProvider {
|
|
759
759
|
id: string;
|
|
@@ -4369,7 +4369,13 @@ interface DashCompleteInvitationResponse {
|
|
|
4369
4369
|
//#endregion
|
|
4370
4370
|
//#region src/routes/organizations/types.d.ts
|
|
4371
4371
|
type DashOrganizationUpdateResponse = Organization;
|
|
4372
|
-
|
|
4372
|
+
/** Mirrors joined `user` row fields exposed on dash org APIs. Omitted when the user has no email (e.g. phone-only). */
|
|
4373
|
+
type DashOrganizationMemberUser = {
|
|
4374
|
+
id: string;
|
|
4375
|
+
name: string;
|
|
4376
|
+
email?: string;
|
|
4377
|
+
image: string | null;
|
|
4378
|
+
};
|
|
4373
4379
|
type DashOrganizationDetailResponse = Organization & {
|
|
4374
4380
|
memberCount: number;
|
|
4375
4381
|
members?: DashOrganizationMemberUser[];
|
package/dist/index.mjs
CHANGED
|
@@ -535,7 +535,7 @@ const initSessionEvents = (tracker) => {
|
|
|
535
535
|
eventData: {
|
|
536
536
|
userId: session.userId,
|
|
537
537
|
userName: user.name,
|
|
538
|
-
userEmail: user.email,
|
|
538
|
+
userEmail: user.email ?? "unknown",
|
|
539
539
|
sessionId: session.id,
|
|
540
540
|
triggeredBy: trigger.triggeredBy,
|
|
541
541
|
triggerContext: trigger.triggerContext
|
|
@@ -621,10 +621,10 @@ const initUserEvents = (tracker) => {
|
|
|
621
621
|
trackEvent({
|
|
622
622
|
eventKey: user.id,
|
|
623
623
|
eventType: EVENT_TYPES.USER_CREATED,
|
|
624
|
-
eventDisplayName: `${user.name || user.email} signed up`,
|
|
624
|
+
eventDisplayName: `${user.name || user.email || "unknown"} signed up`,
|
|
625
625
|
eventData: {
|
|
626
626
|
userId: user.id,
|
|
627
|
-
userEmail: user.email,
|
|
627
|
+
userEmail: user.email ?? "unknown",
|
|
628
628
|
userName: user.name,
|
|
629
629
|
triggeredBy: trigger.triggeredBy,
|
|
630
630
|
triggerContext: trigger.triggerContext
|
|
@@ -642,7 +642,7 @@ const initUserEvents = (tracker) => {
|
|
|
642
642
|
eventDisplayName: "User deleted",
|
|
643
643
|
eventData: {
|
|
644
644
|
userId: user.id,
|
|
645
|
-
userEmail: user.email,
|
|
645
|
+
userEmail: user.email ?? "unknown",
|
|
646
646
|
userName: user.name,
|
|
647
647
|
triggeredBy: trigger.triggeredBy,
|
|
648
648
|
triggerContext: trigger.triggerContext
|
|
@@ -660,7 +660,7 @@ const initUserEvents = (tracker) => {
|
|
|
660
660
|
eventDisplayName: "Profile updated",
|
|
661
661
|
eventData: {
|
|
662
662
|
userId: user.id,
|
|
663
|
-
userEmail: user.email,
|
|
663
|
+
userEmail: user.email ?? "unknown",
|
|
664
664
|
userName: user.name,
|
|
665
665
|
updatedFields: Object.keys(ctx?.body || {}),
|
|
666
666
|
triggeredBy: trigger.triggeredBy,
|
|
@@ -679,7 +679,7 @@ const initUserEvents = (tracker) => {
|
|
|
679
679
|
eventDisplayName: "Profile image updated",
|
|
680
680
|
eventData: {
|
|
681
681
|
userId: user.id,
|
|
682
|
-
userEmail: user.email,
|
|
682
|
+
userEmail: user.email ?? "unknown",
|
|
683
683
|
userName: user.name,
|
|
684
684
|
triggeredBy: trigger.triggeredBy,
|
|
685
685
|
triggerContext: trigger.triggerContext
|
|
@@ -699,7 +699,7 @@ const initUserEvents = (tracker) => {
|
|
|
699
699
|
eventDisplayName: `User banned${reasonSuffix}${expiresSuffix}`,
|
|
700
700
|
eventData: {
|
|
701
701
|
userId: user.id,
|
|
702
|
-
userEmail: user.email,
|
|
702
|
+
userEmail: user.email ?? "unknown",
|
|
703
703
|
userName: user.name,
|
|
704
704
|
banned: user.banned,
|
|
705
705
|
banReason: user.banReason,
|
|
@@ -720,7 +720,7 @@ const initUserEvents = (tracker) => {
|
|
|
720
720
|
eventDisplayName: "User unbanned",
|
|
721
721
|
eventData: {
|
|
722
722
|
userId: user.id,
|
|
723
|
-
userEmail: user.email,
|
|
723
|
+
userEmail: user.email ?? "unknown",
|
|
724
724
|
userName: user.name,
|
|
725
725
|
banned: user.banned,
|
|
726
726
|
triggeredBy: trigger.triggeredBy,
|
|
@@ -739,7 +739,7 @@ const initUserEvents = (tracker) => {
|
|
|
739
739
|
eventDisplayName: "Email verified",
|
|
740
740
|
eventData: {
|
|
741
741
|
userId: user.id,
|
|
742
|
-
userEmail: user.email,
|
|
742
|
+
userEmail: user.email ?? "unknown",
|
|
743
743
|
userName: user.name,
|
|
744
744
|
triggeredBy: trigger.triggeredBy,
|
|
745
745
|
triggerContext: trigger.triggerContext
|
|
@@ -2356,7 +2356,7 @@ const initInvitationEvents = (tracker) => {
|
|
|
2356
2356
|
inviteeTeamId: invitation.teamId,
|
|
2357
2357
|
inviterId: inviter.id,
|
|
2358
2358
|
inviterName: inviter.name,
|
|
2359
|
-
inviterEmail: inviter.email,
|
|
2359
|
+
inviterEmail: inviter.email ?? "unknown",
|
|
2360
2360
|
triggeredBy: trigger.triggeredBy,
|
|
2361
2361
|
triggerContext: trigger.triggerContext
|
|
2362
2362
|
}
|
|
@@ -2376,7 +2376,7 @@ const initInvitationEvents = (tracker) => {
|
|
|
2376
2376
|
inviteeRole: invitation.role,
|
|
2377
2377
|
inviteeTeamId: invitation.teamId,
|
|
2378
2378
|
acceptedById: acceptedBy.id,
|
|
2379
|
-
acceptedByEmail: acceptedBy.email,
|
|
2379
|
+
acceptedByEmail: acceptedBy.email ?? "unknown",
|
|
2380
2380
|
acceptedByName: acceptedBy.name,
|
|
2381
2381
|
memberId: member.id,
|
|
2382
2382
|
memberRole: member.role,
|
|
@@ -2399,7 +2399,7 @@ const initInvitationEvents = (tracker) => {
|
|
|
2399
2399
|
inviteeRole: invitation.role,
|
|
2400
2400
|
inviteeTeamId: invitation.teamId,
|
|
2401
2401
|
rejectedById: rejectedBy.id,
|
|
2402
|
-
rejectedByEmail: rejectedBy.email,
|
|
2402
|
+
rejectedByEmail: rejectedBy.email ?? "unknown",
|
|
2403
2403
|
rejectedByName: rejectedBy.name,
|
|
2404
2404
|
triggeredBy: trigger.triggeredBy,
|
|
2405
2405
|
triggerContext: trigger.triggerContext
|
|
@@ -2421,7 +2421,7 @@ const initInvitationEvents = (tracker) => {
|
|
|
2421
2421
|
inviteeTeamId: invitation.teamId,
|
|
2422
2422
|
cancelledById: cancelledBy.id,
|
|
2423
2423
|
cancelledByName: cancelledBy.name,
|
|
2424
|
-
cancelledByEmail: cancelledBy.email,
|
|
2424
|
+
cancelledByEmail: cancelledBy.email ?? "unknown",
|
|
2425
2425
|
triggeredBy: trigger.triggeredBy,
|
|
2426
2426
|
triggerContext: trigger.triggerContext
|
|
2427
2427
|
}
|
|
@@ -2451,7 +2451,7 @@ const initMemberEvents = (tracker) => {
|
|
|
2451
2451
|
memberName: user.name,
|
|
2452
2452
|
role: member.role,
|
|
2453
2453
|
memberId: member.id,
|
|
2454
|
-
memberEmail: user.email,
|
|
2454
|
+
memberEmail: user.email ?? "unknown",
|
|
2455
2455
|
triggeredBy: trigger.triggeredBy,
|
|
2456
2456
|
triggerContext: trigger.triggerContext
|
|
2457
2457
|
}
|
|
@@ -2470,7 +2470,7 @@ const initMemberEvents = (tracker) => {
|
|
|
2470
2470
|
memberName: user.name,
|
|
2471
2471
|
role: member.role,
|
|
2472
2472
|
memberId: member.id,
|
|
2473
|
-
memberEmail: user.email,
|
|
2473
|
+
memberEmail: user.email ?? "unknown",
|
|
2474
2474
|
triggeredBy: trigger.triggeredBy,
|
|
2475
2475
|
triggerContext: trigger.triggerContext
|
|
2476
2476
|
}
|
|
@@ -2490,7 +2490,7 @@ const initMemberEvents = (tracker) => {
|
|
|
2490
2490
|
newRole: member.role,
|
|
2491
2491
|
oldRole: previousRole,
|
|
2492
2492
|
memberId: member.id,
|
|
2493
|
-
memberEmail: user.email,
|
|
2493
|
+
memberEmail: user.email ?? "unknown",
|
|
2494
2494
|
triggeredBy: trigger.triggeredBy,
|
|
2495
2495
|
triggerContext: trigger.triggerContext
|
|
2496
2496
|
}
|
|
@@ -2779,7 +2779,7 @@ const jwtValidateMiddleware = (options) => {
|
|
|
2779
2779
|
};
|
|
2780
2780
|
//#endregion
|
|
2781
2781
|
//#region src/version.ts
|
|
2782
|
-
const PLUGIN_VERSION = "0.2.
|
|
2782
|
+
const PLUGIN_VERSION = "0.2.8";
|
|
2783
2783
|
//#endregion
|
|
2784
2784
|
//#region src/routes/auth/config.ts
|
|
2785
2785
|
const PLUGIN_OPTIONS_EXCLUDE_KEYS = { stripe: new Set(["stripeClient"]) };
|
|
@@ -3837,7 +3837,7 @@ const listOrganizationInvitations = (options) => {
|
|
|
3837
3837
|
operator: "in"
|
|
3838
3838
|
}]
|
|
3839
3839
|
}) : [];
|
|
3840
|
-
const userByEmail = new Map(users.map((u) => [normalizeEmail(u.email, ctx.context), u]));
|
|
3840
|
+
const userByEmail = new Map(users.filter((u) => u.email != null).map((u) => [normalizeEmail(u.email, ctx.context), u]));
|
|
3841
3841
|
return invitations.map((invitation) => {
|
|
3842
3842
|
const invitationEmail = normalizeEmail(invitation.email, ctx.context);
|
|
3843
3843
|
const user = userByEmail.get(invitationEmail);
|
|
@@ -3846,7 +3846,7 @@ const listOrganizationInvitations = (options) => {
|
|
|
3846
3846
|
user: user ? {
|
|
3847
3847
|
id: user.id,
|
|
3848
3848
|
name: user.name,
|
|
3849
|
-
email: user.email,
|
|
3849
|
+
email: user.email ?? void 0,
|
|
3850
3850
|
image: user.image || null
|
|
3851
3851
|
} : null
|
|
3852
3852
|
};
|
|
@@ -3932,7 +3932,7 @@ const checkUserByEmail = (options) => {
|
|
|
3932
3932
|
user: {
|
|
3933
3933
|
id: user.id,
|
|
3934
3934
|
name: user.name,
|
|
3935
|
-
email: user.email,
|
|
3935
|
+
email: user.email ?? void 0,
|
|
3936
3936
|
image: user.image ?? null
|
|
3937
3937
|
},
|
|
3938
3938
|
isAlreadyMember: !!existingMember
|
|
@@ -4088,18 +4088,18 @@ const listOrganizationMembers = (options) => {
|
|
|
4088
4088
|
for (const m of members) {
|
|
4089
4089
|
const joinedUser = Array.isArray(m.user) ? m.user[0] : m.user;
|
|
4090
4090
|
if (!joinedUser) continue;
|
|
4091
|
-
const invitation = invitationByEmail.get(joinedUser.email.toLowerCase());
|
|
4091
|
+
const invitation = joinedUser.email ? invitationByEmail.get(joinedUser.email.toLowerCase()) : void 0;
|
|
4092
4092
|
const inviter = invitation ? inviterById.get(invitation.inviterId) : void 0;
|
|
4093
4093
|
const user = {
|
|
4094
4094
|
id: joinedUser.id,
|
|
4095
|
-
email: joinedUser.email,
|
|
4095
|
+
email: joinedUser.email ?? void 0,
|
|
4096
4096
|
name: joinedUser.name,
|
|
4097
4097
|
image: joinedUser.image ?? null
|
|
4098
4098
|
};
|
|
4099
4099
|
const invitedBy = inviter ? {
|
|
4100
4100
|
id: inviter.id,
|
|
4101
4101
|
name: inviter.name,
|
|
4102
|
-
email: inviter.email,
|
|
4102
|
+
email: inviter.email ?? void 0,
|
|
4103
4103
|
image: inviter.image ?? null
|
|
4104
4104
|
} : null;
|
|
4105
4105
|
result.push({
|
|
@@ -4542,8 +4542,8 @@ const listOrganizations = (options) => {
|
|
|
4542
4542
|
const members = organization.member.map((m) => userMap.get(m.userId)).filter((u) => u !== void 0).map((u) => ({
|
|
4543
4543
|
id: u.id,
|
|
4544
4544
|
name: u.name,
|
|
4545
|
-
email: u.email,
|
|
4546
|
-
image: u.image
|
|
4545
|
+
email: u.email ?? void 0,
|
|
4546
|
+
image: u.image ?? null
|
|
4547
4547
|
}));
|
|
4548
4548
|
const { member: _members, ...org } = organization;
|
|
4549
4549
|
return {
|
|
@@ -5285,7 +5285,7 @@ const listTeamMembers = (options) => {
|
|
|
5285
5285
|
user: user ? {
|
|
5286
5286
|
id: user.id,
|
|
5287
5287
|
name: user.name,
|
|
5288
|
-
email: user.email,
|
|
5288
|
+
email: user.email ?? void 0,
|
|
5289
5289
|
image: user.image ?? null
|
|
5290
5290
|
} : null
|
|
5291
5291
|
};
|
|
@@ -7365,6 +7365,7 @@ const sendVerificationEmail = (options) => createAuthEndpoint("/dash/send-verifi
|
|
|
7365
7365
|
const user = await ctx.context.internalAdapter.findUserById(userId);
|
|
7366
7366
|
if (!user) throw ctx.error("NOT_FOUND", { message: "User not found" });
|
|
7367
7367
|
if (user.emailVerified) throw ctx.error("BAD_REQUEST", { message: "Email is already verified" });
|
|
7368
|
+
if (!user.email) throw ctx.error("BAD_REQUEST", { message: "User has no associated email address" });
|
|
7368
7369
|
if (!ctx.context.options.emailVerification?.sendVerificationEmail) throw ctx.error("BAD_REQUEST", { message: "Email verification is not enabled" });
|
|
7369
7370
|
await sendVerificationEmailFn({
|
|
7370
7371
|
...ctx,
|
|
@@ -7401,6 +7402,10 @@ const sendManyVerificationEmails = (options) => {
|
|
|
7401
7402
|
});
|
|
7402
7403
|
if (chunk.length - users.length > 0) for (const id of chunk.filter((id) => !users.some((u) => u.id === id))) skippedEmailUserIds.add(id);
|
|
7403
7404
|
for (const result of await Promise.allSettled(users.map(async (user) => {
|
|
7405
|
+
if (!user.email) return {
|
|
7406
|
+
success: false,
|
|
7407
|
+
id: user.id
|
|
7408
|
+
};
|
|
7404
7409
|
try {
|
|
7405
7410
|
await sendVerificationEmailFn({
|
|
7406
7411
|
...ctx,
|
|
@@ -7440,6 +7445,7 @@ const sendResetPasswordEmail = (options) => createAuthEndpoint("/dash/send-reset
|
|
|
7440
7445
|
const { userId } = ctx.context.payload;
|
|
7441
7446
|
const user = await ctx.context.internalAdapter.findUserById(userId);
|
|
7442
7447
|
if (!user) throw ctx.error("NOT_FOUND", { message: "User not found" });
|
|
7448
|
+
if (!user.email) throw ctx.error("BAD_REQUEST", { message: "User has no associated email address" });
|
|
7443
7449
|
ctx.body.redirectTo = ctx.body.callbackUrl;
|
|
7444
7450
|
ctx.body.email = user.email;
|
|
7445
7451
|
return await requestPasswordReset(ctx);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@better-auth/infra",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "Dashboard and analytics plugin for Better Auth",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"@better-fetch/fetch": "^1.1.21",
|
|
79
79
|
"better-call": "^1.3.3",
|
|
80
80
|
"jose": "^6.1.0",
|
|
81
|
-
"libphonenumber-js": "^1.
|
|
81
|
+
"libphonenumber-js": "^1.13.1"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
84
|
"better-auth": ">=1.4.0",
|