UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

206 lines 14.5 kB
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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