UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

73 lines 5.75 kB
import { TapStreamReader, TapStreamWriter } from '../../frame/import-adapter'; export class EnumConverter { constructor(mapping) { this.mapping = mapping; } decode(value) { const literalValue = this.decodeToLiteral(value); const enumStringValue = this.mapping[literalValue]; if (!enumStringValue) { throw new Error(`Unknown litteral value ${literalValue}.`); } return literalValue; } encode(value) { if (typeof value !== 'number') { throw Error(`Illegal argument when encoding enum value. Expecting number but found ${typeof value}`); } return this.encodeToLiteral(value); } } export class FixedSizeEnumConverter extends EnumConverter { constructor(mapping, size = 1) { super(mapping); this.mapping = mapping; this.size = size; } decodeToLiteral(value) { return TapStreamReader.fromArray(value).readU(this.size); } encodeToLiteral(value) { return new TapStreamWriter(this.size).writeU(value, this.size).toBytes; } } export class EnumListConverter { constructor(size, mapping) { this.size = size; this.mapping = mapping; } decode(value) { const bits = this.decodeToLiteral(TapStreamReader.create(value)); const results = []; const enumValues = Object.keys(this.mapping).filter((key) => !isNaN(Number(this.mapping[key]))); // console.log("numval", enumValues) for (const enumName of enumValues) { const enumValue = this.mapping[enumName]; const mask = parseInt(enumValue); if (mask == 0) { if (bits == 0) { results.push(enumValue); } } else if ((bits & mask) == mask) { results.push(enumValue); } } return results; } encode(values) { let mask = 0; for (const value of values) { if (typeof value !== 'number') { throw Error(`Illegal argument when encoding enum value. Expecting number but found ${typeof value}`); } mask |= value; } const result = new TapStreamWriter(this.size).writeU(mask, this.size).toBytes; return result; } decodeToLiteral(stream) { return stream.readU(this.size); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9jbGllbnQvaW1wbC9zcmMvbGliL2NvbnZlcnRlci9ib2R5L2VudW0tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUUsTUFBTSxPQUFnQixhQUFhO0lBQ2pDLFlBQW1CLE9BQVU7UUFBVixZQUFPLEdBQVAsT0FBTyxDQUFHO0lBQUcsQ0FBQztJQUVqQyxNQUFNLENBQUMsS0FBaUI7UUFDdEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLGVBQWUsR0FBbUIsSUFBSSxDQUFDLE9BQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFlBQVksR0FBRyxDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLFlBQXdCLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFRO1FBQ2IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsTUFBTSxLQUFLLENBQ1QsMEVBQTBFLE9BQU8sS0FBSyxFQUFFLENBQ3pGLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFlLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBS0Y7QUFFRCxNQUFNLE9BQU8sc0JBQTBCLFNBQVEsYUFBZ0I7SUFDN0QsWUFDUyxPQUFVLEVBQ1YsT0FBTyxDQUFDO1FBRWYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSFIsWUFBTyxHQUFQLE9BQU8sQ0FBRztRQUNWLFNBQUksR0FBSixJQUFJLENBQUk7SUFHakIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFp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