Spaces:
Running
Running
| var __rest = (this && this.__rest) || function (s, e) { | |
| var t = {}; | |
| for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) | |
| t[p] = s[p]; | |
| if (s != null && typeof Object.getOwnPropertySymbols === "function") | |
| for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { | |
| if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) | |
| t[p[i]] = s[p[i]]; | |
| } | |
| return t; | |
| }; | |
| import { _generateLinkResponse, _noResolveJsonResponse, _request, _userResponse, } from './lib/fetch'; | |
| import { resolveFetch } from './lib/helpers'; | |
| import { isAuthError } from './lib/errors'; | |
| export default class GoTrueAdminApi { | |
| constructor({ url = '', headers = {}, fetch, }) { | |
| this.url = url; | |
| this.headers = headers; | |
| this.fetch = resolveFetch(fetch); | |
| this.mfa = { | |
| listFactors: this._listFactors.bind(this), | |
| deleteFactor: this._deleteFactor.bind(this), | |
| }; | |
| } | |
| /** | |
| * Removes a logged-in session. | |
| * @param jwt A valid, logged-in JWT. | |
| * @param scope The logout sope. | |
| */ | |
| async signOut(jwt, scope = 'global') { | |
| try { | |
| await _request(this.fetch, 'POST', `${this.url}/logout?scope=${scope}`, { | |
| headers: this.headers, | |
| jwt, | |
| noResolveJson: true, | |
| }); | |
| return { data: null, error: null }; | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: null, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| /** | |
| * Sends an invite link to an email address. | |
| * @param email The email address of the user. | |
| * @param options Additional options to be included when inviting. | |
| */ | |
| async inviteUserByEmail(email, options = {}) { | |
| try { | |
| return await _request(this.fetch, 'POST', `${this.url}/invite`, { | |
| body: { email, data: options.data }, | |
| headers: this.headers, | |
| redirectTo: options.redirectTo, | |
| xform: _userResponse, | |
| }); | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: { user: null }, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| /** | |
| * Generates email links and OTPs to be sent via a custom email provider. | |
| * @param email The user's email. | |
| * @param options.password User password. For signup only. | |
| * @param options.data Optional user metadata. For signup only. | |
| * @param options.redirectTo The redirect url which should be appended to the generated link | |
| */ | |
| async generateLink(params) { | |
| try { | |
| const { options } = params, rest = __rest(params, ["options"]); | |
| const body = Object.assign(Object.assign({}, rest), options); | |
| if ('newEmail' in rest) { | |
| // replace newEmail with new_email in request body | |
| body.new_email = rest === null || rest === void 0 ? void 0 : rest.newEmail; | |
| delete body['newEmail']; | |
| } | |
| return await _request(this.fetch, 'POST', `${this.url}/admin/generate_link`, { | |
| body: body, | |
| headers: this.headers, | |
| xform: _generateLinkResponse, | |
| redirectTo: options === null || options === void 0 ? void 0 : options.redirectTo, | |
| }); | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { | |
| data: { | |
| properties: null, | |
| user: null, | |
| }, | |
| error, | |
| }; | |
| } | |
| throw error; | |
| } | |
| } | |
| // User Admin API | |
| /** | |
| * Creates a new user. | |
| * This function should only be called on a server. Never expose your `service_role` key in the browser. | |
| */ | |
| async createUser(attributes) { | |
| try { | |
| return await _request(this.fetch, 'POST', `${this.url}/admin/users`, { | |
| body: attributes, | |
| headers: this.headers, | |
| xform: _userResponse, | |
| }); | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: { user: null }, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| /** | |
| * Get a list of users. | |
| * | |
| * This function should only be called on a server. Never expose your `service_role` key in the browser. | |
| * @param params An object which supports `page` and `perPage` as numbers, to alter the paginated results. | |
| */ | |
| async listUsers(params) { | |
| var _a, _b, _c, _d, _e, _f, _g; | |
| try { | |
| const pagination = { nextPage: null, lastPage: 0, total: 0 }; | |
| const response = await _request(this.fetch, 'GET', `${this.url}/admin/users`, { | |
| headers: this.headers, | |
| noResolveJson: true, | |
| query: { | |
| page: (_b = (_a = params === null || params === void 0 ? void 0 : params.page) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '', | |
| per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : '', | |
| }, | |
| xform: _noResolveJsonResponse, | |
| }); | |
| if (response.error) | |
| throw response.error; | |
| const users = await response.json(); | |
| const total = (_e = response.headers.get('x-total-count')) !== null && _e !== void 0 ? _e : 0; | |
| const links = (_g = (_f = response.headers.get('link')) === null || _f === void 0 ? void 0 : _f.split(',')) !== null && _g !== void 0 ? _g : []; | |
| if (links.length > 0) { | |
| links.forEach((link) => { | |
| const page = parseInt(link.split(';')[0].split('=')[1].substring(0, 1)); | |
| const rel = JSON.parse(link.split(';')[1].split('=')[1]); | |
| pagination[`${rel}Page`] = page; | |
| }); | |
| pagination.total = parseInt(total); | |
| } | |
| return { data: Object.assign(Object.assign({}, users), pagination), error: null }; | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: { users: [] }, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| /** | |
| * Get user by id. | |
| * | |
| * @param uid The user's unique identifier | |
| * | |
| * This function should only be called on a server. Never expose your `service_role` key in the browser. | |
| */ | |
| async getUserById(uid) { | |
| try { | |
| return await _request(this.fetch, 'GET', `${this.url}/admin/users/${uid}`, { | |
| headers: this.headers, | |
| xform: _userResponse, | |
| }); | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: { user: null }, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| /** | |
| * Updates the user data. | |
| * | |
| * @param attributes The data you want to update. | |
| * | |
| * This function should only be called on a server. Never expose your `service_role` key in the browser. | |
| */ | |
| async updateUserById(uid, attributes) { | |
| try { | |
| return await _request(this.fetch, 'PUT', `${this.url}/admin/users/${uid}`, { | |
| body: attributes, | |
| headers: this.headers, | |
| xform: _userResponse, | |
| }); | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: { user: null }, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| /** | |
| * Delete a user. Requires a `service_role` key. | |
| * | |
| * @param id The user id you want to remove. | |
| * @param shouldSoftDelete If true, then the user will be soft-deleted from the auth schema. | |
| * Defaults to false for backward compatibility. | |
| * | |
| * This function should only be called on a server. Never expose your `service_role` key in the browser. | |
| */ | |
| async deleteUser(id, shouldSoftDelete = false) { | |
| try { | |
| return await _request(this.fetch, 'DELETE', `${this.url}/admin/users/${id}`, { | |
| headers: this.headers, | |
| body: { | |
| should_soft_delete: shouldSoftDelete, | |
| }, | |
| xform: _userResponse, | |
| }); | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: { user: null }, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| async _listFactors(params) { | |
| try { | |
| const { data, error } = await _request(this.fetch, 'GET', `${this.url}/admin/users/${params.userId}/factors`, { | |
| headers: this.headers, | |
| xform: (factors) => { | |
| return { data: { factors }, error: null }; | |
| }, | |
| }); | |
| return { data, error }; | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: null, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| async _deleteFactor(params) { | |
| try { | |
| const data = await _request(this.fetch, 'DELETE', `${this.url}/admin/users/${params.userId}/factors/${params.id}`, { | |
| headers: this.headers, | |
| }); | |
| return { data, error: null }; | |
| } | |
| catch (error) { | |
| if (isAuthError(error)) { | |
| return { data: null, error }; | |
| } | |
| throw error; | |
| } | |
| } | |
| } | |
| //# sourceMappingURL=GoTrueAdminApi.js.map |