matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
24 lines • 1.24 kB
JavaScript
import { baseCleanModeConfigs } from '../behaviors/roborock.vacuum/core/cleanModeConfig/index.js';
import { getAllModesForDevice, hasSmartPlan } from '../behaviors/roborock.vacuum/core/deviceCapabilityRegistry.js';
import { createDefaultModeResolver, createSmartModeResolver, } from '../behaviors/roborock.vacuum/core/modeResolver.js';
const defaultModeResolver = createDefaultModeResolver(baseCleanModeConfigs);
const resolverCache = new Map();
/**
* Get the appropriate clean mode resolver based on device model capabilities.
* Resolvers are cached per model+featureSet combination for efficiency.
*/
export function getCleanModeResolver(model, forceRunAtDefault, featureSet, newFeatureSet) {
if (forceRunAtDefault) {
return defaultModeResolver;
}
const key = `${model}|${featureSet ?? ''}|${newFeatureSet ?? ''}`;
if (!resolverCache.has(key)) {
const modes = getAllModesForDevice(model, featureSet, newFeatureSet);
const resolver = hasSmartPlan(model, featureSet, newFeatureSet)
? createSmartModeResolver(modes)
: createDefaultModeResolver(modes);
resolverCache.set(key, resolver);
}
return resolverCache.get(key);
}
//# sourceMappingURL=runtimeHelper.js.map