@ng-supabase/core
Version:
ng-supabase is a component library and helper utilities for integrating Supabase in your angular application.
73 lines • 9.93 kB
JavaScript
// Angular.
import { Injectable } from '@angular/core';
import { Router, ActivatedRoute, } from '@angular/router';
// Local.
import { trimEnd } from './format/trim-end.function';
import { trimStart } from './format/trim-start.function';
import { LocationStrategy } from '@angular/common';
import { SupabaseConfig } from './supabase-config';
import { isString } from './type-check/is-string';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "./supabase-config";
import * as i3 from "@angular/common";
export class RouteService {
constructor(router, config, route, locationStrategy) {
this.router = router;
this.config = config;
this.route = route;
this.locationStrategy = locationStrategy;
}
getRootUrl() {
const [root] = window.location.href.split(this.router.url);
return root;
}
appendRoute(route) {
const root = trimEnd(this.getRootUrl(), '/');
return this.join(root, route);
}
join(...parts) {
let result = '';
let i = 0;
for (const part of parts) {
const isLast = i === parts.length - 1;
if (isLast) {
break;
}
const nextPart = parts[i + 1];
const trimmed1 = trimEnd(part, '/');
const trimmed2 = trimStart(nextPart, '/');
result += trimmed2 ? `${trimmed1}/${trimmed2}` : trimmed1;
i++;
}
return result;
}
getRedirectParamValue() {
const { redirectParamName } = this.config;
return redirectParamName
? this.route.snapshot.queryParams[redirectParamName]
: null;
}
constructAbsoluteUrl(...appendRoutePaths) {
const baseHref = this.locationStrategy.getBaseHref();
return this.join(location.origin, baseHref, ...appendRoutePaths);
}
goTo(route, options) {
const asString = route;
const isAbsoluteUrl = isString(route) && asString.startsWith('http');
if (isAbsoluteUrl) {
const root = this.getRootUrl();
route = trimStart(asString, root);
}
return Array.isArray(route)
? this.router.navigate(route, options)
: this.router.navigateByUrl(route, options);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RouteService, deps: [{ token: i1.Router }, { token: i2.SupabaseConfig }, { token: i1.ActivatedRoute }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RouteService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RouteService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.SupabaseConfig }, { type: i1.ActivatedRoute }, { type: i3.LocationStrategy }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3JvdXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVztBQUNYLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLE1BQU0sRUFFTixjQUFjLEdBR2YsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixTQUFTO0FBQ1QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUdsRCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNtQixNQUFjLEVBQ2QsTUFBc0IsRUFDdEIsS0FBcUIsRUFDckIsZ0JBQWtDO1FBSGxDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQ2xELENBQUM7SUFFSixVQUFVO1FBQ1IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQUcsS0FBZTtRQUNyQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVYsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFFdEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNwQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDMUQsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFDLE9BQU8saUJBQWlCO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7WUFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFHLGdCQUEwQjtRQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBT0QsSUFBSSxDQUNGLEtBQWtDLEVBQ2xDLE9BQXNEO1FBRXRELE1BQU0sUUFBUSxHQUFHLEtBQWUsQ0FBQztRQUNqQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBaUIsRUFBRSxPQUEyQixDQUFDO1lBQ3RFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBdkVVLFlBQVk7a0hBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIFVybFRyZWUsXG4gIEFjdGl2YXRlZFJvdXRlLFxuICBOYXZpZ2F0aW9uRXh0cmFzLFxuICBOYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG4vLyBMb2NhbC5cbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuL2Zvcm1hdC90cmltLWVuZC5mdW5jdGlvbic7XG5pbXBvcnQgeyB0cmltU3RhcnQgfSBmcm9tICcuL2Zvcm1hdC90cmltLXN0YXJ0LmZ1bmN0aW9uJztcbmltcG9ydCB7IExvY2F0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3VwYWJhc2VDb25maWcgfSBmcm9tICcuL3N1cGFiYXNlLWNvbmZpZyc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4vdHlwZS1jaGVjay9pcy1zdHJpbmcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJvdXRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFN1cGFiYXNlQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25TdHJhdGVneTogTG9jYXRpb25TdHJhdGVneVxuICApIHt9XG5cbiAgZ2V0Um9vdFVybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IFtyb290XSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KHRoaXMucm91dGVyLnVybCk7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBhcHBlbmRSb3V0ZShyb3V0ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByb290ID0gdHJpbUVuZCh0aGlzLmdldFJvb3RVcmwoKSwgJy8nKTtcbiAgICByZXR1cm4gdGhpcy5qb2luKHJvb3QsIHJvdXRlKTtcbiAgfVxuXG4gIGpvaW4oLi4ucGFydHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICBjb25zdCBpc0xhc3QgPSBpID09PSBwYXJ0cy5sZW5ndGggLSAxO1xuXG4gICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0UGFydCA9IHBhcnRzW2kgKyAxXTtcbiAgICAgIGNvbnN0IHRyaW1tZWQxID0gdHJpbUVuZChwYXJ0LCAnLycpO1xuICAgICAgY29uc3QgdHJpbW1lZDIgPSB0cmltU3RhcnQobmV4dFBhcnQsICcvJyk7XG4gICAgICByZXN1bHQgKz0gdHJpbW1lZDIgPyBgJHt0cmltbWVkMX0vJHt0cmltbWVkMn1gIDogdHJpbW1lZDE7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldFJlZGlyZWN0UGFyYW1WYWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB7IHJlZGlyZWN0UGFyYW1OYW1lIH0gPSB0aGlzLmNvbmZpZztcbiAgICByZXR1cm4gcmVkaXJlY3RQYXJhbU5hbWVcbiAgICAgID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tyZWRpcmVjdFBhcmFtTmFtZV1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdEFic29sdXRlVXJsKC4uLmFwcGVuZFJvdXRlUGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlSHJlZiA9IHRoaXMubG9jYXRpb25TdHJhdGVneS5nZXRCYXNlSHJlZigpO1xuICAgIHJldHVybiB0aGlzLmpvaW4obG9jYXRpb24ub3JpZ2luLCBiYXNlSHJlZiwgLi4uYXBwZW5kUm91dGVQYXRocyk7XG4gIH1cblxuICBnb1RvKHJvdXRlOiBzdHJpbmdbXSwgb3B0aW9ucz86IE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBnb1RvKFxuICAgIHJvdXRlOiBzdHJpbmcgfCBVcmxUcmVlLFxuICAgIG9wdGlvbnM/OiBOYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zXG4gICk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGdvVG8oXG4gICAgcm91dGU6IHN0cmluZyB8IHN0cmluZ1tdIHwgVXJsVHJlZSxcbiAgICBvcHRpb25zPzogTmF2aWdhdGlvbkV4dHJhcyB8IE5hdmlnYXRpb25CZWhhdmlvck9wdGlvbnNcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXNTdHJpbmcgPSByb3V0ZSBhcyBzdHJpbmc7XG4gICAgY29uc3QgaXNBYnNvbHV0ZVVybCA9IGlzU3RyaW5nKHJvdXRlKSAmJiBhc1N0cmluZy5zdGFydHNXaXRoKCdodHRwJyk7XG5cbiAgICBpZiAoaXNBYnNvbHV0ZVVybCkge1xuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuZ2V0Um9vdFVybCgpO1xuICAgICAgcm91dGUgPSB0cmltU3RhcnQoYXNTdHJpbmcsIHJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdXRlKVxuICAgICAgPyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyb3V0ZSBhcyBzdHJpbmdbXSwgb3B0aW9ucyBhcyBOYXZpZ2F0aW9uRXh0cmFzKVxuICAgICAgOiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlIGFzIHN0cmluZyB8IFVybFRyZWUsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=