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! 🚀

46 lines (45 loc) • 6.85 kB
import { InjectionToken } from '@angular/core'; import { _formatDevMessage } from '../messaging'; import { MODULE_NAME } from '../module-name'; /** @visibleForTesting */ export const INJECTION_TOKENS = new Map(); /** @visibleForTesting */ export const INJECTION_TOKEN_FACTORIES = new Map(); /** * Creates an injection token with the given factory function if it doesn't exist. * To determine if an injection token exists, the description string is used. * * Useful to create {@link _LazyInjectionToken}s. * \> The function can't be used to create a lazy injection token directly * \> As a function call won't be tree-shaken. Which is the main purpose of lazy tokens. * \> More in https://github.com/davidlj95/ngx/pull/902 * * It also adds the library name as prefix to the injection token description. * In order to locate library's injectable easily when debugging an Angular project. * * @internal */ export const _makeInjectionToken = (description, factory) => { const injectionToken = INJECTION_TOKENS.get(description) ?? new InjectionToken(`ngx-meta ${description}`, /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ factory ? { factory } : undefined); INJECTION_TOKENS.set(description, injectionToken); /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ if (ngDevMode && factory) { if ((INJECTION_TOKEN_FACTORIES.get(description)?.toString() ?? factory.toString()) !== factory.toString()) { console.warn(_formatDevMessage([ 'trying to create an injection token with same description but different factory. ', 'The existing injection token will be used and this new factory will be ignored. ', 'This use case is a bit weird anyway. Ensure no duplicate injection tokens are created. ', ].join('\n'), { module: MODULE_NAME, value: description, })); } INJECTION_TOKEN_FACTORIES.set(description, factory); } return injectionToken; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1pbmplY3Rpb24tdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9zcmMvdXRpbHMvbWFrZS1pbmplY3Rpb24tdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTVDLHlCQUF5QjtBQUN6QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQTtBQUMxRSx5QkFBeUI7QUFDekIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUE7QUFFekU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FHUCxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNoRCxNQUFNLGNBQWMsR0FDbEIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNqQyxJQUFJLGNBQWMsQ0FDaEIsWUFBWSxXQUFXLEVBQUU7UUFDekIsOEVBQThFO1FBQzlFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNsQyxDQUFBO0lBQ0gsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNqRCw4RUFBOEU7SUFDOUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsSUFDRSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUU7WUFDckQsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUM1QyxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixpQkFBaUIsQ0FDZjtnQkFDRSxtRkFBbUY7Z0JBQ25GLGtGQUFrRjtnQkFDbEYseUZBQXlGO2FBQzFGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNaO2dCQUNFLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixLQUFLLEVBQUUsV0FBVzthQUNuQixDQUNGLENBQ0YsQ0FBQTtRQUNILENBQUM7UUFDRCx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQTtBQUN2QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBfZm9ybWF0RGV2TWVzc2FnZSB9IGZyb20gJy4uL21lc3NhZ2luZydcbmltcG9ydCB7IE1PRFVMRV9OQU1FIH0gZnJvbSAnLi4vbW9kdWxlLW5hbWUnXG5cbi8qKiBAdmlzaWJsZUZvclRlc3RpbmcgKi9cbmV4cG9ydCBjb25zdCBJTkpFQ1RJT05fVE9LRU5TID0gbmV3IE1hcDxzdHJpbmcsIEluamVjdGlvblRva2VuPHVua25vd24+PigpXG4vKiogQHZpc2libGVGb3JUZXN0aW5nICovXG5leHBvcnQgY29uc3QgSU5KRUNUSU9OX1RPS0VOX0ZBQ1RPUklFUyA9IG5ldyBNYXA8c3RyaW5nLCAoKSA9PiB1bmtub3duPigpXG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbmplY3Rpb24gdG9rZW4gd2l0aCB0aGUgZ2l2ZW4gZmFjdG9yeSBmdW5jdGlvbiBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICogVG8gZGV0ZXJtaW5lIGlmIGFuIGluamVjdGlvbiB0b2tlbiBleGlzdHMsIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgdXNlZC5cbiAqXG4gKiBVc2VmdWwgdG8gY3JlYXRlIHtAbGluayBfTGF6eUluamVjdGlvblRva2VufXMuXG5cbiAqIFxcPiBUaGUgZnVuY3Rpb24gY2FuJ3QgYmUgdXNlZCB0byBjcmVhdGUgYSBsYXp5IGluamVjdGlvbiB0b2tlbiBkaXJlY3RseVxuICogXFw+IEFzIGEgZnVuY3Rpb24gY2FsbCB3b24ndCBiZSB0cmVlLXNoYWtlbi4gV2hpY2ggaXMgdGhlIG1haW4gcHVycG9zZSBvZiBsYXp5IHRva2Vucy5cbiAqIFxcPiBNb3JlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZpZGxqOTUvbmd4L3B1bGwvOTAyXG4gKlxuICogSXQgYWxzbyBhZGRzIHRoZSBsaWJyYXJ5IG5hbWUgYXMgcHJlZml4IHRvIHRoZSBpbmplY3Rpb24gdG9rZW4gZGVzY3JpcHRpb24uXG4gKiBJbiBvcmRlciB0byBsb2NhdGUgbGlicmFyeSdzIGluamVjdGFibGUgZWFzaWx5IHdoZW4gZGVidWdnaW5nIGFuIEFuZ3VsYXIgcHJvamVjdC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IF9tYWtlSW5qZWN0aW9uVG9rZW46IDxUPihcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgZmFjdG9yeT86ICgpID0+IFQsXG4pID0+IEluamVjdGlvblRva2VuPFQ+ID0gKGRlc2NyaXB0aW9uLCBmYWN0b3J5KSA9PiB7XG4gIGNvbnN0IGluamVjdGlvblRva2VuID1cbiAgICBJTkpFQ1RJT05fVE9LRU5TLmdldChkZXNjcmlwdGlvbikgPz9cbiAgICBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICAgICBgbmd4LW1ldGEgJHtkZXNjcmlwdGlvbn1gLFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgaHR0cHM6Ly9naXRodWIuY29tL2lzdGFuYnVsanMvaXN0YW5idWxqcy9pc3N1ZXMvNzE5ICovXG4gICAgICBmYWN0b3J5ID8geyBmYWN0b3J5IH0gOiB1bmRlZmluZWQsXG4gICAgKVxuICBJTkpFQ1RJT05fVE9LRU5TLnNldChkZXNjcmlwdGlvbiwgaW5qZWN0aW9uVG9rZW4pXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IGh0dHBzOi8vZ2l0aHViLmNvbS9pc3RhbmJ1bGpzL2lzdGFuYnVsanMvaXNzdWVzLzcxOSAqL1xuICBpZiAobmdEZXZNb2RlICYmIGZhY3RvcnkpIHtcbiAgICBpZiAoXG4gICAgICAoSU5KRUNUSU9OX1RPS0VOX0ZBQ1RPUklFUy5nZXQoZGVzY3JpcHRpb24pPy50b1N0cmluZygpID8/XG4gICAgICAgIGZhY3RvcnkudG9TdHJpbmcoKSkgIT09IGZhY3RvcnkudG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBfZm9ybWF0RGV2TWVzc2FnZShcbiAgICAgICAgICBbXG4gICAgICAgICAgICAndHJ5aW5nIHRvIGNyZWF0ZSBhbiBpbmplY3Rpb24gdG9rZW4gd2l0aCBzYW1lIGRlc2NyaXB0aW9uIGJ1dCBkaWZmZXJlbnQgZmFjdG9yeS4gJyxcbiAgICAgICAgICAgICdUaGUgZXhpc3RpbmcgaW5qZWN0aW9uIHRva2VuIHdpbGwgYmUgdXNlZCBhbmQgdGhpcyBuZXcgZmFjdG9yeSB3aWxsIGJlIGlnbm9yZWQuICcsXG4gICAgICAgICAgICAnVGhpcyB1c2UgY2FzZSBpcyBhIGJpdCB3ZWlyZCBhbnl3YXkuIEVuc3VyZSBubyBkdXBsaWNhdGUgaW5qZWN0aW9uIHRva2VucyBhcmUgY3JlYXRlZC4gJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZHVsZTogTU9EVUxFX05BTUUsXG4gICAgICAgICAgICB2YWx1ZTogZGVzY3JpcHRpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG4gICAgSU5KRUNUSU9OX1RPS0VOX0ZBQ1RPUklFUy5zZXQoZGVzY3JpcHRpb24sIGZhY3RvcnkpXG4gIH1cbiAgcmV0dXJuIGluamVjdGlvblRva2VuXG59XG4iXX0=