Skip to content

Commit 5da01f4

Browse files
committed
perf: reduce standard module bundle size
1 parent 5cb7131 commit 5da01f4

30 files changed

+289
-321
lines changed

projects/ngx-meta/src/open-graph/src/open-graph-image-metadata-provider.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { OpenGraphImage } from './open-graph-image'
66
import { OpenGraph } from './open-graph'
77
import { OPEN_GRAPH_IMAGE_SETTER_FACTORY } from './open-graph-image-metadata-provider'
88

9-
describe('Open Graph image metadata', () => {
9+
describe('Open Graph image metadata provider', () => {
1010
enableAutoSpy()
1111
let sut: MetadataSetter<OpenGraph['image']>
1212
let metaService: jasmine.SpyObj<MetaService>

projects/ngx-meta/src/standard/public-api.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ export { StandardModule as NgxMetaStandardModule } from './src/standard.module'
22
export { provideStandard as provideNgxMetaStandardMetadata } from './src/provide-standard'
33
export * from './src/html-lang-attribute/html-lang-attribute.service'
44
export * from './src/link-rel-canonical/link-rel-canonical.service'
5-
export * from './src/standard-metadata-route-data'
6-
// Specific metadata
7-
export * from './src/title-standard-metadata.service'
8-
export * from './src/description-standard-metadata.service'
9-
export * from './src/author-standard-metadata.service'
10-
export * from './src/keywords-standard-metadata.service'
11-
export * from './src/generator-standard-metadata.service'
12-
export * from './src/application-name-standard-metadata.service'
13-
export * from './src/canonical-url-standard-metadata.service'
14-
export * from './src/locale-standard-metadata.service'
5+
export * from './src/standard-metadata'
6+
// Specific providers
7+
export * from './src/standard-title-metadata-provider'
8+
export * from './src/standard-description-metadata-provider'
9+
export * from './src/standard-author-metadata-provider'
10+
export * from './src/standard-keywords-metadata-provider'
11+
export * from './src/standard-generator-metadata-provider'
12+
export * from './src/standard-application-name-metadata-provider'
13+
export * from './src/standard-canonical-url-metadata-provider'
14+
export * from './src/standard-locale-metadata-provider'

projects/ngx-meta/src/standard/src/application-name-standard-metadata.service.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

projects/ngx-meta/src/standard/src/author-standard-metadata.service.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

projects/ngx-meta/src/standard/src/base-standard-metadata.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

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

Lines changed: 0 additions & 21 deletions
This file was deleted.

projects/ngx-meta/src/standard/src/description-standard-metadata.service.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

projects/ngx-meta/src/standard/src/generator-standard-metadata.service.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

projects/ngx-meta/src/standard/src/html-lang-attribute/html-lang-attribute.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { Inject, Injectable } from '@angular/core'
22
import { DOCUMENT } from '@angular/common'
3-
import { StandardMetadata } from '../standard-metadata'
3+
import { Standard } from '../standard'
44

55
@Injectable()
66
export class HtmlLangAttributeService {
77
private readonly attributeName = 'lang'
88

99
constructor(@Inject(DOCUMENT) private readonly document: Document) {}
1010

11-
set(locale: StandardMetadata['locale']) {
11+
set(locale: Standard['locale']) {
1212
const htmlElement = this.document.documentElement
1313
if (locale === null || locale === undefined) {
1414
htmlElement.removeAttribute(this.attributeName)

projects/ngx-meta/src/standard/src/keywords-standard-metadata.service.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

projects/ngx-meta/src/standard/src/link-rel-canonical/link-rel-canonical.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Inject, Injectable } from '@angular/core'
22
import { DOCUMENT } from '@angular/common'
3-
import { StandardMetadata } from '../standard-metadata'
3+
import { Standard } from '../standard'
44

55
/**
66
* Manages the <link rel='canonical'> HTML meta tag
@@ -12,7 +12,7 @@ import { StandardMetadata } from '../standard-metadata'
1212
export class LinkRelCanonicalService {
1313
constructor(@Inject(DOCUMENT) private readonly document: Document) {}
1414

15-
set(url: StandardMetadata['canonicalUrl']) {
15+
set(url: Standard['canonicalUrl']) {
1616
const existingLinkElement = this.getElement()
1717
if (existingLinkElement) {
1818
this.document.head.removeChild(existingLinkElement)

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

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import {
2+
GlobalMetadataKey,
3+
MetadataSetterFactory,
4+
MetaService,
5+
provideMetadataFactory,
6+
StringKeyOf,
7+
} from '@davidlj95/ngx-meta/core'
8+
import { FactoryProvider } from '@angular/core'
9+
import { Standard } from './standard'
10+
import { StandardMetadataDefinition } from './standard-metadata-definition'
11+
import { StandardMetaProperty } from './standard-meta-property'
12+
13+
export const makeStandardMetadataProvider = <Key extends StringKeyOf<Standard>>(
14+
key: Key,
15+
opts: {
16+
// Standard metadata name. Defaults to key
17+
n?: string
18+
// Global key. Defaults to nothing
19+
g?: GlobalMetadataKey
20+
// Setter factory. Defaults to setting the meta name to the given value.
21+
s?: MetadataSetterFactory<Standard[typeof key]>
22+
// Deps for the setter factory
23+
d?: FactoryProvider['deps']
24+
} = {},
25+
): FactoryProvider =>
26+
provideMetadataFactory(
27+
new StandardMetadataDefinition(key, opts.g),
28+
opts.s ??
29+
((metaService) => (value: Standard[typeof key]) =>
30+
metaService.set(new StandardMetaProperty(opts.n ?? key), value)),
31+
[opts.d ?? MetaService],
32+
)
Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
import { Provider } from '@angular/core'
2-
import { provideMetadata } from '@davidlj95/ngx-meta/core'
3-
import { TitleStandardMetadata } from './title-standard-metadata.service'
4-
import { DescriptionStandardMetadata } from './description-standard-metadata.service'
5-
import { AuthorStandardMetadata } from './author-standard-metadata.service'
6-
import { KeywordsStandardMetadata } from './keywords-standard-metadata.service'
7-
import { GeneratorStandardMetadata } from './generator-standard-metadata.service'
8-
import { ApplicationNameStandardMetadata } from './application-name-standard-metadata.service'
9-
import { CanonicalUrlStandardMetadata } from './canonical-url-standard-metadata.service'
102
import { LinkRelCanonicalService } from './link-rel-canonical/link-rel-canonical.service'
11-
import { LocaleStandardMetadata } from './locale-standard-metadata.service'
123
import { HtmlLangAttributeService } from './html-lang-attribute/html-lang-attribute.service'
4+
import { STANDARD_TITLE_METADATA_PROVIDER } from './standard-title-metadata-provider'
5+
import { STANDARD_DESCRIPTION_METADATA_PROVIDER } from './standard-description-metadata-provider'
6+
import { STANDARD_AUTHOR_METADATA_PROVIDER } from './standard-author-metadata-provider'
7+
import { STANDARD_KEYWORDS_METADATA_PROVIDER } from './standard-keywords-metadata-provider'
8+
import { STANDARD_GENERATOR_METADATA_PROVIDER } from './standard-generator-metadata-provider'
9+
import { STANDARD_APPLICATION_NAME_METADATA_PROVIDER } from './standard-application-name-metadata-provider'
10+
import { STANDARD_CANONICAL_URL_METADATA_PROVIDER } from './standard-canonical-url-metadata-provider'
11+
import { STANDARD_LOCALE_METADATA_PROVIDER } from './standard-locale-metadata-provider'
1312

1413
export function provideStandard(): Provider[] {
1514
return [
16-
provideMetadata(TitleStandardMetadata),
17-
provideMetadata(DescriptionStandardMetadata),
18-
provideMetadata(AuthorStandardMetadata),
19-
provideMetadata(KeywordsStandardMetadata),
20-
provideMetadata(GeneratorStandardMetadata),
21-
provideMetadata(ApplicationNameStandardMetadata),
22-
provideMetadata(CanonicalUrlStandardMetadata),
15+
STANDARD_TITLE_METADATA_PROVIDER,
16+
STANDARD_DESCRIPTION_METADATA_PROVIDER,
17+
STANDARD_AUTHOR_METADATA_PROVIDER,
18+
STANDARD_KEYWORDS_METADATA_PROVIDER,
19+
STANDARD_GENERATOR_METADATA_PROVIDER,
20+
STANDARD_APPLICATION_NAME_METADATA_PROVIDER,
21+
STANDARD_CANONICAL_URL_METADATA_PROVIDER,
2322
LinkRelCanonicalService,
24-
provideMetadata(LocaleStandardMetadata),
23+
STANDARD_LOCALE_METADATA_PROVIDER,
2524
HtmlLangAttributeService,
2625
]
2726
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
2+
import { Standard } from './standard'
3+
4+
const KEY: keyof Standard = 'applicationName'
5+
6+
export const STANDARD_APPLICATION_NAME_METADATA_PROVIDER =
7+
makeStandardMetadataProvider(KEY, { g: KEY, n: 'application-name' })
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
2+
import { Standard } from './standard'
3+
4+
const KEY: keyof Standard = 'author'
5+
6+
export const STANDARD_AUTHOR_METADATA_PROVIDER =
7+
makeStandardMetadataProvider(KEY)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
2+
import { Standard } from './standard'
3+
import { LinkRelCanonicalService } from './link-rel-canonical/link-rel-canonical.service'
4+
5+
const KEY: keyof Standard = 'canonicalUrl'
6+
7+
export const STANDARD_CANONICAL_URL_METADATA_PROVIDER =
8+
makeStandardMetadataProvider(KEY, {
9+
g: KEY,
10+
s: (linkRelCanonicalService: LinkRelCanonicalService) => (value) =>
11+
linkRelCanonicalService.set(value),
12+
d: [LinkRelCanonicalService],
13+
})
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { makeStandardMetadataProvider } from './make-standard-metadata-provider'
2+
import { Standard } from './standard'
3+
4+
const KEY: keyof Standard = 'description'
5+
6+
export const STANDARD_DESCRIPTION_METADATA_PROVIDER =
7+
makeStandardMetadataProvider(KEY, { g: KEY })

0 commit comments

Comments
 (0)