{"version":3,"file":"auth0-vue.cjs","sources":["../../src/token.ts","../../src/version.ts","../../src/utils.ts","../../src/plugin.ts","../../src/guard.ts","../../src/index.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport type { Auth0VueClient } from './interfaces';\n\n/**\n * @ignore\n */\nexport const AUTH0_TOKEN = '$auth0';\n\n/**\n * Injection token used to `provide` the `Auth0VueClient` instance. Can be used to pass to `inject()`\n *\n * ```js\n * inject(AUTH0_INJECTION_KEY)\n * ```\n */\nexport const AUTH0_INJECTION_KEY: InjectionKey<Auth0VueClient> =\n  Symbol(AUTH0_TOKEN);\n","export default '2.3.1';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { watchEffect } from 'vue';\n\n/**\n * @ignore\n * Run watchEffect untill the watcher returns true, then stop the watch.\n * Once it returns true, the promise will resolve.\n */\nexport function watchEffectOnceAsync<T>(watcher: () => T) {\n  return new Promise<void>(resolve => {\n    watchEffectOnce(watcher, resolve);\n  });\n}\n\n/**\n * @ignore\n * Run watchEffect untill the watcher returns true, then stop the watch.\n * Once it returns true, it will call the provided function.\n */\nexport function watchEffectOnce<T>(watcher: () => T, fn: Function) {\n  const stopWatch = watchEffect(() => {\n    if (watcher()) {\n      fn();\n      stopWatch();\n    }\n  });\n}\n\n/**\n * @ignore\n * Helper function to bind methods to itself, useful when using Vue's `provide` / `inject` API's.\n */\nexport function bindPluginMethods(plugin: any, exclude: string[]) {\n  Object.getOwnPropertyNames(Object.getPrototypeOf(plugin))\n    .filter(method => !exclude.includes(method))\n    // eslint-disable-next-line security/detect-object-injection\n    .forEach(method => (plugin[method] = plugin[method].bind(plugin)));\n}\n\n/**\n * @ignore\n * Helper function to map the v1 `redirect_uri` option to the v2 `authorizationParams.redirect_uri`\n * and log a warning.\n */\nexport function deprecateRedirectUri(options?: any) {\n  if (options?.redirect_uri) {\n    console.warn(\n      'Using `redirect_uri` has been deprecated, please use `authorizationParams.redirect_uri` instead as `redirectUri` will be no longer supported in a future version'\n    );\n    options.authorizationParams = options.authorizationParams || {};\n    options.authorizationParams.redirect_uri = options.redirect_uri;\n    delete options.redirect_uri;\n  }\n}\n","import type { App, Ref } from 'vue';\nimport { ref } from 'vue';\nimport type { Router } from 'vue-router';\nimport type {\n  AppState,\n  Auth0PluginOptions,\n  Auth0VueClient,\n  Auth0VueClientOptions,\n  LogoutOptions,\n  RedirectLoginOptions\n} from './interfaces';\nimport { AUTH0_INJECTION_KEY, AUTH0_TOKEN } from './token';\nimport version from './version';\nimport type {\n  GetTokenSilentlyOptions,\n  GetTokenSilentlyVerboseResponse,\n  GetTokenWithPopupOptions,\n  IdToken,\n  PopupConfigOptions,\n  PopupLoginOptions,\n  RedirectLoginResult,\n  ConnectAccountRedirectResult,\n  FetcherConfig,\n  Fetcher,\n  CustomFetchMinimalOutput,\n  MfaApiClient,\n  CustomTokenExchangeOptions,\n  TokenEndpointResponse,\n  PasskeyApiClient,\n  PasskeySignupOptions,\n  PasskeyLoginOptions,\n  MyAccountApiClient\n} from '@auth0/auth0-spa-js';\nimport { Auth0Client, User } from '@auth0/auth0-spa-js';\nimport { bindPluginMethods, deprecateRedirectUri } from './utils';\n\n/**\n * Helper callback that's used by default before the plugin is installed.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst PLUGIN_NOT_INSTALLED_HANDLER: any = () => {\n  console.error(`Please ensure Auth0's Vue plugin is correctly installed.`);\n};\n\n/**\n * Helper client that's used by default before the plugin is installed.\n */\nconst PLUGIN_NOT_INSTALLED_CLIENT: Auth0VueClient = {\n  isLoading: ref(false),\n  isAuthenticated: ref(false),\n  user: ref(undefined),\n  idTokenClaims: ref(undefined),\n  error: ref(null),\n  loginWithPopup: PLUGIN_NOT_INSTALLED_HANDLER,\n  loginWithRedirect: PLUGIN_NOT_INSTALLED_HANDLER,\n  loginWithCustomTokenExchange: PLUGIN_NOT_INSTALLED_HANDLER,\n  getAccessTokenSilently: PLUGIN_NOT_INSTALLED_HANDLER,\n  getAccessTokenWithPopup: PLUGIN_NOT_INSTALLED_HANDLER,\n  logout: PLUGIN_NOT_INSTALLED_HANDLER,\n  checkSession: PLUGIN_NOT_INSTALLED_HANDLER,\n  handleRedirectCallback: PLUGIN_NOT_INSTALLED_HANDLER,\n  getDpopNonce: PLUGIN_NOT_INSTALLED_HANDLER,\n  setDpopNonce: PLUGIN_NOT_INSTALLED_HANDLER,\n  generateDpopProof: PLUGIN_NOT_INSTALLED_HANDLER,\n  createFetcher: PLUGIN_NOT_INSTALLED_HANDLER,\n  mfa: {\n    setMFAAuthDetails: PLUGIN_NOT_INSTALLED_HANDLER,\n    getAuthenticators: PLUGIN_NOT_INSTALLED_HANDLER,\n    enroll: PLUGIN_NOT_INSTALLED_HANDLER,\n    challenge: PLUGIN_NOT_INSTALLED_HANDLER,\n    verify: PLUGIN_NOT_INSTALLED_HANDLER,\n    getEnrollmentFactors: PLUGIN_NOT_INSTALLED_HANDLER\n  } as unknown as MfaApiClient,\n  passkey: {\n    signup: PLUGIN_NOT_INSTALLED_HANDLER,\n    login: PLUGIN_NOT_INSTALLED_HANDLER\n  } as unknown as PasskeyApiClient,\n  myAccount: {\n    getFactors: PLUGIN_NOT_INSTALLED_HANDLER,\n    getAuthenticationMethods: PLUGIN_NOT_INSTALLED_HANDLER,\n    getAuthenticationMethod: PLUGIN_NOT_INSTALLED_HANDLER,\n    updateAuthenticationMethod: PLUGIN_NOT_INSTALLED_HANDLER,\n    deleteAuthenticationMethod: PLUGIN_NOT_INSTALLED_HANDLER,\n    enrollmentChallenge: PLUGIN_NOT_INSTALLED_HANDLER,\n    enrollmentVerify: PLUGIN_NOT_INSTALLED_HANDLER\n  } as unknown as MyAccountApiClient\n};\n\n/**\n * @ignore\n */\nexport const client: Ref<Auth0VueClient> = ref(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  PLUGIN_NOT_INSTALLED_CLIENT as any\n);\n\n/**\n * @ignore\n */\nexport class Auth0Plugin implements Auth0VueClient {\n  private _client!: Auth0Client;\n  public isLoading: Ref<boolean> = ref(true);\n  public isAuthenticated: Ref<boolean> = ref(false);\n  public user: Ref<User | undefined> = ref({});\n  public idTokenClaims = ref<IdToken | undefined>();\n  public error = ref<Error | null>(null);\n  public mfa: MfaApiClient = PLUGIN_NOT_INSTALLED_CLIENT.mfa;\n  public passkey: PasskeyApiClient = PLUGIN_NOT_INSTALLED_CLIENT.passkey;\n  public myAccount: MyAccountApiClient = PLUGIN_NOT_INSTALLED_CLIENT.myAccount;\n\n  constructor(\n    private clientOptions: Auth0VueClientOptions,\n    private pluginOptions?: Auth0PluginOptions\n  ) {\n    // Vue Plugins can have issues when passing around the instance to `provide`\n    // Therefor we need to bind all methods correctly to `this`.\n    bindPluginMethods(this, ['constructor']);\n  }\n\n  install(app: App) {\n    this._client = new Auth0Client({\n      ...this.clientOptions,\n      auth0Client: {\n        name: 'auth0-vue',\n        version: version\n      }\n    });\n\n    this.mfa = this._client.mfa;\n    this.myAccount = this._client.myAccount;\n\n    const passkeyClient = this._client.passkey;\n    this.passkey = {\n      signup: (options: PasskeySignupOptions) => this.__proxy(() => passkeyClient.signup(options)),\n      login: (options?: PasskeyLoginOptions) => this.__proxy(() => passkeyClient.login(options))\n    } as unknown as PasskeyApiClient;\n\n    this.__checkSession(app.config.globalProperties.$router);\n\n    // eslint-disable-next-line security/detect-object-injection\n    app.config.globalProperties[AUTH0_TOKEN] = this;\n    app.provide(AUTH0_INJECTION_KEY, this as Auth0VueClient);\n\n    client.value = this as Auth0VueClient;\n  }\n\n  async loginWithRedirect(options?: RedirectLoginOptions<AppState>) {\n    deprecateRedirectUri(options);\n    return this._client.loginWithRedirect(options);\n  }\n\n  async loginWithPopup(\n    options?: PopupLoginOptions,\n    config?: PopupConfigOptions\n  ) {\n    deprecateRedirectUri(options);\n    return this.__proxy(() => this._client.loginWithPopup(options, config));\n  }\n\n  async logout(options?: LogoutOptions) {\n    if (options?.openUrl || options?.openUrl === false) {\n      return this.__proxy(() => this._client.logout(options));\n    }\n\n    return this._client.logout(options);\n  }\n\n  /* istanbul ignore next */\n  async getAccessTokenSilently(\n    options: GetTokenSilentlyOptions & { detailedResponse: true }\n  ): Promise<GetTokenSilentlyVerboseResponse>;\n  /* istanbul ignore next */\n  async getAccessTokenSilently(\n    options?: GetTokenSilentlyOptions\n  ): Promise<string>;\n  /* istanbul ignore next */\n  async getAccessTokenSilently(\n    options: GetTokenSilentlyOptions = {}\n  ): Promise<string | GetTokenSilentlyVerboseResponse> {\n    deprecateRedirectUri(options);\n    return this.__proxy(() => this._client.getTokenSilently(options));\n  }\n\n  async getAccessTokenWithPopup(\n    options?: GetTokenWithPopupOptions,\n    config?: PopupConfigOptions\n  ) {\n    deprecateRedirectUri(options);\n    return this.__proxy(() => this._client.getTokenWithPopup(options, config));\n  }\n\n  async loginWithCustomTokenExchange(\n    options: CustomTokenExchangeOptions\n  ): Promise<TokenEndpointResponse> {\n    return this.__proxy(() =>\n      this._client.loginWithCustomTokenExchange(options)\n    );\n  }\n\n  async checkSession(options?: GetTokenSilentlyOptions) {\n    return this.__proxy(() => this._client.checkSession(options));\n  }\n\n  async handleRedirectCallback(\n    url?: string\n  ): Promise<\n    RedirectLoginResult<AppState> | ConnectAccountRedirectResult<AppState>\n  > {\n    return this.__proxy(() =>\n      this._client.handleRedirectCallback<AppState>(url)\n    );\n  }\n\n  async getDpopNonce(id?: string): Promise<string | undefined> {\n    return this.__proxy(() => this._client.getDpopNonce(id));\n  }\n\n  async setDpopNonce(nonce: string, id?: string): Promise<void> {\n    return this.__proxy(() => this._client.setDpopNonce(nonce, id));\n  }\n\n  async generateDpopProof(params: {\n    url: string;\n    method: string;\n    accessToken: string;\n    nonce?: string;\n  }): Promise<string> {\n    return this.__proxy(() => this._client.generateDpopProof(params));\n  }\n\n  createFetcher<TOutput extends CustomFetchMinimalOutput = Response>(\n    config?: FetcherConfig<TOutput>\n  ): Fetcher<TOutput> {\n    return this._client.createFetcher<TOutput>(config);\n  }\n\n  private async __checkSession(router?: Router) {\n    const search = window.location.search;\n\n    try {\n      if (\n        (search.includes('code=') || search.includes('error=')) &&\n        search.includes('state=') &&\n        !this.pluginOptions?.skipRedirectCallback\n      ) {\n        const result = await this.handleRedirectCallback();\n        const appState = result?.appState;\n        const appStateTarget = appState?.target;\n        const target = appStateTarget ?? '/';\n\n        if (router) {\n          window.history.replaceState({}, '', window.location.pathname);\n          router.push(target);\n        } else {\n          window.history.replaceState(\n            {},\n            '',\n            appStateTarget ?? window.location.pathname\n          );\n        }\n\n        return result;\n      } else {\n        await this.checkSession();\n      }\n    } catch (e) {\n      // __checkSession should never throw an exception as it will fail installing the plugin.\n      // Instead, errors during __checkSession are propagated using the errors property on `useAuth0`.\n\n      window.history.replaceState({}, '', '/');\n\n      if (router) {\n        router.push(this.pluginOptions?.errorPath || '/');\n      }\n    }\n  }\n\n  private async __refreshState() {\n    this.isAuthenticated.value = await this._client.isAuthenticated();\n    this.user.value = await this._client.getUser();\n    this.idTokenClaims.value = await this._client.getIdTokenClaims();\n    this.isLoading.value = false;\n  }\n\n  private async __proxy<T>(cb: () => T, refreshState = true) {\n    let result;\n    try {\n      result = await cb();\n      this.error.value = null;\n    } catch (e) {\n      this.error.value = e as Error;\n      throw e;\n    } finally {\n      if (refreshState) {\n        await this.__refreshState();\n      }\n    }\n\n    return result;\n  }\n}\n","import type { RouteLocation } from 'vue-router';\nimport { watchEffectOnceAsync } from './utils';\nimport { client as auth0Client } from './plugin';\nimport { AUTH0_TOKEN } from './token';\nimport type { Auth0VueClient } from './interfaces';\nimport type { App } from 'vue';\nimport { unref } from 'vue';\nimport type { RedirectLoginOptions } from '@auth0/auth0-spa-js';\n\nasync function createGuardHandler(\n  client: Auth0VueClient,\n  to: RouteLocation,\n  redirectLoginOptions?: RedirectLoginOptions\n) {\n  const fn = async () => {\n    if (unref(client.isAuthenticated)) {\n      return true;\n    }\n\n    await client.loginWithRedirect({\n      ...redirectLoginOptions,\n      appState: {\n        target: to.fullPath,\n        ...redirectLoginOptions?.appState\n      }\n    });\n\n    return false;\n  };\n\n  if (!unref(client.isLoading)) {\n    return fn();\n  }\n\n  await watchEffectOnceAsync(() => !unref(client.isLoading));\n\n  return fn();\n}\n\n/**\n * The options used when creating an AuthGuard.\n */\nexport interface AuthGuardOptions {\n  /**\n   * The vue application\n   */\n  app?: App;\n\n  /**\n   * Route specific options to use when being redirected to Auth0.\n   * If appState is provided, it will be merged with the guard's automatic\n   * target property. Any target provided in appState will take precedence over the guard's default target.\n   */\n  redirectLoginOptions?: RedirectLoginOptions;\n}\n\n/**\n *\n * @param [app] The vue application\n */\nexport function createAuthGuard(\n  app?: App\n): (to: RouteLocation) => Promise<boolean>;\n\n/**\n *\n * @param [options] The options used when creating an AuthGuard.\n */\nexport function createAuthGuard(\n  options?: AuthGuardOptions\n): (to: RouteLocation) => Promise<boolean>;\n\nexport function createAuthGuard(\n  appOrOptions?: App | AuthGuardOptions\n): (to: RouteLocation) => Promise<boolean> {\n  const { app, redirectLoginOptions } =\n    !appOrOptions || 'config' in appOrOptions\n      ? { app: appOrOptions as App, redirectLoginOptions: undefined }\n      : (appOrOptions as AuthGuardOptions);\n\n  return async (to: RouteLocation) => {\n    // eslint-disable-next-line security/detect-object-injection\n    const auth0 = app\n      ? (app.config.globalProperties[AUTH0_TOKEN] as Auth0VueClient)\n      : (unref(auth0Client) as Auth0VueClient);\n\n    return createGuardHandler(auth0, to, redirectLoginOptions);\n  };\n}\n\nexport async function authGuard(to: RouteLocation) {\n  const auth0 = unref(auth0Client) as Auth0VueClient;\n\n  return createGuardHandler(auth0, to);\n}\n","import { inject } from 'vue';\nimport './global';\nimport { Auth0Plugin } from './global';\nimport type {\n  Auth0VueClient,\n  Auth0PluginOptions,\n  Auth0VueClientOptions\n} from './global';\nimport { AUTH0_INJECTION_KEY, AUTH0_TOKEN } from './token';\nimport { deprecateRedirectUri } from './utils';\n\nexport * from './global';\nexport { AUTH0_INJECTION_KEY } from './token';\n\ndeclare module 'vue' {\n  export interface ComponentCustomProperties {\n    [AUTH0_TOKEN]: Auth0VueClient;\n  }\n}\n\n/**\n * Creates the Auth0 plugin.\n *\n * @param clientOptions The Auth Vue Client Options\n * @param pluginOptions Additional Plugin Configuration Options\n * @returns An instance of Auth0Plugin\n */\nexport function createAuth0(\n  clientOptions: Auth0VueClientOptions,\n  pluginOptions?: Auth0PluginOptions\n) {\n  deprecateRedirectUri(clientOptions);\n  return new Auth0Plugin(clientOptions, pluginOptions);\n}\n\n/**\n * Returns the registered Auth0 instance using Vue's `inject`.\n * @returns An instance of Auth0VueClient\n */\nexport function useAuth0(): Auth0VueClient {\n  return inject(AUTH0_INJECTION_KEY) as Auth0VueClient;\n}\n"],"names":["watchEffect","ref","Auth0Client","unref","auth0Client","inject"],"mappings":"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"}