Skip to content

Commit 2544fac

Browse files
committed
perf: add global consts to reduce dup strings
1 parent 8e75ec0 commit 2544fac

16 files changed

+74
-70
lines changed

projects/ngx-meta/src/core/src/global-metadata.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { GlobalMetadataImage } from './global-metadata-image'
2+
import { GlobalMetadataKey } from './global-metadata-key'
23

34
export interface GlobalMetadata {
45
/**
@@ -69,11 +70,13 @@ export interface GlobalMetadata {
6970
* image if you want to customize those too.
7071
*/
7172
readonly image?: GlobalMetadataImage | null
72-
73-
/**
74-
* JSON-LD object to set in the page
75-
*
76-
* Needs JSON-LD module to be imported
77-
*/
78-
readonly jsonLd?: object | null
7973
}
74+
75+
export const GLOBAL_TITLE = 'title' satisfies GlobalMetadataKey
76+
export const GLOBAL_DESCRIPTION = 'description' satisfies GlobalMetadataKey
77+
export const GLOBAL_APPLICATION_NAME =
78+
'applicationName' satisfies GlobalMetadataKey
79+
80+
export const GLOBAL_CANONICAL_URL = 'canonicalUrl' satisfies GlobalMetadataKey
81+
export const GLOBAL_LOCALE = 'locale' satisfies GlobalMetadataKey
82+
export const GLOBAL_IMAGE = 'image' satisfies GlobalMetadataKey

projects/ngx-meta/src/json-ld/src/json-ld-metadata-provider.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { DOCUMENT } from '@angular/common'
22
import {
3-
GlobalMetadata,
43
HEAD_ELEMENT_UPSERT_OR_REMOVE,
54
HeadElementUpsertOrRemove,
6-
makeGlobalMetadata,
5+
makeMetadata,
76
MetadataSetterFactory,
87
provideMetadataFactory,
98
} from '@davidlj95/ngx-meta/core'
9+
import { JsonLdMetadata } from './json-ld-metadata'
1010

11-
const KEY: keyof GlobalMetadata = 'jsonLd'
11+
const KEY: keyof JsonLdMetadata = 'jsonLd'
1212
const SCRIPT_TYPE = 'application/ld+json'
1313

1414
export const JSON_LD_METADATA_SETTER_FACTORY: MetadataSetterFactory<
15-
GlobalMetadata[typeof KEY]
15+
JsonLdMetadata[typeof KEY]
1616
> =
1717
(headElementUpsertOrRemove: HeadElementUpsertOrRemove, doc: Document) =>
1818
(jsonLd) => {
@@ -26,7 +26,7 @@ export const JSON_LD_METADATA_SETTER_FACTORY: MetadataSetterFactory<
2626
}
2727

2828
export const JSON_LD_METADATA_PROVIDER = provideMetadataFactory(
29-
makeGlobalMetadata('jsonLd'),
29+
makeMetadata([KEY]),
3030
JSON_LD_METADATA_SETTER_FACTORY,
3131
[HEAD_ELEMENT_UPSERT_OR_REMOVE, DOCUMENT],
3232
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export interface JsonLdMetadata {
2+
/**
3+
* JSON-LD object to set in the page
4+
*/
5+
readonly jsonLd?: object | null
6+
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { makeOpenGraphMetadataProvider } from './make-open-graph-metadata-provider'
2-
import { OpenGraph } from './open-graph'
3-
4-
const KEY: keyof OpenGraph = 'description'
2+
import { GLOBAL_DESCRIPTION } from '@davidlj95/ngx-meta/core'
53

64
export const OPEN_GRAPH_DESCRIPTION_METADATA_PROVIDER =
7-
makeOpenGraphMetadataProvider(KEY, { g: KEY })
5+
makeOpenGraphMetadataProvider(GLOBAL_DESCRIPTION, { g: GLOBAL_DESCRIPTION })
Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { OpenGraph } from './open-graph'
2-
import { MetaService } from '@davidlj95/ngx-meta/core'
2+
import { GLOBAL_IMAGE, MetaService } from '@davidlj95/ngx-meta/core'
33
import { makeOpenGraphMetadataProvider } from './make-open-graph-metadata-provider'
44
import { makeOpenGraphMetaProperty } from './make-open-graph-meta-property'
55

6-
const KEY: keyof OpenGraph = 'image'
7-
const NO_KEY_VALUE: OpenGraph[typeof KEY] = {
6+
const NO_KEY_VALUE: OpenGraph[typeof GLOBAL_IMAGE] = {
87
url: undefined,
98
alt: undefined,
109
secureUrl: null,
@@ -14,30 +13,33 @@ const NO_KEY_VALUE: OpenGraph[typeof KEY] = {
1413
}
1514

1615
export const OPEN_GRAPH_IMAGE_SETTER_FACTORY =
17-
(metaService: MetaService) => (value: OpenGraph[typeof KEY]) => {
16+
(metaService: MetaService) => (value: OpenGraph[typeof GLOBAL_IMAGE]) => {
1817
const imageUrl = value?.url?.toString()
19-
const effectiveValue: OpenGraph[typeof KEY] =
18+
const effectiveValue: OpenGraph[typeof GLOBAL_IMAGE] =
2019
imageUrl !== undefined && imageUrl !== null ? value : NO_KEY_VALUE
21-
metaService.set(makeOpenGraphMetaProperty(KEY), imageUrl)
22-
metaService.set(makeOpenGraphMetaProperty(KEY, 'alt'), effectiveValue?.alt)
20+
metaService.set(makeOpenGraphMetaProperty(GLOBAL_IMAGE), imageUrl)
2321
metaService.set(
24-
makeOpenGraphMetaProperty(KEY, 'secure_url'),
22+
makeOpenGraphMetaProperty(GLOBAL_IMAGE, 'alt'),
23+
effectiveValue?.alt,
24+
)
25+
metaService.set(
26+
makeOpenGraphMetaProperty(GLOBAL_IMAGE, 'secure_url'),
2527
effectiveValue?.secureUrl?.toString(),
2628
)
2729
metaService.set(
28-
makeOpenGraphMetaProperty(KEY, 'type'),
30+
makeOpenGraphMetaProperty(GLOBAL_IMAGE, 'type'),
2931
effectiveValue?.type,
3032
)
3133
metaService.set(
32-
makeOpenGraphMetaProperty(KEY, 'width'),
34+
makeOpenGraphMetaProperty(GLOBAL_IMAGE, 'width'),
3335
effectiveValue?.width?.toString(),
3436
)
3537
metaService.set(
36-
makeOpenGraphMetaProperty(KEY, 'height'),
38+
makeOpenGraphMetaProperty(GLOBAL_IMAGE, 'height'),
3739
effectiveValue?.height?.toString(),
3840
)
3941
}
4042
export const OPEN_GRAPH_IMAGE_METADATA_PROVIDER = makeOpenGraphMetadataProvider(
41-
KEY,
42-
{ s: OPEN_GRAPH_IMAGE_SETTER_FACTORY, g: KEY },
43+
GLOBAL_IMAGE,
44+
{ s: OPEN_GRAPH_IMAGE_SETTER_FACTORY, g: GLOBAL_IMAGE },
4345
)
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { makeOpenGraphMetadataProvider } from './make-open-graph-metadata-provider'
2-
import { OpenGraph } from './open-graph'
2+
import { GLOBAL_LOCALE } from '@davidlj95/ngx-meta/core'
33

4-
const key: keyof OpenGraph = 'locale'
54
export const OPEN_GRAPH_LOCALE_METADATA_PROVIDER =
6-
makeOpenGraphMetadataProvider(key, { g: key })
5+
makeOpenGraphMetadataProvider(GLOBAL_LOCALE, { g: GLOBAL_LOCALE })
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { makeOpenGraphMetadataProvider } from './make-open-graph-metadata-provider'
2+
import { GLOBAL_APPLICATION_NAME } from '@davidlj95/ngx-meta/core'
23

34
export const OPEN_GRAPH_SITE_NAME_METADATA_PROVIDER =
45
makeOpenGraphMetadataProvider('siteName', {
5-
g: 'applicationName',
6+
g: GLOBAL_APPLICATION_NAME,
67
p: 'site_name',
78
})
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import { makeOpenGraphMetadataProvider } from './make-open-graph-metadata-provider'
2-
import { OpenGraph } from './open-graph'
3-
4-
const KEY: keyof OpenGraph = 'title'
2+
import { GLOBAL_TITLE } from '@davidlj95/ngx-meta/core'
53

64
export const OPEN_GRAPH_TITLE_METADATA_PROVIDER = makeOpenGraphMetadataProvider(
7-
KEY,
8-
{ g: KEY },
5+
GLOBAL_TITLE,
6+
{ g: GLOBAL_TITLE },
97
)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { makeOpenGraphMetadataProvider } from './make-open-graph-metadata-provider'
2+
import { GLOBAL_CANONICAL_URL } from '@davidlj95/ngx-meta/core'
23

34
export const OPEN_GRAPH_URL_METADATA_PROVIDER = makeOpenGraphMetadataProvider(
45
'url',
5-
{ g: 'canonicalUrl' },
6+
{ g: GLOBAL_CANONICAL_URL },
67
)

projects/ngx-meta/src/standard/src/standard-canonical-url-metadata-provider.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
2-
import { Standard } from './standard'
32
import {
3+
GLOBAL_CANONICAL_URL,
44
HEAD_ELEMENT_UPSERT_OR_REMOVE,
55
HeadElementUpsertOrRemove,
66
} from '@davidlj95/ngx-meta/core'
77
import { DOCUMENT } from '@angular/common'
88

9-
const KEY: keyof Standard = 'canonicalUrl'
109
const LINK_TAG = 'link'
1110
const REL_ATTR = 'rel'
1211
const CANONICAL_VAL = 'canonical'
1312
const SELECTOR = `${LINK_TAG}[${REL_ATTR}='${CANONICAL_VAL}']`
1413

1514
export const STANDARD_CANONICAL_URL_METADATA_PROVIDER =
16-
makeStandardMetadataProvider(KEY, {
17-
g: KEY,
15+
makeStandardMetadataProvider(GLOBAL_CANONICAL_URL, {
16+
g: GLOBAL_CANONICAL_URL,
1817
s:
1918
(headElementUpsertOrRemove: HeadElementUpsertOrRemove, doc: Document) =>
2019
(value) => {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
22
import { Standard } from './standard'
3+
import { GLOBAL_DESCRIPTION } from '@davidlj95/ngx-meta/core'
34

4-
const KEY: keyof Standard = 'description'
5+
const KEY: keyof Standard = GLOBAL_DESCRIPTION
56

67
export const STANDARD_DESCRIPTION_METADATA_PROVIDER =
78
makeStandardMetadataProvider(KEY, { g: KEY })

projects/ngx-meta/src/standard/src/standard-locale-metadata-provider.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
2-
import { Standard } from './standard'
32
import { HtmlLangAttributeService } from './html-lang-attribute/html-lang-attribute.service'
4-
5-
const KEY: keyof Standard = 'locale'
3+
import { GLOBAL_LOCALE } from '@davidlj95/ngx-meta/core'
64

75
export const STANDARD_LOCALE_METADATA_PROVIDER = makeStandardMetadataProvider(
8-
KEY,
6+
GLOBAL_LOCALE,
97
{
10-
g: KEY,
8+
g: GLOBAL_LOCALE,
119
s: (htmlLangAttributeService: HtmlLangAttributeService) => (value) =>
1210
htmlLangAttributeService.set(value),
1311
d: [HtmlLangAttributeService],
Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
22
import { Standard } from './standard'
33
import { Title } from '@angular/platform-browser'
4-
import { MetadataSetterFactory } from '@davidlj95/ngx-meta/core'
5-
6-
const KEY: keyof Standard = 'title'
4+
import { GLOBAL_TITLE, MetadataSetterFactory } from '@davidlj95/ngx-meta/core'
75

86
export const STANDARD_TITLE_METADATA_SETTER_FACTORY: MetadataSetterFactory<
9-
Standard[typeof KEY]
7+
Standard[typeof GLOBAL_TITLE]
108
> = (titleService: Title) => (value) => {
119
if (value === undefined || value === null) {
1210
return
@@ -15,6 +13,6 @@ export const STANDARD_TITLE_METADATA_SETTER_FACTORY: MetadataSetterFactory<
1513
}
1614

1715
export const STANDARD_TITLE_METADATA_PROVIDER = makeStandardMetadataProvider(
18-
KEY,
19-
{ g: KEY, s: STANDARD_TITLE_METADATA_SETTER_FACTORY, d: [Title] },
16+
GLOBAL_TITLE,
17+
{ g: GLOBAL_TITLE, s: STANDARD_TITLE_METADATA_SETTER_FACTORY, d: [Title] },
2018
)
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { makeTwitterCardMetadataProvider } from './make-twitter-card-metadata-provider'
2-
import { TwitterCard } from './twitter-card'
3-
4-
const KEY: keyof TwitterCard = 'description'
2+
import { GLOBAL_DESCRIPTION } from '@davidlj95/ngx-meta/core'
53

64
export const TWITTER_CARD_DESCRIPTION_METADATA_PROVIDER =
7-
makeTwitterCardMetadataProvider(KEY, { g: KEY })
5+
makeTwitterCardMetadataProvider(GLOBAL_DESCRIPTION, { g: GLOBAL_DESCRIPTION })
Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
import { makeTwitterCardMetadataProvider } from './make-twitter-card-metadata-provider'
2-
import { TwitterCard } from './twitter-card'
32
import { makeTwitterCardMetaProperty } from './make-twitter-card-meta-property'
4-
5-
const KEY: keyof TwitterCard = 'image'
3+
import { GLOBAL_IMAGE } from '@davidlj95/ngx-meta/core'
64

75
export const TWITTER_CARD_IMAGE_METADATA_PROVIDER =
8-
makeTwitterCardMetadataProvider(KEY, {
9-
g: KEY,
6+
makeTwitterCardMetadataProvider(GLOBAL_IMAGE, {
7+
g: GLOBAL_IMAGE,
108
s: (metaService) => (value) => {
11-
metaService.set(makeTwitterCardMetaProperty(KEY), value?.url?.toString())
12-
metaService.set(makeTwitterCardMetaProperty(KEY, 'alt'), value?.alt)
9+
metaService.set(
10+
makeTwitterCardMetaProperty(GLOBAL_IMAGE),
11+
value?.url?.toString(),
12+
)
13+
metaService.set(
14+
makeTwitterCardMetaProperty(GLOBAL_IMAGE, 'alt'),
15+
value?.alt,
16+
)
1317
},
1418
})
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { makeTwitterCardMetadataProvider } from './make-twitter-card-metadata-provider'
2-
import { TwitterCard } from './twitter-card'
3-
4-
const KEY: keyof TwitterCard = 'title'
2+
import { GLOBAL_TITLE } from '@davidlj95/ngx-meta/core'
53

64
export const TWITTER_CARD_TITLE_METADATA_PROVIDER =
7-
makeTwitterCardMetadataProvider(KEY, { g: KEY })
5+
makeTwitterCardMetadataProvider(GLOBAL_TITLE, { g: GLOBAL_TITLE })

0 commit comments

Comments
 (0)