@corvina/device-client
Version:
Corvina NodeJS Device Client
124 lines • 5.11 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeviceRunnerService = void 0;
const types_1 = require("../common/types");
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
class DeviceRunnerService {
deviceService;
setAvailableStructures(availableTags) {
const structs = new Set();
availableTags.forEach((tag) => {
const pos = tag.name.indexOf(".");
if (pos >= 0) {
structs.add({ name: tag.name.slice(0, pos), type: "struct", simulation: null });
}
});
availableTags.push(...structs);
const result = new Map();
availableTags.forEach((t) => {
result.set(t.name, t);
});
return result;
}
constructor(deviceService) {
this.deviceService = deviceService;
}
run() {
this.deviceService.setCycleTime(parseInt(process.env.CYCLE_TIME) || 1000);
const availableTagsFile = process.env.AVAILABLE_TAGS_FILE || "";
this.deviceService.reinit({
activationKey: process.env.ACTIVATION_KEY,
pairingEndpoint: process.env.PAIRING_ENDPOINT,
availableTagsFile: availableTagsFile,
availableTags: (() => {
try {
if (availableTagsFile.length) {
return this.setAvailableStructures(JSON.parse(fs.readFileSync(availableTagsFile).toString()));
}
return this.setAvailableStructures(JSON.parse(process.env.AVAILABLE_TAGS));
}
catch (err) {
return new Map();
}
})(),
simulateTags: !!(() => {
try {
return JSON.parse(process.env.SIMULATE_TAGS);
}
catch (err) {
return false;
}
})(),
availableAlarms: (() => {
try {
const alarmsMap = new Map();
JSON.parse(process.env.AVAILABLE_ALARMS).forEach((a) => {
alarmsMap.set(a.name, a);
});
return alarmsMap;
}
catch (err) {
return new Map();
}
})(),
simulateAlarms: !!(() => {
try {
return JSON.parse(process.env.SIMULATE_ALARMS);
}
catch (err) {
return false;
}
})(),
packetFormat: process.env.PACKET_FORMAT || types_1.PacketFormatEnum.BSON,
}, true);
if (process.env.SAVE_LAST_ENV) {
const envFile = path.join(process.cwd(), ".env");
let currentContent = fs.readFileSync(envFile).toString();
const appendedValuesPos = currentContent.indexOf("### LAST-ENV ###");
const deviceConfig = this.deviceService.deviceConfig;
if (appendedValuesPos > 0) {
currentContent = currentContent.slice(0, appendedValuesPos);
currentContent += `
### LAST-ENV ###
# don't write below this line!!
ACTIVATION_KEY=${deviceConfig.activationKey}
PAIRING_ENDPOINT=${deviceConfig.pairingEndpoint}
AVAILABLE_TAGS_FILE=${deviceConfig.availableTagsFile || ""}
AVAILABLE_TAGS=${!deviceConfig.availableTagsFile || deviceConfig.availableTagsFile.length == 0
? JSON.stringify(Array.from(deviceConfig.availableTags.values()))
: ""}
SIMULATE_TAGS=${deviceConfig.simulateTags ? 1 : 0}
AVAILABLE_ALARMS=${JSON.stringify(Array.from(deviceConfig.availableAlarms.values()))}
SIMULATE_ALARMS=${deviceConfig.simulateAlarms ? 1 : 0}
PACKET_FORMAT=${deviceConfig.packetFormat}`;
}
fs.writeFileSync(envFile, currentContent);
}
}
}
exports.DeviceRunnerService = DeviceRunnerService;
//# sourceMappingURL=devicerunner.service.js.map