@insforge/sdk 1.2.0-dev.0 → 1.2.0-dev.1

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
@@ -521,6 +521,44 @@ var Auth = class {
521
521
  // ============================================================================
522
522
  // Session Management
523
523
  // ============================================================================
524
+ /**
525
+ * Refresh the current auth session.
526
+ *
527
+ * Browser mode:
528
+ * - Uses httpOnly refresh cookie and optional CSRF header.
529
+ *
530
+ * Server mode (`isServerMode: true`):
531
+ * - Uses mobile auth flow and requires `refreshToken` in request body.
532
+ */
533
+ async refreshSession(options) {
534
+ try {
535
+ if (this.isServerMode() && !options?.refreshToken) {
536
+ return {
537
+ data: null,
538
+ error: new InsForgeError(
539
+ "refreshToken is required when refreshing session in server mode",
540
+ 400,
541
+ "REFRESH_TOKEN_REQUIRED"
542
+ )
543
+ };
544
+ }
545
+ const csrfToken = !this.isServerMode() ? getCsrfToken() : null;
546
+ const response = await this.http.post(
547
+ this.isServerMode() ? "/api/auth/refresh?client_type=mobile" : "/api/auth/refresh",
548
+ this.isServerMode() ? { refreshToken: options?.refreshToken } : void 0,
549
+ {
550
+ headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {},
551
+ credentials: "include"
552
+ }
553
+ );
554
+ if (response.accessToken) {
555
+ this.saveSessionFromResponse(response);
556
+ }
557
+ return { data: response, error: null };
558
+ } catch (error) {
559
+ return wrapError(error, "An unexpected error occurred during session refresh");
560
+ }
561
+ }
524
562
  /**
525
563
  * Get current user, automatically waits for pending OAuth callback
526
564
  */
@@ -541,20 +579,12 @@ var Auth = class {
541
579
  return { data: { user: session.user }, error: null };
542
580
  }
543
581
  if (typeof window !== "undefined") {
544
- try {
545
- const csrfToken = getCsrfToken();
546
- const response = await this.http.post("/api/auth/refresh", void 0, {
547
- headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {},
548
- credentials: "include"
549
- });
550
- if (response.accessToken) {
551
- this.saveSessionFromResponse(response);
552
- return { data: { user: response.user ?? null }, error: null };
553
- }
554
- } catch (error) {
555
- if (error instanceof InsForgeError) {
556
- return { data: { user: null }, error };
557
- }
582
+ const { data: refreshed, error: refreshError } = await this.refreshSession();
583
+ if (refreshError) {
584
+ return { data: { user: null }, error: refreshError };
585
+ }
586
+ if (refreshed?.accessToken) {
587
+ return { data: { user: refreshed.user ?? null }, error: null };
558
588
  }
559
589
  }
560
590
  return { data: { user: null }, error: null };