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
+4
View File
@@ -65,6 +65,10 @@ export default defineConfig([
curly: 'error',
'local/no-em-dash': 'error',
'@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
'@typescript-eslint/consistent-type-imports': [
'error',
{ fixStyle: 'separate-type-imports' },
],
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/no-non-null-assertion': 'error',
'@typescript-eslint/parameter-properties': 'error',
+3 -3
View File
@@ -1,13 +1,13 @@
import { noChange } from 'lit';
import {
AttributePart,
Directive,
directive,
DirectiveParameters,
type AttributePart,
type DirectiveParameters,
} from 'lit/directive.js';
import { fireHASSEvent } from './ha/fire-hass-event.js';
import { ActionHandlerDetail, ActionHandlerOptions } from './ha/types.js';
import type { ActionHandlerDetail, ActionHandlerOptions } from './ha/types.js';
import { stopEventFromActivatingCardWideActions } from './utils/action.js';
import { Timer } from './utils/timer.js';
+1 -1
View File
@@ -1,4 +1,4 @@
import { CacheInterface } from './types.js';
import type { CacheInterface } from './types.js';
export class CacheBase<Key, Value> implements CacheInterface<Key, Value> {
private _cache: Map<Key, Value>;
+1 -1
View File
@@ -1,5 +1,5 @@
import { EqualityCache } from './equality-cache';
import { CacheInterface } from './types';
import type { CacheInterface } from './types';
interface ExpiringValue<Value> {
value: Value;
@@ -1,25 +1,25 @@
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import type { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import type { CameraConfig } from '../../config/schema/cameras';
import { BROWSE_MEDIA_CACHE_SECONDS } from '../../ha/browse-media/types';
import { BrowseMediaWalker } from '../../ha/browse-media/walker';
import type { BrowseMediaWalker } from '../../ha/browse-media/walker';
import { getMediaDownloadPath } from '../../ha/download';
import { EntityRegistryManager } from '../../ha/registry/entity/types';
import { ResolvedMediaCache } from '../../ha/resolved-media';
import { HomeAssistant } from '../../ha/types';
import type { EntityRegistryManager } from '../../ha/registry/entity/types';
import type { ResolvedMediaCache } from '../../ha/resolved-media';
import type { HomeAssistant } from '../../ha/types';
import { QuerySource } from '../../query-source.js';
import { Endpoint } from '../../types';
import { ViewMedia } from '../../view/item';
import { ViewItemCapabilities } from '../../view/types';
import { CameraManagerEngine } from '../engine';
import type { Endpoint } from '../../types';
import type { ViewMedia } from '../../view/item';
import type { ViewItemCapabilities } from '../../view/types';
import type { CameraManagerEngine } from '../engine';
import { GenericCameraManagerEngine } from '../generic/engine-generic';
import { CameraManagerReadOnlyConfigStore } from '../store';
import type { CameraManagerReadOnlyConfigStore } from '../store';
import {
CameraEventCallback,
CameraManagerRequestCache,
CameraQuery,
EventQuery,
PartialEventQuery,
QueryType,
type CameraEventCallback,
type CameraManagerRequestCache,
type CameraQuery,
type EventQuery,
type PartialEventQuery,
} from '../types';
/**
+2 -2
View File
@@ -1,7 +1,7 @@
import { orderBy, sortedUniqBy } from 'lodash-es';
import { DateRange, MemoryRangeSet } from './range';
import { RecordingSegment } from './types';
import { MemoryRangeSet, type DateRange } from './range';
import type { RecordingSegment } from './types';
class MemoryRangedCache<Data> {
private _ranges: MemoryRangeSet = new MemoryRangeSet();
+15 -12
View File
@@ -1,25 +1,28 @@
import { uniq } from 'lodash-es';
import { ActionsExecutor } from '../card-controller/actions/types';
import { EventSubscriptionRequest } from '../card-controller/hass/event-watcher';
import { HASSManagerReadonlyInterface } from '../card-controller/hass/types';
import { PTZAction, PTZActionPhase } from '../config/schema/actions/custom/ptz';
import { CameraConfig } from '../config/schema/cameras';
import { HAEvent } from '../config/schema/common/ha-event';
import { EnabledProxyConfig, resolveProxyConfig } from '../config/schema/common/proxy';
import type { ActionsExecutor } from '../card-controller/actions/types';
import type { EventSubscriptionRequest } from '../card-controller/hass/event-watcher';
import type { HASSManagerReadonlyInterface } from '../card-controller/hass/types';
import type { PTZAction, PTZActionPhase } from '../config/schema/actions/custom/ptz';
import type { CameraConfig } from '../config/schema/cameras';
import type { HAEvent } from '../config/schema/common/ha-event';
import {
resolveProxyConfig,
type EnabledProxyConfig,
} from '../config/schema/common/proxy';
import { computeDomain } from '../ha/compute-domain';
import { matchesEventContext, matchesEventData } from '../ha/event-match';
import { getTriggerEventType } from '../ha/get-trigger-event-type';
import { Entity, EntityRegistryManager } from '../ha/registry/entity/types';
import { HassStateDifference, HomeAssistant } from '../ha/types';
import type { Entity, EntityRegistryManager } from '../ha/registry/entity/types';
import type { HassStateDifference, HomeAssistant } from '../ha/types';
import { localize } from '../localize/localize';
import { CapabilitiesRaw, CapabilityKey, Endpoint } from '../types';
import type { CapabilitiesRaw, CapabilityKey, Endpoint } from '../types';
import { arrayify } from '../utils/basic';
import { liveProviderSupports2WayAudio } from '../utils/live-provider';
import { Capabilities } from './capabilities';
import { CameraManagerEngine } from './engine';
import type { CameraManagerEngine } from './engine';
import { CameraNoIDError } from './error';
import {
import type {
CameraEndpoints,
CameraEndpointsContext,
CameraEventCallback,
+4 -4
View File
@@ -1,10 +1,10 @@
import {
CapabilitiesRaw,
CapabilityKey,
capabilityKeys,
PTZCapabilities,
type CapabilitiesRaw,
type CapabilityKey,
type PTZCapabilities,
} from '../types';
import { CapabilitySearchKeys } from './types';
import type { CapabilitySearchKeys } from './types';
export class Capabilities {
private _capabilities: CapabilitiesRaw;
+8 -8
View File
@@ -1,14 +1,14 @@
import { HASSManagerReadonlyInterface } from '../card-controller/hass/types';
import { CameraConfig } from '../config/schema/cameras';
import type { HASSManagerReadonlyInterface } from '../card-controller/hass/types';
import type { CameraConfig } from '../config/schema/cameras';
import { BrowseMediaWalker } from '../ha/browse-media/walker';
import { DeviceRegistryManager } from '../ha/registry/device';
import { EntityRegistryManager } from '../ha/registry/entity/types';
import { ResolvedMediaCache } from '../ha/resolved-media';
import { HomeAssistant } from '../ha/types';
import type { DeviceRegistryManager } from '../ha/registry/device';
import type { EntityRegistryManager } from '../ha/registry/entity/types';
import type { ResolvedMediaCache } from '../ha/resolved-media';
import type { HomeAssistant } from '../ha/types';
import { RecordingSegmentsCache } from './cache';
import { CameraManagerEngine } from './engine';
import type { CameraManagerEngine } from './engine';
import { CameraNoEntityError } from './error';
import { CameraEventCallback, CameraManagerRequestCache, Engine } from './types';
import { CameraManagerRequestCache, Engine, type CameraEventCallback } from './types';
import { getCameraEntityFromConfig } from './utils/camera-entity-from-config';
interface CameraManagerEngineFactoryOptions {
+8 -8
View File
@@ -1,11 +1,11 @@
import { CameraConfig } from '../config/schema/cameras';
import { HomeAssistant } from '../ha/types';
import { Endpoint } from '../types';
import { ViewMedia } from '../view/item';
import { ViewItemCapabilities } from '../view/types';
import { Camera } from './camera';
import { CameraManagerReadOnlyConfigStore } from './store';
import {
import type { CameraConfig } from '../config/schema/cameras';
import type { HomeAssistant } from '../ha/types';
import type { Endpoint } from '../types';
import type { ViewMedia } from '../view/item';
import type { ViewItemCapabilities } from '../view/types';
import type { Camera } from './camera';
import type { CameraManagerReadOnlyConfigStore } from './store';
import type {
CameraManagerCameraMetadata,
CameraQuery,
DefaultQueryParameters,
+2 -2
View File
@@ -1,5 +1,5 @@
import { HomeAssistant } from '../ha/types';
import { Camera, CameraInitializationOptions } from './camera';
import type { HomeAssistant } from '../ha/types';
import { Camera, type CameraInitializationOptions } from './camera';
import { CameraNoEntityError } from './error';
/**
+17 -14
View File
@@ -1,21 +1,21 @@
import { format } from 'date-fns';
import { ActionsExecutor } from '../../card-controller/actions/types';
import { PTZAction, PTZActionPhase } from '../../config/schema/actions/custom/ptz';
import { CameraConfig } from '../../config/schema/cameras';
import { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import type { ActionsExecutor } from '../../card-controller/actions/types';
import type { PTZAction, PTZActionPhase } from '../../config/schema/actions/custom/ptz';
import type { CameraConfig } from '../../config/schema/cameras';
import type { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import type { HomeAssistant } from '../../ha/types';
import { SEVERITIES } from '../../severity';
import {
CapabilitiesRaw,
Endpoint,
PTZCapabilities,
PTZMovementType,
type CapabilitiesRaw,
type Endpoint,
type PTZCapabilities,
} from '../../types';
import { errorToConsole } from '../../utils/basic';
import { Camera, CameraInitializationOptions } from '../camera';
import { Camera, type CameraInitializationOptions } from '../camera';
import { CameraNoEntityError } from '../error';
import { CameraEndpoints, CameraEndpointsContext } from '../types';
import type { CameraEndpoints, CameraEndpointsContext } from '../types';
import { getCameraEntityFromConfig } from '../utils/camera-entity-from-config';
import {
getGo2RTCMetadataEndpoint,
@@ -25,11 +25,14 @@ import { getPTZCapabilitiesFromCameraConfig } from '../utils/ptz';
import { getPTZInfo } from './requests';
import {
FRIGATE_SEVERITY_MAP,
FrigateEventChange,
FrigateReviewChange,
PTZInfo,
type FrigateEventChange,
type FrigateReviewChange,
type PTZInfo,
} from './types';
import { FrigateWatcherRequest, FrigateWatcherSubscriptionInterface } from './watcher';
import type {
FrigateWatcherRequest,
FrigateWatcherSubscriptionInterface,
} from './watcher';
const CAMERA_BIRDSEYE = 'birdseye' as const;
+45 -45
View File
@@ -1,61 +1,61 @@
import { add, endOfHour, fromUnixTime, startOfHour } from 'date-fns';
import { isEqual, orderBy, throttle, uniqWith } from 'lodash-es';
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import type { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import type { CameraConfig } from '../../config/schema/cameras';
import { getEntityTitle } from '../../ha/get-entity-title';
import { EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import type { EntityRegistryManager } from '../../ha/registry/entity/types';
import type { HomeAssistant } from '../../ha/types';
import { hasUnsupportedFilters, QuerySource } from '../../query-source.js';
import { Endpoint } from '../../types';
import type { Endpoint } from '../../types';
import {
allPromises,
formatDate,
prettifyTitle,
runWhenIdleIfSupported,
} from '../../utils/basic';
import { ViewMedia, ViewMediaType } from '../../view/item';
import { ViewMediaType, type ViewMedia } from '../../view/item';
import { ViewItemClassifier } from '../../view/item-classifier';
import { ViewItemCapabilities } from '../../view/types';
import { RecordingSegmentsCache } from '../cache';
import { Camera } from '../camera';
import type { ViewItemCapabilities } from '../../view/types';
import type { RecordingSegmentsCache } from '../cache';
import type { Camera } from '../camera';
import {
CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT,
CameraManagerEngine,
type CameraManagerEngine,
} from '../engine';
import { GenericCameraManagerEngine } from '../generic/engine-generic';
import { DateRange } from '../range';
import { CameraManagerReadOnlyConfigStore } from '../store';
import type { DateRange } from '../range';
import type { CameraManagerReadOnlyConfigStore } from '../store';
import {
CameraEventCallback,
CameraManagerCameraMetadata,
CameraManagerRequestCache,
CameraQuery,
DefaultQueryParameters,
Engine,
EngineOptions,
EventQuery,
EventQueryResults,
EventQueryResultsMap,
MediaMetadataQuery,
MediaMetadataQueryResults,
MediaMetadataQueryResultsMap,
PartialEventQuery,
PartialRecordingQuery,
PartialRecordingSegmentsQuery,
PartialReviewQuery,
QueryResults,
QueryResultsType,
QueryReturnType,
QueryType,
RecordingQuery,
RecordingQueryResults,
RecordingQueryResultsMap,
RecordingSegment,
RecordingSegmentsQuery,
RecordingSegmentsQueryResultsMap,
ReviewQuery,
ReviewQueryResultsMap,
type CameraEventCallback,
type CameraManagerCameraMetadata,
type CameraManagerRequestCache,
type CameraQuery,
type DefaultQueryParameters,
type EngineOptions,
type EventQuery,
type EventQueryResults,
type EventQueryResultsMap,
type MediaMetadataQuery,
type MediaMetadataQueryResults,
type MediaMetadataQueryResultsMap,
type PartialEventQuery,
type PartialRecordingQuery,
type PartialRecordingSegmentsQuery,
type PartialReviewQuery,
type QueryResults,
type QueryReturnType,
type RecordingQuery,
type RecordingQueryResults,
type RecordingQueryResultsMap,
type RecordingSegment,
type RecordingSegmentsQuery,
type RecordingSegmentsQueryResultsMap,
type ReviewQuery,
type ReviewQueryResultsMap,
} from '../types';
import { FrigateCamera, isBirdseye } from './camera';
import { FrigateViewMediaFactory } from './media';
@@ -66,18 +66,18 @@ import {
getRecordingSegments,
getRecordingsSummary,
getReviews,
NativeFrigateEventQuery,
NativeFrigateRecordingSegmentsQuery,
retainEvent,
setReviewsReviewed,
type NativeFrigateEventQuery,
type NativeFrigateRecordingSegmentsQuery,
} from './requests';
import {
FRIGATE_SEVERITY_MAP,
FrigateEventQueryResults,
FrigateRecording,
FrigateRecordingQueryResults,
FrigateRecordingSegmentsQueryResults,
FrigateReviewQueryResults,
type FrigateEventQueryResults,
type FrigateRecording,
type FrigateRecordingQueryResults,
type FrigateRecordingSegmentsQueryResults,
type FrigateReviewQueryResults,
} from './types';
import { FrigateEventWatcher, FrigateReviewWatcher } from './watcher';
@@ -1,4 +1,4 @@
import { ViewMedia } from '../../view/item';
import type { ViewMedia } from '../../view/item';
import {
FrigateEventViewMedia,
FrigateRecordingViewMedia,
+6 -6
View File
@@ -1,16 +1,16 @@
import { fromUnixTime } from 'date-fns';
import { isEqual } from 'lodash-es';
import { CameraConfig } from '../../config/schema/cameras';
import { Severity } from '../../severity';
import type { CameraConfig } from '../../config/schema/cameras';
import type { Severity } from '../../severity';
import {
EventViewMedia,
RecordingViewMedia,
ReviewViewMedia,
ViewMedia,
ViewMediaType,
type EventViewMedia,
type RecordingViewMedia,
type ReviewViewMedia,
} from '../../view/item';
import { FrigateEvent, FrigateRecording, FrigateReview } from './types';
import type { FrigateEvent, FrigateRecording, FrigateReview } from './types';
import {
getEventMediaContentID,
getEventThumbnailURL,
+9 -9
View File
@@ -1,24 +1,24 @@
import { HomeAssistant } from '../../ha/types';
import type { HomeAssistant } from '../../ha/types';
import { homeAssistantWSRequest } from '../../ha/ws-request';
import { localize } from '../../localize/localize';
import { AdvancedCameraCardError } from '../../types';
import { RecordingSegment } from '../types';
import type { RecordingSegment } from '../types';
import {
EventSummary,
eventSummarySchema,
FrigateEvent,
frigateEventsSchema,
FrigateReview,
frigateReviewsSchema,
PTZInfo,
ptzInfoSchema,
recordingSegmentsSchema,
RecordingSummary,
recordingSummarySchema,
RetainResult,
retainResultSchema,
ReviewResult,
reviewResultSchema,
type EventSummary,
type FrigateEvent,
type FrigateReview,
type PTZInfo,
type RecordingSummary,
type RetainResult,
type ReviewResult,
} from './types';
/**
+1 -1
View File
@@ -1,7 +1,7 @@
import { z } from 'zod';
import { dayToDate } from '../../utils/basic';
import {
import type {
Engine,
EventQueryResults,
RecordingQueryResults,
+3 -3
View File
@@ -1,7 +1,7 @@
import { CameraConfig } from '../../config/schema/cameras';
import { Severity } from '../../severity';
import type { CameraConfig } from '../../config/schema/cameras';
import type { Severity } from '../../severity';
import { formatDateAndTime, prettifyTitle } from '../../utils/basic';
import {
import type {
FrigateEvent,
FrigateRecording,
FrigateReview,
+4 -4
View File
@@ -1,12 +1,12 @@
import { z } from 'zod';
import type { z } from 'zod';
import { HASSConnectionSubscriptionManager } from '../../ha/connection/subscription-manager';
import { HASSSource } from '../../ha/source';
import type { HASSSource } from '../../ha/source';
import {
FrigateEventChange,
frigateEventChangeSchema,
FrigateReviewChange,
frigateReviewChangeSchema,
type FrigateEventChange,
type FrigateReviewChange,
} from './types';
// Generic request interface for Frigate watchers
+30 -30
View File
@@ -1,39 +1,39 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import type { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import type { CameraConfig } from '../../config/schema/cameras';
import { getEntityTitle } from '../../ha/get-entity-title';
import { EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import { Endpoint } from '../../types';
import { ViewMedia } from '../../view/item';
import { ViewItemCapabilities } from '../../view/types';
import type { EntityRegistryManager } from '../../ha/registry/entity/types';
import type { HomeAssistant } from '../../ha/types';
import type { Endpoint } from '../../types';
import type { ViewMedia } from '../../view/item';
import type { ViewItemCapabilities } from '../../view/types';
import { Camera } from '../camera';
import { CameraManagerEngine } from '../engine';
import { CameraManagerReadOnlyConfigStore } from '../store';
import type { CameraManagerEngine } from '../engine';
import type { CameraManagerReadOnlyConfigStore } from '../store';
import {
CameraEventCallback,
CameraManagerCameraMetadata,
CameraQuery,
DefaultQueryParameters,
Engine,
EngineOptions,
EventQuery,
EventQueryResultsMap,
MediaMetadataQuery,
MediaMetadataQueryResultsMap,
PartialEventQuery,
PartialRecordingQuery,
PartialRecordingSegmentsQuery,
PartialReviewQuery,
QueryReturnType,
QueryType,
RecordingQuery,
RecordingQueryResultsMap,
RecordingSegmentsQuery,
RecordingSegmentsQueryResultsMap,
ReviewQuery,
ReviewQueryResultsMap,
type CameraEventCallback,
type CameraManagerCameraMetadata,
type CameraQuery,
type DefaultQueryParameters,
type EngineOptions,
type EventQuery,
type EventQueryResultsMap,
type MediaMetadataQuery,
type MediaMetadataQueryResultsMap,
type PartialEventQuery,
type PartialRecordingQuery,
type PartialRecordingSegmentsQuery,
type PartialReviewQuery,
type QueryReturnType,
type QueryType,
type RecordingQuery,
type RecordingQueryResultsMap,
type RecordingSegmentsQuery,
type RecordingSegmentsQueryResultsMap,
type ReviewQuery,
type ReviewQueryResultsMap,
} from '../types';
import { getCameraEntityFromConfig } from '../utils/camera-entity-from-config';
import { getPTZCapabilitiesFromCameraConfig } from '../utils/ptz';
+39 -39
View File
@@ -3,16 +3,16 @@ import { cloneDeep, omit, sum } from 'lodash-es';
import PQueue from 'p-queue';
import { EqualityMap } from '../cache/equality-map.js';
import { CardCameraAPI } from '../card-controller/types.js';
import type { CardCameraAPI } from '../card-controller/types.js';
import { sortItems } from '../card-controller/view/sort.js';
import {
import type {
PTZAction,
PTZActionPhase,
PTZPanTiltAction,
} from '../config/schema/actions/custom/ptz.js';
import { CameraConfig, Rotation } from '../config/schema/cameras.js';
import type { CameraConfig, Rotation } from '../config/schema/cameras.js';
import { MEDIA_CHUNK_SIZE_DEFAULT } from '../const.js';
import { Endpoint } from '../types.js';
import type { Endpoint } from '../types.js';
import {
allPromises,
arrayify,
@@ -23,51 +23,51 @@ import {
import { getCameraID } from '../utils/camera.js';
import { log } from '../utils/debug.js';
import { ViewItemClassifier } from '../view/item-classifier.js';
import { ViewItem, ViewMedia } from '../view/item.js';
import { ViewItemCapabilities } from '../view/types.js';
import type { ViewItem, ViewMedia } from '../view/item.js';
import type { ViewItemCapabilities } from '../view/types.js';
import { Capabilities } from './capabilities.js';
import { CameraManagerEngineFactory } from './engine-factory.js';
import { CameraManagerEngine } from './engine.js';
import type { CameraManagerEngine } from './engine.js';
import {
CameraDuplicateIDError,
CameraNoEngineError,
CameraNoIDError,
} from './error.js';
import { CameraManagerReadOnlyConfigStore, CameraManagerStore } from './store.js';
import { CameraManagerStore, type CameraManagerReadOnlyConfigStore } from './store.js';
import {
CameraEndpoints,
CameraEndpointsContext,
CameraManagerCameraMetadata,
CameraQuery,
DefaultQueryParameters,
Engine,
EngineOptions,
EventQuery,
EventQueryResults,
EventQueryResultsMap,
MediaMetadata,
MediaMetadataQuery,
MediaMetadataQueryResults,
MediaQuery,
PartialCameraQuery,
PartialEventQuery,
PartialQueryConcreteType,
PartialRecordingQuery,
PartialRecordingSegmentsQuery,
PartialReviewQuery,
QueryResults,
QueryResultsType,
QueryReturnType,
QueryType,
RecordingQuery,
RecordingQueryResults,
RecordingQueryResultsMap,
RecordingSegmentsQuery,
RecordingSegmentsQueryResults,
RecordingSegmentsQueryResultsMap,
ResultsMap,
ReviewQuery,
ReviewQueryResults,
type CameraEndpoints,
type CameraEndpointsContext,
type CameraManagerCameraMetadata,
type CameraQuery,
type DefaultQueryParameters,
type Engine,
type EngineOptions,
type EventQuery,
type EventQueryResults,
type EventQueryResultsMap,
type MediaMetadata,
type MediaMetadataQuery,
type MediaMetadataQueryResults,
type MediaQuery,
type PartialCameraQuery,
type PartialEventQuery,
type PartialQueryConcreteType,
type PartialRecordingQuery,
type PartialRecordingSegmentsQuery,
type PartialReviewQuery,
type QueryResults,
type QueryReturnType,
type RecordingQuery,
type RecordingQueryResults,
type RecordingQueryResultsMap,
type RecordingSegmentsQuery,
type RecordingSegmentsQueryResults,
type RecordingSegmentsQueryResultsMap,
type ResultsMap,
type ReviewQuery,
type ReviewQueryResults,
} from './types.js';
export class CameraQueryClassifier {
+4 -4
View File
@@ -1,8 +1,8 @@
import { HomeAssistant } from '../../ha/types';
import { CapabilitiesRaw, Endpoint } from '../../types';
import { CameraInitializationOptions } from '../camera';
import type { HomeAssistant } from '../../ha/types';
import type { CapabilitiesRaw, Endpoint } from '../../types';
import type { CameraInitializationOptions } from '../camera';
import { EntityCamera } from '../entity-camera';
import { CameraEndpointsContext, CameraProxyConfig } from '../types';
import type { CameraEndpointsContext, CameraProxyConfig } from '../types';
import { getPTZCapabilitiesFromCameraConfig } from '../utils/ptz';
export class MotionEyeCamera extends EntityCamera {
@@ -1,44 +1,44 @@
import { add, endOfDay, parse, startOfDay } from 'date-fns';
import { orderBy } from 'lodash-es';
import { CameraConfig } from '../../config/schema/cameras';
import type { CameraConfig } from '../../config/schema/cameras';
import { getViewMediaFromBrowseMediaArray } from '../../ha/browse-media/browse-media-to-view-media';
import {
BROWSE_MEDIA_CACHE_SECONDS,
BrowseMedia,
BrowseMediaCache,
BrowseMediaMetadata,
MEDIA_CLASS_IMAGE,
MEDIA_CLASS_VIDEO,
RichBrowseMedia,
type BrowseMedia,
type BrowseMediaMetadata,
type RichBrowseMedia,
} from '../../ha/browse-media/types';
import { BrowseMediaStep, BrowseMediaTarget } from '../../ha/browse-media/walker';
import type { BrowseMediaStep, BrowseMediaTarget } from '../../ha/browse-media/walker';
import { isMediaWithinDates } from '../../ha/browse-media/within-dates';
import { HomeAssistant } from '../../ha/types';
import type { HomeAssistant } from '../../ha/types';
import { hasUnsupportedFilters } from '../../query-source.js';
import { allPromises, formatDate, isValidDate } from '../../utils/basic';
import { ViewMedia } from '../../view/item';
import type { ViewMedia } from '../../view/item';
import { BrowseMediaCameraManagerEngine } from '../browse-media/engine-browse-media';
import { Camera } from '../camera';
import type { Camera } from '../camera';
import { CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT } from '../engine';
import { EntityCamera } from '../entity-camera';
import { CameraManagerReadOnlyConfigStore } from '../store';
import type { CameraManagerReadOnlyConfigStore } from '../store';
import {
CameraManagerCameraMetadata,
Engine,
EngineOptions,
EventQuery,
EventQueryResults,
EventQueryResultsMap,
MediaMetadataQuery,
MediaMetadataQueryResults,
MediaMetadataQueryResultsMap,
QueryResults,
QueryResultsType,
QueryReturnType,
type CameraManagerCameraMetadata,
type EngineOptions,
type EventQuery,
type EventQueryResults,
type EventQueryResultsMap,
type MediaMetadataQuery,
type MediaMetadataQueryResults,
type MediaMetadataQueryResultsMap,
type QueryResults,
type QueryReturnType,
} from '../types';
import { MotionEyeCamera } from './camera';
import { MotionEyeEventQueryResults } from './types';
import type { MotionEyeEventQueryResults } from './types';
class MotionEyeQueryResultsClassifier {
public static isMotionEyeEventQueryResults(
+2 -2
View File
@@ -1,5 +1,5 @@
import { BrowseMediaMetadata, RichBrowseMedia } from '../../ha/browse-media/types';
import { Engine, EventQueryResults } from '../types';
import type { BrowseMediaMetadata, RichBrowseMedia } from '../../ha/browse-media/types';
import type { Engine, EventQueryResults } from '../types';
// ================================
// MotionEye concrete query results
+10 -10
View File
@@ -1,23 +1,23 @@
import { ActionsExecutor } from '../../card-controller/actions/types';
import {
import type { ActionsExecutor } from '../../card-controller/actions/types';
import type {
PTZAction,
PTZActionPhase,
PTZBaseAction,
} from '../../config/schema/actions/custom/ptz';
import { DeviceRegistryManager } from '../../ha/registry/device/index';
import { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import type { DeviceRegistryManager } from '../../ha/registry/device/index';
import type { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import type { HomeAssistant } from '../../ha/types';
import {
CapabilitiesRaw,
Endpoint,
PTZCapabilities,
PTZMovementType,
type CapabilitiesRaw,
type Endpoint,
type PTZCapabilities,
} from '../../types';
import { createSelectOptionAction } from '../../utils/action.js';
import { Camera, CameraInitializationOptions } from '../camera';
import type { Camera, CameraInitializationOptions } from '../camera';
import { EntityCamera } from '../entity-camera';
import { ReolinkInitializationError } from '../error';
import { CameraEndpointsContext, CameraProxyConfig } from '../types';
import type { CameraEndpointsContext, CameraProxyConfig } from '../types';
import { getPTZCapabilitiesFromCameraConfig } from '../utils/ptz';
// Reolink channels are zero indexed.
+29 -26
View File
@@ -1,49 +1,52 @@
import { add, endOfDay, parse, startOfDay } from 'date-fns';
import { orderBy } from 'lodash-es';
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import type { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import type { CameraConfig } from '../../config/schema/cameras';
import { getViewMediaFromBrowseMediaArray } from '../../ha/browse-media/browse-media-to-view-media';
import { sortMostRecentFirst } from '../../ha/browse-media/sort';
import {
BROWSE_MEDIA_CACHE_SECONDS,
BrowseMedia,
BrowseMediaCache,
BrowseMediaMetadata,
MEDIA_CLASS_VIDEO,
RichBrowseMedia,
type BrowseMedia,
type BrowseMediaMetadata,
type RichBrowseMedia,
} from '../../ha/browse-media/types';
import { BrowseMediaWalker } from '../../ha/browse-media/walker';
import type { BrowseMediaWalker } from '../../ha/browse-media/walker';
import { isMediaWithinDates } from '../../ha/browse-media/within-dates';
import { DeviceRegistryManager } from '../../ha/registry/device';
import { EntityRegistryManager } from '../../ha/registry/entity/types';
import { ResolvedMediaCache } from '../../ha/resolved-media';
import { HomeAssistant } from '../../ha/types';
import type { DeviceRegistryManager } from '../../ha/registry/device';
import type { EntityRegistryManager } from '../../ha/registry/entity/types';
import type { ResolvedMediaCache } from '../../ha/resolved-media';
import type { HomeAssistant } from '../../ha/types';
import { hasUnsupportedFilters } from '../../query-source.js';
import { allPromises, formatDate, isValidDate } from '../../utils/basic';
import { ViewMedia } from '../../view/item';
import type { ViewMedia } from '../../view/item';
import { BrowseMediaCameraManagerEngine } from '../browse-media/engine-browse-media';
import { Camera } from '../camera';
import type { Camera } from '../camera';
import { CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT } from '../engine';
import { CameraManagerReadOnlyConfigStore } from '../store';
import type { CameraManagerReadOnlyConfigStore } from '../store';
import {
CameraEventCallback,
CameraManagerCameraMetadata,
CameraManagerRequestCache,
Engine,
EngineOptions,
EventQuery,
EventQueryResults,
EventQueryResultsMap,
MediaMetadataQuery,
MediaMetadataQueryResults,
MediaMetadataQueryResultsMap,
QueryResults,
QueryResultsType,
QueryReturnType,
type CameraEventCallback,
type CameraManagerCameraMetadata,
type CameraManagerRequestCache,
type EngineOptions,
type EventQuery,
type EventQueryResults,
type EventQueryResultsMap,
type MediaMetadataQuery,
type MediaMetadataQueryResults,
type MediaMetadataQueryResultsMap,
type QueryResults,
type QueryReturnType,
} from '../types';
import { ReolinkCamera } from './camera';
import { BrowseMediaReolinkCameraMetadata, ReolinkEventQueryResults } from './types';
import type {
BrowseMediaReolinkCameraMetadata,
ReolinkEventQueryResults,
} from './types';
export class ReolinkQueryResultsClassifier {
public static isReolinkEventQueryResults(
+2 -2
View File
@@ -1,5 +1,5 @@
import { BrowseMediaMetadata, RichBrowseMedia } from '../../ha/browse-media/types';
import { Engine, EventQueryResults } from '../types';
import type { BrowseMediaMetadata, RichBrowseMedia } from '../../ha/browse-media/types';
import type { Engine, EventQueryResults } from '../types';
export interface BrowseMediaReolinkCameraMetadata {
configEntryID: string;
+6 -6
View File
@@ -1,10 +1,10 @@
import { CameraConfig } from '../config/schema/cameras';
import { CapabilityKey } from '../types';
import type { CameraConfig } from '../config/schema/cameras';
import type { CapabilityKey } from '../types';
import { allPromises } from '../utils/basic';
import { ViewMedia } from '../view/item';
import { Camera } from './camera';
import { CameraManagerEngine } from './engine';
import { CapabilitySearchKeys, CapabilitySearchOptions, Engine } from './types';
import type { ViewMedia } from '../view/item';
import type { Camera } from './camera';
import type { CameraManagerEngine } from './engine';
import type { CapabilitySearchKeys, CapabilitySearchOptions, Engine } from './types';
type CameraManagerEngineCameraIDMap = Map<CameraManagerEngine, Set<string>>;
+10 -6
View File
@@ -1,9 +1,13 @@
import { ActionsExecutor } from '../../card-controller/actions/types';
import { PTZAction, PTZActionPhase } from '../../config/schema/actions/custom/ptz';
import { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import { CapabilitiesRaw, PTZCapabilities, PTZMovementType } from '../../types';
import { CameraInitializationOptions } from '../camera';
import type { ActionsExecutor } from '../../card-controller/actions/types';
import type { PTZAction, PTZActionPhase } from '../../config/schema/actions/custom/ptz';
import type { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import type { HomeAssistant } from '../../ha/types';
import {
PTZMovementType,
type CapabilitiesRaw,
type PTZCapabilities,
} from '../../types';
import type { CameraInitializationOptions } from '../camera';
import { EntityCamera } from '../entity-camera';
import { getPTZCapabilitiesFromCameraConfig } from '../utils/ptz';
+10 -6
View File
@@ -1,10 +1,14 @@
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import { EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import { Camera } from '../camera';
import type { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import type { CameraConfig } from '../../config/schema/cameras';
import type { EntityRegistryManager } from '../../ha/registry/entity/types';
import type { HomeAssistant } from '../../ha/types';
import type { Camera } from '../camera';
import { GenericCameraManagerEngine } from '../generic/engine-generic';
import { CameraEventCallback, CameraManagerCameraMetadata, Engine } from '../types';
import {
Engine,
type CameraEventCallback,
type CameraManagerCameraMetadata,
} from '../types';
import { TPLinkCamera } from './camera';
export class TPLinkCameraManagerEngine extends GenericCameraManagerEngine {
+6 -6
View File
@@ -1,10 +1,10 @@
import { ExpiringEqualityCache } from '../cache/expiring-cache';
import { AdvancedCameraCardView } from '../config/schema/common/const';
import { InternalIcon } from '../config/schema/common/icon';
import { ResolvedProxyConfig } from '../config/schema/common/proxy';
import { BaseQuery, QueryFilters, QuerySource } from '../query-source';
import { CapabilityKey, Endpoint } from '../types';
import { ViewMedia } from '../view/item';
import type { AdvancedCameraCardView } from '../config/schema/common/const';
import type { InternalIcon } from '../config/schema/common/icon';
import type { ResolvedProxyConfig } from '../config/schema/common/proxy';
import type { BaseQuery, QueryFilters, QuerySource } from '../query-source';
import type { CapabilityKey, Endpoint } from '../types';
import type { ViewMedia } from '../view/item';
// ====
// Base
@@ -1,4 +1,4 @@
import { CameraConfig } from '../../config/schema/cameras';
import type { CameraConfig } from '../../config/schema/cameras';
export const getCameraEntityFromConfig = (
cameraConfig?: CameraConfig,
+4 -4
View File
@@ -1,10 +1,10 @@
import { EnabledProxyConfig } from '../../../config/schema/common/proxy';
import type { EnabledProxyConfig } from '../../../config/schema/common/proxy';
import { homeAssistantSignAndFetch } from '../../../ha/fetch';
import { HomeAssistant } from '../../../ha/types';
import type { HomeAssistant } from '../../../ha/types';
import { createProxiedEndpointIfNecessary } from '../../../ha/web-proxy';
import { Endpoint } from '../../../types';
import type { Endpoint } from '../../../types';
import { errorToConsole } from '../../../utils/basic';
import { Go2RTCStreamInfo, go2RTCStreamInfoSchema } from './types';
import { go2RTCStreamInfoSchema, type Go2RTCStreamInfo } from './types';
const getGo2RTCStreamMetadata = async (
hass: HomeAssistant,
+2 -2
View File
@@ -1,5 +1,5 @@
import { CameraConfig } from '../../../config/schema/cameras';
import { Endpoint } from '../../../types';
import type { CameraConfig } from '../../../config/schema/cameras';
import type { Endpoint } from '../../../types';
interface EndpointOptions {
url?: string;
+4 -4
View File
@@ -1,11 +1,11 @@
import {
import type {
PTZAction,
PTZActionPhase,
PTZBaseAction,
} from '../../config/schema/actions/custom/ptz';
import { ActionConfig } from '../../config/schema/actions/types';
import { CameraConfig } from '../../config/schema/cameras';
import { PTZCapabilities, PTZMovementType } from '../../types';
import type { ActionConfig } from '../../config/schema/actions/types';
import type { CameraConfig } from '../../config/schema/cameras';
import { PTZMovementType, type PTZCapabilities } from '../../types';
export const getConfiguredPTZAction = (
cameraConfig: CameraConfig,
@@ -1,6 +1,6 @@
import { endOfDay, endOfHour, endOfMinute, startOfDay, startOfHour } from 'date-fns';
import { DateRange } from '../range';
import type { DateRange } from '../range';
import { capEndDate } from './cap-end-date';
export const convertRangeToCacheFriendlyTimes = (
@@ -1,8 +1,8 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { z } from 'zod';
import { TriggerData } from '../../condition-trigger/triggers/types.js';
import {
import type { TriggerData } from '../../condition-trigger/triggers/types.js';
import type {
ActionConfig,
Actions,
ActionsConfig,
@@ -13,10 +13,10 @@ import {
isAdvancedCameraCardCustomAction,
} from '../../utils/action.js';
import { allPromises, errorToConsole } from '../../utils/basic.js';
import { TemplateRenderer } from '../templates/index.js';
import { CardActionsManagerAPI } from '../types.js';
import type { TemplateRenderer } from '../templates/index.js';
import type { CardActionsManagerAPI } from '../types.js';
import { ActionSet } from './actions/set.js';
import {
import type {
ActionPrepareCallback,
ActionsExecutionRequest,
ActionsExecutor,
+4 -4
View File
@@ -1,13 +1,13 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import {
import type {
ActionConfig,
AuxillaryActionConfig,
} from '../../../config/schema/actions/types.js';
import { localize } from '../../../localize/localize.js';
import { getActionName } from '../../../utils/action';
import { CardActionsAPI } from '../../types';
import { Action, ActionAbortError, ActionPrepareCallback } from '../types';
import type { CardActionsAPI } from '../../types';
import { ActionAbortError, type Action, type ActionPrepareCallback } from '../types';
export class BaseAction<T extends ActionConfig> implements Action {
protected _context: ActionContext;
@@ -1,5 +1,5 @@
import { CallAnswerActionConfig } from '../../../config/schema/actions/custom/call-answer';
import { CardActionsAPI } from '../../types';
import type { CallAnswerActionConfig } from '../../../config/schema/actions/custom/call-answer';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallAnswerAction extends AdvancedCameraCardAction<CallAnswerActionConfig> {
@@ -1,5 +1,5 @@
import { CallEndActionConfig } from '../../../config/schema/actions/custom/call-end';
import { CardActionsAPI } from '../../types';
import type { CallEndActionConfig } from '../../../config/schema/actions/custom/call-end';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallEndAction extends AdvancedCameraCardAction<CallEndActionConfig> {
@@ -1,5 +1,5 @@
import { CallServiceActionConfig } from '../../../config/schema/actions/stock/call-service';
import { CardActionsAPI } from '../../types';
import type { CallServiceActionConfig } from '../../../config/schema/actions/stock/call-service';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallServiceAction extends AdvancedCameraCardAction<CallServiceActionConfig> {
@@ -1,5 +1,5 @@
import { CallStartActionConfig } from '../../../config/schema/actions/custom/call-start';
import { CardActionsAPI } from '../../types';
import type { CallStartActionConfig } from '../../../config/schema/actions/custom/call-start';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallStartAction extends AdvancedCameraCardAction<CallStartActionConfig> {
@@ -1,5 +1,5 @@
import { CameraSelectActionConfig } from '../../../config/schema/actions/custom/camera-select';
import { CardActionsAPI } from '../../types';
import type { CameraSelectActionConfig } from '../../../config/schema/actions/custom/camera-select';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CameraSelectAction extends AdvancedCameraCardAction<CameraSelectActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CameraUIAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,6 +1,6 @@
import { CustomActionConfig } from '../../../config/schema/actions/stock/custom';
import type { CustomActionConfig } from '../../../config/schema/actions/stock/custom';
import { fireHASSEvent } from '../../../ha/fire-hass-event';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CustomAction extends AdvancedCameraCardAction<CustomActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class DefaultAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { DisplayModeActionConfig } from '../../../config/schema/actions/custom/display-mode';
import { CardActionsAPI } from '../../types';
import type { DisplayModeActionConfig } from '../../../config/schema/actions/custom/display-mode';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class DisplayModeSelectAction extends AdvancedCameraCardAction<DisplayModeActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class DownloadAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { EffectActionConfig } from '../../../config/schema/actions/custom/effect';
import { CardActionsAPI } from '../../types';
import type { EffectActionConfig } from '../../../config/schema/actions/custom/effect';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class EffectAction extends AdvancedCameraCardAction<EffectActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ExpandAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class FullscreenAction extends AdvancedCameraCardAction<GeneralActionConfig> {
+5 -5
View File
@@ -1,14 +1,14 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { createConditionEvaluator } from '../../../condition-trigger/conditions/factory';
import { TriggerData } from '../../../condition-trigger/triggers/types';
import {
import type { TriggerData } from '../../../condition-trigger/triggers/types';
import type {
AuxillaryActionConfig,
IfActionConfig,
} from '../../../config/schema/actions/types';
import { TemplateRenderer } from '../../templates/index';
import { CardActionsAPI } from '../../types';
import { ActionPrepareCallback } from '../types';
import type { CardActionsAPI } from '../../types';
import type { ActionPrepareCallback } from '../types';
import { BaseAction } from './base';
export class IfAction extends BaseAction<IfActionConfig> {
+2 -2
View File
@@ -1,7 +1,7 @@
import { MediaNotificationController } from '../../../components-lib/media/notification-controller';
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class InfoAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { InternalCallbackActionConfig } from '../../../config/schema/actions/custom/internal';
import { CardActionsAPI } from '../../types';
import type { InternalCallbackActionConfig } from '../../../config/schema/actions/custom/internal';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class InternalCallbackAction extends AdvancedCameraCardAction<InternalCallbackActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { LogActionConfig } from '../../../config/schema/actions/custom/log';
import { CardActionsAPI } from '../../types';
import type { LogActionConfig } from '../../../config/schema/actions/custom/log';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class LogAction extends AdvancedCameraCardAction<LogActionConfig> {
@@ -1,7 +1,7 @@
import { MediaPlayerActionConfig } from '../../../config/schema/actions/custom/media-player';
import type { MediaPlayerActionConfig } from '../../../config/schema/actions/custom/media-player';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { getStreamCameraID } from '../../../view/substream';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MediaPlayerAction extends AdvancedCameraCardAction<MediaPlayerActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MenuToggleAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneConnectAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneDisconnectAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneMuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneUnmuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,6 +1,6 @@
import { MoreInfoActionConfig } from '../../../config/schema/actions/stock/more-info';
import type { MoreInfoActionConfig } from '../../../config/schema/actions/stock/more-info';
import { fireHASSEvent } from '../../../ha/fire-hass-event';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MoreInfoAction extends AdvancedCameraCardAction<MoreInfoActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,6 +1,6 @@
import { NavigateActionConfig } from '../../../config/schema/actions/stock/navigate';
import type { NavigateActionConfig } from '../../../config/schema/actions/stock/navigate';
import { fireHASSEvent } from '../../../ha/fire-hass-event';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class NavigateAction extends AdvancedCameraCardAction<NavigateActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { NoneActionConfig } from '../../../config/schema/actions/stock/none';
import { CardActionsAPI } from '../../types';
import type { NoneActionConfig } from '../../../config/schema/actions/stock/none';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class NoneAction extends AdvancedCameraCardAction<NoneActionConfig> {
@@ -1,5 +1,5 @@
import { NotificationActionConfig } from '../../../config/schema/actions/types';
import { CardActionsAPI } from '../../types';
import type { NotificationActionConfig } from '../../../config/schema/actions/types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class NotificationAction extends AdvancedCameraCardAction<NotificationActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PauseAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { PerformActionActionConfig } from '../../../config/schema/actions/stock/perform-action';
import { CardActionsAPI } from '../../types';
import type { PerformActionActionConfig } from '../../../config/schema/actions/stock/perform-action';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PerformActionAction extends AdvancedCameraCardAction<PerformActionActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PIPAction extends AdvancedCameraCardAction<GeneralActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PlayAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { PTZControlsActionConfig } from '../../../config/schema/actions/custom/ptz-controls';
import { CardActionsAPI } from '../../types';
import type { PTZControlsActionConfig } from '../../../config/schema/actions/custom/ptz-controls';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PTZControlsAction extends AdvancedCameraCardAction<PTZControlsActionConfig> {
@@ -1,18 +1,18 @@
import { clamp } from 'lodash-es';
import {
PartialZoomSettings,
ZOOM_DEFAULT_PAN_X,
ZOOM_DEFAULT_PAN_Y,
ZOOM_DEFAULT_SCALE,
type PartialZoomSettings,
} from '../../../components-lib/zoom/types';
import { generateViewContextForZoom } from '../../../components-lib/zoom/zoom-view-context';
import { PTZDigitialActionConfig } from '../../../config/schema/actions/custom/ptz-digital';
import type { PTZDigitialActionConfig } from '../../../config/schema/actions/custom/ptz-digital';
import { ZOOM_MAX, ZOOM_MIN } from '../../../config/schema/common/zoom';
import { getPTZTarget } from '../../../utils/ptz';
import { Timer } from '../../../utils/timer';
import { CardActionsAPI } from '../../types';
import { TargetedActionContext } from '../types';
import type { CardActionsAPI } from '../../types';
import type { TargetedActionContext } from '../types';
import {
setInProgressForThisTarget,
stopInProgressForThisTarget,
@@ -1,7 +1,7 @@
import { PTZMultiActionConfig } from '../../../config/schema/actions/custom/ptz-multi';
import type { PTZMultiActionConfig } from '../../../config/schema/actions/custom/ptz-multi';
import { createPTZAction, createPTZDigitalAction } from '../../../utils/action';
import { getPTZTarget, hasCameraTruePTZ, PTZType } from '../../../utils/ptz';
import { CardActionsAPI } from '../../types';
import { getPTZTarget, hasCameraTruePTZ, type PTZType } from '../../../utils/ptz';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
import { PTZAction } from './ptz';
import { PTZDigitalAction } from './ptz-digital';
+2 -2
View File
@@ -1,8 +1,8 @@
import { PTZActionConfig } from '../../../config/schema/actions/custom/ptz';
import type { PTZActionConfig } from '../../../config/schema/actions/custom/ptz';
import { PTZMovementType } from '../../../types';
import { getPTZTarget, ptzActionToCapabilityKey } from '../../../utils/ptz';
import { Timer } from '../../../utils/timer';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import {
setInProgressForThisTarget,
stopInProgressForThisTarget,
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ReloadAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,7 +1,7 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { downloadURL } from '../../../utils/download';
import { generateScreenshotFilename } from '../../../utils/screenshot';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ScreenshotAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,8 +1,8 @@
import { SetReviewActionConfig } from '../../../config/schema/actions/custom/set-review';
import type { SetReviewActionConfig } from '../../../config/schema/actions/custom/set-review';
import { toggleReviewed } from '../../../utils/media-actions';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { getReviewedQueryFilterFromQuery } from '../../../view/utils/query-filter';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class SetReviewAction extends AdvancedCameraCardAction<SetReviewActionConfig> {
+5 -5
View File
@@ -1,10 +1,10 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { ActionConfig } from '../../../config/schema/actions/types';
import type { ActionConfig } from '../../../config/schema/actions/types';
import { arrayify } from '../../../utils/basic';
import { CardActionsAPI } from '../../types';
import { ActionFactory, ActionFactoryOptions } from '../factory';
import { ActionPrepareCallback } from '../types';
import type { CardActionsAPI } from '../../types';
import { ActionFactory, type ActionFactoryOptions } from '../factory';
import type { ActionPrepareCallback } from '../types';
interface ActionSetOptions {
factoryOptions?: ActionFactoryOptions;
+2 -2
View File
@@ -1,6 +1,6 @@
import { SleepActionConfig } from '../../../config/schema/actions/custom/sleep';
import type { SleepActionConfig } from '../../../config/schema/actions/custom/sleep';
import { sleep } from '../../../utils/sleep';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { timeDeltaToSeconds } from '../utils/time-delta';
import { AdvancedCameraCardAction } from './base';
@@ -1,5 +1,5 @@
import { StatusBarActionConfig } from '../../../config/schema/actions/types';
import { CardActionsAPI } from '../../types';
import type { StatusBarActionConfig } from '../../../config/schema/actions/types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class StatusBarAction extends AdvancedCameraCardAction<StatusBarActionConfig> {
@@ -1,5 +1,5 @@
import { SubstreamOffActionConfig } from '../../../config/schema/actions/custom/substream-off';
import { CardActionsAPI } from '../../types';
import type { SubstreamOffActionConfig } from '../../../config/schema/actions/custom/substream-off';
import type { CardActionsAPI } from '../../types';
import { SubstreamViewModifier } from '../../view/modifiers/substream';
import { AdvancedCameraCardAction } from './base';
@@ -1,7 +1,7 @@
import { CameraManager } from '../../../camera-manager/manager';
import { SubstreamOnActionConfig } from '../../../config/schema/actions/custom/substream-on';
import { View } from '../../../view/view';
import { CardActionsAPI } from '../../types';
import type { CameraManager } from '../../../camera-manager/manager';
import type { SubstreamOnActionConfig } from '../../../config/schema/actions/custom/substream-on';
import type { View } from '../../../view/view';
import type { CardActionsAPI } from '../../types';
import { SubstreamViewModifier } from '../../view/modifiers/substream';
import { AdvancedCameraCardAction } from './base';
@@ -1,7 +1,7 @@
import { ToggleActionConfig } from '../../../config/schema/actions/stock/toggle';
import type { ToggleActionConfig } from '../../../config/schema/actions/stock/toggle';
import { computeDomain } from '../../../ha/compute-domain';
import { STATES_OFF } from '../../../ha/const';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ToggleAction extends AdvancedCameraCardAction<ToggleActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class UnmuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { URLActionConfig } from '../../../config/schema/actions/stock/url';
import { CardActionsAPI } from '../../types';
import type { URLActionConfig } from '../../../config/schema/actions/stock/url';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class URLAction extends AdvancedCameraCardAction<URLActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { ViewActionConfig } from '../../../config/schema/actions/custom/view';
import { CardActionsAPI } from '../../types';
import type { ViewActionConfig } from '../../../config/schema/actions/custom/view';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ViewAction extends AdvancedCameraCardAction<ViewActionConfig> {
+7 -4
View File
@@ -1,8 +1,11 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { TriggerData } from '../../condition-trigger/triggers/types';
import type { TriggerData } from '../../condition-trigger/triggers/types';
import { INTERNAL_CALLBACK_ACTION } from '../../config/schema/actions/custom/internal';
import { ActionConfig, AuxillaryActionConfig } from '../../config/schema/actions/types';
import type {
ActionConfig,
AuxillaryActionConfig,
} from '../../config/schema/actions/types';
import { isAdvancedCameraCardCustomAction, isIfAction } from '../../utils/action';
import { CallAnswerAction } from './actions/call-answer';
import { CallEndAction } from './actions/call-end';
@@ -51,7 +54,7 @@ import { ToggleAction } from './actions/toggle';
import { UnmuteAction } from './actions/unmute';
import { URLAction } from './actions/url';
import { ViewAction } from './actions/view';
import { Action } from './types';
import type { Action } from './types';
export interface ActionFactoryOptions {
config?: AuxillaryActionConfig;
+3 -3
View File
@@ -1,10 +1,10 @@
import { TriggerData } from '../../condition-trigger/triggers/types.js';
import {
import type { TriggerData } from '../../condition-trigger/triggers/types.js';
import type {
ActionConfig,
AuxillaryActionConfig,
} from '../../config/schema/actions/types.js';
import { AdvancedCameraCardError } from '../../types.js';
import { CardActionsAPI } from '../types';
import type { CardActionsAPI } from '../types';
// Renders a value's templates, returning a rendered copy. Generic so it
// preserves the value's type (the one cast lives in the renderer that supplies
@@ -1,7 +1,7 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { merge } from 'lodash-es';
import { Action, TargetedActionContext } from '../types';
import type { Action, TargetedActionContext } from '../types';
export const stopInProgressForThisTarget = async (
targetID: string,
@@ -1,5 +1,5 @@
import { fireAdvancedCameraCardEvent } from '../../../utils/fire-advanced-camera-card-event';
import { ActionsExecutionRequest } from '../types';
import type { ActionsExecutionRequest } from '../types';
export const dispatchActionExecutionRequest = (
element: HTMLElement,
@@ -1,4 +1,4 @@
import { TimeDelta } from '../../../config/schema/actions/custom/sleep';
import type { TimeDelta } from '../../../config/schema/actions/custom/sleep';
export const timeDeltaToSeconds = (timeDelta: TimeDelta): number => {
return (
+4 -4
View File
@@ -1,11 +1,11 @@
import { ConditionEvaluator } from '../condition-trigger/conditions/conditions/types.js';
import type { ConditionEvaluator } from '../condition-trigger/conditions/conditions/types.js';
import { createConditionEvaluator } from '../condition-trigger/conditions/factory.js';
import { TriggersManager } from '../condition-trigger/triggers/manager.js';
import { TriggerData } from '../condition-trigger/triggers/types.js';
import { Automation, AutomationActions } from '../config/schema/automations.js';
import type { TriggerData } from '../condition-trigger/triggers/types.js';
import type { Automation, AutomationActions } from '../config/schema/automations.js';
import { localize } from '../localize/localize.js';
import { TemplateRenderer } from './templates/index.js';
import { CardAutomationsAPI, TaggedAutomation } from './types.js';
import type { CardAutomationsAPI, TaggedAutomation } from './types.js';
const MAX_NESTED_AUTOMATION_EXECUTIONS = 10;
+4 -4
View File
@@ -1,13 +1,13 @@
import { createNotificationFromText } from '../../components-lib/notification/factory';
import { ConditionStateChange } from '../../condition-trigger/conditions/types';
import type { ConditionStateChange } from '../../condition-trigger/conditions/types';
import { localize } from '../../localize/localize';
import { Timer } from '../../utils/timer';
import { getStreamCameraID } from '../../view/substream';
import { View } from '../../view/view';
import { CardCallAPI } from '../types';
import type { View } from '../../view/view';
import type { CardCallAPI } from '../types';
import { SubstreamViewModifier } from '../view/modifiers/substream';
import { Ringtone } from './ringtone';
import { CallSession } from './types';
import type { CallSession } from './types';
export class CallManager {
private _api: CardCallAPI;
+2 -2
View File
@@ -1,9 +1,9 @@
import { RingtoneConfig } from '../../config/schema/live';
import type { RingtoneConfig } from '../../config/schema/live';
import { ArpeggioTone } from './tones/arpeggio';
import { ChimeTone } from './tones/chime';
import { CustomTone } from './tones/custom';
import { MelodyTone } from './tones/melody';
import { Tone } from './tones/types';
import type { Tone } from './tones/types';
import { WestminsterTone } from './tones/westminster';
// Module-level singleton lock: only one `Ringtone` plays at a time across all
+1 -1
View File
@@ -1,4 +1,4 @@
import { BellStrikeOptions, BellTone } from './bell';
import { BellTone, type BellStrikeOptions } from './bell';
const PLUCK: BellStrikeOptions = {
sparklePeak: 0.05,
+1 -1
View File
@@ -1,5 +1,5 @@
import { Timer } from '../../../utils/timer';
import { RingtoneFinishedHandler, Tone, ToneEnvelope } from './types';
import type { RingtoneFinishedHandler, Tone, ToneEnvelope } from './types';
// Shared scaffolding for tones generated via the Web Audio API: owns the
// AudioContext lifecycle, the repeat timer, and the bell-shaped note envelope.
+1 -1
View File
@@ -1,4 +1,4 @@
import { RingtoneFinishedHandler, Tone } from './types';
import type { RingtoneFinishedHandler, Tone } from './types';
export class CustomTone implements Tone {
private _audio: HTMLAudioElement | null = null;
+1 -1
View File
@@ -1,4 +1,4 @@
import { View } from '../../view/view';
import type { View } from '../../view/view';
export interface CallSession {
// The camera that owns the call.
@@ -1,9 +1,9 @@
import { maxBy, throttle } from 'lodash-es';
import { CameraEvent } from '../camera-manager/types';
import type { CameraEvent } from '../camera-manager/types';
import { isTriggeredState } from '../ha/is-triggered-state';
import { Timer } from '../utils/timer';
import { CardCameraTriggersAPI } from './types';
import type { CardCameraTriggersAPI } from './types';
interface CameraTriggerState {
// The time of the most recent trigger event. Used to determine the most
+1 -1
View File
@@ -1,5 +1,5 @@
import { ViewItemClassifier } from '../view/item-classifier';
import { CardCameraURLAPI } from './types';
import type { CardCameraURLAPI } from './types';
export class CameraURLManager {
private _api: CardCameraURLAPI;

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