UNPKG

@ng-supabase/core

Version:

ng-supabase is a component library and helper utilities for integrating Supabase in your angular application.

89 lines 13.6 kB
// 3rd party. import { BehaviorSubject } from 'rxjs'; import { trimEnd } from './format/trim-end.function'; import { toSocialItem, } from './sign-in/social-sign-in'; export const DEFAULT_ROUTES = { main: '/', signIn: '/sign-in', register: '/register', registerOrSignIn: '/auth', setPassword: '/set-password', resetPassword: '/reset-password', postSignOut: '/sign-in', }; class SetPasswordConfig { constructor(init) { this.title = ''; this.requireConfirm = true; this.showMessageOnSave = true; Object.assign(this, init); } } class ProfileConfig { constructor(init) { this.table = ''; this.userIdField = 'user_id'; this.firstNameField = 'first_name'; this.lastNameField = 'last_name'; this.avatarField = 'avatar'; Object.assign(this, init); } } class RegisterConfig { constructor(init) { this.title = ''; this.metadata = []; Object.assign(this, init); this.metadata = this.metadata || []; } } export class SignInConfig { constructor(init) { this.title = ''; this.magicLinks = true; this.socials = []; this.rememberMe = true; this.socialIconsRoot = 'https://supabase.com/dashboard/img/icons/'; this.socialSignInItems = []; this.rememberMeStorageKey = 'supabase.auth.info'; this.otpEnabled = true; this.otpLength = 6; Object.assign(this, init); this.setSocialSignInItems(); } setSocialSignInItems() { for (const social of this.socials) { const item = toSocialItem(social); if (this.socialIconsRoot) { const root = trimEnd(this.socialIconsRoot, '/'); item.icon = `${root}/${item.value}-icon.svg`; } this.socialSignInItems.push(item); } } } export class SupabaseConfig { constructor(init) { this.mainRoute = '/'; this.routes = DEFAULT_ROUTES; this.redirectParamName = 'redirect'; Object.assign(this.routes, init.routes); const options = init; const url = SupabaseConfig.toApiUrl(options.apiUrl || options.project); this.logging = init.logging; this.setPassword = new SetPasswordConfig(init.setPassword); this.signIn = new SignInConfig(init.signIn); this.register = new RegisterConfig(init.register); this.profile = new ProfileConfig(init.profile); this.api = new BehaviorSubject({ url: url, key: init.apiKey, }); } static toApiUrl(urlOrProjectId) { return urlOrProjectId.startsWith('http') ? urlOrProjectId : `https://${urlOrProjectId}.supabase.co`; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwYWJhc2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3VwYWJhc2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGFBQWE7QUFDYixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsWUFBWSxHQUViLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFvQjtJQUM3QyxJQUFJLEVBQUUsR0FBRztJQUNULE1BQU0sRUFBRSxVQUFVO0lBQ2xCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLGdCQUFnQixFQUFFLE9BQU87SUFDekIsV0FBVyxFQUFFLGVBQWU7SUFDNUIsYUFBYSxFQUFFLGlCQUFpQjtJQUNoQyxXQUFXLEVBQUUsVUFBVTtDQUN4QixDQUFDO0FBb0ZGLE1BQU0saUJBQWlCO0lBS3JCLFlBQVksSUFBcUM7UUFKakQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUd2QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGFBQWE7SUFPakIsWUFBWSxJQUFpQztRQU43QyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxXQUFXLENBQUM7UUFDNUIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFHckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxj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LENBQUM7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhci5cbmltcG9ydCB7IFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG4vLyAzcmQgcGFydHkuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLy8gTG9jYWwuXG5pbXBvcnQgeyBMb2dDb25maWcgfSBmcm9tICcuL2xvZ2dpbmcvbG9nLWNvbmZpZyc7XG5pbXBvcnQgeyB0cmltRW5kIH0gZnJvbSAnLi9mb3JtYXQvdHJpbS1lbmQuZnVuY3Rpb24nO1xuaW1wb3J0IHtcbiAgU29jaWFsU2lnbkluLFxuICB0b1NvY2lhbEl0ZW0sXG4gIFNvY2lhbFNpZ25Jbkl0ZW0sXG59IGZyb20gJy4vc2lnbi1pbi9zb2NpYWwtc2lnbi1pbic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JPVVRFUzogQ29tcG9uZW50Um91dGVzID0ge1xuICBtYWluOiAnLycsXG4gIHNpZ25JbjogJy9zaWduLWluJyxcbiAgcmVnaXN0ZXI6ICcvcmVnaXN0ZXInLFxuICByZWdpc3Rlck9yU2lnbkluOiAnL2F1dGgnLFxuICBzZXRQYXNzd29yZDogJy9zZXQtcGFzc3dvcmQnLFxuICByZXNldFBhc3N3b3JkOiAnL3Jlc2V0LXBhc3N3b3JkJyxcbiAgcG9zdFNpZ25PdXQ6ICcvc2lnbi1pbicsXG59O1xuXG5pbnRlcmZhY2UgQmFzZVN1cGFiYXNlQ29uZmlnUHJvcGVydGllcyB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBtYWluUm91dGU/OiBzdHJpbmc7XG4gIHNpZ25Jbj86IFNpZ25JbkNvbmZpZ1Byb3BlcnRpZXM7XG4gIGxvZ2dpbmc/OiBMb2dDb25maWc7XG4gIHJlZ2lzdGVyPzogUmVnaXN0ZXJQcm9wZXJ0aWVzO1xuICBzZXRQYXNzd29yZD86IFNldFBhc3N3b3JkUHJvcGVydGllcztcbiAgcm91dGVzPzogUGFydGlhbDxDb21wb25lbnRSb3V0ZXM+O1xuICBwcm9maWxlPzogUHJvZmlsZVByb3BlcnRpZXM7XG59XG5cbmludGVyZmFjZSBTdXBhYmFzZUNvbmZpZ1Byb3BlcnRpZXNCeVVybCBleHRlbmRzIEJhc2VTdXBhYmFzZUNvbmZpZ1Byb3BlcnRpZXMge1xuICBhcGlVcmw6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN1cGFiYXNlQ29uZmlnUHJvcGVydGllc0J5UHJvamVjdFxuICBleHRlbmRzIEJhc2VTdXBhYmFzZUNvbmZpZ1Byb3BlcnRpZXMge1xuICBwcm9qZWN0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN1cGFiYXNlQ29uZmlnUHJvcGVydGllcyA9XG4gIHwgU3VwYWJhc2VDb25maWdQcm9wZXJ0aWVzQnlVcmxcbiAgfCBTdXBhYmFzZUNvbmZpZ1Byb3BlcnRpZXNCeVByb2plY3Q7XG5cbmludGVyZmFjZSBDb21wb25lbnRSb3V0ZXMge1xuICBtYWluOiBzdHJpbmc7XG4gIHNpZ25Jbjogc3RyaW5nO1xuICByZWdpc3Rlcjogc3RyaW5nO1xuICByZWdpc3Rlck9yU2lnbkluOiBzdHJpbmc7XG4gIHNldFBhc3N3b3JkOiBzdHJpbmc7XG4gIHJlc2V0UGFzc3dvcmQ6IHN0cmluZztcbiAgdXNlclByb2ZpbGU/OiBzdHJpbmc7XG4gIHBvc3RTaWduT3V0Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVXNlclJlZ2lzdHJhdGlvbk1ldGFkYXRhIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgZmllbGQ6IHN0cmluZztcbiAgdHlwZT86ICd0ZXh0JyB8ICdudW1iZXInO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlZ2lzdGVyUHJvcGVydGllcyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFVzZXJSZWdpc3RyYXRpb25NZXRhZGF0YVtdO1xufVxuXG5pbnRlcmZhY2UgUHJvZmlsZVByb3BlcnRpZXMge1xuICB0YWJsZT86IHN0cmluZztcbiAgYXZhdGFyRmllbGQ/OiBzdHJpbmc7XG4gIGZpcnN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBsYXN0TmFtZUZpZWxkPzogc3RyaW5nO1xufVxuXG50eXBlIFNvY2lhbFNpZ25JbkZuID0gKHNvY2lhbDogU29jaWFsU2lnbkluKSA9PiBib29sZWFuIHwgdm9pZDtcblxuaW50ZXJmYWNlIFNpZ25JbkNvbmZpZ1Byb3BlcnRpZXMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbWFnaWNMaW5rcz86IGJvb2xlYW47XG4gIHJlbWVtYmVyTWU/OiBib29sZWFuO1xuICBzb2NpYWxzPzogU29jaWFsU2lnbkluW107XG4gIHNvY2lhbEljb25zUm9vdD86IHN0cmluZztcbiAgcmVtZW1iZXJNZVN0b3JhZ2VLZXk/OiBzdHJpbmc7XG4gIG90cEVuYWJsZWQ/OiBib29sZWFuO1xuICBvdHBMZW5ndGg/OiBudW1iZXI7XG4gIHJlZGlyZWN0VG8/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IFVybFRyZWUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBvblNvY2lhbFNpZ25Jbj86IFNvY2lhbFNpZ25JbkZuO1xufVxuXG5pbnRlcmZhY2UgQXBpSW5mbyB7XG4gIHVybDogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNldFBhc3N3b3JkUHJvcGVydGllcyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICByZXF1aXJlQ29uZmlybT86IGJvb2xlYW47XG4gIHNob3dNZXNzYWdlT25TYXZlPzogYm9vbGVhbjtcbiAgcmVkaXJlY3RUbz86IHN0cmluZyB8IHN0cmluZ1tdIHwgVXJsVHJlZSB8IG51bGwgfCB1bmRlZmluZWQ7XG59XG5cbmNsYXNzIFNldFBhc3N3b3JkQ29uZmlnIGltcGxlbWVudHMgU2V0UGFzc3dvcmRQcm9wZXJ0aWVzIHtcbiAgdGl0bGUgPSAnJztcbiAgcmVxdWlyZUNvbmZpcm0gPSB0cnVlO1xuICBzaG93TWVzc2FnZU9uU2F2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8U2V0UGFzc3dvcmRQcm9wZXJ0aWVzPikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gIH1cbn1cblxuY2xhc3MgUHJvZmlsZUNvbmZpZyBpbXBsZW1lbnRzIFByb2ZpbGVQcm9wZXJ0aWVzIHtcbiAgdGFibGUgPSAnJztcbiAgdXNlcklkRmllbGQgPSAndXNlcl9pZCc7XG4gIGZpcnN0TmFtZUZpZWxkID0gJ2ZpcnN0X25hbWUnO1xuICBsYXN0TmFtZUZpZWxkID0gJ2xhc3RfbmFtZSc7XG4gIGF2YXRhckZpZWxkID0gJ2F2YXRhcic7XG5cbiAgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8UHJvZmlsZVByb3BlcnRpZXM+KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcbiAgfVxufVxuXG5jbGFzcyBSZWdpc3RlckNvbmZpZyBpbXBsZW1lbnRzIFJlZ2lzdGVyQ29uZmlnIHtcbiAgdGl0bGUgPSAnJztcbiAgbWV0YWRhdGE6IFVzZXJSZWdpc3RyYXRpb25NZXRhZGF0YVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8UmVnaXN0ZXJQcm9wZXJ0aWVzPikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gICAgdGhpcy5tZXRhZGF0YSA9IHRoaXMubWV0YWRhdGEgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpZ25JbkNvbmZpZyBpbXBsZW1lbnRzIFNpZ25JbkNvbmZpZ1Byb3BlcnRpZXMge1xuICB0aXRsZSA9ICcnO1xuICBtYWdpY0xpbmtzID0gdHJ1ZTtcbiAgc29jaWFsczogU29jaWFsU2lnbkluW10gPSBbXTtcbiAgcmVtZW1iZXJNZSA9IHRydWU7XG4gIHNvY2lhbEljb25zUm9vdCA9ICdodHRwczovL3N1cGFiYXNlLmNvbS9kYXNoYm9hcmQvaW1nL2ljb25zLyc7XG4gIHNvY2lhbFNpZ25Jbkl0ZW1zOiBTb2NpYWxTaWduSW5JdGVtW10gPSBbXTtcbiAgcmVkaXJlY3RUbz86IHN0cmluZyB8IHN0cmluZ1tdIHwgVXJsVHJlZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHJlbWVtYmVyTWVTdG9yYWdlS2V5ID0gJ3N1cGFiYXNlLmF1dGguaW5mbyc7XG4gIG90cEVuYWJsZWQgPSB0cnVlO1xuICBvdHBMZW5ndGggPSA2O1xuICBvblNvY2lhbFNpZ25Jbj86IFNvY2lhbFNpZ25JbkZuO1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ/OiBQYXJ0aWFsPFNpZ25JbkNvbmZpZz4pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xuICAgIHRoaXMuc2V0U29jaWFsU2lnbkluSXRlbXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U29jaWFsU2lnbkluSXRlbXMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzb2NpYWwgb2YgdGhpcy5zb2NpYWxzKSB7XG4gICAgICBjb25zdCBpdGVtID0gdG9Tb2NpYWxJdGVtKHNvY2lhbCk7XG4gICAgICBpZiAodGhpcy5zb2NpYWxJY29uc1Jvb3QpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRyaW1FbmQodGhpcy5zb2NpYWxJY29uc1Jvb3QsICcvJyk7XG4gICAgICAgIGl0ZW0uaWNvbiA9IGAke3Jvb3R9LyR7aXRlbS52YWx1ZX0taWNvbi5zdmdgO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvY2lhbFNpZ25Jbkl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdXBhYmFzZUNvbmZpZyB7XG4gIHNpZ25JbjogU2lnbkluQ29uZmlnO1xuICBhcGk6IEJlaGF2aW9yU3ViamVjdDx7IHVybDogc3RyaW5nOyBrZXk6IHN0cmluZyB9PjtcbiAgbG9nZ2luZz86IExvZ0NvbmZpZztcbiAgbWFpblJvdXRlID0gJy8nO1xuICBzZXRQYXNzd29yZDogU2V0UGFzc3dvcmRDb25maWc7XG4gIHJlZ2lzdGVyOiBSZWdpc3RlckNvbmZpZztcbiAgcm91dGVzOiBDb21wb25lbnRSb3V0ZXMgPSBERUZBVUxUX1JPVVRFUztcbiAgcmVkaXJlY3RQYXJhbU5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSAncmVkaXJlY3QnO1xuICBwcm9maWxlOiBQcm9maWxlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IFN1cGFiYXNlQ29uZmlnUHJvcGVydGllcykge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yb3V0ZXMsIGluaXQucm91dGVzKTtcbiAgICBjb25zdCBvcHRpb25zID0gaW5pdCBhcyBTdXBhYmFzZUNvbmZpZ1Byb3BlcnRpZXNCeVVybCAmXG4gICAgICBTdXBhYmFzZUNvbmZpZ1Byb3BlcnRpZXNCeVByb2plY3Q7XG5cbiAgICBjb25zdCB1cmwgPSBTdXBhYmFzZUNvbmZpZy50b0FwaVVybChvcHRpb25zLmFwaVVybCB8fCBvcHRpb25zLnByb2plY3QpO1xuICAgIHRoaXMubG9nZ2luZyA9IGluaXQubG9nZ2luZztcbiAgICB0aGlzLnNldFBhc3N3b3JkID0gbmV3IFNldFBhc3N3b3JkQ29uZmlnKGluaXQuc2V0UGFzc3dvcmQpO1xuICAgIHRoaXMuc2lnbkluID0gbmV3IFNpZ25JbkNvbmZpZyhpbml0LnNpZ25Jbik7XG4gICAgdGhpcy5yZWdpc3RlciA9IG5ldyBSZWdpc3RlckNvbmZpZyhpbml0LnJlZ2lzdGVyKTtcbiAgICB0aGlzLnByb2ZpbGUgPSBuZXcgUHJvZmlsZUNvbmZpZyhpbml0LnByb2ZpbGUpO1xuICAgIHRoaXMuYXBpID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcGlJbmZvPih7XG4gICAgICB1cmw6IHVybCxcbiAgICAgIGtleTogaW5pdC5hcGlLZXksXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgdG9BcGlVcmwodXJsT3JQcm9qZWN0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybE9yUHJvamVjdElkLnN0YXJ0c1dpdGgoJ2h0dHAnKVxuICAgICAgPyB1cmxPclByb2plY3RJZFxuICAgICAgOiBgaHR0cHM6Ly8ke3VybE9yUHJvamVjdElkfS5zdXBhYmFzZS5jb2A7XG4gIH1cbn1cbiJdfQ==