@tangential/core
Version:
Core types and support code for Tangential
54 lines • 6.75 kB
JavaScript
import { map } from 'rxjs/operators';
export class NgUtil {
static data$(route) {
return route.data.pipe(map((data) => {
return NgUtil.collectFromRoute(route.snapshot, true);
}));
}
static data(route) {
return NgUtil.collectFromRoute(route, true);
}
static params(route) {
return NgUtil.collectFromRoute(route, false);
}
static collectFromRoute(route, data) {
const datas = [{}];
let child = route.root;
while (child) {
const what = data ? child.data : child.params;
datas.push(what || {});
child = child.firstChild;
}
// merge them all together...
return Object.assign.apply(Object, datas);
}
static params$(route) {
return route.params.pipe(map((params) => {
return NgUtil.collectFromRoute(route.snapshot, false);
}));
}
static routeLeaf(route) {
let child = route.root;
while (child.firstChild) {
child = child.firstChild;
}
return child;
}
static keylessUrl(route) {
return route.url ? route.url.split('/').map(segment => NgUtil.isFirebaseId(segment) ? ':key' : segment).join('/') : '';
}
/**
*
* @param key
* @returns {boolean}
* @deprecated See FireBlanket.util#isFirebaseGeneratedId
*/
static isFirebaseId(key) {
let isKey = false;
if (key && key.length === 20 && key.startsWith('-')) {
isKey = true;
}
return isKey;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdlbnRpYWwvY29yZS9zcmMvbGliL3V0aWwvbmctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUE7QUFJbEMsTUFBTSxPQUFPLE1BQU07SUFFakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFxQjtRQUNoQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdEQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQTZCO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUE2QjtRQUN6QyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLElBQWE7UUFDbEUsTUFBTSxLQUFLLEdBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6QixJQUFJLEtBQUssR0FBK0IsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUNsRCxPQUFPLEtBQUssRUFBRTtZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtZQUM3QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQTtTQUN6QjtRQUNELDZCQUE2QjtRQUM3QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFZLENBQVEsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFxQjtRQUNsQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzNDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQTBCO1FBQ3pDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFFdEIsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO1NBQ3pCO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUEwQjtRQUMxQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FDekMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzlFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVztRQUM3QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuRCxLQUFLLEdBQUcsSUFBSSxDQUFBO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3R9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5cblxuZXhwb3J0IGNsYXNzIE5nVXRpbCB7XG5cbiAgc3RhdGljIGRhdGEkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6T2JzZXJ2YWJsZTx7fT4ge1xuICAgIHJldHVybiByb3V0ZS5kYXRhLnBpcGUobWFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBOZ1V0aWwuY29sbGVjdEZyb21Sb3V0ZShyb3V0ZS5zbmFwc2hvdCwgdHJ1ZSlcbiAgICB9KSlcbiAgfVxuXG4gIHN0YXRpYyBkYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYW55IHtcbiAgICByZXR1cm4gTmdVdGlsLmNvbGxlY3RGcm9tUm91dGUocm91dGUsIHRydWUpXG4gIH1cblxuICBzdGF0aWMgcGFyYW1zKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYW55IHtcbiAgICByZXR1cm4gTmdVdGlsLmNvbGxlY3RGcm9tUm91dGUocm91dGUsIGZhbHNlKVxuICB9XG5cbiAgc3RhdGljIGNvbGxlY3RGcm9tUm91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGRhdGE6IGJvb2xlYW4pOiBhbnkge1xuICAgIGNvbnN0IGRhdGFzOiBhbnlbXSA9IFt7fV1cbiAgICBsZXQgY2hpbGQ6QWN0aXZhdGVkUm91dGVTbmFwc2hvdHxudWxsID0gcm91dGUucm9vdFxuICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgY29uc3Qgd2hhdCA9IGRhdGEgPyBjaGlsZC5kYXRhIDogY2hpbGQucGFyYW1zXG4gICAgICBkYXRhcy5wdXNoKHdoYXQgfHwge30pXG4gICAgICBjaGlsZCA9IGNoaWxkLmZpcnN0Q2hpbGRcbiAgICB9XG4gICAgLy8gbWVyZ2UgdGhlbSBhbGwgdG9nZXRoZXIuLi5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbi5hcHBseShPYmplY3QsIGRhdGFzIGFzIGFueSkgYXMgYW55XG4gIH1cblxuICBzdGF0aWMgcGFyYW1zJChyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICByZXR1cm4gcm91dGUucGFyYW1zLnBpcGUobWFwKChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIE5nVXRpbC5jb2xsZWN0RnJvbVJvdXRlKHJvdXRlLnNuYXBzaG90LCBmYWxzZSlcbiAgICB9KSlcbiAgfVxuXG4gIHN0YXRpYyByb3V0ZUxlYWYocm91dGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHtcbiAgICBsZXQgY2hpbGQgPSByb3V0ZS5yb290XG5cbiAgICB3aGlsZSAoY2hpbGQuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGQgPSBjaGlsZC5maXJzdENoaWxkXG4gICAgfVxuICAgIHJldHVybiBjaGlsZFxuICB9XG5cbiAgc3RhdGljIGtleWxlc3NVcmwocm91dGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZS51cmwgPyByb3V0ZS51cmwuc3BsaXQoJy8nKS5tYXAoXG4gICAgICBzZWdtZW50ID0+IE5nVXRpbC5pc0ZpcmViYXNlSWQoc2VnbWVudCkgPyAnOmtleScgOiBzZWdtZW50KS5qb2luKCcvJykgOiAnJ1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBkZXByZWNhdGVkIFNlZSBGaXJlQmxhbmtldC51dGlsI2lzRmlyZWJhc2VHZW5lcmF0ZWRJZFxuICAgKi9cbiAgc3RhdGljIGlzRmlyZWJhc2VJZChrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0tleSA9IGZhbHNlXG4gICAgaWYgKGtleSAmJiBrZXkubGVuZ3RoID09PSAyMCAmJiBrZXkuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICBpc0tleSA9IHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGlzS2V5XG4gIH1cblxufVxuIl19