cc-znp
Version:
The interface for a host to communicate with TI CC253X Zigbee Network Processor(ZNP) over a serial port.
45 lines (44 loc) • 1.34 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const id = (x) => x;
class Enum {
constructor(obj, fn) {
this.keys = new Map();
this.values = new Map();
this.byKey = new Map();
this.byValue = new Map();
this.enums = [];
const { keys, values, byKey, byValue, enums } = this;
for (const key in obj) {
const value = fn ? fn(obj[key]) : obj[key];
const item = { key, value };
keys.set(value, key);
values.set(key, value);
byKey.set(key, item);
byValue.set(value, item);
enums.push(item);
}
}
/**
* Attempt to get a key-value entry, by key or value.
* Prioritizes key over value in case of conflict.
*/
get(key) {
return this.byKey.get(key) || this.byValue.get(key);
}
/**
* Attempt to get a key, by key or value.
* Prioritizes key over value in case of conflict.
*/
getKey(query) {
return ((this.values.has(query) && query) || this.keys.get(query));
}
/**
* Attempt to get a value, by key or value.
* Prioritizes **value** in case of conflict.
*/
getValue(query) {
return ((this.keys.has(query) && query) || this.values.get(query));
}
}
exports.Enum = Enum;