@fonderie/vue-auth 0.4.0 → 0.5.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.cjs CHANGED
@@ -20,18 +20,23 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- FonderieApiError: () => import_client7.FonderieApiError,
24
- isMfaRequired: () => import_client7.isMfaRequired,
23
+ FonderieApiError: () => import_client8.FonderieApiError,
24
+ TOKEN_KEY: () => TOKEN_KEY,
25
+ clearToken: () => clearToken,
26
+ isMfaRequired: () => import_client8.isMfaRequired,
27
+ persistToken: () => persistToken,
28
+ readToken: () => readToken,
25
29
  useForgotPassword: () => useForgotPassword,
26
30
  useLogin: () => useLogin,
27
31
  useLogout: () => useLogout,
32
+ useMfaLogin: () => useMfaLogin,
28
33
  useRegister: () => useRegister,
29
34
  useResetPassword: () => useResetPassword,
30
35
  useSession: () => useSession,
31
36
  useVerifyEmail: () => useVerifyEmail
32
37
  });
33
38
  module.exports = __toCommonJS(index_exports);
34
- var import_client7 = require("@fonderie/client");
39
+ var import_client8 = require("@fonderie/client");
35
40
 
36
41
  // src/composables/useForgotPassword.ts
37
42
  var import_client = require("@fonderie/client");
@@ -133,20 +138,20 @@ function useLogout(client) {
133
138
  return { logout, isLoading, error };
134
139
  }
135
140
 
136
- // src/composables/useRegister.ts
141
+ // src/composables/useMfaLogin.ts
137
142
  var import_client4 = require("@fonderie/client");
138
143
  var import_vue7 = require("@fonderie/vue");
139
144
  var import_vue8 = require("vue");
140
- function useRegister(client) {
141
- const auth = (0, import_vue7.useFonderieSubClient)(client, (c) => c.auth, "useRegister");
145
+ function useMfaLogin(client) {
146
+ const auth = (0, import_vue7.useFonderieSubClient)(client, (c) => c.auth, "useMfaLogin");
142
147
  const isLoading = (0, import_vue8.ref)(false);
143
148
  const error = (0, import_vue8.ref)(null);
144
149
  const data = (0, import_vue8.ref)(null);
145
- async function register(input) {
150
+ async function verifyLogin(mfaToken, code) {
146
151
  isLoading.value = true;
147
152
  error.value = null;
148
153
  try {
149
- const { result } = await auth.register(input);
154
+ const { result } = await auth.mfa.verifyLogin(mfaToken, code);
150
155
  auth.setAccessToken(result.tokens.access);
151
156
  persistToken(result.tokens.access);
152
157
  data.value = result;
@@ -159,18 +164,47 @@ function useRegister(client) {
159
164
  isLoading.value = false;
160
165
  }
161
166
  }
162
- return { register, isLoading, error, data };
167
+ return { verifyLogin, isLoading, error, data };
163
168
  }
164
169
 
165
- // src/composables/useResetPassword.ts
170
+ // src/composables/useRegister.ts
166
171
  var import_client5 = require("@fonderie/client");
167
172
  var import_vue9 = require("@fonderie/vue");
168
173
  var import_vue10 = require("vue");
169
- function useResetPassword(client) {
170
- const auth = (0, import_vue9.useFonderieSubClient)(client, (c) => c.auth, "useResetPassword");
174
+ function useRegister(client) {
175
+ const auth = (0, import_vue9.useFonderieSubClient)(client, (c) => c.auth, "useRegister");
171
176
  const isLoading = (0, import_vue10.ref)(false);
172
177
  const error = (0, import_vue10.ref)(null);
173
- const done = (0, import_vue10.ref)(false);
178
+ const data = (0, import_vue10.ref)(null);
179
+ async function register(input) {
180
+ isLoading.value = true;
181
+ error.value = null;
182
+ try {
183
+ const { result } = await auth.register(input);
184
+ auth.setAccessToken(result.tokens.access);
185
+ persistToken(result.tokens.access);
186
+ data.value = result;
187
+ return result;
188
+ } catch (err) {
189
+ const apiError = err instanceof import_client5.FonderieApiError ? err : new import_client5.FonderieApiError("unknown", String(err), 0);
190
+ error.value = apiError;
191
+ throw apiError;
192
+ } finally {
193
+ isLoading.value = false;
194
+ }
195
+ }
196
+ return { register, isLoading, error, data };
197
+ }
198
+
199
+ // src/composables/useResetPassword.ts
200
+ var import_client6 = require("@fonderie/client");
201
+ var import_vue11 = require("@fonderie/vue");
202
+ var import_vue12 = require("vue");
203
+ function useResetPassword(client) {
204
+ const auth = (0, import_vue11.useFonderieSubClient)(client, (c) => c.auth, "useResetPassword");
205
+ const isLoading = (0, import_vue12.ref)(false);
206
+ const error = (0, import_vue12.ref)(null);
207
+ const done = (0, import_vue12.ref)(false);
174
208
  async function resetPassword(input) {
175
209
  isLoading.value = true;
176
210
  error.value = null;
@@ -178,7 +212,7 @@ function useResetPassword(client) {
178
212
  await auth.resetPassword(input);
179
213
  done.value = true;
180
214
  } catch (err) {
181
- const apiError = err instanceof import_client5.FonderieApiError ? err : new import_client5.FonderieApiError("unknown", String(err), 0);
215
+ const apiError = err instanceof import_client6.FonderieApiError ? err : new import_client6.FonderieApiError("unknown", String(err), 0);
182
216
  error.value = apiError;
183
217
  throw apiError;
184
218
  } finally {
@@ -189,13 +223,13 @@ function useResetPassword(client) {
189
223
  }
190
224
 
191
225
  // src/composables/useSession.ts
192
- var import_vue11 = require("@fonderie/vue");
193
- var import_vue12 = require("vue");
226
+ var import_vue13 = require("@fonderie/vue");
227
+ var import_vue14 = require("vue");
194
228
  function useSession(client) {
195
- const auth = (0, import_vue11.useFonderieSubClient)(client, (c) => c.auth, "useSession");
196
- const user = (0, import_vue12.ref)(null);
197
- const isLoading = (0, import_vue12.ref)(true);
198
- const isAuthenticated = (0, import_vue12.ref)(false);
229
+ const auth = (0, import_vue13.useFonderieSubClient)(client, (c) => c.auth, "useSession");
230
+ const user = (0, import_vue14.ref)(null);
231
+ const isLoading = (0, import_vue14.ref)(true);
232
+ const isAuthenticated = (0, import_vue14.ref)(false);
199
233
  async function refresh() {
200
234
  isLoading.value = true;
201
235
  try {
@@ -228,14 +262,14 @@ function useSession(client) {
228
262
  }
229
263
 
230
264
  // src/composables/useVerifyEmail.ts
231
- var import_client6 = require("@fonderie/client");
232
- var import_vue13 = require("@fonderie/vue");
233
- var import_vue14 = require("vue");
265
+ var import_client7 = require("@fonderie/client");
266
+ var import_vue15 = require("@fonderie/vue");
267
+ var import_vue16 = require("vue");
234
268
  function useVerifyEmail(client) {
235
- const auth = (0, import_vue13.useFonderieSubClient)(client, (c) => c.auth, "useVerifyEmail");
236
- const isLoading = (0, import_vue14.ref)(false);
237
- const error = (0, import_vue14.ref)(null);
238
- const data = (0, import_vue14.ref)(null);
269
+ const auth = (0, import_vue15.useFonderieSubClient)(client, (c) => c.auth, "useVerifyEmail");
270
+ const isLoading = (0, import_vue16.ref)(false);
271
+ const error = (0, import_vue16.ref)(null);
272
+ const data = (0, import_vue16.ref)(null);
239
273
  async function verifyEmail(pin) {
240
274
  isLoading.value = true;
241
275
  error.value = null;
@@ -244,7 +278,7 @@ function useVerifyEmail(client) {
244
278
  data.value = result;
245
279
  return result;
246
280
  } catch (err) {
247
- const apiError = err instanceof import_client6.FonderieApiError ? err : new import_client6.FonderieApiError("unknown", String(err), 0);
281
+ const apiError = err instanceof import_client7.FonderieApiError ? err : new import_client7.FonderieApiError("unknown", String(err), 0);
248
282
  error.value = apiError;
249
283
  throw apiError;
250
284
  } finally {
@@ -256,10 +290,15 @@ function useVerifyEmail(client) {
256
290
  // Annotate the CommonJS export names for ESM import in node:
257
291
  0 && (module.exports = {
258
292
  FonderieApiError,
293
+ TOKEN_KEY,
294
+ clearToken,
259
295
  isMfaRequired,
296
+ persistToken,
297
+ readToken,
260
298
  useForgotPassword,
261
299
  useLogin,
262
300
  useLogout,
301
+ useMfaLogin,
263
302
  useRegister,
264
303
  useResetPassword,
265
304
  useSession,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/storage.ts","../src/composables/useLogout.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tILoginInput,\n\tILoginResult,\n\tIMfaRequiredResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport {\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseRegister,\n\tuseResetPassword,\n\tuseSession,\n\tuseVerifyEmail,\n} from './composables';\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useForgotPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useForgotPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst sent = ref(false);\n\n\tasync function forgotPassword(email: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.forgotPassword(email);\n\t\t\tsent.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { forgotPassword, isLoading, error, sent };\n}\n","import type { AuthClient, ILoginInput, ILoginResult, IMfaRequiredResult } from '@fonderie/client';\nimport { FonderieApiError, isMfaRequired } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useLogin(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogin');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<ILoginResult | null>(null);\n\t// Set when the account requires MFA: complete the login with\n\t// client.auth.mfa.verifyLogin(mfaPending.value.mfaToken, code).\n\tconst mfaPending = ref<IMfaRequiredResult | null>(null);\n\n\tasync function login(input: ILoginInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tmfaPending.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.login(input);\n\t\t\tif (isMfaRequired(result)) {\n\t\t\t\tmfaPending.value = result;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { login, isLoading, error, data, mfaPending };\n}\n","export const TOKEN_KEY = 'fonderie_access_token';\n\nexport function persistToken(token: string) {\n\tlocalStorage.setItem(TOKEN_KEY, token);\n}\n\nexport function clearToken() {\n\tlocalStorage.removeItem(TOKEN_KEY);\n}\n\nexport function readToken(): string | null {\n\treturn localStorage.getItem(TOKEN_KEY);\n}\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport function useLogout(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogout');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function logout(refreshToken?: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t} finally {\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { logout, isLoading, error };\n}\n","import type { AuthClient, IRegisterInput, IRegisterResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useRegister(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useRegister');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IRegisterResult | null>(null);\n\n\tasync function register(input: IRegisterInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.register(input);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { register, isLoading, error, data };\n}\n","import type { AuthClient, IResetPasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useResetPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useResetPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function resetPassword(input: IResetPasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.resetPassword(input);\n\t\t\tdone.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { resetPassword, isLoading, error, done };\n}\n","import type { AuthClient, IUserDTO } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken, readToken } from '../storage';\n\nexport function useSession(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useSession');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst isAuthenticated = ref(false);\n\n\tasync function refresh() {\n\t\tisLoading.value = true;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser();\n\t\t\tuser.value = result.user;\n\t\t\tisAuthenticated.value = true;\n\t\t} catch {\n\t\t\tuser.value = null;\n\t\t\tisAuthenticated.value = false;\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function logout(refreshToken?: string) {\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch {\n\t\t\t// Session is being torn down regardless of server response.\n\t\t}\n\t\tauth.setAccessToken(undefined);\n\t\tclearToken();\n\t\tuser.value = null;\n\t\tisAuthenticated.value = false;\n\t}\n\n\tconst token = readToken();\n\tif (token) auth.setAccessToken(token);\n\tvoid refresh();\n\n\treturn { user, isLoading, isAuthenticated, refresh, logout };\n}\n","import type { AuthClient, IVerifyEmailResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useVerifyEmail(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useVerifyEmail');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IVerifyEmailResult | null>(null);\n\n\tasync function verifyEmail(pin: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.verifyEmail(pin);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { verifyEmail, isLoading, error, data };\n}\n"],"mappings":"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","names":["import_client","import_vue","import_client","import_vue","import_client","import_vue","import_client","import_vue","import_client","import_vue","import_vue","import_client","import_vue"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/storage.ts","../src/composables/useLogout.ts","../src/composables/useMfaLogin.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tILoginInput,\n\tILoginResult,\n\tIMfaRequiredResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport type { IUseMfaLoginReturn } from './composables';\nexport {\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseMfaLogin,\n\tuseRegister,\n\tuseResetPassword,\n\tuseSession,\n\tuseVerifyEmail,\n} from './composables';\n\n// Token persistence primitives — for wiring app-level flows (e.g. the\n// client's auth.onTokensChanged) to the same storage the hooks use.\nexport { clearToken, persistToken, readToken, TOKEN_KEY } from './storage';\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useForgotPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useForgotPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst sent = ref(false);\n\n\tasync function forgotPassword(email: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.forgotPassword(email);\n\t\t\tsent.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { forgotPassword, isLoading, error, sent };\n}\n","import type { AuthClient, ILoginInput, ILoginResult, IMfaRequiredResult } from '@fonderie/client';\nimport { FonderieApiError, isMfaRequired } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useLogin(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogin');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<ILoginResult | null>(null);\n\t// Set when the account requires MFA: complete the login with\n\t// client.auth.mfa.verifyLogin(mfaPending.value.mfaToken, code).\n\tconst mfaPending = ref<IMfaRequiredResult | null>(null);\n\n\tasync function login(input: ILoginInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tmfaPending.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.login(input);\n\t\t\tif (isMfaRequired(result)) {\n\t\t\t\tmfaPending.value = result;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { login, isLoading, error, data, mfaPending };\n}\n","export const TOKEN_KEY = 'fonderie_access_token';\n\nexport function persistToken(token: string) {\n\tlocalStorage.setItem(TOKEN_KEY, token);\n}\n\nexport function clearToken() {\n\tlocalStorage.removeItem(TOKEN_KEY);\n}\n\nexport function readToken(): string | null {\n\treturn localStorage.getItem(TOKEN_KEY);\n}\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport function useLogout(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogout');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function logout(refreshToken?: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t} finally {\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { logout, isLoading, error };\n}\n","import type { AuthClient, ILoginResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport interface IUseMfaLoginReturn {\n\t// Completes a login that returned MFA_REQUIRED: verifies the TOTP code\n\t// against the temporary mfaToken from useLogin's mfaPending, then persists\n\t// the issued tokens exactly like a normal login.\n\tverifyLogin: (mfaToken: string, code: string) => Promise<ILoginResult>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<ILoginResult | null>;\n}\n\nexport function useMfaLogin(client?: AuthClient): IUseMfaLoginReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useMfaLogin');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<ILoginResult | null>(null);\n\n\tasync function verifyLogin(mfaToken: string, code: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.mfa.verifyLogin(mfaToken, code);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { verifyLogin, isLoading, error, data };\n}\n","import type { AuthClient, IRegisterInput, IRegisterResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useRegister(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useRegister');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IRegisterResult | null>(null);\n\n\tasync function register(input: IRegisterInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.register(input);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { register, isLoading, error, data };\n}\n","import type { AuthClient, IResetPasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useResetPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useResetPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function resetPassword(input: IResetPasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.resetPassword(input);\n\t\t\tdone.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { resetPassword, isLoading, error, done };\n}\n","import type { AuthClient, IUserDTO } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken, readToken } from '../storage';\n\nexport function useSession(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useSession');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst isAuthenticated = ref(false);\n\n\tasync function refresh() {\n\t\tisLoading.value = true;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser();\n\t\t\tuser.value = result.user;\n\t\t\tisAuthenticated.value = true;\n\t\t} catch {\n\t\t\tuser.value = null;\n\t\t\tisAuthenticated.value = false;\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function logout(refreshToken?: string) {\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch {\n\t\t\t// Session is being torn down regardless of server response.\n\t\t}\n\t\tauth.setAccessToken(undefined);\n\t\tclearToken();\n\t\tuser.value = null;\n\t\tisAuthenticated.value = false;\n\t}\n\n\tconst token = readToken();\n\tif (token) auth.setAccessToken(token);\n\tvoid refresh();\n\n\treturn { user, isLoading, isAuthenticated, refresh, logout };\n}\n","import type { AuthClient, IVerifyEmailResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useVerifyEmail(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useVerifyEmail');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IVerifyEmailResult | null>(null);\n\n\tasync function verifyEmail(pin: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.verifyEmail(pin);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { verifyEmail, isLoading, error, data };\n}\n"],"mappings":"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","names":["import_client","import_vue","import_client","import_vue","import_client","import_vue","import_client","import_vue","import_client","import_vue","import_client","import_vue","import_vue","import_client","import_vue"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { AuthClient, FonderieApiError, ILoginInput, ILoginResult, IMfaRequiredResult, IRegisterInput, IRegisterResult, IResetPasswordInput, IUserDTO, IVerifyEmailResult } from '@fonderie/client';
2
2
  export { AuthClient, FonderieApiError, ILoginInput, ILoginResult, IMfaRequiredResult, IRegisterInput, IRegisterResult, IResetPasswordInput, ITokens, IUserDTO, IVerifyEmailResult, isMfaRequired } from '@fonderie/client';
3
3
  import * as vue from 'vue';
4
+ import { Ref } from 'vue';
4
5
 
5
6
  declare function useForgotPassword(client?: AuthClient): {
6
7
  forgotPassword: (email: string) => Promise<void>;
@@ -105,6 +106,14 @@ declare function useLogout(client?: AuthClient): {
105
106
  error: vue.Ref<FonderieApiError | null, FonderieApiError | null>;
106
107
  };
107
108
 
109
+ interface IUseMfaLoginReturn {
110
+ verifyLogin: (mfaToken: string, code: string) => Promise<ILoginResult>;
111
+ isLoading: Ref<boolean>;
112
+ error: Ref<FonderieApiError | null>;
113
+ data: Ref<ILoginResult | null>;
114
+ }
115
+ declare function useMfaLogin(client?: AuthClient): IUseMfaLoginReturn;
116
+
108
117
  declare function useRegister(client?: AuthClient): {
109
118
  register: (input: IRegisterInput) => Promise<IRegisterResult>;
110
119
  isLoading: vue.Ref<boolean, boolean>;
@@ -284,4 +293,9 @@ declare function useVerifyEmail(client?: AuthClient): {
284
293
  } | null>;
285
294
  };
286
295
 
287
- export { useForgotPassword, useLogin, useLogout, useRegister, useResetPassword, useSession, useVerifyEmail };
296
+ declare const TOKEN_KEY = "fonderie_access_token";
297
+ declare function persistToken(token: string): void;
298
+ declare function clearToken(): void;
299
+ declare function readToken(): string | null;
300
+
301
+ export { type IUseMfaLoginReturn, TOKEN_KEY, clearToken, persistToken, readToken, useForgotPassword, useLogin, useLogout, useMfaLogin, useRegister, useResetPassword, useSession, useVerifyEmail };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { AuthClient, FonderieApiError, ILoginInput, ILoginResult, IMfaRequiredResult, IRegisterInput, IRegisterResult, IResetPasswordInput, IUserDTO, IVerifyEmailResult } from '@fonderie/client';
2
2
  export { AuthClient, FonderieApiError, ILoginInput, ILoginResult, IMfaRequiredResult, IRegisterInput, IRegisterResult, IResetPasswordInput, ITokens, IUserDTO, IVerifyEmailResult, isMfaRequired } from '@fonderie/client';
3
3
  import * as vue from 'vue';
4
+ import { Ref } from 'vue';
4
5
 
5
6
  declare function useForgotPassword(client?: AuthClient): {
6
7
  forgotPassword: (email: string) => Promise<void>;
@@ -105,6 +106,14 @@ declare function useLogout(client?: AuthClient): {
105
106
  error: vue.Ref<FonderieApiError | null, FonderieApiError | null>;
106
107
  };
107
108
 
109
+ interface IUseMfaLoginReturn {
110
+ verifyLogin: (mfaToken: string, code: string) => Promise<ILoginResult>;
111
+ isLoading: Ref<boolean>;
112
+ error: Ref<FonderieApiError | null>;
113
+ data: Ref<ILoginResult | null>;
114
+ }
115
+ declare function useMfaLogin(client?: AuthClient): IUseMfaLoginReturn;
116
+
108
117
  declare function useRegister(client?: AuthClient): {
109
118
  register: (input: IRegisterInput) => Promise<IRegisterResult>;
110
119
  isLoading: vue.Ref<boolean, boolean>;
@@ -284,4 +293,9 @@ declare function useVerifyEmail(client?: AuthClient): {
284
293
  } | null>;
285
294
  };
286
295
 
287
- export { useForgotPassword, useLogin, useLogout, useRegister, useResetPassword, useSession, useVerifyEmail };
296
+ declare const TOKEN_KEY = "fonderie_access_token";
297
+ declare function persistToken(token: string): void;
298
+ declare function clearToken(): void;
299
+ declare function readToken(): string | null;
300
+
301
+ export { type IUseMfaLoginReturn, TOKEN_KEY, clearToken, persistToken, readToken, useForgotPassword, useLogin, useLogout, useMfaLogin, useRegister, useResetPassword, useSession, useVerifyEmail };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/index.ts
2
- import { FonderieApiError as FonderieApiError7, isMfaRequired as isMfaRequired2 } from "@fonderie/client";
2
+ import { FonderieApiError as FonderieApiError8, isMfaRequired as isMfaRequired2 } from "@fonderie/client";
3
3
 
4
4
  // src/composables/useForgotPassword.ts
5
5
  import { FonderieApiError } from "@fonderie/client";
@@ -101,20 +101,20 @@ function useLogout(client) {
101
101
  return { logout, isLoading, error };
102
102
  }
103
103
 
104
- // src/composables/useRegister.ts
104
+ // src/composables/useMfaLogin.ts
105
105
  import { FonderieApiError as FonderieApiError4 } from "@fonderie/client";
106
106
  import { useFonderieSubClient as useFonderieSubClient4 } from "@fonderie/vue";
107
107
  import { ref as ref4 } from "vue";
108
- function useRegister(client) {
109
- const auth = useFonderieSubClient4(client, (c) => c.auth, "useRegister");
108
+ function useMfaLogin(client) {
109
+ const auth = useFonderieSubClient4(client, (c) => c.auth, "useMfaLogin");
110
110
  const isLoading = ref4(false);
111
111
  const error = ref4(null);
112
112
  const data = ref4(null);
113
- async function register(input) {
113
+ async function verifyLogin(mfaToken, code) {
114
114
  isLoading.value = true;
115
115
  error.value = null;
116
116
  try {
117
- const { result } = await auth.register(input);
117
+ const { result } = await auth.mfa.verifyLogin(mfaToken, code);
118
118
  auth.setAccessToken(result.tokens.access);
119
119
  persistToken(result.tokens.access);
120
120
  data.value = result;
@@ -127,18 +127,47 @@ function useRegister(client) {
127
127
  isLoading.value = false;
128
128
  }
129
129
  }
130
- return { register, isLoading, error, data };
130
+ return { verifyLogin, isLoading, error, data };
131
131
  }
132
132
 
133
- // src/composables/useResetPassword.ts
133
+ // src/composables/useRegister.ts
134
134
  import { FonderieApiError as FonderieApiError5 } from "@fonderie/client";
135
135
  import { useFonderieSubClient as useFonderieSubClient5 } from "@fonderie/vue";
136
136
  import { ref as ref5 } from "vue";
137
- function useResetPassword(client) {
138
- const auth = useFonderieSubClient5(client, (c) => c.auth, "useResetPassword");
137
+ function useRegister(client) {
138
+ const auth = useFonderieSubClient5(client, (c) => c.auth, "useRegister");
139
139
  const isLoading = ref5(false);
140
140
  const error = ref5(null);
141
- const done = ref5(false);
141
+ const data = ref5(null);
142
+ async function register(input) {
143
+ isLoading.value = true;
144
+ error.value = null;
145
+ try {
146
+ const { result } = await auth.register(input);
147
+ auth.setAccessToken(result.tokens.access);
148
+ persistToken(result.tokens.access);
149
+ data.value = result;
150
+ return result;
151
+ } catch (err) {
152
+ const apiError = err instanceof FonderieApiError5 ? err : new FonderieApiError5("unknown", String(err), 0);
153
+ error.value = apiError;
154
+ throw apiError;
155
+ } finally {
156
+ isLoading.value = false;
157
+ }
158
+ }
159
+ return { register, isLoading, error, data };
160
+ }
161
+
162
+ // src/composables/useResetPassword.ts
163
+ import { FonderieApiError as FonderieApiError6 } from "@fonderie/client";
164
+ import { useFonderieSubClient as useFonderieSubClient6 } from "@fonderie/vue";
165
+ import { ref as ref6 } from "vue";
166
+ function useResetPassword(client) {
167
+ const auth = useFonderieSubClient6(client, (c) => c.auth, "useResetPassword");
168
+ const isLoading = ref6(false);
169
+ const error = ref6(null);
170
+ const done = ref6(false);
142
171
  async function resetPassword(input) {
143
172
  isLoading.value = true;
144
173
  error.value = null;
@@ -146,7 +175,7 @@ function useResetPassword(client) {
146
175
  await auth.resetPassword(input);
147
176
  done.value = true;
148
177
  } catch (err) {
149
- const apiError = err instanceof FonderieApiError5 ? err : new FonderieApiError5("unknown", String(err), 0);
178
+ const apiError = err instanceof FonderieApiError6 ? err : new FonderieApiError6("unknown", String(err), 0);
150
179
  error.value = apiError;
151
180
  throw apiError;
152
181
  } finally {
@@ -157,13 +186,13 @@ function useResetPassword(client) {
157
186
  }
158
187
 
159
188
  // src/composables/useSession.ts
160
- import { useFonderieSubClient as useFonderieSubClient6 } from "@fonderie/vue";
161
- import { ref as ref6 } from "vue";
189
+ import { useFonderieSubClient as useFonderieSubClient7 } from "@fonderie/vue";
190
+ import { ref as ref7 } from "vue";
162
191
  function useSession(client) {
163
- const auth = useFonderieSubClient6(client, (c) => c.auth, "useSession");
164
- const user = ref6(null);
165
- const isLoading = ref6(true);
166
- const isAuthenticated = ref6(false);
192
+ const auth = useFonderieSubClient7(client, (c) => c.auth, "useSession");
193
+ const user = ref7(null);
194
+ const isLoading = ref7(true);
195
+ const isAuthenticated = ref7(false);
167
196
  async function refresh() {
168
197
  isLoading.value = true;
169
198
  try {
@@ -196,14 +225,14 @@ function useSession(client) {
196
225
  }
197
226
 
198
227
  // src/composables/useVerifyEmail.ts
199
- import { FonderieApiError as FonderieApiError6 } from "@fonderie/client";
200
- import { useFonderieSubClient as useFonderieSubClient7 } from "@fonderie/vue";
201
- import { ref as ref7 } from "vue";
228
+ import { FonderieApiError as FonderieApiError7 } from "@fonderie/client";
229
+ import { useFonderieSubClient as useFonderieSubClient8 } from "@fonderie/vue";
230
+ import { ref as ref8 } from "vue";
202
231
  function useVerifyEmail(client) {
203
- const auth = useFonderieSubClient7(client, (c) => c.auth, "useVerifyEmail");
204
- const isLoading = ref7(false);
205
- const error = ref7(null);
206
- const data = ref7(null);
232
+ const auth = useFonderieSubClient8(client, (c) => c.auth, "useVerifyEmail");
233
+ const isLoading = ref8(false);
234
+ const error = ref8(null);
235
+ const data = ref8(null);
207
236
  async function verifyEmail(pin) {
208
237
  isLoading.value = true;
209
238
  error.value = null;
@@ -212,7 +241,7 @@ function useVerifyEmail(client) {
212
241
  data.value = result;
213
242
  return result;
214
243
  } catch (err) {
215
- const apiError = err instanceof FonderieApiError6 ? err : new FonderieApiError6("unknown", String(err), 0);
244
+ const apiError = err instanceof FonderieApiError7 ? err : new FonderieApiError7("unknown", String(err), 0);
216
245
  error.value = apiError;
217
246
  throw apiError;
218
247
  } finally {
@@ -222,11 +251,16 @@ function useVerifyEmail(client) {
222
251
  return { verifyEmail, isLoading, error, data };
223
252
  }
224
253
  export {
225
- FonderieApiError7 as FonderieApiError,
254
+ FonderieApiError8 as FonderieApiError,
255
+ TOKEN_KEY,
256
+ clearToken,
226
257
  isMfaRequired2 as isMfaRequired,
258
+ persistToken,
259
+ readToken,
227
260
  useForgotPassword,
228
261
  useLogin,
229
262
  useLogout,
263
+ useMfaLogin,
230
264
  useRegister,
231
265
  useResetPassword,
232
266
  useSession,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/storage.ts","../src/composables/useLogout.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tILoginInput,\n\tILoginResult,\n\tIMfaRequiredResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport {\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseRegister,\n\tuseResetPassword,\n\tuseSession,\n\tuseVerifyEmail,\n} from './composables';\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useForgotPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useForgotPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst sent = ref(false);\n\n\tasync function forgotPassword(email: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.forgotPassword(email);\n\t\t\tsent.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { forgotPassword, isLoading, error, sent };\n}\n","import type { AuthClient, ILoginInput, ILoginResult, IMfaRequiredResult } from '@fonderie/client';\nimport { FonderieApiError, isMfaRequired } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useLogin(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogin');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<ILoginResult | null>(null);\n\t// Set when the account requires MFA: complete the login with\n\t// client.auth.mfa.verifyLogin(mfaPending.value.mfaToken, code).\n\tconst mfaPending = ref<IMfaRequiredResult | null>(null);\n\n\tasync function login(input: ILoginInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tmfaPending.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.login(input);\n\t\t\tif (isMfaRequired(result)) {\n\t\t\t\tmfaPending.value = result;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { login, isLoading, error, data, mfaPending };\n}\n","export const TOKEN_KEY = 'fonderie_access_token';\n\nexport function persistToken(token: string) {\n\tlocalStorage.setItem(TOKEN_KEY, token);\n}\n\nexport function clearToken() {\n\tlocalStorage.removeItem(TOKEN_KEY);\n}\n\nexport function readToken(): string | null {\n\treturn localStorage.getItem(TOKEN_KEY);\n}\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport function useLogout(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogout');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function logout(refreshToken?: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t} finally {\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { logout, isLoading, error };\n}\n","import type { AuthClient, IRegisterInput, IRegisterResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useRegister(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useRegister');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IRegisterResult | null>(null);\n\n\tasync function register(input: IRegisterInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.register(input);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { register, isLoading, error, data };\n}\n","import type { AuthClient, IResetPasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useResetPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useResetPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function resetPassword(input: IResetPasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.resetPassword(input);\n\t\t\tdone.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { resetPassword, isLoading, error, done };\n}\n","import type { AuthClient, IUserDTO } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken, readToken } from '../storage';\n\nexport function useSession(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useSession');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst isAuthenticated = ref(false);\n\n\tasync function refresh() {\n\t\tisLoading.value = true;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser();\n\t\t\tuser.value = result.user;\n\t\t\tisAuthenticated.value = true;\n\t\t} catch {\n\t\t\tuser.value = null;\n\t\t\tisAuthenticated.value = false;\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function logout(refreshToken?: string) {\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch {\n\t\t\t// Session is being torn down regardless of server response.\n\t\t}\n\t\tauth.setAccessToken(undefined);\n\t\tclearToken();\n\t\tuser.value = null;\n\t\tisAuthenticated.value = false;\n\t}\n\n\tconst token = readToken();\n\tif (token) auth.setAccessToken(token);\n\tvoid refresh();\n\n\treturn { user, isLoading, isAuthenticated, refresh, logout };\n}\n","import type { AuthClient, IVerifyEmailResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useVerifyEmail(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useVerifyEmail');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IVerifyEmailResult | null>(null);\n\n\tasync function verifyEmail(pin: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.verifyEmail(pin);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { verifyEmail, isLoading, error, data };\n}\n"],"mappings":"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","names":["FonderieApiError","isMfaRequired","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","useFonderieSubClient","ref"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/storage.ts","../src/composables/useLogout.ts","../src/composables/useMfaLogin.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tILoginInput,\n\tILoginResult,\n\tIMfaRequiredResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport type { IUseMfaLoginReturn } from './composables';\nexport {\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseMfaLogin,\n\tuseRegister,\n\tuseResetPassword,\n\tuseSession,\n\tuseVerifyEmail,\n} from './composables';\n\n// Token persistence primitives — for wiring app-level flows (e.g. the\n// client's auth.onTokensChanged) to the same storage the hooks use.\nexport { clearToken, persistToken, readToken, TOKEN_KEY } from './storage';\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useForgotPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useForgotPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst sent = ref(false);\n\n\tasync function forgotPassword(email: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.forgotPassword(email);\n\t\t\tsent.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { forgotPassword, isLoading, error, sent };\n}\n","import type { AuthClient, ILoginInput, ILoginResult, IMfaRequiredResult } from '@fonderie/client';\nimport { FonderieApiError, isMfaRequired } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useLogin(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogin');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<ILoginResult | null>(null);\n\t// Set when the account requires MFA: complete the login with\n\t// client.auth.mfa.verifyLogin(mfaPending.value.mfaToken, code).\n\tconst mfaPending = ref<IMfaRequiredResult | null>(null);\n\n\tasync function login(input: ILoginInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tmfaPending.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.login(input);\n\t\t\tif (isMfaRequired(result)) {\n\t\t\t\tmfaPending.value = result;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { login, isLoading, error, data, mfaPending };\n}\n","export const TOKEN_KEY = 'fonderie_access_token';\n\nexport function persistToken(token: string) {\n\tlocalStorage.setItem(TOKEN_KEY, token);\n}\n\nexport function clearToken() {\n\tlocalStorage.removeItem(TOKEN_KEY);\n}\n\nexport function readToken(): string | null {\n\treturn localStorage.getItem(TOKEN_KEY);\n}\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport function useLogout(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useLogout');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function logout(refreshToken?: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t} finally {\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { logout, isLoading, error };\n}\n","import type { AuthClient, ILoginResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport interface IUseMfaLoginReturn {\n\t// Completes a login that returned MFA_REQUIRED: verifies the TOTP code\n\t// against the temporary mfaToken from useLogin's mfaPending, then persists\n\t// the issued tokens exactly like a normal login.\n\tverifyLogin: (mfaToken: string, code: string) => Promise<ILoginResult>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<ILoginResult | null>;\n}\n\nexport function useMfaLogin(client?: AuthClient): IUseMfaLoginReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useMfaLogin');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<ILoginResult | null>(null);\n\n\tasync function verifyLogin(mfaToken: string, code: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.mfa.verifyLogin(mfaToken, code);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { verifyLogin, isLoading, error, data };\n}\n","import type { AuthClient, IRegisterInput, IRegisterResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport function useRegister(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useRegister');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IRegisterResult | null>(null);\n\n\tasync function register(input: IRegisterInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.register(input);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { register, isLoading, error, data };\n}\n","import type { AuthClient, IResetPasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useResetPassword(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useResetPassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function resetPassword(input: IResetPasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tawait auth.resetPassword(input);\n\t\t\tdone.value = true;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { resetPassword, isLoading, error, done };\n}\n","import type { AuthClient, IUserDTO } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\nimport { clearToken, readToken } from '../storage';\n\nexport function useSession(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useSession');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst isAuthenticated = ref(false);\n\n\tasync function refresh() {\n\t\tisLoading.value = true;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser();\n\t\t\tuser.value = result.user;\n\t\t\tisAuthenticated.value = true;\n\t\t} catch {\n\t\t\tuser.value = null;\n\t\t\tisAuthenticated.value = false;\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function logout(refreshToken?: string) {\n\t\ttry {\n\t\t\tawait auth.logout(refreshToken);\n\t\t} catch {\n\t\t\t// Session is being torn down regardless of server response.\n\t\t}\n\t\tauth.setAccessToken(undefined);\n\t\tclearToken();\n\t\tuser.value = null;\n\t\tisAuthenticated.value = false;\n\t}\n\n\tconst token = readToken();\n\tif (token) auth.setAccessToken(token);\n\tvoid refresh();\n\n\treturn { user, isLoading, isAuthenticated, refresh, logout };\n}\n","import type { AuthClient, IVerifyEmailResult } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport { ref } from 'vue';\n\nexport function useVerifyEmail(client?: AuthClient) {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useVerifyEmail');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst data = ref<IVerifyEmailResult | null>(null);\n\n\tasync function verifyEmail(pin: string) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.verifyEmail(pin);\n\t\t\tdata.value = result;\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\terror.value = apiError;\n\t\t\tthrow apiError;\n\t\t} finally {\n\t\t\tisLoading.value = false;\n\t\t}\n\t}\n\n\treturn { verifyEmail, isLoading, error, data };\n}\n"],"mappings":"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","names":["FonderieApiError","isMfaRequired","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","useFonderieSubClient","ref"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fonderie/vue-auth",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Vue composables for Fonderie auth — thin bindings over @fonderie/client.",
5
5
  "keywords": [
6
6
  "fonderiejs",