{"version":3,"file":"framerauth-sdk@beta.DjbGy3B3.mjs","names":[],"sources":["https:/cdn.framerauth.com/scripts/framerauth-sdk@beta.js"],"sourcesContent":["var R = Object.defineProperty;\nvar _ = (t, r, e) => r in t ? R(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;\nvar i = (t, r, e) => (_(t, typeof r != \"symbol\" ? r + \"\" : r, e), e);\nclass U {\n  constructor(r) {\n    i(this, \"prefix\");\n    this.prefix = r;\n  }\n  has(r) {\n    const e = this.prefix + r;\n    return localStorage.getItem(e) != null;\n  }\n  get(r) {\n    const e = this.prefix + r;\n    return localStorage.getItem(e);\n  }\n  set(r, e) {\n    const s = this.prefix + r;\n    localStorage.setItem(s, e);\n  }\n  remove(r) {\n    const e = this.prefix + r;\n    localStorage.removeItem(e);\n  }\n}\nclass m extends Error {\n  constructor(e, s) {\n    super(e);\n    i(this, \"status\");\n    i(this, \"__isAuthError\", !0);\n    this.name = \"AuthError\", this.status = s;\n  }\n}\nfunction h(t) {\n  return typeof t == \"object\" && t !== null && \"__isAuthError\" in t;\n}\nclass T extends m {\n  constructor(e, s) {\n    super(e, s);\n    i(this, \"status\");\n    this.name = \"AuthApiError\", this.status = s;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass O extends m {\n  constructor(e, s) {\n    super(e);\n    i(this, \"originalError\");\n    this.name = \"AuthUnknownError\", this.originalError = s;\n  }\n}\nclass f extends m {\n  constructor(e, s, n) {\n    super(e);\n    i(this, \"name\");\n    i(this, \"status\");\n    this.name = s, this.status = n;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass x extends f {\n  constructor() {\n    super(\"Auth session or user missing\", \"AuthInvalidTokenResponseError\", 500);\n  }\n}\nclass p extends f {\n  constructor() {\n    super(\"Message missing\", \"AuthInvalidResetPasswordResponseError\", 500);\n  }\n}\nclass l extends f {\n  constructor(r) {\n    super(r, \"AuthInvalidCredentialsError\", 400);\n  }\n}\nclass I extends f {\n  constructor() {\n    super(\"Site missing\", \"AuthInvalidSiteResponseError\", 500);\n  }\n}\nclass J extends f {\n  constructor() {\n    super(\"User missing\", \"AuthInvalidUserResponseError\", 500);\n  }\n}\nclass N extends f {\n  constructor() {\n    super(\"License key status missing\", \"AuthInvalidValidateLicenseKeyResponseError\", 500);\n  }\n}\nclass P extends f {\n  constructor() {\n    super(\"License key invalid\", \"AuthInvalidActivateLicenseKeyResponseError\", 500);\n  }\n}\nclass j extends f {\n  constructor() {\n    super(\"User invalid\", \"AuthUpdateUserResponseError\", 500);\n  }\n}\nclass b extends f {\n  constructor() {\n    super(\"Data invalid\", \"AuthUpdateUserDataResponseError\", 500);\n  }\n}\nclass v extends f {\n  constructor(r, e) {\n    super(r, \"AuthRetryableFetchError\", e);\n  }\n}\nconst w = (t) => t.msg || t.message || t.error_description || t.error || JSON.stringify(t), $ = [502, 503, 504];\nasync function A(t) {\n  if (!G(t))\n    throw new v(w(t), 0);\n  if ($.includes(t.status))\n    throw new v(w(t), t.status);\n  let r;\n  try {\n    r = await t.json();\n  } catch (e) {\n    throw new O(w(e), e);\n  }\n  throw new T(w(r), t.status || 500);\n}\nconst K = (t, r, e, s) => {\n  const n = { method: t, headers: (r == null ? void 0 : r.headers) || {} };\n  return t === \"GET\" ? n : (n.headers = { \"Content-Type\": \"application/json;charset=UTF-8\", ...r == null ? void 0 : r.headers }, n.body = JSON.stringify(s), { ...n, ...e });\n};\nasync function d(t, r, e, s) {\n  var c;\n  const n = { ...s == null ? void 0 : s.headers };\n  s != null && s.jwt && (n.Authorization = `Bearer ${s.jwt}`);\n  const a = (c = s == null ? void 0 : s.query) != null ? c : {};\n  s != null && s.redirectTo && (a.redirect_to = s.redirectTo);\n  const o = Object.keys(a).length ? \"?\" + new URLSearchParams(a).toString() : \"\", u = await Y(\n    t,\n    r,\n    e + o,\n    { headers: n, noResolveJson: s == null ? void 0 : s.noResolveJson },\n    {},\n    s == null ? void 0 : s.body\n  );\n  return s != null && s.xform ? s == null ? void 0 : s.xform(u) : { data: { ...u }, error: null };\n}\nasync function Y(t, r, e, s, n, a) {\n  const o = K(r, s, n, a);\n  let u;\n  try {\n    u = await t(e, o);\n  } catch (c) {\n    throw console.error(c), new v(w(c), 0);\n  }\n  if (u.ok || await A(u), s != null && s.noResolveJson)\n    return u;\n  try {\n    return await u.json();\n  } catch (c) {\n    await A(c);\n  }\n}\nfunction E(t) {\n  var s;\n  let r = null;\n  M(t == null ? void 0 : t.session) && (r = { ...t.session });\n  const e = (s = t.user) != null ? s : t;\n  return { data: { session: r, user: e }, error: null };\n}\nfunction L(t) {\n  var e;\n  return { data: { message: (e = t.message) != null ? e : t }, error: null };\n}\nfunction q(t) {\n  var e;\n  return { data: { message: (e = t.message) != null ? e : t }, error: null };\n}\nfunction z(t) {\n  var e;\n  return { data: { site: (e = t.site) != null ? e : t }, error: null };\n}\nfunction k(t) {\n  var e;\n  return { data: { user: (e = t.user) != null ? e : t }, error: null };\n}\nfunction C(t) {\n  var e;\n  return { data: { valid: (e = t.valid) != null ? e : t }, error: null };\n}\nfunction D(t) {\n  var e;\n  return { data: { message: (e = t.message) != null ? e : t }, error: null };\n}\nfunction F(t) {\n  return { data: t != null ? t : t, error: null };\n}\nfunction M(t) {\n  return (t == null ? void 0 : t.access_token) && (t == null ? void 0 : t.expires_in);\n}\nconst G = (t) => typeof t == \"object\" && t !== null && \"status\" in t && \"ok\" in t && \"json\" in t && typeof t.json == \"function\";\nclass H {\n  constructor(r) {\n    i(this, \"store\");\n    i(this, \"url\");\n    i(this, \"headers\");\n    i(this, \"setSite\", (r) => {\n      this.store.set(\"site\", r);\n    });\n    i(this, \"setUser\", (r) => {\n      this.store.set(\"user\", r);\n    });\n    i(this, \"setSession\", (r) => {\n      this.store.set(\"session\", r);\n    });\n    // TODO: This should be async for when we support refresh tokens.\n    i(this, \"getAccessToken\", () => {\n      if (!this.store.has(\"session\"))\n        return null;\n      const e = this.store.get(\"session\");\n      if (!e)\n        return null;\n      let s;\n      try {\n        s = JSON.parse(e);\n      } catch (a) {\n        return null;\n      }\n      const n = Math.floor(Date.now() / 1e3);\n      return s.expires_at && n > s.expires_at ? (this.store.remove(\"session\"), this.store.remove(\"user\"), null) : s.access_token;\n    });\n    i(this, \"getExpiresIn\", () => {\n      var e;\n      if (this.store.has(\"session\")) {\n        const s = this.store.get(\"session\");\n        if (s)\n          return (e = JSON.parse(s)) == null ? void 0 : e.expires_in;\n      }\n    });\n    i(this, \"getSite\", async (r = { cache: !0 }) => {\n      var n, a;\n      let e;\n      const s = this.store.get(\"site\");\n      return s && (r != null && r.cache) ? e = { data: { site: JSON.parse(s) }, error: null } : e = await this.fetchSite(), e.error && (e.error.status === 400 ? console.log(\n        `%cFramerAuth: Site not configured!\n\n%cPlease add your SITE_ID to the configuration script.\n%cError: ${((n = e.error) == null ? void 0 : n.message) || \"Unknown error\"}`,\n        \"color: orange; font-size: 16px;\",\n        \"color: inherit; font-size: 12px;\",\n        \"color: inherit; font-size: 12px;\"\n      ) : console.log(\n        `%cFramerAuth: Unable to load site data!\n\n%cNavigating to Homepage.\n%cError: ${((a = e.error) == null ? void 0 : a.message) || \"Site data not found\"}`,\n        \"color: red; font-size: 16px;\",\n        \"color: inherit; font-size: 12px;\",\n        \"color: inherit; font-size: 12px;\"\n      )), e;\n    });\n    i(this, \"getUser\", async (r = { cache: !0 }) => {\n      let e;\n      const s = Math.floor(Date.now() / 1e3), n = this.store.get(\"session\") || \"\";\n      if (!n)\n        e = { data: { user: null }, error: new m(\"Authorization token required.\", 401) };\n      else {\n        const a = JSON.parse(n), o = this.store.get(\"user\");\n        a.expires_at && s > a.expires_at ? (e = { data: { user: null }, error: new m(\"Token has expired.\", 401) }, this.store.remove(\"session\"), this.store.remove(\"user\")) : o && (r != null && r.cache) ? e = { data: { user: JSON.parse(o) }, error: null } : e = await this.fetchUser();\n      }\n      return e;\n    });\n    i(this, \"validateLicenseKey\", async (r) => {\n      try {\n        let e;\n        if (!r.license_key)\n          throw new l(\n            \"You must provide a license_key\"\n          );\n        const { license_key: s } = r;\n        e = await d(fetch, \"POST\", `${this.url}/validate`, {\n          headers: this.headers,\n          body: {\n            license_key: s\n          },\n          xform: C\n        });\n        const { data: n, error: a } = e;\n        return a ? { data: { valid: null }, error: a } : !n || n.valid === null ? { data: { valid: null }, error: new N() } : { data: { valid: n.valid }, error: null };\n      } catch (e) {\n        if (h(e))\n          return { data: { valid: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"activateLicenseKey\", async (r) => {\n      try {\n        let e;\n        const s = this.getAccessToken();\n        if (!s)\n          throw new l(\n            \"You must provide a token\"\n          );\n        if (!r.license_key)\n          throw new l(\n            \"You must provide a license_key\"\n          );\n        const { license_key: n } = r;\n        e = await d(fetch, \"POST\", `${this.url}/me/license-keys/activate`, {\n          headers: this.headers,\n          body: {\n            license_key: n\n          },\n          xform: D,\n          jwt: s\n        });\n        const { data: a, error: o } = e;\n        return o ? { data: { message: null }, error: o } : !a || a.message === null ? { data: { message: null }, error: new P() } : (await this.getUser({ cache: !1 }), { data: { message: a.message }, error: null });\n      } catch (e) {\n        if (h(e))\n          return { data: { message: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"signUp\", async (r) => {\n      var e;\n      try {\n        let s;\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        if (!r.password)\n          throw new l(\n            \"You must provide a password\"\n          );\n        const { email: n, password: a, options: o } = r;\n        s = await d(fetch, \"POST\", `${this.url}/sign-up`, {\n          headers: this.headers,\n          redirectTo: o == null ? void 0 : o.emailRedirectTo,\n          body: {\n            email: n,\n            password: a,\n            data: (e = o == null ? void 0 : o.data) != null ? e : {}\n          },\n          xform: E\n        });\n        const { data: u, error: c } = s;\n        if (c)\n          return { data: { user: null, session: null }, error: c };\n        if (!u)\n          return { data: { user: null, session: null }, error: new x() };\n        const g = u.session, S = u.user;\n        return g && (this.setUser(JSON.stringify(S)), this.setSession(JSON.stringify(g))), { data: { user: S, session: g }, error: null };\n      } catch (s) {\n        if (h(s))\n          return { data: { user: null, session: null }, error: s };\n        throw s;\n      }\n    });\n    i(this, \"signInWithPassword\", async (r) => {\n      try {\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        if (!r.password)\n          throw new l(\n            \"You must provide a password\"\n          );\n        let e;\n        const { email: s, password: n } = r;\n        e = await d(fetch, \"POST\", `${this.url}/token`, {\n          headers: this.headers,\n          body: {\n            email: s,\n            password: n\n          },\n          xform: E\n        });\n        const { data: a, error: o } = e;\n        return o ? { data: { user: null, session: null }, error: o } : !a || !a.session || !a.user ? { data: { user: null, session: null }, error: new x() } : (a.session && (this.setUser(JSON.stringify(a.user)), this.setSession(JSON.stringify(a.session))), { data: { user: a.user, session: a.session }, error: o });\n      } catch (e) {\n        if (h(e))\n          return { data: { user: null, session: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"resetPasswordForEmail\", async (r) => {\n      try {\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        let e;\n        const { email: s } = r;\n        e = await d(fetch, \"POST\", `${this.url}/password/reset`, {\n          headers: this.headers,\n          body: {\n            email: s\n          },\n          xform: L\n        });\n        const { data: n, error: a } = e;\n        return a ? { data: { message: null }, error: a } : !n || !n.message ? { data: { message: null }, error: new p() } : { data: { message: n.message }, error: a };\n      } catch (e) {\n        if (h(e))\n          return { data: { message: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"updatePasswordForEmail\", async (r) => {\n      try {\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        if (!r.code)\n          throw new l(\n            \"Reset token required\"\n          );\n        if (!r.email)\n          throw new l(\n            \"You must provide a new password\"\n          );\n        let e;\n        const { email: s, code: n, password: a } = r;\n        e = await d(fetch, \"POST\", `${this.url}/password/update`, {\n          headers: this.headers,\n          body: {\n            email: s,\n            code: n,\n            password: a\n          },\n          xform: q\n        });\n        const { data: o, error: u } = e;\n        return u ? { data: { message: null }, error: u } : !o || !o.message ? { data: { message: null }, error: new p() } : { data: { message: o.message }, error: u };\n      } catch (e) {\n        if (h(e))\n          return { data: { message: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"signOut\", async (r = null) => (this.store.remove(\"session\"), this.store.remove(\"user\"), r && window.location.replace(r), { error: null }));\n    i(this, \"fetchSite\", async () => {\n      try {\n        let r;\n        r = await d(fetch, \"GET\", `${this.url}/site`, {\n          headers: this.headers,\n          xform: z\n        });\n        const { data: e, error: s } = r;\n        return s ? { data: { site: null }, error: s } : !e || !e.site ? { data: { site: null }, error: new I() } : (e.site && this.setSite(JSON.stringify(e.site)), { data: { site: e.site }, error: null });\n      } catch (r) {\n        if (h(r))\n          return { data: { site: null }, error: r };\n        throw r;\n      }\n    });\n    i(this, \"fetchUser\", async () => {\n      try {\n        let r;\n        const e = this.getAccessToken();\n        if (!e)\n          throw new l(\n            \"You must provide a token\"\n          );\n        r = await d(fetch, \"GET\", `${this.url}/me`, {\n          headers: this.headers,\n          xform: k,\n          jwt: e\n        });\n        const { data: s, error: n } = r;\n        return n ? { data: { user: null }, error: n } : !s || !s.user ? { data: { user: null }, error: new J() } : (s.user && this.setUser(JSON.stringify(s.user)), { data: { user: s.user }, error: null });\n      } catch (r) {\n        if (h(r))\n          return { data: { user: null }, error: r };\n        throw r;\n      }\n    });\n    i(this, \"updateUser\", async (r) => {\n      try {\n        const e = this.getAccessToken();\n        if (!e)\n          throw new l(\n            \"You must provide a token\"\n          );\n        let s;\n        s = await d(fetch, \"PUT\", `${this.url}/me`, {\n          headers: this.headers,\n          body: r || {},\n          xform: k,\n          jwt: e\n        });\n        const { data: n, error: a } = s;\n        if (a)\n          return { data: { user: null }, error: a };\n        if (!n || n.user === null)\n          return { data: { user: null }, error: new j() };\n        const { data: { user: o } } = await this.getUser({ cache: !1 });\n        return o && this.setUser(JSON.stringify(o)), { data: n, error: null };\n      } catch (e) {\n        if (h(e))\n          return { data: { user: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"patchUserData\", async (r) => {\n      try {\n        const e = this.getAccessToken();\n        if (!e)\n          throw new l(\n            \"You must provide a token\"\n          );\n        let s;\n        s = await d(fetch, \"PATCH\", `${this.url}/me/data`, {\n          headers: this.headers,\n          body: r || {},\n          xform: F,\n          jwt: e\n        });\n        const { data: n, error: a } = s;\n        if (a)\n          return { data: null, error: a };\n        if (!n || n.valid === null)\n          return { data: null, error: new b() };\n        const { data: { user: o } } = await this.getUser({ cache: !0 });\n        return o && (o.data = n, this.setUser(JSON.stringify(o))), { data: n, error: null };\n      } catch (e) {\n        if (h(e))\n          return { data: null, error: e };\n        throw e;\n      }\n    });\n    if (this.store = new U(\"fa-\"), this.url = \"https://api.framerauth.com/v1\", r)\n      this.headers = { \"Content-Type\": \"application/json\", \"x-site-id\": r };\n    else {\n      this.headers = {}, console.error(\"Unable to initialize the Auth module, ensure you have added the framer-auth.js file to the beginning of the body.\");\n      return;\n    }\n  }\n}\nconsole.log(\"Framer Auth - Module v0.0.0\");\nconst y = new U(\"fa-\"), V = (y == null ? void 0 : y.get(\"site-id\")) || null, B = new H(V);\nexport {\n  B as auth\n};\n"],"mappings":"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"}