@iotize/tap
Version:
IoTize Device client for Javascript
206 lines • 14.5 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { combineLatest, Subject } from 'rxjs';
import { first, map, startWith } from 'rxjs/operators';
import { TapDataError } from '../tap-data-error';
export class AbstractBundleDataStream {
constructor(_variables) {
this._variables = _variables;
}
get variables() {
return Object.values(this._variables);
}
readRaw() {
return __awaiter(this, void 0, void 0, function* () {
const raw = yield this.readRawInner();
this.notifyRawValue(raw);
return raw;
});
}
// abstract read(): Promise<DataType>;
read() {
return __awaiter(this, void 0, void 0, function* () {
yield this.readRaw();
return this.valueSnapshot;
});
}
write(value) {
return __awaiter(this, void 0, void 0, function* () {
// if (typeof value !== 'object') {
// throw TapDataError.illegalParameter();
// }
for (const key in value) {
yield this.variable(key).writeRaw(value[key]);
}
});
}
variable(id) {
if (!(id in this._variables)) {
throw new Error(`Variable "${id}" not found in bundle "${this.id.toString()}"`);
}
return this._variables[id];
}
get rawValues() {
const variables = Object.values(this._variables);
return combineLatest(variables.map((v) => v.rawValues.pipe(startWith(undefined)))).pipe(map((values) => {
return values.reduce((accumulator, v, index) => {
accumulator[variables[index].id] = v; // TODO
return accumulator;
}, {});
}));
}
get rawValueSnaphot() {
const variables = Object.values(this._variables);
return variables.reduce((accumulator, v, index) => {
accumulator[variables[index].id] = v.rawValueSnaphot;
return accumulator;
}, {});
}
get valueSnapshot() {
const variables = Object.values(this._variables);
return variables.reduce((accumulator, v, index) => {
accumulator[variables[index].id] = v.valueSnapshot;
return accumulator;
}, {});
}
get values() {
const variables = Object.values(this._variables);
return combineLatest(variables.map((v) => v.values.pipe(startWith(undefined)))).pipe(map((values) => {
return values.reduce((accumulator, v, index) => {
accumulator[variables[index].id] = v;
return accumulator;
}, {});
}));
}
notifyRawValue(v) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
for (const id in v) {
const value = v[id];
if (value !== undefined) {
(_a = this._variables[id]) === null || _a === void 0 ? void 0 : _a.notifyRawValue(value);
}
}
});
}
findVariable(id) {
return id in this._variables ? this._variables[id] : undefined;
}
hasVariable(id) {
return !!this.findVariable(id);
}
writeRaw(values) {
return __awaiter(this, void 0, void 0, function* () {
for (const key in values) {
const value = values[key];
if (value !== undefined) {
yield this.variable(key).writeRaw(value);
}
}
});
}
}
export class AbstractEditableDataStream {
constructor() {
// static fromCustom(arg0: CustomVariableConfig) {
// return new Variable<T>(config, );
// }
// public static fromConfig<T>(config: VariableConfig) {
// return new Variable<T>(config, );
// }
// public static fromMemory(config: MemoryInfoConfig) {
// return new Variable<T>(config, );
// }
this.rawDataStream = new Subject(); // = new Subject<RawType>();
// private selfReadStream = new Subject<RawType>();
this.values = this.rawDataStream.pipe(map((v) => this.decodeValue(v)));
// if (dataStream) {
// this.dataStream = merge(
// dataStream,
// this.selfReadStream
// );
// }
// else {
// this.dataStream = this.selfReadStream;
// }
// this.dataStream = this.dataStream
// .pipe(
// tap(v => this.lastRawValue = v)
// );
// // Do we need to subscribe ?
// this.dataStream.subscribe();
}
get lastRawValue() {
return this._lastRawValue;
}
get rawValueSnaphot() {
return this.lastRawValue;
}
get valueSnapshot() {
if (this.lastRawValue === undefined) {
return undefined;
}
return this.decodeValue(this.lastRawValue);
}
get rawValues() {
return this.rawDataStream;
}
// {
// const value = await this.rawReader(this.context);
// this.notifyRawValue(value);
// return value;
// }
notifyRawValue(newValue) {
return __awaiter(this, void 0, void 0, function* () {
this._lastRawValue = newValue;
this.rawDataStream.next(newValue);
});
}
readRaw() {
return __awaiter(this, void 0, void 0, function* () {
const value = yield this.readRawInner();
this.notifyRawValue(value);
return value;
});
}
read() {
return __awaiter(this, void 0, void 0, function* () {
const p = this.values.pipe(first()).toPromise();
yield this.readRaw();
return p;
});
}
write(value) {
return __awaiter(this, void 0, void 0, function* () {
// if (!this.rawWritter) {
// throw new Error(`Cannot write value for ${this.id}`);
// }
const encoded = this.encodeValue(value);
return this.writeRaw(encoded);
});
}
encodeValue(value) {
try {
return this.converter.encode(value);
}
catch (err) {
throw TapDataError.unexpectedEncodedValueError(this, value, err);
}
}
decodeValue(data) {
try {
return this.converter.decode(data);
}
catch (err) {
throw TapDataError.unexpectedVariableDataRead(this, data, err);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtZGF0YS1zdHJlYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kYXRhL3NyYy9saWIvdXRpbGl0eS9lZGl0YWJsZS1kYXRhLXN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFvSGpELE1BQU0sT0FBZ0Isd0JBQXdCO0lBVzVDLFlBQ1UsVUFPUDtRQVBPLGVBQVUsR0FBVixVQUFVLENBT2pCO0lBQ0EsQ0FBQztJQWJKLElBQUksU0FBUztRQUNYLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQWVLLE9BQU87O1lBQ1gsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7S0FBQTtJQUNELHNDQUFzQztJQUVoQyxJQUFJOztZQUNSLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM1QixDQUFDO0tBQUE7SUFFSyxLQUFLLENBQUMsS0FBZTs7WUFDekIsbUNBQW1DO1lBQ25DLDZDQUE2QztZQUM3QyxJQUFJO1lBQ0osS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FB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