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

382 lines (357 loc) 15 kB
import { withPropertyAttribute, _composedMetadataName, _provideNgxMetaModuleManager, withOptions, _withModuleManagerNameAttribute, _GLOBAL_DESCRIPTION, _withModuleManagerSameGlobalKey, _withModuleManagerSetterFactory, _maybeTooLongDevMessage, withContentAttribute, _GLOBAL_IMAGE, withManagerObjectMerging, _isDefined, _maybeNonHttpUrlDevMessage, _GLOBAL_LOCALE, withManagerGlobal, _GLOBAL_APPLICATION_NAME, _GLOBAL_TITLE, withManagerDeps, NgxMetaElementsService, _titleFormatter, _GLOBAL_CANONICAL_URL, _urlResolver } from '@davidlj95/ngx-meta/core'; import * as i0 from '@angular/core'; import { NgModule } from '@angular/core'; const MODULE_NAME = 'open-graph'; const withOpenGraphPropertyAttribute = (...propertyParts) => withPropertyAttribute(_composedMetadataName('og', ...propertyParts)); const OPEN_GRAPH_KEY = 'openGraph'; const provideOpenGraphManager = (key, ...options) => _provideNgxMetaModuleManager(key, [OPEN_GRAPH_KEY], withOptions(_withModuleManagerNameAttribute(withOpenGraphPropertyAttribute(key)), ...options)); /** * Manages the {@link OpenGraph.description} metadata * @public */ const provideOpenGraphDescription = () => provideOpenGraphManager(_GLOBAL_DESCRIPTION, _withModuleManagerSameGlobalKey(), _withModuleManagerSetterFactory((metaElementsService) => (description) => { /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ if (ngDevMode) { _maybeTooLongDevMessage(description, 300, { module: MODULE_NAME, property: _GLOBAL_DESCRIPTION, value: description, link: 'https://stackoverflow.com/q/8914476/3263250', }); } metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_DESCRIPTION), withContentAttribute(description)); })); /** * {@inheritDoc provideOpenGraphDescription} * @deprecated Use {@link provideOpenGraphDescription} instead * @public */ const OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphDescription(); const NO_KEY_VALUE = { url: undefined, alt: undefined, secureUrl: null, type: null, width: null, height: null, }; /** * Manages the {@link OpenGraph.image} metadata * @public */ const provideOpenGraphImage = () => provideOpenGraphManager(_GLOBAL_IMAGE, _withModuleManagerSameGlobalKey(), withManagerObjectMerging(), _withModuleManagerSetterFactory((metaElementsService) => (value) => { const imageUrl = value?.url?.toString(); const effectiveValue = _isDefined(imageUrl) ? value : NO_KEY_VALUE; /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ if (ngDevMode) { _maybeNonHttpUrlDevMessage(imageUrl, { module: MODULE_NAME, property: _GLOBAL_IMAGE, value: imageUrl, link: 'https://stackoverflow.com/a/9858694/3263250', }); } metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_IMAGE), withContentAttribute(imageUrl)); metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_IMAGE, 'alt'), withContentAttribute(effectiveValue?.alt)); metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_IMAGE, 'secure_url'), withContentAttribute(effectiveValue?.secureUrl?.toString())); metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_IMAGE, 'type'), withContentAttribute(effectiveValue?.type)); metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_IMAGE, 'width'), withContentAttribute(effectiveValue?.width?.toString())); metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_IMAGE, 'height'), withContentAttribute(effectiveValue?.height?.toString())); })); /** * {@inheritDoc provideOpenGraphImage} * @deprecated Use {@link provideOpenGraphImage} instead * @public */ const OPEN_GRAPH_IMAGE_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphImage(); /** * Manages the {@link OpenGraph.locale} metadata * @public */ const provideOpenGraphLocale = () => provideOpenGraphManager(_GLOBAL_LOCALE, _withModuleManagerSameGlobalKey()); /** * {@inheritDoc provideOpenGraphLocale} * @deprecated Use {@link provideOpenGraphLocale} instead * @public */ const OPEN_GRAPH_LOCALE_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphLocale(); /** * Manages the {@link OpenGraph.siteName} metadata * @public */ const provideOpenGraphSiteName = () => provideOpenGraphManager('siteName', withManagerGlobal(_GLOBAL_APPLICATION_NAME), _withModuleManagerNameAttribute(withOpenGraphPropertyAttribute('site_name'))); /** * {@inheritDoc provideOpenGraphSiteName} * @deprecated Use {@link provideOpenGraphSiteName} instead * @public */ const OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphSiteName(); /** * Manages the {@link OpenGraph.title} metadata * @public */ const provideOpenGraphTitle = () => provideOpenGraphManager(_GLOBAL_TITLE, _withModuleManagerSameGlobalKey(), withManagerDeps(NgxMetaElementsService, _titleFormatter()), _withModuleManagerSetterFactory((metaElementsService, titleFormatter) => (title) => { metaElementsService.set(withOpenGraphPropertyAttribute(_GLOBAL_TITLE), withContentAttribute(title ? titleFormatter(title) : title)); })); /** * {@inheritDoc provideOpenGraphTitle} * @deprecated Use {@link provideOpenGraphTitle} instead * @public */ const OPEN_GRAPH_TITLE_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphTitle(); // noinspection JSValidateJSDoc /** * Manages the {@link OpenGraph."type"} metadata * @public */ const provideOpenGraphType = () => provideOpenGraphManager('type'); /** * {@inheritDoc provideOpenGraphType} * @deprecated Use {@link provideOpenGraphType} instead * @public */ const OPEN_GRAPH_TYPE_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphType(); /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_MUSIC_SONG = 'music.song'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_MUSIC_ALBUM = 'music.album'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_MUSIC_PLAYLIST = 'music.playlist'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_MUSIC_RADIO_STATION = 'music.radio_station'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_VIDEO_MOVIE = 'video.movie'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_VIDEO_EPISODE = 'video.episode'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_VIDEO_TV_SHOW = 'video.tv_show'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_VIDEO_OTHER = 'video.other'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_ARTICLE = 'article'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_BOOK = 'book'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_PROFILE = 'profile'; /** * See {@link OpenGraphType} * @public */ const OPEN_GRAPH_TYPE_WEBSITE = 'website'; const KEY = 'url'; /** * Manages the {@link OpenGraph.url} metadata * @public */ const provideOpenGraphUrl = () => provideOpenGraphManager(KEY, withManagerGlobal(_GLOBAL_CANONICAL_URL), withManagerDeps(NgxMetaElementsService, _urlResolver()), _withModuleManagerSetterFactory((metaElementsService, urlResolver) => (url) => { const resolvedUrl = urlResolver(url); /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ if (ngDevMode) { _maybeNonHttpUrlDevMessage(resolvedUrl, { module: MODULE_NAME, property: KEY, value: resolvedUrl, link: 'https://ogp.me/#metadata', }); } metaElementsService.set(withOpenGraphPropertyAttribute(KEY), withContentAttribute(urlResolver(url))); })); /** * {@inheritDoc provideOpenGraphUrl} * @deprecated Use {@link provideOpenGraphUrl} instead * @public */ const OPEN_GRAPH_URL_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphUrl(); /** * Provides {@link https://ngx-meta.dev/built-in-modules/open-graph/ | Open Graph module} * basic and optional metadata managers. * * @remarks * * This is the standalone, recommended API. Using this API is preferred. * However, you may also use {@link NgxMetaOpenGraphModule} as the Angular module-based equivalent API. * * @public */ const provideNgxMetaOpenGraph = () => [ provideOpenGraphTitle(), provideOpenGraphType(), provideOpenGraphImage(), provideOpenGraphUrl(), provideOpenGraphDescription(), provideOpenGraphLocale(), provideOpenGraphSiteName(), ]; /** * Provides {@link https://ngx-meta.dev/built-in-modules/open-graph/ | Open Graph module} * basic and optional metadata managers. * * Check out {@link provideNgxMetaOpenGraph} for the standalone, recommended API. * * @public */ class NgxMetaOpenGraphModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphModule, providers: [provideNgxMetaOpenGraph()] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphModule, decorators: [{ type: NgModule, args: [{ providers: [provideNgxMetaOpenGraph()], }] }] }); const OPEN_GRAPH_PROFILE_KEY = 'profile'; const provideOpenGraphProfileManager = (key, ...options) => _provideNgxMetaModuleManager(key, [OPEN_GRAPH_KEY, OPEN_GRAPH_PROFILE_KEY], withOptions(_withModuleManagerNameAttribute(withOpenGraphPropertyAttribute(OPEN_GRAPH_PROFILE_KEY, key)), ...options)); /** * Manages the {@link OpenGraphProfile.firstName} metadata * @public */ const provideOpenGraphProfileFirstName = () => provideOpenGraphProfileManager('firstName', _withModuleManagerNameAttribute(withOpenGraphPropertyAttribute(OPEN_GRAPH_PROFILE_KEY, 'first_name'))); /** * {@inheritDoc provideOpenGraphProfileFirstName} * @deprecated Use {@link provideOpenGraphProfileFirstName} instead * @public */ const OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphProfileFirstName(); /** * Manages the {@link OpenGraphProfile.lastName} metadata * @public */ const provideOpenGraphProfileLastName = () => provideOpenGraphProfileManager('lastName', _withModuleManagerNameAttribute(withOpenGraphPropertyAttribute(OPEN_GRAPH_PROFILE_KEY, 'last_name'))); /** * {@inheritDoc provideOpenGraphProfileLastName} * @deprecated Use {@link provideOpenGraphProfileLastName} instead * @public */ const OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphProfileLastName(); /** * Manages the {@link OpenGraphProfile.gender} metadata * @public */ const provideOpenGraphProfileGender = () => provideOpenGraphProfileManager('gender'); /** * {@inheritDoc provideOpenGraphProfileGender} * @deprecated Use {@link provideOpenGraphProfileGender} instead * @public */ const OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphProfileGender(); /** * See {@link OpenGraphProfileGender} * @public */ const OPEN_GRAPH_PROFILE_GENDER_FEMALE = 'female'; /** * See {@link OpenGraphProfileGender} * @public */ const OPEN_GRAPH_PROFILE_GENDER_MALE = 'male'; /** * Manages the {@link OpenGraphProfile.username} metadata * @public */ const provideOpenGraphProfileUsername = () => provideOpenGraphProfileManager('username'); /** * {@inheritDoc provideOpenGraphProfileUsername} * @deprecated Use {@link provideOpenGraphProfileUsername} instead * @public */ const OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER = /* @__PURE__ */ provideOpenGraphProfileUsername(); /** * Provides {@link https://ngx-meta.dev/built-in-modules/open-graph/ | Open Graph module} * profile metadata managers * * @remarks * * This is the standalone, recommended API. Using this API is preferred. * However, you may also use {@link NgxMetaOpenGraphProfileModule} as the Angular module-based equivalent API. * * @public */ const provideNgxMetaOpenGraphProfile = () => [ provideOpenGraphProfileFirstName(), provideOpenGraphProfileLastName(), provideOpenGraphProfileUsername(), provideOpenGraphProfileGender(), ]; /** * Provides {@link https://ngx-meta.dev/built-in-modules/open-graph/ | Open Graph module} * profile metadata managers. * * Check out {@link provideNgxMetaOpenGraphProfile} for the standalone, recommended API. * * @public */ class NgxMetaOpenGraphProfileModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphProfileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphProfileModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphProfileModule, providers: [provideNgxMetaOpenGraphProfile()] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxMetaOpenGraphProfileModule, decorators: [{ type: NgModule, args: [{ providers: [provideNgxMetaOpenGraphProfile()], }] }] }); /** * Generated bundle index. Do not edit. */ export { NgxMetaOpenGraphModule, NgxMetaOpenGraphProfileModule, OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER, OPEN_GRAPH_IMAGE_METADATA_PROVIDER, OPEN_GRAPH_LOCALE_METADATA_PROVIDER, OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER, OPEN_GRAPH_PROFILE_GENDER_FEMALE, OPEN_GRAPH_PROFILE_GENDER_MALE, OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER, OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER, OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER, OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER, OPEN_GRAPH_TITLE_METADATA_PROVIDER, OPEN_GRAPH_TYPE_ARTICLE, OPEN_GRAPH_TYPE_BOOK, OPEN_GRAPH_TYPE_METADATA_PROVIDER, OPEN_GRAPH_TYPE_MUSIC_ALBUM, OPEN_GRAPH_TYPE_MUSIC_PLAYLIST, OPEN_GRAPH_TYPE_MUSIC_RADIO_STATION, OPEN_GRAPH_TYPE_MUSIC_SONG, OPEN_GRAPH_TYPE_PROFILE, OPEN_GRAPH_TYPE_VIDEO_EPISODE, OPEN_GRAPH_TYPE_VIDEO_MOVIE, OPEN_GRAPH_TYPE_VIDEO_OTHER, OPEN_GRAPH_TYPE_VIDEO_TV_SHOW, OPEN_GRAPH_TYPE_WEBSITE, OPEN_GRAPH_URL_METADATA_PROVIDER, provideNgxMetaOpenGraph, provideNgxMetaOpenGraphProfile, provideOpenGraphDescription, provideOpenGraphImage, provideOpenGraphLocale, provideOpenGraphProfileFirstName, provideOpenGraphProfileGender, provideOpenGraphProfileLastName, provideOpenGraphProfileUsername, provideOpenGraphSiteName, provideOpenGraphTitle, provideOpenGraphType, provideOpenGraphUrl }; //# sourceMappingURL=davidlj95-ngx-meta-open-graph.mjs.map