Skip to content

Commit 7b36ef5

Browse files
authored
feat: improve metadata value types (#194)
1 parent 42eae60 commit 7b36ef5

File tree

8 files changed

+26
-29
lines changed

8 files changed

+26
-29
lines changed

projects/ngx-meta/e2e/a15/src/app/meta-set-by-route-and-service/meta-set-by-route-and-service.component.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, OnInit } from '@angular/core'
2-
import { MetadataService, MetadataValues } from '@davidlj95/ngx-meta/core'
2+
import { MetadataService } from '@davidlj95/ngx-meta/core'
33
import { ActivatedRoute } from '@angular/router'
44
import {
55
OPEN_GRAPH_TYPE_BOOK,
@@ -42,8 +42,6 @@ export class MetaSetByRouteAndServiceComponent implements OnInit {
4242
}
4343

4444
ngOnInit(): void {
45-
this.metadataService.set(
46-
this.overriddenMetadata as unknown as MetadataValues,
47-
)
45+
this.metadataService.set(this.overriddenMetadata)
4846
}
4947
}

projects/ngx-meta/e2e/a16/src/app/meta-set-by-route-and-service/meta-set-by-route-and-service.component.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, OnInit } from '@angular/core'
2-
import { MetadataService, MetadataValues } from '@davidlj95/ngx-meta/core'
2+
import { MetadataService } from '@davidlj95/ngx-meta/core'
33
import { ActivatedRoute } from '@angular/router'
44
import {
55
OPEN_GRAPH_TYPE_BOOK,
@@ -42,8 +42,6 @@ export class MetaSetByRouteAndServiceComponent implements OnInit {
4242
}
4343

4444
ngOnInit(): void {
45-
this.metadataService.set(
46-
this.overriddenMetadata as unknown as MetadataValues,
47-
)
45+
this.metadataService.set(this.overriddenMetadata)
4846
}
4947
}

projects/ngx-meta/e2e/a17/src/app/meta-set-by-route-and-service/meta-set-by-route-and-service.component.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, OnInit } from '@angular/core'
2-
import { MetadataService, MetadataValues } from '@davidlj95/ngx-meta/core'
2+
import { MetadataService } from '@davidlj95/ngx-meta/core'
33
import { JsonPipe } from '@angular/common'
44
import { ActivatedRoute } from '@angular/router'
55
import {
@@ -45,8 +45,6 @@ export class MetaSetByRouteAndServiceComponent implements OnInit {
4545
}
4646

4747
ngOnInit(): void {
48-
this.metadataService.set(
49-
this.overriddenMetadata as unknown as MetadataValues,
50-
)
48+
this.metadataService.set(this.overriddenMetadata)
5149
}
5250
}

projects/ngx-meta/src/core/src/metadata-json-resolver.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,23 @@ import { Injectable } from '@angular/core'
66

77
@Injectable({ providedIn: 'root' })
88
export class MetadataJsonResolver {
9-
get<T>(definition: Metadata, values?: MetadataValues): T | undefined {
9+
get<T>(metadata: Metadata, values?: MetadataValues): T | undefined {
1010
if (values === undefined) {
1111
return
1212
}
1313

14-
const keys = [...definition.jsonPath]
14+
const keys = [...metadata.jsonPath]
1515
let value: unknown = values
1616
for (const key of keys) {
1717
if (value === undefined || value === null) {
1818
break
1919
}
20-
value = (value as MetadataValues)[key]
20+
value = (value as IndexedObject)[key]
2121
}
2222
const globalValue =
23-
definition.global !== undefined ? values[definition.global] : undefined
23+
metadata.global !== undefined
24+
? (values as IndexedObject)[metadata.global]
25+
: undefined
2426
if (value !== undefined && !globalValue) {
2527
return value as MaybeUndefined<T>
2628
}
@@ -33,3 +35,5 @@ export class MetadataJsonResolver {
3335
return globalValue as MaybeUndefined<T>
3436
}
3537
}
38+
39+
type IndexedObject = Record<string, unknown>
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
export interface MetadataValues {
2-
[key: string]: unknown
3-
}
1+
export type MetadataValues = object

projects/ngx-meta/src/core/src/route-metadata-values.spec.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import { RouteMetadataValues } from './route-metadata-values'
44
import { enableAutoSpy } from '../../__tests__/enable-auto-spy'
55
import { MockProviders } from 'ng-mocks'
66
import { Router } from '@angular/router'
7-
import { MetadataValues } from './metadata-values'
87

98
describe('RouteMetadataValues', () => {
109
enableAutoSpy()
1110
let sut: RouteMetadataValues
1211
let router: jasmine.SpyObj<Router>
13-
const dummyValues: MetadataValues = { foo: 'bar' }
12+
const dummyValues = { foo: 'bar' }
1413
const url = '/set-url'
1514

1615
beforeEach(() => {
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { GlobalMetadata, MetadataValues } from '@davidlj95/ngx-meta/core'
1+
import { MetadataValues } from '@davidlj95/ngx-meta/core'
22

3-
export interface MetadataRouteData {
4-
meta: GlobalMetadata & MetadataValues
3+
export interface MetadataRouteData<M = MetadataValues> {
4+
meta: M
55
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { InjectionToken } from '@angular/core'
22
import { ActivatedRouteSnapshot } from '@angular/router'
3+
import { MetadataValues } from '@davidlj95/ngx-meta/core'
34

4-
export type MetadataRouteStrategy = <T>(
5+
export type MetadataRouteStrategy = (
56
activatedRouteSnapshot: ActivatedRouteSnapshot,
6-
) => T | undefined
7+
) => MetadataValues | undefined
78

8-
export const METADATA_ROUTE_STRATEGY = new InjectionToken(
9-
ngDevMode ? 'NgxMeta Metadata Route Strategy' : 'NgxMetaMRS',
10-
)
9+
export const METADATA_ROUTE_STRATEGY =
10+
new InjectionToken<MetadataRouteStrategy>(
11+
ngDevMode ? 'NgxMeta Metadata Route Strategy' : 'NgxMetaMRS',
12+
)

0 commit comments

Comments
 (0)