@iotize/tap
Version:
IoTize Device client for Javascript
120 lines • 8.71 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 { ResultCode } from '@iotize/tap/client/api';
import '@iotize/tap/service/impl/target';
import '@iotize/tap/service/impl/variable';
import '@iotize/tap/service/impl/interface';
import { Observable } from 'rxjs';
import { share } from 'rxjs/operators';
import { DBIOT_VARIABLE_CONFIG_CONVERTER } from './constants';
/**
* Create shared observable that read DBIOT configuration from tap
* @param tap
* @param maxVar
* @returns
*/
export function createReadDBIOTConfigurationFromTapObservable(tap, maxVar) {
const obs = new Observable((emitter) => {
let stopLoop = false;
const progressEvent = {
type: 'start',
data: {
total: maxVar,
},
};
emitter.next(progressEvent);
(() => __awaiter(this, void 0, void 0, function* () {
try {
const targetProtocol = (yield tap.service.target.getProtocol()).body();
const variables = [];
const progressEvent = {
type: 'progress',
data: {
current: 0,
total: maxVar,
},
};
emitter.next(progressEvent);
for (let variableId = 0; variableId < maxVar && !stopLoop; variableId++) {
const variableConfig = yield readTapVariableConfigWithDBIOTuration(tap, variableId);
if (variableConfig) {
variables.push(variableConfig);
}
const progressEvent = {
type: 'progress',
data: {
current: variableId + 1,
total: maxVar,
variable: variableConfig,
},
};
emitter.next(progressEvent);
}
if (!stopLoop) {
const result = {
type: 'complete',
data: {
bundles: [],
variables,
targetProtocol,
},
};
emitter.next(result);
}
emitter.complete();
}
catch (err) {
emitter.error(err);
}
}))();
return () => {
stopLoop = true;
};
});
return obs.pipe(share());
}
function readTapVariableConfigWithDBIOTuration(tap, id) {
return __awaiter(this, void 0, void 0, function* () {
const [lengthRes, typeRes, bundleIdRes] = yield tap.service.interface.executeMultipleCalls([
tap.service.variable.getNumberOfElementsCall(id),
tap.service.variable.getTypeCall(id),
tap.service.variable.getBundleIdCall(id),
]);
if (!lengthRes.isSuccessful()) {
if (lengthRes.codeRet() === ResultCode.NOT_FOUND) {
return undefined;
}
}
const length = lengthRes.body();
let dbiot = undefined;
if (length > 0) {
const rawMetaResponse = yield tap.service.variable.getRawMeta(id);
const rawData = rawMetaResponse.body();
if (rawData.length > 0) {
try {
dbiot = DBIOT_VARIABLE_CONFIG_CONVERTER.decode(rawData);
}
catch (err) {
// Ignore if dbiot variable is not set property
console.warn(`Cannot parse dbiot info for variable "${id}"`, err);
return;
}
}
}
return {
id,
bundleId: bundleIdRes.body(),
length,
type: typeRes.body(),
dbiot,
};
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2V4dHJhL2RiaW90L3NyYy9saWIvdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBMEM5RDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSw2Q0FBNkMsQ0FDM0QsR0FBUSxFQUNSLE1BQWM7SUFFZCxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBOEIsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNsRSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxhQUFhLEdBQXNDO1lBQ3ZELElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxNQUFNO2FBQ2Q7U0FDRixDQUFDO1FBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1QixDQUFDLEdBQVMsRUFBRTtZQUNWLElBQUk7Z0JBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZFLE1BQU0sU0FBUyxHQUFpQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sYUFBYSxHQUF5QztvQkFDMUQsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixPQUFPLEVB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