{"version":3,"sources":["jsdelivr-header.js","/npm/@bcwdev/auth0-vue@0.1.2/index.js"],"names":[],"mappings":"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","file":"/npm/@bcwdev/auth0-vue@0.1.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@bcwdev/auth0-vue@0.1.2/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import createAuth0Client from \"@auth0/auth0-spa-js\";\nimport { EventEmitter } from \"./EventEmitter\";\n\n/** Define a default action to perform after authentication */\nconst DEFAULT_REDIRECT_CALLBACK = () =>\n  window.history.replaceState({}, document.title, window.location.pathname);\n\n/**\n @type {AuthPlugin}\n */\nlet instance;\n\nclass AuthPlugin extends EventEmitter {\n  constructor(options = {}) {\n    if (instance) { return instance }\n    super()\n    instance = this\n    this.AUTH_EVENTS = {\n      LOADING: \"LOADING\",\n      LOADED: \"LOADED\",\n      AUTHENTICATED: \"AUTHENTICATED\"\n    }\n    this.options = options\n    this.options.onRedirectCallback = this.options.onRedirectCallback || DEFAULT_REDIRECT_CALLBACK\n    this.loading = true\n    this.isAuthenticated = false\n    this.user = {}\n    this.userInfo = {}\n    this.identity = {}\n    this.bearer = \"\"\n    this.auth0Client = null\n    this.popupOpen = false\n    this.error = null\n    this.created(options)\n    return instance\n  }\n\n  /** Authenticates the user using a popup window */\n  async loginWithPopup(o = {\n    returnTo: window.location.origin\n  }) {\n    this.popupOpen = true;\n\n    try {\n      await this.auth0Client.loginWithPopup(o);\n      this.user = await this.auth0Client.getUser();\n      await this.getUserData();\n      this.isAuthenticated = true;\n    } catch (e) {\n      // eslint-disable-next-line\n      console.error(e);\n    } finally {\n      this.popupOpen = false;\n    }\n\n  }\n  /** Handles the callback when logging in using a redirect */\n  async handleRedirectCallback() {\n    this.loading = true;\n    try {\n      await this.auth0Client.handleRedirectCallback();\n      this.user = await this.auth0Client.getUser();\n      await this.getUserData();\n      this.isAuthenticated = true;\n    } catch (e) {\n      this.error = e;\n    } finally {\n      this.loading = false;\n    }\n  }\n  /** Authenticates the user using the redirect method */\n  loginWithRedirect(o = {\n    returnTo: window.location.href\n  }) {\n    return this.auth0Client.loginWithRedirect(o);\n  }\n  /**\n   * Returns all the claims present in the ID token\n   * @param {import(\"@auth0/auth0-spa-js\").GetIdTokenClaimsOptions} o\n   */\n  getIdTokenClaims(o) {\n    return this.auth0Client.getIdTokenClaims(o);\n  }\n  /**\n   * Returns the access token. If the token is invalid or missing, a new one is retrieved\n   * @param {import(\"@auth0/auth0-spa-js\").GetTokenSilentlyOptions} [o]\n   */\n  getTokenSilently(o) {\n    return this.auth0Client.getTokenSilently(o);\n  }\n  /**\n   * @param {string[] | string} permissions\n   */\n  hasPermissions(permissions) {\n    if (!Array.isArray(permissions)) {\n      permissions = [permissions];\n    }\n    if (!this.identity.permissions) {\n      return false;\n    }\n    while (permissions.length) {\n      let next = permissions.pop();\n      let /**\n         * @param {any} p\n         */\n        found = this.identity.permissions.find(p => p == next);\n      if (!found) {\n        return false;\n      }\n    }\n    return true;\n  }\n  /**\n   * @param {string[] | string} roles\n   */\n  hasRoles(roles) {\n    if (!Array.isArray(roles)) {\n      roles = [roles];\n    }\n    if (!this.userInfo.roles) {\n      return false;\n    }\n    while (roles.length) {\n      let next = roles.pop();\n      let /**\n         * @param {any} r\n         */\n        found = this.userInfo.roles.find(r => r == next);\n      if (!found) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * @param {string} token\n   */\n  async getIdentityClaims(token) {\n    this.identity = JSON.parse(decodeToken(token));\n    return this.identity;\n  }\n\n  /**\n   * Gets the access token using a popup window\n   * @param {import(\"@auth0/auth0-spa-js\").GetTokenWithPopupOptions} o\n   */\n  getTokenWithPopup(o) {\n    return this.auth0Client.getTokenWithPopup(o);\n  }\n  async getUserData() {\n    try {\n      this.auth0Client;\n      let token = await this.getTokenSilently();\n      let identity = await this.getIdentityClaims(token);\n      this.bearer = \"Bearer \" + token;\n      let res = await fetch(`https://${this.options.domain}/userinfo`, {\n        headers: {\n          authorization: this.bearer\n        }\n      });\n\n      let userData = await res.json();\n      for (var key in userData) {\n        let keep = key;\n        if (key.includes(\"https\")) {\n          keep = keep.slice(keep.lastIndexOf(\"/\") + 1);\n        }\n        this.userInfo[keep] = userData[key]\n      }\n      this.user.isAuthenticated = true\n      this.emit(this.AUTH_EVENTS.AUTHENTICATED, this)\n    } catch (e) {\n      console.error(e);\n    }\n  }\n  /** Logs the user out and removes their session on the authorization server */\n  logout(o = {\n    returnTo: window.location.origin\n  }) {\n    let logout = this.auth0Client.logout(o);\n    this.bearer = \"\";\n    this.user = {};\n    this.userInfo = {};\n    this.identity = {};\n    this.isAuthenticated = false;\n    return logout;\n  }\n\n  /**\n   * Use this lifecycle method to instantiate the SDK client\n   * @param {{ domain?: any; clientId?: any; audience?: any; redirectUri?: any; onRedirectCallback?: any; }} options\n   */\n  async created(options) {\n    this.emit(this.AUTH_EVENTS.LOADING)\n    // Create a new instance of the SDK client using members of the given options object\n    this.auth0Client = await createAuth0Client({\n      domain: options.domain,\n      client_id: options.clientId,\n      audience: options.audience,\n      redirect_uri: options.redirectUri\n    });\n\n    try {\n      // If the user is returning to the app after authentication..\n      if (\n        window.location.search.includes(\"code=\") &&\n        window.location.search.includes(\"state=\")\n      ) {\n        // handle the redirect and retrieve tokens\n        const { appState } = await this.auth0Client.handleRedirectCallback();\n\n        // Notify subscribers that the redirect callback has happened, passing the appState\n        // (useful for retrieving any pre-authentication state)\n        options.onRedirectCallback(appState);\n      }\n    } catch (e) {\n      this.error = e;\n    } finally {\n      // Initialize our internal authentication state\n      this.isAuthenticated = await this.auth0Client.isAuthenticated();\n      this.user = await this.auth0Client.getUser();\n      await this.getUserData();\n      this.loading = false;\n      this.emit(this.AUTH_EVENTS.LOADED)\n    }\n  }\n}\n\n/**\n * @param {{ onRedirectCallback: () => void; domain: string, audience: string, clientId: string  }} options\n */\nexport function initializeAuth(options) { return new AuthPlugin(options) }\nconst _auth = () => { if (!instance) { throw new Error(\"Auth Plugin must be initialized prior to importing $auth\") }; return instance }\n\n/**\n * @param {{ fullPath: any; }} to\n * @param {any} from\n * @param {() => any} next\n */\nexport async function authGuard(to, from, next) {\n  try {\n    const authService = _auth();\n    await onAuthLoaded();\n    if (authService.isAuthenticated) {\n      return next();\n    }\n    return instance.loginWithRedirect({ returnTo: to.fullPath });\n  } catch (e) {\n    return instance.loginWithRedirect({ returnTo: to.fullPath });\n  }\n}\n\n/**\n * Promise resolves if able to authenticate\n * @param {function} [cb]\n */\nexport const onAuthLoaded = cb => {\n  return new Promise((resolve, reject) => {\n    const authService = _auth();\n    if (!authService.loading) {\n      if (typeof cb == 'function') { cb(authService) }\n      return resolve(authService);\n    }\n    authService.on(authService.AUTH_EVENTS.LOADED, () => {\n      resolve(authService)\n      if (typeof cb == 'function') { cb(authService) }\n    })\n  });\n};\n\nfunction b64DecodeUnicode(str = \".\") {\n  try {\n    return decodeURIComponent(\n      atob(str).replace(/(.)/g, function (m, p) {\n        var code = p\n          .charCodeAt(0)\n          .toString(16)\n          .toUpperCase();\n        if (code.length < 2) {\n          code = \"0\" + code;\n        }\n        return \"%\" + code;\n      })\n    );\n  } catch (e) {\n    return \"\";\n  }\n}\nfunction decodeToken(str = \".\") {\n  try {\n    str = str.split(\".\")[1];\n    var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    switch (output.length % 4) {\n      case 0:\n        break;\n      case 2:\n        output += \"==\";\n        break;\n      case 3:\n        output += \"=\";\n        break;\n      default:\n        throw \"Illegal base64url string!\";\n    }\n\n    return b64DecodeUnicode(output);\n  } catch (err) {\n    return atob(output);\n  }\n}"]}