UNPKG

@davidlj95/ngx-meta

Version:

Set your Angular site's metadata: standard meta tags, Open Graph, Twitter Cards, JSON-LD structured data and more. Supports SSR (and Angular Universal). Use a service. Use routes' data. Set it up in a flash! 🚀

34 lines • 5.11 kB
import { inject } from '@angular/core'; import { _urlResolver } from './url-resolver'; import { ANGULAR_ROUTER_URL } from './angular-router-url'; import { Router } from '@angular/router'; import { _isDefined } from '../utils'; export const provideDefaultUrlResolver = (baseUrl) => ({ provide: _urlResolver(), useFactory: () => { const router = inject(Router); return (url) => { if (!_isDefined(url)) { return url; } const urlString = url.toString(); if (urlString.split('://').length > 1) { return urlString; } const relativeUrl = url === ANGULAR_ROUTER_URL ? router.url : urlString; /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ if (relativeUrl.length === 0) { return baseUrl; } const baseUrlEndsWithSlash = baseUrl.endsWith('/'); const relativeUrlStartsWithSlash = relativeUrl.startsWith('/'); const pathToAppend = baseUrlEndsWithSlash && relativeUrlStartsWithSlash ? relativeUrl.slice(1) : !baseUrlEndsWithSlash && !relativeUrlStartsWithSlash ? `/${relativeUrl}` : relativeUrl; return `${baseUrl}${pathToAppend}`; }; }, }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC11cmwtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9zcmMvdXJsLXJlc29sdXRpb24vZGVmYXVsdC11cmwtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQTtBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFtQyxDQUN2RSxPQUFPLEVBQ1AsRUFBRSxDQUFDLENBQUM7SUFDSixPQUFPLEVBQUUsWUFBWSxFQUFFO0lBQ3ZCLFVBQVUsRUFBRSxHQUFpQixFQUFFO1FBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sR0FBRyxDQUFBO1lBQ1osQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUNoQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLFNBQVMsQ0FBQTtZQUNsQixDQUFDO1lBQ0QsTUFBTSxXQUFXLEdBQUcsR0FBRyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFDdkUsOEVBQThFO1lBQzlFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxPQUFPLENBQUE7WUFDaEIsQ0FBQztZQUNELE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRCxNQUFNLDBCQUEwQixHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDOUQsTUFBTSxZQUFZLEdBQ2hCLG9CQUFvQixJQUFJLDBCQUEwQjtnQkFDaEQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLDBCQUEwQjtvQkFDcEQsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFO29CQUNuQixDQUFDLENBQUMsV0FBVyxDQUFBO1lBQ25CLE9BQU8sR0FBRyxPQUFPLEdBQUcsWUFBWSxFQUFFLENBQUE7UUFDcEMsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmFzZVVybCB9IGZyb20gJy4vYmFzZS11cmwnXG5pbXBvcnQgeyBfdXJsUmVzb2x2ZXIsIF9VcmxSZXNvbHZlciB9IGZyb20gJy4vdXJsLXJlc29sdmVyJ1xuaW1wb3J0IHsgQU5HVUxBUl9ST1VURVJfVVJMIH0gZnJvbSAnLi9hbmd1bGFyLXJvdXRlci11cmwnXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBfaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBwcm92aWRlRGVmYXVsdFVybFJlc29sdmVyOiAoYmFzZVVybDogQmFzZVVybCkgPT4gUHJvdmlkZXIgPSAoXG4gIGJhc2VVcmwsXG4pID0+ICh7XG4gIHByb3ZpZGU6IF91cmxSZXNvbHZlcigpLFxuICB1c2VGYWN0b3J5OiAoKTogX1VybFJlc29sdmVyID0+IHtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKVxuICAgIHJldHVybiAodXJsKSA9PiB7XG4gICAgICBpZiAoIV9pc0RlZmluZWQodXJsKSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgICBjb25zdCB1cmxTdHJpbmcgPSB1cmwudG9TdHJpbmcoKVxuICAgICAgaWYgKHVybFN0cmluZy5zcGxpdCgnOi8vJykubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gdXJsU3RyaW5nXG4gICAgICB9XG4gICAgICBjb25zdCByZWxhdGl2ZVVybCA9IHVybCA9PT0gQU5HVUxBUl9ST1VURVJfVVJMID8gcm91dGVyLnVybCA6IHVybFN0cmluZ1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgaHR0cHM6Ly9naXRodWIuY29tL2lzdGFuYnVsanMvaXN0YW5idWxqcy9pc3N1ZXMvNzE5ICovXG4gICAgICBpZiAocmVsYXRpdmVVcmwubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiYXNlVXJsXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlVXJsRW5kc1dpdGhTbGFzaCA9IGJhc2VVcmwuZW5kc1dpdGgoJy8nKVxuICAgICAgY29uc3QgcmVsYXRpdmVVcmxTdGFydHNXaXRoU2xhc2ggPSByZWxhdGl2ZVVybC5zdGFydHNXaXRoKCcvJylcbiAgICAgIGNvbnN0IHBhdGhUb0FwcGVuZCA9XG4gICAgICAgIGJhc2VVcmxFbmRzV2l0aFNsYXNoICYmIHJlbGF0aXZlVXJsU3RhcnRzV2l0aFNsYXNoXG4gICAgICAgICAgPyByZWxhdGl2ZVVybC5zbGljZSgxKVxuICAgICAgICAgIDogIWJhc2VVcmxFbmRzV2l0aFNsYXNoICYmICFyZWxhdGl2ZVVybFN0YXJ0c1dpdGhTbGFzaFxuICAgICAgICAgICAgPyBgLyR7cmVsYXRpdmVVcmx9YFxuICAgICAgICAgICAgOiByZWxhdGl2ZVVybFxuICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9JHtwYXRoVG9BcHBlbmR9YFxuICAgIH1cbiAgfSxcbn0pXG4iXX0=