diff --git a/projects/ngx-meta/api-extractor/ngx-meta.api.md b/projects/ngx-meta/api-extractor/ngx-meta.api.md index 13343b76..74f97c72 100644 --- a/projects/ngx-meta/api-extractor/ngx-meta.api.md +++ b/projects/ngx-meta/api-extractor/ngx-meta.api.md @@ -108,7 +108,7 @@ export const _injectMetadataManagers: () => readonly NgxMetaMetadataManager[]; // @internal export const _isDefined: (value: T | null | undefined) => value is T; -// @public +// @public @deprecated export const JSON_LD_METADATA_PROVIDER: Provider; // @public @@ -295,16 +295,16 @@ export class NgxMetaStandardModule { export class NgxMetaTwitterCardModule { } -// @public +// @public @deprecated export const OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_IMAGE_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_LOCALE_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER: Provider; // @public @@ -313,19 +313,19 @@ export const OPEN_GRAPH_PROFILE_GENDER_FEMALE = "female"; // @public export const OPEN_GRAPH_PROFILE_GENDER_MALE = "male"; -// @public +// @public @deprecated export const OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const OPEN_GRAPH_TITLE_METADATA_PROVIDER: Provider; // @public @@ -334,7 +334,7 @@ export const OPEN_GRAPH_TYPE_ARTICLE = "article"; // @public export const OPEN_GRAPH_TYPE_BOOK = "book"; -// @public +// @public @deprecated export const OPEN_GRAPH_TYPE_METADATA_PROVIDER: Provider; // @public @@ -367,7 +367,7 @@ export const OPEN_GRAPH_TYPE_VIDEO_TV_SHOW = "video.tv_show"; // @public export const OPEN_GRAPH_TYPE_WEBSITE = "website"; -// @public +// @public @deprecated export const OPEN_GRAPH_URL_METADATA_PROVIDER: Provider; // @public @@ -460,6 +460,84 @@ export const provideNgxMetaStandard: () => Provider; // @public export const provideNgxMetaTwitterCard: () => Provider; +// @public +export const provideOpenGraphDescription: () => Provider; + +// @public +export const provideOpenGraphImage: () => Provider; + +// @public +export const provideOpenGraphLocale: () => Provider; + +// @public +export const provideOpenGraphProfileFirstName: () => Provider; + +// @public +export const provideOpenGraphProfileGender: () => Provider; + +// @public +export const provideOpenGraphProfileLastName: () => Provider; + +// @public +export const provideOpenGraphProfileUsername: () => Provider; + +// @public +export const provideOpenGraphSiteName: () => Provider; + +// @public +export const provideOpenGraphTitle: () => Provider; + +// @public +export const provideOpenGraphType: () => Provider; + +// @public +export const provideOpenGraphUrl: () => Provider; + +// @public +export const provideStandardApplicationName: () => Provider; + +// @public +export const provideStandardAuthor: () => Provider; + +// @public +export const provideStandardCanonicalUrl: () => Provider; + +// @public +export const provideStandardDescription: () => Provider; + +// @public +export const provideStandardGenerator: () => Provider; + +// @public +export const provideStandardKeywords: () => Provider; + +// @public +export const provideStandardLocale: () => Provider; + +// @public +export const provideStandardThemeColor: () => Provider; + +// @public +export const provideStandardTitle: () => Provider; + +// @public +export const provideTwitterCardCard: () => Provider; + +// @public +export const provideTwitterCardCreator: () => Provider; + +// @public +export const provideTwitterCardDescription: () => Provider; + +// @public +export const provideTwitterCardImage: () => Provider; + +// @public +export const provideTwitterCardSite: () => Provider; + +// @public +export const provideTwitterCardTitle: () => Provider; + // @internal (undocumented) export type _RouteMetadataStrategy = () => MetadataValues | undefined; @@ -479,31 +557,31 @@ export interface Standard { readonly title?: GlobalMetadata['title']; } -// @public +// @public @deprecated export const STANDARD_APPLICATION_NAME_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_AUTHOR_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_CANONICAL_URL_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_DESCRIPTION_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_GENERATOR_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_KEYWORDS_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_LOCALE_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_THEME_COLOR_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const STANDARD_TITLE_METADATA_PROVIDER: Provider; // @public @@ -523,22 +601,22 @@ export interface StandardThemeColorMetadataObject { // @internal (undocumented) type StringKeyOf = Extract; -// @public +// @public @deprecated export const TWITTER_CARD_CARD_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const TWITTER_CARD_CREATOR_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const TWITTER_CARD_IMAGE_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const TWITTER_CARD_SITE_METADATA_PROVIDER: Provider; -// @public +// @public @deprecated export const TWITTER_CARD_TITLE_METADATA_PROVIDER: Provider; // @public diff --git a/projects/ngx-meta/docs/content/guides/custom-metadata-providers-selection.md b/projects/ngx-meta/docs/content/guides/custom-metadata-providers-selection.md index 48b2de0d..968f9f7f 100644 --- a/projects/ngx-meta/docs/content/guides/custom-metadata-providers-selection.md +++ b/projects/ngx-meta/docs/content/guides/custom-metadata-providers-selection.md @@ -22,19 +22,19 @@ In there, you'll see which metadata manager the module provides. For instance, f ```typescript export const provideNgxMetaStandard = (): Provider[] => [ - STANDARD_TITLE_METADATA_PROVIDER, - STANDARD_DESCRIPTION_METADATA_PROVIDER, + provideStandardTitle(), + provideStandardDescription(), // ... ] ``` -The title provider can be easily found by its name: [`STANDARD_TITLE_METADATA_PROVIDER`](ngx-meta.standard_title_metadata_provider.md). Otherwise, look for it in the [API reference](ngx-meta.md). You'll find there that [`STANDARD_TITLE_METADATA_PROVIDER`](ngx-meta.standard_title_metadata_provider.md) manages the [`Standard.title`](ngx-meta.standard.title.md) value which sets the `#!html ` element. +The title provider can be easily found by its name: [`provideStandardTitle`](ngx-meta.providestandardtitle.md). Otherwise, look for it in the [API reference](ngx-meta.md). You'll find there that [`provideStandardTitle`](ngx-meta.providestandardtitle.md) manages the [`Standard.title`](ngx-meta.standard.title.md) value which sets the `#!html <title>` element. ### In the API reference You can also directly check out the [API reference `variables` section](ngx-meta.md#variables). In there, you can look for the module name and the `_PROVIDER` suffix. -You can find the [`STANDARD_TITLE_METADATA_PROVIDER`](ngx-meta.standard_title_metadata_provider.md) there too. +You can find the [`provideStandardTitle`](ngx-meta.providestandardtitle.md) there too. ## 2. Add it/them @@ -46,7 +46,7 @@ Now that you've found the metadata manager provider you want to use, add it as y ```title="app.config.ts" // ... - import {STANDARD_TITLE_METADATA_PROVIDER} from '@davidlj95/ngx-meta/standard' + import {provideStandardTitle} from '@davidlj95/ngx-meta/standard' export const appConfig: ApplicationConfig = { // ... @@ -55,7 +55,7 @@ Now that you've found the metadata manager provider you want to use, add it as y provideNgxMetaCore(), provideNgxMetaRouting(), // (optional) {--provideNgxMetaStandard(),--} - {++STANDARD_TITLE_METADATA_PROVIDER,++} + {++provideStandardTitle(),++} // ... ] }) @@ -67,7 +67,7 @@ Now that you've found the metadata manager provider you want to use, add it as y ```title="app.module.ts" // ... - import {STANDARD_TITLE_METADATA_PROVIDER} from '@davidlj95/ngx-meta/standard' + import {provideStandardTitle} from '@davidlj95/ngx-meta/standard' @NgModule({ // ... @@ -76,7 +76,7 @@ Now that you've found the metadata manager provider you want to use, add it as y provideNgxMetaCore(), provideNgxMetaRouting(), // (optional) {--provideNgxMetaStandard(),--} - {++STANDARD_TITLE_METADATA_PROVIDER,++} + {++provideStandardTitle(),++} ] }) export class AppModule {} diff --git a/projects/ngx-meta/src/json-ld/index.ts b/projects/ngx-meta/src/json-ld/index.ts index 50ddecf5..9b9e9c18 100644 --- a/projects/ngx-meta/src/json-ld/index.ts +++ b/projects/ngx-meta/src/json-ld/index.ts @@ -1,2 +1,3 @@ export * from './src/managers' +export * from './src/types' export * from './src/providers' diff --git a/projects/ngx-meta/src/json-ld/src/managers/index.ts b/projects/ngx-meta/src/json-ld/src/managers/index.ts index 0bd80fa2..6e2a1472 100644 --- a/projects/ngx-meta/src/json-ld/src/managers/index.ts +++ b/projects/ngx-meta/src/json-ld/src/managers/index.ts @@ -1,2 +1 @@ -export { JsonLdMetadata } from './json-ld-metadata' -export { JSON_LD_METADATA_PROVIDER } from './json-ld-metadata-provider' +export { JSON_LD_METADATA_PROVIDER } from './provide-json-ld-in-head' diff --git a/projects/ngx-meta/src/json-ld/src/managers/json-ld-metadata-provider.ts b/projects/ngx-meta/src/json-ld/src/managers/json-ld-metadata-provider.ts deleted file mode 100644 index 4557487e..00000000 --- a/projects/ngx-meta/src/json-ld/src/managers/json-ld-metadata-provider.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { DOCUMENT } from '@angular/common' -import { - _headElementUpsertOrRemove, - _HeadElementUpsertOrRemove, - _isDefined, - provideNgxMetaManager, - withManagerDeps, - withOptions, -} from '@davidlj95/ngx-meta/core' -import { JsonLdMetadata } from './json-ld-metadata' - -const KEY = 'jsonLd' satisfies keyof JsonLdMetadata -const SCRIPT_TYPE = 'application/ld+json' - -/** - * Manages the {@link JsonLdMetadata.jsonLd} metadata - * @public - */ -export const JSON_LD_METADATA_PROVIDER = provideNgxMetaManager< - JsonLdMetadata['jsonLd'] ->( - KEY, - (headElementUpsertOrRemove: _HeadElementUpsertOrRemove, doc: Document) => - (jsonLd) => { - let scriptElement: HTMLScriptElement | undefined - if (_isDefined(jsonLd)) { - scriptElement = doc.createElement('script') - scriptElement.setAttribute('type', SCRIPT_TYPE) - scriptElement.innerHTML = JSON.stringify(jsonLd) - } - headElementUpsertOrRemove(`script[type='${SCRIPT_TYPE}']`, scriptElement) - }, - withOptions(withManagerDeps(_headElementUpsertOrRemove(), DOCUMENT)), -) diff --git a/projects/ngx-meta/src/json-ld/src/managers/provide-json-ld-in-head.ts b/projects/ngx-meta/src/json-ld/src/managers/provide-json-ld-in-head.ts new file mode 100644 index 00000000..f696b413 --- /dev/null +++ b/projects/ngx-meta/src/json-ld/src/managers/provide-json-ld-in-head.ts @@ -0,0 +1,44 @@ +import { DOCUMENT } from '@angular/common' +import { + _headElementUpsertOrRemove, + _HeadElementUpsertOrRemove, + _isDefined, + provideNgxMetaManager, + withManagerDeps, + withOptions, +} from '@davidlj95/ngx-meta/core' +import { JsonLdMetadata } from '../types' + +const SCRIPT_TYPE = 'application/ld+json' + +/** + * Manages the {@link JsonLdMetadata.jsonLd} metadata by placing it into the page's `<head>` + * @public + */ +export const provideJsonLdInHead = () => + provideNgxMetaManager<JsonLdMetadata['jsonLd']>( + 'jsonLd' satisfies keyof JsonLdMetadata, + (headElementUpsertOrRemove: _HeadElementUpsertOrRemove, doc: Document) => + (jsonLd) => { + let scriptElement: HTMLScriptElement | undefined + if (_isDefined(jsonLd)) { + scriptElement = doc.createElement('script') + scriptElement.setAttribute('type', SCRIPT_TYPE) + scriptElement.innerHTML = JSON.stringify(jsonLd) + } + headElementUpsertOrRemove( + `script[type='${SCRIPT_TYPE}']`, + scriptElement, + ) + }, + withOptions(withManagerDeps(_headElementUpsertOrRemove(), DOCUMENT)), + ) + +/** + * {@inheritDoc provideNgxMetaJsonLd} + * @deprecated Use {@link provideNgxMetaJsonLd} instead + * @public + */ +export const JSON_LD_METADATA_PROVIDER = + /* @__PURE__ */ + provideJsonLdInHead() diff --git a/projects/ngx-meta/src/json-ld/src/providers/provide-ngx-meta-json-ld.ts b/projects/ngx-meta/src/json-ld/src/providers/provide-ngx-meta-json-ld.ts index d35d4083..7eaf9596 100644 --- a/projects/ngx-meta/src/json-ld/src/providers/provide-ngx-meta-json-ld.ts +++ b/projects/ngx-meta/src/json-ld/src/providers/provide-ngx-meta-json-ld.ts @@ -1,5 +1,5 @@ +import { provideJsonLdInHead } from '../managers/provide-json-ld-in-head' import { Provider } from '@angular/core' -import { JSON_LD_METADATA_PROVIDER } from '../managers' /** * Provides {@link https://ngx-meta.dev/built-in-modules/json-ld/ | JSON-LD module} @@ -12,4 +12,4 @@ import { JSON_LD_METADATA_PROVIDER } from '../managers' * * @public */ -export const provideNgxMetaJsonLd = (): Provider => [JSON_LD_METADATA_PROVIDER] +export const provideNgxMetaJsonLd = (): Provider => provideJsonLdInHead() diff --git a/projects/ngx-meta/src/json-ld/src/types/index.ts b/projects/ngx-meta/src/json-ld/src/types/index.ts new file mode 100644 index 00000000..fea5c784 --- /dev/null +++ b/projects/ngx-meta/src/json-ld/src/types/index.ts @@ -0,0 +1 @@ +export { JsonLdMetadata } from './json-ld-metadata' diff --git a/projects/ngx-meta/src/json-ld/src/managers/json-ld-metadata.ts b/projects/ngx-meta/src/json-ld/src/types/json-ld-metadata.ts similarity index 78% rename from projects/ngx-meta/src/json-ld/src/managers/json-ld-metadata.ts rename to projects/ngx-meta/src/json-ld/src/types/json-ld-metadata.ts index 574be0f9..fc570734 100644 --- a/projects/ngx-meta/src/json-ld/src/managers/json-ld-metadata.ts +++ b/projects/ngx-meta/src/json-ld/src/types/json-ld-metadata.ts @@ -9,6 +9,12 @@ export interface JsonLdMetadata { /** * JSON-LD object (as a JSON object) to set in the page + * + * @remarks + * + * Provider: + * + * {@link provideNgxMetaJsonLd} */ readonly jsonLd?: object | null } diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/index.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/index.ts index dbe26972..2a59b991 100644 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/index.ts +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/index.ts @@ -1,9 +1,30 @@ -export { OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER } from './open-graph-description-metadata-provider' -export { OPEN_GRAPH_IMAGE_METADATA_PROVIDER } from './open-graph-image-metadata-provider' +export { + provideOpenGraphDescription, + OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER, +} from './provide-open-graph-description' +export { + provideOpenGraphImage, + OPEN_GRAPH_IMAGE_METADATA_PROVIDER, +} from './provide-open-graph-image' export { OpenGraphImage } from './open-graph-image' -export { OPEN_GRAPH_LOCALE_METADATA_PROVIDER } from './open-graph-locale-metadata-provider' -export { OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER } from './open-graph-site-name-metadata-provider' -export { OPEN_GRAPH_TITLE_METADATA_PROVIDER } from './open-graph-title-metadata-provider' -export { OPEN_GRAPH_TYPE_METADATA_PROVIDER } from './open-graph-type-metadata-provider' +export { + provideOpenGraphLocale, + OPEN_GRAPH_LOCALE_METADATA_PROVIDER, +} from './provide-open-graph-locale' +export { + provideOpenGraphSiteName, + OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER, +} from './provide-open-graph-site-name' +export { + provideOpenGraphTitle, + OPEN_GRAPH_TITLE_METADATA_PROVIDER, +} from './provide-open-graph-title' +export { + provideOpenGraphType, + OPEN_GRAPH_TYPE_METADATA_PROVIDER, +} from './provide-open-graph-type' export * from './open-graph-type' -export { OPEN_GRAPH_URL_METADATA_PROVIDER } from './open-graph-url-metadata-provider' +export { + provideOpenGraphUrl, + OPEN_GRAPH_URL_METADATA_PROVIDER, +} from './provide-open-graph-url' diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-description-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-description-metadata-provider.ts deleted file mode 100644 index 78ff063d..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-description-metadata-provider.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { - _GLOBAL_DESCRIPTION, - _maybeTooLongDevMessage, - _withModuleManagerSameGlobalKey, - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, -} from '@davidlj95/ngx-meta/core' -import { MODULE_NAME } from '../../module-name' -import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' - -/** - * Manages the {@link OpenGraph.description} metadata - * @public - */ -export const OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER = provideOpenGraphManager( - _GLOBAL_DESCRIPTION, - _withModuleManagerSameGlobalKey(), - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (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), - ) - }, - ), -) diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-image-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-image-metadata-provider.ts deleted file mode 100644 index 6442bd2c..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-image-metadata-provider.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { OpenGraph } from '../../types' -import { - _GLOBAL_IMAGE, - _isDefined, - _maybeNonHttpUrlDevMessage, - _withModuleManagerSameGlobalKey, - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, - withManagerObjectMerging, -} from '@davidlj95/ngx-meta/core' -import { MODULE_NAME } from '../../module-name' -import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' - -const NO_KEY_VALUE: OpenGraph[typeof _GLOBAL_IMAGE] = { - url: undefined, - alt: undefined, - secureUrl: null, - type: null, - width: null, - height: null, -} - -/** - * Manages the {@link OpenGraph.image} metadata - * @public - */ -export const OPEN_GRAPH_IMAGE_METADATA_PROVIDER = provideOpenGraphManager( - _GLOBAL_IMAGE, - _withModuleManagerSameGlobalKey(), - withManagerObjectMerging(), - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (value) => { - const imageUrl = value?.url?.toString() - const effectiveValue: OpenGraph[typeof _GLOBAL_IMAGE] = _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()), - ) - }, - ), -) diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-locale-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-locale-metadata-provider.ts deleted file mode 100644 index 8705b572..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-locale-metadata-provider.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - _GLOBAL_LOCALE, - _withModuleManagerSameGlobalKey, -} from '@davidlj95/ngx-meta/core' -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' - -/** - * Manages the {@link OpenGraph.locale} metadata - * @public - */ -export const OPEN_GRAPH_LOCALE_METADATA_PROVIDER = provideOpenGraphManager( - _GLOBAL_LOCALE, - _withModuleManagerSameGlobalKey(), -) diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-site-name-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-site-name-metadata-provider.ts deleted file mode 100644 index 04dfeeaa..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-site-name-metadata-provider.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { - _GLOBAL_APPLICATION_NAME, - _withModuleManagerNameAttribute, - withManagerGlobal, -} from '@davidlj95/ngx-meta/core' -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' -import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' - -/** - * Manages the {@link OpenGraph.siteName} metadata - * @public - */ -export const OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER = provideOpenGraphManager( - 'siteName', - withManagerGlobal(_GLOBAL_APPLICATION_NAME), - _withModuleManagerNameAttribute(withOpenGraphPropertyAttribute('site_name')), -) diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-title-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-title-metadata-provider.ts deleted file mode 100644 index d62ce5b4..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-title-metadata-provider.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - _GLOBAL_TITLE, - _withModuleManagerSameGlobalKey, -} from '@davidlj95/ngx-meta/core' -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' - -/** - * Manages the {@link OpenGraph.title} metadata - * @public - */ -export const OPEN_GRAPH_TITLE_METADATA_PROVIDER = provideOpenGraphManager( - _GLOBAL_TITLE, - _withModuleManagerSameGlobalKey(), -) diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-type-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-type-metadata-provider.ts deleted file mode 100644 index 9e9165f7..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-type-metadata-provider.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' - -// noinspection JSValidateJSDoc -/** - * Manages the {@link OpenGraph."type"} metadata - * @public - */ -export const OPEN_GRAPH_TYPE_METADATA_PROVIDER = provideOpenGraphManager('type') diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-url-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-url-metadata-provider.ts deleted file mode 100644 index e7394516..00000000 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-url-metadata-provider.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - _GLOBAL_CANONICAL_URL, - _maybeNonHttpUrlDevMessage, - _urlResolver, - _UrlResolver, - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, - withManagerDeps, - withManagerGlobal, -} from '@davidlj95/ngx-meta/core' -import { OpenGraph } from '../../types' -import { MODULE_NAME } from '../../module-name' -import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' -import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' - -const KEY = 'url' satisfies keyof OpenGraph - -/** - * Manages the {@link OpenGraph.url} metadata - * @public - */ -export const OPEN_GRAPH_URL_METADATA_PROVIDER = provideOpenGraphManager( - KEY, - withManagerGlobal(_GLOBAL_CANONICAL_URL), - withManagerDeps(NgxMetaElementsService, _urlResolver()), - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService, urlResolver: _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)), - ) - }, - ), -) diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-description.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-description.ts new file mode 100644 index 00000000..fb595e67 --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-description.ts @@ -0,0 +1,47 @@ +import { + _GLOBAL_DESCRIPTION, + _maybeTooLongDevMessage, + _withModuleManagerSameGlobalKey, + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, +} from '@davidlj95/ngx-meta/core' +import { MODULE_NAME } from '../../module-name' +import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' + +/** + * Manages the {@link OpenGraph.description} metadata + * @public + */ +export const provideOpenGraphDescription = () => + provideOpenGraphManager( + _GLOBAL_DESCRIPTION, + _withModuleManagerSameGlobalKey(), + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (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 + */ +export const OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphDescription() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-image-metadata-provider.spec.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-image.spec.ts similarity index 93% rename from projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-image-metadata-provider.spec.ts rename to projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-image.spec.ts index 6e561c65..b7cbc331 100644 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-image-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-image.spec.ts @@ -8,7 +8,7 @@ import { enableAutoSpy } from '@/ngx-meta/test/enable-auto-spy' import { OpenGraphImage } from './open-graph-image' import { OpenGraph } from '../../types' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' -import { OPEN_GRAPH_IMAGE_METADATA_PROVIDER } from './open-graph-image-metadata-provider' +import { provideOpenGraphImage } from './provide-open-graph-image' describe('Open Graph image metadata manager', () => { enableAutoSpy() @@ -93,10 +93,7 @@ describe('Open Graph image metadata manager', () => { function makeSut(): NgxMetaMetadataManager<OpenGraph['image']> { TestBed.configureTestingModule({ - providers: [ - MockProvider(NgxMetaElementsService), - OPEN_GRAPH_IMAGE_METADATA_PROVIDER, - ], + providers: [MockProvider(NgxMetaElementsService), provideOpenGraphImage()], }) return injectOneMetadataManager() } diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-image.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-image.ts new file mode 100644 index 00000000..b1712048 --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-image.ts @@ -0,0 +1,86 @@ +import { OpenGraph } from '../../types' +import { + _GLOBAL_IMAGE, + _isDefined, + _maybeNonHttpUrlDevMessage, + _withModuleManagerSameGlobalKey, + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, + withManagerObjectMerging, +} from '@davidlj95/ngx-meta/core' +import { MODULE_NAME } from '../../module-name' +import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' + +const NO_KEY_VALUE: OpenGraph[typeof _GLOBAL_IMAGE] = { + url: undefined, + alt: undefined, + secureUrl: null, + type: null, + width: null, + height: null, +} + +/** + * Manages the {@link OpenGraph.image} metadata + * @public + */ +export const provideOpenGraphImage = () => + provideOpenGraphManager( + _GLOBAL_IMAGE, + _withModuleManagerSameGlobalKey(), + withManagerObjectMerging(), + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (value) => { + const imageUrl = value?.url?.toString() + const effectiveValue: OpenGraph[typeof _GLOBAL_IMAGE] = _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 + */ +export const OPEN_GRAPH_IMAGE_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphImage() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-locale.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-locale.ts new file mode 100644 index 00000000..1700203f --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-locale.ts @@ -0,0 +1,21 @@ +import { + _GLOBAL_LOCALE, + _withModuleManagerSameGlobalKey, +} from '@davidlj95/ngx-meta/core' +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' + +/** + * Manages the {@link OpenGraph.locale} metadata + * @public + */ +export const provideOpenGraphLocale = () => + provideOpenGraphManager(_GLOBAL_LOCALE, _withModuleManagerSameGlobalKey()) + +/** + * {@inheritDoc provideOpenGraphLocale} + * @deprecated Use {@link provideOpenGraphLocale} instead + * @public + */ +export const OPEN_GRAPH_LOCALE_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphLocale() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-site-name.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-site-name.ts new file mode 100644 index 00000000..50485d88 --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-site-name.ts @@ -0,0 +1,29 @@ +import { + _GLOBAL_APPLICATION_NAME, + _withModuleManagerNameAttribute, + withManagerGlobal, +} from '@davidlj95/ngx-meta/core' +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' +import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' + +/** + * Manages the {@link OpenGraph.siteName} metadata + * @public + */ +export const provideOpenGraphSiteName = () => + provideOpenGraphManager( + 'siteName', + withManagerGlobal(_GLOBAL_APPLICATION_NAME), + _withModuleManagerNameAttribute( + withOpenGraphPropertyAttribute('site_name'), + ), + ) + +/** + * {@inheritDoc provideOpenGraphSiteName} + * @deprecated Use {@link provideOpenGraphSiteName} instead + * @public + */ +export const OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphSiteName() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-title.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-title.ts new file mode 100644 index 00000000..99b9a9aa --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-title.ts @@ -0,0 +1,21 @@ +import { + _GLOBAL_TITLE, + _withModuleManagerSameGlobalKey, +} from '@davidlj95/ngx-meta/core' +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' + +/** + * Manages the {@link OpenGraph.title} metadata + * @public + */ +export const provideOpenGraphTitle = () => + provideOpenGraphManager(_GLOBAL_TITLE, _withModuleManagerSameGlobalKey()) + +/** + * {@inheritDoc provideOpenGraphTitle} + * @deprecated Use {@link provideOpenGraphTitle} instead + * @public + */ +export const OPEN_GRAPH_TITLE_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphTitle() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-type.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-type.ts new file mode 100644 index 00000000..419e52d9 --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-type.ts @@ -0,0 +1,17 @@ +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' + +// noinspection JSValidateJSDoc +/** + * Manages the {@link OpenGraph."type"} metadata + * @public + */ +export const provideOpenGraphType = () => provideOpenGraphManager('type') + +/** + * {@inheritDoc provideOpenGraphType} + * @deprecated Use {@link provideOpenGraphType} instead + * @public + */ +export const OPEN_GRAPH_TYPE_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphType() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-url-metadata-provider.spec.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-url.spec.ts similarity index 93% rename from projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-url-metadata-provider.spec.ts rename to projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-url.spec.ts index 452bc3e9..20d5e36b 100644 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/open-graph-url-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-url.spec.ts @@ -6,10 +6,10 @@ import { NgxMetaMetadataManager, } from '@davidlj95/ngx-meta/core' import { OpenGraph } from '../../types' -import { OPEN_GRAPH_URL_METADATA_PROVIDER } from './open-graph-url-metadata-provider' import { enableAutoSpy } from '@/ngx-meta/test/enable-auto-spy' import { MockProvider } from 'ng-mocks' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' +import { provideOpenGraphUrl } from './provide-open-graph-url' describe('Open Graph URL metadata manager', () => { enableAutoSpy() @@ -50,7 +50,7 @@ function makeSut(opts: { // eslint-disable-next-line jasmine/no-unsafe-spy useValue: opts.urlResolver ?? jasmine.createSpy(), }, - OPEN_GRAPH_URL_METADATA_PROVIDER, + provideOpenGraphUrl(), ], }) return injectOneMetadataManager() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-url.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-url.ts new file mode 100644 index 00000000..78f9faa1 --- /dev/null +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/managers/provide-open-graph-url.ts @@ -0,0 +1,59 @@ +import { + _GLOBAL_CANONICAL_URL, + _maybeNonHttpUrlDevMessage, + _urlResolver, + _UrlResolver, + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, + withManagerDeps, + withManagerGlobal, +} from '@davidlj95/ngx-meta/core' +import { OpenGraph } from '../../types' +import { MODULE_NAME } from '../../module-name' +import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-property-attribute' +import { provideOpenGraphManager } from '../../utils/provide-open-graph-manager' + +const KEY = 'url' satisfies keyof OpenGraph + +/** + * Manages the {@link OpenGraph.url} metadata + * @public + */ +export const provideOpenGraphUrl = () => + provideOpenGraphManager( + KEY, + withManagerGlobal(_GLOBAL_CANONICAL_URL), + withManagerDeps(NgxMetaElementsService, _urlResolver()), + _withModuleManagerSetterFactory( + ( + metaElementsService: NgxMetaElementsService, + urlResolver: _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 + */ +export const OPEN_GRAPH_URL_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphUrl() diff --git a/projects/ngx-meta/src/open-graph/src/basic-optional/providers/provide-ngx-meta-open-graph.ts b/projects/ngx-meta/src/open-graph/src/basic-optional/providers/provide-ngx-meta-open-graph.ts index 0339f1b5..7f75abe8 100644 --- a/projects/ngx-meta/src/open-graph/src/basic-optional/providers/provide-ngx-meta-open-graph.ts +++ b/projects/ngx-meta/src/open-graph/src/basic-optional/providers/provide-ngx-meta-open-graph.ts @@ -1,12 +1,12 @@ import { Provider } from '@angular/core' import { - OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER, - OPEN_GRAPH_IMAGE_METADATA_PROVIDER, - OPEN_GRAPH_LOCALE_METADATA_PROVIDER, - OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER, - OPEN_GRAPH_TITLE_METADATA_PROVIDER, - OPEN_GRAPH_TYPE_METADATA_PROVIDER, - OPEN_GRAPH_URL_METADATA_PROVIDER, + provideOpenGraphDescription, + provideOpenGraphImage, + provideOpenGraphLocale, + provideOpenGraphSiteName, + provideOpenGraphTitle, + provideOpenGraphType, + provideOpenGraphUrl, } from '../managers' /** @@ -21,11 +21,11 @@ import { * @public */ export const provideNgxMetaOpenGraph = (): Provider => [ - OPEN_GRAPH_TITLE_METADATA_PROVIDER, - OPEN_GRAPH_TYPE_METADATA_PROVIDER, - OPEN_GRAPH_IMAGE_METADATA_PROVIDER, - OPEN_GRAPH_URL_METADATA_PROVIDER, - OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER, - OPEN_GRAPH_LOCALE_METADATA_PROVIDER, - OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER, + provideOpenGraphTitle(), + provideOpenGraphType(), + provideOpenGraphImage(), + provideOpenGraphUrl(), + provideOpenGraphDescription(), + provideOpenGraphLocale(), + provideOpenGraphSiteName(), ] diff --git a/projects/ngx-meta/src/open-graph/src/profile/managers/index.ts b/projects/ngx-meta/src/open-graph/src/profile/managers/index.ts index bcc395e5..62a2c6b2 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/managers/index.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/managers/index.ts @@ -1,10 +1,22 @@ export { OpenGraphProfile } from './open-graph-profile' -export { OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER } from './open-graph-profile-first-name-metadata-provider' -export { OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER } from './open-graph-profile-last-name-metadata-provider' -export { OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER } from './open-graph-profile-gender-metadata-provider' +export { + provideOpenGraphProfileFirstName, + OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER, +} from './provide-open-graph-profile-first-name' +export { + provideOpenGraphProfileLastName, + OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER, +} from './provide-open-graph-profile-last-name' +export { + provideOpenGraphProfileGender, + OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER, +} from './provide-open-graph-profile-gender' export { OPEN_GRAPH_PROFILE_GENDER_MALE, OPEN_GRAPH_PROFILE_GENDER_FEMALE, OpenGraphProfileGender, } from './open-graph-profile-gender' -export { OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER } from './open-graph-profile-username-metadata-provider' +export { + provideOpenGraphProfileUsername, + OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER, +} from './provide-open-graph-profile-username' diff --git a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile.ts b/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile.ts index b12fb62f..2251e267 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile.ts @@ -27,7 +27,7 @@ export interface OpenGraphProfile { * * Provider: * - * {@link OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER} + * {@link provideOpenGraphProfileFirstName} * * See also: * @@ -42,7 +42,7 @@ export interface OpenGraphProfile { * * Provider: * - * {@link OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER} + * {@link provideOpenGraphProfileLastName} * * See also: * @@ -57,7 +57,7 @@ export interface OpenGraphProfile { * * Provider: * - * {@link OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER} + * {@link provideOpenGraphProfileUsername} * * See also: * @@ -78,7 +78,7 @@ export interface OpenGraphProfile { * * Provider: * - * {@link OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER} + * {@link provideOpenGraphProfileGender} * * See also: * diff --git a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-first-name-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-first-name.ts similarity index 72% rename from projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-first-name-metadata-provider.ts rename to projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-first-name.ts index 1433c8c7..d13d2c19 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-first-name-metadata-provider.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-first-name.ts @@ -7,10 +7,19 @@ import { OPEN_GRAPH_PROFILE_KEY } from '../utils/open-graph-profile-key' * Manages the {@link OpenGraphProfile.firstName} metadata * @public */ -export const OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER = +export const provideOpenGraphProfileFirstName = () => provideOpenGraphProfileManager( 'firstName', _withModuleManagerNameAttribute( withOpenGraphPropertyAttribute(OPEN_GRAPH_PROFILE_KEY, 'first_name'), ), ) + +/** + * {@inheritDoc provideOpenGraphProfileFirstName} + * @deprecated Use {@link provideOpenGraphProfileFirstName} instead + * @public + */ +export const OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphProfileFirstName() diff --git a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-gender-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-gender.ts similarity index 53% rename from projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-gender-metadata-provider.ts rename to projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-gender.ts index 5a072354..d4cef3fe 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-gender-metadata-provider.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-gender.ts @@ -4,5 +4,14 @@ import { provideOpenGraphProfileManager } from '../utils/provide-open-graph-prof * Manages the {@link OpenGraphProfile.gender} metadata * @public */ -export const OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER = +export const provideOpenGraphProfileGender = () => provideOpenGraphProfileManager('gender') + +/** + * {@inheritDoc provideOpenGraphProfileGender} + * @deprecated Use {@link provideOpenGraphProfileGender} instead + * @public + */ +export const OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphProfileGender() diff --git a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-last-name-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-last-name.ts similarity index 72% rename from projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-last-name-metadata-provider.ts rename to projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-last-name.ts index 2a3f6ef1..d4d61585 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-last-name-metadata-provider.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-last-name.ts @@ -7,10 +7,19 @@ import { withOpenGraphPropertyAttribute } from '../../utils/with-open-graph-prop * Manages the {@link OpenGraphProfile.lastName} metadata * @public */ -export const OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER = +export const provideOpenGraphProfileLastName = () => provideOpenGraphProfileManager( 'lastName', _withModuleManagerNameAttribute( withOpenGraphPropertyAttribute(OPEN_GRAPH_PROFILE_KEY, 'last_name'), ), ) + +/** + * {@inheritDoc provideOpenGraphProfileLastName} + * @deprecated Use {@link provideOpenGraphProfileLastName} instead + * @public + */ +export const OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphProfileLastName() diff --git a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-username-metadata-provider.ts b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-username.ts similarity index 53% rename from projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-username-metadata-provider.ts rename to projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-username.ts index 937a909a..1ae89594 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/managers/open-graph-profile-username-metadata-provider.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/managers/provide-open-graph-profile-username.ts @@ -4,5 +4,14 @@ import { provideOpenGraphProfileManager } from '../utils/provide-open-graph-prof * Manages the {@link OpenGraphProfile.username} metadata * @public */ -export const OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER = +export const provideOpenGraphProfileUsername = () => provideOpenGraphProfileManager('username') + +/** + * {@inheritDoc provideOpenGraphProfileUsername} + * @deprecated Use {@link provideOpenGraphProfileUsername} instead + * @public + */ +export const OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER = + /* @__PURE__ */ + provideOpenGraphProfileUsername() diff --git a/projects/ngx-meta/src/open-graph/src/profile/providers/provide-ngx-meta-open-graph-profile.ts b/projects/ngx-meta/src/open-graph/src/profile/providers/provide-ngx-meta-open-graph-profile.ts index 1fb5e112..cb174bde 100644 --- a/projects/ngx-meta/src/open-graph/src/profile/providers/provide-ngx-meta-open-graph-profile.ts +++ b/projects/ngx-meta/src/open-graph/src/profile/providers/provide-ngx-meta-open-graph-profile.ts @@ -1,9 +1,9 @@ import { Provider } from '@angular/core' import { - OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER, - OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER, - OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER, - OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER, + provideOpenGraphProfileFirstName, + provideOpenGraphProfileGender, + provideOpenGraphProfileLastName, + provideOpenGraphProfileUsername, } from '../managers' /** @@ -18,8 +18,8 @@ import { * @public */ export const provideNgxMetaOpenGraphProfile = (): Provider => [ - OPEN_GRAPH_PROFILE_FIRST_NAME_METADATA_PROVIDER, - OPEN_GRAPH_PROFILE_LAST_NAME_METADATA_PROVIDER, - OPEN_GRAPH_PROFILE_USERNAME_METADATA_PROVIDER, - OPEN_GRAPH_PROFILE_GENDER_METADATA_PROVIDER, + provideOpenGraphProfileFirstName(), + provideOpenGraphProfileLastName(), + provideOpenGraphProfileUsername(), + provideOpenGraphProfileGender(), ] diff --git a/projects/ngx-meta/src/open-graph/src/types/open-graph.ts b/projects/ngx-meta/src/open-graph/src/types/open-graph.ts index 5f935830..f72cf8e8 100644 --- a/projects/ngx-meta/src/open-graph/src/types/open-graph.ts +++ b/projects/ngx-meta/src/open-graph/src/types/open-graph.ts @@ -21,7 +21,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_TITLE_METADATA_PROVIDER} + * {@link provideOpenGraphTitle} * * See also: * @@ -42,7 +42,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_TYPE_METADATA_PROVIDER} + * {@link provideOpenGraphType} * * See also: * @@ -63,7 +63,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_IMAGE_METADATA_PROVIDER} + * {@link provideOpenGraphImage} * * See also: * @@ -89,7 +89,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_URL_METADATA_PROVIDER} + * {@link provideOpenGraphUrl} * * See also: * @@ -108,7 +108,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER} + * {@link provideOpenGraphDescription} * * See also: * @@ -128,7 +128,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_LOCALE_METADATA_PROVIDER} + * {@link provideOpenGraphLocale} * * See also: * @@ -148,7 +148,7 @@ export interface OpenGraph { * * Provider: * - * {@link OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER} + * {@link provideOpenGraphSiteName} * * See also: * diff --git a/projects/ngx-meta/src/standard/src/managers/index.ts b/projects/ngx-meta/src/standard/src/managers/index.ts index 58189c30..b27f5900 100644 --- a/projects/ngx-meta/src/standard/src/managers/index.ts +++ b/projects/ngx-meta/src/standard/src/managers/index.ts @@ -1,13 +1,40 @@ -export { STANDARD_APPLICATION_NAME_METADATA_PROVIDER } from './standard-application-name-metadata-provider' -export { STANDARD_AUTHOR_METADATA_PROVIDER } from './standard-author-metadata-provider' -export { STANDARD_CANONICAL_URL_METADATA_PROVIDER } from './standard-canonical-url-metadata-provider' -export { STANDARD_DESCRIPTION_METADATA_PROVIDER } from './standard-description-metadata-provider' -export { STANDARD_GENERATOR_METADATA_PROVIDER } from './standard-generator-metadata-provider' -export { STANDARD_KEYWORDS_METADATA_PROVIDER } from './standard-keywords-metadata-provider' -export { STANDARD_LOCALE_METADATA_PROVIDER } from './standard-locale-metadata-provider' -export { STANDARD_THEME_COLOR_METADATA_PROVIDER } from './standard-theme-color-metadata-provider' +export { + provideStandardApplicationName, + STANDARD_APPLICATION_NAME_METADATA_PROVIDER, +} from './provide-standard-application-name' +export { + provideStandardAuthor, + STANDARD_AUTHOR_METADATA_PROVIDER, +} from './provide-standard-author' +export { + provideStandardCanonicalUrl, + STANDARD_CANONICAL_URL_METADATA_PROVIDER, +} from './provide-standard-canonical-url' +export { + provideStandardDescription, + STANDARD_DESCRIPTION_METADATA_PROVIDER, +} from './provide-standard-description' +export { + provideStandardGenerator, + STANDARD_GENERATOR_METADATA_PROVIDER, +} from './provide-standard-generator' +export { + provideStandardKeywords, + STANDARD_KEYWORDS_METADATA_PROVIDER, +} from './provide-standard-keywords' +export { + provideStandardLocale, + STANDARD_LOCALE_METADATA_PROVIDER, +} from './provide-standard-locale' +export { + provideStandardThemeColor, + STANDARD_THEME_COLOR_METADATA_PROVIDER, +} from './provide-standard-theme-color' export { StandardThemeColorMetadata, StandardThemeColorMetadataObject, } from './standard-theme-color-metadata' -export { STANDARD_TITLE_METADATA_PROVIDER } from './standard-title-metadata-provider' +export { + provideStandardTitle, + STANDARD_TITLE_METADATA_PROVIDER, +} from './provide-standard-title' diff --git a/projects/ngx-meta/src/standard/src/managers/standard-application-name-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-application-name.ts similarity index 69% rename from projects/ngx-meta/src/standard/src/managers/standard-application-name-metadata-provider.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-application-name.ts index 6e3744cf..de677389 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-application-name-metadata-provider.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-application-name.ts @@ -10,9 +10,18 @@ import { provideStandardManager } from '../utils/provide-standard-manager' * Manages the {@link Standard.applicationName} metadata * @public */ -export const STANDARD_APPLICATION_NAME_METADATA_PROVIDER = +export const provideStandardApplicationName = () => provideStandardManager( _GLOBAL_APPLICATION_NAME, _withModuleManagerSameGlobalKey(), _withModuleManagerNameAttribute(withNameAttribute('application-name')), ) + +/** + * {@inheritDoc provideStandardApplicationName} + * @deprecated Use {@link provideStandardApplicationName} instead + * @public + */ +export const STANDARD_APPLICATION_NAME_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardApplicationName() diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-author.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-author.ts new file mode 100644 index 00000000..4b1884dd --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-author.ts @@ -0,0 +1,16 @@ +import { provideStandardManager } from '../utils/provide-standard-manager' + +/** + * Manages the {@link Standard.author} metadata + * @public + */ +export const provideStandardAuthor = () => provideStandardManager('author') + +/** + * {@inheritDoc provideStandardAuthor} + * @deprecated Use {@link provideStandardAuthor} instead + * @public + */ +export const STANDARD_AUTHOR_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardAuthor() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-canonical-url-metadata-provider.spec.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-canonical-url.spec.ts similarity index 96% rename from projects/ngx-meta/src/standard/src/managers/standard-canonical-url-metadata-provider.spec.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-canonical-url.spec.ts index ffee93ec..dd11b6a4 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-canonical-url-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-canonical-url.spec.ts @@ -9,7 +9,7 @@ import { import { TestBed } from '@angular/core/testing' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' import { Standard } from '../types' -import { STANDARD_CANONICAL_URL_METADATA_PROVIDER } from './standard-canonical-url-metadata-provider' +import { provideStandardCanonicalUrl } from './provide-standard-canonical-url' import { likeWhenNullOrUndefined } from '@/ngx-meta/test/like-when-null-or-undefined' describe('Standard canonical URL metadata manager', () => { @@ -118,7 +118,7 @@ const makeSut = ( .createSpy<_UrlResolver>('URL Resolver') .and.callFake((url) => url?.toString()), }, - STANDARD_CANONICAL_URL_METADATA_PROVIDER, + provideStandardCanonicalUrl(), ], }) return injectOneMetadataManager() diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-canonical-url.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-canonical-url.ts new file mode 100644 index 00000000..a2c8c5d4 --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-canonical-url.ts @@ -0,0 +1,60 @@ +import { + _GLOBAL_CANONICAL_URL, + _headElementUpsertOrRemove, + _isDefined, + _maybeNonHttpUrlDevMessage, + _urlResolver, + _withModuleManagerSameGlobalKey, + _withModuleManagerSetterFactory, + withManagerDeps, +} from '@davidlj95/ngx-meta/core' +import { DOCUMENT } from '@angular/common' +import { MODULE_NAME } from '../module-name' +import { provideStandardManager } from '../utils/provide-standard-manager' + +/** + * Manages the {@link Standard.canonicalUrl} metadata + * @public + */ +export const provideStandardCanonicalUrl = () => + provideStandardManager( + _GLOBAL_CANONICAL_URL, + _withModuleManagerSameGlobalKey(), + withManagerDeps(_headElementUpsertOrRemove(), DOCUMENT, _urlResolver()), + _withModuleManagerSetterFactory( + (headElementUpsertOrRemove, doc, urlResolver) => (url) => { + const resolvedUrl = urlResolver(url) + /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ + if (ngDevMode) { + _maybeNonHttpUrlDevMessage(resolvedUrl, { + module: MODULE_NAME, + property: _GLOBAL_CANONICAL_URL, + value: resolvedUrl, + link: 'https://stackoverflow.com/a/8467966/3263250', + shouldInsteadOfMust: true, + }) + } + let linkElement: HTMLLinkElement | undefined + if (_isDefined(resolvedUrl)) { + linkElement = doc.createElement(LINK_TAG) + linkElement!.setAttribute(REL_ATTR, CANONICAL_VAL) + linkElement!.setAttribute('href', resolvedUrl) + } + headElementUpsertOrRemove(SELECTOR, linkElement) + }, + ), + ) + +const LINK_TAG = 'link' +const REL_ATTR = 'rel' +const CANONICAL_VAL = 'canonical' +const SELECTOR = `${LINK_TAG}[${REL_ATTR}='${CANONICAL_VAL}']` + +/** + * {@inheritDoc provideStandardCanonicalUrl} + * @deprecated Use {@link provideStandardCanonicalUrl} instead + * @public + */ +export const STANDARD_CANONICAL_URL_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardCanonicalUrl() diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-description.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-description.ts new file mode 100644 index 00000000..5f5a9b96 --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-description.ts @@ -0,0 +1,21 @@ +import { + _GLOBAL_DESCRIPTION, + _withModuleManagerSameGlobalKey, +} from '@davidlj95/ngx-meta/core' +import { provideStandardManager } from '../utils/provide-standard-manager' + +/** + * Manages the {@link Standard.description} metadata + * @public + */ +export const provideStandardDescription = () => + provideStandardManager(_GLOBAL_DESCRIPTION, _withModuleManagerSameGlobalKey()) + +/** + * {@inheritDoc provideStandardDescription} + * @deprecated Use {@link provideStandardDescription} instead + * @public + */ +export const STANDARD_DESCRIPTION_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardDescription() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-generator-metadata-provider.spec.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-generator.spec.ts similarity index 93% rename from projects/ngx-meta/src/standard/src/managers/standard-generator-metadata-provider.spec.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-generator.spec.ts index 9aa8d149..05f3863c 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-generator-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-generator.spec.ts @@ -8,7 +8,7 @@ import { } from '@davidlj95/ngx-meta/core' import { VERSION } from '@angular/core' import { Standard } from '../types' -import { STANDARD_GENERATOR_METADATA_PROVIDER } from './standard-generator-metadata-provider' +import { provideStandardGenerator } from './provide-standard-generator' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' import { likeWhenNullOrUndefined } from '@/ngx-meta/test/like-when-null-or-undefined' @@ -59,7 +59,7 @@ function makeSut(): NgxMetaMetadataManager<Standard['generator']> { TestBed.configureTestingModule({ providers: [ MockProvider(NgxMetaElementsService), - STANDARD_GENERATOR_METADATA_PROVIDER, + provideStandardGenerator(), ], }) return injectOneMetadataManager() diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-generator.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-generator.ts new file mode 100644 index 00000000..ada73981 --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-generator.ts @@ -0,0 +1,38 @@ +import { Standard } from '../types' +import { + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, + withNameAttribute, +} from '@davidlj95/ngx-meta/core' +import { VERSION } from '@angular/core' +import { provideStandardManager } from '../utils/provide-standard-manager' + +const KEY = 'generator' satisfies keyof Standard + +/** + * Manages the {@link Standard.generator} metadata + * @public + */ +export const provideStandardGenerator = () => + provideStandardManager( + KEY, + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (value) => + metaElementsService.set( + withNameAttribute(KEY), + withContentAttribute( + value === true ? `Angular v${VERSION.full}` : value, + ), + ), + ), + ) + +/** + * {@inheritDoc provideStandardGenerator} + * @deprecated Use {@link provideStandardGenerator} instead + * @public + */ +export const STANDARD_GENERATOR_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardGenerator() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-keywords-metadata-provider.spec.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-keywords.spec.ts similarity index 90% rename from projects/ngx-meta/src/standard/src/managers/standard-keywords-metadata-provider.spec.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-keywords.spec.ts index cbd5966f..28eb01d1 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-keywords-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-keywords.spec.ts @@ -6,7 +6,7 @@ import { NgxMetaMetadataManager, } from '@davidlj95/ngx-meta/core' import { Standard } from '../types' -import { STANDARD_KEYWORDS_METADATA_PROVIDER } from './standard-keywords-metadata-provider' +import { provideStandardKeywords } from './provide-standard-keywords' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' describe('Standard keywords metadata manager', () => { @@ -39,7 +39,7 @@ function makeSut(): NgxMetaMetadataManager<Standard['keywords']> { TestBed.configureTestingModule({ providers: [ MockProvider(NgxMetaElementsService), - STANDARD_KEYWORDS_METADATA_PROVIDER, + provideStandardKeywords(), ], }) return injectOneMetadataManager() diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-keywords.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-keywords.ts new file mode 100644 index 00000000..c0474548 --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-keywords.ts @@ -0,0 +1,35 @@ +import { Standard } from '../types' +import { + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, + withNameAttribute, +} from '@davidlj95/ngx-meta/core' +import { provideStandardManager } from '../utils/provide-standard-manager' + +const KEY = 'keywords' satisfies keyof Standard + +/** + * Manages the {@link Standard.keywords} metadata + * @public + */ +export const provideStandardKeywords = () => + provideStandardManager( + KEY, + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (value) => + metaElementsService.set( + withNameAttribute(KEY), + withContentAttribute(value?.join(',')), + ), + ), + ) + +/** + * {@inheritDoc provideStandardKeywords} + * @deprecated Use {@link provideStandardKeywords} instead + * @public + */ +export const STANDARD_KEYWORDS_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardKeywords() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-locale-metadata-provider.spec.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-locale.spec.ts similarity index 92% rename from projects/ngx-meta/src/standard/src/managers/standard-locale-metadata-provider.spec.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-locale.spec.ts index 6797fb82..62882e40 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-locale-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-locale.spec.ts @@ -5,7 +5,7 @@ import { HtmlLangAttributeHarness } from './__tests__/html-lang-attribute-harnes import { NgxMetaMetadataManager } from '@davidlj95/ngx-meta/core' import { Standard } from '../types' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' -import { STANDARD_LOCALE_METADATA_PROVIDER } from './standard-locale-metadata-provider' +import { provideStandardLocale } from './provide-standard-locale' import { likeWhenNullOrUndefined } from '@/ngx-meta/test/like-when-null-or-undefined' describe('Standard locale metadata', () => { @@ -53,7 +53,7 @@ describe('Standard locale metadata', () => { function makeSut(): NgxMetaMetadataManager<Standard['locale']> { TestBed.configureTestingModule({ - providers: [STANDARD_LOCALE_METADATA_PROVIDER], + providers: [provideStandardLocale()], }) return injectOneMetadataManager() } diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-locale.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-locale.ts new file mode 100644 index 00000000..30dbcc20 --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-locale.ts @@ -0,0 +1,39 @@ +import { + _GLOBAL_LOCALE, + _isDefined, + _withModuleManagerSameGlobalKey, + _withModuleManagerSetterFactory, + withManagerDeps, +} from '@davidlj95/ngx-meta/core' +import { DOCUMENT } from '@angular/common' +import { provideStandardManager } from '../utils/provide-standard-manager' + +const ATTRIBUTE_NAME = 'lang' + +/** + * Manages the {@link Standard.locale} metadata + * @public + */ +export const provideStandardLocale = () => + provideStandardManager( + _GLOBAL_LOCALE, + _withModuleManagerSameGlobalKey(), + withManagerDeps(DOCUMENT), + _withModuleManagerSetterFactory((doc: Document) => (locale) => { + const htmlElement = doc.documentElement + if (!_isDefined(locale)) { + htmlElement.removeAttribute(ATTRIBUTE_NAME) + return + } + htmlElement.setAttribute(ATTRIBUTE_NAME, locale) + }), + ) + +/** + * {@inheritDoc provideStandardLocale} + * @deprecated Use {@link provideStandardLocale} instead + * @public + */ +export const STANDARD_LOCALE_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardLocale() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-theme-color-metadata-provider.spec.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-theme-color.spec.ts similarity index 95% rename from projects/ngx-meta/src/standard/src/managers/standard-theme-color-metadata-provider.spec.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-theme-color.spec.ts index 9838f948..2538d596 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-theme-color-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-theme-color.spec.ts @@ -6,7 +6,7 @@ import { import { Standard } from '../types' import { TestBed } from '@angular/core/testing' import { MockProvider } from 'ng-mocks' -import { STANDARD_THEME_COLOR_METADATA_PROVIDER } from './standard-theme-color-metadata-provider' +import { provideStandardThemeColor } from './provide-standard-theme-color' import { enableAutoSpy } from '@/ngx-meta/test/enable-auto-spy' import { MetaDefinition } from '@angular/platform-browser' import { StandardThemeColorMetadataObject } from './standard-theme-color-metadata' @@ -85,7 +85,7 @@ function makeSut(): NgxMetaMetadataManager<Standard['themeColor']> { TestBed.configureTestingModule({ providers: [ MockProvider(NgxMetaElementsService), - STANDARD_THEME_COLOR_METADATA_PROVIDER, + provideStandardThemeColor(), ], }) return injectOneMetadataManager() diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-theme-color.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-theme-color.ts new file mode 100644 index 00000000..f460f7ba --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-theme-color.ts @@ -0,0 +1,47 @@ +import { + _isDefined, + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, + withNameAttribute, +} from '@davidlj95/ngx-meta/core' +import { StandardThemeColorMetadataObject } from './standard-theme-color-metadata' +import { provideStandardManager } from '../utils/provide-standard-manager' +import { Standard } from '../types' + +/** + * Manages the {@link Standard.themeColor} metadata + * @public + */ +export const provideStandardThemeColor = () => + provideStandardManager( + 'themeColor', + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (value) => { + const contents = !_isDefined(value) + ? [] + : (Array.isArray as IsStandardThemeColorMetadataArray)(value) + ? value + : [{ color: value } satisfies StandardThemeColorMetadataObject] + metaElementsService.set( + withNameAttribute('theme-color'), + contents.map(({ color, media }) => + withContentAttribute(color, media ? { media } : undefined), + ), + ) + }, + ), + ) + +type IsStandardThemeColorMetadataArray = ( + value: Standard['themeColor'], +) => value is readonly StandardThemeColorMetadataObject[] + +/** + * {@inheritDoc provideStandardThemeColor} + * @deprecated Use {@link provideStandardThemeColor} instead + * @public + */ +export const STANDARD_THEME_COLOR_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardThemeColor() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-title-metadata-provider.spec.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-title.spec.ts similarity index 89% rename from projects/ngx-meta/src/standard/src/managers/standard-title-metadata-provider.spec.ts rename to projects/ngx-meta/src/standard/src/managers/provide-standard-title.spec.ts index b43464a2..ab1ce608 100644 --- a/projects/ngx-meta/src/standard/src/managers/standard-title-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-title.spec.ts @@ -5,7 +5,7 @@ import { Title } from '@angular/platform-browser' import { NgxMetaMetadataManager } from '@davidlj95/ngx-meta/core' import { Standard } from '../types' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' -import { STANDARD_TITLE_METADATA_PROVIDER } from './standard-title-metadata-provider' +import { provideStandardTitle } from './provide-standard-title' describe('Standard title metadata manager', () => { enableAutoSpy() @@ -42,7 +42,7 @@ describe('Standard title metadata manager', () => { function makeSut(): NgxMetaMetadataManager<Standard['title']> { TestBed.configureTestingModule({ - providers: [MockProvider(Title), STANDARD_TITLE_METADATA_PROVIDER], + providers: [MockProvider(Title), provideStandardTitle()], }) return injectOneMetadataManager() } diff --git a/projects/ngx-meta/src/standard/src/managers/provide-standard-title.ts b/projects/ngx-meta/src/standard/src/managers/provide-standard-title.ts new file mode 100644 index 00000000..c79ca5aa --- /dev/null +++ b/projects/ngx-meta/src/standard/src/managers/provide-standard-title.ts @@ -0,0 +1,35 @@ +import { Title } from '@angular/platform-browser' +import { + _GLOBAL_TITLE, + _isDefined, + _withModuleManagerSameGlobalKey, + _withModuleManagerSetterFactory, + withManagerDeps, +} from '@davidlj95/ngx-meta/core' +import { provideStandardManager } from '../utils/provide-standard-manager' + +/** + * Manages the {@link Standard.title} metadata + * @public + */ +export const provideStandardTitle = () => + provideStandardManager( + _GLOBAL_TITLE, + _withModuleManagerSameGlobalKey(), + withManagerDeps(Title), + _withModuleManagerSetterFactory((titleService: Title) => (value) => { + if (!_isDefined(value)) { + return + } + titleService.setTitle(value) + }), + ) + +/** + * {@inheritDoc provideStandardTitle} + * @deprecated Use {@link provideStandardTitle} instead + * @public + */ +export const STANDARD_TITLE_METADATA_PROVIDER = + /* @__PURE__ */ + provideStandardTitle() diff --git a/projects/ngx-meta/src/standard/src/managers/standard-author-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-author-metadata-provider.ts deleted file mode 100644 index 1c9593d7..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-author-metadata-provider.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { provideStandardManager } from '../utils/provide-standard-manager' - -/** - * Manages the {@link Standard.author} metadata - * @public - */ -export const STANDARD_AUTHOR_METADATA_PROVIDER = - provideStandardManager('author') diff --git a/projects/ngx-meta/src/standard/src/managers/standard-canonical-url-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-canonical-url-metadata-provider.ts deleted file mode 100644 index 107f1e36..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-canonical-url-metadata-provider.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { - _GLOBAL_CANONICAL_URL, - _headElementUpsertOrRemove, - _isDefined, - _maybeNonHttpUrlDevMessage, - _urlResolver, - _withModuleManagerSameGlobalKey, - _withModuleManagerSetterFactory, - withManagerDeps, -} from '@davidlj95/ngx-meta/core' -import { DOCUMENT } from '@angular/common' -import { MODULE_NAME } from '../module-name' -import { provideStandardManager } from '../utils/provide-standard-manager' - -/** - * Manages the {@link Standard.canonicalUrl} metadata - * @public - */ -export const STANDARD_CANONICAL_URL_METADATA_PROVIDER = provideStandardManager( - _GLOBAL_CANONICAL_URL, - _withModuleManagerSameGlobalKey(), - withManagerDeps(_headElementUpsertOrRemove(), DOCUMENT, _urlResolver()), - _withModuleManagerSetterFactory( - (headElementUpsertOrRemove, doc, urlResolver) => (url) => { - const resolvedUrl = urlResolver(url) - /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ - if (ngDevMode) { - _maybeNonHttpUrlDevMessage(resolvedUrl, { - module: MODULE_NAME, - property: _GLOBAL_CANONICAL_URL, - value: resolvedUrl, - link: 'https://stackoverflow.com/a/8467966/3263250', - shouldInsteadOfMust: true, - }) - } - let linkElement: HTMLLinkElement | undefined - if (_isDefined(resolvedUrl)) { - linkElement = doc.createElement(LINK_TAG) - linkElement!.setAttribute(REL_ATTR, CANONICAL_VAL) - linkElement!.setAttribute('href', resolvedUrl) - } - headElementUpsertOrRemove(SELECTOR, linkElement) - }, - ), -) - -const LINK_TAG = 'link' -const REL_ATTR = 'rel' -const CANONICAL_VAL = 'canonical' -const SELECTOR = `${LINK_TAG}[${REL_ATTR}='${CANONICAL_VAL}']` diff --git a/projects/ngx-meta/src/standard/src/managers/standard-description-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-description-metadata-provider.ts deleted file mode 100644 index 9c93a3db..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-description-metadata-provider.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - _GLOBAL_DESCRIPTION, - _withModuleManagerSameGlobalKey, -} from '@davidlj95/ngx-meta/core' -import { provideStandardManager } from '../utils/provide-standard-manager' - -/** - * Manages the {@link Standard.description} metadata - * @public - */ -export const STANDARD_DESCRIPTION_METADATA_PROVIDER = provideStandardManager( - _GLOBAL_DESCRIPTION, - _withModuleManagerSameGlobalKey(), -) diff --git a/projects/ngx-meta/src/standard/src/managers/standard-generator-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-generator-metadata-provider.ts deleted file mode 100644 index 62a48fc7..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-generator-metadata-provider.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Standard } from '../types' -import { - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, - withNameAttribute, -} from '@davidlj95/ngx-meta/core' -import { VERSION } from '@angular/core' -import { provideStandardManager } from '../utils/provide-standard-manager' - -const KEY = 'generator' satisfies keyof Standard - -/** - * Manages the {@link Standard.generator} metadata - * @public - */ -export const STANDARD_GENERATOR_METADATA_PROVIDER = provideStandardManager( - KEY, - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (value) => - metaElementsService.set( - withNameAttribute(KEY), - withContentAttribute( - value === true ? `Angular v${VERSION.full}` : value, - ), - ), - ), -) diff --git a/projects/ngx-meta/src/standard/src/managers/standard-keywords-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-keywords-metadata-provider.ts deleted file mode 100644 index 16ace33f..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-keywords-metadata-provider.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Standard } from '../types' -import { - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, - withNameAttribute, -} from '@davidlj95/ngx-meta/core' -import { provideStandardManager } from '../utils/provide-standard-manager' - -const KEY = 'keywords' satisfies keyof Standard - -/** - * Manages the {@link Standard.keywords} metadata - * @public - */ -export const STANDARD_KEYWORDS_METADATA_PROVIDER = provideStandardManager( - KEY, - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (value) => - metaElementsService.set( - withNameAttribute(KEY), - withContentAttribute(value?.join(',')), - ), - ), -) diff --git a/projects/ngx-meta/src/standard/src/managers/standard-locale-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-locale-metadata-provider.ts deleted file mode 100644 index 19ee789e..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-locale-metadata-provider.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { - _GLOBAL_LOCALE, - _isDefined, - _withModuleManagerSameGlobalKey, - _withModuleManagerSetterFactory, - withManagerDeps, -} from '@davidlj95/ngx-meta/core' -import { DOCUMENT } from '@angular/common' -import { provideStandardManager } from '../utils/provide-standard-manager' - -const ATTRIBUTE_NAME = 'lang' - -/** - * Manages the {@link Standard.locale} metadata - * @public - */ -export const STANDARD_LOCALE_METADATA_PROVIDER = provideStandardManager( - _GLOBAL_LOCALE, - _withModuleManagerSameGlobalKey(), - withManagerDeps(DOCUMENT), - _withModuleManagerSetterFactory((doc: Document) => (locale) => { - const htmlElement = doc.documentElement - if (!_isDefined(locale)) { - htmlElement.removeAttribute(ATTRIBUTE_NAME) - return - } - htmlElement.setAttribute(ATTRIBUTE_NAME, locale) - }), -) diff --git a/projects/ngx-meta/src/standard/src/managers/standard-theme-color-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-theme-color-metadata-provider.ts deleted file mode 100644 index 5bdaa926..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-theme-color-metadata-provider.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { - _isDefined, - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, - withNameAttribute, -} from '@davidlj95/ngx-meta/core' -import { StandardThemeColorMetadataObject } from './standard-theme-color-metadata' -import { provideStandardManager } from '../utils/provide-standard-manager' -import { Standard } from '../types' - -/** - * Manages the {@link Standard.themeColor} metadata - * @public - */ -export const STANDARD_THEME_COLOR_METADATA_PROVIDER = provideStandardManager( - 'themeColor', - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (value) => { - const contents = !_isDefined(value) - ? [] - : (Array.isArray as IsStandardThemeColorMetadataArray)(value) - ? value - : [{ color: value } satisfies StandardThemeColorMetadataObject] - metaElementsService.set( - withNameAttribute('theme-color'), - contents.map(({ color, media }) => - withContentAttribute(color, media ? { media } : undefined), - ), - ) - }, - ), -) - -type IsStandardThemeColorMetadataArray = ( - value: Standard['themeColor'], -) => value is readonly StandardThemeColorMetadataObject[] diff --git a/projects/ngx-meta/src/standard/src/managers/standard-title-metadata-provider.ts b/projects/ngx-meta/src/standard/src/managers/standard-title-metadata-provider.ts deleted file mode 100644 index 1bc68bb3..00000000 --- a/projects/ngx-meta/src/standard/src/managers/standard-title-metadata-provider.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Title } from '@angular/platform-browser' -import { - _GLOBAL_TITLE, - _isDefined, - _withModuleManagerSameGlobalKey, - _withModuleManagerSetterFactory, - withManagerDeps, -} from '@davidlj95/ngx-meta/core' -import { provideStandardManager } from '../utils/provide-standard-manager' - -/** - * Manages the {@link Standard.title} metadata - * @public - */ -export const STANDARD_TITLE_METADATA_PROVIDER = provideStandardManager( - _GLOBAL_TITLE, - _withModuleManagerSameGlobalKey(), - withManagerDeps(Title), - _withModuleManagerSetterFactory((titleService: Title) => (value) => { - if (!_isDefined(value)) { - return - } - titleService.setTitle(value) - }), -) diff --git a/projects/ngx-meta/src/standard/src/providers/provide-ngx-meta-standard.ts b/projects/ngx-meta/src/standard/src/providers/provide-ngx-meta-standard.ts index 549819fe..de79672c 100644 --- a/projects/ngx-meta/src/standard/src/providers/provide-ngx-meta-standard.ts +++ b/projects/ngx-meta/src/standard/src/providers/provide-ngx-meta-standard.ts @@ -1,14 +1,14 @@ import { Provider } from '@angular/core' import { - STANDARD_APPLICATION_NAME_METADATA_PROVIDER, - STANDARD_AUTHOR_METADATA_PROVIDER, - STANDARD_CANONICAL_URL_METADATA_PROVIDER, - STANDARD_DESCRIPTION_METADATA_PROVIDER, - STANDARD_GENERATOR_METADATA_PROVIDER, - STANDARD_KEYWORDS_METADATA_PROVIDER, - STANDARD_LOCALE_METADATA_PROVIDER, - STANDARD_THEME_COLOR_METADATA_PROVIDER, - STANDARD_TITLE_METADATA_PROVIDER, + provideStandardApplicationName, + provideStandardAuthor, + provideStandardCanonicalUrl, + provideStandardDescription, + provideStandardGenerator, + provideStandardKeywords, + provideStandardLocale, + provideStandardThemeColor, + provideStandardTitle, } from '../managers' /** @@ -23,13 +23,13 @@ import { * @public */ export const provideNgxMetaStandard = (): Provider => [ - STANDARD_TITLE_METADATA_PROVIDER, - STANDARD_DESCRIPTION_METADATA_PROVIDER, - STANDARD_AUTHOR_METADATA_PROVIDER, - STANDARD_KEYWORDS_METADATA_PROVIDER, - STANDARD_GENERATOR_METADATA_PROVIDER, - STANDARD_APPLICATION_NAME_METADATA_PROVIDER, - STANDARD_CANONICAL_URL_METADATA_PROVIDER, - STANDARD_LOCALE_METADATA_PROVIDER, - STANDARD_THEME_COLOR_METADATA_PROVIDER, + provideStandardTitle(), + provideStandardDescription(), + provideStandardAuthor(), + provideStandardKeywords(), + provideStandardGenerator(), + provideStandardApplicationName(), + provideStandardCanonicalUrl(), + provideStandardLocale(), + provideStandardThemeColor(), ] diff --git a/projects/ngx-meta/src/standard/src/types/standard.ts b/projects/ngx-meta/src/standard/src/types/standard.ts index 0a77b7b7..bf06ab0b 100644 --- a/projects/ngx-meta/src/standard/src/types/standard.ts +++ b/projects/ngx-meta/src/standard/src/types/standard.ts @@ -27,7 +27,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_TITLE_METADATA_PROVIDER} + * {@link provideStandardTitle} * * See also: * @@ -56,7 +56,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_DESCRIPTION_METADATA_PROVIDER} + * {@link provideStandardDescription} * * See also: * @@ -78,7 +78,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_AUTHOR_METADATA_PROVIDER} + * {@link provideStandardAuthor} * * See also: * @@ -100,7 +100,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_KEYWORDS_METADATA_PROVIDER} + * {@link provideStandardKeywords} * * See also: * @@ -128,7 +128,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_GENERATOR_METADATA_PROVIDER} + * {@link provideStandardGenerator} * * See also: * @@ -158,7 +158,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_APPLICATION_NAME_METADATA_PROVIDER} + * {@link provideStandardApplicationName} * * See also: * @@ -188,7 +188,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_CANONICAL_URL_METADATA_PROVIDER} + * {@link provideStandardCanonicalUrl} * * See also: * @@ -218,7 +218,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_LOCALE_METADATA_PROVIDER} + * {@link provideStandardLocale} * * See also: * @@ -254,7 +254,7 @@ export interface Standard { * * Provider: * - * {@link STANDARD_THEME_COLOR_METADATA_PROVIDER} + * {@link provideStandardThemeColor} * * See also: * diff --git a/projects/ngx-meta/src/twitter-card/src/managers/index.ts b/projects/ngx-meta/src/twitter-card/src/managers/index.ts index 03e8c684..8bcbb7ab 100644 --- a/projects/ngx-meta/src/twitter-card/src/managers/index.ts +++ b/projects/ngx-meta/src/twitter-card/src/managers/index.ts @@ -1,18 +1,36 @@ -export { TWITTER_CARD_CARD_METADATA_PROVIDER } from './twitter-card-card-metadata-provider' +export { + provideTwitterCardCard, + TWITTER_CARD_CARD_METADATA_PROVIDER, +} from './provide-twitter-card-card' export * from './twitter-card-type' -export { TWITTER_CARD_CREATOR_METADATA_PROVIDER } from './twitter-card-creator-metadata-provider' +export { + provideTwitterCardCreator, + TWITTER_CARD_CREATOR_METADATA_PROVIDER, +} from './provide-twitter-card-creator' export { TwitterCardCreator, TwitterCardCreatorId, TwitterCardCreatorUsername, } from './twitter-card-creator' -export { TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER } from './twitter-card-description-metadata-provider' -export { TWITTER_CARD_IMAGE_METADATA_PROVIDER } from './twitter-card-image-metadata-provider' +export { + provideTwitterCardDescription, + TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER, +} from './provide-twitter-card-description' +export { + provideTwitterCardImage, + TWITTER_CARD_IMAGE_METADATA_PROVIDER, +} from './provide-twitter-card-image' export { TwitterCardImage } from './twitter-card-image' -export { TWITTER_CARD_SITE_METADATA_PROVIDER } from './twitter-card-site-metadata-provider' +export { + provideTwitterCardSite, + TWITTER_CARD_SITE_METADATA_PROVIDER, +} from './provide-twitter-card-site' export { TwitterCardSite, TwitterCardSiteId, TwitterCardSiteUsername, } from './twitter-card-site' -export { TWITTER_CARD_TITLE_METADATA_PROVIDER } from './twitter-card-title-metadata-provider' +export { + provideTwitterCardTitle, + TWITTER_CARD_TITLE_METADATA_PROVIDER, +} from './provide-twitter-card-title' diff --git a/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-card.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-card.ts new file mode 100644 index 00000000..d0b108e7 --- /dev/null +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-card.ts @@ -0,0 +1,16 @@ +import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' + +/** + * Manages the {@link TwitterCard.card} metadata + * @public + */ +export const provideTwitterCardCard = () => provideTwitterCardManager('card') + +/** + * {@inheritDoc provideTwitterCardCard} + * @deprecated Use {@link provideTwitterCardCard} instead + * @public + */ +export const TWITTER_CARD_CARD_METADATA_PROVIDER = + /* @__PURE__ */ + provideTwitterCardCard() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-creator.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-creator.ts new file mode 100644 index 00000000..1003abe2 --- /dev/null +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-creator.ts @@ -0,0 +1,49 @@ +import { TwitterCard } from '../types' +import { + TwitterCardCreatorId, + TwitterCardCreatorUsername, +} from './twitter-card-creator' +import { + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, +} from '@davidlj95/ngx-meta/core' +import { withTwitterCardNameAttribute } from '../utils/with-twitter-card-name-attribute' +import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' + +const KEY = 'creator' satisfies keyof TwitterCard + +/** + * Manages the {@link TwitterCard.creator} metadata + * @public + */ +export const provideTwitterCardCreator = () => + provideTwitterCardManager( + KEY, + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (creator) => { + metaElementsService.set( + withTwitterCardNameAttribute(KEY), + withContentAttribute( + (creator as TwitterCardCreatorUsername | undefined | null) + ?.username, + ), + ) + metaElementsService.set( + withTwitterCardNameAttribute(KEY, 'id'), + withContentAttribute( + (creator as TwitterCardCreatorId | undefined | null)?.id, + ), + ) + }, + ), + ) + +/** + * {@inheritDoc provideTwitterCardCreator} + * @deprecated Use {@link provideTwitterCardCreator} instead + * @public + */ +export const TWITTER_CARD_CREATOR_METADATA_PROVIDER = + /* @__PURE__ */ + provideTwitterCardCreator() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-description-metadata-provider.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-description.ts similarity index 85% rename from projects/ngx-meta/src/twitter-card/src/managers/twitter-card-description-metadata-provider.ts rename to projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-description.ts index 2f55e4b8..c9ceb88e 100644 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-description-metadata-provider.ts +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-description.ts @@ -14,7 +14,7 @@ import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager * Manages the {@link TwitterCard.description} metadata * @public */ -export const TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER = +export const provideTwitterCardDescription = () => provideTwitterCardManager( _GLOBAL_DESCRIPTION, _withModuleManagerSameGlobalKey(), @@ -36,3 +36,12 @@ export const TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER = }, ), ) + +/** + * {@inheritDoc provideTwitterCardDescription} + * @deprecated Use {@link provideTwitterCardDescription} instead + * @public + */ +export const TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER = + /* @__PURE__ */ + provideTwitterCardDescription() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image-metadata-provider.spec.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-image.spec.ts similarity index 94% rename from projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image-metadata-provider.spec.ts rename to projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-image.spec.ts index 76c80e46..4e9017e0 100644 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image-metadata-provider.spec.ts +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-image.spec.ts @@ -6,7 +6,7 @@ import { import { TestBed } from '@angular/core/testing' import { MockProviders } from 'ng-mocks' import { TwitterCard } from '../types' -import { TWITTER_CARD_IMAGE_METADATA_PROVIDER } from './twitter-card-image-metadata-provider' +import { provideTwitterCardImage } from './provide-twitter-card-image' import { TwitterCardImage } from './twitter-card-image' import { injectOneMetadataManager } from '@/ngx-meta/test/inject-one-metadata-manager' @@ -70,7 +70,7 @@ function makeSut(): NgxMetaMetadataManager<TwitterCard['image']> { TestBed.configureTestingModule({ providers: [ MockProviders(NgxMetaElementsService), - TWITTER_CARD_IMAGE_METADATA_PROVIDER, + provideTwitterCardImage(), ], }) return injectOneMetadataManager() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-image.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-image.ts new file mode 100644 index 00000000..14539424 --- /dev/null +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-image.ts @@ -0,0 +1,53 @@ +import { + _GLOBAL_IMAGE, + _maybeNonHttpUrlDevMessage, + _withModuleManagerSameGlobalKey, + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, + withManagerObjectMerging, +} from '@davidlj95/ngx-meta/core' +import { MODULE_NAME } from '../module-name' +import { withTwitterCardNameAttribute } from '../utils/with-twitter-card-name-attribute' +import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' + +/** + * Manages the {@link TwitterCard.image} metadata + * @public + */ +export const provideTwitterCardImage = () => + provideTwitterCardManager( + _GLOBAL_IMAGE, + _withModuleManagerSameGlobalKey(), + withManagerObjectMerging(), + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (image) => { + /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ + if (ngDevMode) { + _maybeNonHttpUrlDevMessage(image?.url, { + module: MODULE_NAME, + property: 'image', + value: image?.url.toString(), + link: 'https://devcommunity.x.com/t/card-error-unable-to-render-or-no-image-read-this-first/62736', + }) + } + metaElementsService.set( + withTwitterCardNameAttribute(_GLOBAL_IMAGE), + withContentAttribute(image?.url?.toString()), + ) + metaElementsService.set( + withTwitterCardNameAttribute(_GLOBAL_IMAGE, 'alt'), + withContentAttribute(image?.alt), + ) + }, + ), + ) + +/** + * {@inheritDoc provideTwitterCardImage} + * @deprecated Use {@link provideTwitterCardImage} instead + * @public + */ +export const TWITTER_CARD_IMAGE_METADATA_PROVIDER = + /* @__PURE__ */ + provideTwitterCardImage() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-site.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-site.ts new file mode 100644 index 00000000..16684a25 --- /dev/null +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-site.ts @@ -0,0 +1,45 @@ +import { TwitterCard } from '../types' +import { TwitterCardSiteId, TwitterCardSiteUsername } from './twitter-card-site' +import { + _withModuleManagerSetterFactory, + NgxMetaElementsService, + withContentAttribute, +} from '@davidlj95/ngx-meta/core' +import { withTwitterCardNameAttribute } from '../utils/with-twitter-card-name-attribute' +import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' + +const KEY = 'site' satisfies keyof TwitterCard + +/** + * Manages the {@link TwitterCard.site} metadata + * @public + */ +export const provideTwitterCardSite = () => + provideTwitterCardManager( + KEY, + _withModuleManagerSetterFactory( + (metaElementsService: NgxMetaElementsService) => (site) => { + metaElementsService.set( + withTwitterCardNameAttribute(KEY), + withContentAttribute( + (site as TwitterCardSiteUsername | undefined | null)?.username, + ), + ) + metaElementsService.set( + withTwitterCardNameAttribute(KEY, 'id'), + withContentAttribute( + (site as TwitterCardSiteId | undefined | null)?.id, + ), + ) + }, + ), + ) + +/** + * {@inheritDoc provideTwitterCardSite} + * @deprecated Use {@link provideTwitterCardSite} instead + * @public + */ +export const TWITTER_CARD_SITE_METADATA_PROVIDER = + /* @__PURE__ */ + provideTwitterCardSite() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-title.ts b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-title.ts new file mode 100644 index 00000000..7eabfb94 --- /dev/null +++ b/projects/ngx-meta/src/twitter-card/src/managers/provide-twitter-card-title.ts @@ -0,0 +1,21 @@ +import { + _GLOBAL_TITLE, + _withModuleManagerSameGlobalKey, +} from '@davidlj95/ngx-meta/core' +import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' + +/** + * Manages the {@link TwitterCard.title} metadata + * @public + */ +export const provideTwitterCardTitle = () => + provideTwitterCardManager(_GLOBAL_TITLE, _withModuleManagerSameGlobalKey()) + +/** + * {@inheritDoc provideTwitterCardTitle} + * @deprecated Use {@link provideTwitterCardTitle} instead + * @public + */ +export const TWITTER_CARD_TITLE_METADATA_PROVIDER = + /* @__PURE__ */ + provideTwitterCardTitle() diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-card-metadata-provider.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-card-metadata-provider.ts deleted file mode 100644 index e2558dd1..00000000 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-card-metadata-provider.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' - -/** - * Manages the {@link TwitterCard.card} metadata - * @public - */ -export const TWITTER_CARD_CARD_METADATA_PROVIDER = - provideTwitterCardManager('card') diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator-metadata-provider.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator-metadata-provider.ts deleted file mode 100644 index 591911c6..00000000 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator-metadata-provider.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TwitterCard } from '../types' -import { - TwitterCardCreatorId, - TwitterCardCreatorUsername, -} from './twitter-card-creator' -import { - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, -} from '@davidlj95/ngx-meta/core' -import { withTwitterCardNameAttribute } from '../utils/with-twitter-card-name-attribute' -import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' - -const KEY = 'creator' satisfies keyof TwitterCard - -/** - * Manages the {@link TwitterCard.creator} metadata - * @public - */ -export const TWITTER_CARD_CREATOR_METADATA_PROVIDER = provideTwitterCardManager( - KEY, - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (creator) => { - metaElementsService.set( - withTwitterCardNameAttribute(KEY), - withContentAttribute( - (creator as TwitterCardCreatorUsername | undefined | null)?.username, - ), - ) - metaElementsService.set( - withTwitterCardNameAttribute(KEY, 'id'), - withContentAttribute( - (creator as TwitterCardCreatorId | undefined | null)?.id, - ), - ) - }, - ), -) diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator-username.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator-username.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator.ts index d047eb3b..e2def652 100644 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator.ts +++ b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-creator.ts @@ -7,7 +7,7 @@ * * Provider: * - * {@link TWITTER_CARD_CREATOR_METADATA_PROVIDER} + * {@link provideTwitterCardCreator} * * See also: * diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image-metadata-provider.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image-metadata-provider.ts deleted file mode 100644 index 17f1f7eb..00000000 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image-metadata-provider.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { - _GLOBAL_IMAGE, - _maybeNonHttpUrlDevMessage, - _withModuleManagerSameGlobalKey, - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, - withManagerObjectMerging, -} from '@davidlj95/ngx-meta/core' -import { MODULE_NAME } from '../module-name' -import { withTwitterCardNameAttribute } from '../utils/with-twitter-card-name-attribute' -import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' - -/** - * Manages the {@link TwitterCard.image} metadata - * @public - */ -export const TWITTER_CARD_IMAGE_METADATA_PROVIDER = provideTwitterCardManager( - _GLOBAL_IMAGE, - _withModuleManagerSameGlobalKey(), - withManagerObjectMerging(), - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (image) => { - /* istanbul ignore next https://github.com/istanbuljs/istanbuljs/issues/719 */ - if (ngDevMode) { - _maybeNonHttpUrlDevMessage(image?.url, { - module: MODULE_NAME, - property: 'image', - value: image?.url.toString(), - link: 'https://devcommunity.x.com/t/card-error-unable-to-render-or-no-image-read-this-first/62736', - }) - } - metaElementsService.set( - withTwitterCardNameAttribute(_GLOBAL_IMAGE), - withContentAttribute(image?.url?.toString()), - ) - metaElementsService.set( - withTwitterCardNameAttribute(_GLOBAL_IMAGE, 'alt'), - withContentAttribute(image?.alt), - ) - }, - ), -) diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image.ts index 0bb44376..fac2ff57 100644 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image.ts +++ b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-image.ts @@ -11,7 +11,7 @@ * * Provider: * - * {@link TWITTER_CARD_IMAGE_METADATA_PROVIDER} + * {@link provideTwitterCardImage} * * See also: * diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site-metadata-provider.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site-metadata-provider.ts deleted file mode 100644 index f3f94e98..00000000 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site-metadata-provider.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { TwitterCard } from '../types' -import { TwitterCardSiteId, TwitterCardSiteUsername } from './twitter-card-site' -import { - _withModuleManagerSetterFactory, - NgxMetaElementsService, - withContentAttribute, -} from '@davidlj95/ngx-meta/core' -import { withTwitterCardNameAttribute } from '../utils/with-twitter-card-name-attribute' -import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' - -const KEY = 'site' satisfies keyof TwitterCard - -/** - * Manages the {@link TwitterCard.site} metadata - * @public - */ -export const TWITTER_CARD_SITE_METADATA_PROVIDER = provideTwitterCardManager( - KEY, - _withModuleManagerSetterFactory( - (metaElementsService: NgxMetaElementsService) => (site) => { - metaElementsService.set( - withTwitterCardNameAttribute(KEY), - withContentAttribute( - (site as TwitterCardSiteUsername | undefined | null)?.username, - ), - ) - metaElementsService.set( - withTwitterCardNameAttribute(KEY, 'id'), - withContentAttribute( - (site as TwitterCardSiteId | undefined | null)?.id, - ), - ) - }, - ), -) diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site.ts index 696d58d3..287f3012 100644 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site.ts +++ b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-site.ts @@ -9,7 +9,7 @@ * * Provider: * - * {@link TWITTER_CARD_SITE_METADATA_PROVIDER} + * {@link provideTwitterCardSite} * * See also: * diff --git a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-title-metadata-provider.ts b/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-title-metadata-provider.ts deleted file mode 100644 index 9aead414..00000000 --- a/projects/ngx-meta/src/twitter-card/src/managers/twitter-card-title-metadata-provider.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - _GLOBAL_TITLE, - _withModuleManagerSameGlobalKey, -} from '@davidlj95/ngx-meta/core' -import { provideTwitterCardManager } from '../utils/provide-twitter-card-manager' - -/** - * Manages the {@link TwitterCard.title} metadata - * @public - */ -export const TWITTER_CARD_TITLE_METADATA_PROVIDER = provideTwitterCardManager( - _GLOBAL_TITLE, - _withModuleManagerSameGlobalKey(), -) diff --git a/projects/ngx-meta/src/twitter-card/src/providers/provide-ngx-meta-twitter-card.ts b/projects/ngx-meta/src/twitter-card/src/providers/provide-ngx-meta-twitter-card.ts index 6580d4ce..d0c30a99 100644 --- a/projects/ngx-meta/src/twitter-card/src/providers/provide-ngx-meta-twitter-card.ts +++ b/projects/ngx-meta/src/twitter-card/src/providers/provide-ngx-meta-twitter-card.ts @@ -1,11 +1,11 @@ import { Provider } from '@angular/core' import { - TWITTER_CARD_CARD_METADATA_PROVIDER, - TWITTER_CARD_CREATOR_METADATA_PROVIDER, - TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER, - TWITTER_CARD_IMAGE_METADATA_PROVIDER, - TWITTER_CARD_SITE_METADATA_PROVIDER, - TWITTER_CARD_TITLE_METADATA_PROVIDER, + provideTwitterCardCard, + provideTwitterCardCreator, + provideTwitterCardDescription, + provideTwitterCardImage, + provideTwitterCardSite, + provideTwitterCardTitle, } from '../managers' /** @@ -20,10 +20,10 @@ import { * @public */ export const provideNgxMetaTwitterCard = (): Provider => [ - TWITTER_CARD_CARD_METADATA_PROVIDER, - TWITTER_CARD_SITE_METADATA_PROVIDER, - TWITTER_CARD_CREATOR_METADATA_PROVIDER, - TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER, - TWITTER_CARD_TITLE_METADATA_PROVIDER, - TWITTER_CARD_IMAGE_METADATA_PROVIDER, + provideTwitterCardCard(), + provideTwitterCardSite(), + provideTwitterCardCreator(), + provideTwitterCardDescription(), + provideTwitterCardTitle(), + provideTwitterCardImage(), ] diff --git a/projects/ngx-meta/src/twitter-card/src/types/twitter-card.ts b/projects/ngx-meta/src/twitter-card/src/types/twitter-card.ts index b0bb7045..a322516b 100644 --- a/projects/ngx-meta/src/twitter-card/src/types/twitter-card.ts +++ b/projects/ngx-meta/src/twitter-card/src/types/twitter-card.ts @@ -28,7 +28,7 @@ export interface TwitterCard { * * Provider: * - * {@link TWITTER_CARD_CARD_METADATA_PROVIDER} + * {@link provideTwitterCardCard} * * See also: * @@ -59,7 +59,7 @@ export interface TwitterCard { * * Provider: * - * {@link TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER} + * {@link provideTwitterCardDescription} * * See also: * @@ -80,7 +80,7 @@ export interface TwitterCard { * * Provider: * - * {@link TWITTER_CARD_TITLE_METADATA_PROVIDER} + * {@link provideTwitterCardTitle} * * See also: *