From 380897ea4aa4b82d495306a1f9bab1a311605f38 Mon Sep 17 00:00:00 2001 From: splincode Date: Wed, 3 Jul 2024 01:06:01 +0300 Subject: [PATCH] refactor: deprecate some names --- apps/demo/src/app/pages/midi/demo/response.ts | 9 +++++-- libs/audio/src/tokens/audio-context.ts | 9 +++++-- libs/audio/src/tokens/audio-node.ts | 11 ++++++--- .../tokens/audio-worklet-processors-ready.ts | 21 +++++++++------- .../src/tokens/audio-worklet-processors.ts | 9 +++++-- .../audio/src/tokens/audio-worklet-support.ts | 13 ++++++---- libs/audio/src/tokens/constructor-support.ts | 13 ++++++---- .../audio/src/tokens/feedback-coefficients.ts | 9 +++++-- .../src/tokens/feedforward-coefficients.ts | 9 +++++-- libs/audio/src/tokens/media-stream.ts | 9 +++++-- libs/audio/src/tokens/support.ts | 9 +++++-- libs/canvas/src/tokens/canvas-2d-context.ts | 9 +++++-- libs/canvas/src/tokens/canvas-method.ts | 11 ++++++--- libs/canvas/src/tokens/canvas-properties.ts | 11 ++++++--- libs/common/src/tokens/animation-frame.ts | 9 +++++-- libs/common/src/tokens/caches.ts | 9 +++++-- libs/common/src/tokens/crypto.ts | 9 +++++-- libs/common/src/tokens/css.ts | 9 +++++-- libs/common/src/tokens/history.ts | 9 +++++-- libs/common/src/tokens/local-storage.ts | 9 +++++-- libs/common/src/tokens/location.ts | 9 +++++-- libs/common/src/tokens/media-devices.ts | 9 +++++-- libs/common/src/tokens/navigator.ts | 9 +++++-- libs/common/src/tokens/network-information.ts | 13 ++++++---- libs/common/src/tokens/page-visibility.ts | 9 +++++-- libs/common/src/tokens/performance.ts | 9 +++++-- libs/common/src/tokens/screen.ts | 9 +++++-- libs/common/src/tokens/session-storage.ts | 9 +++++-- libs/common/src/tokens/speech-recognition.ts | 22 ++++++++++++----- libs/common/src/tokens/speech-synthesis.ts | 9 +++++-- libs/common/src/tokens/user-agent.ts | 9 +++++-- libs/common/src/tokens/window.ts | 9 +++++-- .../src/tokens/geolocation-options.ts | 9 +++++-- .../src/tokens/geolocation-support.ts | 9 +++++-- libs/geolocation/src/tokens/geolocation.ts | 9 +++++-- .../src/tokens/intersection-root-margin.ts | 17 ++++++++++--- .../src/tokens/intersection-root.ts | 9 +++++-- .../src/tokens/intersection-threshold.ts | 17 ++++++++++--- .../src/tokens/support.ts | 9 +++++-- libs/midi/src/tokens/midi-access.ts | 9 +++++-- libs/midi/src/tokens/midi-input-query.ts | 9 +++++-- libs/midi/src/tokens/midi-input.ts | 9 +++++-- libs/midi/src/tokens/midi-inputs.ts | 9 +++++-- libs/midi/src/tokens/midi-messages.ts | 9 +++++-- libs/midi/src/tokens/midi-output-query.ts | 9 +++++-- libs/midi/src/tokens/midi-output.ts | 9 +++++-- libs/midi/src/tokens/midi-outputs.ts | 9 +++++-- libs/midi/src/tokens/midi-support.ts | 9 +++++-- libs/midi/src/tokens/sysex.ts | 18 ++++++++++---- .../src/tokens/mutation-observer-init.ts | 9 +++++-- libs/notification/src/tokens/support.ts | 9 +++++-- .../src/tokens/payment-methods.ts | 9 +++++-- .../src/tokens/payment-options.ts | 24 ++++++++++++------- .../src/tokens/payment-request-support.ts | 9 +++++-- .../src/tokens/permissions-support.ts | 9 +++++-- libs/permissions/src/tokens/permissions.ts | 9 +++++-- .../src/tokens/resize-option-box.ts | 16 ++++++++++--- libs/resize-observer/src/tokens/support.ts | 9 +++++-- .../speech-recognition-max-alternatives.ts | 9 +++++-- .../src/tokens/speech-recognition-support.ts | 9 +++++-- .../src/tokens/speech-synthesis-support.ts | 9 +++++-- .../src/tokens/speech-synthesis-voices.ts | 9 +++++-- libs/storage/src/tokens/storage-event.ts | 9 +++++-- libs/universal/src/tokens/ssr-location.ts | 9 +++++-- libs/universal/src/tokens/ssr-user-agent.ts | 9 +++++-- 65 files changed, 513 insertions(+), 162 deletions(-) diff --git a/apps/demo/src/app/pages/midi/demo/response.ts b/apps/demo/src/app/pages/midi/demo/response.ts index 36949d50f..1ae036b1e 100644 --- a/apps/demo/src/app/pages/midi/demo/response.ts +++ b/apps/demo/src/app/pages/midi/demo/response.ts @@ -7,8 +7,8 @@ import {AUDIO_CONTEXT} from '@ng-web-apis/audio'; const RESPONSE = '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'; -export const RESPONSE_BUFFER = new InjectionToken>( - '[RESPONSE_BUFFER]: Response', +export const WA_RESPONSE_BUFFER = new InjectionToken>( + '[WA_RESPONSE_BUFFER]: Response', { factory: async () => inject(AUDIO_CONTEXT).decodeAudioData(decode(RESPONSE)), }, @@ -25,3 +25,8 @@ function decode(base64: string): ArrayBuffer { return bytes.buffer; } + +/** + * @deprecated: drop in v5.0, use {@link WA_RESPONSE_BUFFER} + */ +export const RESPONSE_BUFFER = WA_RESPONSE_BUFFER; diff --git a/libs/audio/src/tokens/audio-context.ts b/libs/audio/src/tokens/audio-context.ts index a7c6403d3..e94ab805d 100644 --- a/libs/audio/src/tokens/audio-context.ts +++ b/libs/audio/src/tokens/audio-context.ts @@ -1,9 +1,14 @@ import {InjectionToken} from '@angular/core'; -export const AUDIO_CONTEXT = new InjectionToken( - '[AUDIO_CONTEXT]: Web Audio API context', +export const WA_AUDIO_CONTEXT = new InjectionToken( + '[WA_AUDIO_CONTEXT]: Web Audio API context', { providedIn: 'root', factory: () => new AudioContext(), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_AUDIO_CONTEXT} + */ +export const AUDIO_CONTEXT = WA_AUDIO_CONTEXT; diff --git a/libs/audio/src/tokens/audio-node.ts b/libs/audio/src/tokens/audio-node.ts index 264fbb216..f9f50c3be 100644 --- a/libs/audio/src/tokens/audio-node.ts +++ b/libs/audio/src/tokens/audio-node.ts @@ -1,8 +1,8 @@ import type {ExistingProvider, Type} from '@angular/core'; import {InjectionToken} from '@angular/core'; -export const AUDIO_NODE = new InjectionToken( - '[AUDIO_NODE]: Web Audio API audio node', +export const WA_AUDIO_NODE = new InjectionToken( + '[WA_AUDIO_NODE]: Web Audio API audio node', { factory: () => null, }, @@ -10,7 +10,12 @@ export const AUDIO_NODE = new InjectionToken( export function asAudioNode(useExisting: Type): ExistingProvider { return { - provide: AUDIO_NODE, + provide: WA_AUDIO_NODE, useExisting, }; } + +/** + * @deprecated: drop in v5.0, use {@link WA_AUDIO_NODE} + */ +export const AUDIO_NODE = WA_AUDIO_NODE; diff --git a/libs/audio/src/tokens/audio-worklet-processors-ready.ts b/libs/audio/src/tokens/audio-worklet-processors-ready.ts index 9e343c0f4..1bb0345ce 100644 --- a/libs/audio/src/tokens/audio-worklet-processors-ready.ts +++ b/libs/audio/src/tokens/audio-worklet-processors-ready.ts @@ -1,18 +1,18 @@ import {inject, InjectionToken} from '@angular/core'; -import {AUDIO_CONTEXT} from './audio-context'; -import {AUDIO_WORKLET_PROCESSORS} from './audio-worklet-processors'; -import {AUDIO_WORKLET_SUPPORT} from './audio-worklet-support'; +import {WA_AUDIO_CONTEXT} from './audio-context'; +import {WA_AUDIO_WORKLET_PROCESSORS} from './audio-worklet-processors'; +import {WA_AUDIO_WORKLET_SUPPORT} from './audio-worklet-support'; -export const AUDIO_WORKLET_PROCESSORS_READY = new InjectionToken>( - '[AUDIO_WORKLET_PROCESSORS_READY]: Web Audio API worklet processors resolution promise', +export const WA_AUDIO_WORKLET_PROCESSORS_READY = new InjectionToken>( + '[WA_AUDIO_WORKLET_PROCESSORS_READY]: Web Audio API worklet processors resolution promise', { providedIn: 'root', factory: async () => { - const context = inject(AUDIO_CONTEXT); - const processors = inject(AUDIO_WORKLET_PROCESSORS); + const context = inject(WA_AUDIO_CONTEXT); + const processors = inject(WA_AUDIO_WORKLET_PROCESSORS); - if (!inject(AUDIO_WORKLET_SUPPORT)) { + if (!inject(WA_AUDIO_WORKLET_SUPPORT)) { // eslint-disable-next-line no-restricted-syntax,prefer-promise-reject-errors return Promise.reject('AudioWorklet is not supported').catch(() => false); } @@ -26,3 +26,8 @@ export const AUDIO_WORKLET_PROCESSORS_READY = new InjectionToken( - '[AUDIO_WORKLET_PROCESSORS]: Web Audio API worklet processors paths', +export const WA_AUDIO_WORKLET_PROCESSORS = new InjectionToken( + '[WA_AUDIO_WORKLET_PROCESSORS]: Web Audio API worklet processors paths', { providedIn: 'root', factory: () => [], }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_AUDIO_WORKLET_PROCESSORS} + */ +export const AUDIO_WORKLET_PROCESSORS = WA_AUDIO_WORKLET_PROCESSORS; diff --git a/libs/audio/src/tokens/audio-worklet-support.ts b/libs/audio/src/tokens/audio-worklet-support.ts index 62b127f01..1a6809090 100644 --- a/libs/audio/src/tokens/audio-worklet-support.ts +++ b/libs/audio/src/tokens/audio-worklet-support.ts @@ -1,10 +1,15 @@ import {inject, InjectionToken} from '@angular/core'; -import {AUDIO_CONTEXT} from './audio-context'; +import {WA_AUDIO_CONTEXT} from './audio-context'; -export const AUDIO_WORKLET_SUPPORT = new InjectionToken( - '[AUDIO_WORKLET_SUPPORT]: AudioWorklet browser support', +export const WA_AUDIO_WORKLET_SUPPORT = new InjectionToken( + '[WA_AUDIO_WORKLET_SUPPORT]: AudioWorklet browser support', { - factory: () => !!inject(AUDIO_CONTEXT).audioWorklet, + factory: () => !!inject(WA_AUDIO_CONTEXT).audioWorklet, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_AUDIO_WORKLET_SUPPORT} + */ +export const AUDIO_WORKLET_SUPPORT = WA_AUDIO_WORKLET_SUPPORT; diff --git a/libs/audio/src/tokens/constructor-support.ts b/libs/audio/src/tokens/constructor-support.ts index 47baf5702..b0191be7d 100644 --- a/libs/audio/src/tokens/constructor-support.ts +++ b/libs/audio/src/tokens/constructor-support.ts @@ -1,20 +1,25 @@ import {inject, InjectionToken} from '@angular/core'; -import {AUDIO_CONTEXT} from './audio-context'; +import {WA_AUDIO_CONTEXT} from './audio-context'; /** * This is mostly for internal use only */ -export const CONSTRUCTOR_SUPPORT = new InjectionToken( - '[CONSTRUCTOR_SUPPORT]: Tests if constructor mode of node creation is supported or a fallback to factory method is needed', +export const WA_CONSTRUCTOR_SUPPORT = new InjectionToken( + '[WA_CONSTRUCTOR_SUPPORT]: Tests if constructor mode of node creation is supported or a fallback to factory method is needed', { providedIn: 'root', factory: () => { try { - return !!new GainNode(inject(AUDIO_CONTEXT)); + return !!new GainNode(inject(WA_AUDIO_CONTEXT)); } catch (_) { return false; } }, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_CONSTRUCTOR_SUPPORT} + */ +export const CONSTRUCTOR_SUPPORT = WA_CONSTRUCTOR_SUPPORT; diff --git a/libs/audio/src/tokens/feedback-coefficients.ts b/libs/audio/src/tokens/feedback-coefficients.ts index 15226e082..2a198f7d0 100644 --- a/libs/audio/src/tokens/feedback-coefficients.ts +++ b/libs/audio/src/tokens/feedback-coefficients.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const FEEDBACK_COEFFICIENTS = new InjectionToken( - '[FEEDBACK_COEFFICIENTS]: A sequence of feedback coefficients for IIRFilterNode', +export const WA_FEEDBACK_COEFFICIENTS = new InjectionToken( + '[WA_FEEDBACK_COEFFICIENTS]: A sequence of feedback coefficients for IIRFilterNode', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_FEEDBACK_COEFFICIENTS} + */ +export const FEEDBACK_COEFFICIENTS = WA_FEEDBACK_COEFFICIENTS; diff --git a/libs/audio/src/tokens/feedforward-coefficients.ts b/libs/audio/src/tokens/feedforward-coefficients.ts index 9e8b1ba19..817c4bf46 100644 --- a/libs/audio/src/tokens/feedforward-coefficients.ts +++ b/libs/audio/src/tokens/feedforward-coefficients.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const FEEDFORWARD_COEFFICIENTS = new InjectionToken( - '[FEEDFORWARD_COEFFICIENTS]: A sequence of feedforward coefficients for IIRFilterNode', +export const WA_FEEDFORWARD_COEFFICIENTS = new InjectionToken( + '[WA_FEEDFORWARD_COEFFICIENTS]: A sequence of feedforward coefficients for IIRFilterNode', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_FEEDFORWARD_COEFFICIENTS} + */ +export const FEEDFORWARD_COEFFICIENTS = WA_FEEDFORWARD_COEFFICIENTS; diff --git a/libs/audio/src/tokens/media-stream.ts b/libs/audio/src/tokens/media-stream.ts index 2e99b99b8..776282327 100644 --- a/libs/audio/src/tokens/media-stream.ts +++ b/libs/audio/src/tokens/media-stream.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const MEDIA_STREAM = new InjectionToken( - '[MEDIA_STREAM]: MediaStream for MediaStreamAudioSourceNode', +export const WA_MEDIA_STREAM = new InjectionToken( + '[WA_MEDIA_STREAM]: MediaStream for MediaStreamAudioSourceNode', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MEDIA_STREAM} + */ +export const MEDIA_STREAM = WA_MEDIA_STREAM; diff --git a/libs/audio/src/tokens/support.ts b/libs/audio/src/tokens/support.ts index 69d44998b..cf942afe9 100644 --- a/libs/audio/src/tokens/support.ts +++ b/libs/audio/src/tokens/support.ts @@ -1,9 +1,14 @@ import {InjectionToken} from '@angular/core'; -export const WEB_AUDIO_SUPPORT = new InjectionToken( - '[WEB_AUDIO_SUPPORT]: Web Audio API support', +export const WA_WEB_AUDIO_SUPPORT = new InjectionToken( + '[WA_WEB_AUDIO_SUPPORT]: Web Audio API support', { providedIn: 'root', factory: () => !!AudioContext, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_WEB_AUDIO_SUPPORT} + */ +export const WEB_AUDIO_SUPPORT = WA_WEB_AUDIO_SUPPORT; diff --git a/libs/canvas/src/tokens/canvas-2d-context.ts b/libs/canvas/src/tokens/canvas-2d-context.ts index a7cb41d2f..b353bdf7a 100644 --- a/libs/canvas/src/tokens/canvas-2d-context.ts +++ b/libs/canvas/src/tokens/canvas-2d-context.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const CANVAS_2D_CONTEXT = new InjectionToken( - '[CANVAS_2D_CONTEXT]: Canvas 2D rendering context', +export const WA_CANVAS_2D_CONTEXT = new InjectionToken( + '[WA_CANVAS_2D_CONTEXT]: Canvas 2D rendering context', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_CANVAS_2D_CONTEXT} + */ +export const CANVAS_2D_CONTEXT = WA_CANVAS_2D_CONTEXT; diff --git a/libs/canvas/src/tokens/canvas-method.ts b/libs/canvas/src/tokens/canvas-method.ts index 1cb861ed1..2b99c4f09 100644 --- a/libs/canvas/src/tokens/canvas-method.ts +++ b/libs/canvas/src/tokens/canvas-method.ts @@ -3,13 +3,18 @@ import {InjectionToken} from '@angular/core'; import type {CanvasMethod} from '../interfaces/canvas-method'; -export const CANVAS_METHOD = new InjectionToken( - '[CANVAS_METHOD]: A directive that draws on canvas', +export const WA_CANVAS_METHOD = new InjectionToken( + '[WA_CANVAS_METHOD]: A directive that draws on canvas', ); export function asCanvasMethod(useExisting: Type): ExistingProvider { return { - provide: CANVAS_METHOD, + provide: WA_CANVAS_METHOD, useExisting, }; } + +/** + * @deprecated: drop in v5.0, use {@link WA_CANVAS_METHOD} + */ +export const CANVAS_METHOD = WA_CANVAS_METHOD; diff --git a/libs/canvas/src/tokens/canvas-properties.ts b/libs/canvas/src/tokens/canvas-properties.ts index fc21d0bfb..29aafc9db 100644 --- a/libs/canvas/src/tokens/canvas-properties.ts +++ b/libs/canvas/src/tokens/canvas-properties.ts @@ -3,8 +3,8 @@ import {InjectionToken} from '@angular/core'; import type {CanvasMethod} from '../interfaces/canvas-method'; -export const CANVAS_PROPERTIES = new InjectionToken( - '[CANVAS_PROPERTIES]: A directive performing processing before and after drawing to canvas', +export const WA_CANVAS_PROPERTIES = new InjectionToken( + '[WA_CANVAS_PROPERTIES]: A directive performing processing before and after drawing to canvas', { factory: () => [], }, @@ -12,8 +12,13 @@ export const CANVAS_PROPERTIES = new InjectionToken( export function asCanvasProperty(useExisting: Type): ExistingProvider { return { - provide: CANVAS_PROPERTIES, + provide: WA_CANVAS_PROPERTIES, multi: true, useExisting, }; } + +/** + * @deprecated: drop in v5.0, use {@link WA_CANVAS_PROPERTIES} + */ +export const CANVAS_PROPERTIES = WA_CANVAS_PROPERTIES; diff --git a/libs/common/src/tokens/animation-frame.ts b/libs/common/src/tokens/animation-frame.ts index 1b6ff9a42..5f657f221 100644 --- a/libs/common/src/tokens/animation-frame.ts +++ b/libs/common/src/tokens/animation-frame.ts @@ -3,8 +3,8 @@ import {Observable, share} from 'rxjs'; import {WINDOW} from './window'; -export const ANIMATION_FRAME = new InjectionToken>( - '[ANIMATION_FRAME]: Shared Observable based on `window.requestAnimationFrame`', +export const WA_ANIMATION_FRAME = new InjectionToken>( + '[WA_ANIMATION_FRAME]: Shared Observable based on `window.requestAnimationFrame`', { factory: () => { const {requestAnimationFrame, cancelAnimationFrame} = inject(WINDOW); @@ -26,3 +26,8 @@ export const ANIMATION_FRAME = new InjectionToken( - '[CACHES]: An abstraction over window.caches object', +export const WA_CACHES = new InjectionToken( + '[WA_CACHES]: An abstraction over window.caches object', { factory: () => inject(WINDOW).caches, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_CACHES} + */ +export const CACHES = WA_CACHES; diff --git a/libs/common/src/tokens/crypto.ts b/libs/common/src/tokens/crypto.ts index c4d22e995..8b1008925 100644 --- a/libs/common/src/tokens/crypto.ts +++ b/libs/common/src/tokens/crypto.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const CRYPTO = new InjectionToken( - '[CRYPTO]: An abstraction over window.crypto object', +export const WA_CRYPTO = new InjectionToken( + '[WA_CRYPTO]: An abstraction over window.crypto object', { factory: () => inject(WINDOW).crypto, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_CRYPTO} + */ +export const CRYPTO = WA_CRYPTO; diff --git a/libs/common/src/tokens/css.ts b/libs/common/src/tokens/css.ts index 9057fdfb1..a81401c42 100644 --- a/libs/common/src/tokens/css.ts +++ b/libs/common/src/tokens/css.ts @@ -8,8 +8,8 @@ declare global { } } -const TOKEN_CSS = new InjectionToken( - '[TOKEN_CSS]: An abstraction over window.CSS object', +export const WA_CSS = new InjectionToken( + '[WA_CSS]: An abstraction over window.CSS object', { factory: () => inject(WINDOW).CSS ?? @@ -21,4 +21,9 @@ const TOKEN_CSS = new InjectionToken( }, ); +/** + * @deprecated: drop in v5.0, use {@link WA_CSS} + */ +export const TOKEN_CSS = WA_CSS; + export {TOKEN_CSS as CSS}; diff --git a/libs/common/src/tokens/history.ts b/libs/common/src/tokens/history.ts index ce524f04a..ad5ec8604 100644 --- a/libs/common/src/tokens/history.ts +++ b/libs/common/src/tokens/history.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const HISTORY = new InjectionToken( - '[HISTORY]: An abstraction over window.history object', +export const WA_HISTORY = new InjectionToken( + '[WA_HISTORY]: An abstraction over window.history object', { factory: () => inject(WINDOW).history, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_HISTORY} + */ +export const HISTORY = WA_HISTORY; diff --git a/libs/common/src/tokens/local-storage.ts b/libs/common/src/tokens/local-storage.ts index 169d26182..524b30451 100644 --- a/libs/common/src/tokens/local-storage.ts +++ b/libs/common/src/tokens/local-storage.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const LOCAL_STORAGE = new InjectionToken( - '[LOCAL_STORAGE]: An abstraction over window.localStorage object', +export const WA_LOCAL_STORAGE = new InjectionToken( + '[WA_LOCAL_STORAGE]: An abstraction over window.localStorage object', { factory: () => inject(WINDOW).localStorage, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_LOCAL_STORAGE} + */ +export const LOCAL_STORAGE = WA_LOCAL_STORAGE; diff --git a/libs/common/src/tokens/location.ts b/libs/common/src/tokens/location.ts index b256d686d..72310661e 100644 --- a/libs/common/src/tokens/location.ts +++ b/libs/common/src/tokens/location.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const LOCATION = new InjectionToken( - '[LOCATION]: An abstraction over window.location object', +export const WA_LOCATION = new InjectionToken( + '[WA_LOCATION]: An abstraction over window.location object', { factory: () => inject(WINDOW).location, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_LOCATION} + */ +export const LOCATION = WA_LOCATION; diff --git a/libs/common/src/tokens/media-devices.ts b/libs/common/src/tokens/media-devices.ts index 155847a54..60f75b5b9 100644 --- a/libs/common/src/tokens/media-devices.ts +++ b/libs/common/src/tokens/media-devices.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {NAVIGATOR} from './navigator'; -export const MEDIA_DEVICES = new InjectionToken( - '[MEDIA_DEVICES]: An abstraction over window.navigator.mediaDevices object', +export const WA_MEDIA_DEVICES = new InjectionToken( + '[WA_MEDIA_DEVICES]: An abstraction over window.navigator.mediaDevices object', { factory: () => inject(NAVIGATOR).mediaDevices, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MEDIA_DEVICES} + */ +export const MEDIA_DEVICES = WA_MEDIA_DEVICES; diff --git a/libs/common/src/tokens/navigator.ts b/libs/common/src/tokens/navigator.ts index d3a5415d0..b662bb73d 100644 --- a/libs/common/src/tokens/navigator.ts +++ b/libs/common/src/tokens/navigator.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const NAVIGATOR = new InjectionToken( - '[NAVIGATOR]: An abstraction over window.navigator object', +export const WA_NAVIGATOR = new InjectionToken( + '[WA_NAVIGATOR]: An abstraction over window.navigator object', { factory: () => inject(WINDOW).navigator, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_NAVIGATOR} + */ +export const NAVIGATOR = WA_NAVIGATOR; diff --git a/libs/common/src/tokens/network-information.ts b/libs/common/src/tokens/network-information.ts index b0b22fb34..a8fac491b 100644 --- a/libs/common/src/tokens/network-information.ts +++ b/libs/common/src/tokens/network-information.ts @@ -1,11 +1,16 @@ import {inject, InjectionToken} from '@angular/core'; -import {NAVIGATOR} from './navigator'; +import {WA_NAVIGATOR} from './navigator'; -export const NETWORK_INFORMATION = new InjectionToken< +export const WA_NETWORK_INFORMATION = new InjectionToken< // @ts-ignore (typeof navigator)['connection'] | null ->('[NETWORK_INFORMATION]: An abstraction over window.navigator.connection object', { +>('[WA_NETWORK_INFORMATION]: An abstraction over window.navigator.connection object', { // @ts-ignore - factory: () => inject(NAVIGATOR).connection || null, + factory: () => inject(WA_NAVIGATOR).connection || null, }); + +/** + * @deprecated: drop in v5.0, use {@link WA_NETWORK_INFORMATION} + */ +export const NETWORK_INFORMATION = WA_NETWORK_INFORMATION; diff --git a/libs/common/src/tokens/page-visibility.ts b/libs/common/src/tokens/page-visibility.ts index c519115ae..a1f55281f 100644 --- a/libs/common/src/tokens/page-visibility.ts +++ b/libs/common/src/tokens/page-visibility.ts @@ -3,8 +3,8 @@ import {inject, InjectionToken} from '@angular/core'; import type {Observable} from 'rxjs'; import {distinctUntilChanged, fromEvent, map, shareReplay, startWith} from 'rxjs'; -export const PAGE_VISIBILITY = new InjectionToken>( - '[PAGE_VISIBILITY]: Shared Observable based on `document visibility changed`', +export const WA_PAGE_VISIBILITY = new InjectionToken>( + '[WA_PAGE_VISIBILITY]: Shared Observable based on `document visibility changed`', { factory: () => { const documentRef = inject(DOCUMENT); @@ -18,3 +18,8 @@ export const PAGE_VISIBILITY = new InjectionToken>( }, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PAGE_VISIBILITY} + */ +export const PAGE_VISIBILITY = WA_PAGE_VISIBILITY; diff --git a/libs/common/src/tokens/performance.ts b/libs/common/src/tokens/performance.ts index a14d65274..ce8e03155 100644 --- a/libs/common/src/tokens/performance.ts +++ b/libs/common/src/tokens/performance.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const PERFORMANCE = new InjectionToken( - '[PERFORMANCE]: An abstraction over window.performance object', +export const WA_PERFORMANCE = new InjectionToken( + '[WA_PERFORMANCE]: An abstraction over window.performance object', { factory: () => inject(WINDOW).performance, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PERFORMANCE} + */ +export const PERFORMANCE = WA_PERFORMANCE; diff --git a/libs/common/src/tokens/screen.ts b/libs/common/src/tokens/screen.ts index fb55920ee..9bec0238e 100644 --- a/libs/common/src/tokens/screen.ts +++ b/libs/common/src/tokens/screen.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const SCREEN = new InjectionToken( - '[SCREEN]: An abstraction over window.screen object', +export const WA_SCREEN = new InjectionToken( + '[WA_SCREEN]: An abstraction over window.screen object', { factory: () => inject(WINDOW).screen, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SCREEN} + */ +export const SCREEN = WA_SCREEN; diff --git a/libs/common/src/tokens/session-storage.ts b/libs/common/src/tokens/session-storage.ts index 9870baad3..d6f270b2c 100644 --- a/libs/common/src/tokens/session-storage.ts +++ b/libs/common/src/tokens/session-storage.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const SESSION_STORAGE = new InjectionToken( - '[SESSION_STORAGE]: An abstraction over window.sessionStorage object', +export const WA_SESSION_STORAGE = new InjectionToken( + '[WA_SESSION_STORAGE]: An abstraction over window.sessionStorage object', { factory: () => inject(WINDOW).sessionStorage, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SESSION_STORAGE} + */ +export const SESSION_STORAGE = WA_SESSION_STORAGE; diff --git a/libs/common/src/tokens/speech-recognition.ts b/libs/common/src/tokens/speech-recognition.ts index 824f5c816..4a450c8a8 100644 --- a/libs/common/src/tokens/speech-recognition.ts +++ b/libs/common/src/tokens/speech-recognition.ts @@ -2,13 +2,23 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const SPEECH_RECOGNITION = new InjectionToken< +export const WA_SPEECH_RECOGNITION = new InjectionToken< // @ts-ignore (typeof window)['speechRecognition'] | null ->('[SPEECH_RECOGNITION]: An abstraction over SpeechRecognition class', { - factory: () => { - const windowRef: any = inject(WINDOW); +>( + '[WA_SPEECH_RECOGNITION]: [SPEECH_RECOGNITION]: An abstraction over SpeechRecognition class', + { + factory: () => { + const windowRef: any = inject(WINDOW); - return windowRef.speechRecognition || windowRef.webkitSpeechRecognition || null; + return ( + windowRef.speechRecognition || windowRef.webkitSpeechRecognition || null + ); + }, }, -}); +); + +/** + * @deprecated: drop in v5.0, use {@link WA_SPEECH_RECOGNITION} + */ +export const SPEECH_RECOGNITION = WA_SPEECH_RECOGNITION; diff --git a/libs/common/src/tokens/speech-synthesis.ts b/libs/common/src/tokens/speech-synthesis.ts index 6e16178c2..86e0f1104 100644 --- a/libs/common/src/tokens/speech-synthesis.ts +++ b/libs/common/src/tokens/speech-synthesis.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from './window'; -export const SPEECH_SYNTHESIS = new InjectionToken( - '[SPEECH_SYNTHESIS]: An abstraction over window.speechSynthesis object', +export const WA_SPEECH_SYNTHESIS = new InjectionToken( + '[WA_SPEECH_SYNTHESIS]: An abstraction over window.speechSynthesis object', { factory: () => inject(WINDOW).speechSynthesis, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SPEECH_SYNTHESIS} + */ +export const SPEECH_SYNTHESIS = WA_SPEECH_SYNTHESIS; diff --git a/libs/common/src/tokens/user-agent.ts b/libs/common/src/tokens/user-agent.ts index dc7a93ce1..94b79025d 100644 --- a/libs/common/src/tokens/user-agent.ts +++ b/libs/common/src/tokens/user-agent.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {NAVIGATOR} from './navigator'; -export const USER_AGENT = new InjectionToken( - '[USER_AGENT]: An abstraction over window.navigator.userAgent object', +export const WA_USER_AGENT = new InjectionToken( + '[WA_USER_AGENT]: An abstraction over window.navigator.userAgent object', { factory: () => inject(NAVIGATOR).userAgent, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_USER_AGENT} + */ +export const USER_AGENT = WA_USER_AGENT; diff --git a/libs/common/src/tokens/window.ts b/libs/common/src/tokens/window.ts index 26abfa9ca..c43332fc8 100644 --- a/libs/common/src/tokens/window.ts +++ b/libs/common/src/tokens/window.ts @@ -1,8 +1,8 @@ import {DOCUMENT} from '@angular/common'; import {inject, InjectionToken} from '@angular/core'; -export const WINDOW = new InjectionToken( - '[WINDOW]: An abstraction over global window object', +export const WA_WINDOW = new InjectionToken( + '[WA_WINDOW]: An abstraction over global window object', { factory: () => { const {defaultView} = inject(DOCUMENT); @@ -15,3 +15,8 @@ export const WINDOW = new InjectionToken( }, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_WINDOW} + */ +export const WINDOW = WA_WINDOW; diff --git a/libs/geolocation/src/tokens/geolocation-options.ts b/libs/geolocation/src/tokens/geolocation-options.ts index 06dbee7ae..1fea1a194 100644 --- a/libs/geolocation/src/tokens/geolocation-options.ts +++ b/libs/geolocation/src/tokens/geolocation-options.ts @@ -1,6 +1,11 @@ import {InjectionToken} from '@angular/core'; -export const POSITION_OPTIONS = new InjectionToken( - '[POSITION_OPTIONS]: Token for an additional position options', +export const WA_POSITION_OPTIONS = new InjectionToken( + '[WA_POSITION_OPTIONS]: Token for an additional position options', {factory: () => ({})}, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_POSITION_OPTIONS} + */ +export const POSITION_OPTIONS = WA_POSITION_OPTIONS; diff --git a/libs/geolocation/src/tokens/geolocation-support.ts b/libs/geolocation/src/tokens/geolocation-support.ts index 9b89ca4fb..c7269ba77 100644 --- a/libs/geolocation/src/tokens/geolocation-support.ts +++ b/libs/geolocation/src/tokens/geolocation-support.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {GEOLOCATION} from './geolocation'; -export const GEOLOCATION_SUPPORT = new InjectionToken( - '[GEOLOCATION_SUPPORT]: Is Geolocation API supported?', +export const WA_GEOLOCATION_SUPPORT = new InjectionToken( + '[WA_GEOLOCATION_SUPPORT]: Is Geolocation API supported?', { factory: () => !!inject(GEOLOCATION), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_GEOLOCATION_SUPPORT} + */ +export const GEOLOCATION_SUPPORT = WA_GEOLOCATION_SUPPORT; diff --git a/libs/geolocation/src/tokens/geolocation.ts b/libs/geolocation/src/tokens/geolocation.ts index eb38e5cf5..7010d21c2 100644 --- a/libs/geolocation/src/tokens/geolocation.ts +++ b/libs/geolocation/src/tokens/geolocation.ts @@ -1,9 +1,14 @@ import {inject, InjectionToken} from '@angular/core'; import {NAVIGATOR} from '@ng-web-apis/common'; -export const GEOLOCATION = new InjectionToken( - '[GEOLOCATION]: An abstraction over window.navigator.geolocation object', +export const WA_GEOLOCATION = new InjectionToken( + '[WA_GEOLOCATION]: An abstraction over window.navigator.geolocation object', { factory: () => inject(NAVIGATOR).geolocation, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_GEOLOCATION} + */ +export const GEOLOCATION = WA_GEOLOCATION; diff --git a/libs/intersection-observer/src/tokens/intersection-root-margin.ts b/libs/intersection-observer/src/tokens/intersection-root-margin.ts index 614dc5feb..e2ae87f1c 100644 --- a/libs/intersection-observer/src/tokens/intersection-root-margin.ts +++ b/libs/intersection-observer/src/tokens/intersection-root-margin.ts @@ -1,10 +1,21 @@ import {InjectionToken} from '@angular/core'; -export const INTERSECTION_ROOT_MARGIN_DEFAULT = '0px 0px 0px 0px'; -export const INTERSECTION_ROOT_MARGIN = new InjectionToken( - '[INTERSECTION_ROOT_MARGIN]: rootMargin for IntersectionObserver', +export const WA_INTERSECTION_ROOT_MARGIN_DEFAULT = '0px 0px 0px 0px'; + +/** + * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_ROOT_MARGIN_DEFAULT} + */ +export const INTERSECTION_ROOT_MARGIN_DEFAULT = WA_INTERSECTION_ROOT_MARGIN_DEFAULT; + +export const WA_INTERSECTION_ROOT_MARGIN = new InjectionToken( + '[WA_INTERSECTION_ROOT_MARGIN]: rootMargin for IntersectionObserver', { providedIn: 'root', factory: () => INTERSECTION_ROOT_MARGIN_DEFAULT, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_ROOT_MARGIN} + */ +export const INTERSECTION_ROOT_MARGIN = WA_INTERSECTION_ROOT_MARGIN; diff --git a/libs/intersection-observer/src/tokens/intersection-root.ts b/libs/intersection-observer/src/tokens/intersection-root.ts index c0ca87c05..94d07bb3f 100644 --- a/libs/intersection-observer/src/tokens/intersection-root.ts +++ b/libs/intersection-observer/src/tokens/intersection-root.ts @@ -1,6 +1,11 @@ import type {ElementRef} from '@angular/core'; import {InjectionToken} from '@angular/core'; -export const INTERSECTION_ROOT = new InjectionToken>( - '[INTERSECTION_ROOT]: Root element for IntersectionObserver', +export const WA_INTERSECTION_ROOT = new InjectionToken>( + '[WA_INTERSECTION_ROOT]: Root element for IntersectionObserver', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_ROOT} + */ +export const INTERSECTION_ROOT = WA_INTERSECTION_ROOT; diff --git a/libs/intersection-observer/src/tokens/intersection-threshold.ts b/libs/intersection-observer/src/tokens/intersection-threshold.ts index 2fc4e379c..e9983f661 100644 --- a/libs/intersection-observer/src/tokens/intersection-threshold.ts +++ b/libs/intersection-observer/src/tokens/intersection-threshold.ts @@ -1,10 +1,21 @@ import {InjectionToken} from '@angular/core'; -export const INTERSECTION_THRESHOLD_DEFAULT = 0; -export const INTERSECTION_THRESHOLD = new InjectionToken( - '[INTERSECTION_THRESHOLD]: threshold for IntersectionObserver', +export const WA_INTERSECTION_THRESHOLD_DEFAULT = 0; + +/** + * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_THRESHOLD_DEFAULT} + */ +export const INTERSECTION_THRESHOLD_DEFAULT = WA_INTERSECTION_THRESHOLD_DEFAULT; + +export const WA_INTERSECTION_THRESHOLD = new InjectionToken( + '[WA_INTERSECTION_THRESHOLD]: threshold for IntersectionObserver', { providedIn: 'root', factory: () => INTERSECTION_THRESHOLD_DEFAULT, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_THRESHOLD} + */ +export const INTERSECTION_THRESHOLD = WA_INTERSECTION_THRESHOLD; diff --git a/libs/intersection-observer/src/tokens/support.ts b/libs/intersection-observer/src/tokens/support.ts index 1c712484b..98f6ddf6c 100644 --- a/libs/intersection-observer/src/tokens/support.ts +++ b/libs/intersection-observer/src/tokens/support.ts @@ -1,10 +1,15 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from '@ng-web-apis/common'; -export const INTERSECTION_OBSERVER_SUPPORT = new InjectionToken( - '[INTERSECTION_OBSERVER_SUPPORT]: Intersection Observer API support', +export const WA_INTERSECTION_OBSERVER_SUPPORT = new InjectionToken( + '[WA_INTERSECTION_OBSERVER_SUPPORT]: [INTERSECTION_OBSERVER_SUPPORT]: Intersection Observer API support', { providedIn: 'root', factory: () => !!(inject(WINDOW) as any).IntersectionObserver, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_OBSERVER_SUPPORT} + */ +export const INTERSECTION_OBSERVER_SUPPORT = WA_INTERSECTION_OBSERVER_SUPPORT; diff --git a/libs/midi/src/tokens/midi-access.ts b/libs/midi/src/tokens/midi-access.ts index b2b7c5bbf..79b1097af 100644 --- a/libs/midi/src/tokens/midi-access.ts +++ b/libs/midi/src/tokens/midi-access.ts @@ -3,8 +3,8 @@ import {NAVIGATOR} from '@ng-web-apis/common'; import {SYSEX} from './sysex'; -export const MIDI_ACCESS = new InjectionToken>( - '[MIDI_ACCESS]: Promise for MIDIAccess object', +export const WA_MIDI_ACCESS = new InjectionToken>( + '[WA_MIDI_ACCESS]: Promise for MIDIAccess object', { providedIn: 'root', factory: async () => { @@ -17,3 +17,8 @@ export const MIDI_ACCESS = new InjectionToken>( }, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_ACCESS} + */ +export const MIDI_ACCESS = WA_MIDI_ACCESS; diff --git a/libs/midi/src/tokens/midi-input-query.ts b/libs/midi/src/tokens/midi-input-query.ts index d3ca7988d..feb10edc4 100644 --- a/libs/midi/src/tokens/midi-input-query.ts +++ b/libs/midi/src/tokens/midi-input-query.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const MIDI_INPUT_QUERY = new InjectionToken( - '[MIDI_INPUT_QUERY]: MIDIInput object id or name', +export const WA_MIDI_INPUT_QUERY = new InjectionToken( + '[WA_MIDI_INPUT_QUERY]: MIDIInput object id or name', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_INPUT_QUERY} + */ +export const MIDI_INPUT_QUERY = WA_MIDI_INPUT_QUERY; diff --git a/libs/midi/src/tokens/midi-input.ts b/libs/midi/src/tokens/midi-input.ts index 7b7194db4..336741a6f 100644 --- a/libs/midi/src/tokens/midi-input.ts +++ b/libs/midi/src/tokens/midi-input.ts @@ -2,6 +2,11 @@ import {InjectionToken} from '@angular/core'; import MIDIInput = WebMidi.MIDIInput; -export const MIDI_INPUT = new InjectionToken>( - '[MIDI_INPUT]: MIDIInput object', +export const WA_MIDI_INPUT = new InjectionToken>( + '[WA_MIDI_INPUT]: MIDIInput object', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_INPUT} + */ +export const MIDI_INPUT = WA_MIDI_INPUT; diff --git a/libs/midi/src/tokens/midi-inputs.ts b/libs/midi/src/tokens/midi-inputs.ts index 35bfaa97c..56a77ba76 100644 --- a/libs/midi/src/tokens/midi-inputs.ts +++ b/libs/midi/src/tokens/midi-inputs.ts @@ -3,9 +3,14 @@ import type {Observable} from 'rxjs'; import {getPortsStream} from '../utils/get-ports-stream'; -export const MIDI_INPUTS = new InjectionToken>( - '[MIDI_INPUTS]: Array of MIDI inputs', +export const WA_MIDI_INPUTS = new InjectionToken>( + '[WA_MIDI_INPUTS]: Array of MIDI inputs', { factory: () => getPortsStream('inputs'), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_INPUTS} + */ +export const MIDI_INPUTS = WA_MIDI_INPUTS; diff --git a/libs/midi/src/tokens/midi-messages.ts b/libs/midi/src/tokens/midi-messages.ts index a0fb8b28f..6bc44cf7e 100644 --- a/libs/midi/src/tokens/midi-messages.ts +++ b/libs/midi/src/tokens/midi-messages.ts @@ -4,8 +4,8 @@ import {from, fromEvent, merge, share, startWith, switchMap, throwError} from 'r import {MIDI_ACCESS} from './midi-access'; -export const MIDI_MESSAGES = new InjectionToken>( - '[MIDI_MESSAGES]: All incoming MIDI messages stream', +export const WA_MIDI_MESSAGES = new InjectionToken>( + '[WA_MIDI_MESSAGES]: All incoming MIDI messages stream', { providedIn: 'root', factory: () => @@ -32,3 +32,8 @@ export const MIDI_MESSAGES = new InjectionToken>( ) as unknown as Observable, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_MESSAGES} + */ +export const MIDI_MESSAGES = WA_MIDI_MESSAGES; diff --git a/libs/midi/src/tokens/midi-output-query.ts b/libs/midi/src/tokens/midi-output-query.ts index 37da48b32..9d3460d1b 100644 --- a/libs/midi/src/tokens/midi-output-query.ts +++ b/libs/midi/src/tokens/midi-output-query.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const MIDI_OUTPUT_QUERY = new InjectionToken( - '[MIDI_OUTPUT_QUERY]: MIDIOutput object id or name', +export const WA_MIDI_OUTPUT_QUERY = new InjectionToken( + '[WA_MIDI_OUTPUT_QUERY]: MIDIOutput object id or name', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_OUTPUT_QUERY} + */ +export const MIDI_OUTPUT_QUERY = WA_MIDI_OUTPUT_QUERY; diff --git a/libs/midi/src/tokens/midi-output.ts b/libs/midi/src/tokens/midi-output.ts index a3bfc0554..8914c63f6 100644 --- a/libs/midi/src/tokens/midi-output.ts +++ b/libs/midi/src/tokens/midi-output.ts @@ -2,6 +2,11 @@ import {InjectionToken} from '@angular/core'; import MIDIOutput = WebMidi.MIDIOutput; -export const MIDI_OUTPUT = new InjectionToken>( - '[MIDI_OUTPUT]: MIDIOutput object', +export const WA_MIDI_OUTPUT = new InjectionToken>( + '[WA_MIDI_OUTPUT]: MIDIOutput object', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_OUTPUT} + */ +export const MIDI_OUTPUT = WA_MIDI_OUTPUT; diff --git a/libs/midi/src/tokens/midi-outputs.ts b/libs/midi/src/tokens/midi-outputs.ts index 7b67b7aff..660b1905a 100644 --- a/libs/midi/src/tokens/midi-outputs.ts +++ b/libs/midi/src/tokens/midi-outputs.ts @@ -3,9 +3,14 @@ import type {Observable} from 'rxjs'; import {getPortsStream} from '../utils/get-ports-stream'; -export const MIDI_OUTPUTS = new InjectionToken>( - '[MIDI_OUTPUTS]: Array of MIDI inputs', +export const WA_MIDI_OUTPUTS = new InjectionToken>( + '[WA_MIDI_OUTPUTS]: Array of MIDI inputs', { factory: () => getPortsStream('outputs'), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_OUTPUTS} + */ +export const MIDI_OUTPUTS = WA_MIDI_OUTPUTS; diff --git a/libs/midi/src/tokens/midi-support.ts b/libs/midi/src/tokens/midi-support.ts index 6bbf63f9b..ac3e7bf19 100644 --- a/libs/midi/src/tokens/midi-support.ts +++ b/libs/midi/src/tokens/midi-support.ts @@ -1,9 +1,14 @@ import {inject, InjectionToken} from '@angular/core'; import {NAVIGATOR} from '@ng-web-apis/common'; -export const MIDI_SUPPORT = new InjectionToken( - '[MIDI_SUPPORT]: Web MIDI API support', +export const WA_MIDI_SUPPORT = new InjectionToken( + '[WA_MIDI_SUPPORT]: Web MIDI API support', { factory: () => !!inject(NAVIGATOR).requestMIDIAccess, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MIDI_SUPPORT} + */ +export const MIDI_SUPPORT = WA_MIDI_SUPPORT; diff --git a/libs/midi/src/tokens/sysex.ts b/libs/midi/src/tokens/sysex.ts index 7b56b4f16..325260a02 100644 --- a/libs/midi/src/tokens/sysex.ts +++ b/libs/midi/src/tokens/sysex.ts @@ -1,7 +1,15 @@ import {InjectionToken} from '@angular/core'; -export const SYSEX = new InjectionToken('[SYSEX]: Require sysex MIDI access', { - providedIn: 'root', - // eslint-disable-next-line no-restricted-syntax - factory: () => false, -}); +export const WA_SYSEX = new InjectionToken( + '[WA_SYSEX]: Require sysex MIDI access', + { + providedIn: 'root', + // eslint-disable-next-line no-restricted-syntax + factory: () => false, + }, +); + +/** + * @deprecated: drop in v5.0, use {@link WA_SYSEX} + */ +export const SYSEX = WA_SYSEX; diff --git a/libs/mutation-observer/src/tokens/mutation-observer-init.ts b/libs/mutation-observer/src/tokens/mutation-observer-init.ts index 8003af843..d789ece60 100644 --- a/libs/mutation-observer/src/tokens/mutation-observer-init.ts +++ b/libs/mutation-observer/src/tokens/mutation-observer-init.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const MUTATION_OBSERVER_INIT = new InjectionToken( - '[MUTATION_OBSERVER_INIT]: MutationObserver config', +export const WA_MUTATION_OBSERVER_INIT = new InjectionToken( + '[WA_MUTATION_OBSERVER_INIT]: MutationObserver config', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_MUTATION_OBSERVER_INIT} + */ +export const MUTATION_OBSERVER_INIT = WA_MUTATION_OBSERVER_INIT; diff --git a/libs/notification/src/tokens/support.ts b/libs/notification/src/tokens/support.ts index 281885e15..9124f3067 100644 --- a/libs/notification/src/tokens/support.ts +++ b/libs/notification/src/tokens/support.ts @@ -1,9 +1,14 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from '@ng-web-apis/common'; -export const NOTIFICATION_SUPPORT = new InjectionToken( - '[NOTIFICATION_SUPPORT]: Is Notification API supported?', +export const WA_NOTIFICATION_SUPPORT = new InjectionToken( + '[WA_NOTIFICATION_SUPPORT]: Is Notification API supported?', { factory: () => 'Notification' in inject(WINDOW), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_NOTIFICATION_SUPPORT} + */ +export const NOTIFICATION_SUPPORT = WA_NOTIFICATION_SUPPORT; diff --git a/libs/payment-request/src/tokens/payment-methods.ts b/libs/payment-request/src/tokens/payment-methods.ts index 3ed3cf198..849388758 100644 --- a/libs/payment-request/src/tokens/payment-methods.ts +++ b/libs/payment-request/src/tokens/payment-methods.ts @@ -1,8 +1,13 @@ import {InjectionToken} from '@angular/core'; -export const PAYMENT_METHODS = new InjectionToken( - '[PAYMENT_METHODS]: The methods used by Request Payment API', +export const WA_PAYMENT_METHODS = new InjectionToken( + '[WA_PAYMENT_METHODS]: The methods used by Request Payment API', { factory: () => [{supportedMethods: 'basic-card'}], }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PAYMENT_METHODS} + */ +export const PAYMENT_METHODS = WA_PAYMENT_METHODS; diff --git a/libs/payment-request/src/tokens/payment-options.ts b/libs/payment-request/src/tokens/payment-options.ts index 1a4ccf19f..c5e1105c1 100644 --- a/libs/payment-request/src/tokens/payment-options.ts +++ b/libs/payment-request/src/tokens/payment-options.ts @@ -1,9 +1,6 @@ import {InjectionToken} from '@angular/core'; -/** - * @deprecated - */ -export interface PaymentOptions { +export interface WaPaymentOptions { requestBillingAddress?: boolean; requestPayerEmail?: boolean; requestPayerName?: boolean; @@ -13,9 +10,11 @@ export interface PaymentOptions { } /** - * @deprecated + * @deprecated: drop in v5.0, use {@link WaPaymentOptions} */ -export interface PaymentShippingOption { +export type PaymentOptions = WaPaymentOptions; + +export interface WaPaymentShippingOption { amount: PaymentCurrencyAmount; id: string; label: string; @@ -23,11 +22,18 @@ export interface PaymentShippingOption { } /** - * @deprecated + * @deprecated: drop in v5.0, use {@link WaPaymentShippingOption} */ -export const PAYMENT_OPTIONS = new InjectionToken( - '[PAYMENT_OPTIONS]: Additional data requests from payer', +export type PaymentShippingOption = WaPaymentShippingOption; + +export const WA_PAYMENT_OPTIONS = new InjectionToken( + '[WA_PAYMENT_OPTIONS]: Additional data requests from payer', { factory: () => ({}), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PAYMENT_OPTIONS} + */ +export const PAYMENT_OPTIONS = WA_PAYMENT_OPTIONS; diff --git a/libs/payment-request/src/tokens/payment-request-support.ts b/libs/payment-request/src/tokens/payment-request-support.ts index 27247aa41..faeb72703 100644 --- a/libs/payment-request/src/tokens/payment-request-support.ts +++ b/libs/payment-request/src/tokens/payment-request-support.ts @@ -7,9 +7,14 @@ declare global { } } -export const PAYMENT_REQUEST_SUPPORT = new InjectionToken( - '[PAYMENT_REQUEST_SUPPORT]: Is Payment Request Api supported?', +export const WA_PAYMENT_REQUEST_SUPPORT = new InjectionToken( + '[WA_PAYMENT_REQUEST_SUPPORT]: Is Payment Request Api supported?', { factory: () => !!inject(WINDOW).PaymentRequest, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PAYMENT_REQUEST_SUPPORT} + */ +export const PAYMENT_REQUEST_SUPPORT = WA_PAYMENT_REQUEST_SUPPORT; diff --git a/libs/permissions/src/tokens/permissions-support.ts b/libs/permissions/src/tokens/permissions-support.ts index b5ba09090..d94b6ad09 100644 --- a/libs/permissions/src/tokens/permissions-support.ts +++ b/libs/permissions/src/tokens/permissions-support.ts @@ -2,9 +2,14 @@ import {inject, InjectionToken} from '@angular/core'; import {PERMISSIONS} from './permissions'; -export const PERMISSIONS_SUPPORT = new InjectionToken( - '[PERMISSIONS_SUPPORT]: Is Permissions API supported?', +export const WA_PERMISSIONS_SUPPORT = new InjectionToken( + '[WA_PERMISSIONS_SUPPORT]: Is Permissions API supported?', { factory: () => !!inject(PERMISSIONS), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PERMISSIONS_SUPPORT} + */ +export const PERMISSIONS_SUPPORT = WA_PERMISSIONS_SUPPORT; diff --git a/libs/permissions/src/tokens/permissions.ts b/libs/permissions/src/tokens/permissions.ts index 289e58b5e..1a6c8401a 100644 --- a/libs/permissions/src/tokens/permissions.ts +++ b/libs/permissions/src/tokens/permissions.ts @@ -1,9 +1,14 @@ import {inject, InjectionToken} from '@angular/core'; import {NAVIGATOR} from '@ng-web-apis/common'; -export const PERMISSIONS = new InjectionToken( - '[PERMISSIONS]: An abstraction over window.navigator.permissions object', +export const WA_PERMISSIONS = new InjectionToken( + '[WA_PERMISSIONS]: An abstraction over window.navigator.permissions object', { factory: () => inject(NAVIGATOR).permissions, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_PERMISSIONS} + */ +export const PERMISSIONS = WA_PERMISSIONS; diff --git a/libs/resize-observer/src/tokens/resize-option-box.ts b/libs/resize-observer/src/tokens/resize-option-box.ts index e508fccaf..bb46bb037 100644 --- a/libs/resize-observer/src/tokens/resize-option-box.ts +++ b/libs/resize-observer/src/tokens/resize-option-box.ts @@ -1,11 +1,21 @@ import {InjectionToken} from '@angular/core'; -export const RESIZE_OPTION_BOX_DEFAULT = 'content-box'; +export const WA_RESIZE_OPTION_BOX_DEFAULT = 'content-box'; -export const RESIZE_OPTION_BOX = new InjectionToken( - '[RESIZE_OPTION_BOX]: Box model to observe changes', +/** + * @deprecated: drop in v5.0, use {@link WA_RESIZE_OPTION_BOX_DEFAULT} + */ +export const RESIZE_OPTION_BOX_DEFAULT = WA_RESIZE_OPTION_BOX_DEFAULT; + +export const WA_RESIZE_OPTION_BOX = new InjectionToken( + '[WA_RESIZE_OPTION_BOX]: Box model to observe changes', { providedIn: 'root', factory: () => RESIZE_OPTION_BOX_DEFAULT, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_RESIZE_OPTION_BOX} + */ +export const RESIZE_OPTION_BOX = WA_RESIZE_OPTION_BOX; diff --git a/libs/resize-observer/src/tokens/support.ts b/libs/resize-observer/src/tokens/support.ts index 6bc86955a..95272ef29 100644 --- a/libs/resize-observer/src/tokens/support.ts +++ b/libs/resize-observer/src/tokens/support.ts @@ -1,10 +1,15 @@ import {inject, InjectionToken} from '@angular/core'; import {WINDOW} from '@ng-web-apis/common'; -export const RESIZE_OBSERVER_SUPPORT = new InjectionToken( - '[RESIZE_OBSERVER_SUPPORT]: Resize Observer API support', +export const WA_RESIZE_OBSERVER_SUPPORT = new InjectionToken( + '[WA_RESIZE_OBSERVER_SUPPORT]: Resize Observer API support', { providedIn: 'root', factory: () => !!(inject(WINDOW) as any).ResizeObserver, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_RESIZE_OBSERVER_SUPPORT} + */ +export const RESIZE_OBSERVER_SUPPORT = WA_RESIZE_OBSERVER_SUPPORT; diff --git a/libs/speech/src/tokens/speech-recognition-max-alternatives.ts b/libs/speech/src/tokens/speech-recognition-max-alternatives.ts index 3d1f1415f..c277c2c10 100644 --- a/libs/speech/src/tokens/speech-recognition-max-alternatives.ts +++ b/libs/speech/src/tokens/speech-recognition-max-alternatives.ts @@ -1,8 +1,13 @@ import {InjectionToken} from '@angular/core'; -export const SPEECH_RECOGNITION_MAX_ALTERNATIVES = new InjectionToken( - '[SPEECH_RECOGNITION_MAX_ALTERNATIVES]: Max alternatives for speech recognition', +export const WA_SPEECH_RECOGNITION_MAX_ALTERNATIVES = new InjectionToken( + '[WA_SPEECH_RECOGNITION_MAX_ALTERNATIVES]: Max alternatives for speech recognition', { factory: () => 1, }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SPEECH_RECOGNITION_MAX_ALTERNATIVES} + */ +export const SPEECH_RECOGNITION_MAX_ALTERNATIVES = WA_SPEECH_RECOGNITION_MAX_ALTERNATIVES; diff --git a/libs/speech/src/tokens/speech-recognition-support.ts b/libs/speech/src/tokens/speech-recognition-support.ts index 68d46db16..417e7c6c9 100644 --- a/libs/speech/src/tokens/speech-recognition-support.ts +++ b/libs/speech/src/tokens/speech-recognition-support.ts @@ -1,9 +1,14 @@ import {inject, InjectionToken} from '@angular/core'; import {SPEECH_RECOGNITION} from '@ng-web-apis/common'; -export const SPEECH_RECOGNITION_SUPPORT = new InjectionToken( - '[SPEECH_RECOGNITION_SUPPORT]: Speech recognition is supported on current platform', +export const WA_SPEECH_RECOGNITION_SUPPORT = new InjectionToken( + '[WA_SPEECH_RECOGNITION_SUPPORT]: Speech recognition is supported on current platform', { factory: () => !!inject(SPEECH_RECOGNITION), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SPEECH_RECOGNITION_SUPPORT} + */ +export const SPEECH_RECOGNITION_SUPPORT = WA_SPEECH_RECOGNITION_SUPPORT; diff --git a/libs/speech/src/tokens/speech-synthesis-support.ts b/libs/speech/src/tokens/speech-synthesis-support.ts index 0d183c9b1..4d337af3e 100644 --- a/libs/speech/src/tokens/speech-synthesis-support.ts +++ b/libs/speech/src/tokens/speech-synthesis-support.ts @@ -1,9 +1,14 @@ import {inject, InjectionToken} from '@angular/core'; import {SPEECH_SYNTHESIS} from '@ng-web-apis/common'; -export const SPEECH_SYNTHESIS_SUPPORT = new InjectionToken( - '[SPEECH_SYNTHESIS_SUPPORT]: Speech synthesis is supported on current platform', +export const WA_SPEECH_SYNTHESIS_SUPPORT = new InjectionToken( + '[WA_SPEECH_SYNTHESIS_SUPPORT]: Speech synthesis is supported on current platform', { factory: () => !!inject(SPEECH_SYNTHESIS), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SPEECH_SYNTHESIS_SUPPORT} + */ +export const SPEECH_SYNTHESIS_SUPPORT = WA_SPEECH_SYNTHESIS_SUPPORT; diff --git a/libs/speech/src/tokens/speech-synthesis-voices.ts b/libs/speech/src/tokens/speech-synthesis-voices.ts index dacf28ede..3e2fc15d2 100644 --- a/libs/speech/src/tokens/speech-synthesis-voices.ts +++ b/libs/speech/src/tokens/speech-synthesis-voices.ts @@ -3,9 +3,9 @@ import {SPEECH_SYNTHESIS} from '@ng-web-apis/common'; import type {Observable} from 'rxjs'; import {fromEvent, map, startWith} from 'rxjs'; -export const SPEECH_SYNTHESIS_VOICES = new InjectionToken< +export const WA_SPEECH_SYNTHESIS_VOICES = new InjectionToken< Observable ->('[SPEECH_SYNTHESIS_VOICES]: List of available voices for speech synthesis', { +>('[WA_SPEECH_SYNTHESIS_VOICES]: List of available voices for speech synthesis', { factory: () => { const speechSynthesisRef = inject(SPEECH_SYNTHESIS); @@ -15,3 +15,8 @@ export const SPEECH_SYNTHESIS_VOICES = new InjectionToken< ); }, }); + +/** + * @deprecated: drop in v5.0, use {@link WA_SPEECH_SYNTHESIS_VOICES} + */ +export const SPEECH_SYNTHESIS_VOICES = WA_SPEECH_SYNTHESIS_VOICES; diff --git a/libs/storage/src/tokens/storage-event.ts b/libs/storage/src/tokens/storage-event.ts index 144ab3693..7674af446 100644 --- a/libs/storage/src/tokens/storage-event.ts +++ b/libs/storage/src/tokens/storage-event.ts @@ -3,9 +3,14 @@ import {WINDOW} from '@ng-web-apis/common'; import type {Observable} from 'rxjs'; import {fromEvent} from 'rxjs'; -export const STORAGE_EVENT = new InjectionToken>( - '[STORAGE_EVENT]: All changes to Storage objects', +export const WA_STORAGE_EVENT = new InjectionToken>( + '[WA_STORAGE_EVENT]: All changes to Storage objects', { factory: () => fromEvent(inject(WINDOW), 'storage'), }, ); + +/** + * @deprecated: drop in v5.0, use {@link WA_STORAGE_EVENT} + */ +export const STORAGE_EVENT = WA_STORAGE_EVENT; diff --git a/libs/universal/src/tokens/ssr-location.ts b/libs/universal/src/tokens/ssr-location.ts index 4481c662c..199e8b0e5 100644 --- a/libs/universal/src/tokens/ssr-location.ts +++ b/libs/universal/src/tokens/ssr-location.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const SSR_LOCATION = new InjectionToken( - '[SSR_LOCATION]: Location object passed from server side', +export const WA_SSR_LOCATION = new InjectionToken( + '[WA_SSR_LOCATION]: Location object passed from server side', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SSR_LOCATION} + */ +export const SSR_LOCATION = WA_SSR_LOCATION; diff --git a/libs/universal/src/tokens/ssr-user-agent.ts b/libs/universal/src/tokens/ssr-user-agent.ts index 6ca6eeb78..192bfcc0e 100644 --- a/libs/universal/src/tokens/ssr-user-agent.ts +++ b/libs/universal/src/tokens/ssr-user-agent.ts @@ -1,5 +1,10 @@ import {InjectionToken} from '@angular/core'; -export const SSR_USER_AGENT = new InjectionToken( - '[SSR_USER_AGENT]: User Agent string passed from server side', +export const WA_SSR_USER_AGENT = new InjectionToken( + '[WA_SSR_USER_AGENT]: User Agent string passed from server side', ); + +/** + * @deprecated: drop in v5.0, use {@link WA_SSR_USER_AGENT} + */ +export const SSR_USER_AGENT = WA_SSR_USER_AGENT;