@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! 🚀
28 lines • 5.28 kB
JavaScript
import { inject } from '@angular/core';
import { injectDefaults } from '../defaults/defaults';
import { metadataJsonResolver } from './metadata-json-resolver';
import { isObject } from '../utils/is-object';
import { injectRouteMetadataStrategy } from '../routing/route-metadata-strategy';
import { _makeInjectionToken } from '../utils';
export const metadataResolver = () => _makeInjectionToken(ngDevMode ? 'Metadata Resolver' : 'MRes', () => {
const jsonResolver = inject(metadataJsonResolver());
const routeMetadataStrategy = injectRouteMetadataStrategy();
const defaults = injectDefaults();
return (values, resolverOptions) => {
const value = jsonResolver(values, resolverOptions);
const routeValue = jsonResolver(routeMetadataStrategy(), resolverOptions);
const defaultValue = jsonResolver(defaults ?? undefined, resolverOptions);
/* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */
if (isObject(value) &&
(isObject(routeValue) || isObject(defaultValue)) &&
resolverOptions.objectMerge) {
return {
...defaultValue,
...routeValue,
...value,
};
}
return [value, routeValue, defaultValue].find((v) => v !== undefined);
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9zcmMvcmVzb2x2ZXJzL21ldGFkYXRhLXJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRS9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNoRixPQUFPLEVBQXVCLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUEwQyxHQUFHLEVBQUUsQ0FDMUUsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0scUJBQXFCLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQTtJQUMzRCxNQUFNLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQTtJQUNqQyxPQUFPLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDbkQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDekUsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDekUsOEVBQThFO1FBQzlFLElBQ0UsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNmLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRCxlQUFlLENBQUMsV0FBVyxFQUMzQixDQUFDO1lBQ0QsT0FBTztnQkFDTCxHQUFJLFlBQXVCO2dCQUMzQixHQUFJLFVBQXFCO2dCQUN6QixHQUFHLEtBQUs7YUFDVCxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZFLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1ldGFkYXRhVmFsdWVzIH0gZnJvbSAnLi4vc2VydmljZSdcbmltcG9ydCB7IGluamVjdERlZmF1bHRzIH0gZnJvbSAnLi4vZGVmYXVsdHMvZGVmYXVsdHMnXG5pbXBvcnQgeyBtZXRhZGF0YUpzb25SZXNvbHZlciB9IGZyb20gJy4vbWV0YWRhdGEtanNvbi1yZXNvbHZlcidcbmltcG9ydCB7IE1ldGFkYXRhUmVzb2x2ZXJPcHRpb25zIH0gZnJvbSAnLi4vbWFuYWdlcnMnXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uL3V0aWxzL2lzLW9iamVjdCdcbmltcG9ydCB7IGluamVjdFJvdXRlTWV0YWRhdGFTdHJhdGVneSB9IGZyb20gJy4uL3JvdXRpbmcvcm91dGUtbWV0YWRhdGEtc3RyYXRlZ3knXG5pbXBvcnQgeyBfTGF6eUluamVjdGlvblRva2VuLCBfbWFrZUluamVjdGlvblRva2VuIH0gZnJvbSAnLi4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBtZXRhZGF0YVJlc29sdmVyOiBfTGF6eUluamVjdGlvblRva2VuPE1ldGFkYXRhUmVzb2x2ZXI+ID0gKCkgPT5cbiAgX21ha2VJbmplY3Rpb25Ub2tlbihuZ0Rldk1vZGUgPyAnTWV0YWRhdGEgUmVzb2x2ZXInIDogJ01SZXMnLCAoKSA9PiB7XG4gICAgY29uc3QganNvblJlc29sdmVyID0gaW5qZWN0KG1ldGFkYXRhSnNvblJlc29sdmVyKCkpXG4gICAgY29uc3Qgcm91dGVNZXRhZGF0YVN0cmF0ZWd5ID0gaW5qZWN0Um91dGVNZXRhZGF0YVN0cmF0ZWd5KClcbiAgICBjb25zdCBkZWZhdWx0cyA9IGluamVjdERlZmF1bHRzKClcbiAgICByZXR1cm4gKHZhbHVlcywgcmVzb2x2ZXJPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGpzb25SZXNvbHZlcih2YWx1ZXMsIHJlc29sdmVyT3B0aW9ucylcbiAgICAgIGNvbnN0IHJvdXRlVmFsdWUgPSBqc29uUmVzb2x2ZXIocm91dGVNZXRhZGF0YVN0cmF0ZWd5KCksIHJlc29sdmVyT3B0aW9ucylcbiAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGpzb25SZXNvbHZlcihkZWZhdWx0cyA/PyB1bmRlZmluZWQsIHJlc29sdmVyT3B0aW9ucylcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IGh0dHBzOi8vZ2l0aHViLmNvbS9pc3RhbmJ1bGpzL2lzdGFuYnVsanMvaXNzdWVzLzcxOSAqL1xuICAgICAgaWYgKFxuICAgICAgICBpc09iamVjdCh2YWx1ZSkgJiZcbiAgICAgICAgKGlzT2JqZWN0KHJvdXRlVmFsdWUpIHx8IGlzT2JqZWN0KGRlZmF1bHRWYWx1ZSkpICYmXG4gICAgICAgIHJlc29sdmVyT3B0aW9ucy5vYmplY3RNZXJnZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uKGRlZmF1bHRWYWx1ZSBhcyBvYmplY3QpLFxuICAgICAgICAgIC4uLihyb3V0ZVZhbHVlIGFzIG9iamVjdCksXG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBbdmFsdWUsIHJvdXRlVmFsdWUsIGRlZmF1bHRWYWx1ZV0uZmluZCgodikgPT4gdiAhPT0gdW5kZWZpbmVkKVxuICAgIH1cbiAgfSlcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFSZXNvbHZlciA9IChcbiAgdmFsdWVzOiBNZXRhZGF0YVZhbHVlcyxcbiAgcmVzb2x2ZXJPcHRpb25zOiBNZXRhZGF0YVJlc29sdmVyT3B0aW9ucyxcbikgPT4gdW5rbm93blxuIl19