@pmouli/isy-matter-server
Version:
Service to expose an ISY device as a Matter Border router
36 lines • 1.65 kB
JavaScript
var RequirementType;
(function (RequirementType) {
RequirementType[RequirementType["Client"] = 1] = "Client";
RequirementType[RequirementType["Server"] = 2] = "Server";
RequirementType[RequirementType["Optional"] = 4] = "Optional";
RequirementType[RequirementType["Mandatory"] = 8] = "Mandatory";
RequirementType[RequirementType["All"] = 15] = "All";
/*AllServer = Server | Optional | Mandatory,
AllClient = Client | Optional | Mandatory,
AllOptional = Server | Client | Optional,
AllMandatory = Server | Client | Mandatory*/
})(RequirementType || (RequirementType = {}));
function hasFlag(value, flag) {
return (value & flag) === flag;
}
export function getRequiredBehaviors(deviceType, requirements = RequirementType.All) {
let behaviors = {};
if (hasFlag(requirements, RequirementType.Client)) {
if (hasFlag(requirements, RequirementType.Mandatory)) {
behaviors = { ...behaviors, ...(deviceType.requirements.client?.mandatory ?? {}) };
}
if (hasFlag(requirements, RequirementType.Optional)) {
behaviors = { ...behaviors, ...(deviceType.requirements.client?.optional ?? {}) };
}
}
if (hasFlag(requirements, RequirementType.Server)) {
if (hasFlag(requirements, RequirementType.Mandatory)) {
behaviors = { ...behaviors, ...(deviceType.requirements.server?.mandatory ?? {}) };
}
if (hasFlag(requirements, RequirementType.Optional)) {
behaviors = { ...behaviors, ...(deviceType.requirements.server?.optional ?? {}) };
}
}
return behaviors;
}
//# sourceMappingURL=Utils.js.map