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

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