|
| 1 | +'use strict' |
| 2 | +var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault') |
| 3 | +Object.defineProperty(exports, '__esModule', { value: !0 }), (exports.Auth = void 0) |
| 4 | +var _asyncToGenerator2 = _interopRequireDefault(require('@babel/runtime/helpers/asyncToGenerator')), |
| 5 | + _superagent = _interopRequireDefault(require('superagent')), |
| 6 | + isBrowser = () => 'undefined' != typeof window, |
| 7 | + storageKey = 'supabase.auth.token' |
| 8 | +class Auth { |
| 9 | + constructor(a, b) { |
| 10 | + var c = Math.round, |
| 11 | + d = this, |
| 12 | + e = |
| 13 | + 2 < arguments.length && void 0 !== arguments[2] |
| 14 | + ? arguments[2] |
| 15 | + : { autoRefreshToken: !0, persistSession: !0 } |
| 16 | + ;(this.authUrl = a), |
| 17 | + (this.accessToken = b), |
| 18 | + (this.refreshToken = null), |
| 19 | + (this.supabaseKey = b), |
| 20 | + (this.currentUser = null), |
| 21 | + (this.autoRefreshToken = !(e.autoRefreshToken !== void 0) || e.autoRefreshToken), |
| 22 | + (this.persistSession = !(e.persistSession !== void 0) || e.persistSession), |
| 23 | + (this.signup = /*#__PURE__*/ (function () { |
| 24 | + var b = (0, _asyncToGenerator2.default)(function* (b, e) { |
| 25 | + d.removeSavedSession() // clean out the old session before attempting |
| 26 | + var f = yield _superagent.default |
| 27 | + .post(''.concat(a, '/signup'), { email: b, password: e }) |
| 28 | + .set('accept', 'json') |
| 29 | + .set('apikey', d.supabaseKey) |
| 30 | + if (200 === f.status && f.body.user.confirmed_at) { |
| 31 | + ;(d.accessToken = f.body.access_token), |
| 32 | + (d.refreshToken = f.body.refresh_token), |
| 33 | + (d.currentUser = f.body.user) |
| 34 | + var g = f.body.expires_in |
| 35 | + if ( |
| 36 | + (d.autoRefreshToken && g && setTimeout(d.callRefreshToken, 1e3 * (g - 60)), |
| 37 | + d.persistSession) |
| 38 | + ) { |
| 39 | + var h = c(Date.now() / 1e3) |
| 40 | + d.saveSession(d.accessToken, d.refreshToken, h + g, d.currentUser) |
| 41 | + } |
| 42 | + } |
| 43 | + return f |
| 44 | + }) |
| 45 | + return function () { |
| 46 | + return b.apply(this, arguments) |
| 47 | + } |
| 48 | + })()), |
| 49 | + (this.login = /*#__PURE__*/ (function () { |
| 50 | + var b = (0, _asyncToGenerator2.default)(function* (b, e) { |
| 51 | + d.removeSavedSession() // clean out the old session before attempting |
| 52 | + var f = yield _superagent.default |
| 53 | + .post(''.concat(a, '/token?grant_type=password'), { email: b, password: e }) |
| 54 | + .set('accept', 'json') |
| 55 | + .set('apikey', d.supabaseKey) |
| 56 | + if (200 === f.status) { |
| 57 | + ;(d.accessToken = f.body.access_token), |
| 58 | + (d.refreshToken = f.body.refresh_token), |
| 59 | + (d.currentUser = f.body.user) |
| 60 | + var g = f.body.expires_in |
| 61 | + if ( |
| 62 | + (d.autoRefreshToken && g && setTimeout(d.callRefreshToken, 1e3 * (g - 60)), |
| 63 | + d.persistSession) |
| 64 | + ) { |
| 65 | + var h = c(Date.now() / 1e3) |
| 66 | + d.saveSession(d.accessToken, d.refreshToken, h + g, d.currentUser) |
| 67 | + } |
| 68 | + } |
| 69 | + return f |
| 70 | + }) |
| 71 | + return function () { |
| 72 | + return b.apply(this, arguments) |
| 73 | + } |
| 74 | + })()), |
| 75 | + (this.callRefreshToken = /*#__PURE__*/ (0, _asyncToGenerator2.default)(function* () { |
| 76 | + var b = yield _superagent.default |
| 77 | + .post(''.concat(a, '/token?grant_type=refresh_token'), { refresh_token: d.refreshToken }) |
| 78 | + .set('accept', 'json') |
| 79 | + .set('apikey', d.supabaseKey) |
| 80 | + if (200 === b.status) { |
| 81 | + ;(d.accessToken = b.body.access_token), (d.refreshToken = b.body.refresh_token) |
| 82 | + var e = b.body.expires_in |
| 83 | + if ( |
| 84 | + (d.autoRefreshToken && e && setTimeout(d.callRefreshToken, 1e3 * (e - 60)), |
| 85 | + d.persistSession) |
| 86 | + ) { |
| 87 | + var f = c(Date.now() / 1e3) |
| 88 | + d.saveSession(d.accessToken, d.refreshToken, f + e, d.currentUser) |
| 89 | + } |
| 90 | + } |
| 91 | + return b |
| 92 | + })), |
| 93 | + (this.logout = /*#__PURE__*/ (0, _asyncToGenerator2.default)(function* () { |
| 94 | + yield _superagent.default |
| 95 | + .post(''.concat(a, '/logout')) |
| 96 | + .set('Authorization', 'Bearer '.concat(d.accessToken)) |
| 97 | + .set('apikey', d.supabaseKey), |
| 98 | + d.removeSavedSession() |
| 99 | + })), |
| 100 | + (this.user = /*#__PURE__*/ (0, _asyncToGenerator2.default)(function* () { |
| 101 | + if (d.currentUser) return d.currentUser |
| 102 | + var b = yield _superagent.default |
| 103 | + .get(''.concat(a, '/user')) |
| 104 | + .set('Authorization', 'Bearer '.concat(d.accessToken)) |
| 105 | + .set('apikey', d.supabaseKey) |
| 106 | + return ( |
| 107 | + 200 === b.status && |
| 108 | + ((d.currentUser = b.body), |
| 109 | + (d.currentUser.access_token = d.accessToken), |
| 110 | + (d.currentUser.refresh_token = d.refreshToken)), |
| 111 | + d.currentUser |
| 112 | + ) |
| 113 | + })), |
| 114 | + (this.saveSession = (a, b, c, d) => { |
| 115 | + isBrowser() && |
| 116 | + localStorage.setItem( |
| 117 | + storageKey, |
| 118 | + JSON.stringify({ accessToken: a, refreshToken: b, expiresAt: c, currentUser: d }) |
| 119 | + ) |
| 120 | + }), |
| 121 | + (this.removeSavedSession = () => { |
| 122 | + ;(this.currentUser = null), |
| 123 | + (this.refreshToken = null), |
| 124 | + (this.accessToken = this.supabaseKey), |
| 125 | + isBrowser() && localStorage.removeItem(storageKey) |
| 126 | + }), |
| 127 | + (this.authHeader = () => { |
| 128 | + var a = isBrowser() && localStorage.getItem(storageKey), |
| 129 | + b = a ? JSON.parse(a) : null |
| 130 | + return (null === b || void 0 === b ? void 0 : b.accessToken) |
| 131 | + ? 'Bearer '.concat(b.accessToken) |
| 132 | + : this.accessToken |
| 133 | + ? 'Bearer '.concat(this.accessToken) |
| 134 | + : null |
| 135 | + }), |
| 136 | + (this.recoverSession = () => { |
| 137 | + var a = isBrowser() && localStorage.getItem(storageKey) |
| 138 | + if (a) |
| 139 | + try { |
| 140 | + var b = JSON.parse(a), |
| 141 | + { accessToken: d, refreshToken: e, currentUser: f, expiresAt: g } = b, |
| 142 | + h = c(Date.now() / 1e3) |
| 143 | + g < h |
| 144 | + ? (console.log('saved session has expired'), this.removeSavedSession()) |
| 145 | + : ((this.accessToken = d), |
| 146 | + (this.refreshToken = e), |
| 147 | + (this.currentUser = f), |
| 148 | + setTimeout(this.callRefreshToken, 1e3 * (g - h - 60))) |
| 149 | + } catch (a) { |
| 150 | + return console.error(a), null |
| 151 | + } |
| 152 | + return null |
| 153 | + }), |
| 154 | + this.recoverSession() |
| 155 | + } |
| 156 | +} |
| 157 | +exports.Auth = Auth |
0 commit comments