@b3dotfun/sdk 0.1.69-alpha.17 → 0.1.69-alpha.18

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 (71) hide show
  1. package/dist/cjs/anyspend/utils/chain.js +1 -1
  2. package/dist/cjs/global-account/better-auth-client.d.ts +1883 -0
  3. package/dist/cjs/global-account/better-auth-client.js +17 -0
  4. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  5. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  6. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +4 -1
  7. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +3 -2
  8. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  9. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.js +120 -0
  10. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  11. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +67 -0
  12. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +34 -0
  13. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +149 -0
  14. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +9 -3
  15. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +6 -0
  16. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +123 -0
  17. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.js +5 -1
  18. package/dist/cjs/global-account/react/components/index.d.ts +3 -0
  19. package/dist/cjs/global-account/react/components/index.js +7 -3
  20. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -0
  21. package/dist/cjs/global-account/react/hooks/index.js +4 -2
  22. package/dist/cjs/global-account/react/hooks/useBetterAuth.d.ts +969 -0
  23. package/dist/cjs/global-account/react/hooks/useBetterAuth.js +142 -0
  24. package/dist/esm/anyspend/utils/chain.js +1 -1
  25. package/dist/esm/global-account/better-auth-client.d.ts +1883 -0
  26. package/dist/esm/global-account/better-auth-client.js +13 -0
  27. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  28. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  29. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +4 -1
  30. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +3 -2
  31. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  32. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.js +115 -0
  33. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  34. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +64 -0
  35. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +34 -0
  36. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +146 -0
  37. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +9 -3
  38. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +6 -0
  39. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +120 -0
  40. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.js +5 -1
  41. package/dist/esm/global-account/react/components/index.d.ts +3 -0
  42. package/dist/esm/global-account/react/components/index.js +2 -0
  43. package/dist/esm/global-account/react/hooks/index.d.ts +1 -0
  44. package/dist/esm/global-account/react/hooks/index.js +1 -0
  45. package/dist/esm/global-account/react/hooks/useBetterAuth.d.ts +969 -0
  46. package/dist/esm/global-account/react/hooks/useBetterAuth.js +136 -0
  47. package/dist/styles/index.css +1 -1
  48. package/dist/types/global-account/better-auth-client.d.ts +1883 -0
  49. package/dist/types/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  50. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +4 -1
  51. package/dist/types/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  52. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  53. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +34 -0
  54. package/dist/types/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +6 -0
  55. package/dist/types/global-account/react/components/index.d.ts +3 -0
  56. package/dist/types/global-account/react/hooks/index.d.ts +1 -0
  57. package/dist/types/global-account/react/hooks/useBetterAuth.d.ts +969 -0
  58. package/package.json +2 -1
  59. package/src/anyspend/utils/chain.ts +1 -2
  60. package/src/global-account/better-auth-client.ts +17 -0
  61. package/src/global-account/react/components/B3Provider/B3ConfigProvider.tsx +6 -0
  62. package/src/global-account/react/components/B3Provider/B3Provider.tsx +15 -5
  63. package/src/global-account/react/components/B3Provider/BetterAuthProvider.tsx +127 -0
  64. package/src/global-account/react/components/SignInWithB3/BetterAuthResetPassword.tsx +146 -0
  65. package/src/global-account/react/components/SignInWithB3/BetterAuthSignIn.tsx +375 -0
  66. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +9 -3
  67. package/src/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.tsx +263 -0
  68. package/src/global-account/react/components/SignInWithB3/utils/signInUtils.ts +5 -1
  69. package/src/global-account/react/components/index.ts +3 -0
  70. package/src/global-account/react/hooks/index.ts +1 -0
  71. package/src/global-account/react/hooks/useBetterAuth.ts +177 -0
@@ -0,0 +1,136 @@
1
+ import app from "../../../global-account/app.js";
2
+ import { useAuthStore, useB3Config } from "../../../global-account/react/index.js";
3
+ import { debugB3React } from "../../../shared/utils/debug.js";
4
+ import { useCallback } from "react";
5
+ import { betterAuthClient } from "../../better-auth-client.js";
6
+ import { useUserQuery } from "./useUserQuery.js";
7
+ const debug = debugB3React("useBetterAuth");
8
+ /**
9
+ * Hook for authentication via Better Auth (email/password + social providers).
10
+ *
11
+ * Follows the same pattern as Thirdweb auth:
12
+ * 1. Better Auth sign-in returns a session token
13
+ * 2. Token is passed as accessToken to app.authenticate({ strategy: "better-auth" })
14
+ * 3. BetterAuthStrategy verifies the token and issues a Feathers JWT
15
+ */
16
+ export function useBetterAuth() {
17
+ const { partnerId } = useB3Config();
18
+ const { setUser } = useUserQuery();
19
+ const setIsAuthenticated = useAuthStore(state => state.setIsAuthenticated);
20
+ const setIsAuthenticating = useAuthStore(state => state.setIsAuthenticating);
21
+ const setIsConnected = useAuthStore(state => state.setIsConnected);
22
+ const setHasStartedConnecting = useAuthStore(state => state.setHasStartedConnecting);
23
+ const exchangeForFeathersJWT = useCallback(async (sessionToken) => {
24
+ debug("Exchanging Better Auth token for Feathers JWT");
25
+ const response = await app.authenticate({
26
+ strategy: "better-auth",
27
+ accessToken: sessionToken,
28
+ partnerId,
29
+ });
30
+ if (!response.user) {
31
+ throw new Error("No user returned from authentication");
32
+ }
33
+ setUser(response.user);
34
+ setIsAuthenticated(true);
35
+ setIsConnected(true);
36
+ setIsAuthenticating(false);
37
+ debug("Feathers JWT exchange successful", { userId: response.user?.userId });
38
+ return response;
39
+ }, [partnerId, setUser, setIsAuthenticated, setIsConnected, setIsAuthenticating]);
40
+ const signInWithEmail = useCallback(async (email, password) => {
41
+ debug("Signing in with email", { email });
42
+ setHasStartedConnecting(true);
43
+ setIsAuthenticating(true);
44
+ try {
45
+ const result = await betterAuthClient.signIn.email({ email, password });
46
+ if (result.error) {
47
+ throw new Error(result.error.message || "Sign in failed");
48
+ }
49
+ const token = result.data?.token;
50
+ if (!token) {
51
+ throw new Error("No session token returned from sign in");
52
+ }
53
+ return await exchangeForFeathersJWT(token);
54
+ }
55
+ catch (error) {
56
+ setIsAuthenticating(false);
57
+ debug("Sign in failed", error);
58
+ throw error;
59
+ }
60
+ }, [exchangeForFeathersJWT, setIsAuthenticating, setHasStartedConnecting]);
61
+ const signUpWithEmail = useCallback(async (email, password, name) => {
62
+ debug("Signing up with email", { email, name });
63
+ setHasStartedConnecting(true);
64
+ setIsAuthenticating(true);
65
+ try {
66
+ const result = await betterAuthClient.signUp.email({ email, password, name });
67
+ if (result.error) {
68
+ throw new Error(result.error.message || "Sign up failed");
69
+ }
70
+ const token = result.data?.token;
71
+ if (!token) {
72
+ throw new Error("No session token returned from sign up");
73
+ }
74
+ return await exchangeForFeathersJWT(token);
75
+ }
76
+ catch (error) {
77
+ setIsAuthenticating(false);
78
+ debug("Sign up failed", error);
79
+ throw error;
80
+ }
81
+ }, [exchangeForFeathersJWT, setIsAuthenticating, setHasStartedConnecting]);
82
+ const signInWithSocial = useCallback(async (provider) => {
83
+ debug("Signing in with social provider", { provider });
84
+ setHasStartedConnecting(true);
85
+ setIsAuthenticating(true);
86
+ try {
87
+ const result = await betterAuthClient.signIn.social({
88
+ provider,
89
+ callbackURL: window.location.href,
90
+ });
91
+ if (result.error) {
92
+ throw new Error(result.error.message || `${provider} sign in failed`);
93
+ }
94
+ // Social auth redirects to provider — JWT exchange happens on callback
95
+ // via BetterAuthProvider session restore
96
+ }
97
+ catch (error) {
98
+ setIsAuthenticating(false);
99
+ debug("Social sign in failed", error);
100
+ throw error;
101
+ }
102
+ }, [setIsAuthenticating, setHasStartedConnecting]);
103
+ const requestPasswordReset = useCallback(async (email, redirectTo) => {
104
+ debug("Requesting password reset", { email });
105
+ const result = await betterAuthClient.requestPasswordReset({
106
+ email,
107
+ redirectTo,
108
+ });
109
+ if (result.error) {
110
+ throw new Error(result.error.message || "Password reset request failed");
111
+ }
112
+ debug("Password reset email sent");
113
+ return result;
114
+ }, []);
115
+ const resetPassword = useCallback(async (newPassword, token) => {
116
+ debug("Resetting password");
117
+ const result = await betterAuthClient.resetPassword({
118
+ newPassword,
119
+ token,
120
+ });
121
+ if (result.error) {
122
+ throw new Error(result.error.message || "Password reset failed");
123
+ }
124
+ debug("Password reset successful");
125
+ return result;
126
+ }, []);
127
+ return {
128
+ signInWithEmail,
129
+ signUpWithEmail,
130
+ signInWithSocial,
131
+ requestPasswordReset,
132
+ resetPassword,
133
+ exchangeForFeathersJWT,
134
+ betterAuthClient,
135
+ };
136
+ }