{"version":3,"names":["Auth","__SystemJSRewritingHack","_export","setters","_externalFocalStorageJs","focalStorage","default","execute","_recorder_","_src_client_auth_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","name","tokenName","Error","tokenFromAuthInfo","notificationIconURL","appInfo","oauthTokenURL","oauthURL","logout","cb","setItem","then","parseAuthInfoFromUrl","data","authInfo","JSON","parse","replace","key","value","decodeURIComponent","e","console","warn","notifyMe","title","text","Notification","permission","requestPermission","notification","icon","body","onclick","onAuthenticated","windowUuid","state","token","stringify","onAuthenticatedCallbacks","popup","url","width","height","screenX","window","screenY","outerWidth","outerHeight","left","Math","max","top","features","popupWindow","open","join","focus","challengeForAuth","uuid","fetch","r","Promise","resolve","Date","now","load"],"sources":["auth.js"],"sourcesContent":["import focalStorage from '../external/focalStorage.js';\n\n\n\nexport default class Auth {\n  \n  static get name() { /* subclass responsibility */}\n  static get tokenName() {throw Error('override in subclass')}\n  static tokenFromAuthInfo() {throw Error('override in subclass')}\n  static get notificationIconURL() {throw Error('override in subclass')}\n  static get appInfo() { throw Error('override in subclass')}\n  static oauthTokenURL() { throw Error('override in subclass')}\n  static oauthURL() { throw Error('override in subclass')}\n  \n  static logout(cb) {\n    focalStorage.setItem(this.tokenName, null).then(cb)\n  }\n\n  static parseAuthInfoFromUrl(data) {\n    try {\n      var authInfo = JSON.parse(\n        '{\"' + data.replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}',\n        (key, value) => { return key === \"\" ? value : decodeURIComponent(value); });      \n    } catch(e) {\n      console.warn(\"[auth] parseAuthInfoFromUrl could not parse \", data)\n    }\n    return authInfo;\n  }\n\n  static notifyMe(title, text, cb) {\n    if (Notification.permission !== \"granted\")\n      Notification.requestPermission();\n    else {\n      var notification = new Notification(title, {\n        icon: this.notificationIconURL,\n        body: text,\n      });\n      notification.onclick = cb\n    }\n  }\n  \n  static onAuthenticated(windowUuid, authInfo) {\n    var state = authInfo.state\n    var token = this.tokenFromAuthInfo(authInfo)\n\n    if (!state) { \n      throw new Error(\"AuthError, no state! Authinfo: \" + JSON.stringify(authInfo))\n    }\n    focalStorage.setItem(this.tokenName, token).then(() => {\n      var cb = this.onAuthenticatedCallbacks[state]\n      if (cb) {\n        cb(token)\n      } else {\n        throw new Error(\"AuthError: no callback found for\" + state)\n      }\n    })\n  }\n  \n  static popup(url) {\n    var width = 525,\n      height = 525,\n      screenX = window.screenX,\n      screenY = window.screenY,\n      outerWidth = window.outerWidth,\n      outerHeight = window.outerHeight;\n    var left = screenX + Math.max(outerWidth - width, 0) / 2;\n    var top = screenY + Math.max(outerHeight - height, 0) / 2;\n    var features = [\n      \"width=\" + width,\n      \"height=\" + height,\n      \"top=\" + top,\n      \"left=\" + left,\n      \"status=no\",\n      \"resizable=yes\",\n      \"toolbar=no\",\n      \"menubar=no\",\n      \"scrollbars=yes\"];\n    var popupWindow = window.open(url, \"oauth\", features.join(\",\"));\n    if (!popupWindow) {\n      this.notifyMe(this.name + \" Authenfication required\", \"click here to authenticate\", () => {\n      window.open(url, \"oauth\", features.join(\",\"));\n      })\n    } else {\n      popupWindow.focus();\n    }\n  }\n  \n  static challengeForAuth(uuid, cb) {\n    if (uuid && cb) {\n      this.onAuthenticatedCallbacks[uuid] = cb\n    }\n    fetch(this.oauthTokenURL(uuid))\n      .then(r => r.text())\n      .then(data => {\n        // console.log(\"challenge got a token, too: \" + data)      \n        var authInfo = this.parseAuthInfoFromUrl(data)\n        this.onAuthenticated(uuid, authInfo)\n    })\n    this.popup(this.oauthURL(uuid));\n  }\n  \n  static token() {\n    return new Promise(resolve => {\n      this.challengeForAuth(Date.now(), resolve)\n    })\n  }\n  \n  static load() {\n    this.onAuthenticatedCallbacks = {}\n  }\n\n}\n\n\n"],"mappings":"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"}