UNPKG

@pshurygin/ngx-quicklink

Version:
85 lines 9.02 kB
import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { Router, PRIMARY_OUTLET } from '@angular/router'; import { PrefetchRegistry } from './prefetch-registry.service'; import { EMPTY } from 'rxjs'; var QuicklinkStrategy = /** @class */ (function () { function QuicklinkStrategy(queue, router) { this.queue = queue; this.router = router; this.loading = new Set(); } QuicklinkStrategy.prototype.preload = function (route, load) { if (this.loading.has(route)) { // Don't preload the same route twice return EMPTY; } var conn = typeof window !== 'undefined' ? navigator.connection : undefined; if (conn) { // Don't preload if the user is on 2G. or if Save-Data is enabled.. if ((conn.effectiveType || '').includes('2g') || conn.saveData) return EMPTY; } // Prevent from preloading if (route.data && route.data.preload === false) { return EMPTY; } var fullPath = findPath(this.router.config, route); if (this.queue.shouldPrefetch(fullPath)) { this.loading.add(route); return load(); } return EMPTY; }; QuicklinkStrategy = tslib_1.__decorate([ Injectable(), tslib_1.__metadata("design:paramtypes", [PrefetchRegistry, Router]) ], QuicklinkStrategy); return QuicklinkStrategy; }()); export { QuicklinkStrategy }; var findPath = function (config, route) { config = config.slice(); var parent = new Map(); var visited = new Set(); var _loop_1 = function () { var el = config.shift(); visited.add(el); if (el === route) return "break"; var children = el.children || []; var current_1 = el._loadedConfig; if (current_1 && current_1.routes) { children = children.concat(current_1.routes); } children.forEach(function (r) { if (visited.has(r)) return; parent.set(r, el); config.push(r); }); }; while (config.length) { var state_1 = _loop_1(); if (state_1 === "break") break; } var path = ''; var current = route; while (current) { if (isPrimaryRoute(current)) { path = "/" + current.path + path; } else { path = "/(" + current.outlet + ":" + current.path + path + ")"; } current = parent.get(current); } return path; }; var ɵ0 = findPath; function isPrimaryRoute(route) { return route.outlet === PRIMARY_OUTLET || !route.outlet; } export { ɵ0 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2tsaW5rLXN0cmF0ZWd5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcHNodXJ5Z2luL25neC1xdWlja2xpbmsvIiwic291cmNlcyI6WyJzcmMvcXVpY2tsaW5rLXN0cmF0ZWd5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFzQixNQUFNLEVBQVMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc3QjtJQUdFLDJCQUFvQixLQUF1QixFQUFVLE1BQWM7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRm5FLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDO0lBRTJDLENBQUM7SUFFdkUsbUNBQU8sR0FBUCxVQUFRLEtBQVksRUFBRSxJQUFjO1FBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IscUNBQXFDO1lBQ3JDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFNLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFFLFNBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdkYsSUFBSSxJQUFJLEVBQUU7WUFDUixtRUFBbUU7WUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1NBQzlFO1FBQ0QsMEJBQTBCO1FBQzFCLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDOUMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDZjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQTFCVSxpQkFBaUI7UUFEN0IsVUFBVSxFQUFFO2lEQUlnQixnQkFBZ0IsRUFBa0IsTUFBTTtPQUh4RCxpQkFBaUIsQ0EyQjdCO0lBQUQsd0JBQUM7Q0FBQSxBQTNCRCxJQTJCQztTQTNCWSxpQkFBaUI7QUE2QjlCLElBQU0sUUFBUSxHQUFHLFVBQUMsTUFBZSxFQUFFLEtBQVk7SUFDN0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixJQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztJQUN2QyxJQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDOztRQUUvQixJQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixJQUFJLEVBQUUsS0FBSyxLQUFLOzJCQUFRO1FBQ3hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQU0sU0FBTyxHQUFJLEVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDMUMsSUFBSSxTQUFPLElBQUksU0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM3QixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUM7UUFDRCxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBUTtZQUN4QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE9BQU87WUFDM0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQzs7SUFiTCxPQUFPLE1BQU0sQ0FBQyxNQUFNOzs7O0tBY25CO0lBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRXBCLE9BQU8sT0FBTyxFQUFFO1FBQ2QsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxHQUFHLE1BQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFNLENBQUM7U0FDbEM7YUFBTTtZQUNMLElBQUksR0FBRyxPQUFLLE9BQU8sQ0FBQyxNQUFNLFNBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLE1BQUcsQ0FBQztTQUN0RDtRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQy9CO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7O0FBRUYsU0FBUyxjQUFjLENBQUMsS0FBWTtJQUNsQyxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJlbG9hZGluZ1N0cmF0ZWd5LCBSb3V0ZXIsIFJvdXRlLCBQUklNQVJZX09VVExFVCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcmVmZXRjaFJlZ2lzdHJ5IH0gZnJvbSAnLi9wcmVmZXRjaC1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWlja2xpbmtTdHJhdGVneSBpbXBsZW1lbnRzIFByZWxvYWRpbmdTdHJhdGVneSB7XG4gIGxvYWRpbmcgPSBuZXcgU2V0PFJvdXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcXVldWU6IFByZWZldGNoUmVnaXN0cnksIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgcHJlbG9hZChyb3V0ZTogUm91dGUsIGxvYWQ6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKHRoaXMubG9hZGluZy5oYXMocm91dGUpKSB7XG4gICAgICAvLyBEb24ndCBwcmVsb2FkIHRoZSBzYW1lIHJvdXRlIHR3aWNlXG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuICAgIGNvbnN0IGNvbm4gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IChuYXZpZ2F0b3IgYXMgYW55KS5jb25uZWN0aW9uIDogdW5kZWZpbmVkO1xuICAgIGlmIChjb25uKSB7XG4gICAgICAvLyBEb24ndCBwcmVsb2FkIGlmIHRoZSB1c2VyIGlzIG9uIDJHLiBvciBpZiBTYXZlLURhdGEgaXMgZW5hYmxlZC4uXG4gICAgICBpZiAoKGNvbm4uZWZmZWN0aXZlVHlwZSB8fCAnJykuaW5jbHVkZXMoJzJnJykgfHwgY29ubi5zYXZlRGF0YSkgcmV0dXJuIEVNUFRZO1xuICAgIH1cbiAgICAvLyBQcmV2ZW50IGZyb20gcHJlbG9hZGluZ1xuICAgIGlmIChyb3V0ZS5kYXRhICYmIHJvdXRlLmRhdGEucHJlbG9hZCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG4gICAgY29uc3QgZnVsbFBhdGggPSBmaW5kUGF0aCh0aGlzLnJvdXRlci5jb25maWcsIHJvdXRlKTtcbiAgICBpZiAodGhpcy5xdWV1ZS5zaG91bGRQcmVmZXRjaChmdWxsUGF0aCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5hZGQocm91dGUpO1xuICAgICAgcmV0dXJuIGxvYWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cblxuY29uc3QgZmluZFBhdGggPSAoY29uZmlnOiBSb3V0ZVtdLCByb3V0ZTogUm91dGUpOiBzdHJpbmcgPT4ge1xuICBjb25maWcgPSBjb25maWcuc2xpY2UoKTtcbiAgY29uc3QgcGFyZW50ID0gbmV3IE1hcDxSb3V0ZSwgUm91dGU+KCk7XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PFJvdXRlPigpO1xuICB3aGlsZSAoY29uZmlnLmxlbmd0aCkge1xuICAgIGNvbnN0IGVsID0gY29uZmlnLnNoaWZ0KCk7XG4gICAgdmlzaXRlZC5hZGQoZWwpO1xuICAgIGlmIChlbCA9PT0gcm91dGUpIGJyZWFrO1xuICAgIGxldCBjaGlsZHJlbiA9IGVsLmNoaWxkcmVuIHx8IFtdO1xuICAgIGNvbnN0IGN1cnJlbnQgPSAoZWwgYXMgYW55KS5fbG9hZGVkQ29uZmlnO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQucm91dGVzKSB7XG4gICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChjdXJyZW50LnJvdXRlcyk7XG4gICAgfVxuICAgIGNoaWxkcmVuLmZvckVhY2goKHI6IFJvdXRlKSA9PiB7XG4gICAgICBpZiAodmlzaXRlZC5oYXMocikpIHJldHVybjtcbiAgICAgIHBhcmVudC5zZXQociwgZWwpO1xuICAgICAgY29uZmlnLnB1c2gocik7XG4gICAgfSk7XG4gIH1cbiAgbGV0IHBhdGggPSAnJztcbiAgbGV0IGN1cnJlbnQgPSByb3V0ZTtcblxuICB3aGlsZSAoY3VycmVudCkge1xuICAgIGlmIChpc1ByaW1hcnlSb3V0ZShjdXJyZW50KSkge1xuICAgICAgcGF0aCA9IGAvJHtjdXJyZW50LnBhdGh9JHtwYXRofWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBgLygke2N1cnJlbnQub3V0bGV0fToke2N1cnJlbnQucGF0aH0ke3BhdGh9KWA7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBwYXJlbnQuZ2V0KGN1cnJlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG5mdW5jdGlvbiBpc1ByaW1hcnlSb3V0ZShyb3V0ZTogUm91dGUpIHtcbiAgcmV0dXJuIHJvdXRlLm91dGxldCA9PT0gUFJJTUFSWV9PVVRMRVQgfHwgIXJvdXRlLm91dGxldDtcbn1cbiJdfQ==