UNPKG

dhd-control-api

Version:
1,443 lines (1,392 loc) 59.1 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { DHD: () => DHD }); module.exports = __toCommonJS(src_exports); var import_zod40 = require("zod"); // src/api/audio/levels/index.ts var import_zod2 = require("zod"); // src/utils.ts var import_zod = require("zod"); var assertNever = (value) => { throw new Error(`Unexpected value: ${value}`); }; var numberedObject = (schema) => import_zod.z.record(import_zod.z.coerce.number(), schema); // src/api/audio/levels/index.ts var audioLevelsImmutable = import_zod2.z.object({ _name: import_zod2.z.string(), _mode: import_zod2.z.union([import_zod2.z.literal("PPM"), import_zod2.z.literal("VU"), import_zod2.z.literal("TruePeak")]), _left: import_zod2.z.number(), _right: import_zod2.z.number(), _correlation: import_zod2.z.number() }); var audioLevels = audioLevelsImmutable; var audioLevelsGetHandlers = { ["/audio/levels"]: { paramsSchema: null, responseSchema: numberedObject(audioLevels) }, ["/audio/levels/{levelDetectID}"]: { paramsSchema: import_zod2.z.object({ levelDetectID: import_zod2.z.number() }), responseSchema: audioLevels } }; // src/api/audio/loudness/index.ts var import_zod3 = require("zod"); var audioLoudnessImmutable = import_zod3.z.object({ _leveli: import_zod3.z.number(), _levelm: import_zod3.z.number(), _levelo: import_zod3.z.number(), _levels: import_zod3.z.number(), _levelu: import_zod3.z.number(), _maxm: import_zod3.z.number(), _maxpeak: import_zod3.z.number(), _maxs: import_zod3.z.number(), _mode: import_zod3.z.string(), // TODO: Request modes and change to enum _name: import_zod3.z.string(), _peak: import_zod3.z.number() }); var audioLoudness = audioLoudnessImmutable; var audioLoudnessGetHandlers = { ["/audio/loudness"]: { paramsSchema: null, responseSchema: numberedObject(audioLoudness) }, ["/audio/loudness/{levelDetectID}"]: { paramsSchema: import_zod3.z.object({ levelDetectID: import_zod3.z.number() }), responseSchema: audioLoudness } }; // src/api/audio/mixers/index.ts var import_zod28 = require("zod"); // src/api/audio/mixers/automix/index.ts var import_zod4 = require("zod"); var audioMixersAutomixImmutable = import_zod4.z.object({ _active: import_zod4.z.boolean() }); var audioMixersAutomixMutable = import_zod4.z.object({ maxattenuation: import_zod4.z.number(), passiveattenuation: import_zod4.z.number(), hold: import_zod4.z.number(), ratio: import_zod4.z.number(), release: import_zod4.z.number() }); var audioMixersAutomix = audioMixersAutomixImmutable.merge( audioMixersAutomixMutable ); var audioMixersAutomixGetHandlers = { ["/audio/mixers/{mixerID}/automix"]: { paramsSchema: import_zod4.z.object({ mixerID: import_zod4.z.number(), automixID: import_zod4.z.number() }), responseSchema: numberedObject(audioMixersAutomix) }, ["/audio/mixers/{mixerID}/automix/{automixID}"]: { paramsSchema: import_zod4.z.object({ mixerID: import_zod4.z.number(), automixID: import_zod4.z.number() }), responseSchema: audioMixersAutomix } }; var audioMixersAutomixSetHandlers = { ["/audio/mixers/{mixerID}/automix/{automixID}"]: { paramsSchema: import_zod4.z.object({ mixerID: import_zod4.z.number(), automixID: import_zod4.z.number() }), payloadSchema: audioMixersAutomixMutable, responseSchema: audioMixersAutomixMutable } }; // src/api/audio/mixers/cleanfeeds/index.ts var import_zod5 = require("zod"); var audioMixersCleanfeedsImmutable = import_zod5.z.object({ _active: import_zod5.z.boolean() }); var audioMixersCleanfeedsMutable = import_zod5.z.object({ cut: import_zod5.z.boolean(), n: import_zod5.z.boolean(), outgain: import_zod5.z.number(), outsel: import_zod5.z.boolean(), srcsel: import_zod5.z.number() }); var audioMixersCleanfeeds = audioMixersCleanfeedsImmutable.merge( audioMixersCleanfeedsMutable ); var audioMixersCleanfeedsGetHandlers = { ["/audio/mixers/{mixerID}/cleanfeeds"]: { paramsSchema: import_zod5.z.object({ mixerID: import_zod5.z.number() }), responseSchema: numberedObject(audioMixersCleanfeeds) }, ["/audio/mixers/{mixerID}/cleanfeeds/{cleanfeedID}"]: { paramsSchema: import_zod5.z.object({ mixerID: import_zod5.z.number(), cleanfeedID: import_zod5.z.number() }), responseSchema: audioMixersCleanfeeds } }; var audioMixersCleanfeedsSetHandlers = { ["/audio/mixers/{mixerID}/cleanfeeds/{cleanfeedID}"]: { paramsSchema: import_zod5.z.object({ mixerID: import_zod5.z.number(), cleanfeedID: import_zod5.z.number() }), payloadSchema: audioMixersCleanfeedsMutable, responseSchema: audioMixersCleanfeedsMutable } }; // src/api/audio/mixers/faders/index.ts var import_zod24 = require("zod"); // src/api/audio/mixers/faders/meters/index.ts var import_zod6 = require("zod"); var audioMixersFadersFaderMeterImmutable = import_zod6.z.object({ _afl: import_zod6.z.array(import_zod6.z.number()), _input: import_zod6.z.array(import_zod6.z.number()), _pfl: import_zod6.z.array(import_zod6.z.number()) }); var audioMixersFadersFaderMeters = audioMixersFadersFaderMeterImmutable; // src/api/audio/mixers/faders/mutegroups/index.ts var import_zod7 = require("zod"); var audioMixersFadersFaderMutegroupsMutegroupMutable = import_zod7.z.boolean(); var audioMixersFadersFaderMutegroupsMutegroup = audioMixersFadersFaderMutegroupsMutegroupMutable; var audioMixersFadersFaderMutegroupsGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/mutegroups"]: { paramsSchema: import_zod7.z.object({ mixerID: import_zod7.z.number(), faderID: import_zod7.z.number() }), responseSchema: numberedObject(audioMixersFadersFaderMutegroupsMutegroup) }, ["/audio/mixers/{mixerID}/faders/{faderID}/mutegroups/{mutegroupID}"]: { paramsSchema: import_zod7.z.object({ mixerID: import_zod7.z.number(), faderID: import_zod7.z.number(), mutegroupID: import_zod7.z.number() }), responseSchema: audioMixersFadersFaderMutegroupsMutegroup } }; var audioMixersFadersFaderMutegroupsSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/mutegroups/{mutegroupID}"]: { paramsSchema: import_zod7.z.object({ mixerID: import_zod7.z.number(), faderID: import_zod7.z.number(), mutegroupID: import_zod7.z.number() }), payloadSchema: audioMixersFadersFaderMutegroupsMutegroupMutable, responseSchema: audioMixersFadersFaderMutegroupsMutegroupMutable } }; // src/api/audio/mixers/faders/options/index.ts var import_zod8 = require("zod"); var audioMixersFadersFaderOptionsMutable = import_zod8.z.object({ autooffair: import_zod8.z.boolean(), combilogic0: import_zod8.z.boolean(), timerreset: import_zod8.z.boolean() }); var audioMixersFadersFaderOptions = audioMixersFadersFaderOptionsMutable; // src/api/audio/mixers/faders/paramlist/index.ts var import_zod9 = require("zod"); var audioMixersFadersFaderParamlistImmutable = import_zod9.z.array( // TODO: Ask for all possible values import_zod9.z.enum([ "subsonic", "agc", "expander", "eq1", "eq2", "eq3", "eq4", "deesser2", "compressor", "limiter" ]) ); var audioMixersFadersFaderParamlist = audioMixersFadersFaderParamlistImmutable; // src/api/audio/mixers/faders/params/index.ts var import_zod23 = require("zod"); // src/api/audio/mixers/faders/params/agc.ts var import_zod10 = require("zod"); var audioMixersFadersFaderParamsParamAGCImmutable = import_zod10.z.object({ _active: import_zod10.z.boolean(), _gainreduction: import_zod10.z.number() }); var audioMixersFadersFaderParamsParamAGCMutable = import_zod10.z.object({ freeze: import_zod10.z.boolean(), gain: import_zod10.z.number(), level: import_zod10.z.number(), on: import_zod10.z.boolean(), threshold: import_zod10.z.number(), velocity: import_zod10.z.number() }); var audioMixersFadersFaderParamsParamAGC = audioMixersFadersFaderParamsParamAGCImmutable.merge( audioMixersFadersFaderParamsParamAGCMutable ); var audioMixersFadersFaderParamsParamAGCGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/agc"]: { paramsSchema: import_zod10.z.object({ mixerID: import_zod10.z.number(), faderID: import_zod10.z.number() }), responseSchema: audioMixersFadersFaderParamsParamAGC } }; var audioMixersFadersFaderParamsParamAGCSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/agc"]: { paramsSchema: import_zod10.z.object({ mixerID: import_zod10.z.number(), faderID: import_zod10.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamAGCMutable, responseSchema: audioMixersFadersFaderParamsParamAGCMutable } }; // src/api/audio/mixers/faders/params/compressor.ts var import_zod11 = require("zod"); var audioMixersFadersFaderParamsParamCompressorImmutable = import_zod11.z.object({ _active: import_zod11.z.boolean(), _gainreduction: import_zod11.z.number() }); var audioMixersFadersFaderParamsParamCompressorMutable = import_zod11.z.object({ attack: import_zod11.z.number(), gain: import_zod11.z.number(), on: import_zod11.z.boolean(), ratio: import_zod11.z.number(), release: import_zod11.z.number(), threshold: import_zod11.z.number() }); var audioMixersFadersFaderParamsParamCompressor = audioMixersFadersFaderParamsParamCompressorImmutable.merge( audioMixersFadersFaderParamsParamCompressorMutable ); var audioMixersFadersFaderParamsParamCompressorGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/compressor"]: { paramsSchema: import_zod11.z.object({ mixerID: import_zod11.z.number(), faderID: import_zod11.z.number() }), responseSchema: audioMixersFadersFaderParamsParamCompressor } }; var audioMixersFadersFaderParamsParamCompressorSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/compressor"]: { paramsSchema: import_zod11.z.object({ mixerID: import_zod11.z.number(), faderID: import_zod11.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamCompressorMutable, responseSchema: audioMixersFadersFaderParamsParamCompressorMutable } }; // src/api/audio/mixers/faders/params/deesser.ts var import_zod12 = require("zod"); var audioMixersFadersFaderParamsParamDeesserImmutable = import_zod12.z.object({ _active: import_zod12.z.boolean() }); var audioMixersFadersFaderParamsParamDeesserMutable = import_zod12.z.object({ bandwidth: import_zod12.z.number(), on: import_zod12.z.boolean(), ratio: import_zod12.z.number(), sharpness: import_zod12.z.number() }); var audioMixersFadersFaderParamsParamDeesser = audioMixersFadersFaderParamsParamDeesserImmutable.merge( audioMixersFadersFaderParamsParamDeesserMutable ); var audioMixersFadersFaderParamsParamDeesser2Immutable = import_zod12.z.object({ _active: import_zod12.z.boolean(), _gainreduction: import_zod12.z.number() }); var audioMixersFadersFaderParamsParamDeesser2Mutable = import_zod12.z.object({ frequency: import_zod12.z.number(), on: import_zod12.z.boolean(), threshold: import_zod12.z.number() }); var audioMixersFadersFaderParamsParamDeesser2 = audioMixersFadersFaderParamsParamDeesser2Immutable.merge( audioMixersFadersFaderParamsParamDeesser2Mutable ); var audioMixersFadersFaderParamsParamDeesserGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/deesser"]: { paramsSchema: import_zod12.z.object({ mixerID: import_zod12.z.number(), faderID: import_zod12.z.number() }), responseSchema: audioMixersFadersFaderParamsParamDeesser }, ["/audio/mixers/{mixerID}/faders/{faderID}/params/deesser2"]: { paramsSchema: import_zod12.z.object({ mixerID: import_zod12.z.number(), faderID: import_zod12.z.number() }), responseSchema: audioMixersFadersFaderParamsParamDeesser2 } }; var audioMixersFadersFaderParamsParamDeesserSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/deesser"]: { paramsSchema: import_zod12.z.object({ mixerID: import_zod12.z.number(), faderID: import_zod12.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamDeesserMutable, responseSchema: audioMixersFadersFaderParamsParamDeesserMutable }, ["/audio/mixers/{mixerID}/faders/{faderID}/params/deesser2"]: { paramsSchema: import_zod12.z.object({ mixerID: import_zod12.z.number(), faderID: import_zod12.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamDeesser2Mutable, responseSchema: audioMixersFadersFaderParamsParamDeesser2Mutable } }; // src/api/audio/mixers/faders/params/eq.ts var import_zod13 = require("zod"); var audioMixersFadersFaderParamsParamEQImmutable = import_zod13.z.object({ _active: import_zod13.z.boolean() }); var audioMixersFadersFaderParamsParamEQMutable = import_zod13.z.object({ frequency: import_zod13.z.number(), gain: import_zod13.z.number(), on: import_zod13.z.boolean(), q: import_zod13.z.number(), type: import_zod13.z.number() }); var audioMixersFadersFaderParamsParamEQ = audioMixersFadersFaderParamsParamEQImmutable.merge( audioMixersFadersFaderParamsParamEQMutable ); var audioMixersFadersFaderParamsParamEQGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/eq{eqID}"]: { paramsSchema: import_zod13.z.object({ mixerID: import_zod13.z.number(), faderID: import_zod13.z.number(), eqID: import_zod13.z.number() }), responseSchema: audioMixersFadersFaderParamsParamEQ } }; var audioMixersFadersFaderParamsParamEQSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/eq{eqID}"]: { paramsSchema: import_zod13.z.object({ mixerID: import_zod13.z.number(), faderID: import_zod13.z.number(), eqID: import_zod13.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamEQMutable, responseSchema: audioMixersFadersFaderParamsParamEQMutable } }; // src/api/audio/mixers/faders/params/expander.ts var import_zod14 = require("zod"); var audioMixersFadersFaderParamsParamExpanderImmutable = import_zod14.z.object({ _active: import_zod14.z.boolean(), _gainreduction: import_zod14.z.number() }); var audioMixersFadersFaderParamsParamExpanderMutable = import_zod14.z.object({ attack: import_zod14.z.number(), gain: import_zod14.z.number(), on: import_zod14.z.boolean(), ratio: import_zod14.z.number(), release: import_zod14.z.number(), threshold: import_zod14.z.number() }); var audioMixersFadersFaderParamsParamExpander = audioMixersFadersFaderParamsParamExpanderImmutable.merge( audioMixersFadersFaderParamsParamExpanderMutable ); var audioMixersFadersFaderParamsParamExpanderGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/expander"]: { paramsSchema: import_zod14.z.object({ mixerID: import_zod14.z.number(), faderID: import_zod14.z.number() }), responseSchema: audioMixersFadersFaderParamsParamExpander } }; var audioMixersFadersFaderParamsParamExpanderSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/expander"]: { paramsSchema: import_zod14.z.object({ mixerID: import_zod14.z.number(), faderID: import_zod14.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamExpanderMutable, responseSchema: audioMixersFadersFaderParamsParamExpanderMutable } }; // src/api/audio/mixers/faders/params/gain.ts var import_zod15 = require("zod"); var audioMixersFadersFaderParamsParamGainAGainImmutable = import_zod15.z.object({ _max: import_zod15.z.number(), _min: import_zod15.z.number(), _step: import_zod15.z.number() }); var audioMixersFadersFaderParamsParamGainAGainMutable = import_zod15.z.object({ inc: import_zod15.z.number(), value: import_zod15.z.number() }); var audioMixersFadersFaderParamsParamGainAGain = audioMixersFadersFaderParamsParamGainAGainImmutable.merge( audioMixersFadersFaderParamsParamGainAGainMutable ); var audioMixersFadersFaderParamsParamGainImmutable = import_zod15.z.object({ _active: import_zod15.z.boolean(), _hasagain: import_zod15.z.boolean(), _hasp48: import_zod15.z.boolean(), // TODO: Check if including again in the immutable schema is correct // or if it should be extended in the exported schema again: audioMixersFadersFaderParamsParamGainAGain }); var audioMixersFadersFaderParamsParamGainMutable = import_zod15.z.object({ dgain: import_zod15.z.number(), p48: import_zod15.z.boolean(), phase: import_zod15.z.boolean() }); var audioMixersFadersFaderParamsParamGain = audioMixersFadersFaderParamsParamGainImmutable.merge( audioMixersFadersFaderParamsParamGainMutable ); var audioMixersFadersFaderParamsParamGainGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/gain"]: { paramsSchema: import_zod15.z.object({ mixerID: import_zod15.z.number(), faderID: import_zod15.z.number() }), responseSchema: audioMixersFadersFaderParamsParamGain }, ["/audio/mixers/{mixerID}/faders/{faderID}/params/gain/again"]: { paramsSchema: import_zod15.z.object({ mixerID: import_zod15.z.number(), faderID: import_zod15.z.number() }), responseSchema: audioMixersFadersFaderParamsParamGainAGain } }; var audioMixersFadersFaderParamsParamGainSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/gain"]: { paramsSchema: import_zod15.z.object({ mixerID: import_zod15.z.number(), faderID: import_zod15.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamGainMutable, responseSchema: audioMixersFadersFaderParamsParamGainMutable }, ["/audio/mixers/{mixerID}/faders/{faderID}/params/gain/again"]: { paramsSchema: import_zod15.z.object({ mixerID: import_zod15.z.number(), faderID: import_zod15.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamGainAGainMutable, responseSchema: audioMixersFadersFaderParamsParamGainAGainMutable } }; // src/api/audio/mixers/faders/params/gate.ts var import_zod16 = require("zod"); var audioMixersFadersFaderParamsParamGateImmutable = import_zod16.z.object({ _active: import_zod16.z.boolean(), _gainreduction: import_zod16.z.number() }); var audioMixersFadersFaderParamsParamGateMutable = import_zod16.z.object({ attack: import_zod16.z.number(), attenuation: import_zod16.z.number(), on: import_zod16.z.boolean(), release: import_zod16.z.number(), threshold: import_zod16.z.number() }); var audioMixersFadersFaderParamsParamGate = audioMixersFadersFaderParamsParamGateImmutable.merge( audioMixersFadersFaderParamsParamGateMutable ); var audioMixersFadersFaderParamsParamGateGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/gate"]: { paramsSchema: import_zod16.z.object({ mixerID: import_zod16.z.number(), faderID: import_zod16.z.number() }), responseSchema: audioMixersFadersFaderParamsParamGate } }; var audioMixersFadersFaderParamsParamGateSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/gate"]: { paramsSchema: import_zod16.z.object({ mixerID: import_zod16.z.number(), faderID: import_zod16.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamGateMutable, responseSchema: audioMixersFadersFaderParamsParamGateMutable } }; // src/api/audio/mixers/faders/params/limiter.ts var import_zod17 = require("zod"); var audioMixersFadersFaderParamsParamLimiterImmutable = import_zod17.z.object({ _active: import_zod17.z.boolean(), _gainreduction: import_zod17.z.number() }); var audioMixersFadersFaderParamsParamLimiterMutable = import_zod17.z.object({ on: import_zod17.z.boolean(), release: import_zod17.z.number(), threshold: import_zod17.z.number() }); var audioMixersFadersFaderParamsParamLimiter = audioMixersFadersFaderParamsParamLimiterImmutable.merge( audioMixersFadersFaderParamsParamLimiterMutable ); var audioMixersFadersFaderParamsParamLimiterGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/limiter"]: { paramsSchema: import_zod17.z.object({ mixerID: import_zod17.z.number(), faderID: import_zod17.z.number() }), responseSchema: audioMixersFadersFaderParamsParamLimiter } }; var audioMixersFadersFaderParamsParamLimiterSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/limiter"]: { paramsSchema: import_zod17.z.object({ mixerID: import_zod17.z.number(), faderID: import_zod17.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamLimiterMutable, responseSchema: audioMixersFadersFaderParamsParamLimiterMutable } }; // src/api/audio/mixers/faders/params/panbal.ts var import_zod18 = require("zod"); var audioMixersFadersFaderParamsParamPanbalImmutable = import_zod18.z.object({ _active: import_zod18.z.boolean() }); var audioMixersFadersFaderParamsParamPanbalMutable = import_zod18.z.object({ divergency: import_zod18.z.number(), lfeonly: import_zod18.z.boolean(), lfesend: import_zod18.z.number(), matrix: import_zod18.z.number(), panbal: import_zod18.z.number(), rear: import_zod18.z.number() }); var audioMixersFadersFaderParamsParamPanbal = audioMixersFadersFaderParamsParamPanbalImmutable.merge( audioMixersFadersFaderParamsParamPanbalMutable ); var audioMixersFadersFaderParamsParamPanbalGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/panbal"]: { paramsSchema: import_zod18.z.object({ mixerID: import_zod18.z.number(), faderID: import_zod18.z.number() }), responseSchema: audioMixersFadersFaderParamsParamPanbal } }; var audioMixersFadersFaderParamsParamPanbalSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/panbal"]: { paramsSchema: import_zod18.z.object({ mixerID: import_zod18.z.number(), faderID: import_zod18.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamPanbalMutable, responseSchema: audioMixersFadersFaderParamsParamPanbalMutable } }; // src/api/audio/mixers/faders/params/r128agc.ts var import_zod19 = require("zod"); var audioMixersFadersFaderParamsParamR128AGCImmutable = import_zod19.z.object({ _active: import_zod19.z.boolean(), _gainreduction: import_zod19.z.number() }); var audioMixersFadersFaderParamsParamR128AGCMutable = import_zod19.z.object({ freeze: import_zod19.z.boolean(), gain: import_zod19.z.number(), level: import_zod19.z.number(), on: import_zod19.z.boolean(), threshold: import_zod19.z.number(), velocity: import_zod19.z.number() }); var audioMixersFadersFaderParamsParamR128AGC = audioMixersFadersFaderParamsParamR128AGCImmutable.merge( audioMixersFadersFaderParamsParamR128AGCMutable ); var audioMixersFadersFaderParamsParamR128AGCGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/r128agc"]: { paramsSchema: import_zod19.z.object({ mixerID: import_zod19.z.number(), faderID: import_zod19.z.number() }), responseSchema: audioMixersFadersFaderParamsParamR128AGC } }; var audioMixersFadersFaderParamsParamR128AGCSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/r128agc"]: { paramsSchema: import_zod19.z.object({ mixerID: import_zod19.z.number(), faderID: import_zod19.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamR128AGCMutable, responseSchema: audioMixersFadersFaderParamsParamR128AGCMutable } }; // src/api/audio/mixers/faders/params/subsonic.ts var import_zod20 = require("zod"); var audioMixersFadersFaderParamsParamSubsonicImmutable = import_zod20.z.object({ _active: import_zod20.z.boolean() }); var audioMixersFadersFaderParamsParamSubsonicMutable = import_zod20.z.object({ frequency: import_zod20.z.number(), on: import_zod20.z.boolean() }); var audioMixersFadersFaderParamsParamSubsonic = audioMixersFadersFaderParamsParamSubsonicImmutable.merge( audioMixersFadersFaderParamsParamSubsonicMutable ); var audioMixersFadersFaderParamsParamSubsonicGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/gate"]: { paramsSchema: import_zod20.z.object({ mixerID: import_zod20.z.number(), faderID: import_zod20.z.number() }), responseSchema: audioMixersFadersFaderParamsParamSubsonic } }; var audioMixersFadersFaderParamsParamSubsonicSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/gate"]: { paramsSchema: import_zod20.z.object({ mixerID: import_zod20.z.number(), faderID: import_zod20.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamSubsonicMutable, responseSchema: audioMixersFadersFaderParamsParamSubsonicMutable } }; // src/api/audio/mixers/faders/params/swc.ts var import_zod21 = require("zod"); var audioMixersFadersFaderParamsParamSwcImmutable = import_zod21.z.object({ _active: import_zod21.z.boolean() }); var audioMixersFadersFaderParamsParamSwcMutable = import_zod21.z.object({ direction: import_zod21.z.number(), type: import_zod21.z.boolean(), width: import_zod21.z.number() }); var audioMixersFadersFaderParamsParamSwc = audioMixersFadersFaderParamsParamSwcImmutable.merge( audioMixersFadersFaderParamsParamSwcMutable ); var audioMixersFadersFaderParamsParamSwcGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/swc"]: { paramsSchema: import_zod21.z.object({ mixerID: import_zod21.z.number(), faderID: import_zod21.z.number() }), responseSchema: audioMixersFadersFaderParamsParamSwc } }; var audioMixersFadersFaderParamsParamSwcSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/swc"]: { paramsSchema: import_zod21.z.object({ mixerID: import_zod21.z.number(), faderID: import_zod21.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamSwcMutable, responseSchema: audioMixersFadersFaderParamsParamSwcMutable } }; // src/api/audio/mixers/faders/params/varfilter.ts var import_zod22 = require("zod"); var audioMixersFadersFaderParamsParamVarfilterImmutable = import_zod22.z.object({ _active: import_zod22.z.boolean() }); var audioMixersFadersFaderParamsParamVarfilterMutable = import_zod22.z.object({ frequency: import_zod22.z.number(), hipass: import_zod22.z.boolean(), on: import_zod22.z.boolean(), order: import_zod22.z.number() }); var audioMixersFadersFaderParamsParamVarfilter = audioMixersFadersFaderParamsParamVarfilterImmutable.merge( audioMixersFadersFaderParamsParamVarfilterMutable ); var audioMixersFadersFaderParamsParamVarfilterGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/varfilter{filtID}"]: { paramsSchema: import_zod22.z.object({ mixerID: import_zod22.z.number(), faderID: import_zod22.z.number(), filtID: import_zod22.z.number() }), responseSchema: audioMixersFadersFaderParamsParamVarfilter } }; var audioMixersFadersFaderParamsParamVarfilterSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params/varfilter{filtID}"]: { paramsSchema: import_zod22.z.object({ mixerID: import_zod22.z.number(), faderID: import_zod22.z.number(), filtID: import_zod22.z.number() }), payloadSchema: audioMixersFadersFaderParamsParamVarfilterMutable, responseSchema: audioMixersFadersFaderParamsParamVarfilterMutable } }; // src/api/audio/mixers/faders/params/index.ts var audioMixersFadersFaderParamsParams = import_zod23.z.object({ agc: audioMixersFadersFaderParamsParamAGC, compressor: audioMixersFadersFaderParamsParamCompressor, deesser: audioMixersFadersFaderParamsParamDeesser, deesser2: audioMixersFadersFaderParamsParamDeesser2, // TODO: Check if eq is correct, or if it should be eq1, eq2, eq3 and eq4 eq: audioMixersFadersFaderParamsParamEQ, expander: audioMixersFadersFaderParamsParamExpander, gain: audioMixersFadersFaderParamsParamGain, gate: audioMixersFadersFaderParamsParamGate, limiter: audioMixersFadersFaderParamsParamLimiter, panbal: audioMixersFadersFaderParamsParamPanbal, r128agc: audioMixersFadersFaderParamsParamR128AGC, subsonic: audioMixersFadersFaderParamsParamSubsonic, swc: audioMixersFadersFaderParamsParamSwc, varfilter: audioMixersFadersFaderParamsParamVarfilter }); var audioMixersFadersFaderParamsGetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}/params"]: { paramsSchema: import_zod23.z.object({ mixerID: import_zod23.z.number(), faderID: import_zod23.z.number() }), responseSchema: audioMixersFadersFaderParamsParams }, ...audioMixersFadersFaderParamsParamAGCGetHandlers, ...audioMixersFadersFaderParamsParamCompressorGetHandlers, ...audioMixersFadersFaderParamsParamDeesserGetHandlers, ...audioMixersFadersFaderParamsParamEQGetHandlers, ...audioMixersFadersFaderParamsParamExpanderGetHandlers, ...audioMixersFadersFaderParamsParamGainGetHandlers, ...audioMixersFadersFaderParamsParamGateGetHandlers, ...audioMixersFadersFaderParamsParamLimiterGetHandlers, ...audioMixersFadersFaderParamsParamPanbalGetHandlers, ...audioMixersFadersFaderParamsParamR128AGCGetHandlers, ...audioMixersFadersFaderParamsParamSubsonicGetHandlers, ...audioMixersFadersFaderParamsParamSwcGetHandlers, ...audioMixersFadersFaderParamsParamVarfilterGetHandlers }; var audioMixersFadersFaderParamsSetHandlers = { ...audioMixersFadersFaderParamsParamAGCSetHandlers, ...audioMixersFadersFaderParamsParamCompressorSetHandlers, ...audioMixersFadersFaderParamsParamDeesserSetHandlers, ...audioMixersFadersFaderParamsParamEQSetHandlers, ...audioMixersFadersFaderParamsParamExpanderSetHandlers, ...audioMixersFadersFaderParamsParamGainSetHandlers, ...audioMixersFadersFaderParamsParamGateSetHandlers, ...audioMixersFadersFaderParamsParamLimiterSetHandlers, ...audioMixersFadersFaderParamsParamPanbalSetHandlers, ...audioMixersFadersFaderParamsParamR128AGCSetHandlers, ...audioMixersFadersFaderParamsParamSubsonicSetHandlers, ...audioMixersFadersFaderParamsParamSwcSetHandlers, ...audioMixersFadersFaderParamsParamVarfilterSetHandlers }; // src/api/audio/mixers/faders/index.ts var audioMixersFadersFaderImmutable = import_zod24.z.object({ _channelcnt: import_zod24.z.number(), _defaultlabel: import_zod24.z.string(), _faderstart: import_zod24.z.boolean(), _lastloadedsnap: import_zod24.z.string(), _poolavailable: import_zod24.z.boolean(), _readystate: import_zod24.z.boolean(), _usecleanfeed: import_zod24.z.number(), meter: audioMixersFadersFaderMeters, mutegroups: numberedObject(audioMixersFadersFaderMutegroupsMutegroup), _paramlist: audioMixersFadersFaderParamlist, options: audioMixersFadersFaderOptions, params: audioMixersFadersFaderParamsParams }); var audioMixersFadersFaderMutable = import_zod24.z.object({ altinput: import_zod24.z.boolean(), bypass: import_zod24.z.boolean(), fader: import_zod24.z.number(), isolate: import_zod24.z.boolean(), label: import_zod24.z.string(), memo: import_zod24.z.boolean(), offair: import_zod24.z.boolean(), on: import_zod24.z.boolean(), pfl1: import_zod24.z.boolean(), pfl2: import_zod24.z.boolean(), preparation: import_zod24.z.boolean(), solo: import_zod24.z.boolean(), sourceid: import_zod24.z.number(), vcagroup: import_zod24.z.number(), voice: import_zod24.z.boolean() }); var audioMixersFadersFader = audioMixersFadersFaderImmutable.merge( audioMixersFadersFaderMutable ); var audioMixersFadersFaderGetHandlers = { ["/audio/mixers/{mixerID}/faders"]: { paramsSchema: import_zod24.z.object({ mixerID: import_zod24.z.number() }), responseSchema: numberedObject(audioMixersFadersFader) }, ["/audio/mixers/{mixerID}/faders/{faderID}"]: { paramsSchema: import_zod24.z.object({ mixerID: import_zod24.z.number(), faderID: import_zod24.z.number() }), responseSchema: audioMixersFadersFader }, ...audioMixersFadersFaderMutegroupsGetHandlers, ...audioMixersFadersFaderParamsGetHandlers }; var audioMixersFadersFaderSetHandlers = { ["/audio/mixers/{mixerID}/faders/{faderID}"]: { paramsSchema: import_zod24.z.object({ mixerID: import_zod24.z.number(), faderID: import_zod24.z.number() }), payloadSchema: audioMixersFadersFaderMutable, responseSchema: audioMixersFadersFaderMutable }, ...audioMixersFadersFaderMutegroupsSetHandlers, ...audioMixersFadersFaderParamsSetHandlers }; // src/api/audio/mixers/mutegroups/index.ts var import_zod25 = require("zod"); var audioMixersMutegroupsMutegroupImmutable = import_zod25.z.boolean(); var audioMixersMutegroupsMutegroup = audioMixersMutegroupsMutegroupImmutable; var audioMixersMutegroupsGetHandlers = { ["/audio/mixers/{mixerID}/mutegroups"]: { paramsSchema: import_zod25.z.object({ mixerID: import_zod25.z.number() }), responseSchema: numberedObject(audioMixersMutegroupsMutegroup) }, ["/audio/mixers/{mixerID}/mutegroups/{mutegroupID}"]: { paramsSchema: import_zod25.z.object({ mixerID: import_zod25.z.number(), mutegroupID: import_zod25.z.number() }), responseSchema: audioMixersMutegroupsMutegroup } }; // src/api/audio/mixers/options/index.ts var import_zod26 = require("zod"); var audioMixersOptionsPflMutable = import_zod26.z.object({ afl: import_zod26.z.boolean(), aflwhenon: import_zod26.z.boolean(), mix: import_zod26.z.boolean(), reset: import_zod26.z.boolean(), resetfader: import_zod26.z.boolean(), return: import_zod26.z.boolean() }); var audioMixersOptionsPfl = audioMixersOptionsPflMutable; var audioMixersOptionsImmutable = import_zod26.z.object({ pfl1: audioMixersOptionsPfl, pfl2: audioMixersOptionsPfl }); var audioMixersOptionsMutable = import_zod26.z.object({ directoffair: import_zod26.z.boolean() }); var audioMixersOptions = audioMixersOptionsImmutable.merge( audioMixersOptionsMutable ); var audioMixersOptionsGetHandlers = { ["/audio/mixers/{mixerID}/options"]: { paramsSchema: import_zod26.z.object({ mixerID: import_zod26.z.number() }), responseSchema: audioMixersOptions }, ["/audio/mixers/{mixerID}/options/pfl1"]: { paramsSchema: import_zod26.z.object({ mixerID: import_zod26.z.number() }), responseSchema: audioMixersOptionsPfl }, ["/audio/mixers/{mixerID}/options/pfl2"]: { paramsSchema: import_zod26.z.object({ mixerID: import_zod26.z.number() }), responseSchema: audioMixersOptionsPfl } }; var audioMixersOptionsSetHandlers = { ["/audio/mixers/{mixerID}/options"]: { paramsSchema: import_zod26.z.object({ mixerID: import_zod26.z.number() }), payloadSchema: audioMixersOptionsMutable, responseSchema: audioMixersOptionsMutable }, ["/audio/mixers/{mixerID}/options/pfl1"]: { paramsSchema: import_zod26.z.object({ mixerID: import_zod26.z.number() }), payloadSchema: audioMixersOptionsPflMutable, responseSchema: audioMixersOptionsPflMutable }, ["/audio/mixers/{mixerID}/options/pfl2"]: { paramsSchema: import_zod26.z.object({ mixerID: import_zod26.z.number() }), payloadSchema: audioMixersOptionsPflMutable, responseSchema: audioMixersOptionsPflMutable } }; // src/api/audio/mixers/sourcelist/index.ts var import_zod27 = require("zod"); var audioMixersSourcelistItemImmutable = import_zod27.z.object({ _defaultlabel: import_zod27.z.string(), _label: import_zod27.z.string(), _sourceid: import_zod27.z.number() }); var audioMixersSourcelistItem = audioMixersSourcelistItemImmutable; var audioMixersSourcelist = import_zod27.z.array(audioMixersSourcelistItem); var audioMixersSourcelistGetHandlers = { ["/audio/mixers/{mixerID}/sourcelist"]: { paramsSchema: import_zod27.z.object({ mixerID: import_zod27.z.number() }), responseSchema: audioMixersSourcelist } }; // src/api/audio/mixers/index.ts var audioMixersMixerImmutable = import_zod28.z.object({ _lastloadedsnap: import_zod28.z.string(), automix: numberedObject(audioMixersAutomix), cleanfeeds: numberedObject(audioMixersCleanfeeds), faders: numberedObject(audioMixersFadersFader), mutegroups: numberedObject(audioMixersMutegroupsMutegroup), options: audioMixersOptions, sourcelist: audioMixersSourcelist }); var audioMixersMixer = audioMixersMixerImmutable; var audioMixersGetHandlers = { ["/audio/mixers"]: { paramsSchema: null, responseSchema: numberedObject(audioMixersMixer) }, ["/audio/mixers/{mixerID}"]: { paramsSchema: import_zod28.z.object({ mixerID: import_zod28.z.number() }), responseSchema: audioMixersMixer }, ...audioMixersAutomixGetHandlers, ...audioMixersCleanfeedsGetHandlers, ...audioMixersFadersFaderGetHandlers, ...audioMixersMutegroupsGetHandlers, ...audioMixersOptionsGetHandlers, ...audioMixersSourcelistGetHandlers }; var audioMixersSetHandlers = { ...audioMixersAutomixSetHandlers, ...audioMixersCleanfeedsSetHandlers, ...audioMixersFadersFaderSetHandlers, ...audioMixersOptionsSetHandlers }; // src/api/audio/pots/index.ts var import_zod29 = require("zod"); var audioPotsPotImmutable = import_zod29.z.object({ _max: import_zod29.z.number(), _min: import_zod29.z.number(), _name: import_zod29.z.string(), _step: import_zod29.z.number() }); var audioPotsPotMutable = import_zod29.z.object({ value: import_zod29.z.number() }); var audioPotsPot = audioPotsPotImmutable.merge(audioPotsPotMutable); var audioPotsGetHandlers = { ["/audio/pots"]: { paramsSchema: null, responseSchema: numberedObject(audioPotsPot) }, ["/audio/pots/{potID}"]: { paramsSchema: import_zod29.z.object({ potID: import_zod29.z.number() }), responseSchema: audioPotsPot } }; var audioPotsSetHandlers = { ["/audio/pots/{potID}"]: { paramsSchema: import_zod29.z.object({ potID: import_zod29.z.number() }), payloadSchema: audioPotsPotMutable, responseSchema: audioPotsPotMutable } }; // src/api/audio/routing/index.ts var import_zod33 = require("zod"); // src/api/audio/routing/inputs/index.ts var import_zod30 = require("zod"); var audioRoutingInputImmutable = import_zod30.z.object({ _channels: import_zod30.z.number(), _device: import_zod30.z.string(), _name: import_zod30.z.string() }); var audioRoutingInput = audioRoutingInputImmutable; var audioRoutingInputsGetHandlers = { ["/audio/routing/inputs"]: { paramsSchema: null, responseSchema: numberedObject(audioRoutingInput) }, ["/audio/routing/inputs/{inputID}"]: { paramsSchema: import_zod30.z.object({ inputID: import_zod30.z.number() }), responseSchema: audioRoutingInput } }; // src/api/audio/routing/outputs/index.ts var import_zod31 = require("zod"); var audioRoutingOutputImmutable = import_zod31.z.object({ _channels: import_zod31.z.number(), _device: import_zod31.z.string(), _name: import_zod31.z.string() }); var audioRoutingOutput = audioRoutingOutputImmutable; var audioRoutingOutputsGetHandlers = { ["/audio/routing/outputs"]: { paramsSchema: null, responseSchema: numberedObject(audioRoutingOutput) }, ["/audio/routing/outputs/{outputID}"]: { paramsSchema: import_zod31.z.object({ outputID: import_zod31.z.number() }), responseSchema: audioRoutingOutput } }; // src/api/audio/routing/routes/index.ts var import_zod32 = require("zod"); var audioRoutingRouteMutable = import_zod32.z.string(); var audioRoutingRoute = audioRoutingRouteMutable; var audioRoutingRoutesGetHandlers = { ["/audio/routing/routes"]: { paramsSchema: null, responseSchema: numberedObject(audioRoutingRoute) }, ["/audio/routing/routes/{routeID}"]: { paramsSchema: import_zod32.z.object({ routeID: import_zod32.z.number() }), responseSchema: audioRoutingRoute } }; var audioRoutingRoutesSetHandlers = { ["/audio/routing/routes/{routeID}"]: { paramsSchema: import_zod32.z.object({ // TODO: Check if routeID is actually a number. routeID: import_zod32.z.number() }), responseSchema: audioRoutingRouteMutable, payloadSchema: audioRoutingRouteMutable } }; // src/api/audio/routing/index.ts var audioRouting = import_zod33.z.object({ inputs: numberedObject(audioRoutingInput), outputs: numberedObject(audioRoutingOutput), routes: numberedObject(audioRoutingRoute) }); var audioRoutingGetHandlers = { ["/audio/routing"]: { paramsSchema: null, responseSchema: audioRouting }, ...audioRoutingInputsGetHandlers, ...audioRoutingOutputsGetHandlers, ...audioRoutingRoutesGetHandlers }; var audioRoutingSetHandlers = { ...audioRoutingRoutesSetHandlers }; // src/api/audio/selectors/index.ts var import_zod36 = require("zod"); // src/api/audio/selectors/selectors/index.ts var import_zod34 = require("zod"); var audioSelectorSelectorImmutable = import_zod34.z.object({ _name: import_zod34.z.string(), _sourcelist: import_zod34.z.string() }); var audioSelectorSelectorMutable = import_zod34.z.object({ left: import_zod34.z.string(), right: import_zod34.z.string() }); var audioSelectorsSelector = audioSelectorSelectorImmutable.merge( audioSelectorSelectorMutable ); var audioSelectorsSelectorsGetHandlers = { ["/audio/selectors/selectors"]: { paramsSchema: null, responseSchema: numberedObject(audioSelectorsSelector) }, ["/audio/selectors/selectors/{selectorID}"]: { paramsSchema: import_zod34.z.object({ selectorID: import_zod34.z.number() }), responseSchema: audioSelectorsSelector } }; var audioSelectorsSelectorsSetHandlers = { ["/audio/selectors/selectors/{selectorID}"]: { paramsSchema: import_zod34.z.object({ selectorID: import_zod34.z.number() }), responseSchema: audioSelectorSelectorMutable, payloadSchema: audioSelectorSelectorMutable } }; // src/api/audio/selectors/sourcelists/index.ts var import_zod35 = require("zod"); var audioSelectorsSourcelistImmutable = import_zod35.z.object({ _name: import_zod35.z.string(), entries: numberedObject( import_zod35.z.object({ _label: import_zod35.z.string(), _sourcel: import_zod35.z.string(), _sourcer: import_zod35.z.string() }) ) }); var audioSelectorsSourcelist = audioSelectorsSourcelistImmutable; var audioSelectorsSourcelistsGetHandlers = { ["/audio/selectors/sourcelists"]: { paramsSchema: null, responseSchema: numberedObject(audioSelectorsSourcelist) }, ["/audio/selectors/sourcelists/{sourcelistID}"]: { paramsSchema: import_zod35.z.object({ sourcelistID: import_zod35.z.number() }), responseSchema: audioSelectorsSourcelist } }; // src/api/audio/selectors/index.ts var audioSelectors = import_zod36.z.object({ selectors: numberedObject(audioSelectorsSelector), sourcelists: import_zod36.z.any() // TODO: Implement sourcelists }); var audioSelectorsGetHandlers = { ["/audio/selectors"]: { paramsSchema: null, responseSchema: audioSelectors }, ...audioSelectorsSelectorsGetHandlers, ...audioSelectorsSourcelistsGetHandlers }; var audioSelectorsSetHandlers = { ...audioSelectorsSelectorsSetHandlers }; // src/api/audio/index.ts var audioGetHandlers = { ...audioLevelsGetHandlers, ...audioLoudnessGetHandlers, ...audioMixersGetHandlers, ...audioPotsGetHandlers, ...audioRoutingGetHandlers, ...audioSelectorsGetHandlers }; var audioSetHandlers = { ...audioMixersSetHandlers, ...audioPotsSetHandlers, ...audioRoutingSetHandlers, ...audioSelectorsSetHandlers }; // src/api/control/logics/index.ts var import_zod37 = require("zod"); var controlLogicsLogicImmutable = import_zod37.z.object({ _name: import_zod37.z.string(), _path: import_zod37.z.string() }); var controlLogicsLogicMutable = import_zod37.z.object({ value: import_zod37.z.boolean() }); var controlLogicsLogic = controlLogicsLogicImmutable.merge( controlLogicsLogicMutable ); var controlLogicsGetHandlers = { ["/control/logics"]: { paramsSchema: null, responseSchema: numberedObject(controlLogicsLogic) }, ["/control/logics/{logicID}"]: { paramsSchema: import_zod37.z.object({ logicID: import_zod37.z.number() }), responseSchema: controlLogicsLogic } }; var controlLogicsSetHandlers = { ["/control/logics/{logicID}"]: { paramsSchema: import_zod37.z.object({ logicID: import_zod37.z.number() }), payloadSchema: controlLogicsLogicMutable, responseSchema: controlLogicsLogicMutable } }; // src/api/control/index.ts var controlGetHandlers = { ...controlLogicsGetHandlers }; var controlSetHandlers = { ...controlLogicsSetHandlers }; // src/api/general/index.ts var import_zod38 = require("zod"); var general = import_zod38.z.object({ _api_version: import_zod38.z.string(), _firmware_version: import_zod38.z.string(), _hardwareserial: import_zod38.z.string(), _hourmeter: import_zod38.z.number(), _sync2ok: import_zod38.z.boolean(), _syncsource: import_zod38.z.number(), _systemfrequency: import_zod38.z.number(), _systemtime: import_zod38.z.number(), _uptime: import_zod38.z.number() }); var generalGetHandlers = { ["/general"]: { paramsSchema: null, responseSchema: general } }; // src/api/index.ts var dhdHandlers = { get: { ...audioGetHandlers, ...controlGetHandlers, ...generalGetHandlers }, set: { ...audioSetHandlers, ...controlSetHandlers } }; // src/log.ts var import_debug = __toESM(require("debug"), 1); var log = { debug: (0, import_debug.default)("dhd-control-api:debug"), error: (0, import_debug.default)("dhd-control-api:error"), info: (0, import_debug.default)("dhd-control-api:info"), warn: (0, import_debug.default)("dhd-control-api:warn") }; log.error.color = "1"; log.info.color = "2"; log.debug.color = "4"; log.warn.color = "3"; // src/schemas.ts var import_zod39 = require("zod"); var dhdWebSocketAuthResponse = import_zod39.z.object({ msgID: import_zod39.z.string(), method: import_zod39.z.literal("auth"), success: import_zod39.z.literal(true) }); var dhdWebSocketBaseResponse = (method) => import_zod39.z.object({ msgID: import_zod39.z.string(), method: import_zod39.z.literal(method), success: import_zod39.z.literal(true), path: import_zod39.z.string(), payload: import_zod39.z.any() }); var dhdWebSocketErrorResponse = (method) => import_zod39.z.object({ msgID: import_zod39.z.string(), method: import_zod39.z.literal(method), success: import_zod39.z.literal(false), error: import_zod39.z.object({ code: import_zod39.z.number(), message: import_zod39.z.string() }) }); var dhdWebSocketResponse = import_zod39.z.union([ dhdWebSocketAuthResponse, dhdWebSocketErrorResponse("auth"), dhdWebSocketBaseResponse("get"), dhdWebSocketErrorResponse("get"), dhdWebSocketBaseResponse("set"), dhdWebSocketErrorResponse("set") ]); // src/index.ts var dhdOptionsSchema = import_zod40.z.object({ /** * The hostname or IP address of the DHD device. * * @example 10.0.0.1 * @example dhd.local */ host: import_zod40.z.string(), /** * The token used to authenticate with the DHD device. */ token: import_zod40.z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{8}-[0-9a-f]{8}-[0-9a-f]{8}$/i, { message: "Invalid token format" }), /** * The type of connection to use when connecting to the DHD device. Please * note that the connection via REST has a rate limit of 1 request per second. * * @default 'websocket' */ connectionType: import_zod40.z.union([import_zod40.z.literal("websocket"), import_zod40.z.literal("rest")]).default("websocket"), /** * Connect to the DHD device using a secure WebSocket connection or HTTPS-requests. * * @default false */ secure: import_zod40.z.boolean().default(false), /** * Connect to the DHD device automatically when the instance is created. * * @default true */ autoConnect: import_zod40.z.boolean().default(true), /** * Automatically reconnect to the DHD device if the connection is lost. * * @default true */ autoReconnect: import_zod40.z.boolean().default(true) }); var DHD = class { options; socket = null; reconnectTimeout = null; requestMap = /* @__PURE__ */ new Map(); eventHandlers = /* @__PURE__ */ new Map(); constructor(options) { this.options = dhdOptionsSchema.parse(options); if (this.options.autoConnect !== false) { this.connect(); } if (this.options.connectionType === "rest") { setTimeout(() => this.emit("ready"), 0); } } on = (event, handler) => { if (!this.eventHandlers.has(event)) { this.eventHandlers.set(event, []); } this.eventHandlers.get(event).push(handl