UNPKG

lavva.exalushome

Version:

Library implementing communication and abstraction layers for ExalusHome system

139 lines 7.03 kB
import { DependencyContainer } from './DependencyContainer'; import { LocalStorageService } from "./Services/LocalStorageService"; import { ExalusConnectionService } from './Services/ExalusConnectionService'; import { WebApiCacheService } from "./Services/WebApi/WebApiCacheService"; import { UsersService } from "./Services/Users/UsersService"; import { DevicesService } from "./Services/Devices/DevicesService"; import { SessionService } from "./Services/Session/SessionService"; import { GeolocationService } from "./Services/Controller/GeolocationService"; import { ControllerConfigurationService } from "./Services/Controller/ControllerConfigurationService"; // 0. Import Module import { initializeLinq } from "linq-to-typescript"; import { ChannelsGroupsService } from "./Services/Devices/ChannelsGroupsService"; import { AppStateService } from "./Services/AppStateService"; import { PicturesService } from './Services/Pictures/PicturesService'; import { UpdatesService } from './Services/Updates/UpdatesService'; import { ManuallyPairedDevicesService } from './Services/Devices/ManuallyPairedDevicesService'; import { ControllerExtensionsService } from './Services/Controller/ControllerExtensionsService'; import { UpdatesProvider } from './Services/Updates/UpdatesProvider'; import { RemoteStorageService } from './Services/RemoteStorageService'; import { StatesHistoryService } from './Services/StatesHistory/StatesHistoryService'; import { ScenesService } from './Services/Scenes/ScenesService'; import { ChatService } from './Services/Chat/ChatService'; import { ConnectedAppsService } from './Services/Controller/ConnectedAppsService'; import { DataMigrationService } from './Services/DataMigrationService'; import { FindControllerService } from './Services/Controller/FindControllerService'; import { LocalNetworkExalusConnectionService } from './Services/LocalNetworkExalusConnectionService'; import { PictureInPictureService } from './Services/PictureInPicture'; import { ControllerNotificationsService } from './Services/Notifications/ControllerNotificationsService'; import { AndroidLocationService } from './Services/AndroidLocationService'; import { AndroidNotificationsService } from './Services/AndroidNotificationService'; import { AppRateService } from './Services/AppRateService'; import { AppLocalesService } from './Services/AppLocalesService'; import { AndroidAutoCarPlayService } from './Services/AndroidAutoCarPlayService'; import { HomeKitService } from './Services/HomeKitService'; // 2. Bind Linq Functions to Array, Map, etc initializeLinq(); export function GetDependencyContainer() { return DependencyContainer.Instance; } export class Api { static Init() { if (DependencyContainer.IsInitialized) return; console.log("Initializing DependencyContainer"); let dep = DependencyContainer.Instance; try { dep.RegisterService(new DataMigrationService()); dep.RegisterService(new LocalStorageService()); dep.RegisterService(new AppStateService()); dep.RegisterService(new WebApiCacheService()); dep.RegisterService(new SessionService()); dep.RegisterService(new PictureInPictureService()); dep.RegisterService(new AppRateService()); dep.RegisterService(new AppLocalesService()); if (Api.IsRunningFromLocalNetwork()) { console.log("\n\nRunning from local network!\n\n"); dep.RegisterService(new LocalNetworkExalusConnectionService()); } else dep.RegisterService(new ExalusConnectionService()); dep.RegisterService(new AndroidLocationService()); dep.RegisterService(new AndroidAutoCarPlayService()); dep.RegisterService(new AndroidNotificationsService()); dep.RegisterService(new RemoteStorageService()); dep.RegisterService(new GeolocationService()); dep.RegisterService(new ControllerConfigurationService()); dep.RegisterService(new FindControllerService()); dep.RegisterService(new ManuallyPairedDevicesService()); dep.RegisterService(new ControllerExtensionsService()); dep.RegisterService(new PicturesService()); dep.RegisterService(new UsersService()); dep.RegisterService(new DevicesService()); dep.RegisterService(new ChannelsGroupsService()); dep.RegisterService(new UpdatesProvider()); dep.RegisterService(new UpdatesService()); dep.RegisterService(new ConnectedAppsService()); dep.RegisterService(new StatesHistoryService()); dep.RegisterService(new ScenesService()); dep.RegisterService(new ChatService()); dep.RegisterService(new ControllerNotificationsService()); dep.RegisterService(new HomeKitService()); } catch (ex) { console.error(ex); } } static IsAppServedFromControllerAsync() { // http reuqest to controller const url = `http://${window.location.hostname}/controller_info`; return fetch(url, { method: 'GET' }) .then(response => { if (response.ok) { return true; } return false; }) .catch(error => { return false; }); } static IsRunningFromLocalNetwork(hostname = window.location.hostname) { return ( //(['localhost', '127.0.0.1', '', '::1'].includes(hostname)) //|| (hostname.startsWith('192.168.')) (hostname.startsWith('192.168.')) || (hostname.startsWith('10.')) || (hostname.startsWith('172.16.')) //|| (hostname.endsWith('.local')) ); } static GetAsync(classType, cancelationToken) { return DependencyContainer.Instance.GetServiceAsync(classType, cancelationToken); } static GetWithTimeoutAsync(classType, timeout) { return DependencyContainer.Instance.GetServiceWithTimeoutAsync(classType, timeout); } static Get(classType) { return DependencyContainer.Instance.GetService(classType); } static SleepForAsync(miliseconds) { return new Promise(resolve => setTimeout(resolve, miliseconds)); } static ExportStringAsFileToDownload(filename, content) { // Create a Blob from the string content const blob = new Blob([content], { type: 'text/plain' }); // Create a link element const link = document.createElement('a'); // Create a URL for the Blob and set it as the href attribute of the link const url = window.URL.createObjectURL(blob); link.href = url; // Set the download attribute with the desired filename link.download = filename; // Return the link element so the user can click it return link; } } Api.WorksInContextOf = ""; Api.Version = 1.0; //# sourceMappingURL=Api.js.map