UNPKG

@spartacus/core

Version:

Spartacus - the core framework

78 lines 8.97 kB
import { Injectable, isDevMode } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./config/routing-config"; export class RoutingConfigService { constructor(config) { this.config = config; } /** * Returns the route config for the given route name. */ getRouteConfig(routeName) { var _a, _b; const routeConfig = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.routing) === null || _b === void 0 ? void 0 : _b.routes; const result = routeConfig && routeConfig[routeName]; if (!routeConfig || result === undefined) { this.warn(`No path was configured for the named route '${routeName}'!`); } return result; } warn(...args) { if (isDevMode()) { console.warn(...args); } } /** * Returns the configured route loading strategy. */ getLoadStrategy() { var _a, _b, _c; return (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.routing) === null || _b === void 0 ? void 0 : _b.loadStrategy) !== null && _c !== void 0 ? _c : "always" /* ALWAYS */; } /** * Returns the route name of the configured path. * * For example, when the config is: * ``` * routing: { * routes: { * addressBook: { paths: ['my-account/address-book'] } * } * } * ``` * * the `getRouteName('my-account/address-book')` returns `'addressBook'`. */ getRouteName(path) { if (!this.routeNamesByPath) { this.initRouteNamesByPath(); } return this.routeNamesByPath[path]; } /** * Initializes the property `routeNamesByPath`. * * The original config allows for reading configured path by the route name. * But this method builds up a structure with a 'reversed config' * to read quickly the route name by the path. */ initRouteNamesByPath() { var _a, _b, _c; this.routeNamesByPath = {}; for (const [routeName, routeConfig] of Object.entries((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.routing) === null || _b === void 0 ? void 0 : _b.routes)) { (_c = routeConfig === null || routeConfig === void 0 ? void 0 : routeConfig.paths) === null || _c === void 0 ? void 0 : _c.forEach((path) => { if (isDevMode() && this.routeNamesByPath[path]) { console.error(`The same path '${path}' is configured for two different route names: '${this.routeNamesByPath[path]}' and '${routeName}`); } this.routeNamesByPath[path] = routeName; }); } } } RoutingConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: RoutingConfigService, deps: [{ token: i1.RoutingConfig }], target: i0.ɵɵFactoryTarget.Injectable }); RoutingConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: RoutingConfigService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: RoutingConfigService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: i1.RoutingConfig }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3JvdXRpbmcvY29uZmlndXJhYmxlLXJvdXRlcy9yb3V0aW5nLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLdEQsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUFzQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO0lBQUcsQ0FBQztJQUUvQzs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUFpQjs7UUFDOUIsTUFBTSxXQUFXLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE9BQU8sMENBQUUsTUFBTSxDQUFDO1FBRWpELE1BQU0sTUFBTSxHQUFHLFdBQVcsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsK0NBQStDLFNBQVMsSUFBSSxDQUFDLENBQUM7U0FDekU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUNsQixJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTs7UUFDYixPQUFPLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE9BQU8sMENBQUUsWUFBWSx3REFBNEIsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFlBQVksQ0FBQyxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sb0JBQW9COztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUNuRCxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsT0FBTywwQ0FBRSxNQUFNLENBQzdCLEVBQUU7WUFDRCxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxLQUFLLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNuQyxJQUFJLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDOUMsT0FBTyxDQUFDLEtBQUssQ0FDWCxrQkFBa0IsSUFBSSxtREFBbUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLFNBQVMsRUFBRSxDQUMxSCxDQUFDO2lCQUNIO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O2lIQTdFVSxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQURQLE1BQU07MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlTG9hZFN0cmF0ZWd5LCBSb3V0aW5nQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvcm91dGluZy1jb25maWcnO1xuaW1wb3J0IHsgUm91dGVDb25maWcgfSBmcm9tICcuL3JvdXRlcy1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJvdXRpbmdDb25maWdTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFJldmVyc2VkIHJvdXRpbmcgY29uZmlnIGZvciBxdWljayBsb29rdXAgb2YgdGhlIHJvdXRlIG5hbWUgYnkgdGhlIGNvbmZpZ3VyZWQgcGF0aC5cbiAgICovXG4gIHByb3RlY3RlZCByb3V0ZU5hbWVzQnlQYXRoOiB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29uZmlnOiBSb3V0aW5nQ29uZmlnKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByb3V0ZSBjb25maWcgZm9yIHRoZSBnaXZlbiByb3V0ZSBuYW1lLlxuICAgKi9cbiAgZ2V0Um91dGVDb25maWcocm91dGVOYW1lOiBzdHJpbmcpOiBSb3V0ZUNvbmZpZyB7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmNvbmZpZz8ucm91dGluZz8ucm91dGVzO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gcm91dGVDb25maWcgJiYgcm91dGVDb25maWdbcm91dGVOYW1lXTtcbiAgICBpZiAoIXJvdXRlQ29uZmlnIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLndhcm4oYE5vIHBhdGggd2FzIGNvbmZpZ3VyZWQgZm9yIHRoZSBuYW1lZCByb3V0ZSAnJHtyb3V0ZU5hbWV9JyFgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgd2FybiguLi5hcmdzKSB7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLndhcm4oLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbmZpZ3VyZWQgcm91dGUgbG9hZGluZyBzdHJhdGVneS5cbiAgICovXG4gIGdldExvYWRTdHJhdGVneSgpOiBSb3V0ZUxvYWRTdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5yb3V0aW5nPy5sb2FkU3RyYXRlZ3kgPz8gUm91dGVMb2FkU3RyYXRlZ3kuQUxXQVlTO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJvdXRlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyZWQgcGF0aC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHdoZW4gdGhlIGNvbmZpZyBpczpcbiAgICogYGBgXG4gICAqIHJvdXRpbmc6IHtcbiAgICogICByb3V0ZXM6IHtcbiAgICogICAgICBhZGRyZXNzQm9vazogeyBwYXRoczogWydteS1hY2NvdW50L2FkZHJlc3MtYm9vayddIH1cbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIHRoZSBgZ2V0Um91dGVOYW1lKCdteS1hY2NvdW50L2FkZHJlc3MtYm9vaycpYCByZXR1cm5zIGAnYWRkcmVzc0Jvb2snYC5cbiAgICovXG4gIGdldFJvdXRlTmFtZShwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMucm91dGVOYW1lc0J5UGF0aCkge1xuICAgICAgdGhpcy5pbml0Um91dGVOYW1lc0J5UGF0aCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yb3V0ZU5hbWVzQnlQYXRoW3BhdGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwcm9wZXJ0eSBgcm91dGVOYW1lc0J5UGF0aGAuXG4gICAqXG4gICAqIFRoZSBvcmlnaW5hbCBjb25maWcgYWxsb3dzIGZvciByZWFkaW5nIGNvbmZpZ3VyZWQgcGF0aCBieSB0aGUgcm91dGUgbmFtZS5cbiAgICogQnV0IHRoaXMgbWV0aG9kIGJ1aWxkcyB1cCBhIHN0cnVjdHVyZSB3aXRoIGEgJ3JldmVyc2VkIGNvbmZpZydcbiAgICogdG8gcmVhZCBxdWlja2x5IHRoZSByb3V0ZSBuYW1lIGJ5IHRoZSBwYXRoLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRSb3V0ZU5hbWVzQnlQYXRoKCkge1xuICAgIHRoaXMucm91dGVOYW1lc0J5UGF0aCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBbcm91dGVOYW1lLCByb3V0ZUNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICB0aGlzLmNvbmZpZz8ucm91dGluZz8ucm91dGVzXG4gICAgKSkge1xuICAgICAgcm91dGVDb25maWc/LnBhdGhzPy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLnJvdXRlTmFtZXNCeVBhdGhbcGF0aF0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYFRoZSBzYW1lIHBhdGggJyR7cGF0aH0nIGlzIGNvbmZpZ3VyZWQgZm9yIHR3byBkaWZmZXJlbnQgcm91dGUgbmFtZXM6ICcke3RoaXMucm91dGVOYW1lc0J5UGF0aFtwYXRoXX0nIGFuZCAnJHtyb3V0ZU5hbWV9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZU5hbWVzQnlQYXRoW3BhdGhdID0gcm91dGVOYW1lO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=