UNPKG

wled-client

Version:

A friendly JS interface for controlling your [WLED](https://github.com/Aircoookie/WLED) devices from Node.js or the browser.

1 lines 84.5 kB
{"version":3,"sources":["../../src/constants.ts","../../src/apis/json.ts","../../src/utils.emitter.ts","../../src/utils.ts","../../src/apis/websocket.ts","../../src/adapters.ts","../../src/client.ts"],"names":["WLEDNightlightMode","WLEDLiveDataOverride","WLEDAPOpenBehavior","WLEDAutoWhiteMode","WLEDBusColorOrder","WLEDBusType","WLEDButtonType","WLEDIRRemoteType","WLEDPaletteBlendingMode","WLEDClockOverlay","WLEDDMXMode"],"mappings":"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","sourcesContent":["import { WLEDClientOptions, WLEDClientContext } from './types.client'\n\nexport const DEFAULT_OPTIONS:WLEDClientOptions = {\n\timmediate: true,\n\twebsocket: { reconnect: true },\n\tsecure: false,\n\thost: ''\n}\n\nexport const DEFAULT_CLIENT_CONTEXT:WLEDClientContext = {\n\tstate: {\n\t\tnightlight: {},\n\t\tudpSync: {},\n\t\tsegments: []\n\t},\n\tinfo: {\n\t\tleds: {},\n\t\twifi: {},\n\t\tfs: {}\n\t},\n\teffects: [],\n\tpalettes: [],\n\tpresets: {},\n\tdeviceOptions: {},\n\tlightCapabilities: {},\n\tlive: {\n\t\tleds: false\n\t},\n\tconfig: {\n\t\tid: {},\n\t\tnetwork: {},\n\t\taccessPoint: {},\n\t\twifi: {},\n\t\thardware: {},\n\t\tlight: {},\n\t\tdefaults: {},\n\t\tinterfaces: {},\n\t\toverlay: {},\n\t\ttimers: {},\n\t\tota: {},\n\t\tusermods: {}\n\t}\n}\n\nexport enum WLEDEndpoints {\n\tHTTP = 'win',\n\tJSON = 'json',\n\tWS = 'ws'\n}\n\nexport enum WLEDNightlightMode {\n\tINSTANT,\n\tFADE,\n\tCOLOR_FADE,\n\tSUNRISE\n}\n\nexport enum WLEDLiveDataOverride {\n\tOFF,\n\tUNTIL_END,\n\tUNTIL_REBOOT\n}\n\nexport const WLEDDeviceOptionMasks = {\n\tDEBUG: 0x80,\n\tDISABLE_ALEXA: 0x40,\n\tDISABLE_BLYNK: 0x20,\n\tUSERMOD_CRONIXIE: 0x10,\n\tDISABLE_FILESYSTEM: 0x08,\n\tDISABLE_HUESYNC: 0x04,\n\tENABLE_ADALIGHT: 0x02,\n\tDISABLE_OTA: 0x01\n}\n\nexport const WLEDLightCapabilityMasks = {\n\tCCT: 0x04,\n\tWHITE: 0x02,\n\tRGB: 0x01\n}\n\n//\n// Config\n\nexport enum WLEDAPOpenBehavior {\n\t/** Open AP when there is no WiFi connection after boot */\n\tNO_CONNECTION_AFTER_BOOT,\n\n\t/** Open AP when disconnected from WiFi */\n\tDISCONNECTED,\n\n\t/** Always open the AP */\n\tAWLAYS,\n\n\t/** Never open the AP (not recommended) */\n\tNEVER\n}\n\nexport enum WLEDAutoWhiteMode {\n\tNONE,\n\tBRIGHTER,\n\tACCURATE,\n\tDUAL\n}\n\nexport enum WLEDBusColorOrder {\n\tGRB,\n\tRGB,\n\tBRG,\n\tRBG,\n\tBGR,\n\tGBR\n}\n\nexport enum WLEDBusType {\n\tWS281x = 22,\n\tSK6812_RGBW = 30,\n\tTM1814 = 31,\n\tKHZ400 = 24,\n\tWS2801 = 50,\n\tAPA102 = 51,\n\tLPD8806 = 52,\n\tP9813 = 53,\n\tPWM_White = 41,\n\tPWM_CCT = 42,\n\tPWM_RGB = 43,\n\tPWM_RGBW = 44,\n\tPWM_RGB_CCT = 45,\n\tDDP_RGB_NETWORK = 80\n}\n\nexport enum WLEDButtonType {\n\tDISABLED = 0,\n\tPUSHBUTTON = 2,\n\tPUSHBUTTON_INVERTED = 3,\n\tSWITCH = 4,\n\tPIR_SENSOR = 5,\n\tTOUCH = 6,\n\tANALOG = 7,\n\tANALOG_INVERTED = 8\n}\n\nexport enum WLEDIRRemoteType {\n\tREMOTE_DISABLED,\n\tKEY_24_RGB,\n\tKEY_24_WITH_CT,\n\tKEY_40_BLUE,\n\tKEY_44_RGB,\n\tKEY_21_RGB,\n\tKEY_6_BLACK,\n\tKEY_9_RED,\n\tJSON_REMOTE\n}\n\nexport enum WLEDPaletteBlendingMode {\n\tLINEAR_WRAP_IF_MOVING,\n\tLINEAR_ALWAYS_WRAP,\n\tLINEAR_NEVER_WRAP,\n\tNONE\n}\n\nexport enum WLEDClockOverlay {\n\tNONE,\n\tANALOG,\n\tDIGITAL\n}\n\nexport enum WLEDDMXMode {\n\tDISABLED,\n\tSINGLE_RGB,\n\tSINGLE_DRGB,\n\tEFFECT,\n\tMULTI_RGB,\n\tDIMMER_MULTI_RGB,\n\tMULTI_RGBW\n}\n","import { WLEDState, WLEDPalettes, WLEDEffects, WLEDInfo, WLEDUpdatableState, WLEDLive, WLEDContext, WLEDPresets, WLEDPaletteDataPage, WLEDConfig, WLEDUpdatableConfig } from '../types.wled';\nimport { WLEDClientOptions } from '../types.client'\nimport { WLEDEndpoints } from '../constants'\nimport { fetch, AbortController } from '@js-bits/fetch'\nimport { IsomorphicEventEmitter } from '../utils.emitter';\n\nexport interface JSONAPIFetchOptions {\n\ttimeout?:number\n}\n\nexport class WLEDJSONAPI extends IsomorphicEventEmitter {\n\tprivate readonly api_endpoint:string\n\tprivate readonly authority:string\n\n\tconstructor({ secure, host, port }:WLEDClientOptions) {\n\t\tsuper()\n\t\tthis.authority = `${secure ? 'https':'http'}://${host}${port ? ':'+port : ''}`\n\t\tthis.api_endpoint = `${this.authority}/${ WLEDEndpoints.JSON }`\n\t}\n\n\thandleErrors(response:Response) {\n\t\tif (!response.ok) {\n\t\t\tthis.emit('error', response)\n\t\t\tthrow response\n\t\t}\n\t\treturn response\n\t}\n\n\tasync fetch(resource:string, options:Parameters<fetch>[1]&{[key:string]:any}&{timeout?:number} = {}) {\n\t\tconst { timeout = 5000 } = options\n\t\tconst controller = new AbortController()\n\t\tconst id = setTimeout(() => controller.abort(), timeout)\n\n\t\tconst response = await fetch(resource, {\n\t\t\t...options,\n\t\t\tsignal: controller.signal\n\t\t})\n\t\tclearTimeout(id)\n\n\t\treturn response\n\t}\n\n\tasync getAll(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(this.api_endpoint, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDContext\n\t}\n\n\tasync getPalettes(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/pal`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDPalettes\n\t}\n\n\tasync getEffects(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/eff`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDEffects\n\t}\n\n\tasync getInfo(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/info`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDInfo\n\t}\n\n\tasync getState(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/state`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDState\n\t}\n\n\tasync getLive(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/live`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDLive\n\t}\n\n\tasync getPresets(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.authority}/presets.json`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDPresets\n\t}\n\n\tasync getConfig(options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/cfg`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDConfig\n\t}\n\n\tasync getPalettesDataPage(page:number = 0, options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\t\tlet response = await this.fetch(`${this.api_endpoint}/palx?page=${page}`, { timeout }).then(this.handleErrors)\n\t\tlet object = await response.json()\n\t\treturn object as WLEDPaletteDataPage\n\t}\n\n\tasync updateState(state:WLEDUpdatableState, options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\n\t\tlet result = await this.fetch(this.api_endpoint, {\n\t\t\tmethod: 'POST',\n\t\t\tcache: 'no-cache',\n\t\t\theaders: { 'Content-Type': 'application/json'\t},\n\t\t\tbody: JSON.stringify(state),\n\t\t\ttimeout\n\t\t}).then(this.handleErrors)\n\n\t\tlet context = await result.json()\n\t\tif (state.v) return context as WLEDContext\n\t\treturn context as { success:boolean }\n\t}\n\n\tasync updateConfig(config:WLEDUpdatableConfig, options:JSONAPIFetchOptions = {}) {\n\t\tconst { timeout } = options\n\n\t\tlet result = await this.fetch(`${this.api_endpoint}/cfg`, {\n\t\t\tmethod: 'POST',\n\t\t\tcache: 'no-cache',\n\t\t\theaders: { 'Content-Type': 'application/json'\t},\n\t\t\tbody: JSON.stringify(config),\n\t\t\ttimeout\n\t\t}).then(this.handleErrors)\n\n\t\tlet context = await result.json()\n\t\treturn context as { success:boolean }\n\t}\n}","function isCustomEvent(event:any):event is CustomEvent {\n\treturn !!event.detail\n}\n\nclass IsomorphicCustomEvent<T = any> extends Event {\n\tdetail?:T\n\tconstructor(typeArg: string, eventInitDict?: CustomEventInit<T>) {\n\t\tsuper(typeArg, eventInitDict)\n\t\tthis.detail = eventInitDict?.detail\n\t}\n}\n\n/** Class to support event emitters in an isomorphic way using EventTarget */\nexport class IsomorphicEventEmitter extends EventTarget {\n\ton(eventName:string, listener: (...args: any[]) => void) {\n\t\treturn this.addEventListener(eventName, (event:Event|CustomEvent) => {\n\t\t\tif (isCustomEvent(event)) return listener(...event.detail)\n\t\t\tlistener(event)\n\t\t})\n\t}\n\n\tonce(eventName:string, listener: (...args: any[]) => void) {\n\t\tlet event_listener = this.on(eventName, listener)\n\t\tthis.addEventListener(eventName, () => this.off(eventName, listener))\n\t\treturn event_listener\n\t}\n\n\toff(eventName:string, listener: (...args: any[]) => void) {\n\t\treturn this.removeEventListener(eventName, listener)\n\t}\n\n\temit<T extends any[]>(eventName: string, ...args: T) {\n\t\tconst event = new IsomorphicCustomEvent(eventName, { detail: args })\n\t\treturn this.dispatchEvent(event)\n\t}\n}\n","import { WLEDContext, WLEDLive } from './types.wled'\nimport { BuildStateFn } from './types'\n\nexport function isWLEDContext(object:any):object is WLEDContext {\n\tlet { state, info } = object\n\treturn !!state && !!info\n}\n\nexport function isWLEDLiveLEDs(object:any):object is WLEDLive {\n\tlet { leds, n } = object\n\treturn !!leds && !!n\n}\n\nexport function isBuildStateFunction(state:any):state is BuildStateFn {\n\treturn typeof state === 'function'\n}\n\nexport function deepMerge(target:object, ...sources:object[]) {\n\tfor (let source of sources) {\n\t\tfor (let property in source) {\n\t\t\tlet value = source[property]\n\t\t\tif (typeof value == 'object' && value !== null) {\n\t\t\t\ttarget[property] = target[property] || {}\n\t\t\t\tdeepMerge(target[property], source[property])\n\t\t\t} else {\n\t\t\t\ttarget[property] = value\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function deepClone(object:{}|[]) {\n\treturn deepCloneTransform(object)\n}\n\nexport function deepCloneTransform(object:{}|[], transformer?:(key:string, value:any, path?:string)=>[string, any], key_path?:string, stack?:Map<any, any>) {\n\tconst isArray = Array.isArray(object)\n\tconst cloned_object:{[key:string]:any} = isArray ? [] : {}\n\n\tfor (let [key, value] of Object.entries<any>(object)) {\n\t\tconst current_key_path = (key_path ? key_path+'.' : '')+key\n\n\t\tlet cloned_value:any\n\t\tif (typeof value == 'object' || Array.isArray(value)) {\n\t\t\tif (!stack) stack = new Map()\n\n\t\t\tconst existing = stack.get(value)\n\t\t\tif (existing) {\n\t\t\t\tcloned_value = existing\n\t\t\t} else {\n\t\t\t\tcloned_value = deepCloneTransform(value, transformer, current_key_path, stack)\n\t\t\t\tstack.set(value, cloned_value)\n\t\t\t}\n\t\t} else {\n\t\t\tcloned_value = value\n\t\t}\n\n\t\tif (transformer) {\n\t\t\tlet [transformed_key, transformed_value] = transformer(key, cloned_value, key_path)\n\t\t\tcloned_object[transformed_key] = transformed_value\n\t\t} else {\n\t\t\tcloned_object[key] = value\n\t\t}\n\t}\n\n\treturn cloned_object\n}\n\nexport const sleep = (time:number) => new Promise(res => setTimeout(res, time))\n","import { IsomorphicEventEmitter } from '../utils.emitter'\nimport { isWLEDContext, isWLEDLiveLEDs } from '../utils'\nimport { WLEDUpdatableState } from '../types.wled'\nimport { WLEDClientOptions } from '../types.client'\nimport { WLEDEndpoints } from '../constants'\nimport WebSocket from 'isomorphic-ws'\n\nexport class WLEDWebsocketAPI extends IsomorphicEventEmitter {\n\tprivate readonly api_endpoint:string\n\tavailable = false\n\twebsocket:WebSocket\n\n\tprivate reconnect = true\n\n\tconstructor({ secure, host, port, websocket }:WLEDClientOptions) {\n\t\tsuper()\n\n\t\tif (websocket && typeof websocket == 'object') {\n\t\t\tif (typeof websocket.reconnect == 'boolean') this.reconnect = websocket.reconnect\n\t\t}\n\n\t\tthis.api_endpoint = `${secure ? 'wss':'ws'}://${host}${port ? ':'+port : ''}/${ WLEDEndpoints.WS }`\n\t}\n\n\tdisconnect() {\n\t\tif (this.websocket && this.websocket.readyState == this.websocket.OPEN) {\n\t\t\tthis.websocket.close()\n\t\t}\n\t}\n\n\tconnect():Promise<boolean> {\n\t\tif (this.websocket && this.websocket.readyState == this.websocket.OPEN) return Promise.resolve(true) // Connection is already open\n\n\t\tthis.websocket = new WebSocket(this.api_endpoint)\n\t\tthis.websocket.binaryType = \"arraybuffer\"\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.websocket.addEventListener('error', reject)\n\t\t\tthis.websocket.addEventListener('open', () => {\n\t\t\t\tthis.websocket.removeEventListener('error', reject)\n\n\t\t\t\tthis.emit('open')\n\t\t\t\tthis.init()\n\t\t\t\tresolve(true)\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate init() {\n\t\tthis.available = true\n\n\t\tthis.websocket.addEventListener('message', ({ data }) => {\n\t\t\tif (data instanceof ArrayBuffer) {\n\t\t\t\tconst header = new Uint8Array(data.slice(0,2))\n\t\t\t\tconst type = String.fromCharCode(header[0])\n\t\t\t\tconst version = header[1]\n\n\t\t\t\tif (type == 'L') switch (version) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconst leds:Uint8Array[] = []\n\n\t\t\t\t\t\tconst raw_leds = data.slice(2)\n\t\t\t\t\t\tfor (let i = 0; i < raw_leds.byteLength/3; i++) leds.push(new Uint8Array(raw_leds.slice(i, i + 3)))\n\n\t\t\t\t\t\tthis.emit('live:leds', leds)\n\t\t\t\t}\n\t\t\t} else if (typeof data == 'string') {\n\t\t\t\tlet message = JSON.parse(data)\n\n\t\t\t\tif (isWLEDContext(message)) {\n\t\t\t\t\tlet { state, info } = message\n\t\t\t\t\tthis.emit('update:context', { state, info })\n\t\t\t\t} else if(isWLEDLiveLEDs(message)) {\n\t\t\t\t\tthis.emit('live:leds', message.leds)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.websocket.addEventListener('close', (event) => {\n\t\t\tthis.emit('close', event)\n\t\t\tif (!event.wasClean) {\n\t\t\t\tif (this.reconnect) setTimeout(() => this.connect(), 1000)\n\t\t\t}\n\t\t\tthis.available = false\n\t\t})\n\n\t\tthis.websocket.addEventListener('error', (error) => {\n\t\t\tthis.emit('error', error)\n\t\t})\n\t}\n\n\tprivate send(data:string, cb:Function) {\n\t\tif (this.available) {\n\t\t\tthis.websocket.send(data)\n\t\t\tcb()\n\t\t\treturn\n\t\t} else {\n\t\t\tlet err = new Error('WebSocket is not available.')\n\n\t\t\tif (cb) cb(err)\n\t\t\telse throw err\n\t\t}\n\t}\n\n\tupdateState(state:WLEDUpdatableState) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.send(JSON.stringify(state), (err) => {\n\t\t\t\tif (err) reject(err)\n\t\t\t\tresolve(undefined)\n\t\t\t})\n\t\t})\n\t}\n\n\tstartLEDStream() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.send(JSON.stringify({ lv: true }), (err) => {\n\t\t\t\tif (err) reject(err)\n\t\t\t\tresolve(undefined)\n\t\t\t})\n\t\t})\n\t}\n\n\tstopLEDStream() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.send(JSON.stringify({ lv: false }), (err) => {\n\t\t\t\tif (err) reject(err)\n\t\t\t\tresolve(undefined)\n\t\t\t})\n\t\t})\n\t}\n}","import { WLEDClientState, WLEDClientInfo, WLEDClientUpdatableState, WLEDClientPresets, WLEDClientDeviceOptions, WLEDClientLightCapabilities, WLEDClientConfig, WLEDClientUpdatableConfig } from './types.client';\nimport { deepCloneTransform } from './utils'\nimport { WLEDPresets, WLEDInfo, WLEDConfig } from './types.wled';\nimport { WLEDDeviceOptionMasks, WLEDLightCapabilityMasks } from './constants'\n\nconst key_regexes = {}\nfunction keyTransformer(transform_map:{[key:string]:any}) {\n\treturn (key:string, value:any, path?:string):[string, any] => {\n\t\tconst current_key_path = ((path ? path+'.' : '')+key)//.replaceAll(/\\[[0-9]+\\]/g, '[]')\n\n\t\tconst transform_map_key = Object.keys(transform_map).find((transform_key) => {\n\t\t\tif (!key_regexes[transform_key]) key_regexes[transform_key] = new RegExp('^'+(transform_key).replaceAll('.', '\\\\.').replaceAll('*', '[^_]+')+'$', 'm')\n\t\t\treturn !!current_key_path.match(key_regexes[transform_key])\n\t\t})\n\t\tconst transformed_key_path = transform_map_key ? transform_map[transform_map_key] : key\n\n\t\tlet split_path = transformed_key_path.split('.')\n\t\tlet transformed_key = split_path[split_path.length-1]\n\t\treturn [transformed_key||key, value]\n\t}\n}\n\n//\n// Device Capabilities\n\nexport function wledToClientLightCapabilities(options:number):WLEDClientLightCapabilities {\n\treturn {\n\t\tcct: !!(options & WLEDLightCapabilityMasks.CCT),\n\t\twhite: !!(options & WLEDLightCapabilityMasks.WHITE),\n\t\trgb: !!(options & WLEDLightCapabilityMasks.RGB)\n\t}\n}\n\n//\n// Info Adapters\n\nconst WLED_TO_CLIENT_INFO_MAP = {\n\t'ver': 'version',\n\t'vid': 'buildId',\n\t'leds': 'leds',\n\t'leds.count': 'leds.count',\n\t'leds.fps': 'leds.fps',\n\t'leds.rgbw': 'leds.rgbw',\n\t'leds.cct': 'leds.cct',\n\t'leds.wv': 'leds.whiteValueInput',\n\t'leds.lc': 'leds.lightCapabilities',\n\t'leds.seglc': 'leds.segmentLightCapabilities',\n\t'leds.pwr': 'leds.currentPower',\n\t'leds.maxpwr': 'leds.maxPower',\n\t'leds.maxseg': 'leds.maxSegments',\n\t'str': 'syncToggleReceive',\n\t'name': 'name',\n\t'udpport': 'udpPort',\n\t'live': 'live',\n\t'lm': 'liveSource',\n\t'lip': 'liveIp',\n\t'ws': 'wsConnectedCount',\n\t'fxcount': 'effectsCount',\n\t'palcount': 'palettesCount',\n\t'wifi': 'wifi',\n\t'wifi.bssid': 'wifi.bssid',\n\t'wifi.rssi': 'wifi.rssi',\n\t'wifi.txPower': 'wifi.txPower',\n\t'wifi.sleep': 'wifi.sleep',\n\t'wifi.signal': 'wifi.signal',\n\t'wifi.channel': 'wifi.channel',\n\t'fs': 'fs',\n\t'fs.u': 'fs.used',\n\t'fs.t': 'fs.total',\n\t'fs.pmt': 'fs.presetsModifiedTime',\n\t'ndc': 'discoveredDevicesCount',\n\t'arch': 'arch',\n\t'core': 'core',\n\t'freeheap': 'freeheap',\n\t'uptime': 'uptime',\n\t'opt': 'options',\n\t'resetReason': 'resetReason',\n\t'resetReason0': 'resetReason0',\n\t'resetReason1': 'resetReason1',\n\t'brand': 'brand',\n\t'product': 'product',\n\t'mac': 'mac'\n}\nconst CLIENT_TO_WLED_INFO_MAP = Object.fromEntries(\n\tObject.entries(WLED_TO_CLIENT_INFO_MAP).map(([key, value]) => [value, key]) // Flip key/value of above constant\n)\n\nconst wledToClientInfoTransformer = keyTransformer(WLED_TO_CLIENT_INFO_MAP)\nconst clientToWLEDInfoTransformer = keyTransformer(CLIENT_TO_WLED_INFO_MAP)\n\nexport function wledToClientInfo(info:{}):WLEDClientInfo {\n\treturn deepCloneTransform(info, wledToClientInfoTransformer) as WLEDClientInfo\n}\n\nexport function clientToWLEDInfo(info:Partial<WLEDClientInfo>):{} {\n\treturn deepCloneTransform(info, clientToWLEDInfoTransformer)\n}\n\n//\n// State Adapters\n\nconst WLED_TO_CLIENT_STATE_MAP = {\n\t'error': 'error',\n\t'on': 'on',\n\t'bri': 'brightness',\n\t'transition': 'transition',\n\t'tt': 'temporaryTransition',\n\t'ps': 'presetId',\n\t'n': 'name',\n\t'psave': 'savePresetId',\n\t'pdel': 'deletePresetId',\n\t'ib': 'includeBrightness',\n\t'sb': 'segmentBounds',\n\t'o': 'overwriteState',\n\t'ql': 'label',\n\t'pl': 'playlistId',\n\t'nl': 'nightlight',\n\t'nl.on': 'nightlight.on',\n\t'nl.dur': 'nightlight.duration',\n\t'nl.mode': 'nightlight.mode',\n\t'nl.tbri': 'nightlight.targetBrightness',\n\t'nl.rem': 'nightlight.remaining',\n\t'udpn': 'udpSync',\n\t'udpn.send': 'udpSync.send',\n\t'udpn.recv': 'udpSync.receive',\n\t'udpn.nn': 'udpSync.noSync',\n\t'lor': 'liveDataOverride',\n\t'mainseg': 'mainSegmentId',\n\t'seg': 'segments',\n\t'seg.*.id': 'segments.*.id',\n\t'seg.*.n': 'segments.*.name',\n\t'seg.*.start': 'segments.*.start',\n\t'seg.*.stop': 'segments.*.stop',\n\t'seg.*.len': 'segments.*.length',\n\t'seg.*.of': 'segments.*.offset',\n\t'seg.*.grp': 'segments.*.grouping',\n\t'seg.*.spc': 'segments.*.spacing',\n\t'seg.*.rpt': 'segments.*.repeat',\n\t'seg.*.frz': 'segments.*.freeze',\n\t'seg.*.col': 'segments.*.colors',\n\t'seg.*.cct': 'segments.*.cct',\n\t'seg.*.fx': 'segments.*.effectId',\n\t'seg.*.sx': 'segments.*.effectSpeed',\n\t'seg.*.ix': 'segments.*.effectIntensity',\n\t'seg.*.pal': 'segments.*.paletteId',\n\t'seg.*.sel': 'segments.*.selected',\n\t'seg.*.rev': 'segments.*.reverse',\n\t'seg.*.on': 'segments.*.on',\n\t'seg.*.bri': 'segments.*.brightness',\n\t'seg.*.mi': 'segments.*.mirror',\n\t'seg.*.lx': 'segments.*.loxonePrimaryColor',\n\t'seg.*.ly': 'segments.*.loxoneSecondaryColor',\n\t'playlist': 'playlist',\n\t'playlist.ps': 'playlist.presets',\n\t'playlist.dur': 'playlist.durations',\n\t'playlist.transition': 'playlist.transition',\n\t'playlist.repeat': 'playlist.repeat',\n\t'playlist.end': 'playlist.end',\n\t'v': 'returnFullState',\n\t'rb': 'reboot',\n\t'time': 'time'\n}\nconst CLIENT_TO_WLED_STATE_MAP = Object.fromEntries(\n\tObject.entries(WLED_TO_CLIENT_STATE_MAP).map(([key, value]) => [value, key]) // Flip key/value of above constant\n)\n\nconst wledToClientStateTransformer = keyTransformer(WLED_TO_CLIENT_STATE_MAP)\nconst clientToWLEDStateTransformer = keyTransformer(CLIENT_TO_WLED_STATE_MAP)\n\nexport function wledToClientState(state:{}):WLEDClientState {\n\treturn deepCloneTransform(state, wledToClientStateTransformer) as WLEDClientState\n}\n\nexport function clientToWLEDState(state:Partial<WLEDClientState|WLEDClientUpdatableState>):{} {\n\treturn deepCloneTransform(state, clientToWLEDStateTransformer)\n}\n\n//\n// Preset Adapters\n\nconst WLED_TO_CLIENT_PRESET_MAP = {\n\t'*.n': '*.name',\n\t'*.ql': '*.label',\n\t'*.on': '*.on',\n\t'*.bri': '*.brightness',\n\t'*.transition': '*.transition',\n\t'*.mainseg': '*.mainSegment',\n\t'*.seg': '*.segments',\n\t'*.seg.*.id': '*.segments.*.id',\n\t'*.seg.*.start': '*.segments.*.start',\n\t'*.seg.*.stop': '*.segments.*.stop',\n\t'*.seg.*.len': '*.segments.*.length',\n\t'*.seg.*.grp': '*.segments.*.grouping',\n\t'*.seg.*.spc': '*.segments.*.spacing',\n\t'*.seg.*.rpt': '*.segments.*.repeat',\n\t'*.seg.*.frz': '*.segments.*.freeze',\n\t'*.seg.*.col': '*.segments.*.colors',\n\t'*.seg.*.fx': '*.segments.*.effectId',\n\t'*.seg.*.sx': '*.segments.*.effectSpeed',\n\t'*.seg.*.ix': '*.segments.*.effectIntensity',\n\t'*.seg.*.pal': '*.segments.*.paletteId',\n\t'*.seg.*.sel': '*.segments.*.selected',\n\t'*.seg.*.rev': '*.segments.*.reverse',\n\t'*.seg.*.on': '*.segments.*.on',\n\t'*.seg.*.bri': '*.segments.*.brightness',\n\t'*.seg.*.mi': '*.segments.*.mirror',\n\t'*.seg.*.lx': '*.segments.*.loxonePrimaryColor',\n\t'*.seg.*.ly': '*.segments.*.loxoneSecondaryColor',\n}\nconst CLIENT_TO_WLED_PRESET_MAP = Object.fromEntries(\n\tObject.entries(WLED_TO_CLIENT_PRESET_MAP).map(([key, value]) => [value, key]) // Flip key/value of above constant\n