@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
JavaScript
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=