@iotize/tap-scripts
Version:
IoTize Tap scripts
127 lines • 9.72 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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.__DEFINED_PROPERTY_GETTER_SCRIPTS_ = void 0;
require("@iotize/tap/auth");
require("@iotize/tap/service/impl/device");
require("@iotize/tap/service/impl/interface");
const utility_1 = require("@iotize/common/utility");
const tap_1 = require("@iotize/tap");
const tap_scripts_1 = require("@iotize/tap-scripts");
const buffer_1 = require("buffer");
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
exports.__DEFINED_PROPERTY_GETTER_SCRIPTS_ = (0, tap_1.defineTapPropertyExtension)('scripts', (context) => new TapScriptExtension(context));
class TapScriptExtension {
constructor(context) {
this.context = context;
}
get tap() {
return this.context.tap;
}
execute(scriptContentOrProgInstructions, options = {}) {
try {
let instructions;
if (scriptContentOrProgInstructions instanceof buffer_1.Buffer) {
scriptContentOrProgInstructions = scriptContentOrProgInstructions.toString();
}
if (typeof scriptContentOrProgInstructions === 'string') {
instructions = tap_scripts_1.GrammarHelper.toProgInstructions(scriptContentOrProgInstructions);
}
else {
instructions = scriptContentOrProgInstructions;
}
const scriptRunner = new tap_scripts_1.ScriptRunner(options.io);
if (!options.throwOnError) {
scriptRunner.errorHandler = () => { };
}
else {
scriptRunner.errorHandler = err => {
throw err;
};
}
return scriptRunner.run(instructions, this.tap).pipe((0, operators_1.share)());
}
catch (err) {
return (0, rxjs_1.throwError)(err);
}
}
/**
* Configure tap from scripts
* @param scriptContentOrInstructions
* @param options
*/
configure(scriptContentOrInstructions, options) {
return new rxjs_1.Observable((emitter) => {
let executeScriptSub;
let cancelExec = false;
(() => __awaiter(this, void 0, void 0, function* () {
try {
emitter.next({
type: 'factory-reset',
progress: {
loaded: 0,
total: 1
}
});
(yield this.tap.service.device.factoryReset()).successful();
emitter.next({
type: 'factory-reset',
progress: {
loaded: 1,
total: 1
}
});
if (cancelExec)
return;
yield (0, utility_1.sleep)((options === null || options === void 0 ? void 0 : options.waitTime) || 400);
if (cancelExec)
return;
const obs = this.execute(scriptContentOrInstructions, {
throwOnError: false,
io: options === null || options === void 0 ? void 0 : options.io
})
.pipe((0, operators_1.tap)((event) => {
if (event.type === 'end') {
if (event.resultCode !== 0) {
throw tap_scripts_1.ScriptError.endWithErrorCode(event.resultCode);
}
}
}), (0, operators_1.share)());
executeScriptSub = obs.subscribe(emitter);
yield obs.toPromise();
if (cancelExec)
return;
yield (0, utility_1.sleep)((options === null || options === void 0 ? void 0 : options.waitTime) || 400);
if (cancelExec)
return;
yield this.tap.auth.logout();
// this.sessionKey = undefined;
}
catch (err) {
emitter.error(err);
}
}))();
return () => {
cancelExec = true;
executeScriptSub === null || executeScriptSub === void 0 ? void 0 : executeScriptSub.unsubscribe();
};
}).pipe((0, operators_1.share)());
}
}
// export function configureFromScript(
// this: Tap,
// scriptContentOrInstructions: string | ProgInstructions[] | Buffer,
// options: ConfigureFromScriptOptions = {}
// ): Observable<ConfigureFromScriptEvent> {
// }
// Tap.prototype.configureFromScript = configureFromScript;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXNjcmlwdC1leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9leHQvc3JjL3RhcC1zY3JpcHQtZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDRCQUEwQjtBQUMxQiwyQ0FBeUM7QUFDekMsOENBQTRDO0FBRTVDLG9EQUErQztBQUMvQyxxQ0FBOEQ7QUFDOUQscURBUTZCO0FBQzdCLG1DQUFnQztBQUNoQywrQkFBd0U7QUFDeEUsOENBQTRDO0FBMEIvQixRQUFBLGtDQUFrQyxHQUFHLElBQUEsZ0NBQTBCLEVBQ3hFLFNBQVMsRUFDVCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FDL0MsQ0FBQztBQUdGLE1BQU0sa0JBQWtCO0lBS3BCLFlBQW1CLE9BQXFCO1FBQXJCLFlBQU8sR0FBUCxPQUFPLENBQWM7SUFFeEMsQ0FBQztJQUxELElBQVksR0FBRztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUtELE9BQU8sQ0FDSCwrQkFBcUUsRUFDckUsVUFBZ0MsRUFBRTtRQUVsQyxJQUFJO1lBQ0EsSUFBSSxZQUFnQyxDQUFDO1lBQ3JDLElBQUksK0JBQStCLFlBQVksZUFBTSxFQUFFO2dCQUNuRCwrQkFBK0IsR0FBRywrQkFBK0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNoRjtZQUNELElBQUksT0FBTywrQkFBK0IsS0FBSyxRQUFRLEVBQUU7Z0JBQ3JELFlBQVksR0FBRywyQkFBYSxDQUFDLGtCQUFrQixDQUMzQywrQkFBK0IsQ0FDbEMsQ0FBQzthQUNMO2lCQUFNO2dCQUNILFlBQVksR0FBRywrQkFBK0IsQ0FBQzthQUNsRDtZQUVELE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLE9BQU8s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