Skip to content

Commit

Permalink
refactor: use lazy injection token for head utility
Browse files Browse the repository at this point in the history
  • Loading branch information
davidlj95 committed Oct 9, 2024
1 parent 25d1323 commit e8b541b
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 29 deletions.
4 changes: 2 additions & 2 deletions projects/ngx-meta/api-extractor/ngx-meta.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,10 @@ export interface GlobalMetadataImage {
}

// @internal (undocumented)
export const _HEAD_ELEMENT_UPSERT_OR_REMOVE: InjectionToken<_HeadElementUpsertOrRemove>;
export type _HeadElementUpsertOrRemove = (selector: string, element: HTMLElement | null | undefined) => void;

// @internal (undocumented)
export type _HeadElementUpsertOrRemove = (selector: string, element: HTMLElement | null | undefined) => void;
export const _headElementUpsertOrRemove: _LazyInjectionToken<_HeadElementUpsertOrRemove>;

// @internal (undocumented)
export const _injectMetadataManagers: () => ReadonlyArray<NgxMetaMetadataManager>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'
import { HeadElementHarness } from './__tests__/head-element-harness'
import { DOCUMENT } from '@angular/common'
import {
_HEAD_ELEMENT_UPSERT_OR_REMOVE,
_headElementUpsertOrRemove,
_HeadElementUpsertOrRemove,
} from './head-element-upsert-or-remove'

Expand Down Expand Up @@ -95,5 +95,5 @@ describe('Head element upsert or remove', () => {

function makeSut() {
TestBed.configureTestingModule({})
return TestBed.inject(_HEAD_ELEMENT_UPSERT_OR_REMOVE)
return TestBed.inject(_headElementUpsertOrRemove())
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
import { inject, InjectionToken } from '@angular/core'
import { inject } from '@angular/core'
import { DOCUMENT } from '@angular/common'
import { _isDefined } from '../utils'
import { _isDefined, _LazyInjectionToken, _makeInjectionToken } from '../utils'

/**
* @internal
*/
export const _HEAD_ELEMENT_UPSERT_OR_REMOVE =
new InjectionToken<_HeadElementUpsertOrRemove>(
ngDevMode ? 'NgxMeta head element upsert or remove util' : 'NgxMetaHEUOR',
{
factory: () => {
const head = inject(DOCUMENT).head
return (selector: string, element: HTMLElement | null | undefined) => {
const existingScriptElement = head.querySelector(selector)
if (existingScriptElement) {
head.removeChild(existingScriptElement)
}
export const _headElementUpsertOrRemove: _LazyInjectionToken<
_HeadElementUpsertOrRemove
> = () =>
_makeInjectionToken(
ngDevMode ? 'Head element upsert or remove util' : 'HEUOR',
() => {
const head = inject(DOCUMENT).head
return (selector, element) => {
const existingScriptElement = head.querySelector(selector)
if (existingScriptElement) {
head.removeChild(existingScriptElement)
}

if (!_isDefined(element)) {
return
}
head.appendChild(element)
if (!_isDefined(element)) {
return
}
},
head.appendChild(element)
}
},
)

Expand Down
2 changes: 1 addition & 1 deletion projects/ngx-meta/src/core/src/head-elements/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export {
_HEAD_ELEMENT_UPSERT_OR_REMOVE,
_headElementUpsertOrRemove,
_HeadElementUpsertOrRemove,
} from './head-element-upsert-or-remove'
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { DOCUMENT } from '@angular/common'
import {
_HEAD_ELEMENT_UPSERT_OR_REMOVE,
_headElementUpsertOrRemove,
_HeadElementUpsertOrRemove,
_isDefined,
makeMetadataManagerProviderFromSetterFactory,
Expand Down Expand Up @@ -33,7 +33,7 @@ export const JSON_LD_METADATA_PROVIDER =
makeMetadataManagerProviderFromSetterFactory(
JSON_LD_METADATA_SETTER_FACTORY,
{
d: [_HEAD_ELEMENT_UPSERT_OR_REMOVE, DOCUMENT],
d: [_headElementUpsertOrRemove(), DOCUMENT],
jP: [KEY],
},
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { enableAutoSpy } from '@/ngx-meta/test/enable-auto-spy'
import {
_HEAD_ELEMENT_UPSERT_OR_REMOVE,
_headElementUpsertOrRemove,
_HeadElementUpsertOrRemove,
_URL_RESOLVER,
_UrlResolver,
Expand Down Expand Up @@ -105,7 +105,7 @@ const makeSut = (
TestBed.configureTestingModule({
providers: [
{
provide: _HEAD_ELEMENT_UPSERT_OR_REMOVE,
provide: _headElementUpsertOrRemove(),
useValue:
opts.headElementUpsertOrRemove ??
jasmine.createSpy('Head element upsert or remove'),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { makeStandardMetadataProvider } from '../utils/make-standard-metadata-provider'
import {
_GLOBAL_CANONICAL_URL,
_HEAD_ELEMENT_UPSERT_OR_REMOVE,
_headElementUpsertOrRemove,
_HeadElementUpsertOrRemove,
_isDefined,
_maybeNonHttpUrlDevMessage,
Expand Down Expand Up @@ -45,7 +45,7 @@ export const STANDARD_CANONICAL_URL_METADATA_PROVIDER =
makeStandardMetadataProvider(_GLOBAL_CANONICAL_URL, {
g: _GLOBAL_CANONICAL_URL,
s: STANDARD_CANONICAL_URL_SETTER_FACTORY,
d: [_HEAD_ELEMENT_UPSERT_OR_REMOVE, DOCUMENT, _URL_RESOLVER],
d: [_headElementUpsertOrRemove(), DOCUMENT, _URL_RESOLVER],
})

const LINK_TAG = 'link'
Expand Down

0 comments on commit e8b541b

Please sign in to comment.