chore: Enforce consistent type imports via @typescript-eslint/consistent-type-imports (#2545)

This commit is contained in:
Dermot Duffy
2026-06-30 17:45:13 -07:00
committed by dermotduffy
parent 8f4ebcc0de
commit 7dc29865b8
589 changed files with 2419 additions and 2103 deletions
+5 -2
View File
@@ -1,9 +1,12 @@
import { html, render } from 'lit';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { actionHandler, ActionHandlerInterface } from '../src/action-handler-directive';
import {
actionHandler,
type ActionHandlerInterface,
} from '../src/action-handler-directive';
import { fireHASSEvent } from '../src/ha/fire-hass-event';
import { ActionHandlerDetail } from '../src/ha/types';
import type { ActionHandlerDetail } from '../src/ha/types';
import { stopEventFromActivatingCardWideActions } from '../src/utils/action';
vi.mock('../src/ha/fire-hass-event.js');
@@ -2,17 +2,17 @@ import { describe, expect, it } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { BrowseMediaCameraManagerEngine } from '../../../src/camera-manager/browse-media/engine-browse-media';
import { CameraManagerReadOnlyConfigStore } from '../../../src/camera-manager/store';
import type { CameraManagerReadOnlyConfigStore } from '../../../src/camera-manager/store';
import {
CameraManagerRequestCache,
CameraQuery,
QueryType,
type CameraQuery,
} from '../../../src/camera-manager/types';
import { BROWSE_MEDIA_CACHE_SECONDS } from '../../../src/ha/browse-media/types';
import { BrowseMediaWalker } from '../../../src/ha/browse-media/walker';
import { ResolvedMediaCache } from '../../../src/ha/resolved-media';
import { QuerySource } from '../../../src/query-source';
import { ViewMedia } from '../../../src/view/item';
import type { ViewMedia } from '../../../src/view/item';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
import { createCameraConfig, createHASS, createHASSManager } from '../../test-utils';
+5 -5
View File
@@ -3,16 +3,16 @@ import { sortBy } from 'lodash-es';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { RecordingSegmentsCache } from '../../src/camera-manager/cache.js';
import { DateRange } from '../../src/camera-manager/range.js';
import type { DateRange } from '../../src/camera-manager/range.js';
import {
CameraManagerRequestCache,
CameraQuery,
Engine,
EventQuery,
QueryResultsType,
QueryReturnType,
QueryType,
RecordingSegment,
type CameraQuery,
type EventQuery,
type QueryReturnType,
type RecordingSegment,
} from '../../src/camera-manager/types.js';
describe('MemoryRequestCache', () => {
+3 -3
View File
@@ -3,9 +3,9 @@ import { mock } from 'vitest-mock-extended';
import { Camera } from '../../src/camera-manager/camera.js';
import { GenericCameraManagerEngine } from '../../src/camera-manager/generic/engine-generic.js';
import { CameraProxyConfig } from '../../src/camera-manager/types.js';
import { EventWatcherSubscriptionInterface } from '../../src/card-controller/hass/event-watcher.js';
import { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher.js';
import type { CameraProxyConfig } from '../../src/camera-manager/types.js';
import type { EventWatcherSubscriptionInterface } from '../../src/card-controller/hass/event-watcher.js';
import type { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher.js';
import { liveProviderSupports2WayAudio } from '../../src/utils/live-provider.js';
import { EntityRegistryManagerMock } from '../ha/registry/entity/mock.js';
import {
+2 -2
View File
@@ -2,10 +2,10 @@ import { describe, expect, it } from 'vitest';
import { Capabilities } from '../../src/camera-manager/capabilities';
import {
CapabilityKey,
capabilityKeys,
PTZCapabilities,
PTZMovementType,
type CapabilityKey,
type PTZCapabilities,
} from '../../src/types';
describe('Capabilities', () => {
+4 -4
View File
@@ -8,10 +8,10 @@ import { MotionEyeCameraManagerEngine } from '../../src/camera-manager/motioneye
import { ReolinkCameraManagerEngine } from '../../src/camera-manager/reolink/engine-reolink.js';
import { TPLinkCameraManagerEngine } from '../../src/camera-manager/tplink/engine-tplink.js';
import { Engine } from '../../src/camera-manager/types.js';
import { CardWideConfig } from '../../src/config/schema/types.js';
import { DeviceRegistryManager } from '../../src/ha/registry/device';
import { EntityRegistryManager } from '../../src/ha/registry/entity/types.js';
import { ResolvedMediaCache } from '../../src/ha/resolved-media.js';
import type { CardWideConfig } from '../../src/config/schema/types.js';
import type { DeviceRegistryManager } from '../../src/ha/registry/device';
import type { EntityRegistryManager } from '../../src/ha/registry/entity/types.js';
import type { ResolvedMediaCache } from '../../src/ha/resolved-media.js';
import { EntityRegistryManagerMock } from '../ha/registry/entity/mock.js';
import {
createCameraConfig,
+11 -8
View File
@@ -2,7 +2,7 @@ import { format } from 'date-fns';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManagerEngine } from '../../../src/camera-manager/engine';
import type { CameraManagerEngine } from '../../../src/camera-manager/engine';
import { FrigateCamera } from '../../../src/camera-manager/frigate/camera';
import {
FrigateEventViewMedia,
@@ -11,17 +11,20 @@ import {
import { getPTZInfo } from '../../../src/camera-manager/frigate/requests';
import {
eventSchema,
FrigateEventChange,
FrigateReviewChange,
type FrigateEventChange,
type FrigateReviewChange,
} from '../../../src/camera-manager/frigate/types';
import {
import type {
FrigateEventWatcher,
FrigateReviewWatcher,
} from '../../../src/camera-manager/frigate/watcher';
import { ActionsExecutor } from '../../../src/card-controller/actions/types';
import { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import { CameraTriggerMediaEventType } from '../../../src/config/schema/cameras';
import { Entity, EntityRegistryManager } from '../../../src/ha/registry/entity/types';
import type { ActionsExecutor } from '../../../src/card-controller/actions/types';
import type { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import type { CameraTriggerMediaEventType } from '../../../src/config/schema/cameras';
import type {
Entity,
EntityRegistryManager,
} from '../../../src/ha/registry/entity/types';
import { ViewMediaType } from '../../../src/view/item';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
import {
@@ -22,7 +22,7 @@ import {
retainEvent,
setReviewsReviewed,
} from '../../../src/camera-manager/frigate/requests';
import {
import type {
FrigateEventQueryResults,
FrigateRecordingQueryResults,
FrigateReviewQueryResults,
@@ -33,10 +33,10 @@ import {
QueryResultsType,
QueryType,
} from '../../../src/camera-manager/types';
import { CameraConfig } from '../../../src/config/schema/cameras';
import { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import type { CameraConfig } from '../../../src/config/schema/cameras';
import type { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import { QuerySource } from '../../../src/query-source';
import { Severity } from '../../../src/severity';
import type { Severity } from '../../../src/severity';
import { ViewMedia, ViewMediaType } from '../../../src/view/item';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
import {
@@ -7,7 +7,7 @@ import {
FrigateReviewViewMedia,
} from '../../../src/camera-manager/frigate/media';
import { FrigateViewMediaClassifier } from '../../../src/camera-manager/frigate/media-classifier';
import { ViewMedia, ViewMediaType } from '../../../src/view/item';
import { ViewMediaType, type ViewMedia } from '../../../src/view/item';
import {
createFrigateEvent,
createFrigateRecording,
@@ -11,19 +11,19 @@ import {
setReviewsReviewed,
} from '../../../src/camera-manager/frigate/requests';
import {
EventSummary,
eventSummarySchema,
FrigateEvent,
frigateEventsSchema,
FrigateReview,
frigateReviewsSchema,
ptzInfoSchema,
recordingSegmentsSchema,
recordingSummarySchema,
retainResultSchema,
reviewResultSchema,
type EventSummary,
type FrigateEvent,
type FrigateReview,
} from '../../../src/camera-manager/frigate/types';
import { RecordingSegment } from '../../../src/camera-manager/types';
import type { RecordingSegment } from '../../../src/camera-manager/types';
import { homeAssistantWSRequest } from '../../../src/ha/ws-request';
import { createFrigateEvent, createHASS } from '../../test-utils';
+1 -1
View File
@@ -14,7 +14,7 @@ import {
getReviewThumbnailURL,
getReviewTitle,
} from '../../../src/camera-manager/frigate/util';
import { CameraConfig } from '../../../src/config/schema/cameras';
import type { CameraConfig } from '../../../src/config/schema/cameras';
import {
createCameraConfig,
createFrigateEvent,
+3 -3
View File
@@ -1,8 +1,8 @@
import { Connection } from 'home-assistant-js-websocket';
import type { Connection } from 'home-assistant-js-websocket';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import {
import type {
FrigateEventChange,
FrigateReviewChange,
} from '../../../src/camera-manager/frigate/types.js';
@@ -10,7 +10,7 @@ import {
FrigateEventWatcher,
FrigateReviewWatcher,
} from '../../../src/camera-manager/frigate/watcher.js';
import { HomeAssistant } from '../../../src/ha/types.js';
import type { HomeAssistant } from '../../../src/ha/types.js';
import { createHASS, createHASSSource, flushPromises } from '../../test-utils.js';
const createEventChange = (): FrigateEventChange => {
@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
import { GenericCameraManagerEngine } from '../../../src/camera-manager/generic/engine-generic';
import { Engine, QueryResultsType, QueryType } from '../../../src/camera-manager/types';
import { CameraConfig } from '../../../src/config/schema/cameras';
import { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import type { CameraConfig } from '../../../src/config/schema/cameras';
import type { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import { QuerySource } from '../../../src/query-source';
import {
createCameraConfig,
+15 -15
View File
@@ -2,10 +2,10 @@ import { add } from 'date-fns';
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { Camera } from '../../src/camera-manager/camera.js';
import type { Camera } from '../../src/camera-manager/camera.js';
import { Capabilities } from '../../src/camera-manager/capabilities.js';
import { CameraManagerEngineFactory } from '../../src/camera-manager/engine-factory.js';
import { CameraManagerEngine } from '../../src/camera-manager/engine.js';
import type { CameraManagerEngineFactory } from '../../src/camera-manager/engine-factory.js';
import type { CameraManagerEngine } from '../../src/camera-manager/engine.js';
import {
CameraDuplicateIDError,
CameraNoEngineError,
@@ -17,25 +17,25 @@ import {
QueryResultClassifier,
} from '../../src/camera-manager/manager.js';
import {
CameraEvent,
CameraManagerCameraMetadata,
Engine,
EventQuery,
EventQueryResults,
MediaMetadata,
QueryResults,
QueryResultsType,
QueryType,
type CameraEvent,
type CameraManagerCameraMetadata,
type EventQuery,
type EventQueryResults,
type MediaMetadata,
type QueryResults,
} from '../../src/camera-manager/types.js';
import { CardController } from '../../src/card-controller/controller.js';
import { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher.js';
import type { CardController } from '../../src/card-controller/controller.js';
import type { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher.js';
import { sortItems } from '../../src/card-controller/view/sort.js';
import { CameraConfig } from '../../src/config/schema/cameras.js';
import type { CameraConfig } from '../../src/config/schema/cameras.js';
import { advancedCameraCardConfigSchema } from '../../src/config/schema/types.js';
import { QuerySource } from '../../src/query-source.js';
import { Endpoint, PTZMovementType } from '../../src/types.js';
import { ViewFolder, ViewItem, ViewMedia } from '../../src/view/item.js';
import { ViewItemCapabilities } from '../../src/view/types.js';
import { PTZMovementType, type Endpoint } from '../../src/types.js';
import { ViewFolder, type ViewItem, type ViewMedia } from '../../src/view/item.js';
import type { ViewItemCapabilities } from '../../src/view/types.js';
import {
createCameraConfig,
createCapabilities,
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManagerEngine } from '../../../src/camera-manager/engine';
import type { CameraManagerEngine } from '../../../src/camera-manager/engine';
import { MotionEyeCamera } from '../../../src/camera-manager/motioneye/camera';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
import {
@@ -6,18 +6,21 @@ import { mock, type MockProxy } from 'vitest-mock-extended';
import { Camera } from '../../../src/camera-manager/camera';
import { MotionEyeCamera } from '../../../src/camera-manager/motioneye/camera';
import { MotionEyeCameraManagerEngine } from '../../../src/camera-manager/motioneye/engine-motioneye';
import { MotionEyeEventQueryResults } from '../../../src/camera-manager/motioneye/types';
import type { MotionEyeEventQueryResults } from '../../../src/camera-manager/motioneye/types';
import { CameraManagerStore } from '../../../src/camera-manager/store';
import {
CameraManagerRequestCache,
Engine,
EventQueryResults,
QueryResultsType,
QueryType,
type EventQueryResults,
} from '../../../src/camera-manager/types';
import { BrowseMediaMetadata } from '../../../src/ha/browse-media/types';
import { BrowseMediaStep, BrowseMediaWalker } from '../../../src/ha/browse-media/walker';
import { Entity } from '../../../src/ha/registry/entity/types';
import type { BrowseMediaMetadata } from '../../../src/ha/browse-media/types';
import {
BrowseMediaWalker,
type BrowseMediaStep,
} from '../../../src/ha/browse-media/walker';
import type { Entity } from '../../../src/ha/registry/entity/types';
import { ResolvedMediaCache } from '../../../src/ha/resolved-media';
import { QuerySource } from '../../../src/query-source';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
+2 -2
View File
@@ -3,11 +3,11 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
import {
compressRanges,
DateRange,
ExpiringMemoryRangeSet,
ExpiringRange,
MemoryRangeSet,
rangesOverlap,
type DateRange,
type ExpiringRange,
} from '../../src/camera-manager/range.js';
describe('MemoryRangeSet', () => {
+5 -5
View File
@@ -1,12 +1,12 @@
import { describe, expect, it } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManagerEngine } from '../../../src/camera-manager/engine';
import type { CameraManagerEngine } from '../../../src/camera-manager/engine';
import { ReolinkCamera } from '../../../src/camera-manager/reolink/camera';
import { CameraProxyConfig } from '../../../src/camera-manager/types';
import { ActionsExecutor } from '../../../src/card-controller/actions/types';
import { DeviceRegistryManager } from '../../../src/ha/registry/device';
import { EntityRegistryManagerLive } from '../../../src/ha/registry/entity';
import type { CameraProxyConfig } from '../../../src/camera-manager/types';
import type { ActionsExecutor } from '../../../src/card-controller/actions/types';
import type { DeviceRegistryManager } from '../../../src/ha/registry/device';
import type { EntityRegistryManagerLive } from '../../../src/ha/registry/entity';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
import {
createCameraConfig,
@@ -14,20 +14,20 @@ import {
ReolinkCameraManagerEngine,
ReolinkQueryResultsClassifier,
} from '../../../src/camera-manager/reolink/engine-reolink';
import { ReolinkEventQueryResults } from '../../../src/camera-manager/reolink/types';
import type { ReolinkEventQueryResults } from '../../../src/camera-manager/reolink/types';
import { CameraManagerStore } from '../../../src/camera-manager/store';
import {
CameraManagerRequestCache,
Engine,
EventQuery,
QueryResultsType,
QueryReturnType,
QueryType,
type EventQuery,
type QueryReturnType,
} from '../../../src/camera-manager/types';
import { BrowseMedia, browseMediaSchema } from '../../../src/ha/browse-media/types';
import { browseMediaSchema, type BrowseMedia } from '../../../src/ha/browse-media/types';
import { BrowseMediaWalker } from '../../../src/ha/browse-media/walker';
import { DeviceRegistryManager } from '../../../src/ha/registry/device';
import { EntityRegistryManager } from '../../../src/ha/registry/entity/types';
import type { DeviceRegistryManager } from '../../../src/ha/registry/device';
import type { EntityRegistryManager } from '../../../src/ha/registry/entity/types';
import { ResolvedMediaCache } from '../../../src/ha/resolved-media';
import { homeAssistantWSRequest } from '../../../src/ha/ws-request';
import { QuerySource } from '../../../src/query-source';
+3 -3
View File
@@ -6,9 +6,9 @@ import { Capabilities } from '../../src/camera-manager/capabilities.js';
import { CameraManagerEngineFactory } from '../../src/camera-manager/engine-factory.js';
import { CameraManagerStore } from '../../src/camera-manager/store.js';
import { Engine } from '../../src/camera-manager/types.js';
import { DeviceRegistryManager } from '../../src/ha/registry/device/index.js';
import { EntityRegistryManager } from '../../src/ha/registry/entity/types.js';
import { ResolvedMediaCache } from '../../src/ha/resolved-media.js';
import type { DeviceRegistryManager } from '../../src/ha/registry/device/index.js';
import type { EntityRegistryManager } from '../../src/ha/registry/entity/types.js';
import type { ResolvedMediaCache } from '../../src/ha/resolved-media.js';
import {
createCameraConfig,
createHASSManager,
+2 -2
View File
@@ -1,9 +1,9 @@
import { describe, expect, it } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManagerEngine } from '../../../src/camera-manager/engine';
import type { CameraManagerEngine } from '../../../src/camera-manager/engine';
import { TPLinkCamera } from '../../../src/camera-manager/tplink/camera';
import { ActionsExecutor } from '../../../src/card-controller/actions/types';
import type { ActionsExecutor } from '../../../src/card-controller/actions/types';
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
import {
createCameraConfig,
@@ -1,7 +1,10 @@
import { describe, expect, it } from 'vitest';
import { getCameraEntityFromConfig } from '../../../src/camera-manager/utils/camera-entity-from-config.js';
import { CameraConfig, cameraConfigSchema } from '../../../src/config/schema/cameras.js';
import {
cameraConfigSchema,
type CameraConfig,
} from '../../../src/config/schema/cameras.js';
describe('getCameraEntityFromConfig', () => {
const createCameraConfig = (config: Partial<CameraConfig>): CameraConfig => {
@@ -3,9 +3,9 @@ import { mock } from 'vitest-mock-extended';
import { supports2WayAudio } from '../../../src/camera-manager/utils/go2rtc/audio';
import { homeAssistantSignAndFetch } from '../../../src/ha/fetch';
import { HomeAssistant } from '../../../src/ha/types';
import type { HomeAssistant } from '../../../src/ha/types';
import { createProxiedEndpointIfNecessary } from '../../../src/ha/web-proxy';
import { Endpoint } from '../../../src/types';
import type { Endpoint } from '../../../src/types';
vi.mock('../../../src/ha/fetch');
vi.mock('../../../src/ha/web-proxy');
+1 -1
View File
@@ -5,7 +5,7 @@ import {
getConfiguredPTZMovementType,
getPTZCapabilitiesFromCameraConfig,
} from '../../../src/camera-manager/utils/ptz';
import { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import type { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import { createCameraConfig } from '../../test-utils';
const action = {
@@ -12,12 +12,12 @@ import { mock } from 'vitest-mock-extended';
import {
ActionsManager,
Interaction,
InteractionName,
type Interaction,
type InteractionName,
} from '../../../src/card-controller/actions/actions-manager';
import type { CardController } from '../../../src/card-controller/controller';
import { TemplateRenderer } from '../../../src/card-controller/templates';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import type { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import {
createInternalCallbackAction,
createLogAction,
@@ -2,7 +2,7 @@ import { expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { MuteAction } from '../../../../src/card-controller/actions/actions/mute';
import { MediaPlayerController } from '../../../../src/types';
import type { MediaPlayerController } from '../../../../src/types';
import { createCardAPI, createMediaLoadedInfo } from '../../../test-utils';
it('should handle mute action', async () => {
@@ -2,7 +2,7 @@ import { expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { PauseAction } from '../../../../src/card-controller/actions/actions/pause';
import { MediaPlayerController } from '../../../../src/types';
import type { MediaPlayerController } from '../../../../src/types';
import { createCardAPI, createMediaLoadedInfo } from '../../../test-utils';
it('should handle pause action', async () => {
@@ -2,7 +2,7 @@ import { expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { PlayAction } from '../../../../src/card-controller/actions/actions/play';
import { MediaPlayerController } from '../../../../src/types';
import type { MediaPlayerController } from '../../../../src/types';
import { createCardAPI, createMediaLoadedInfo } from '../../../test-utils';
it('should handle play action', async () => {
@@ -2,7 +2,7 @@ import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { PTZControlsAction } from '../../../../src/card-controller/actions/actions/ptz-controls';
import { View } from '../../../../src/view/view';
import type { View } from '../../../../src/view/view';
import { createCardAPI } from '../../../test-utils';
describe('PTZControlsAction', () => {
@@ -1,11 +1,11 @@
import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
import { PTZDigitalAction } from '../../../../src/card-controller/actions/actions/ptz-digital';
import {
import type {
PartialZoomSettings,
ZoomSettingsObserved,
} from '../../../../src/components-lib/zoom/types';
import { PTZAction } from '../../../../src/config/schema/actions/custom/ptz';
import type { PTZAction } from '../../../../src/config/schema/actions/custom/ptz';
import { createCardAPI, createView } from '../../../test-utils';
describe('should handle ptz digital action', () => {
@@ -2,7 +2,7 @@ import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { ScreenshotAction } from '../../../../src/card-controller/actions/actions/screenshot';
import { MediaPlayerController } from '../../../../src/types';
import type { MediaPlayerController } from '../../../../src/types';
import { downloadURL } from '../../../../src/utils/download';
import { createCardAPI, createMediaLoadedInfo } from '../../../test-utils';
@@ -3,7 +3,7 @@ import { describe, expect, it, vi } from 'vitest';
import { SubstreamOffAction } from '../../../../src/card-controller/actions/actions/substream-off';
import { applyViewModifiers } from '../../../../src/card-controller/view/modifiers';
import { createSubstreamOffAction } from '../../../../src/utils/action';
import { View } from '../../../../src/view/view';
import type { View } from '../../../../src/view/view';
import { createCardAPI, createView } from '../../../test-utils';
// Runs the off-action for `view` and applies the modifier it produces.
@@ -1,11 +1,11 @@
import { describe, expect, it, vi } from 'vitest';
import { CameraManagerStore } from '../../../../src/camera-manager/store';
import type { CameraManagerStore } from '../../../../src/camera-manager/store';
import { SubstreamOnAction } from '../../../../src/card-controller/actions/actions/substream-on';
import { applyViewModifiers } from '../../../../src/card-controller/view/modifiers';
import { createSubstreamOnAction } from '../../../../src/utils/action';
import { getStreamCameraID } from '../../../../src/view/substream';
import { View } from '../../../../src/view/view';
import type { View } from '../../../../src/view/view';
import {
createCameraConfig,
createCameraManager,
@@ -2,7 +2,7 @@ import { expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { UnmuteAction } from '../../../../src/card-controller/actions/actions/unmute';
import { MediaPlayerController } from '../../../../src/types';
import type { MediaPlayerController } from '../../../../src/types';
import { createCardAPI, createMediaLoadedInfo } from '../../../test-utils';
it('should handle unmute action', async () => {
@@ -49,7 +49,7 @@ import { URLAction } from '../../../src/card-controller/actions/actions/url';
import { ViewAction } from '../../../src/card-controller/actions/actions/view';
import { ActionFactory } from '../../../src/card-controller/actions/factory';
import { INTERNAL_CALLBACK_ACTION } from '../../../src/config/schema/actions/custom/internal';
import { ActionConfig } from '../../../src/config/schema/actions/types';
import type { ActionConfig } from '../../../src/config/schema/actions/types';
// @vitest-environment jsdom
describe('ActionFactory', () => {
@@ -1,9 +1,9 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { ActionsExecutionRequest } from '../../src/card-controller/actions/types.js';
import type { ActionsExecutionRequest } from '../../src/card-controller/actions/types.js';
import { AutomationsManager } from '../../src/card-controller/automations-manager.js';
import { EventWatcherSubscriptionInterface } from '../../src/card-controller/hass/event-watcher.js';
import type { EventWatcherSubscriptionInterface } from '../../src/card-controller/hass/event-watcher.js';
import { ConditionStateManager } from '../../src/condition-trigger/conditions/state-manager.js';
import {
createCardAPI,
+6 -6
View File
@@ -1,17 +1,17 @@
// @vitest-environment jsdom
import { PartialDeep } from 'type-fest';
import type { PartialDeep } from 'type-fest';
import { assert, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManagerStore } from '../../../src/camera-manager/store';
import type { CameraManagerStore } from '../../../src/camera-manager/store';
import { CallManager } from '../../../src/card-controller/call/manager';
import { Ringtone } from '../../../src/card-controller/call/ringtone';
import { CardController } from '../../../src/card-controller/controller';
import type { CardController } from '../../../src/card-controller/controller';
import { SubstreamViewModifier } from '../../../src/card-controller/view/modifiers/substream';
import { ConditionStateChange } from '../../../src/condition-trigger/conditions/types';
import { RingtoneConfig } from '../../../src/config/schema/live';
import { AdvancedCameraCardConfig } from '../../../src/config/schema/types';
import type { ConditionStateChange } from '../../../src/condition-trigger/conditions/types';
import type { RingtoneConfig } from '../../../src/config/schema/live';
import type { AdvancedCameraCardConfig } from '../../../src/config/schema/types';
import { View } from '../../../src/view/view';
import {
createCameraConfig,
+1 -1
View File
@@ -9,7 +9,7 @@ import { ChimeTone } from '../../../src/card-controller/call/tones/chime';
import { CustomTone } from '../../../src/card-controller/call/tones/custom';
import { MelodyTone } from '../../../src/card-controller/call/tones/melody';
import { WestminsterTone } from '../../../src/card-controller/call/tones/westminster';
import { RingtoneConfig } from '../../../src/config/schema/live';
import type { RingtoneConfig } from '../../../src/config/schema/live';
// Each tone constructor returns a fresh `mock<>()` per `new` call; the mock
// implementation persists across `vi.clearAllMocks()` (which only clears call
@@ -1,4 +1,4 @@
import { afterEach, beforeEach, describe, expect, it, Mock, vi } from 'vitest';
import { afterEach, beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
import { CustomTone } from '../../../../src/card-controller/call/tones/custom';
@@ -1,5 +1,5 @@
import { afterEach, beforeEach, Mock, vi } from 'vitest';
import { mock, MockProxy } from 'vitest-mock-extended';
import { afterEach, beforeEach, vi, type Mock } from 'vitest';
import { mock, type MockProxy } from 'vitest-mock-extended';
// Type-safe Web Audio API mocks for tone tests. The real `GeneratedTone`
// constructs an AudioContext directly; here we stub the global `AudioContext`
@@ -1,11 +1,11 @@
import { add } from 'date-fns';
import { PartialDeep } from 'type-fest';
import type { PartialDeep } from 'type-fest';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { CameraTriggersManager } from '../../src/card-controller/camera-triggers-manager';
import { CardController } from '../../src/card-controller/controller';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { TriggersOptions, triggersSchema } from '../../src/config/schema/view';
import type { CardController } from '../../src/card-controller/controller';
import type { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { triggersSchema, type TriggersOptions } from '../../src/config/schema/view';
import {
createCameraConfig,
createCameraManager,
@@ -1,8 +1,8 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { CameraURLManager } from '../../src/card-controller/camera-url-manager';
import { CardCameraURLAPI } from '../../src/card-controller/types';
import { Endpoint } from '../../src/types';
import type { CardCameraURLAPI } from '../../src/card-controller/types';
import type { Endpoint } from '../../src/types';
import { createCardAPI, createViewWithMedia } from '../test-utils';
const createAPIWithMedia = (): CardCameraURLAPI => {
@@ -2,7 +2,7 @@ import { afterEach, assert, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardElementManager } from '../../src/card-controller/card-element-manager';
import { StateWatcher } from '../../src/card-controller/hass/state-watcher';
import type { StateWatcher } from '../../src/card-controller/hass/state-watcher';
import { QueryResults } from '../../src/view/query-results';
import { View } from '../../src/view/view';
import {
@@ -1,5 +1,5 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { z, ZodError } from 'zod';
import { ZodError, type z } from 'zod';
import { AutomationsManager } from '../../../src/card-controller/automations-manager';
import { ConfigManager } from '../../../src/card-controller/config/config-manager';
@@ -7,8 +7,8 @@ import { setRemoteControlEntityFromConfig } from '../../../src/card-controller/c
import { setKeyboardShortcutsFromConfig } from '../../../src/card-controller/config/load-keyboard-shortcuts';
import { InitializationAspect } from '../../../src/card-controller/initialization-manager';
import { ConditionStateManager } from '../../../src/condition-trigger/conditions/state-manager';
import { Automation } from '../../../src/config/schema/automations';
import { Trigger } from '../../../src/config/schema/condition-trigger/triggers/types';
import type { Automation } from '../../../src/config/schema/automations';
import type { Trigger } from '../../../src/config/schema/condition-trigger/triggers/types';
import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types';
import { createGeneralAction } from '../../../src/utils/action';
import { createCardAPI, createConfig, flushPromises } from '../../test-utils';
@@ -6,7 +6,7 @@ import { TemplateRenderer } from '../../../src/card-controller/templates/index';
import { ConditionStateManager } from '../../../src/condition-trigger/conditions/state-manager';
import {
INTERNAL_CALLBACK_ACTION,
InternalCallbackActionConfig,
type InternalCallbackActionConfig,
} from '../../../src/config/schema/actions/custom/internal';
import { isAdvancedCameraCardCustomAction } from '../../../src/utils/action';
import {
@@ -2,7 +2,7 @@ import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { setFoldersFromConfig } from '../../../src/card-controller/config/load-folders';
import { FoldersManager } from '../../../src/card-controller/folders/manager';
import type { FoldersManager } from '../../../src/card-controller/folders/manager';
import { createCardAPI, createConfig, createFolder } from '../../test-utils';
describe('setFoldersFromConfig', () => {
@@ -1,8 +1,8 @@
import { describe, expect, it, vi } from 'vitest';
import { setKeyboardShortcutsFromConfig } from '../../../src/card-controller/config/load-keyboard-shortcuts';
import { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import { PTZKeyboardShortcutName } from '../../../src/config/schema/view';
import type { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import type { PTZKeyboardShortcutName } from '../../../src/config/schema/view';
import { createCardAPI, createConfig } from '../../test-utils';
describe('setKeyboardShortcutsFromConfig', () => {
@@ -2,7 +2,7 @@ import { assert, describe, expect, it, vi } from 'vitest';
import { OverridesManager } from '../../../src/card-controller/config/overrides-manager';
import { ConditionStateManager } from '../../../src/condition-trigger/conditions/state-manager';
import { AdvancedCameraCardConfig } from '../../../src/config/schema/types';
import type { AdvancedCameraCardConfig } from '../../../src/config/schema/types';
import { AdvancedCameraCardError } from '../../../src/types';
import { createConfig } from '../../test-utils';
+4 -4
View File
@@ -1,5 +1,5 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock, MockProxy } from 'vitest-mock-extended';
import { mock, type MockProxy } from 'vitest-mock-extended';
import { CameraManager } from '../../src/camera-manager/manager';
import { ActionsManager } from '../../src/card-controller/actions/actions-manager';
@@ -9,7 +9,7 @@ import { CameraTriggersManager } from '../../src/card-controller/camera-triggers
import { CameraURLManager } from '../../src/card-controller/camera-url-manager';
import {
CardElementManager,
CardHTMLElement,
type CardHTMLElement,
} from '../../src/card-controller/card-element-manager';
import { ConfigManager } from '../../src/card-controller/config/config-manager';
import { CardController } from '../../src/card-controller/controller';
@@ -17,8 +17,8 @@ import { DefaultManager } from '../../src/card-controller/default-manager';
import { ExpandManager } from '../../src/card-controller/expand-manager';
import { FoldersManager } from '../../src/card-controller/folders/manager';
import { FullscreenManager } from '../../src/card-controller/fullscreen/fullscreen-manager';
import { EventWatcherSubscriptionInterface } from '../../src/card-controller/hass/event-watcher';
import { HASSManager } from '../../src/card-controller/hass/hass-manager';
import type { EventWatcherSubscriptionInterface } from '../../src/card-controller/hass/event-watcher';
import type { HASSManager } from '../../src/card-controller/hass/hass-manager';
import { InitializationManager } from '../../src/card-controller/initialization-manager';
import { InteractionManager } from '../../src/card-controller/interaction-manager';
import { IssueManager } from '../../src/card-controller/issues/issue-manager';
@@ -1,9 +1,9 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardController } from '../../src/card-controller/controller';
import type { CardController } from '../../src/card-controller/controller';
import { DefaultManager } from '../../src/card-controller/default-manager';
import { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher';
import type { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher';
import {
callStateWatcherCallback,
createCardAPI,
@@ -1,8 +1,8 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { EffectsManager } from '../../../src/card-controller/effects/effects-manager';
import { EffectComponent } from '../../../src/card-controller/effects/types';
import { EffectName } from '../../../src/types';
import type { EffectComponent } from '../../../src/card-controller/effects/types';
import type { EffectName } from '../../../src/types';
import { flushPromises } from '../../test-utils';
vi.mock('../../../src/components/effects/fireworks', () => ({
@@ -2,11 +2,11 @@ import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { FoldersExecutor } from '../../../src/card-controller/folders/executor';
import { HAFoldersEngine } from '../../../src/card-controller/folders/ha/engine';
import { FolderQuery } from '../../../src/card-controller/folders/types';
import { FolderConfig } from '../../../src/config/schema/folders';
import type { HAFoldersEngine } from '../../../src/card-controller/folders/ha/engine';
import type { FolderQuery } from '../../../src/card-controller/folders/types';
import type { FolderConfig } from '../../../src/config/schema/folders';
import { QuerySource } from '../../../src/query-source';
import { Endpoint } from '../../../src/types';
import type { Endpoint } from '../../../src/types';
import { ViewFolder } from '../../../src/view/item';
import { createFolder, createHASS, TestViewMedia } from '../../test-utils';
@@ -1,14 +1,14 @@
import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from 'vitest';
import { HAFoldersEngine } from '../../../../src/card-controller/folders/ha/engine';
import { FolderQuery } from '../../../../src/card-controller/folders/types';
import { FolderConfig, Matcher } from '../../../../src/config/schema/folders';
import type { FolderQuery } from '../../../../src/card-controller/folders/types';
import type { FolderConfig, Matcher } from '../../../../src/config/schema/folders';
import { BrowseMediaViewFolder } from '../../../../src/ha/browse-media/item';
import { browseMediaSchema } from '../../../../src/ha/browse-media/types';
import { getMediaDownloadPath } from '../../../../src/ha/download';
import { homeAssistantWSRequest } from '../../../../src/ha/ws-request';
import { QuerySource } from '../../../../src/query-source';
import { Endpoint } from '../../../../src/types';
import type { Endpoint } from '../../../../src/types';
import { ViewFolder, ViewMedia } from '../../../../src/view/item';
import {
createBrowseMedia,
@@ -3,8 +3,8 @@ import { renderTemplate } from 'ha-nunjucks';
import { describe, expect, it, vi } from 'vitest';
import { MediaMatcher } from '../../../../src/card-controller/folders/ha/media-matcher';
import { Matcher } from '../../../../src/config/schema/folders';
import {
import type { Matcher } from '../../../../src/config/schema/folders';
import type {
BrowseMediaMetadata,
RichBrowseMedia,
} from '../../../../src/ha/browse-media/types';
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest';
import { MetadataGenerator } from '../../../../src/card-controller/folders/ha/metadata-generator';
import { Parser } from '../../../../src/config/schema/folders';
import type { Parser } from '../../../../src/config/schema/folders';
import { createBrowseMedia, createRichBrowseMedia } from '../../../test-utils';
describe('MetadataGenerator', () => {
@@ -1,15 +1,18 @@
import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { FoldersExecutor } from '../../../src/card-controller/folders/executor';
import type { FoldersExecutor } from '../../../src/card-controller/folders/executor';
import { FoldersManager } from '../../../src/card-controller/folders/manager';
import { FolderQuery } from '../../../src/card-controller/folders/types';
import { FolderConfig, FolderConfigWithoutID } from '../../../src/config/schema/folders';
import type { FolderQuery } from '../../../src/card-controller/folders/types';
import type {
FolderConfig,
FolderConfigWithoutID,
} from '../../../src/config/schema/folders';
import { ResolvedMediaCache } from '../../../src/ha/resolved-media';
import { QuerySource } from '../../../src/query-source';
import { Endpoint } from '../../../src/types';
import type { Endpoint } from '../../../src/types';
import { ViewFolder } from '../../../src/view/item';
import { ViewItemCapabilities } from '../../../src/view/types';
import type { ViewItemCapabilities } from '../../../src/view/types';
import {
createCardAPI,
createFolder,
@@ -4,7 +4,7 @@ import { mock } from 'vitest-mock-extended';
import { FullscreenProviderFactory } from '../../../src/card-controller/fullscreen/factory';
import { ScreenfullFullScreenProvider } from '../../../src/card-controller/fullscreen/screenfull';
import { WebkitFullScreenProvider } from '../../../src/card-controller/fullscreen/webkit';
import { WebkitHTMLVideoElement } from '../../../src/types';
import type { WebkitHTMLVideoElement } from '../../../src/types';
import { createCardAPI, setScreenfulEnabled } from '../../test-utils';
// @vitest-environment jsdom
@@ -3,7 +3,7 @@ import { mock } from 'vitest-mock-extended';
import { FullscreenProviderFactory } from '../../../src/card-controller/fullscreen/factory';
import { FullscreenManager } from '../../../src/card-controller/fullscreen/fullscreen-manager';
import { FullscreenProvider } from '../../../src/card-controller/fullscreen/types';
import type { FullscreenProvider } from '../../../src/card-controller/fullscreen/types';
import { createCardAPI } from '../../test-utils';
vi.mock('../../../src/card-controller/fullscreen/factory');
@@ -3,7 +3,10 @@ import { mock } from 'vitest-mock-extended';
import { WebkitFullScreenProvider } from '../../../../src/card-controller/fullscreen/webkit';
import { ConditionStateManager } from '../../../../src/condition-trigger/conditions/state-manager';
import { MediaPlayerController, WebkitHTMLVideoElement } from '../../../../src/types';
import type {
MediaPlayerController,
WebkitHTMLVideoElement,
} from '../../../../src/types';
import {
createCardAPI,
createMediaLoadedInfo,
@@ -1,9 +1,9 @@
import { Connection, HassEvent } from 'home-assistant-js-websocket';
import type { Connection, HassEvent } from 'home-assistant-js-websocket';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { EventWatcher } from '../../../src/card-controller/hass/event-watcher';
import { HomeAssistant } from '../../../src/ha/types';
import type { HomeAssistant } from '../../../src/ha/types';
import {
createHASS,
createHASSEvent,
@@ -9,7 +9,7 @@ import {
import { ConditionStateManager } from '../../src/condition-trigger/conditions/state-manager';
import { sideLoadHomeAssistantElements } from '../../src/ha/side-load-ha-elements.js';
import { loadLanguages } from '../../src/localize/localize';
import { Initializer } from '../../src/utils/initializer/initializer';
import type { Initializer } from '../../src/utils/initializer/initializer';
import { createCardAPI, createConfig, createHASS } from '../test-utils';
vi.mock('../../src/localize/localize.js');
@@ -2,19 +2,19 @@
import { afterEach, assert, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardController } from '../../../src/card-controller/controller';
import type { CardController } from '../../../src/card-controller/controller';
import {
IssueManager,
RETRY_EXPONENTIAL_BASE_SECONDS,
RETRY_EXPONENTIAL_MAX_SECONDS,
} from '../../../src/card-controller/issues/issue-manager';
import {
import type {
Issue,
IssueDescription,
IssueKey,
} from '../../../src/card-controller/issues/types';
import { ConditionStateManager } from '../../../src/condition-trigger/conditions/state-manager';
import { InteractionMode } from '../../../src/config/schema/view';
import type { InteractionMode } from '../../../src/config/schema/view';
import {
createCardAPI,
createConfig,
@@ -2,7 +2,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
import { ConfigUpgradeFailureIssue } from '../../../../src/card-controller/issues/issues/config-upgrade-failure';
import { hasConfigUpgradeFailures } from '../../../../src/config/management';
import { RawAdvancedCameraCardConfig } from '../../../../src/config/types';
import type { RawAdvancedCameraCardConfig } from '../../../../src/config/types';
import { createCardAPI } from '../../../test-utils';
vi.mock('../../../../src/config/management.js');
@@ -2,7 +2,7 @@ import { describe, expect, it, vi } from 'vitest';
import { ConfigUpgradeIssue } from '../../../../src/card-controller/issues/issues/config-upgrade';
import { isConfigUpgradeable } from '../../../../src/config/management';
import { RawAdvancedCameraCardConfig } from '../../../../src/config/types';
import type { RawAdvancedCameraCardConfig } from '../../../../src/config/types';
import { createCardAPI } from '../../../test-utils';
vi.mock('../../../../src/config/management.js');
@@ -1,8 +1,8 @@
import { describe, expect, it, vi } from 'vitest';
import { EventSubscriptionIssue } from '../../../../src/card-controller/issues/issues/event-subscription';
import { Issue } from '../../../../src/card-controller/issues/types';
import { SubscriptionFailure } from '../../../../src/ha/connection/subscription-health-monitor';
import type { Issue } from '../../../../src/card-controller/issues/types';
import type { SubscriptionFailure } from '../../../../src/ha/connection/subscription-health-monitor';
import { localize } from '../../../../src/localize/localize';
import { createSubscriptionHealth } from '../../test-utils';
@@ -1,8 +1,8 @@
import { assert, describe, expect, it, vi } from 'vitest';
import { CardController } from '../../../../src/card-controller/controller';
import type { CardController } from '../../../../src/card-controller/controller';
import { InitializationIssue } from '../../../../src/card-controller/issues/issues/initialization';
import { InternalCallbackActionConfig } from '../../../../src/config/schema/actions/custom/internal';
import type { InternalCallbackActionConfig } from '../../../../src/config/schema/actions/custom/internal';
import { createCardAPI } from '../../../test-utils';
describe('InitializationIssue', () => {
@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { LegacyResourceIssue } from '../../../../src/card-controller/issues/issues/legacy-resource';
import { HomeAssistant } from '../../../../src/ha/types';
import type { HomeAssistant } from '../../../../src/ha/types';
import { createCardAPI, createHASS, createUser } from '../../../test-utils';
const setupHASSResources = (
@@ -2,9 +2,9 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { MediaLoadIssue } from '../../../../src/card-controller/issues/issues/media-load';
import { InternalCallbackActionConfig } from '../../../../src/config/schema/actions/custom/internal';
import type { InternalCallbackActionConfig } from '../../../../src/config/schema/actions/custom/internal';
import { IMAGE_VIEW_TARGET_ID_SENTINEL } from '../../../../src/view/target-id';
import { View } from '../../../../src/view/view';
import type { View } from '../../../../src/view/view';
import { createCardAPI, createMediaLoadedInfo } from '../../../test-utils';
const createAPI = () => createCardAPI();
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest';
import { CardController } from '../../../../src/card-controller/controller';
import type { CardController } from '../../../../src/card-controller/controller';
import { MediaQueryIssue } from '../../../../src/card-controller/issues/issues/media-query';
import { InternalCallbackActionConfig } from '../../../../src/config/schema/actions/custom/internal';
import type { InternalCallbackActionConfig } from '../../../../src/config/schema/actions/custom/internal';
import { createCardAPI } from '../../../test-utils';
const createIssue = (): {
@@ -1,10 +1,10 @@
import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardController } from '../../../../src/card-controller/controller';
import type { CardController } from '../../../../src/card-controller/controller';
import { ViewIncompatibleIssue } from '../../../../src/card-controller/issues/issues/view-incompatible';
import { AdvancedCameraCardError } from '../../../../src/types';
import { View } from '../../../../src/view/view';
import type { View } from '../../../../src/view/view';
import { createCardAPI } from '../../../test-utils';
describe('ViewIncompatibleIssue', () => {
@@ -2,7 +2,7 @@
import { describe, expect, it } from 'vitest';
import { createRetryControl } from '../../../src/card-controller/issues/retry-control';
import { InternalCallbackActionConfig } from '../../../src/config/schema/actions/custom/internal';
import type { InternalCallbackActionConfig } from '../../../src/config/schema/actions/custom/internal';
import { createCardAPI } from '../../test-utils';
describe('createRetryControl', () => {
@@ -2,7 +2,7 @@ import { assert, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { IssueStateManager } from '../../../src/card-controller/issues/state-manager';
import { Issue, IssueDescription } from '../../../src/card-controller/issues/types';
import type { Issue, IssueDescription } from '../../../src/card-controller/issues/types';
import { createHASS } from '../../test-utils';
const createIssueDescription = (
+1 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest';
import { CardController } from '../../../src/card-controller/controller';
import type { CardController } from '../../../src/card-controller/controller';
import { LockManager } from '../../../src/card-controller/lock/manager';
import {
createCameraAction,
@@ -7,8 +7,8 @@ import {
MEDIA_PLAYER_SUPPORT_STOP,
MEDIA_PLAYER_SUPPORT_TURN_OFF,
} from '../../src/const';
import { EntityRegistryManager } from '../../src/ha/registry/entity/types.js';
import { HomeAssistant } from '../../src/ha/types.js';
import type { EntityRegistryManager } from '../../src/ha/registry/entity/types.js';
import type { HomeAssistant } from '../../src/ha/types.js';
import { ViewMediaType } from '../../src/view/item.js';
import { EntityRegistryManagerMock } from '../ha/registry/entity/mock.js';
import {
@@ -5,7 +5,7 @@ import {
MicrophoneManager,
MicrophoneNotSupportedError,
} from '../../src/card-controller/microphone-manager';
import { MicrophoneState } from '../../src/card-controller/types';
import type { MicrophoneState } from '../../src/card-controller/types';
import { createCardAPI, createConfig } from '../test-utils';
const navigatorMock: Navigator = {
@@ -1,9 +1,9 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardElementManager } from '../../src/card-controller/card-element-manager';
import type { CardElementManager } from '../../src/card-controller/card-element-manager';
import { NotificationManager } from '../../src/card-controller/notification-manager';
import { CardNotificationAPI } from '../../src/card-controller/types';
import type { CardNotificationAPI } from '../../src/card-controller/types';
describe('NotificationManager', () => {
const cardElementManager = mock<CardElementManager>();
+2 -2
View File
@@ -1,10 +1,10 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardController } from '../../src/card-controller/controller';
import type { CardController } from '../../src/card-controller/controller';
import { PIPManager } from '../../src/card-controller/pip-manager';
import { ConditionStateManager } from '../../src/condition-trigger/conditions/state-manager';
import { MediaPlayerController } from '../../src/types';
import type { MediaPlayerController } from '../../src/types';
import { createCardAPI, createMediaLoadedInfo, flushPromises } from '../test-utils';
const stubPIPSupported = (enabled = true): void => {
@@ -1,7 +1,7 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardController } from '../../src/card-controller/controller';
import type { CardController } from '../../src/card-controller/controller';
import { QueryStringManager } from '../../src/card-controller/query-string-manager';
import { SubstreamViewModifier } from '../../src/card-controller/view/modifiers/substream';
import { createCardAPI, createConfig } from '../test-utils';
@@ -1,7 +1,7 @@
import { describe, expect, it, vi } from 'vitest';
import { StatusBarItemManager } from '../../src/card-controller/status-bar-item-manager';
import { StatusBarString } from '../../src/config/schema/actions/types';
import type { StatusBarString } from '../../src/config/schema/actions/types';
import { QueryResults } from '../../src/view/query-results';
import {
createCameraManager,
+2 -2
View File
@@ -1,8 +1,8 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { StyleManager } from '../../src/card-controller/style-manager';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { ThemeName } from '../../src/config/schema/view';
import type { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import type { ThemeName } from '../../src/config/schema/view';
import { createCardAPI, createConfig, createView } from '../test-utils';
// @vitest-environment jsdom
+2 -2
View File
@@ -1,7 +1,7 @@
import { vi } from 'vitest';
import { mock, MockProxy } from 'vitest-mock-extended';
import { mock, type MockProxy } from 'vitest-mock-extended';
import { SubscriptionHealthInterface } from '../../src/ha/connection/subscription-health-monitor';
import type { SubscriptionHealthInterface } from '../../src/ha/connection/subscription-health-monitor';
// A benign mocked event-subscription health surface: no failures, listeners
// return a no-op unsubscribe. Tests configure `getFailures`/`retry` as needed.
+7 -4
View File
@@ -1,11 +1,14 @@
import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { FoldersManager } from '../../../src/card-controller/folders/manager';
import type { FoldersManager } from '../../../src/card-controller/folders/manager';
import { ViewFactory } from '../../../src/card-controller/view/factory';
import { ViewIncompatible, ViewModifier } from '../../../src/card-controller/view/types';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { ViewDisplayMode } from '../../../src/config/schema/common/display';
import {
ViewIncompatible,
type ViewModifier,
} from '../../../src/card-controller/view/types';
import type { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import type { ViewDisplayMode } from '../../../src/config/schema/common/display';
import { View } from '../../../src/view/view';
import {
createCameraManager,
@@ -1,4 +1,4 @@
import { ViewContext } from 'view';
import type { ViewContext } from 'view';
import { expect, it } from 'vitest';
import { MergeContextViewModifier } from '../../../../src/card-controller/view/modifiers/merge-context';
+2 -2
View File
@@ -1,7 +1,7 @@
import { vi } from 'vitest';
import { CardController } from '../../../src/card-controller/controller';
import { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import type { CardController } from '../../../src/card-controller/controller';
import type { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import {
createCameraManager,
createCapabilities,
@@ -1,21 +1,21 @@
import { ViewContext } from 'view';
import type { ViewContext } from 'view';
import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CardController } from '../../../src/card-controller/controller';
import { ViewFactory } from '../../../src/card-controller/view/factory';
import type { CardController } from '../../../src/card-controller/controller';
import type { ViewFactory } from '../../../src/card-controller/view/factory';
import { SetQueryViewModifier } from '../../../src/card-controller/view/modifiers/set-query';
import {
import type {
QueryExecutorOptions,
ViewModifier,
} from '../../../src/card-controller/view/types';
import { ViewManager } from '../../../src/card-controller/view/view-manager';
import { ViewQueryExecutor } from '../../../src/card-controller/view/view-query-executor';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import type { ViewQueryExecutor } from '../../../src/card-controller/view/view-query-executor';
import type { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { ViewMedia, ViewMediaType } from '../../../src/view/item';
import { QueryResults } from '../../../src/view/query-results';
import { UnifiedQuery } from '../../../src/view/unified-query';
import { View } from '../../../src/view/view';
import type { View } from '../../../src/view/view';
import { createCardAPI, createEventQuery, createView } from '../../test-utils';
const createInitializedCardAPI = (initialized?: boolean): CardController => {
@@ -1,11 +1,11 @@
import { afterAll, assert, beforeAll, describe, expect, it, vi } from 'vitest';
import { Capabilities } from '../../../src/camera-manager/capabilities';
import { EventQuery, QueryType } from '../../../src/camera-manager/types';
import { QueryType, type EventQuery } from '../../../src/camera-manager/types';
import { applyViewModifiers } from '../../../src/card-controller/view/modifiers';
import { ViewQueryExecutor } from '../../../src/card-controller/view/view-query-executor';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { PerformanceConfig } from '../../../src/config/schema/performance';
import type { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import type { PerformanceConfig } from '../../../src/config/schema/performance';
import { QuerySource } from '../../../src/query-source';
import { UnifiedQuery } from '../../../src/view/unified-query';
import { View } from '../../../src/view/view';
@@ -1,4 +1,4 @@
import { ReactiveControllerHost } from 'lit';
import type { ReactiveControllerHost } from 'lit';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
@@ -1,19 +1,24 @@
import { assert, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import {
import type {
ViewManagerEpoch,
ViewManagerInterface,
} from '../../../src/card-controller/view/types';
import { GalleryController } from '../../../src/components-lib/gallery/controller';
import { THUMBNAIL_WIDTH_DEFAULT } from '../../../src/config/schema/common/controls/thumbnails';
import { FolderConfig } from '../../../src/config/schema/folders';
import { MediaGalleryThumbnailsConfig } from '../../../src/config/schema/media-gallery';
import { ViewFolder, ViewItem, ViewMedia, ViewMediaType } from '../../../src/view/item';
import { QueryResults } from '../../../src/view/query-results';
import { UnifiedQuery } from '../../../src/view/unified-query';
import { UnifiedQueryRunner } from '../../../src/view/unified-query-runner';
import { View } from '../../../src/view/view';
import type { FolderConfig } from '../../../src/config/schema/folders';
import type { MediaGalleryThumbnailsConfig } from '../../../src/config/schema/media-gallery';
import {
ViewFolder,
ViewMedia,
ViewMediaType,
type ViewItem,
} from '../../../src/view/item';
import type { QueryResults } from '../../../src/view/query-results';
import type { UnifiedQuery } from '../../../src/view/unified-query';
import type { UnifiedQueryRunner } from '../../../src/view/unified-query-runner';
import type { View } from '../../../src/view/view';
// @vitest-environment jsdom
const createThumbnailConfig = (
@@ -1,11 +1,11 @@
import { LitElement } from 'lit';
import type { LitElement } from 'lit';
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
import {
GalleryColumnCountRoundMethod,
GalleryCoreController,
type GalleryColumnCountRoundMethod,
} from '../../../src/components-lib/gallery/gallery-core-controller';
import { GalleryExtendEvent } from '../../../src/components/gallery/types';
import type { GalleryExtendEvent } from '../../../src/components/gallery/types';
import { scrollIntoView } from '../../../src/utils/scroll';
import { sleep } from '../../../src/utils/sleep';
import {
@@ -10,7 +10,7 @@ import {
} from 'vitest';
import { LazyLoadController } from '../../src/components-lib/lazy-load-controller';
import { LazyUnloadCondition } from '../../src/config/schema/common/media-actions';
import type { LazyUnloadCondition } from '../../src/config/schema/common/media-actions';
import {
callIntersectionHandler,
callVisibilityHandler,
@@ -1,7 +1,7 @@
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { MicrophoneManager } from '../../../src/card-controller/microphone-manager';
import type { MicrophoneManager } from '../../../src/card-controller/microphone-manager';
import { MicrophoneActionsController } from '../../../src/components-lib/live/microphone-actions-controller';
import {
callIntersectionHandler,
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest';
import { getTechnologyForVideoRTC } from '../../../../src/components-lib/live/utils/get-technology-for-video-rtc';
import { VideoRTC } from '../../../../src/components/live/providers/go2rtc/video-rtc';
import type { VideoRTC } from '../../../../src/components/live/providers/go2rtc/video-rtc';
import { createLitElement } from '../../../test-utils';
// @vitest-environment jsdom
@@ -1,12 +1,12 @@
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { MicrophoneState } from '../../src/card-controller/types';
import type { MicrophoneState } from '../../src/card-controller/types';
import {
MediaActionsController,
MediaActionsControllerOptions,
type MediaActionsControllerOptions,
} from '../../src/components-lib/media-actions-controller';
import { MediaPlayerController, MediaPlayerElement } from '../../src/types';
import type { MediaPlayerController, MediaPlayerElement } from '../../src/types';
import {
callIntersectionHandler,
callMutationHandler,
@@ -1,8 +1,8 @@
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
import { MediaDimensionsContainerController } from '../../src/components-lib/media-dimensions-container-controller';
import { CameraDimensionsConfig, Rotation } from '../../src/config/schema/cameras';
import { MediaLoadedInfo } from '../../src/types';
import type { CameraDimensionsConfig, Rotation } from '../../src/config/schema/cameras';
import type { MediaLoadedInfo } from '../../src/types';
import {
callResizeHandler,
createLitElement,
@@ -9,28 +9,28 @@ import {
it,
vi,
} from 'vitest';
import { mock, MockProxy } from 'vitest-mock-extended';
import { mock, type MockProxy } from 'vitest-mock-extended';
import { Capabilities } from '../../src/camera-manager/capabilities';
import {
EventQuery,
MediaQuery,
QueryType,
RecordingQuery,
ReviewQuery,
type EventQuery,
type MediaQuery,
type RecordingQuery,
type ReviewQuery,
} from '../../src/camera-manager/types';
import { FoldersManager } from '../../src/card-controller/folders/manager';
import { ViewManager } from '../../src/card-controller/view/view-manager';
import type { FoldersManager } from '../../src/card-controller/folders/manager';
import type { ViewManager } from '../../src/card-controller/view/view-manager';
import {
MediaFilterController,
MediaFilterCoreDefaults,
MediaFilterCoreFavoriteSelection,
MediaFilterCoreReviewedSelection,
MediaFilterCoreWhen,
MediaFilterMediaType,
type MediaFilterCoreDefaults,
} from '../../src/components-lib/media-filter-controller';
import { QuerySource } from '../../src/query-source';
import { Severity } from '../../src/severity';
import type { Severity } from '../../src/severity';
import { UnifiedQuery } from '../../src/view/unified-query';
import {
createCameraConfig,
@@ -3,9 +3,9 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import {
ExtendedMasonry,
MediaGridConstructorOptions,
MediaGridController,
type ExtendedMasonry,
type MediaGridConstructorOptions,
} from '../../src/components-lib/media-grid-controller';
import {
createSlot,
@@ -2,7 +2,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { MediaLoadedInfoSourceController } from '../../src/components-lib/media-loaded-info-source-controller';
import { MediaPlayerController } from '../../src/types';
import type { MediaPlayerController } from '../../src/types';
import { createLitElement, createMediaLoadedInfo } from '../test-utils';
// @vitest-environment jsdom
@@ -1,4 +1,4 @@
import JSMpeg from '@cycjimmy/jsmpeg-player';
import type JSMpeg from '@cycjimmy/jsmpeg-player';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CachedValueController } from '../../../src/components-lib/cached-value-controller';
import type { CachedValueController } from '../../../src/components-lib/cached-value-controller';
import { ImageMediaPlayerController } from '../../../src/components-lib/media-player/image';
import { UpdatingImageMediaPlayerController } from '../../../src/components-lib/media-player/updating-image';
import { createLitElement } from '../../test-utils';
@@ -2,16 +2,16 @@ import { format } from 'date-fns';
import { afterEach, assert, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { CameraManager } from '../../../src/camera-manager/manager';
import type { CameraManager } from '../../../src/camera-manager/manager';
import { ActionFactory } from '../../../src/card-controller/actions/factory';
import { CardController } from '../../../src/card-controller/controller';
import { ViewItemManager } from '../../../src/card-controller/view/item-manager';
import { ViewManagerEpoch } from '../../../src/card-controller/view/types';
import type { CardController } from '../../../src/card-controller/controller';
import type { ViewItemManager } from '../../../src/card-controller/view/item-manager';
import type { ViewManagerEpoch } from '../../../src/card-controller/view/types';
import {
MediaNotificationController,
NotificationControlsContext,
type NotificationControlsContext,
} from '../../../src/components-lib/media/notification-controller';
import { NotificationControl } from '../../../src/config/schema/actions/types';
import type { NotificationControl } from '../../../src/config/schema/actions/types';
import { formatDateAndTime } from '../../../src/utils/basic';
import { downloadMedia, navigateToTimeline } from '../../../src/utils/media-actions';
import { ViewFolder, ViewMediaType } from '../../../src/view/item';

Some files were not shown because too many files have changed in this diff Show More