dt-common-device
Version:
A secure and robust device management library for IoT applications
73 lines (72 loc) • 2.65 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseEventTransformer = void 0;
const config_1 = require("../config/config");
class BaseEventTransformer {
constructor(deviceType, rawData) {
this.deviceType = deviceType;
this.rawData = rawData;
this.logger = (0, config_1.getConfig)().LOGGER;
}
// Parse raw event data - to be implemented by device-specific transformers
parseData(rawData) {
try {
this.logger.info(`${this.deviceType}EventTransformer: Parsed event data`);
return rawData;
}
catch (error) {
this.logger.error(`${this.deviceType}EventTransformer: Error parsing data`, error);
return null;
}
}
/**
* Validate transformed event - default implementation, can be overridden
*/
validate(transformedEvent) {
try {
// Basic validation - ensure required fields exist
if (!transformedEvent) {
this.logger.error("Transformed event is null or undefined");
return false;
}
// Add more validation logic as needed
return true;
}
catch (error) {
this.logger.error("BaseEventTransformer: validate Error", error);
return false;
}
}
/**
* Get the device type this transformer handles
*/
getDeviceType() {
return this.deviceType;
}
/**
* Execute the full transformation pipeline
*/
async executeTransformation() {
try {
this.logger.info(`Starting transformation for device type: ${this.deviceType}`);
// Step 1: Parse the raw data
const parsedData = this.parseData(this.rawData);
// Step 2: Transform to DeviceEvent format
const transformedResult = await this.transform(parsedData);
// Step 3: Convert to array format
// TODO: Check if any service sends multiple events
const events = Array.isArray(transformedResult)
? transformedResult
: [transformedResult];
// Step 4: Validate each event
const validEvents = events.filter((event) => this.validate(event));
this.logger.info(`Transformation completed. ${validEvents.length} valid events created.`);
return validEvents;
}
catch (error) {
this.logger.error("BaseEventTransformer: executeTransformation Error", error);
return [];
}
}
}
exports.BaseEventTransformer = BaseEventTransformer;