@iotize/tap
Version:
IoTize Device client for Javascript
33 lines • 2.98 kB
JavaScript
export class ArrayConverter {
constructor(_itemConverter, options) {
this._itemConverter = _itemConverter;
this.options = options;
}
get itemConverter() {
return this._itemConverter;
}
decode(bytes) {
let items = [];
let sizeOfItem = this.options.sizeOfItem;
for (let offset = 0; offset < bytes.length; offset += sizeOfItem) {
let slice = bytes.subarray(offset, offset + sizeOfItem);
let item = this._itemConverter.decode(slice);
items.push(item);
}
return items;
}
encode(items) {
let result = new Uint8Array(this.options.sizeOfItem * items.length);
let offset = 0;
for (let item of items) {
let encodedItem = this._itemConverter.encode(item); // TODO
if (encodedItem.length > this.options.sizeOfItem) {
throw new Error(`Encoded item size overflow: ${encodedItem.length} (max is ${this.options.sizeOfItem})`);
}
result.set(encodedItem, offset);
offset += this.options.sizeOfItem;
}
return result;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vY2xpZW50L2ltcGwvc3JjL2xpYi9jb252ZXJ0ZXIvYm9keS9hcnJheS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDWSxjQUF1QyxFQUN2QyxPQUE4QjtRQUQ5QixtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFDdkMsQ0FBQztJQUVKLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksS0FBSyxHQUFlLEVBQUUsQ0FBQztRQUMzQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN6QyxLQUFLLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFO1lBQ2hFLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztZQUN4RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN0QixJQUFJLFdBQVcsR0FBSSxJQUFJLENBQUMsY0FBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3BFLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDaEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwrQkFBK0IsV0FBVyxDQUFDLE1BQU0sWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUN4RixDQUFDO2FBQ0g7WUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNoQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDbkM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YifQ==