@iotize/tap
Version:
IoTize Device client for Javascript
56 lines • 3.74 kB
JavaScript
export class PipeConverterBuilder {
constructor(aliases = {}) {
this.aliases = aliases;
}
pipe(converter) {
return new PipeConverter([], this.aliases).pipe(converter);
}
}
/**
* Pipe multiple converter one after another
*/
export class PipeConverter {
constructor(converters, aliases = {}) {
this.converters = converters;
this.aliases = aliases;
}
decode(body) {
let output = body;
for (let converter of this.converters) {
if (typeof converter == 'function') {
output = converter(output);
}
else {
output = converter.decode(output);
}
}
return output;
}
encode(value) {
let output = value;
const reversedConverters = [...this.converters].reverse();
for (let converter of reversedConverters) {
if (typeof converter == 'function') {
output = converter(output);
}
else {
output = converter.encode(output);
}
}
return output;
}
pipe(converter) {
if (typeof converter === 'string') {
if (!(converter in this.aliases)) {
throw new Error(`Illegal argument, missing converter id: ${converter}`);
}
converter = this.aliases[converter];
}
this.converters.push(converter);
return this;
}
static pipe(converter) {
return new PipeConverter([converter], {});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9jbGllbnQvaW1wbC9zcmMvbGliL2NvbnZlcnRlci9ib2R5L3BpcGUtY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDUyxVQUEwRCxFQUFFO1FBQTVELFlBQU8sR0FBUCxPQUFPLENBQXFEO0lBQ2xFLENBQUM7SUFFRyxJQUFJLENBQUksU0FBb0Q7UUFDakUsT0FBTyxJQUFJLGFBQWEsQ0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBSSxTQUFnQixDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUNTLFVBQXlDLEVBQ3pDLFVBQTBELEVBQUU7UUFENUQsZUFBVSxHQUFWLFVBQVUsQ0FBK0I7UUFDekMsWUFBTyxHQUFQLE9BQU8sQ0FBcUQ7SUFDbEUsQ0FBQztJQUVKLE1BQU0sQ0FBQyxJQUFnQjtRQUNyQixJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsS0FBSyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3JDLElBQUksT0FBTyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUNsQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7UUFDRCxPQUFPLE1BQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVE7UUFDYixJQUFJLE1BQU0sR0FBUSxLQUFLLENBQUM7UUFDeEIsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFELEtBQUssSUFBSSxTQUFTLElBQUksa0JBQWtCLEVBQUU7WUFDeEMsSUFBSSxPQUFPLFNBQVMsSUFBSSxVQUFVLEVBQUU7Z0JBQ2xDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkM7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxJQUFJLENBQ1QsU0FBb0Q7UUFFcEQsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUN6RTtZQUNELFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFXLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUksU0FBMkM7UUFDL0QsT0FBTyxJQUFJLGFBQWEsQ0FBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiJ9