@insforge/nextjs 0.6.9 → 0.7.0

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.mjs CHANGED
@@ -5,19 +5,6 @@ import { createContext, useContext, useEffect, useState, useCallback, useRef } f
5
5
  import { createClient } from "@insforge/sdk";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  var InsforgeContext = createContext(void 0);
8
- function getTokenFromSDK() {
9
- console.log("[InsforgeProvider] Getting token from SDK");
10
- if (typeof window === "undefined") return null;
11
- console.log("[InsforgeProvider] Window:", window);
12
- try {
13
- const token = localStorage.getItem("insforge-auth-token");
14
- console.log("[InsforgeProvider] Token:", token);
15
- return token;
16
- } catch (error) {
17
- console.error("[InsforgeProvider] Error getting token from SDK:", error);
18
- return null;
19
- }
20
- }
21
8
  async function syncTokenToCookie(token) {
22
9
  try {
23
10
  const response = await fetch("/api/auth", {
@@ -52,7 +39,9 @@ function InsforgeProvider({
52
39
  const [insforge] = useState(() => createClient({ baseUrl }));
53
40
  const loadAuthState = useCallback(async () => {
54
41
  try {
55
- const token = getTokenFromSDK();
42
+ const sessionResult = insforge.auth.getCurrentSession();
43
+ const session2 = sessionResult.data?.session;
44
+ const token = session2?.accessToken || null;
56
45
  if (!token) {
57
46
  setUser(null);
58
47
  setSession(null);
@@ -67,7 +56,6 @@ function InsforgeProvider({
67
56
  try {
68
57
  const cachedData = JSON.parse(cachedUserStr);
69
58
  if (cachedData.user) {
70
- console.log("[InsforgeProvider] Loading user from cache");
71
59
  const userData = {
72
60
  id: cachedData.user.id,
73
61
  email: cachedData.user.email,
@@ -97,7 +85,6 @@ function InsforgeProvider({
97
85
  }
98
86
  const userResult = await insforge.auth.getCurrentUser();
99
87
  if (userResult.data) {
100
- console.log("[InsforgeProvider] User data refreshed from API");
101
88
  const userData = {
102
89
  id: userResult.data.user.id,
103
90
  email: userResult.data.user.email,
@@ -158,28 +145,52 @@ function InsforgeProvider({
158
145
  async (email, password) => {
159
146
  const sdkResult = await insforge.auth.signInWithPassword({ email, password });
160
147
  if (sdkResult.data) {
161
- const userData = {
162
- id: sdkResult.data.user.id,
163
- email: sdkResult.data.user.email,
164
- name: sdkResult.data.user.name || void 0,
165
- createdAt: sdkResult.data.user.createdAt,
166
- updatedAt: sdkResult.data.user.updatedAt
167
- };
168
- const sessionData = {
169
- userId: sdkResult.data.user.id,
170
- token: sdkResult.data.accessToken,
171
- expiresAt: "",
172
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
173
- };
174
- setUser(userData);
175
- setSession(sessionData);
176
- if (onAuthChange) {
177
- onAuthChange(userData);
178
- }
179
- try {
180
- await syncTokenToCookie(sdkResult.data.accessToken);
181
- } catch (error) {
182
- console.error("Please add /api/auth route to your server to sync token to cookie:", error);
148
+ const userResult = await insforge.auth.getCurrentUser();
149
+ if (userResult.data) {
150
+ const userData = {
151
+ id: userResult.data.user.id,
152
+ email: userResult.data.user.email,
153
+ name: userResult.data.user.name || void 0,
154
+ createdAt: userResult.data.user.createdAt,
155
+ updatedAt: userResult.data.user.updatedAt,
156
+ ...userResult.data.profile
157
+ // Include profile fields (nickname, avatar_url, etc.)
158
+ };
159
+ const sessionData = {
160
+ userId: userResult.data.user.id,
161
+ token: sdkResult.data.accessToken || "",
162
+ expiresAt: "",
163
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
164
+ };
165
+ setUser(userData);
166
+ setSession(sessionData);
167
+ localStorage.setItem("insforge-user-profile", JSON.stringify(userResult.data));
168
+ if (onAuthChange) {
169
+ onAuthChange(userData);
170
+ }
171
+ try {
172
+ await syncTokenToCookie(sdkResult.data.accessToken || "");
173
+ } catch (error) {
174
+ console.error("Please add /api/auth route to your server to sync token to cookie:", error);
175
+ }
176
+ } else {
177
+ const userData = {
178
+ id: sdkResult.data.user.id,
179
+ email: sdkResult.data.user.email,
180
+ name: sdkResult.data.user.name || void 0,
181
+ createdAt: sdkResult.data.user.createdAt,
182
+ updatedAt: sdkResult.data.user.updatedAt
183
+ };
184
+ setUser(userData);
185
+ setSession({
186
+ userId: sdkResult.data.user.id,
187
+ token: sdkResult.data.accessToken || "",
188
+ expiresAt: "",
189
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
190
+ });
191
+ if (onAuthChange) {
192
+ onAuthChange(userData);
193
+ }
183
194
  }
184
195
  } else {
185
196
  const errorMessage = sdkResult.error?.message || "Invalid email or password";
@@ -192,27 +203,51 @@ function InsforgeProvider({
192
203
  async (email, password) => {
193
204
  const sdkResult = await insforge.auth.signUp({ email, password });
194
205
  if (sdkResult.data) {
195
- const userData = {
196
- id: sdkResult.data.user.id,
197
- email: sdkResult.data.user.email,
198
- name: sdkResult.data.user.name || void 0,
199
- createdAt: sdkResult.data.user.createdAt,
200
- updatedAt: sdkResult.data.user.updatedAt
201
- };
202
- const sessionData = {
203
- userId: sdkResult.data.user.id,
204
- token: sdkResult.data.accessToken,
205
- expiresAt: "",
206
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
207
- };
208
- setUser(userData);
209
- setSession(sessionData);
210
- if (onAuthChange) {
211
- onAuthChange(userData);
212
- }
213
- try {
214
- await syncTokenToCookie(sdkResult.data.accessToken);
215
- } catch (error) {
206
+ const userResult = await insforge.auth.getCurrentUser();
207
+ if (userResult.data) {
208
+ const userData = {
209
+ id: userResult.data.user.id,
210
+ email: userResult.data.user.email,
211
+ name: userResult.data.user.name || void 0,
212
+ createdAt: userResult.data.user.createdAt,
213
+ updatedAt: userResult.data.user.updatedAt,
214
+ ...userResult.data.profile
215
+ // Include profile fields (nickname, avatar_url, etc.)
216
+ };
217
+ const sessionData = {
218
+ userId: userResult.data.user.id,
219
+ token: sdkResult.data.accessToken || "",
220
+ expiresAt: "",
221
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
222
+ };
223
+ setUser(userData);
224
+ setSession(sessionData);
225
+ localStorage.setItem("insforge-user-profile", JSON.stringify(userResult.data));
226
+ if (onAuthChange) {
227
+ onAuthChange(userData);
228
+ }
229
+ try {
230
+ await syncTokenToCookie(sdkResult.data.accessToken || "");
231
+ } catch (error) {
232
+ }
233
+ } else {
234
+ const userData = {
235
+ id: sdkResult.data.user.id,
236
+ email: sdkResult.data.user.email,
237
+ name: sdkResult.data.user.name || void 0,
238
+ createdAt: sdkResult.data.user.createdAt,
239
+ updatedAt: sdkResult.data.user.updatedAt
240
+ };
241
+ setUser(userData);
242
+ setSession({
243
+ userId: sdkResult.data.user.id,
244
+ token: sdkResult.data.accessToken || "",
245
+ expiresAt: "",
246
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
247
+ });
248
+ if (onAuthChange) {
249
+ onAuthChange(userData);
250
+ }
216
251
  }
217
252
  } else {
218
253
  const errorMessage = sdkResult.error?.message || "Sign up failed";
@@ -300,8 +335,13 @@ function useSession() {
300
335
  return { session, isLoaded };
301
336
  }
302
337
 
338
+ // src/components/SignIn.tsx
339
+ import { useState as useState4 } from "react";
340
+ import { createClient as createClient3 } from "@insforge/sdk";
341
+
303
342
  // src/hooks/useOAuthProviders.ts
304
343
  import { useState as useState2, useEffect as useEffect2 } from "react";
344
+ import { createClient as createClient2 } from "@insforge/sdk";
305
345
  function useOAuthProviders() {
306
346
  const { baseUrl } = useInsforge();
307
347
  const [providers, setProviders] = useState2([]);
@@ -310,25 +350,21 @@ function useOAuthProviders() {
310
350
  let mounted = true;
311
351
  async function fetchProviders() {
312
352
  try {
313
- const response = await fetch(`${baseUrl}/api/auth/oauth/providers`);
314
- if (!response.ok) {
315
- if (mounted) {
316
- setProviders([]);
317
- setIsLoaded(true);
318
- }
319
- return;
320
- }
321
- const result = await response.json();
322
- if (mounted) {
323
- if (result?.data && Array.isArray(result.data)) {
324
- setProviders(result.data);
325
- } else {
326
- setProviders([]);
327
- }
328
- setIsLoaded(true);
353
+ const insforge = createClient2({ baseUrl });
354
+ const { data, error } = await insforge.auth.getOAuthProviders();
355
+ if (!mounted) return;
356
+ if (error) {
357
+ console.warn("[useOAuthProviders] Failed to fetch OAuth providers:", error);
358
+ setProviders([]);
359
+ } else if (data) {
360
+ const configuredProviders = data.filter((p) => p.isConfigured).map((p) => p.provider);
361
+ setProviders(configuredProviders);
362
+ } else {
363
+ setProviders([]);
329
364
  }
365
+ setIsLoaded(true);
330
366
  } catch (error) {
331
- console.warn("[useOAuthProviders] Failed to fetch OAuth providers:", error);
367
+ console.warn("[useOAuthProviders] Unexpected error:", error);
332
368
  if (mounted) {
333
369
  setProviders([]);
334
370
  setIsLoaded(true);
@@ -343,10 +379,6 @@ function useOAuthProviders() {
343
379
  return { providers, isLoaded };
344
380
  }
345
381
 
346
- // src/components/SignIn.tsx
347
- import { useState as useState4 } from "react";
348
- import { createClient as createClient2 } from "@insforge/sdk";
349
-
350
382
  // src/components/auth/AuthBranding.tsx
351
383
  import Link from "next/link";
352
384
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
@@ -941,7 +973,7 @@ function SignIn({
941
973
  const [error, setError] = useState4("");
942
974
  const [loading, setLoading] = useState4(false);
943
975
  const [oauthLoading, setOauthLoading] = useState4(null);
944
- const insforge = useState4(() => createClient2({ baseUrl }))[0];
976
+ const insforge = useState4(() => createClient3({ baseUrl }))[0];
945
977
  async function handleSubmit(e) {
946
978
  e.preventDefault();
947
979
  setLoading(true);
@@ -970,7 +1002,6 @@ function SignIn({
970
1002
  provider,
971
1003
  redirectTo
972
1004
  });
973
- console.log("handleOAuth result", result);
974
1005
  } catch (err) {
975
1006
  const errorMessage = err.message || `${provider} sign in failed`;
976
1007
  setError(errorMessage);
@@ -1035,7 +1066,7 @@ function SignIn({
1035
1066
 
1036
1067
  // src/components/SignUp.tsx
1037
1068
  import { useState as useState5 } from "react";
1038
- import { createClient as createClient3 } from "@insforge/sdk";
1069
+ import { createClient as createClient4 } from "@insforge/sdk";
1039
1070
  import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
1040
1071
  function SignUp({
1041
1072
  afterSignUpUrl = "/",
@@ -1065,7 +1096,7 @@ function SignUp({
1065
1096
  const [error, setError] = useState5("");
1066
1097
  const [loading, setLoading] = useState5(false);
1067
1098
  const [oauthLoading, setOauthLoading] = useState5(null);
1068
- const insforge = useState5(() => createClient3({ baseUrl }))[0];
1099
+ const insforge = useState5(() => createClient4({ baseUrl }))[0];
1069
1100
  async function handleCredentialsSubmit(e) {
1070
1101
  e.preventDefault();
1071
1102
  setLoading(true);
@@ -1308,7 +1339,6 @@ export {
1308
1339
  isProviderSupported,
1309
1340
  useAuth,
1310
1341
  useInsforge,
1311
- useOAuthProviders,
1312
1342
  useSession,
1313
1343
  useUser,
1314
1344
  validatePasswordStrength