@fonderie/vue-auth 0.6.1 → 0.8.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 +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -272
- package/dist/index.d.ts +50 -272
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -295,11 +295,11 @@ function useProfile(client) {
|
|
|
295
295
|
const user = (0, import_vue16.ref)(null);
|
|
296
296
|
const isLoading = (0, import_vue16.ref)(true);
|
|
297
297
|
const error = (0, import_vue16.ref)(null);
|
|
298
|
-
async function refresh() {
|
|
298
|
+
async function refresh(opts) {
|
|
299
299
|
isLoading.value = true;
|
|
300
300
|
error.value = null;
|
|
301
301
|
try {
|
|
302
|
-
const { result } = await auth.getUser();
|
|
302
|
+
const { result } = await auth.getUser({ bust: opts?.force });
|
|
303
303
|
user.value = result.user;
|
|
304
304
|
} catch (err) {
|
|
305
305
|
const apiError = err instanceof import_client8.FonderieApiError ? err : new import_client8.FonderieApiError("unknown", String(err), 0);
|
|
@@ -344,7 +344,7 @@ function useProfile(client) {
|
|
|
344
344
|
await refresh();
|
|
345
345
|
});
|
|
346
346
|
}
|
|
347
|
-
void refresh();
|
|
347
|
+
(0, import_vue16.onMounted)(() => void refresh());
|
|
348
348
|
return { user, refresh, updateProfile, updatePreferences, updateEmail, updatePhone, isLoading, error };
|
|
349
349
|
}
|
|
350
350
|
|
|
@@ -411,10 +411,10 @@ function useSession(client) {
|
|
|
411
411
|
const user = (0, import_vue22.ref)(null);
|
|
412
412
|
const isLoading = (0, import_vue22.ref)(true);
|
|
413
413
|
const isAuthenticated = (0, import_vue22.ref)(false);
|
|
414
|
-
async function refresh() {
|
|
414
|
+
async function refresh(opts) {
|
|
415
415
|
isLoading.value = true;
|
|
416
416
|
try {
|
|
417
|
-
const { result } = await auth.getUser();
|
|
417
|
+
const { result } = await auth.getUser({ bust: opts?.force });
|
|
418
418
|
user.value = result.user;
|
|
419
419
|
isAuthenticated.value = true;
|
|
420
420
|
} catch {
|
|
@@ -438,7 +438,7 @@ function useSession(client) {
|
|
|
438
438
|
}
|
|
439
439
|
const token = readToken();
|
|
440
440
|
if (token) auth.setAccessToken(token);
|
|
441
|
-
void refresh();
|
|
441
|
+
(0, import_vue22.onMounted)(() => void refresh());
|
|
442
442
|
return { user, isLoading, isAuthenticated, refresh, logout };
|
|
443
443
|
}
|
|
444
444
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/composables/useAccountData.ts","../src/storage.ts","../src/composables/useChangePassword.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/composables/useLogout.ts","../src/composables/useMfaLogin.ts","../src/composables/useMfaSetup.ts","../src/composables/useProfile.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tIChangePasswordInput,\n\tILoginInput,\n\tILoginResult,\n\tIMfaEnabledResult,\n\tIMfaRequiredResult,\n\tIMfaSetupResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport type {\n\tIUseAccountDataReturn,\n\tIUseChangePasswordReturn,\n\tIUseMfaLoginReturn,\n\tIUseMfaSetupReturn,\n\tIUseProfileReturn,\n} from './composables';\nexport {\n\tuseAccountData,\n\tuseChangePassword,\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseMfaLogin,\n\tuseMfaSetup,\n\tuseProfile,\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport interface IUseAccountDataReturn {\n\t// GET /users/export — the caller's own data as a portable bundle (SAR).\n\texportData: () => Promise<unknown>;\n\t// Deletes the account, then tears the session down like a logout.\n\tdeleteUser: () => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useAccountData(client?: AuthClient): IUseAccountDataReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useAccountData');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction exportData() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.exportData();\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction deleteUser() {\n\t\treturn run(async () => {\n\t\t\tawait auth.deleteUser();\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t});\n\t}\n\n\treturn { exportData, deleteUser, isLoading, error };\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, IChangePasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseChangePasswordReturn {\n\tchangePassword: (input: IChangePasswordInput) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdone: Ref<boolean>;\n}\n\nexport function useChangePassword(client?: AuthClient): IUseChangePasswordReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useChangePassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function changePassword(input: IChangePasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tdone.value = false;\n\t\ttry {\n\t\t\tawait auth.changePassword(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 { changePassword, isLoading, error, done };\n}\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","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, IMfaEnabledResult, IMfaSetupResult } 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 IUseMfaSetupReturn {\n\t// Step 1: request enrollment — returns a data-URI QR code to scan and the\n\t// one-time backup codes generated at setup.\n\tsetup: () => Promise<IMfaSetupResult>;\n\tsetupData: Ref<IMfaSetupResult | null>;\n\t// Step 2: verify the first TOTP code. The server rotates the session's\n\t// tokens on success — the composable persists them exactly like a login,\n\t// so the session stays valid after enrollment.\n\tverify: (code: string) => Promise<IMfaEnabledResult>;\n\tdisable: (code: string) => Promise<void>;\n\tregenerateBackupCodes: (code: string) => Promise<string[]>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useMfaSetup(client?: AuthClient): IUseMfaSetupReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useMfaSetup');\n\tconst setupData = ref<IMfaSetupResult | null>(null);\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction setup() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.setup();\n\t\t\tsetupData.value = result;\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction verify(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.verify(code);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction disable(code: string) {\n\t\treturn run(async () => {\n\t\t\tawait auth.mfa.disable(code);\n\t\t});\n\t}\n\n\tfunction regenerateBackupCodes(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.regenerateBackupCodes(code);\n\t\t\treturn result.backupCodes;\n\t\t});\n\t}\n\n\treturn { setup, setupData, verify, disable, regenerateBackupCodes, isLoading, error };\n}\n","import type {\n\tAuthClient,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseProfileReturn {\n\tuser: Ref<IUserDTO | null>;\n\trefresh: () => Promise<void>;\n\tupdateProfile: (input: IUpdateProfileInput) => Promise<IUserDTO>;\n\tupdatePreferences: (input: IUpdatePreferencesInput) => Promise<IUserDTO>;\n\t// Email/phone changes re-fetch the profile (their endpoints don't return it).\n\tupdateEmail: (email: string) => Promise<void>;\n\tupdatePhone: (phone: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useProfile(client?: AuthClient): IUseProfileReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useProfile');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function refresh() {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser();\n\t\t\tuser.value = result.user;\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\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function mutate<T>(op: () => Promise<T>): Promise<T> {\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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}\n\t}\n\n\tfunction updateProfile(input: IUpdateProfileInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updateProfile(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updatePreferences(input: IUpdatePreferencesInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updatePreferences(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updateEmail(email: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updateEmail(email);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tfunction updatePhone(phone: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updatePhone(phone);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tvoid refresh();\n\n\treturn { user, refresh, updateProfile, updatePreferences, updateEmail, updatePhone, 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\tconst resent = ref(false);\n\n\t// Re-sends the verification email — the other half of the same lifecycle,\n\t// so one composable owns both and screens don't split loading/error handling.\n\tasync function resend() {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tresent.value = false;\n\t\ttry {\n\t\t\tawait auth.sendVerificationEmail();\n\t\t\tresent.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\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, resend, resent, 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_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/useAccountData.ts","../src/storage.ts","../src/composables/useChangePassword.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/composables/useLogout.ts","../src/composables/useMfaLogin.ts","../src/composables/useMfaSetup.ts","../src/composables/useProfile.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tIChangePasswordInput,\n\tILoginInput,\n\tILoginResult,\n\tIMfaEnabledResult,\n\tIMfaRequiredResult,\n\tIMfaSetupResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport type {\n\tIUseAccountDataReturn,\n\tIUseChangePasswordReturn,\n\tIUseForgotPasswordReturn,\n\tIUseLoginReturn,\n\tIUseLogoutReturn,\n\tIUseMfaLoginReturn,\n\tIUseMfaSetupReturn,\n\tIUseProfileReturn,\n\tIUseRegisterReturn,\n\tIUseResetPasswordReturn,\n\tIUseSessionReturn,\n\tIUseVerifyEmailReturn,\n} from './composables';\nexport {\n\tuseAccountData,\n\tuseChangePassword,\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseMfaLogin,\n\tuseMfaSetup,\n\tuseProfile,\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport interface IUseAccountDataReturn {\n\t// GET /users/export — the caller's own data as a portable bundle (SAR).\n\texportData: () => Promise<unknown>;\n\t// Deletes the account, then tears the session down like a logout.\n\tdeleteUser: () => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useAccountData(client?: AuthClient): IUseAccountDataReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useAccountData');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction exportData() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.exportData();\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction deleteUser() {\n\t\treturn run(async () => {\n\t\t\tawait auth.deleteUser();\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t});\n\t}\n\n\treturn { exportData, deleteUser, isLoading, error };\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, IChangePasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseChangePasswordReturn {\n\tchangePassword: (input: IChangePasswordInput) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdone: Ref<boolean>;\n}\n\nexport function useChangePassword(client?: AuthClient): IUseChangePasswordReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useChangePassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function changePassword(input: IChangePasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tdone.value = false;\n\t\ttry {\n\t\t\tawait auth.changePassword(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 { changePassword, isLoading, error, done };\n}\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseForgotPasswordReturn {\n\tforgotPassword: (email: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tsent: Ref<boolean>;\n}\n\nexport function useForgotPassword(client?: AuthClient): IUseForgotPasswordReturn {\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport interface IUseLoginReturn {\n\tlogin: (input: ILoginInput) => Promise<ILoginResult | IMfaRequiredResult>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<ILoginResult | null>;\n\t// Set when the account requires MFA: no tokens were issued — complete the\n\t// login with client.auth.mfa.verifyLogin(mfaPending.value.mfaToken, code).\n\tmfaPending: Ref<IMfaRequiredResult | null>;\n}\n\nexport function useLogin(client?: AuthClient): IUseLoginReturn {\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","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport interface IUseLogoutReturn {\n\tlogout: (refreshToken?: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useLogout(client?: AuthClient): IUseLogoutReturn {\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, IMfaEnabledResult, IMfaSetupResult } 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 IUseMfaSetupReturn {\n\t// Step 1: request enrollment — returns a data-URI QR code to scan and the\n\t// one-time backup codes generated at setup.\n\tsetup: () => Promise<IMfaSetupResult>;\n\tsetupData: Ref<IMfaSetupResult | null>;\n\t// Step 2: verify the first TOTP code. The server rotates the session's\n\t// tokens on success — the composable persists them exactly like a login,\n\t// so the session stays valid after enrollment.\n\tverify: (code: string) => Promise<IMfaEnabledResult>;\n\tdisable: (code: string) => Promise<void>;\n\tregenerateBackupCodes: (code: string) => Promise<string[]>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useMfaSetup(client?: AuthClient): IUseMfaSetupReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useMfaSetup');\n\tconst setupData = ref<IMfaSetupResult | null>(null);\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction setup() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.setup();\n\t\t\tsetupData.value = result;\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction verify(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.verify(code);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction disable(code: string) {\n\t\treturn run(async () => {\n\t\t\tawait auth.mfa.disable(code);\n\t\t});\n\t}\n\n\tfunction regenerateBackupCodes(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.regenerateBackupCodes(code);\n\t\t\treturn result.backupCodes;\n\t\t});\n\t}\n\n\treturn { setup, setupData, verify, disable, regenerateBackupCodes, isLoading, error };\n}\n","import type {\n\tAuthClient,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { onMounted, ref } from 'vue';\n\nexport interface IUseProfileReturn {\n\tuser: Ref<IUserDTO | null>;\n\trefresh: (opts?: { force?: boolean }) => Promise<void>;\n\tupdateProfile: (input: IUpdateProfileInput) => Promise<IUserDTO>;\n\tupdatePreferences: (input: IUpdatePreferencesInput) => Promise<IUserDTO>;\n\t// Email/phone changes re-fetch the profile (their endpoints don't return it).\n\tupdateEmail: (email: string) => Promise<void>;\n\tupdatePhone: (phone: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useProfile(client?: AuthClient): IUseProfileReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useProfile');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function refresh(opts?: { force?: boolean }) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser({ bust: opts?.force });\n\t\t\tuser.value = result.user;\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\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function mutate<T>(op: () => Promise<T>): Promise<T> {\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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}\n\t}\n\n\tfunction updateProfile(input: IUpdateProfileInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updateProfile(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updatePreferences(input: IUpdatePreferencesInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updatePreferences(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updateEmail(email: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updateEmail(email);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tfunction updatePhone(phone: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updatePhone(phone);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tonMounted(() => void refresh());\n\n\treturn { user, refresh, updateProfile, updatePreferences, updateEmail, updatePhone, isLoading, error };\n}\n","import type { AuthClient, IRegisterInput, IRegisterResult } 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 IUseRegisterReturn {\n\tregister: (input: IRegisterInput) => Promise<IRegisterResult>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<IRegisterResult | null>;\n}\n\nexport function useRegister(client?: AuthClient): IUseRegisterReturn {\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseResetPasswordReturn {\n\tresetPassword: (input: IResetPasswordInput) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdone: Ref<boolean>;\n}\n\nexport function useResetPassword(client?: AuthClient): IUseResetPasswordReturn {\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 type { Ref } from 'vue';\nimport { onMounted, ref } from 'vue';\nimport { clearToken, readToken } from '../storage';\n\nexport interface IUseSessionReturn {\n\tuser: Ref<IUserDTO | null>;\n\tisLoading: Ref<boolean>;\n\tisAuthenticated: Ref<boolean>;\n\trefresh: (opts?: { force?: boolean }) => Promise<void>;\n\tlogout: (refreshToken?: string) => Promise<void>;\n}\n\nexport function useSession(client?: AuthClient): IUseSessionReturn {\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(opts?: { force?: boolean }) {\n\t\tisLoading.value = true;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser({ bust: opts?.force });\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\tonMounted(() => void 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 type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseVerifyEmailReturn {\n\tverifyEmail: (pin: string) => Promise<IVerifyEmailResult>;\n\tresend: () => Promise<void>;\n\tresent: Ref<boolean>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<IVerifyEmailResult | null>;\n}\n\nexport function useVerifyEmail(client?: AuthClient): IUseVerifyEmailReturn {\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\tconst resent = ref(false);\n\n\t// Re-sends the verification email — the other half of the same lifecycle,\n\t// so one composable owns both and screens don't split loading/error handling.\n\tasync function resend() {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tresent.value = false;\n\t\ttry {\n\t\t\tawait auth.sendVerificationEmail();\n\t\t\tresent.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\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, resend, resent, 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_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,5 @@
|
|
|
1
1
|
import { FonderieApiError, AuthClient, IChangePasswordInput, ILoginInput, ILoginResult, IMfaRequiredResult, IMfaSetupResult, IMfaEnabledResult, IUserDTO, IUpdateProfileInput, IUpdatePreferencesInput, IRegisterInput, IRegisterResult, IResetPasswordInput, IVerifyEmailResult } from '@fonderie/client';
|
|
2
2
|
export { AuthClient, FonderieApiError, IChangePasswordInput, ILoginInput, ILoginResult, IMfaEnabledResult, IMfaRequiredResult, IMfaSetupResult, IRegisterInput, IRegisterResult, IResetPasswordInput, ITokens, IUpdatePreferencesInput, IUpdateProfileInput, IUserDTO, IVerifyEmailResult, isMfaRequired } from '@fonderie/client';
|
|
3
|
-
import * as vue from 'vue';
|
|
4
3
|
import { Ref } from 'vue';
|
|
5
4
|
|
|
6
5
|
interface IUseAccountDataReturn {
|
|
@@ -19,108 +18,29 @@ interface IUseChangePasswordReturn {
|
|
|
19
18
|
}
|
|
20
19
|
declare function useChangePassword(client?: AuthClient): IUseChangePasswordReturn;
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
interface IUseForgotPasswordReturn {
|
|
23
22
|
forgotPassword: (email: string) => Promise<void>;
|
|
24
|
-
isLoading:
|
|
25
|
-
error:
|
|
26
|
-
sent:
|
|
27
|
-
}
|
|
23
|
+
isLoading: Ref<boolean>;
|
|
24
|
+
error: Ref<FonderieApiError | null>;
|
|
25
|
+
sent: Ref<boolean>;
|
|
26
|
+
}
|
|
27
|
+
declare function useForgotPassword(client?: AuthClient): IUseForgotPasswordReturn;
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
interface IUseLoginReturn {
|
|
30
30
|
login: (input: ILoginInput) => Promise<ILoginResult | IMfaRequiredResult>;
|
|
31
|
-
isLoading:
|
|
32
|
-
error:
|
|
33
|
-
data:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
user: {
|
|
39
|
-
id: string;
|
|
40
|
-
email: string;
|
|
41
|
-
firstName: string;
|
|
42
|
-
lastName: string;
|
|
43
|
-
phone: string;
|
|
44
|
-
profileImageUrl: string;
|
|
45
|
-
isActive: boolean;
|
|
46
|
-
lastLogin: string;
|
|
47
|
-
skills: {
|
|
48
|
-
name: string;
|
|
49
|
-
level: string;
|
|
50
|
-
}[];
|
|
51
|
-
preferences: {
|
|
52
|
-
locale: string;
|
|
53
|
-
timezone: string;
|
|
54
|
-
notifications: {
|
|
55
|
-
email: boolean;
|
|
56
|
-
inApp: boolean;
|
|
57
|
-
sms: boolean;
|
|
58
|
-
push: boolean;
|
|
59
|
-
};
|
|
60
|
-
emailDigest: string;
|
|
61
|
-
dateFormat: string;
|
|
62
|
-
timeFormat: string;
|
|
63
|
-
};
|
|
64
|
-
isEmailVerified: boolean;
|
|
65
|
-
mfaEnabled: boolean;
|
|
66
|
-
suspended: boolean;
|
|
67
|
-
whitelist: boolean;
|
|
68
|
-
ipWhitelist: string[];
|
|
69
|
-
createdAt: string;
|
|
70
|
-
updatedAt: string;
|
|
71
|
-
};
|
|
72
|
-
} | null, ILoginResult | {
|
|
73
|
-
tokens: {
|
|
74
|
-
access: string;
|
|
75
|
-
refresh: string;
|
|
76
|
-
};
|
|
77
|
-
user: {
|
|
78
|
-
id: string;
|
|
79
|
-
email: string;
|
|
80
|
-
firstName: string;
|
|
81
|
-
lastName: string;
|
|
82
|
-
phone: string;
|
|
83
|
-
profileImageUrl: string;
|
|
84
|
-
isActive: boolean;
|
|
85
|
-
lastLogin: string;
|
|
86
|
-
skills: {
|
|
87
|
-
name: string;
|
|
88
|
-
level: string;
|
|
89
|
-
}[];
|
|
90
|
-
preferences: {
|
|
91
|
-
locale: string;
|
|
92
|
-
timezone: string;
|
|
93
|
-
notifications: {
|
|
94
|
-
email: boolean;
|
|
95
|
-
inApp: boolean;
|
|
96
|
-
sms: boolean;
|
|
97
|
-
push: boolean;
|
|
98
|
-
};
|
|
99
|
-
emailDigest: string;
|
|
100
|
-
dateFormat: string;
|
|
101
|
-
timeFormat: string;
|
|
102
|
-
};
|
|
103
|
-
isEmailVerified: boolean;
|
|
104
|
-
mfaEnabled: boolean;
|
|
105
|
-
suspended: boolean;
|
|
106
|
-
whitelist: boolean;
|
|
107
|
-
ipWhitelist: string[];
|
|
108
|
-
createdAt: string;
|
|
109
|
-
updatedAt: string;
|
|
110
|
-
};
|
|
111
|
-
} | null>;
|
|
112
|
-
mfaPending: vue.Ref<{
|
|
113
|
-
mfaToken: string;
|
|
114
|
-
} | null, IMfaRequiredResult | {
|
|
115
|
-
mfaToken: string;
|
|
116
|
-
} | null>;
|
|
117
|
-
};
|
|
31
|
+
isLoading: Ref<boolean>;
|
|
32
|
+
error: Ref<FonderieApiError | null>;
|
|
33
|
+
data: Ref<ILoginResult | null>;
|
|
34
|
+
mfaPending: Ref<IMfaRequiredResult | null>;
|
|
35
|
+
}
|
|
36
|
+
declare function useLogin(client?: AuthClient): IUseLoginReturn;
|
|
118
37
|
|
|
119
|
-
|
|
38
|
+
interface IUseLogoutReturn {
|
|
120
39
|
logout: (refreshToken?: string) => Promise<void>;
|
|
121
|
-
isLoading:
|
|
122
|
-
error:
|
|
123
|
-
}
|
|
40
|
+
isLoading: Ref<boolean>;
|
|
41
|
+
error: Ref<FonderieApiError | null>;
|
|
42
|
+
}
|
|
43
|
+
declare function useLogout(client?: AuthClient): IUseLogoutReturn;
|
|
124
44
|
|
|
125
45
|
interface IUseMfaLoginReturn {
|
|
126
46
|
verifyLogin: (mfaToken: string, code: string) => Promise<ILoginResult>;
|
|
@@ -143,7 +63,9 @@ declare function useMfaSetup(client?: AuthClient): IUseMfaSetupReturn;
|
|
|
143
63
|
|
|
144
64
|
interface IUseProfileReturn {
|
|
145
65
|
user: Ref<IUserDTO | null>;
|
|
146
|
-
refresh: (
|
|
66
|
+
refresh: (opts?: {
|
|
67
|
+
force?: boolean;
|
|
68
|
+
}) => Promise<void>;
|
|
147
69
|
updateProfile: (input: IUpdateProfileInput) => Promise<IUserDTO>;
|
|
148
70
|
updatePreferences: (input: IUpdatePreferencesInput) => Promise<IUserDTO>;
|
|
149
71
|
updateEmail: (email: string) => Promise<void>;
|
|
@@ -153,190 +75,46 @@ interface IUseProfileReturn {
|
|
|
153
75
|
}
|
|
154
76
|
declare function useProfile(client?: AuthClient): IUseProfileReturn;
|
|
155
77
|
|
|
156
|
-
|
|
78
|
+
interface IUseRegisterReturn {
|
|
157
79
|
register: (input: IRegisterInput) => Promise<IRegisterResult>;
|
|
158
|
-
isLoading:
|
|
159
|
-
error:
|
|
160
|
-
data:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
refresh: string;
|
|
164
|
-
};
|
|
165
|
-
user: {
|
|
166
|
-
id: string;
|
|
167
|
-
email: string;
|
|
168
|
-
firstName: string;
|
|
169
|
-
lastName: string;
|
|
170
|
-
phone: string;
|
|
171
|
-
profileImageUrl: string;
|
|
172
|
-
isActive: boolean;
|
|
173
|
-
lastLogin: string;
|
|
174
|
-
skills: {
|
|
175
|
-
name: string;
|
|
176
|
-
level: string;
|
|
177
|
-
}[];
|
|
178
|
-
preferences: {
|
|
179
|
-
locale: string;
|
|
180
|
-
timezone: string;
|
|
181
|
-
notifications: {
|
|
182
|
-
email: boolean;
|
|
183
|
-
inApp: boolean;
|
|
184
|
-
sms: boolean;
|
|
185
|
-
push: boolean;
|
|
186
|
-
};
|
|
187
|
-
emailDigest: string;
|
|
188
|
-
dateFormat: string;
|
|
189
|
-
timeFormat: string;
|
|
190
|
-
};
|
|
191
|
-
isEmailVerified: boolean;
|
|
192
|
-
mfaEnabled: boolean;
|
|
193
|
-
suspended: boolean;
|
|
194
|
-
whitelist: boolean;
|
|
195
|
-
ipWhitelist: string[];
|
|
196
|
-
createdAt: string;
|
|
197
|
-
updatedAt: string;
|
|
198
|
-
};
|
|
199
|
-
} | null, IRegisterResult | {
|
|
200
|
-
tokens: {
|
|
201
|
-
access: string;
|
|
202
|
-
refresh: string;
|
|
203
|
-
};
|
|
204
|
-
user: {
|
|
205
|
-
id: string;
|
|
206
|
-
email: string;
|
|
207
|
-
firstName: string;
|
|
208
|
-
lastName: string;
|
|
209
|
-
phone: string;
|
|
210
|
-
profileImageUrl: string;
|
|
211
|
-
isActive: boolean;
|
|
212
|
-
lastLogin: string;
|
|
213
|
-
skills: {
|
|
214
|
-
name: string;
|
|
215
|
-
level: string;
|
|
216
|
-
}[];
|
|
217
|
-
preferences: {
|
|
218
|
-
locale: string;
|
|
219
|
-
timezone: string;
|
|
220
|
-
notifications: {
|
|
221
|
-
email: boolean;
|
|
222
|
-
inApp: boolean;
|
|
223
|
-
sms: boolean;
|
|
224
|
-
push: boolean;
|
|
225
|
-
};
|
|
226
|
-
emailDigest: string;
|
|
227
|
-
dateFormat: string;
|
|
228
|
-
timeFormat: string;
|
|
229
|
-
};
|
|
230
|
-
isEmailVerified: boolean;
|
|
231
|
-
mfaEnabled: boolean;
|
|
232
|
-
suspended: boolean;
|
|
233
|
-
whitelist: boolean;
|
|
234
|
-
ipWhitelist: string[];
|
|
235
|
-
createdAt: string;
|
|
236
|
-
updatedAt: string;
|
|
237
|
-
};
|
|
238
|
-
} | null>;
|
|
239
|
-
};
|
|
80
|
+
isLoading: Ref<boolean>;
|
|
81
|
+
error: Ref<FonderieApiError | null>;
|
|
82
|
+
data: Ref<IRegisterResult | null>;
|
|
83
|
+
}
|
|
84
|
+
declare function useRegister(client?: AuthClient): IUseRegisterReturn;
|
|
240
85
|
|
|
241
|
-
|
|
86
|
+
interface IUseResetPasswordReturn {
|
|
242
87
|
resetPassword: (input: IResetPasswordInput) => Promise<void>;
|
|
243
|
-
isLoading:
|
|
244
|
-
error:
|
|
245
|
-
done:
|
|
246
|
-
}
|
|
88
|
+
isLoading: Ref<boolean>;
|
|
89
|
+
error: Ref<FonderieApiError | null>;
|
|
90
|
+
done: Ref<boolean>;
|
|
91
|
+
}
|
|
92
|
+
declare function useResetPassword(client?: AuthClient): IUseResetPasswordReturn;
|
|
247
93
|
|
|
248
|
-
|
|
249
|
-
user:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
profileImageUrl: string;
|
|
256
|
-
isActive: boolean;
|
|
257
|
-
lastLogin: string;
|
|
258
|
-
skills: {
|
|
259
|
-
name: string;
|
|
260
|
-
level: string;
|
|
261
|
-
}[];
|
|
262
|
-
preferences: {
|
|
263
|
-
locale: string;
|
|
264
|
-
timezone: string;
|
|
265
|
-
notifications: {
|
|
266
|
-
email: boolean;
|
|
267
|
-
inApp: boolean;
|
|
268
|
-
sms: boolean;
|
|
269
|
-
push: boolean;
|
|
270
|
-
};
|
|
271
|
-
emailDigest: string;
|
|
272
|
-
dateFormat: string;
|
|
273
|
-
timeFormat: string;
|
|
274
|
-
};
|
|
275
|
-
isEmailVerified: boolean;
|
|
276
|
-
mfaEnabled: boolean;
|
|
277
|
-
suspended: boolean;
|
|
278
|
-
whitelist: boolean;
|
|
279
|
-
ipWhitelist: string[];
|
|
280
|
-
createdAt: string;
|
|
281
|
-
updatedAt: string;
|
|
282
|
-
} | null, IUserDTO | {
|
|
283
|
-
id: string;
|
|
284
|
-
email: string;
|
|
285
|
-
firstName: string;
|
|
286
|
-
lastName: string;
|
|
287
|
-
phone: string;
|
|
288
|
-
profileImageUrl: string;
|
|
289
|
-
isActive: boolean;
|
|
290
|
-
lastLogin: string;
|
|
291
|
-
skills: {
|
|
292
|
-
name: string;
|
|
293
|
-
level: string;
|
|
294
|
-
}[];
|
|
295
|
-
preferences: {
|
|
296
|
-
locale: string;
|
|
297
|
-
timezone: string;
|
|
298
|
-
notifications: {
|
|
299
|
-
email: boolean;
|
|
300
|
-
inApp: boolean;
|
|
301
|
-
sms: boolean;
|
|
302
|
-
push: boolean;
|
|
303
|
-
};
|
|
304
|
-
emailDigest: string;
|
|
305
|
-
dateFormat: string;
|
|
306
|
-
timeFormat: string;
|
|
307
|
-
};
|
|
308
|
-
isEmailVerified: boolean;
|
|
309
|
-
mfaEnabled: boolean;
|
|
310
|
-
suspended: boolean;
|
|
311
|
-
whitelist: boolean;
|
|
312
|
-
ipWhitelist: string[];
|
|
313
|
-
createdAt: string;
|
|
314
|
-
updatedAt: string;
|
|
315
|
-
} | null>;
|
|
316
|
-
isLoading: vue.Ref<boolean, boolean>;
|
|
317
|
-
isAuthenticated: vue.Ref<boolean, boolean>;
|
|
318
|
-
refresh: () => Promise<void>;
|
|
94
|
+
interface IUseSessionReturn {
|
|
95
|
+
user: Ref<IUserDTO | null>;
|
|
96
|
+
isLoading: Ref<boolean>;
|
|
97
|
+
isAuthenticated: Ref<boolean>;
|
|
98
|
+
refresh: (opts?: {
|
|
99
|
+
force?: boolean;
|
|
100
|
+
}) => Promise<void>;
|
|
319
101
|
logout: (refreshToken?: string) => Promise<void>;
|
|
320
|
-
}
|
|
102
|
+
}
|
|
103
|
+
declare function useSession(client?: AuthClient): IUseSessionReturn;
|
|
321
104
|
|
|
322
|
-
|
|
105
|
+
interface IUseVerifyEmailReturn {
|
|
323
106
|
verifyEmail: (pin: string) => Promise<IVerifyEmailResult>;
|
|
324
107
|
resend: () => Promise<void>;
|
|
325
|
-
resent:
|
|
326
|
-
isLoading:
|
|
327
|
-
error:
|
|
328
|
-
data:
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
} | null, IVerifyEmailResult | {
|
|
332
|
-
verified: boolean;
|
|
333
|
-
email: string;
|
|
334
|
-
} | null>;
|
|
335
|
-
};
|
|
108
|
+
resent: Ref<boolean>;
|
|
109
|
+
isLoading: Ref<boolean>;
|
|
110
|
+
error: Ref<FonderieApiError | null>;
|
|
111
|
+
data: Ref<IVerifyEmailResult | null>;
|
|
112
|
+
}
|
|
113
|
+
declare function useVerifyEmail(client?: AuthClient): IUseVerifyEmailReturn;
|
|
336
114
|
|
|
337
115
|
declare const TOKEN_KEY = "fonderie_access_token";
|
|
338
116
|
declare function persistToken(token: string): void;
|
|
339
117
|
declare function clearToken(): void;
|
|
340
118
|
declare function readToken(): string | null;
|
|
341
119
|
|
|
342
|
-
export { type IUseAccountDataReturn, type IUseChangePasswordReturn, type IUseMfaLoginReturn, type IUseMfaSetupReturn, type IUseProfileReturn, TOKEN_KEY, clearToken, persistToken, readToken, useAccountData, useChangePassword, useForgotPassword, useLogin, useLogout, useMfaLogin, useMfaSetup, useProfile, useRegister, useResetPassword, useSession, useVerifyEmail };
|
|
120
|
+
export { type IUseAccountDataReturn, type IUseChangePasswordReturn, type IUseForgotPasswordReturn, type IUseLoginReturn, type IUseLogoutReturn, type IUseMfaLoginReturn, type IUseMfaSetupReturn, type IUseProfileReturn, type IUseRegisterReturn, type IUseResetPasswordReturn, type IUseSessionReturn, type IUseVerifyEmailReturn, TOKEN_KEY, clearToken, persistToken, readToken, useAccountData, useChangePassword, useForgotPassword, useLogin, useLogout, useMfaLogin, useMfaSetup, useProfile, useRegister, useResetPassword, useSession, useVerifyEmail };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { FonderieApiError, AuthClient, IChangePasswordInput, ILoginInput, ILoginResult, IMfaRequiredResult, IMfaSetupResult, IMfaEnabledResult, IUserDTO, IUpdateProfileInput, IUpdatePreferencesInput, IRegisterInput, IRegisterResult, IResetPasswordInput, IVerifyEmailResult } from '@fonderie/client';
|
|
2
2
|
export { AuthClient, FonderieApiError, IChangePasswordInput, ILoginInput, ILoginResult, IMfaEnabledResult, IMfaRequiredResult, IMfaSetupResult, IRegisterInput, IRegisterResult, IResetPasswordInput, ITokens, IUpdatePreferencesInput, IUpdateProfileInput, IUserDTO, IVerifyEmailResult, isMfaRequired } from '@fonderie/client';
|
|
3
|
-
import * as vue from 'vue';
|
|
4
3
|
import { Ref } from 'vue';
|
|
5
4
|
|
|
6
5
|
interface IUseAccountDataReturn {
|
|
@@ -19,108 +18,29 @@ interface IUseChangePasswordReturn {
|
|
|
19
18
|
}
|
|
20
19
|
declare function useChangePassword(client?: AuthClient): IUseChangePasswordReturn;
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
interface IUseForgotPasswordReturn {
|
|
23
22
|
forgotPassword: (email: string) => Promise<void>;
|
|
24
|
-
isLoading:
|
|
25
|
-
error:
|
|
26
|
-
sent:
|
|
27
|
-
}
|
|
23
|
+
isLoading: Ref<boolean>;
|
|
24
|
+
error: Ref<FonderieApiError | null>;
|
|
25
|
+
sent: Ref<boolean>;
|
|
26
|
+
}
|
|
27
|
+
declare function useForgotPassword(client?: AuthClient): IUseForgotPasswordReturn;
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
interface IUseLoginReturn {
|
|
30
30
|
login: (input: ILoginInput) => Promise<ILoginResult | IMfaRequiredResult>;
|
|
31
|
-
isLoading:
|
|
32
|
-
error:
|
|
33
|
-
data:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
user: {
|
|
39
|
-
id: string;
|
|
40
|
-
email: string;
|
|
41
|
-
firstName: string;
|
|
42
|
-
lastName: string;
|
|
43
|
-
phone: string;
|
|
44
|
-
profileImageUrl: string;
|
|
45
|
-
isActive: boolean;
|
|
46
|
-
lastLogin: string;
|
|
47
|
-
skills: {
|
|
48
|
-
name: string;
|
|
49
|
-
level: string;
|
|
50
|
-
}[];
|
|
51
|
-
preferences: {
|
|
52
|
-
locale: string;
|
|
53
|
-
timezone: string;
|
|
54
|
-
notifications: {
|
|
55
|
-
email: boolean;
|
|
56
|
-
inApp: boolean;
|
|
57
|
-
sms: boolean;
|
|
58
|
-
push: boolean;
|
|
59
|
-
};
|
|
60
|
-
emailDigest: string;
|
|
61
|
-
dateFormat: string;
|
|
62
|
-
timeFormat: string;
|
|
63
|
-
};
|
|
64
|
-
isEmailVerified: boolean;
|
|
65
|
-
mfaEnabled: boolean;
|
|
66
|
-
suspended: boolean;
|
|
67
|
-
whitelist: boolean;
|
|
68
|
-
ipWhitelist: string[];
|
|
69
|
-
createdAt: string;
|
|
70
|
-
updatedAt: string;
|
|
71
|
-
};
|
|
72
|
-
} | null, ILoginResult | {
|
|
73
|
-
tokens: {
|
|
74
|
-
access: string;
|
|
75
|
-
refresh: string;
|
|
76
|
-
};
|
|
77
|
-
user: {
|
|
78
|
-
id: string;
|
|
79
|
-
email: string;
|
|
80
|
-
firstName: string;
|
|
81
|
-
lastName: string;
|
|
82
|
-
phone: string;
|
|
83
|
-
profileImageUrl: string;
|
|
84
|
-
isActive: boolean;
|
|
85
|
-
lastLogin: string;
|
|
86
|
-
skills: {
|
|
87
|
-
name: string;
|
|
88
|
-
level: string;
|
|
89
|
-
}[];
|
|
90
|
-
preferences: {
|
|
91
|
-
locale: string;
|
|
92
|
-
timezone: string;
|
|
93
|
-
notifications: {
|
|
94
|
-
email: boolean;
|
|
95
|
-
inApp: boolean;
|
|
96
|
-
sms: boolean;
|
|
97
|
-
push: boolean;
|
|
98
|
-
};
|
|
99
|
-
emailDigest: string;
|
|
100
|
-
dateFormat: string;
|
|
101
|
-
timeFormat: string;
|
|
102
|
-
};
|
|
103
|
-
isEmailVerified: boolean;
|
|
104
|
-
mfaEnabled: boolean;
|
|
105
|
-
suspended: boolean;
|
|
106
|
-
whitelist: boolean;
|
|
107
|
-
ipWhitelist: string[];
|
|
108
|
-
createdAt: string;
|
|
109
|
-
updatedAt: string;
|
|
110
|
-
};
|
|
111
|
-
} | null>;
|
|
112
|
-
mfaPending: vue.Ref<{
|
|
113
|
-
mfaToken: string;
|
|
114
|
-
} | null, IMfaRequiredResult | {
|
|
115
|
-
mfaToken: string;
|
|
116
|
-
} | null>;
|
|
117
|
-
};
|
|
31
|
+
isLoading: Ref<boolean>;
|
|
32
|
+
error: Ref<FonderieApiError | null>;
|
|
33
|
+
data: Ref<ILoginResult | null>;
|
|
34
|
+
mfaPending: Ref<IMfaRequiredResult | null>;
|
|
35
|
+
}
|
|
36
|
+
declare function useLogin(client?: AuthClient): IUseLoginReturn;
|
|
118
37
|
|
|
119
|
-
|
|
38
|
+
interface IUseLogoutReturn {
|
|
120
39
|
logout: (refreshToken?: string) => Promise<void>;
|
|
121
|
-
isLoading:
|
|
122
|
-
error:
|
|
123
|
-
}
|
|
40
|
+
isLoading: Ref<boolean>;
|
|
41
|
+
error: Ref<FonderieApiError | null>;
|
|
42
|
+
}
|
|
43
|
+
declare function useLogout(client?: AuthClient): IUseLogoutReturn;
|
|
124
44
|
|
|
125
45
|
interface IUseMfaLoginReturn {
|
|
126
46
|
verifyLogin: (mfaToken: string, code: string) => Promise<ILoginResult>;
|
|
@@ -143,7 +63,9 @@ declare function useMfaSetup(client?: AuthClient): IUseMfaSetupReturn;
|
|
|
143
63
|
|
|
144
64
|
interface IUseProfileReturn {
|
|
145
65
|
user: Ref<IUserDTO | null>;
|
|
146
|
-
refresh: (
|
|
66
|
+
refresh: (opts?: {
|
|
67
|
+
force?: boolean;
|
|
68
|
+
}) => Promise<void>;
|
|
147
69
|
updateProfile: (input: IUpdateProfileInput) => Promise<IUserDTO>;
|
|
148
70
|
updatePreferences: (input: IUpdatePreferencesInput) => Promise<IUserDTO>;
|
|
149
71
|
updateEmail: (email: string) => Promise<void>;
|
|
@@ -153,190 +75,46 @@ interface IUseProfileReturn {
|
|
|
153
75
|
}
|
|
154
76
|
declare function useProfile(client?: AuthClient): IUseProfileReturn;
|
|
155
77
|
|
|
156
|
-
|
|
78
|
+
interface IUseRegisterReturn {
|
|
157
79
|
register: (input: IRegisterInput) => Promise<IRegisterResult>;
|
|
158
|
-
isLoading:
|
|
159
|
-
error:
|
|
160
|
-
data:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
refresh: string;
|
|
164
|
-
};
|
|
165
|
-
user: {
|
|
166
|
-
id: string;
|
|
167
|
-
email: string;
|
|
168
|
-
firstName: string;
|
|
169
|
-
lastName: string;
|
|
170
|
-
phone: string;
|
|
171
|
-
profileImageUrl: string;
|
|
172
|
-
isActive: boolean;
|
|
173
|
-
lastLogin: string;
|
|
174
|
-
skills: {
|
|
175
|
-
name: string;
|
|
176
|
-
level: string;
|
|
177
|
-
}[];
|
|
178
|
-
preferences: {
|
|
179
|
-
locale: string;
|
|
180
|
-
timezone: string;
|
|
181
|
-
notifications: {
|
|
182
|
-
email: boolean;
|
|
183
|
-
inApp: boolean;
|
|
184
|
-
sms: boolean;
|
|
185
|
-
push: boolean;
|
|
186
|
-
};
|
|
187
|
-
emailDigest: string;
|
|
188
|
-
dateFormat: string;
|
|
189
|
-
timeFormat: string;
|
|
190
|
-
};
|
|
191
|
-
isEmailVerified: boolean;
|
|
192
|
-
mfaEnabled: boolean;
|
|
193
|
-
suspended: boolean;
|
|
194
|
-
whitelist: boolean;
|
|
195
|
-
ipWhitelist: string[];
|
|
196
|
-
createdAt: string;
|
|
197
|
-
updatedAt: string;
|
|
198
|
-
};
|
|
199
|
-
} | null, IRegisterResult | {
|
|
200
|
-
tokens: {
|
|
201
|
-
access: string;
|
|
202
|
-
refresh: string;
|
|
203
|
-
};
|
|
204
|
-
user: {
|
|
205
|
-
id: string;
|
|
206
|
-
email: string;
|
|
207
|
-
firstName: string;
|
|
208
|
-
lastName: string;
|
|
209
|
-
phone: string;
|
|
210
|
-
profileImageUrl: string;
|
|
211
|
-
isActive: boolean;
|
|
212
|
-
lastLogin: string;
|
|
213
|
-
skills: {
|
|
214
|
-
name: string;
|
|
215
|
-
level: string;
|
|
216
|
-
}[];
|
|
217
|
-
preferences: {
|
|
218
|
-
locale: string;
|
|
219
|
-
timezone: string;
|
|
220
|
-
notifications: {
|
|
221
|
-
email: boolean;
|
|
222
|
-
inApp: boolean;
|
|
223
|
-
sms: boolean;
|
|
224
|
-
push: boolean;
|
|
225
|
-
};
|
|
226
|
-
emailDigest: string;
|
|
227
|
-
dateFormat: string;
|
|
228
|
-
timeFormat: string;
|
|
229
|
-
};
|
|
230
|
-
isEmailVerified: boolean;
|
|
231
|
-
mfaEnabled: boolean;
|
|
232
|
-
suspended: boolean;
|
|
233
|
-
whitelist: boolean;
|
|
234
|
-
ipWhitelist: string[];
|
|
235
|
-
createdAt: string;
|
|
236
|
-
updatedAt: string;
|
|
237
|
-
};
|
|
238
|
-
} | null>;
|
|
239
|
-
};
|
|
80
|
+
isLoading: Ref<boolean>;
|
|
81
|
+
error: Ref<FonderieApiError | null>;
|
|
82
|
+
data: Ref<IRegisterResult | null>;
|
|
83
|
+
}
|
|
84
|
+
declare function useRegister(client?: AuthClient): IUseRegisterReturn;
|
|
240
85
|
|
|
241
|
-
|
|
86
|
+
interface IUseResetPasswordReturn {
|
|
242
87
|
resetPassword: (input: IResetPasswordInput) => Promise<void>;
|
|
243
|
-
isLoading:
|
|
244
|
-
error:
|
|
245
|
-
done:
|
|
246
|
-
}
|
|
88
|
+
isLoading: Ref<boolean>;
|
|
89
|
+
error: Ref<FonderieApiError | null>;
|
|
90
|
+
done: Ref<boolean>;
|
|
91
|
+
}
|
|
92
|
+
declare function useResetPassword(client?: AuthClient): IUseResetPasswordReturn;
|
|
247
93
|
|
|
248
|
-
|
|
249
|
-
user:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
profileImageUrl: string;
|
|
256
|
-
isActive: boolean;
|
|
257
|
-
lastLogin: string;
|
|
258
|
-
skills: {
|
|
259
|
-
name: string;
|
|
260
|
-
level: string;
|
|
261
|
-
}[];
|
|
262
|
-
preferences: {
|
|
263
|
-
locale: string;
|
|
264
|
-
timezone: string;
|
|
265
|
-
notifications: {
|
|
266
|
-
email: boolean;
|
|
267
|
-
inApp: boolean;
|
|
268
|
-
sms: boolean;
|
|
269
|
-
push: boolean;
|
|
270
|
-
};
|
|
271
|
-
emailDigest: string;
|
|
272
|
-
dateFormat: string;
|
|
273
|
-
timeFormat: string;
|
|
274
|
-
};
|
|
275
|
-
isEmailVerified: boolean;
|
|
276
|
-
mfaEnabled: boolean;
|
|
277
|
-
suspended: boolean;
|
|
278
|
-
whitelist: boolean;
|
|
279
|
-
ipWhitelist: string[];
|
|
280
|
-
createdAt: string;
|
|
281
|
-
updatedAt: string;
|
|
282
|
-
} | null, IUserDTO | {
|
|
283
|
-
id: string;
|
|
284
|
-
email: string;
|
|
285
|
-
firstName: string;
|
|
286
|
-
lastName: string;
|
|
287
|
-
phone: string;
|
|
288
|
-
profileImageUrl: string;
|
|
289
|
-
isActive: boolean;
|
|
290
|
-
lastLogin: string;
|
|
291
|
-
skills: {
|
|
292
|
-
name: string;
|
|
293
|
-
level: string;
|
|
294
|
-
}[];
|
|
295
|
-
preferences: {
|
|
296
|
-
locale: string;
|
|
297
|
-
timezone: string;
|
|
298
|
-
notifications: {
|
|
299
|
-
email: boolean;
|
|
300
|
-
inApp: boolean;
|
|
301
|
-
sms: boolean;
|
|
302
|
-
push: boolean;
|
|
303
|
-
};
|
|
304
|
-
emailDigest: string;
|
|
305
|
-
dateFormat: string;
|
|
306
|
-
timeFormat: string;
|
|
307
|
-
};
|
|
308
|
-
isEmailVerified: boolean;
|
|
309
|
-
mfaEnabled: boolean;
|
|
310
|
-
suspended: boolean;
|
|
311
|
-
whitelist: boolean;
|
|
312
|
-
ipWhitelist: string[];
|
|
313
|
-
createdAt: string;
|
|
314
|
-
updatedAt: string;
|
|
315
|
-
} | null>;
|
|
316
|
-
isLoading: vue.Ref<boolean, boolean>;
|
|
317
|
-
isAuthenticated: vue.Ref<boolean, boolean>;
|
|
318
|
-
refresh: () => Promise<void>;
|
|
94
|
+
interface IUseSessionReturn {
|
|
95
|
+
user: Ref<IUserDTO | null>;
|
|
96
|
+
isLoading: Ref<boolean>;
|
|
97
|
+
isAuthenticated: Ref<boolean>;
|
|
98
|
+
refresh: (opts?: {
|
|
99
|
+
force?: boolean;
|
|
100
|
+
}) => Promise<void>;
|
|
319
101
|
logout: (refreshToken?: string) => Promise<void>;
|
|
320
|
-
}
|
|
102
|
+
}
|
|
103
|
+
declare function useSession(client?: AuthClient): IUseSessionReturn;
|
|
321
104
|
|
|
322
|
-
|
|
105
|
+
interface IUseVerifyEmailReturn {
|
|
323
106
|
verifyEmail: (pin: string) => Promise<IVerifyEmailResult>;
|
|
324
107
|
resend: () => Promise<void>;
|
|
325
|
-
resent:
|
|
326
|
-
isLoading:
|
|
327
|
-
error:
|
|
328
|
-
data:
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
} | null, IVerifyEmailResult | {
|
|
332
|
-
verified: boolean;
|
|
333
|
-
email: string;
|
|
334
|
-
} | null>;
|
|
335
|
-
};
|
|
108
|
+
resent: Ref<boolean>;
|
|
109
|
+
isLoading: Ref<boolean>;
|
|
110
|
+
error: Ref<FonderieApiError | null>;
|
|
111
|
+
data: Ref<IVerifyEmailResult | null>;
|
|
112
|
+
}
|
|
113
|
+
declare function useVerifyEmail(client?: AuthClient): IUseVerifyEmailReturn;
|
|
336
114
|
|
|
337
115
|
declare const TOKEN_KEY = "fonderie_access_token";
|
|
338
116
|
declare function persistToken(token: string): void;
|
|
339
117
|
declare function clearToken(): void;
|
|
340
118
|
declare function readToken(): string | null;
|
|
341
119
|
|
|
342
|
-
export { type IUseAccountDataReturn, type IUseChangePasswordReturn, type IUseMfaLoginReturn, type IUseMfaSetupReturn, type IUseProfileReturn, TOKEN_KEY, clearToken, persistToken, readToken, useAccountData, useChangePassword, useForgotPassword, useLogin, useLogout, useMfaLogin, useMfaSetup, useProfile, useRegister, useResetPassword, useSession, useVerifyEmail };
|
|
120
|
+
export { type IUseAccountDataReturn, type IUseChangePasswordReturn, type IUseForgotPasswordReturn, type IUseLoginReturn, type IUseLogoutReturn, type IUseMfaLoginReturn, type IUseMfaSetupReturn, type IUseProfileReturn, type IUseRegisterReturn, type IUseResetPasswordReturn, type IUseSessionReturn, type IUseVerifyEmailReturn, TOKEN_KEY, clearToken, persistToken, readToken, useAccountData, useChangePassword, useForgotPassword, useLogin, useLogout, useMfaLogin, useMfaSetup, useProfile, useRegister, useResetPassword, useSession, useVerifyEmail };
|
package/dist/index.js
CHANGED
|
@@ -248,17 +248,17 @@ function useMfaSetup(client) {
|
|
|
248
248
|
// src/composables/useProfile.ts
|
|
249
249
|
import { FonderieApiError as FonderieApiError8 } from "@fonderie/client";
|
|
250
250
|
import { useFonderieSubClient as useFonderieSubClient8 } from "@fonderie/vue";
|
|
251
|
-
import { ref as ref8 } from "vue";
|
|
251
|
+
import { onMounted, ref as ref8 } from "vue";
|
|
252
252
|
function useProfile(client) {
|
|
253
253
|
const auth = useFonderieSubClient8(client, (c) => c.auth, "useProfile");
|
|
254
254
|
const user = ref8(null);
|
|
255
255
|
const isLoading = ref8(true);
|
|
256
256
|
const error = ref8(null);
|
|
257
|
-
async function refresh() {
|
|
257
|
+
async function refresh(opts) {
|
|
258
258
|
isLoading.value = true;
|
|
259
259
|
error.value = null;
|
|
260
260
|
try {
|
|
261
|
-
const { result } = await auth.getUser();
|
|
261
|
+
const { result } = await auth.getUser({ bust: opts?.force });
|
|
262
262
|
user.value = result.user;
|
|
263
263
|
} catch (err) {
|
|
264
264
|
const apiError = err instanceof FonderieApiError8 ? err : new FonderieApiError8("unknown", String(err), 0);
|
|
@@ -303,7 +303,7 @@ function useProfile(client) {
|
|
|
303
303
|
await refresh();
|
|
304
304
|
});
|
|
305
305
|
}
|
|
306
|
-
void refresh();
|
|
306
|
+
onMounted(() => void refresh());
|
|
307
307
|
return { user, refresh, updateProfile, updatePreferences, updateEmail, updatePhone, isLoading, error };
|
|
308
308
|
}
|
|
309
309
|
|
|
@@ -364,16 +364,16 @@ function useResetPassword(client) {
|
|
|
364
364
|
|
|
365
365
|
// src/composables/useSession.ts
|
|
366
366
|
import { useFonderieSubClient as useFonderieSubClient11 } from "@fonderie/vue";
|
|
367
|
-
import { ref as ref11 } from "vue";
|
|
367
|
+
import { onMounted as onMounted2, ref as ref11 } from "vue";
|
|
368
368
|
function useSession(client) {
|
|
369
369
|
const auth = useFonderieSubClient11(client, (c) => c.auth, "useSession");
|
|
370
370
|
const user = ref11(null);
|
|
371
371
|
const isLoading = ref11(true);
|
|
372
372
|
const isAuthenticated = ref11(false);
|
|
373
|
-
async function refresh() {
|
|
373
|
+
async function refresh(opts) {
|
|
374
374
|
isLoading.value = true;
|
|
375
375
|
try {
|
|
376
|
-
const { result } = await auth.getUser();
|
|
376
|
+
const { result } = await auth.getUser({ bust: opts?.force });
|
|
377
377
|
user.value = result.user;
|
|
378
378
|
isAuthenticated.value = true;
|
|
379
379
|
} catch {
|
|
@@ -397,7 +397,7 @@ function useSession(client) {
|
|
|
397
397
|
}
|
|
398
398
|
const token = readToken();
|
|
399
399
|
if (token) auth.setAccessToken(token);
|
|
400
|
-
void refresh();
|
|
400
|
+
onMounted2(() => void refresh());
|
|
401
401
|
return { user, isLoading, isAuthenticated, refresh, logout };
|
|
402
402
|
}
|
|
403
403
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/composables/useAccountData.ts","../src/storage.ts","../src/composables/useChangePassword.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/composables/useLogout.ts","../src/composables/useMfaLogin.ts","../src/composables/useMfaSetup.ts","../src/composables/useProfile.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tIChangePasswordInput,\n\tILoginInput,\n\tILoginResult,\n\tIMfaEnabledResult,\n\tIMfaRequiredResult,\n\tIMfaSetupResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport type {\n\tIUseAccountDataReturn,\n\tIUseChangePasswordReturn,\n\tIUseMfaLoginReturn,\n\tIUseMfaSetupReturn,\n\tIUseProfileReturn,\n} from './composables';\nexport {\n\tuseAccountData,\n\tuseChangePassword,\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseMfaLogin,\n\tuseMfaSetup,\n\tuseProfile,\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport interface IUseAccountDataReturn {\n\t// GET /users/export — the caller's own data as a portable bundle (SAR).\n\texportData: () => Promise<unknown>;\n\t// Deletes the account, then tears the session down like a logout.\n\tdeleteUser: () => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useAccountData(client?: AuthClient): IUseAccountDataReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useAccountData');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction exportData() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.exportData();\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction deleteUser() {\n\t\treturn run(async () => {\n\t\t\tawait auth.deleteUser();\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t});\n\t}\n\n\treturn { exportData, deleteUser, isLoading, error };\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, IChangePasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseChangePasswordReturn {\n\tchangePassword: (input: IChangePasswordInput) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdone: Ref<boolean>;\n}\n\nexport function useChangePassword(client?: AuthClient): IUseChangePasswordReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useChangePassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function changePassword(input: IChangePasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tdone.value = false;\n\t\ttry {\n\t\t\tawait auth.changePassword(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 { changePassword, isLoading, error, done };\n}\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","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, IMfaEnabledResult, IMfaSetupResult } 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 IUseMfaSetupReturn {\n\t// Step 1: request enrollment — returns a data-URI QR code to scan and the\n\t// one-time backup codes generated at setup.\n\tsetup: () => Promise<IMfaSetupResult>;\n\tsetupData: Ref<IMfaSetupResult | null>;\n\t// Step 2: verify the first TOTP code. The server rotates the session's\n\t// tokens on success — the composable persists them exactly like a login,\n\t// so the session stays valid after enrollment.\n\tverify: (code: string) => Promise<IMfaEnabledResult>;\n\tdisable: (code: string) => Promise<void>;\n\tregenerateBackupCodes: (code: string) => Promise<string[]>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useMfaSetup(client?: AuthClient): IUseMfaSetupReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useMfaSetup');\n\tconst setupData = ref<IMfaSetupResult | null>(null);\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction setup() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.setup();\n\t\t\tsetupData.value = result;\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction verify(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.verify(code);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction disable(code: string) {\n\t\treturn run(async () => {\n\t\t\tawait auth.mfa.disable(code);\n\t\t});\n\t}\n\n\tfunction regenerateBackupCodes(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.regenerateBackupCodes(code);\n\t\t\treturn result.backupCodes;\n\t\t});\n\t}\n\n\treturn { setup, setupData, verify, disable, regenerateBackupCodes, isLoading, error };\n}\n","import type {\n\tAuthClient,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseProfileReturn {\n\tuser: Ref<IUserDTO | null>;\n\trefresh: () => Promise<void>;\n\tupdateProfile: (input: IUpdateProfileInput) => Promise<IUserDTO>;\n\tupdatePreferences: (input: IUpdatePreferencesInput) => Promise<IUserDTO>;\n\t// Email/phone changes re-fetch the profile (their endpoints don't return it).\n\tupdateEmail: (email: string) => Promise<void>;\n\tupdatePhone: (phone: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useProfile(client?: AuthClient): IUseProfileReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useProfile');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function refresh() {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser();\n\t\t\tuser.value = result.user;\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\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function mutate<T>(op: () => Promise<T>): Promise<T> {\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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}\n\t}\n\n\tfunction updateProfile(input: IUpdateProfileInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updateProfile(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updatePreferences(input: IUpdatePreferencesInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updatePreferences(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updateEmail(email: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updateEmail(email);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tfunction updatePhone(phone: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updatePhone(phone);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tvoid refresh();\n\n\treturn { user, refresh, updateProfile, updatePreferences, updateEmail, updatePhone, 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\tconst resent = ref(false);\n\n\t// Re-sends the verification email — the other half of the same lifecycle,\n\t// so one composable owns both and screens don't split loading/error handling.\n\tasync function resend() {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tresent.value = false;\n\t\ttry {\n\t\t\tawait auth.sendVerificationEmail();\n\t\t\tresent.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\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, resend, resent, isLoading, error, data };\n}\n"],"mappings":"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","names":["FonderieApiError","isMfaRequired","FonderieApiError","useFonderieSubClient","ref","FonderieApiError","useFonderieSubClient","ref","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","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/useAccountData.ts","../src/storage.ts","../src/composables/useChangePassword.ts","../src/composables/useForgotPassword.ts","../src/composables/useLogin.ts","../src/composables/useLogout.ts","../src/composables/useMfaLogin.ts","../src/composables/useMfaSetup.ts","../src/composables/useProfile.ts","../src/composables/useRegister.ts","../src/composables/useResetPassword.ts","../src/composables/useSession.ts","../src/composables/useVerifyEmail.ts"],"sourcesContent":["export type {\n\tAuthClient,\n\tIChangePasswordInput,\n\tILoginInput,\n\tILoginResult,\n\tIMfaEnabledResult,\n\tIMfaRequiredResult,\n\tIMfaSetupResult,\n\tIRegisterInput,\n\tIRegisterResult,\n\tIResetPasswordInput,\n\tITokens,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n\tIVerifyEmailResult,\n} from '@fonderie/client';\n\nexport { FonderieApiError, isMfaRequired } from '@fonderie/client';\n\nexport type {\n\tIUseAccountDataReturn,\n\tIUseChangePasswordReturn,\n\tIUseForgotPasswordReturn,\n\tIUseLoginReturn,\n\tIUseLogoutReturn,\n\tIUseMfaLoginReturn,\n\tIUseMfaSetupReturn,\n\tIUseProfileReturn,\n\tIUseRegisterReturn,\n\tIUseResetPasswordReturn,\n\tIUseSessionReturn,\n\tIUseVerifyEmailReturn,\n} from './composables';\nexport {\n\tuseAccountData,\n\tuseChangePassword,\n\tuseForgotPassword,\n\tuseLogin,\n\tuseLogout,\n\tuseMfaLogin,\n\tuseMfaSetup,\n\tuseProfile,\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport interface IUseAccountDataReturn {\n\t// GET /users/export — the caller's own data as a portable bundle (SAR).\n\texportData: () => Promise<unknown>;\n\t// Deletes the account, then tears the session down like a logout.\n\tdeleteUser: () => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useAccountData(client?: AuthClient): IUseAccountDataReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useAccountData');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction exportData() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.exportData();\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction deleteUser() {\n\t\treturn run(async () => {\n\t\t\tawait auth.deleteUser();\n\t\t\tauth.setAccessToken(undefined);\n\t\t\tclearToken();\n\t\t});\n\t}\n\n\treturn { exportData, deleteUser, isLoading, error };\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, IChangePasswordInput } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseChangePasswordReturn {\n\tchangePassword: (input: IChangePasswordInput) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdone: Ref<boolean>;\n}\n\nexport function useChangePassword(client?: AuthClient): IUseChangePasswordReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useChangePassword');\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\tconst done = ref(false);\n\n\tasync function changePassword(input: IChangePasswordInput) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tdone.value = false;\n\t\ttry {\n\t\t\tawait auth.changePassword(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 { changePassword, isLoading, error, done };\n}\n","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseForgotPasswordReturn {\n\tforgotPassword: (email: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tsent: Ref<boolean>;\n}\n\nexport function useForgotPassword(client?: AuthClient): IUseForgotPasswordReturn {\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { persistToken } from '../storage';\n\nexport interface IUseLoginReturn {\n\tlogin: (input: ILoginInput) => Promise<ILoginResult | IMfaRequiredResult>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<ILoginResult | null>;\n\t// Set when the account requires MFA: no tokens were issued — complete the\n\t// login with client.auth.mfa.verifyLogin(mfaPending.value.mfaToken, code).\n\tmfaPending: Ref<IMfaRequiredResult | null>;\n}\n\nexport function useLogin(client?: AuthClient): IUseLoginReturn {\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","import type { AuthClient } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { clearToken } from '../storage';\n\nexport interface IUseLogoutReturn {\n\tlogout: (refreshToken?: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useLogout(client?: AuthClient): IUseLogoutReturn {\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, IMfaEnabledResult, IMfaSetupResult } 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 IUseMfaSetupReturn {\n\t// Step 1: request enrollment — returns a data-URI QR code to scan and the\n\t// one-time backup codes generated at setup.\n\tsetup: () => Promise<IMfaSetupResult>;\n\tsetupData: Ref<IMfaSetupResult | null>;\n\t// Step 2: verify the first TOTP code. The server rotates the session's\n\t// tokens on success — the composable persists them exactly like a login,\n\t// so the session stays valid after enrollment.\n\tverify: (code: string) => Promise<IMfaEnabledResult>;\n\tdisable: (code: string) => Promise<void>;\n\tregenerateBackupCodes: (code: string) => Promise<string[]>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useMfaSetup(client?: AuthClient): IUseMfaSetupReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useMfaSetup');\n\tconst setupData = ref<IMfaSetupResult | null>(null);\n\tconst isLoading = ref(false);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function run<T>(op: () => Promise<T>): Promise<T> {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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\tfunction setup() {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.setup();\n\t\t\tsetupData.value = result;\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction verify(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.verify(code);\n\t\t\tauth.setAccessToken(result.tokens.access);\n\t\t\tpersistToken(result.tokens.access);\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tfunction disable(code: string) {\n\t\treturn run(async () => {\n\t\t\tawait auth.mfa.disable(code);\n\t\t});\n\t}\n\n\tfunction regenerateBackupCodes(code: string) {\n\t\treturn run(async () => {\n\t\t\tconst { result } = await auth.mfa.regenerateBackupCodes(code);\n\t\t\treturn result.backupCodes;\n\t\t});\n\t}\n\n\treturn { setup, setupData, verify, disable, regenerateBackupCodes, isLoading, error };\n}\n","import type {\n\tAuthClient,\n\tIUpdatePreferencesInput,\n\tIUpdateProfileInput,\n\tIUserDTO,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useFonderieSubClient } from '@fonderie/vue';\nimport type { Ref } from 'vue';\nimport { onMounted, ref } from 'vue';\n\nexport interface IUseProfileReturn {\n\tuser: Ref<IUserDTO | null>;\n\trefresh: (opts?: { force?: boolean }) => Promise<void>;\n\tupdateProfile: (input: IUpdateProfileInput) => Promise<IUserDTO>;\n\tupdatePreferences: (input: IUpdatePreferencesInput) => Promise<IUserDTO>;\n\t// Email/phone changes re-fetch the profile (their endpoints don't return it).\n\tupdateEmail: (email: string) => Promise<void>;\n\tupdatePhone: (phone: string) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n}\n\nexport function useProfile(client?: AuthClient): IUseProfileReturn {\n\tconst auth = useFonderieSubClient(client, (c) => c.auth, 'useProfile');\n\tconst user = ref<IUserDTO | null>(null);\n\tconst isLoading = ref(true);\n\tconst error = ref<FonderieApiError | null>(null);\n\n\tasync function refresh(opts?: { force?: boolean }) {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser({ bust: opts?.force });\n\t\t\tuser.value = result.user;\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\tisLoading.value = false;\n\t\t}\n\t}\n\n\tasync function mutate<T>(op: () => Promise<T>): Promise<T> {\n\t\terror.value = null;\n\t\ttry {\n\t\t\treturn await op();\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}\n\t}\n\n\tfunction updateProfile(input: IUpdateProfileInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updateProfile(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updatePreferences(input: IUpdatePreferencesInput) {\n\t\treturn mutate(async () => {\n\t\t\tconst { result } = await auth.updatePreferences(input);\n\t\t\tuser.value = result.user;\n\t\t\treturn result.user;\n\t\t});\n\t}\n\n\tfunction updateEmail(email: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updateEmail(email);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tfunction updatePhone(phone: string) {\n\t\treturn mutate(async () => {\n\t\t\tawait auth.updatePhone(phone);\n\t\t\tawait refresh();\n\t\t});\n\t}\n\n\tonMounted(() => void refresh());\n\n\treturn { user, refresh, updateProfile, updatePreferences, updateEmail, updatePhone, isLoading, error };\n}\n","import type { AuthClient, IRegisterInput, IRegisterResult } 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 IUseRegisterReturn {\n\tregister: (input: IRegisterInput) => Promise<IRegisterResult>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<IRegisterResult | null>;\n}\n\nexport function useRegister(client?: AuthClient): IUseRegisterReturn {\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 type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseResetPasswordReturn {\n\tresetPassword: (input: IResetPasswordInput) => Promise<void>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdone: Ref<boolean>;\n}\n\nexport function useResetPassword(client?: AuthClient): IUseResetPasswordReturn {\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 type { Ref } from 'vue';\nimport { onMounted, ref } from 'vue';\nimport { clearToken, readToken } from '../storage';\n\nexport interface IUseSessionReturn {\n\tuser: Ref<IUserDTO | null>;\n\tisLoading: Ref<boolean>;\n\tisAuthenticated: Ref<boolean>;\n\trefresh: (opts?: { force?: boolean }) => Promise<void>;\n\tlogout: (refreshToken?: string) => Promise<void>;\n}\n\nexport function useSession(client?: AuthClient): IUseSessionReturn {\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(opts?: { force?: boolean }) {\n\t\tisLoading.value = true;\n\t\ttry {\n\t\t\tconst { result } = await auth.getUser({ bust: opts?.force });\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\tonMounted(() => void 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 type { Ref } from 'vue';\nimport { ref } from 'vue';\n\nexport interface IUseVerifyEmailReturn {\n\tverifyEmail: (pin: string) => Promise<IVerifyEmailResult>;\n\tresend: () => Promise<void>;\n\tresent: Ref<boolean>;\n\tisLoading: Ref<boolean>;\n\terror: Ref<FonderieApiError | null>;\n\tdata: Ref<IVerifyEmailResult | null>;\n}\n\nexport function useVerifyEmail(client?: AuthClient): IUseVerifyEmailReturn {\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\tconst resent = ref(false);\n\n\t// Re-sends the verification email — the other half of the same lifecycle,\n\t// so one composable owns both and screens don't split loading/error handling.\n\tasync function resend() {\n\t\tisLoading.value = true;\n\t\terror.value = null;\n\t\tresent.value = false;\n\t\ttry {\n\t\t\tawait auth.sendVerificationEmail();\n\t\t\tresent.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\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, resend, resent, isLoading, error, data };\n}\n"],"mappings":";AAkBA,SAAS,oBAAAA,oBAAkB,iBAAAC,sBAAqB;;;ACjBhD,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AAErC,SAAS,WAAW;;;ACJb,IAAM,YAAY;AAElB,SAAS,aAAa,OAAe;AAC3C,eAAa,QAAQ,WAAW,KAAK;AACtC;AAEO,SAAS,aAAa;AAC5B,eAAa,WAAW,SAAS;AAClC;AAEO,SAAS,YAA2B;AAC1C,SAAO,aAAa,QAAQ,SAAS;AACtC;;;ADIO,SAAS,eAAe,QAA4C;AAC1E,QAAM,OAAO,qBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,gBAAgB;AACzE,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,QAAQ,IAA6B,IAAI;AAE/C,iBAAe,IAAO,IAAkC;AACvD,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,aAAO,MAAM,GAAG;AAAA,IACjB,SAAS,KAAK;AACb,YAAM,WACL,eAAe,mBAAmB,MAAM,IAAI,iBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,WAAS,aAAa;AACrB,WAAO,IAAI,YAAY;AACtB,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,WAAW;AACzC,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAEA,WAAS,aAAa;AACrB,WAAO,IAAI,YAAY;AACtB,YAAM,KAAK,WAAW;AACtB,WAAK,eAAe,MAAS;AAC7B,iBAAW;AAAA,IACZ,CAAC;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,YAAY,WAAW,MAAM;AACnD;;;AEnDA,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AASb,SAAS,kBAAkB,QAA+C;AAChF,QAAM,OAAOD,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,mBAAmB;AAC5E,QAAM,YAAYC,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAC/C,QAAM,OAAOA,KAAI,KAAK;AAEtB,iBAAe,eAAe,OAA6B;AAC1D,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,SAAK,QAAQ;AACb,QAAI;AACH,YAAM,KAAK,eAAe,KAAK;AAC/B,WAAK,QAAQ;AAAA,IACd,SAAS,KAAK;AACb,YAAM,WACL,eAAeF,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,gBAAgB,WAAW,OAAO,KAAK;AACjD;;;ACpCA,SAAS,oBAAAG,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AASb,SAAS,kBAAkB,QAA+C;AAChF,QAAM,OAAOD,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,mBAAmB;AAC5E,QAAM,YAAYC,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAC/C,QAAM,OAAOA,KAAI,KAAK;AAEtB,iBAAe,eAAe,OAAe;AAC5C,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,KAAK,eAAe,KAAK;AAC/B,WAAK,QAAQ;AAAA,IACd,SAAS,KAAK;AACb,YAAM,WACL,eAAeF,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,gBAAgB,WAAW,OAAO,KAAK;AACjD;;;ACnCA,SAAS,oBAAAG,mBAAkB,qBAAqB;AAChD,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AAab,SAAS,SAAS,QAAsC;AAC9D,QAAM,OAAOC,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU;AACnE,QAAM,YAAYC,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAC/C,QAAM,OAAOA,KAAyB,IAAI;AAG1C,QAAM,aAAaA,KAA+B,IAAI;AAEtD,iBAAe,MAAM,OAAoB;AACxC,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,eAAW,QAAQ;AACnB,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,MAAM,KAAK;AACzC,UAAI,cAAc,MAAM,GAAG;AAC1B,mBAAW,QAAQ;AACnB,eAAO;AAAA,MACR;AACA,WAAK,eAAe,OAAO,OAAO,MAAM;AACxC,mBAAa,OAAO,OAAO,MAAM;AACjC,WAAK,QAAQ;AACb,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,WACL,eAAeC,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,OAAO,WAAW,OAAO,MAAM,WAAW;AACpD;;;AClDA,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AASb,SAAS,UAAU,QAAuC;AAChE,QAAM,OAAOC,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,WAAW;AACpE,QAAM,YAAYC,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAE/C,iBAAe,OAAO,cAAuB;AAC5C,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,KAAK,OAAO,YAAY;AAAA,IAC/B,SAAS,KAAK;AACb,YAAM,WACL,eAAeC,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AAAA,IACf,UAAE;AACD,WAAK,eAAe,MAAS;AAC7B,iBAAW;AACX,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,QAAQ,WAAW,MAAM;AACnC;;;AClCA,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AAab,SAAS,YAAY,QAAyC;AACpE,QAAM,OAAOC,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa;AACtE,QAAM,YAAYC,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAC/C,QAAM,OAAOA,KAAyB,IAAI;AAE1C,iBAAe,YAAY,UAAkB,MAAc;AAC1D,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,IAAI,YAAY,UAAU,IAAI;AAC5D,WAAK,eAAe,OAAO,OAAO,MAAM;AACxC,mBAAa,OAAO,OAAO,MAAM;AACjC,WAAK,QAAQ;AACb,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,WACL,eAAeC,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,aAAa,WAAW,OAAO,KAAK;AAC9C;;;AC1CA,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AAkBb,SAAS,YAAY,QAAyC;AACpE,QAAM,OAAOC,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa;AACtE,QAAM,YAAYC,KAA4B,IAAI;AAClD,QAAM,YAAYA,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAE/C,iBAAe,IAAO,IAAkC;AACvD,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,aAAO,MAAM,GAAG;AAAA,IACjB,SAAS,KAAK;AACb,YAAM,WACL,eAAeC,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,WAAS,QAAQ;AAChB,WAAO,IAAI,YAAY;AACtB,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,IAAI,MAAM;AACxC,gBAAU,QAAQ;AAClB,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAEA,WAAS,OAAO,MAAc;AAC7B,WAAO,IAAI,YAAY;AACtB,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,IAAI,OAAO,IAAI;AAC7C,WAAK,eAAe,OAAO,OAAO,MAAM;AACxC,mBAAa,OAAO,OAAO,MAAM;AACjC,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAEA,WAAS,QAAQ,MAAc;AAC9B,WAAO,IAAI,YAAY;AACtB,YAAM,KAAK,IAAI,QAAQ,IAAI;AAAA,IAC5B,CAAC;AAAA,EACF;AAEA,WAAS,sBAAsB,MAAc;AAC5C,WAAO,IAAI,YAAY;AACtB,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,IAAI,sBAAsB,IAAI;AAC5D,aAAO,OAAO;AAAA,IACf,CAAC;AAAA,EACF;AAEA,SAAO,EAAE,OAAO,WAAW,QAAQ,SAAS,uBAAuB,WAAW,MAAM;AACrF;;;ACpEA,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,WAAW,OAAAC,YAAW;AAcxB,SAAS,WAAW,QAAwC;AAClE,QAAM,OAAOD,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,YAAY;AACrE,QAAM,OAAOC,KAAqB,IAAI;AACtC,QAAM,YAAYA,KAAI,IAAI;AAC1B,QAAM,QAAQA,KAA6B,IAAI;AAE/C,iBAAe,QAAQ,MAA4B;AAClD,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,MAAM,MAAM,MAAM,CAAC;AAC3D,WAAK,QAAQ,OAAO;AAAA,IACrB,SAAS,KAAK;AACb,YAAM,WACL,eAAeF,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AAAA,IACf,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,iBAAe,OAAU,IAAkC;AAC1D,UAAM,QAAQ;AACd,QAAI;AACH,aAAO,MAAM,GAAG;AAAA,IACjB,SAAS,KAAK;AACb,YAAM,WACL,eAAeA,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP;AAAA,EACD;AAEA,WAAS,cAAc,OAA4B;AAClD,WAAO,OAAO,YAAY;AACzB,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,cAAc,KAAK;AACjD,WAAK,QAAQ,OAAO;AACpB,aAAO,OAAO;AAAA,IACf,CAAC;AAAA,EACF;AAEA,WAAS,kBAAkB,OAAgC;AAC1D,WAAO,OAAO,YAAY;AACzB,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,kBAAkB,KAAK;AACrD,WAAK,QAAQ,OAAO;AACpB,aAAO,OAAO;AAAA,IACf,CAAC;AAAA,EACF;AAEA,WAAS,YAAY,OAAe;AACnC,WAAO,OAAO,YAAY;AACzB,YAAM,KAAK,YAAY,KAAK;AAC5B,YAAM,QAAQ;AAAA,IACf,CAAC;AAAA,EACF;AAEA,WAAS,YAAY,OAAe;AACnC,WAAO,OAAO,YAAY;AACzB,YAAM,KAAK,YAAY,KAAK;AAC5B,YAAM,QAAQ;AAAA,IACf,CAAC;AAAA,EACF;AAEA,YAAU,MAAM,KAAK,QAAQ,CAAC;AAE9B,SAAO,EAAE,MAAM,SAAS,eAAe,mBAAmB,aAAa,aAAa,WAAW,MAAM;AACtG;;;ACxFA,SAAS,oBAAAG,yBAAwB;AACjC,SAAS,wBAAAC,6BAA4B;AAErC,SAAS,OAAAC,YAAW;AAUb,SAAS,YAAY,QAAyC;AACpE,QAAM,OAAOC,sBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa;AACtE,QAAM,YAAYC,KAAI,KAAK;AAC3B,QAAM,QAAQA,KAA6B,IAAI;AAC/C,QAAM,OAAOA,KAA4B,IAAI;AAE7C,iBAAe,SAAS,OAAuB;AAC9C,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,SAAS,KAAK;AAC5C,WAAK,eAAe,OAAO,OAAO,MAAM;AACxC,mBAAa,OAAO,OAAO,MAAM;AACjC,WAAK,QAAQ;AACb,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,WACL,eAAeC,oBAAmB,MAAM,IAAIA,kBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,UAAU,WAAW,OAAO,KAAK;AAC3C;;;ACvCA,SAAS,oBAAAC,0BAAwB;AACjC,SAAS,wBAAAC,8BAA4B;AAErC,SAAS,OAAAC,aAAW;AASb,SAAS,iBAAiB,QAA8C;AAC9E,QAAM,OAAOD,uBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,kBAAkB;AAC3E,QAAM,YAAYC,MAAI,KAAK;AAC3B,QAAM,QAAQA,MAA6B,IAAI;AAC/C,QAAM,OAAOA,MAAI,KAAK;AAEtB,iBAAe,cAAc,OAA4B;AACxD,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,KAAK,cAAc,KAAK;AAC9B,WAAK,QAAQ;AAAA,IACd,SAAS,KAAK;AACb,YAAM,WACL,eAAeF,qBAAmB,MAAM,IAAIA,mBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,eAAe,WAAW,OAAO,KAAK;AAChD;;;ACnCA,SAAS,wBAAAG,8BAA4B;AAErC,SAAS,aAAAC,YAAW,OAAAC,aAAW;AAWxB,SAAS,WAAW,QAAwC;AAClE,QAAM,OAAOC,uBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,YAAY;AACrE,QAAM,OAAOC,MAAqB,IAAI;AACtC,QAAM,YAAYA,MAAI,IAAI;AAC1B,QAAM,kBAAkBA,MAAI,KAAK;AAEjC,iBAAe,QAAQ,MAA4B;AAClD,cAAU,QAAQ;AAClB,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,MAAM,MAAM,MAAM,CAAC;AAC3D,WAAK,QAAQ,OAAO;AACpB,sBAAgB,QAAQ;AAAA,IACzB,QAAQ;AACP,WAAK,QAAQ;AACb,sBAAgB,QAAQ;AACxB,WAAK,eAAe,MAAS;AAC7B,iBAAW;AAAA,IACZ,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,iBAAe,OAAO,cAAuB;AAC5C,QAAI;AACH,YAAM,KAAK,OAAO,YAAY;AAAA,IAC/B,QAAQ;AAAA,IAER;AACA,SAAK,eAAe,MAAS;AAC7B,eAAW;AACX,SAAK,QAAQ;AACb,oBAAgB,QAAQ;AAAA,EACzB;AAEA,QAAM,QAAQ,UAAU;AACxB,MAAI,MAAO,MAAK,eAAe,KAAK;AACpC,EAAAC,WAAU,MAAM,KAAK,QAAQ,CAAC;AAE9B,SAAO,EAAE,MAAM,WAAW,iBAAiB,SAAS,OAAO;AAC5D;;;ACpDA,SAAS,oBAAAC,0BAAwB;AACjC,SAAS,wBAAAC,8BAA4B;AAErC,SAAS,OAAAC,aAAW;AAWb,SAAS,eAAe,QAA4C;AAC1E,QAAM,OAAOD,uBAAqB,QAAQ,CAAC,MAAM,EAAE,MAAM,gBAAgB;AACzE,QAAM,YAAYC,MAAI,KAAK;AAC3B,QAAM,QAAQA,MAA6B,IAAI;AAC/C,QAAM,OAAOA,MAA+B,IAAI;AAChD,QAAM,SAASA,MAAI,KAAK;AAIxB,iBAAe,SAAS;AACvB,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,WAAO,QAAQ;AACf,QAAI;AACH,YAAM,KAAK,sBAAsB;AACjC,aAAO,QAAQ;AAAA,IAChB,SAAS,KAAK;AACb,YAAM,WACL,eAAeF,qBAAmB,MAAM,IAAIA,mBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,iBAAe,YAAY,KAAa;AACvC,cAAU,QAAQ;AAClB,UAAM,QAAQ;AACd,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,MAAM,KAAK,YAAY,GAAG;AAC7C,WAAK,QAAQ;AACb,aAAO;AAAA,IACR,SAAS,KAAK;AACb,YAAM,WACL,eAAeA,qBAAmB,MAAM,IAAIA,mBAAiB,WAAW,OAAO,GAAG,GAAG,CAAC;AACvF,YAAM,QAAQ;AACd,YAAM;AAAA,IACP,UAAE;AACD,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,aAAa,QAAQ,QAAQ,WAAW,OAAO,KAAK;AAC9D;","names":["FonderieApiError","isMfaRequired","FonderieApiError","useFonderieSubClient","ref","FonderieApiError","useFonderieSubClient","ref","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","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","ref","FonderieApiError","FonderieApiError","useFonderieSubClient","ref","useFonderieSubClient","onMounted","ref","useFonderieSubClient","ref","onMounted","FonderieApiError","useFonderieSubClient","ref"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fonderie/vue-auth",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Vue composables for Fonderie auth
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "Vue composables for Fonderie auth \u2014 thin bindings over @fonderie/client.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fonderiejs",
|
|
7
7
|
"vue",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@fonderie/vue": "*"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"vue": ">=3.
|
|
41
|
+
"vue": ">=3.3.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^26.2.0",
|