clefbase 2.0.2 → 2.0.3

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.
@@ -1,163 +1,98 @@
1
1
  import { HttpClient } from "../http";
2
2
  import type { AuthUser, AuthResult } from "../types";
3
- /**
4
- * Options for `auth.signInWithGateway()`.
5
- */
6
3
  export interface GatewaySignInOptions {
7
4
  /**
8
- * The URL the gateway should redirect back to after authentication.
9
- * Defaults to `window.location.origin` (your app's root).
10
- * Must be registered as an allowed redirect for your project in the gateway.
5
+ * Where the gateway should redirect after sign-in.
6
+ * Defaults to `window.location.origin`.
7
+ * Must be registered as an allowed redirect for your project.
11
8
  */
12
9
  redirectUrl?: string;
13
10
  }
11
+ export interface OpenAuthUIOptions {
12
+ /**
13
+ * How to display the auth UI.
14
+ * - `"modal"` (default) — overlay on top of the current page
15
+ * - `"redirect"` — full-page redirect to auth.cleforyx.com
16
+ */
17
+ mode?: "modal" | "redirect";
18
+ /** Called when the user successfully signs in. */
19
+ onSuccess?: (result: AuthResult) => void;
20
+ /** Called when the modal is dismissed without signing in. */
21
+ onDismiss?: () => void;
22
+ /** Where to redirect after sign-in (redirect mode only). Defaults to current page. */
23
+ redirectUrl?: string;
24
+ }
14
25
  type AuthStateCallback = (user: AuthUser | null) => void;
15
- /**
16
- * Authentication service. Obtain via `getAuth(app)`.
17
- *
18
- * @example
19
- * const auth = getAuth(app);
20
- *
21
- * // Email / password
22
- * const { user } = await auth.signIn("alice@example.com", "pass");
23
- *
24
- * // Google — redirect to gateway, come back signed in
25
- * await auth.signInWithGateway("google");
26
- *
27
- * // On every page load, handle the gateway callback:
28
- * const result = await auth.handleGatewayCallback();
29
- * if (result) console.log("Signed in via gateway:", result.user.email);
30
- */
31
26
  export declare class Auth {
32
27
  private readonly http;
33
28
  private readonly store;
34
29
  private listeners;
35
- /** The base URL of the Cleforyx auth gateway (e.g. https://auth.cleforyx.com) */
36
30
  private readonly gatewayUrl;
37
- /** The project ID — used as the `?project=` param when redirecting to the gateway */
38
31
  private readonly projectId;
32
+ private _modalCleanup;
39
33
  constructor(http: HttpClient, gatewayUrl: string, projectId: string);
40
34
  private notify;
41
35
  private handleResult;
42
36
  /** @internal — used by Storage to attach the bearer token to upload requests */
43
37
  getAuthHeaders(): Record<string, string>;
44
- /** The currently signed-in user, or null. */
45
38
  get currentUser(): AuthUser | null;
46
- /** The raw bearer token for the active session, or null. */
47
39
  get currentToken(): string | null;
48
- /**
49
- * Create a new account with email + password.
50
- *
51
- * @example
52
- * const { user } = await auth.signUp("alice@example.com", "pass123", {
53
- * displayName: "Alice",
54
- * metadata: { role: "admin" },
55
- * });
56
- */
57
40
  signUp(email: string, password: string, profile?: {
58
41
  displayName?: string;
59
42
  photoUrl?: string;
60
43
  metadata?: Record<string, unknown>;
61
44
  }): Promise<AuthResult>;
62
- /**
63
- * Sign in with email + password.
64
- *
65
- * @example
66
- * const { user, token } = await auth.signIn("alice@example.com", "pass");
67
- */
68
45
  signIn(email: string, password: string): Promise<AuthResult>;
69
46
  /**
70
- * Redirect the user to the Cleforyx auth gateway to sign in with an
71
- * OAuth provider (currently `"google"`).
72
- *
73
- * The gateway handles the OAuth flow and redirects back to your app with
74
- * `?cfx_token=<token>&cfx_project=<projectId>` in the URL.
75
- * Call `auth.handleGatewayCallback()` on page load to complete sign-in.
47
+ * Open the Cleforyx hosted auth UI as a modal overlay on top of your page.
48
+ * Handles sign-in via email/password, Google, and magic link seamlessly.
76
49
  *
77
- * **This method never returns** it calls `window.location.href`.
50
+ * The modal closes automatically on successful sign-in and fires `onSuccess`.
78
51
  *
79
52
  * @example
80
- * // On button click:
81
- * await auth.signInWithGateway("google");
82
- *
83
- * // With a custom return URL:
84
- * await auth.signInWithGateway("google", {
85
- * redirectUrl: "https://myapp.cleforyx.com/dashboard",
53
+ * auth.openAuthUI({
54
+ * onSuccess: (result) => {
55
+ * console.log("Signed in:", result.user.email);
56
+ * navigate("/dashboard");
57
+ * },
86
58
  * });
87
59
  */
88
- signInWithGateway(provider: "google", options?: GatewaySignInOptions): Promise<never>;
60
+ openAuthUI(options?: OpenAuthUIOptions): void;
61
+ /** Close the auth modal programmatically if open. */
62
+ closeAuthUI(): void;
89
63
  /**
90
- * Check if the current URL contains a gateway callback (`?cfx_token=`).
91
- * Useful for rendering a "Finishing sign-in…" loading state before calling
92
- * `handleGatewayCallback()`.
64
+ * Redirect to the Cleforyx auth gateway for OAuth sign-in.
65
+ * Use `openAuthUI()` for a modal experience instead.
93
66
  *
94
67
  * @example
95
- * if (auth.isGatewayCallbackPending()) {
96
- * showLoadingSpinner();
97
- * }
68
+ * await auth.signInWithGateway("google");
98
69
  */
70
+ signInWithGateway(provider: "google", options?: GatewaySignInOptions): Promise<never>;
99
71
  isGatewayCallbackPending(): boolean;
100
72
  /**
101
- * Call this on every page load (ideally before rendering your app).
102
- * If the URL contains `?cfx_token=`, the token is validated against
103
- * the server, the session is saved, and the signed-in `AuthResult` is
104
- * returned. The query params are cleaned from the URL automatically.
105
- *
106
- * Returns `null` if there is no pending callback.
73
+ * Call on every page load to handle the gateway redirect callback.
74
+ * Detects `?cfx_token=` in the URL, validates it, and returns the signed-in user.
107
75
  *
108
76
  * @example
109
- * // In your app's root component or entry point:
110
77
  * useEffect(() => {
111
78
  * auth.handleGatewayCallback().then(result => {
112
- * if (result) {
113
- * console.log("Signed in:", result.user.email);
114
- * navigate("/dashboard");
115
- * }
79
+ * if (result) navigate("/dashboard");
116
80
  * });
117
81
  * }, []);
118
- *
119
- * // Or outside React:
120
- * const result = await auth.handleGatewayCallback();
121
- * if (result) showDashboard(result.user);
122
82
  */
123
83
  handleGatewayCallback(): Promise<AuthResult | null>;
124
- /** Sign out and clear the local session. */
125
84
  signOut(): Promise<void>;
126
- /** Re-fetch the current user's profile from the server and update the cache. */
127
85
  refreshCurrentUser(): Promise<AuthUser | null>;
128
- /**
129
- * Update the signed-in user's profile.
130
- *
131
- * @example
132
- * await auth.updateProfile({ displayName: "Bob", metadata: { theme: "dark" } });
133
- */
134
86
  updateProfile(updates: {
135
87
  displayName?: string;
136
88
  photoUrl?: string;
137
89
  metadata?: Record<string, unknown>;
138
90
  }): Promise<AuthUser>;
139
- /** Change password. All other sessions are invalidated server-side. */
140
91
  changePassword(currentPassword: string, newPassword: string): Promise<void>;
141
- /** Request a password-reset email. Safe to call even for unregistered addresses. */
142
92
  sendPasswordResetEmail(email: string): Promise<void>;
143
- /** Complete a password reset with the token from the reset email. */
144
93
  confirmPasswordReset(resetToken: string, newPassword: string): Promise<void>;
145
- /** Send an email verification code to the currently signed-in user. */
146
94
  sendEmailVerification(): Promise<void>;
147
- /** Verify email with the code the user received. */
148
95
  verifyEmail(code: string): Promise<AuthUser>;
149
- /**
150
- * Subscribe to auth state changes.
151
- * Fires immediately with the current user, then on every sign-in or sign-out.
152
- * Returns an unsubscribe function.
153
- *
154
- * @example
155
- * const unsubscribe = auth.onAuthStateChanged(user => {
156
- * if (user) console.log("signed in:", user.email);
157
- * else console.log("signed out");
158
- * });
159
- * unsubscribe();
160
- */
161
96
  onAuthStateChanged(callback: AuthStateCallback): () => void;
162
97
  }
163
98
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
@@ -47,27 +47,12 @@ class SessionStore {
47
47
  catch { /* ignore */ }
48
48
  }
49
49
  }
50
- /**
51
- * Authentication service. Obtain via `getAuth(app)`.
52
- *
53
- * @example
54
- * const auth = getAuth(app);
55
- *
56
- * // Email / password
57
- * const { user } = await auth.signIn("alice@example.com", "pass");
58
- *
59
- * // Google — redirect to gateway, come back signed in
60
- * await auth.signInWithGateway("google");
61
- *
62
- * // On every page load, handle the gateway callback:
63
- * const result = await auth.handleGatewayCallback();
64
- * if (result) console.log("Signed in via gateway:", result.user.email);
65
- */
66
50
  class Auth {
67
51
  constructor(http, gatewayUrl, projectId) {
68
52
  this.http = http;
69
53
  this.store = new SessionStore();
70
54
  this.listeners = [];
55
+ this._modalCleanup = null;
71
56
  this.gatewayUrl = gatewayUrl.replace(/\/+$/, "");
72
57
  this.projectId = projectId;
73
58
  this.store.load();
@@ -96,104 +81,185 @@ class Auth {
96
81
  return s ? { Authorization: `Bearer ${s.token}` } : {};
97
82
  }
98
83
  // ── Public API ────────────────────────────────────────────────────────────
99
- /** The currently signed-in user, or null. */
100
84
  get currentUser() { return this.store.load()?.user ?? null; }
101
- /** The raw bearer token for the active session, or null. */
102
85
  get currentToken() { return this.store.load()?.token ?? null; }
103
86
  // ── Email / password ──────────────────────────────────────────────────────
104
- /**
105
- * Create a new account with email + password.
106
- *
107
- * @example
108
- * const { user } = await auth.signUp("alice@example.com", "pass123", {
109
- * displayName: "Alice",
110
- * metadata: { role: "admin" },
111
- * });
112
- */
113
87
  async signUp(email, password, profile) {
114
88
  const result = await this.http.post("/signup", { email, password, ...profile });
115
89
  return this.handleResult(result);
116
90
  }
117
- /**
118
- * Sign in with email + password.
119
- *
120
- * @example
121
- * const { user, token } = await auth.signIn("alice@example.com", "pass");
122
- */
123
91
  async signIn(email, password) {
124
92
  const result = await this.http.post("/signin", { email, password });
125
93
  return this.handleResult(result);
126
94
  }
127
- // ── Gateway OAuth (redirect flow) ─────────────────────────────────────────
95
+ // ── Auth UI modal ─────────────────────────────────────────────────────────
128
96
  /**
129
- * Redirect the user to the Cleforyx auth gateway to sign in with an
130
- * OAuth provider (currently `"google"`).
131
- *
132
- * The gateway handles the OAuth flow and redirects back to your app with
133
- * `?cfx_token=<token>&cfx_project=<projectId>` in the URL.
134
- * Call `auth.handleGatewayCallback()` on page load to complete sign-in.
97
+ * Open the Cleforyx hosted auth UI as a modal overlay on top of your page.
98
+ * Handles sign-in via email/password, Google, and magic link seamlessly.
135
99
  *
136
- * **This method never returns** it calls `window.location.href`.
100
+ * The modal closes automatically on successful sign-in and fires `onSuccess`.
137
101
  *
138
102
  * @example
139
- * // On button click:
140
- * await auth.signInWithGateway("google");
141
- *
142
- * // With a custom return URL:
143
- * await auth.signInWithGateway("google", {
144
- * redirectUrl: "https://myapp.cleforyx.com/dashboard",
103
+ * auth.openAuthUI({
104
+ * onSuccess: (result) => {
105
+ * console.log("Signed in:", result.user.email);
106
+ * navigate("/dashboard");
107
+ * },
145
108
  * });
146
109
  */
147
- async signInWithGateway(provider, options) {
110
+ openAuthUI(options = {}) {
148
111
  if (typeof window === "undefined") {
149
- throw new types_1.ClefbaseError("signInWithGateway() requires a browser environment.", "UNSUPPORTED_ENVIRONMENT");
112
+ throw new types_1.ClefbaseError("openAuthUI() requires a browser environment.", "UNSUPPORTED_ENVIRONMENT");
150
113
  }
151
- const redirectUrl = options?.redirectUrl ?? window.location.origin;
114
+ const { mode = "modal", onSuccess, onDismiss, redirectUrl } = options;
115
+ const currentUrl = window.location.href;
116
+ const returnUrl = redirectUrl ?? currentUrl;
152
117
  const params = new URLSearchParams({
153
118
  project: this.projectId,
154
- redirect: redirectUrl,
119
+ redirect: returnUrl,
120
+ embed: "popup",
155
121
  });
156
- window.location.href = `${this.gatewayUrl}/${provider}?${params.toString()}`;
157
- // This line is unreachable but TypeScript needs it for `never` return type
158
- return new Promise(() => { });
122
+ const authUrl = `${this.gatewayUrl}/login?${params}`;
123
+ if (mode === "redirect") {
124
+ window.location.href = authUrl;
125
+ return;
126
+ }
127
+ // ── Modal mode ──────────────────────────────────────────────────────────
128
+ // Inject styles once
129
+ if (!document.getElementById("cfx-modal-styles")) {
130
+ const style = document.createElement("style");
131
+ style.id = "cfx-modal-styles";
132
+ style.textContent = `
133
+ @keyframes cfxFadeIn { from { opacity: 0 } to { opacity: 1 } }
134
+ @keyframes cfxSlideUp { from { transform: translateY(20px); opacity: 0 } to { transform: none; opacity: 1 } }
135
+ #cfx-auth-overlay {
136
+ position: fixed; inset: 0; z-index: 999999;
137
+ background: rgba(15,23,42,0.6); backdrop-filter: blur(4px);
138
+ display: flex; align-items: center; justify-content: center;
139
+ animation: cfxFadeIn 0.18s ease;
140
+ padding: 16px; box-sizing: border-box;
141
+ }
142
+ #cfx-auth-card {
143
+ background: white; border-radius: 20px;
144
+ box-shadow: 0 24px 64px rgba(0,0,0,0.2);
145
+ overflow: hidden; width: 100%; max-width: 460px;
146
+ animation: cfxSlideUp 0.22s ease; position: relative;
147
+ }
148
+ #cfx-auth-frame {
149
+ width: 100%; height: 560px; border: none; display: block;
150
+ }
151
+ #cfx-auth-close {
152
+ position: absolute; top: 14px; right: 16px;
153
+ background: rgba(0,0,0,0.06); border: none;
154
+ width: 28px; height: 28px; border-radius: 50%;
155
+ font-size: 16px; line-height: 1; cursor: pointer;
156
+ display: flex; align-items: center; justify-content: center;
157
+ color: #64748b; z-index: 1; transition: background 0.15s;
158
+ }
159
+ #cfx-auth-close:hover { background: rgba(0,0,0,0.12); }
160
+ `;
161
+ document.head.appendChild(style);
162
+ }
163
+ // Create overlay
164
+ const overlay = document.createElement("div");
165
+ overlay.id = "cfx-auth-overlay";
166
+ const card = document.createElement("div");
167
+ card.id = "cfx-auth-card";
168
+ const closeBtn = document.createElement("button");
169
+ closeBtn.id = "cfx-auth-close";
170
+ closeBtn.innerHTML = "&#x2715;";
171
+ closeBtn.setAttribute("aria-label", "Close");
172
+ const iframe = document.createElement("iframe");
173
+ iframe.id = "cfx-auth-frame";
174
+ iframe.src = authUrl;
175
+ iframe.setAttribute("allow", "identity-credentials-get");
176
+ card.appendChild(closeBtn);
177
+ card.appendChild(iframe);
178
+ overlay.appendChild(card);
179
+ document.body.appendChild(overlay);
180
+ // Prevent body scroll
181
+ const prevOverflow = document.body.style.overflow;
182
+ document.body.style.overflow = "hidden";
183
+ const cleanup = () => {
184
+ overlay.remove();
185
+ document.body.style.overflow = prevOverflow;
186
+ window.removeEventListener("message", messageHandler);
187
+ this._modalCleanup = null;
188
+ };
189
+ const messageHandler = async (e) => {
190
+ if (e.data?.source !== "cleforyx-auth" || e.data?.type !== "auth_success")
191
+ return;
192
+ const { token, user: rawUser } = e.data;
193
+ if (!token)
194
+ return;
195
+ cleanup();
196
+ // Build a full AuthResult — fetch fresh user data to get expiresAt
197
+ // Use the public /me endpoint (no API key needed, just dbId + bearer)
198
+ try {
199
+ const serverUrl = this.http.getBaseUrl().replace(/\/auth$/, "");
200
+ const res = await fetch(`${serverUrl}/auth/public/me?dbId=${encodeURIComponent(this.projectId)}`, {
201
+ headers: { Authorization: `Bearer ${token}` },
202
+ });
203
+ const user = res.ok ? await res.json() : rawUser;
204
+ const expiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString();
205
+ const result = { user, token, session: { token, expiresAt } };
206
+ this.handleResult(result);
207
+ onSuccess?.(result);
208
+ }
209
+ catch {
210
+ // Fallback: use the user data from postMessage directly
211
+ const expiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString();
212
+ const result = { user: rawUser, token, session: { token, expiresAt } };
213
+ this.handleResult(result);
214
+ onSuccess?.(result);
215
+ }
216
+ };
217
+ closeBtn.onclick = () => { cleanup(); onDismiss?.(); };
218
+ overlay.addEventListener("click", (e) => {
219
+ if (e.target === overlay) {
220
+ cleanup();
221
+ onDismiss?.();
222
+ }
223
+ });
224
+ window.addEventListener("message", messageHandler);
225
+ this._modalCleanup = cleanup;
226
+ }
227
+ /** Close the auth modal programmatically if open. */
228
+ closeAuthUI() {
229
+ this._modalCleanup?.();
159
230
  }
231
+ // ── Gateway redirect flow ─────────────────────────────────────────────────
160
232
  /**
161
- * Check if the current URL contains a gateway callback (`?cfx_token=`).
162
- * Useful for rendering a "Finishing sign-in…" loading state before calling
163
- * `handleGatewayCallback()`.
233
+ * Redirect to the Cleforyx auth gateway for OAuth sign-in.
234
+ * Use `openAuthUI()` for a modal experience instead.
164
235
  *
165
236
  * @example
166
- * if (auth.isGatewayCallbackPending()) {
167
- * showLoadingSpinner();
168
- * }
237
+ * await auth.signInWithGateway("google");
169
238
  */
239
+ async signInWithGateway(provider, options) {
240
+ if (typeof window === "undefined") {
241
+ throw new types_1.ClefbaseError("signInWithGateway() requires a browser environment.", "UNSUPPORTED_ENVIRONMENT");
242
+ }
243
+ const redirectUrl = options?.redirectUrl ?? window.location.href;
244
+ const params = new URLSearchParams({ project: this.projectId, redirect: redirectUrl });
245
+ window.location.href = `${this.gatewayUrl}/google?${params}`;
246
+ return new Promise(() => { });
247
+ }
170
248
  isGatewayCallbackPending() {
171
249
  if (typeof window === "undefined")
172
250
  return false;
173
251
  return new URLSearchParams(window.location.search).has("cfx_token");
174
252
  }
175
253
  /**
176
- * Call this on every page load (ideally before rendering your app).
177
- * If the URL contains `?cfx_token=`, the token is validated against
178
- * the server, the session is saved, and the signed-in `AuthResult` is
179
- * returned. The query params are cleaned from the URL automatically.
180
- *
181
- * Returns `null` if there is no pending callback.
254
+ * Call on every page load to handle the gateway redirect callback.
255
+ * Detects `?cfx_token=` in the URL, validates it, and returns the signed-in user.
182
256
  *
183
257
  * @example
184
- * // In your app's root component or entry point:
185
258
  * useEffect(() => {
186
259
  * auth.handleGatewayCallback().then(result => {
187
- * if (result) {
188
- * console.log("Signed in:", result.user.email);
189
- * navigate("/dashboard");
190
- * }
260
+ * if (result) navigate("/dashboard");
191
261
  * });
192
262
  * }, []);
193
- *
194
- * // Or outside React:
195
- * const result = await auth.handleGatewayCallback();
196
- * if (result) showDashboard(result.user);
197
263
  */
198
264
  async handleGatewayCallback() {
199
265
  if (typeof window === "undefined")
@@ -202,33 +268,25 @@ class Auth {
202
268
  const token = params.get("cfx_token");
203
269
  if (!token)
204
270
  return null;
205
- // Clean the token + project params from the URL immediately so they
206
- // aren't reprocessed on refresh or shared in links
271
+ // Clean URL
207
272
  params.delete("cfx_token");
208
273
  params.delete("cfx_project");
209
- const cleanSearch = params.toString();
210
- const cleanUrl = window.location.pathname + (cleanSearch ? `?${cleanSearch}` : "");
211
- window.history.replaceState({}, "", cleanUrl);
212
- // Validate the token against the server and fetch the full user object
274
+ window.history.replaceState({}, "", window.location.pathname + (params.toString() ? `?${params}` : ""));
275
+ // Use /auth/public/me no API key needed, just dbId + bearer
276
+ const serverUrl = this.http.getBaseUrl().replace(/\/auth$/, "");
213
277
  try {
214
- const user = await this.http.get("/me", { Authorization: `Bearer ${token}` });
215
- // We don't have an expiresAt from the URL — fetch it from /me is enough
216
- // for the session; use a generous 30-day default matching server config
278
+ const res = await fetch(`${serverUrl}/auth/public/me?dbId=${encodeURIComponent(this.projectId)}`, { headers: { Authorization: `Bearer ${token}` } });
279
+ if (!res.ok)
280
+ throw new Error(`${res.status} ${res.statusText}`);
281
+ const user = await res.json();
217
282
  const expiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString();
218
- const result = {
219
- user,
220
- token,
221
- session: { token, expiresAt },
222
- };
223
- return this.handleResult(result);
283
+ return this.handleResult({ user, token, session: { token, expiresAt } });
224
284
  }
225
285
  catch (err) {
226
- // Token was invalid or expired — don't sign in
227
286
  throw new types_1.ClefbaseError(`Gateway callback failed: ${err.message}`, "GATEWAY_CALLBACK_ERROR");
228
287
  }
229
288
  }
230
289
  // ── Session management ────────────────────────────────────────────────────
231
- /** Sign out and clear the local session. */
232
290
  async signOut() {
233
291
  const token = this.currentToken;
234
292
  if (token) {
@@ -240,7 +298,6 @@ class Auth {
240
298
  this.store.clear();
241
299
  this.notify(null);
242
300
  }
243
- /** Re-fetch the current user's profile from the server and update the cache. */
244
301
  async refreshCurrentUser() {
245
302
  const token = this.currentToken;
246
303
  if (!token)
@@ -257,72 +314,45 @@ class Auth {
257
314
  return null;
258
315
  }
259
316
  }
260
- /**
261
- * Update the signed-in user's profile.
262
- *
263
- * @example
264
- * await auth.updateProfile({ displayName: "Bob", metadata: { theme: "dark" } });
265
- */
266
317
  async updateProfile(updates) {
267
318
  const token = this.currentToken;
268
319
  if (!token)
269
320
  throw new Error("No user is currently signed in.");
270
- const user = await this.http.patch("/me", updates, {
271
- Authorization: `Bearer ${token}`,
272
- });
321
+ const user = await this.http.patch("/me", updates, { Authorization: `Bearer ${token}` });
273
322
  const session = this.store.load();
274
323
  if (session)
275
324
  this.store.save({ ...session, user });
276
325
  this.notify(user);
277
326
  return user;
278
327
  }
279
- /** Change password. All other sessions are invalidated server-side. */
280
328
  async changePassword(currentPassword, newPassword) {
281
329
  const token = this.currentToken;
282
330
  if (!token)
283
331
  throw new Error("No user is currently signed in.");
284
332
  await this.http.post("/change-password", { currentPassword, newPassword }, { Authorization: `Bearer ${token}` });
285
333
  }
286
- /** Request a password-reset email. Safe to call even for unregistered addresses. */
287
334
  async sendPasswordResetEmail(email) {
288
335
  await this.http.post("/forgot-password", { email });
289
336
  }
290
- /** Complete a password reset with the token from the reset email. */
291
337
  async confirmPasswordReset(resetToken, newPassword) {
292
338
  await this.http.post("/reset-password", { token: resetToken, newPassword });
293
339
  }
294
- /** Send an email verification code to the currently signed-in user. */
295
340
  async sendEmailVerification() {
296
341
  const token = this.currentToken;
297
342
  if (!token)
298
343
  throw new Error("No user is currently signed in.");
299
344
  await this.http.post("/send-verification", undefined, { Authorization: `Bearer ${token}` });
300
345
  }
301
- /** Verify email with the code the user received. */
302
346
  async verifyEmail(code) {
303
347
  return this.http.post("/verify-email", { code });
304
348
  }
305
- /**
306
- * Subscribe to auth state changes.
307
- * Fires immediately with the current user, then on every sign-in or sign-out.
308
- * Returns an unsubscribe function.
309
- *
310
- * @example
311
- * const unsubscribe = auth.onAuthStateChanged(user => {
312
- * if (user) console.log("signed in:", user.email);
313
- * else console.log("signed out");
314
- * });
315
- * unsubscribe();
316
- */
317
349
  onAuthStateChanged(callback) {
318
350
  this.listeners.push(callback);
319
351
  try {
320
352
  callback(this.currentUser);
321
353
  }
322
354
  catch { /* ignore */ }
323
- return () => {
324
- this.listeners = this.listeners.filter(cb => cb !== callback);
325
- };
355
+ return () => { this.listeners = this.listeners.filter(cb => cb !== callback); };
326
356
  }
327
357
  }
328
358
  exports.Auth = Auth;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;AAEA,oCAAyC;AAUzC,MAAM,YAAY;IAAlB;QACU,YAAO,GAA4B,IAAI,CAAC;QAC/B,QAAG,GAAG,aAAa,CAAC;IAiCvC,CAAC;IA/BC,IAAY,EAAE;QACZ,IAAI,CAAC;YAAC,OAAO,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAAC,CAAC;QACzE,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,CAAmB;QACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACtD,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;gBACnD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;oBAC5C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;oBACtB,OAAO,IAAI,CAAC,OAAO,CAAC;gBACtB,CAAC;gBACD,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;CACF;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,MAAa,IAAI;IAUf,YACmB,IAAgB,EACjC,UAAkB,EAClB,SAAiB;QAFA,SAAI,GAAJ,IAAI,CAAY;QAVlB,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACpC,cAAS,GAAwB,EAAE,CAAC;QAa1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,GAAI,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,6EAA6E;IAErE,MAAM,CAAC,IAAqB;QAClC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,wCAAwC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAkB;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAM,MAAM,CAAC,KAAK;YACvB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;YACnC,IAAI,EAAO,MAAM,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gFAAgF;IAChF,cAAc;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,6EAA6E;IAE7E,6CAA6C;IAC7C,IAAI,WAAW,KAAsB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAE9E,4DAA4D;IAC5D,IAAI,YAAY,KAAoB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IAE9E,6EAA6E;IAE7E;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CACV,KAAa,EACb,QAAgB,EAChB,OAIC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAgB;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAkB,EAClB,OAA8B;QAE9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,qBAAa,CACrB,qDAAqD,EACrD,yBAAyB,CAC1B,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEnE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,OAAO,EAAG,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAE7E,2EAA2E;QAC3E,OAAO,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;OASG;IACH,wBAAwB;QACtB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,qBAAqB;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEvC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,oEAAoE;QACpE,mDAAmD;QACnD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE9C,uEAAuE;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;YAExF,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAEhF,MAAM,MAAM,GAAe;gBACzB,IAAI;gBACJ,KAAK;gBACL,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;aAC9B,CAAC;YAEF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,+CAA+C;YAC/C,MAAM,IAAI,qBAAa,CACrB,4BAA6B,GAAa,CAAC,OAAO,EAAE,EACpD,wBAAwB,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E,4CAA4C;IAC5C,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,kBAAkB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAInB;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAW,KAAK,EAAE,OAAO,EAAE;YAC3D,aAAa,EAAE,UAAU,KAAK,EAAE;SACjC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,cAAc,CAAC,eAAuB,EAAE,WAAmB;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,kBAAkB,EAClB,EAAE,eAAe,EAAE,WAAW,EAAE,EAChC,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CACrC,CAAC;IACJ,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,sBAAsB,CAAC,KAAa;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,oBAAoB,CAAC,UAAkB,EAAE,WAAmB;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,qBAAqB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,QAA2B;QAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAChE,CAAC,CAAC;IACJ,CAAC;CACF;AAvTD,oBAuTC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -35549,7 +35549,7 @@ async function promptRequired(message) {
35549
35549
  }
35550
35550
 
35551
35551
  // package.json
35552
- var version = "2.0.2";
35552
+ var version = "2.0.3";
35553
35553
 
35554
35554
  // src/cli/index.ts
35555
35555
  var program2 = new Command();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clefbase",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Firebase-style SDK and CLI for Clefbase — database, auth, storage, hosting, and functions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",