/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/homebridge-ewelink-with-api@2.0.2/dist/platform.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const ewelink_connection_1=require("./ewelink-connection"),accessory_mapper_1=require("./accessory/accessory-mapper"),accessory_service_1=require("./accessory/accessory-service"),PLUGIN_NAME="homebridge-ewelink-with-api",PLATFORM_NAME="EweLink";let hap,Accessory;class EweLinkPlatform{constructor(e,s,i){this.log=e,this.api=i,this.log.info("Ewelink bridge starting up"),this.connection=new ewelink_connection_1.EwelinkConnection({email:s.email,password:s.password},this.log),this.accessoryService=new accessory_service_1.AccessoryService(this.log,this.connection,this.api,hap),this.api.on("didFinishLaunching",(()=>this.apiDidFinishLaunching(s.real_time_update)))}apiDidFinishLaunching(e){this.log.info("apiDidFinishLaunching callback activating");let s=this.connection.activateConnection((e=>{e&&this.log.info("eweLink Connection established")}));s=s.then((()=>this.connection.requestDevices((e=>accessory_mapper_1.mapDevicesToAccessoryInformation(this.log,e))))).then(this.sortAccessoryInformation.bind(this)).then(this.processAccessoryInformation.bind(this)),e&&(s=s.then((()=>this.connection.openMonitoringSocket(this.accessoryService.updateAccessoryState)))),s.catch((e=>this.log.error("Upstream error: [%s]",e))).finally((()=>this.log.info("Accessory and connection setup completed, check earlier logs for any errors")))}sortAccessoryInformation(e){const s=new Map(null==e?void 0:e.map((e=>[e.id,e]))),i=this.accessoryService.determineExistence(Array.from(s.keys()));return{new:i.notFound.map((e=>s.get(e))),existing:i.intersection.map((e=>s.get(e))),deletions:i.serviceOnly}}processAccessoryInformation(e){const s=e.new.map((e=>this.accessoryService.createAccessory(e)));this.api.registerPlatformAccessories(PLUGIN_NAME,"EweLink",s),s.forEach((e=>this.accessoryService.saveAccessory(e)));const i=e.deletions.map((e=>this.accessoryService.removeAccessory(e)));this.api.unregisterPlatformAccessories(PLUGIN_NAME,"EweLink",i),e.existing.forEach((e=>this.accessoryService.updateAccessoryInformation(e))),e.existing.forEach((e=>this.accessoryService.updateAccessoryState(e.id,e.state)))}configureAccessory(e){this.log.info("Loading saved accessory: [%s]",e.displayName),this.accessoryService.configureIdentify(e),this.accessoryService.configureService(e),this.accessoryService.saveAccessory(e)}}module.exports=e=>{hap=e.hap,Accessory=e.platformAccessory,e.registerPlatform(PLUGIN_NAME,"EweLink",EweLinkPlatform)};
//# sourceMappingURL=/sm/40859a993cba83429ec4c2423fcb94849f8bc97fe3b1e89eb6e7362b6e57a573.map