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