@dynatrace/react-native-plugin
Version:
This plugin gives you the ability to use the Dynatrace Mobile agent in your react native application.
64 lines (63 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventPipeline = void 0;
const DynatraceBridge_1 = require("../../core/DynatraceBridge");
const ConsoleLogger_1 = require("../../core/logging/ConsoleLogger");
const BaseDataEventModifier_1 = require("./modifier/BaseDataEventModifier");
const ValueRestrictionModifier_1 = require("./modifier/ValueRestrictionModifier");
const ModifyEventValidation_1 = require("./modifier/ModifyEventValidation");
const ViewInfoCreator_1 = require("./ViewInfoCreator");
const EventSpecContstants_1 = require("./spec/EventSpecContstants");
class EventPipelineImpl {
constructor() {
this.customEventModifierChain = new ModifyEventValidation_1.ModifyEventValidation();
this.logger = new ConsoleLogger_1.ConsoleLogger('EventPipeline');
}
getEventModifierChain() {
return [
new BaseDataEventModifier_1.BaseDataEventModifier(this.viewInfo),
this.customEventModifierChain,
ValueRestrictionModifier_1.ValueRestrictionModifier,
];
}
insertEvent(event, context) {
this.logger.debug(`insertEvent(${JSON.stringify(event)})`);
this.getEventModifierChain().forEach((modifier) => {
try {
event = modifier.modifyEvent(event, context);
}
catch (error) {
if (event != null) {
event["dt.internal.api.has_enrich_exception"] = true;
}
}
});
if (event != null) {
this.logger.debug(`forwardEvent(${JSON.stringify(event)})`);
if (event["characteristics.has_app_start"] === true) {
DynatraceBridge_1.DynatraceNative.forwardAppStartEvent(event, EventSpecContstants_1.ALL_APP_START_KEYS);
}
else {
DynatraceBridge_1.DynatraceNative.forwardEvent(event);
}
}
}
addEventModifier(eventModifier) {
this.logger.debug('addEventModifier()');
return this.customEventModifierChain.addEventModifier(eventModifier);
}
removeEventModifier(eventModifier) {
this.logger.debug('removeEventModifier()');
return this.customEventModifierChain.removeEventModifier(eventModifier);
}
generateViewData(name) {
this.logger.debug(`generateViewData(${name})`);
if (name != null) {
this.viewInfo = (0, ViewInfoCreator_1.createViewInfo)(name);
}
}
releaseViewData() {
this.viewInfo = undefined;
}
}
exports.EventPipeline = new EventPipelineImpl();