@dynatrace/react-native-plugin 2.337.2 → 2.339.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +11 -5
  2. package/android/build.gradle +1 -1
  3. package/files/default.config.js +2 -0
  4. package/files/plugin.gradle +1 -1
  5. package/instrumentation/jsx/components/ClassComponent.js +2 -1
  6. package/instrumentation/libs/UserInteraction.js +1 -1
  7. package/instrumentation/libs/react-navigation/ReactNavigation.js +7 -4
  8. package/instrumentation/libs/withOnPressMonitoring.js +5 -2
  9. package/lib/core/Application.js +5 -2
  10. package/lib/core/Dynatrace.js +113 -44
  11. package/lib/core/DynatraceAction.js +78 -21
  12. package/lib/core/DynatraceInternal.js +19 -4
  13. package/lib/core/DynatraceRootAction.js +6 -3
  14. package/lib/core/DynatraceWebRequestTiming.js +25 -4
  15. package/lib/core/ErrorHandler.js +9 -2
  16. package/lib/core/logging/ConsoleLogger.js +17 -6
  17. package/lib/core/logging/LogMessages.js +764 -0
  18. package/lib/core/logging/LogType.js +9 -0
  19. package/lib/features/ui-interaction/IUserInteractionEvent.js +1 -1
  20. package/lib/features/ui-interaction/Runtime.js +7 -3
  21. package/lib/next/Dynatrace.js +42 -22
  22. package/lib/next/appstart/AppStartObserver.js +7 -2
  23. package/lib/next/events/EventPipeline.js +12 -5
  24. package/lib/next/events/EventTimestamp.js +5 -1
  25. package/lib/next/events/ExceptionEventData.js +1 -1
  26. package/lib/next/events/HttpRequestEventData.js +16 -7
  27. package/lib/next/events/modifier/BaseDataEventModifier.js +4 -1
  28. package/lib/next/events/modifier/EventModifierUtil.js +12 -5
  29. package/lib/next/events/modifier/ModifyEventValidation.js +20 -7
  30. package/lib/next/events/modifier/SendEventValidation.js +10 -4
  31. package/lib/next/events/modifier/StringLengthEventModifier.js +4 -1
  32. package/lib/next/events/modifier/ValueRestrictionModifier.js +5 -1
  33. package/lib/next/events/spec/EventSpecContstants.js +6 -2
  34. package/lib/next/provider/TimestampProvider.js +1 -1
  35. package/lib/next/util/TraceContextUtils.js +4 -3
  36. package/package.json +5 -4
  37. package/react-native-dynatrace.podspec +1 -1
  38. package/scripts/Config.js +1 -1
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogType = void 0;
4
+ var LogType;
5
+ (function (LogType) {
6
+ LogType["Info"] = "INFO";
7
+ LogType["Warning"] = "WARNING";
8
+ LogType["Error"] = "ERROR";
9
+ })(LogType = exports.LogType || (exports.LogType = {}));
@@ -8,7 +8,7 @@ var UserInteractionEventKey;
8
8
  UserInteractionEventKey["UiElementComponents"] = "ui_element.components";
9
9
  UserInteractionEventKey["UiElementId"] = "ui_element.id";
10
10
  UserInteractionEventKey["UiElementNameOrigin"] = "ui_element.name_origin";
11
- UserInteractionEventKey["InteractionType"] = "interaction.type";
11
+ UserInteractionEventKey["InteractionName"] = "interaction.name";
12
12
  UserInteractionEventKey["UiElementResponderDetectedName"] = "ui_element.responder.detected_name";
13
13
  UserInteractionEventKey["UiElementResponderComponents"] = "ui_element.responder.components";
14
14
  UserInteractionEventKey["UiElementResponderOriginName"] = "ui_element.responder.name_origin";
@@ -7,6 +7,7 @@ const react_native_1 = require("react-native");
7
7
  const EventPipeline_1 = require("../../../lib/next/events/EventPipeline");
8
8
  const EventTimestamp_1 = require("../../../lib/next/events/EventTimestamp");
9
9
  const ConsoleLogger_1 = require("../../../lib/core/logging/ConsoleLogger");
10
+ const LogMessages_1 = require("../../../lib/core/logging/LogMessages");
10
11
  const IUserInteractionEvent_1 = require("./IUserInteractionEvent");
11
12
  const ConfigurationHandler_1 = require("../../../lib/core/configuration/ConfigurationHandler");
12
13
  const RuntimeConfigurationObserver_1 = require("../../../lib/next/configuration/RuntimeConfigurationObserver");
@@ -130,7 +131,7 @@ function readGlobalPrefix() {
130
131
  }
131
132
  catch (e) {
132
133
  const errorMsg = e instanceof Error ? e.stack || e.message : String(e);
133
- logger.debug(`Failed to resolve global prefix: ${errorMsg}`);
134
+ logger.debug(LogMessages_1.LogMessage.RESOLVE_GLOBAL_PREFIX_FAILED, { errorMsg });
134
135
  }
135
136
  }
136
137
  return [];
@@ -329,7 +330,7 @@ function _an_flat(e) {
329
330
  [IUserInteractionEvent_1.UserInteractionEventKey.UiElementDetectedName]: (_c = (_b = e === null || e === void 0 ? void 0 : e.ui_element) === null || _b === void 0 ? void 0 : _b.detected_name) !== null && _c !== void 0 ? _c : null,
330
331
  [IUserInteractionEvent_1.UserInteractionEventKey.UiElementComponents]: normalizedUiComponents,
331
332
  [IUserInteractionEvent_1.UserInteractionEventKey.UiElementId]: (_e = (_d = e === null || e === void 0 ? void 0 : e.ui_element) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : null,
332
- [IUserInteractionEvent_1.UserInteractionEventKey.InteractionType]: _an_interaction_type(e),
333
+ [IUserInteractionEvent_1.UserInteractionEventKey.InteractionName]: _an_interaction_type(e),
333
334
  positions: Array.isArray(e === null || e === void 0 ? void 0 : e.positions)
334
335
  ? e.positions.map((pos) => ({
335
336
  x: Math.trunc(pos.x),
@@ -739,7 +740,10 @@ function AnalyticsRoot({ name = 'App', label, log, prefix, config, children, })
739
740
  var _a, _b, _c, _d, _e;
740
741
  const cfg = (0, react_1.useMemo)(() => config !== null && config !== void 0 ? config : {}, [config]);
741
742
  const fileConfiguredUiEnabled = ((_a = cfg === null || cfg === void 0 ? void 0 : cfg.touch) === null || _a === void 0 ? void 0 : _a.enabled) === true;
742
- const baseLogger = log || ((e) => logger.debug('[DT UI]' + JSON.stringify(e)));
743
+ const baseLogger = log ||
744
+ ((e) => logger.debug(LogMessages_1.LogMessage.UI_INTERACTION_DEBUG, {
745
+ event: JSON.stringify(e),
746
+ }));
743
747
  React.useEffect(() => {
744
748
  ConfigurationHandler_1.ConfigurationHandler.setUserInteractionEnabledLastKnownGood(fileConfiguredUiEnabled);
745
749
  uiDebugLog('AnalyticsRoot initialized fallback from config', {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dynatrace = void 0;
4
4
  const DynatraceBridge_1 = require("../core/DynatraceBridge");
5
5
  const ConsoleLogger_1 = require("../core/logging/ConsoleLogger");
6
+ const LogMessages_1 = require("../core/logging/LogMessages");
6
7
  const ConfigurationHandler_1 = require("../core/configuration/ConfigurationHandler");
7
8
  const EventCreator_1 = require("./events/EventCreator");
8
9
  const EventPipeline_1 = require("./events/EventPipeline");
@@ -30,43 +31,48 @@ class DynatraceImpl {
30
31
  }
31
32
  addEventModifier(eventModifier) {
32
33
  if (!(0, DynatraceArgValidators_1.isEventModifier)(eventModifier)) {
33
- this.logger.info('addEventModifier(eventModifier): eventModifier is not of type IEventModifier');
34
+ this.logger.info(LogMessages_1.LogMessage.ADD_EVENT_MODIFIER_INVALID_TYPE);
34
35
  return {
35
36
  modifyEvent: (event) => event,
36
37
  };
37
38
  }
38
- this.logger.debug('addEventModifier()');
39
+ this.logger.debug(LogMessages_1.LogMessage.ADD_EVENT_MODIFIER);
39
40
  return EventPipeline_1.EventPipeline.addEventModifier(eventModifier);
40
41
  }
41
42
  removeEventModifier(eventModifier) {
42
43
  if (!(0, DynatraceArgValidators_1.isEventModifier)(eventModifier)) {
43
- this.logger.info('removeEventModifier(eventModifier): eventModifier is not of type IEventModifier');
44
+ this.logger.info(LogMessages_1.LogMessage.REMOVE_EVENT_MODIFIER_INVALID_TYPE);
44
45
  return false;
45
46
  }
46
- this.logger.debug('removeEventModifier()');
47
+ this.logger.debug(LogMessages_1.LogMessage.REMOVE_EVENT_MODIFIER);
47
48
  return EventPipeline_1.EventPipeline.removeEventModifier(eventModifier);
48
49
  }
49
50
  startView(name) {
50
51
  if (typeof name !== 'string') {
51
- this.logger.info('startView(name): Name must be a string!');
52
+ this.logger.info(LogMessages_1.LogMessage.START_VIEW_NAME_NOT_STRING);
52
53
  return;
53
54
  }
54
- this.logger.debug(`startView(${name})`);
55
+ this.logger.debug(LogMessages_1.LogMessage.START_VIEW, { name });
55
56
  if (name != null && name.length > 0) {
56
57
  DynatraceBridge_1.DynatraceNative.startView(name);
57
58
  }
58
59
  else {
59
- this.logger.debug(`startView(${name}): Name can't be used. Either empty or null!`);
60
+ this.logger.debug(LogMessages_1.LogMessage.START_VIEW_NAME_EMPTY, { name });
60
61
  }
61
62
  }
62
63
  reportCrash(crash, isApiReported, isFatal = true) {
63
- this.logger.debug(`reportCrash(${JSON.stringify(crash)}, ${isFatal})`);
64
+ this.logger.debug(LogMessages_1.LogMessage.REPORT_CRASH_NEXT, {
65
+ crash: JSON.stringify(crash),
66
+ isFatal,
67
+ });
64
68
  const decision = ConfigurationHandler_1.ConfigurationHandler.getThirdGenCrashReportingDecision();
65
69
  if (!decision.allowed) {
66
70
  const reasonText = decision.reason
67
71
  ? DECISION_REASON_TEXT[decision.reason]
68
72
  : 'Unknown reason';
69
- this.logger.debug(`3rd gen crash suppressed: ${reasonText}`);
73
+ this.logger.debug(LogMessages_1.LogMessage.THIRD_GEN_CRASH_SUPPRESSED, {
74
+ reason: reasonText,
75
+ });
70
76
  return;
71
77
  }
72
78
  const eventTimestamp = new EventTimestamp_1.EventTimestamp(this.timestampProvider);
@@ -78,7 +84,10 @@ class DynatraceImpl {
78
84
  EventPipeline_1.EventPipeline.insertEvent(event);
79
85
  }
80
86
  reportErrorCode(errorName, errorCode, isApiReported) {
81
- this.logger.debug(`reportErrorCode(${errorName}, ${errorCode})`);
87
+ this.logger.debug(LogMessages_1.LogMessage.REPORT_ERROR_CODE, {
88
+ errorName,
89
+ errorCode,
90
+ });
82
91
  const eventTimestamp = new EventTimestamp_1.EventTimestamp(this.timestampProvider);
83
92
  const event = Object.assign(Object.assign({}, (0, EventCreator_1.createErrorCodeEvent)(errorName, errorCode)), eventTimestamp.getEventTimeInfo());
84
93
  if (isApiReported) {
@@ -88,7 +97,9 @@ class DynatraceImpl {
88
97
  EventPipeline_1.EventPipeline.insertEvent(event);
89
98
  }
90
99
  reportError(error, isApiReported) {
91
- this.logger.debug(`reportError(${JSON.stringify(error)})`);
100
+ this.logger.debug(LogMessages_1.LogMessage.REPORT_ERROR_NEXT, {
101
+ error: JSON.stringify(error),
102
+ });
92
103
  const eventTimestamp = new EventTimestamp_1.EventTimestamp(this.timestampProvider);
93
104
  const event = Object.assign(Object.assign({}, (0, EventCreator_1.createErrorEvent)(error.name, error.message, error.stack)), eventTimestamp.getEventTimeInfo());
94
105
  if (isApiReported) {
@@ -99,10 +110,10 @@ class DynatraceImpl {
99
110
  }
100
111
  sendExceptionEvent(exceptionEventData) {
101
112
  if (!(exceptionEventData instanceof ExceptionEventData_1.default)) {
102
- this.logger.info('sendExceptionEvent(exceptionEventData): exceptionEventData is not of type ExceptionEventData');
113
+ this.logger.info(LogMessages_1.LogMessage.SEND_EXCEPTION_EVENT_INVALID_TYPE);
103
114
  return;
104
115
  }
105
- this.logger.debug('sendExceptionEvent(exceptionEventData)');
116
+ this.logger.debug(LogMessages_1.LogMessage.SEND_EXCEPTION_EVENT);
106
117
  const eventValidated = exceptionEventData.toJSON();
107
118
  if (eventValidated !== null) {
108
119
  EventPipeline_1.EventPipeline.insertEvent(eventValidated);
@@ -110,10 +121,10 @@ class DynatraceImpl {
110
121
  }
111
122
  sendEvent(eventData) {
112
123
  if (!(eventData instanceof EventData_1.default)) {
113
- this.logger.info('sendEvent(eventData): eventData is not of type EventData');
124
+ this.logger.info(LogMessages_1.LogMessage.SEND_EVENT_INVALID_TYPE);
114
125
  return;
115
126
  }
116
- this.logger.debug('sendEvent(eventData)');
127
+ this.logger.debug(LogMessages_1.LogMessage.SEND_EVENT);
117
128
  const eventValidated = eventData.toJSON();
118
129
  if (eventValidated !== null) {
119
130
  EventPipeline_1.EventPipeline.insertEvent(eventValidated);
@@ -121,10 +132,10 @@ class DynatraceImpl {
121
132
  }
122
133
  sendSessionPropertyEvent(sessionPropertyEventData) {
123
134
  if (!(sessionPropertyEventData instanceof SessionPropertyEventData_1.default)) {
124
- this.logger.info('sendSessionPropertyEvent(SessionPropertyEventData): sessionPropertyEventData is not of type SessionPropertyEventData');
135
+ this.logger.info(LogMessages_1.LogMessage.SEND_SESSION_PROPERTY_EVENT_INVALID_TYPE);
125
136
  return;
126
137
  }
127
- this.logger.debug('sendSessionPropertyEvent(SessionPropertyEventData)');
138
+ this.logger.debug(LogMessages_1.LogMessage.SEND_SESSION_PROPERTY_EVENT);
128
139
  const eventValidated = sessionPropertyEventData.toJSON();
129
140
  if (eventValidated !== null) {
130
141
  EventPipeline_1.EventPipeline.insertEvent(eventValidated);
@@ -132,10 +143,10 @@ class DynatraceImpl {
132
143
  }
133
144
  sendHttpRequestEvent(httpRequestEvent) {
134
145
  if (!(httpRequestEvent instanceof HttpRequestEventData_1.default)) {
135
- this.logger.info('sendHttpRequestEvent(HttpRequestEventData): httpRequestEvent is not of type HttpRequestEventData');
146
+ this.logger.info(LogMessages_1.LogMessage.SEND_HTTP_REQUEST_EVENT_INVALID_TYPE);
136
147
  return;
137
148
  }
138
- this.logger.debug('sendHttpRequestEvent(HttpRequestEventData)');
149
+ this.logger.debug(LogMessages_1.LogMessage.SEND_HTTP_REQUEST_EVENT);
139
150
  const sanitizedEvent = httpRequestEvent.toJSON();
140
151
  if (sanitizedEvent !== null) {
141
152
  EventPipeline_1.EventPipeline.insertEvent(sanitizedEvent);
@@ -145,10 +156,16 @@ class DynatraceImpl {
145
156
  let traceparent = existingTraceparent;
146
157
  let tracestate = existingTracestate;
147
158
  if (!ConfigurationHandler_1.ConfigurationHandler.isConfigurationAvailable()) {
148
- this.logger.info(`generateTraceContext(${existingTraceparent}, ${existingTracestate}): React Native plugin has not been started yet! Trace context will not be generated!`);
159
+ this.logger.info(LogMessages_1.LogMessage.TRACE_CONTEXT_NOT_STARTED, {
160
+ existingTraceparent: existingTraceparent !== null && existingTraceparent !== void 0 ? existingTraceparent : 'undefined',
161
+ existingTracestate: existingTracestate !== null && existingTracestate !== void 0 ? existingTracestate : 'undefined',
162
+ });
149
163
  return undefined;
150
164
  }
151
- this.logger.debug(`generateTraceContext(${existingTraceparent}, ${existingTracestate})`);
165
+ this.logger.debug(LogMessages_1.LogMessage.TRACE_CONTEXT_GENERATED, {
166
+ existingTraceparent: existingTraceparent !== null && existingTraceparent !== void 0 ? existingTraceparent : 'undefined',
167
+ existingTracestate: existingTracestate !== null && existingTracestate !== void 0 ? existingTracestate : 'undefined',
168
+ });
152
169
  let parsedTraceparent = traceparent === undefined
153
170
  ? undefined
154
171
  : (0, TraceContextUtils_1.parseTraceparent)(traceparent);
@@ -159,7 +176,10 @@ class DynatraceImpl {
159
176
  }
160
177
  tracestate = (0, TraceContextUtils_1.generateTracestate)(parsedTraceparent.parentId, tracestate);
161
178
  if (tracestate === undefined) {
162
- this.logger.info(`generateTraceContext(${existingTraceparent}, ${existingTracestate}): Either trace context disabled or incomplete configuration! Trace context will not be generated!`);
179
+ this.logger.info(LogMessages_1.LogMessage.TRACE_CONTEXT_DISABLED_OR_INVALID, {
180
+ existingTraceparent: existingTraceparent !== null && existingTraceparent !== void 0 ? existingTraceparent : 'undefined',
181
+ existingTracestate: existingTracestate !== null && existingTracestate !== void 0 ? existingTracestate : 'undefined',
182
+ });
163
183
  return undefined;
164
184
  }
165
185
  return {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AppStartObserver = void 0;
4
4
  const EventCreator_1 = require("../events/EventCreator");
5
5
  const ConsoleLogger_1 = require("../../core/logging/ConsoleLogger");
6
+ const LogMessages_1 = require("../../core/logging/LogMessages");
6
7
  const EventPipeline_1 = require("../events/EventPipeline");
7
8
  const DynatraceEventBus_1 = require("../DynatraceEventBus");
8
9
  class AppStartObserverImpl {
@@ -16,13 +17,17 @@ class AppStartObserverImpl {
16
17
  setupNativeEventEmitter() {
17
18
  const emitter = (0, DynatraceEventBus_1.createEmitterNativeOnly)();
18
19
  emitter.addListener(this.EMIT_APP_START, (data) => {
19
- this.logger.debug(`emitter(${JSON.stringify(data)}})`);
20
+ this.logger.debug(LogMessages_1.LogMessage.APP_START_EMITTER, {
21
+ data: JSON.stringify(data),
22
+ });
20
23
  const appStartEvent = (0, EventCreator_1.createAppStartEvent)(data);
21
24
  if (appStartEvent != null) {
22
25
  EventPipeline_1.EventPipeline.insertEvent(Object.assign({}, appStartEvent));
23
26
  }
24
27
  else {
25
- this.logger.debug(`emitter(${JSON.stringify(data)}}): App Start event ignored!`);
28
+ this.logger.debug(LogMessages_1.LogMessage.APP_START_EMITTER_IGNORED, {
29
+ data: JSON.stringify(data),
30
+ });
26
31
  }
27
32
  });
28
33
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventPipeline = void 0;
4
4
  const DynatraceBridge_1 = require("../../core/DynatraceBridge");
5
5
  const ConsoleLogger_1 = require("../../core/logging/ConsoleLogger");
6
+ const LogMessages_1 = require("../../core/logging/LogMessages");
6
7
  const ConfigurationHandler_1 = require("../../core/configuration/ConfigurationHandler");
7
8
  const BaseDataEventModifier_1 = require("./modifier/BaseDataEventModifier");
8
9
  const ValueRestrictionModifier_1 = require("./modifier/ValueRestrictionModifier");
@@ -38,10 +39,14 @@ class EventPipelineImpl {
38
39
  const reasonText = decision.reason
39
40
  ? DECISION_REASON_TEXT[decision.reason]
40
41
  : 'Unknown reason';
41
- this.logger.debug(`3rd gen event suppressed: ${reasonText}`);
42
+ this.logger.debug(LogMessages_1.LogMessage.THIRD_GEN_EVENT_SUPPRESSED, {
43
+ reason: reasonText,
44
+ });
42
45
  return;
43
46
  }
44
- this.logger.debug(`insertEvent(${JSON.stringify(event)})`);
47
+ this.logger.debug(LogMessages_1.LogMessage.EVENT_PIPELINE_INSERT_EVENT, {
48
+ event: JSON.stringify(event),
49
+ });
45
50
  let isDiscarded = false;
46
51
  for (const modifier of this.getEventModifierChain()) {
47
52
  try {
@@ -61,7 +66,9 @@ class EventPipelineImpl {
61
66
  }
62
67
  }
63
68
  if (event != null && !isDiscarded) {
64
- this.logger.debug(`forwardEvent(${JSON.stringify(event)})`);
69
+ this.logger.debug(LogMessages_1.LogMessage.EVENT_PIPELINE_FORWARD_EVENT, {
70
+ event: JSON.stringify(event),
71
+ });
65
72
  if (event["characteristics.has_app_start"] === true) {
66
73
  DynatraceBridge_1.DynatraceNative.forwardAppStartEvent(event, EventSpecContstants_1.ALL_APP_START_KEYS);
67
74
  }
@@ -71,11 +78,11 @@ class EventPipelineImpl {
71
78
  }
72
79
  }
73
80
  addEventModifier(eventModifier) {
74
- this.logger.debug('addEventModifier()');
81
+ this.logger.debug(LogMessages_1.LogMessage.ADD_EVENT_MODIFIER);
75
82
  return this.customEventModifierChain.addEventModifier(eventModifier);
76
83
  }
77
84
  removeEventModifier(eventModifier) {
78
- this.logger.debug('removeEventModifier()');
85
+ this.logger.debug(LogMessages_1.LogMessage.REMOVE_EVENT_MODIFIER);
79
86
  return this.customEventModifierChain.removeEventModifier(eventModifier);
80
87
  }
81
88
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventTimestamp = void 0;
4
4
  const ConsoleLogger_1 = require("../../core/logging/ConsoleLogger");
5
+ const LogMessages_1 = require("../../core/logging/LogMessages");
5
6
  class EventTimestamp {
6
7
  constructor(timestampProvider) {
7
8
  this.duration = 0;
@@ -20,7 +21,10 @@ class EventTimestamp {
20
21
  this.duration = endTimestamp - this.startTimestamp;
21
22
  }
22
23
  else {
23
- this.logger.debug(`End timestamp (${endTimestamp}) can't be before start timestamp (${this.startTimestamp})!`);
24
+ this.logger.debug(LogMessages_1.LogMessage.EVENT_TIMESTAMP_INVALID, {
25
+ endTimestamp,
26
+ startTimestamp: this.startTimestamp,
27
+ });
24
28
  }
25
29
  }
26
30
  }
@@ -13,7 +13,7 @@ class ExceptionEventData {
13
13
  return this;
14
14
  }
15
15
  toJSON() {
16
- const sanitizedEventProperties = SendEventValidation_1.SendEventValidation.modifyEvent(Object.assign({}, this.rawEventProperties));
16
+ const sanitizedEventProperties = SendEventValidation_1.SendExceptionEventValidation.modifyEvent(Object.assign({}, this.rawEventProperties));
17
17
  if (sanitizedEventProperties === null) {
18
18
  return null;
19
19
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const ConsoleLogger_1 = require("../../core/logging/ConsoleLogger");
4
+ const LogMessages_1 = require("../../core/logging/LogMessages");
4
5
  const TimestampProvider_1 = require("../provider/TimestampProvider");
5
6
  const SendEventValidation_1 = require("./modifier/SendEventValidation");
6
7
  const EventModifierUtil_1 = require("./modifier/EventModifierUtil");
@@ -56,7 +57,7 @@ class HttpRequestEventData {
56
57
  }
57
58
  toJSON() {
58
59
  if (!this.hasValidMandatoryAttributes()) {
59
- logger.debug('toJSON(): Dropped invalid event');
60
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_DROPPED_INVALID);
60
61
  return null;
61
62
  }
62
63
  const sanitizedDuration = this.sanitizeDuration();
@@ -99,11 +100,15 @@ class HttpRequestEventData {
99
100
  hasValidMandatoryAttributes() {
100
101
  let isValid = true;
101
102
  if (this.isInvalidUrl(this.url)) {
102
- logger.debug(`hasValidMandatoryAttributes(): dropped event since given URL is malformed: ${this.url}`);
103
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_INVALID_URL, {
104
+ url: this.url,
105
+ });
103
106
  isValid = false;
104
107
  }
105
108
  if (!HttpRequestEventData.allowedRequestMethods.includes(this.requestMethod)) {
106
- logger.debug(`hasValidMandatoryAttributes(): dropped event since given Request Method is invalid: ${this.requestMethod}`);
109
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_INVALID_METHOD, {
110
+ requestMethod: this.requestMethod,
111
+ });
107
112
  isValid = false;
108
113
  }
109
114
  return isValid;
@@ -122,7 +127,7 @@ class HttpRequestEventData {
122
127
  }
123
128
  sanitizeStatusCode() {
124
129
  if (this.statusCode !== undefined && this.statusCode < 0) {
125
- logger.debug('HttpRequestEventData: dropping invalid Status Code');
130
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_INVALID_STATUS_CODE);
126
131
  this.hasDroppedProperties = true;
127
132
  return undefined;
128
133
  }
@@ -130,7 +135,7 @@ class HttpRequestEventData {
130
135
  }
131
136
  sanitizeDuration() {
132
137
  if (!Number.isFinite(this.duration) || this.duration < 0) {
133
- logger.debug('HttpRequestEventData: overriding invalid Duration with 0');
138
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_INVALID_DURATION);
134
139
  this.hasDroppedProperties = true;
135
140
  return 0;
136
141
  }
@@ -138,7 +143,9 @@ class HttpRequestEventData {
138
143
  }
139
144
  sanitizeBytesSent() {
140
145
  if (this.bytesSent && this.bytesSent < 0) {
141
- logger.debug(`HttpRequestEventData: dropping invalid value for Bytes Sent: ${this.bytesSent}`);
146
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_INVALID_BYTES_SENT, {
147
+ bytesSent: this.bytesSent,
148
+ });
142
149
  this.hasDroppedProperties = true;
143
150
  return undefined;
144
151
  }
@@ -146,7 +153,9 @@ class HttpRequestEventData {
146
153
  }
147
154
  sanitizeBytesReceived() {
148
155
  if (this.bytesReceived && this.bytesReceived < 0) {
149
- logger.debug(`HttpRequestEventData: dropping invalid value for Bytes Received: ${this.bytesReceived}`);
156
+ logger.debug(LogMessages_1.LogMessage.HTTP_REQUEST_INVALID_BYTES_RECEIVED, {
157
+ bytesReceived: this.bytesReceived,
158
+ });
150
159
  this.hasDroppedProperties = true;
151
160
  return undefined;
152
161
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseDataEventModifier = void 0;
4
4
  const ConfigurationHandler_1 = require("../../../core/configuration/ConfigurationHandler");
5
5
  const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger");
6
+ const LogMessages_1 = require("../../../core/logging/LogMessages");
6
7
  const EventModifierUtil_1 = require("./EventModifierUtil");
7
8
  class BaseDataEventModifier {
8
9
  constructor() {
@@ -10,7 +11,9 @@ class BaseDataEventModifier {
10
11
  }
11
12
  modifyEvent(event) {
12
13
  if (event == null) {
13
- this.logger.debug(`modifyEvent(${JSON.stringify(event)}): Event is null!`);
14
+ this.logger.debug(LogMessages_1.LogMessage.MODIFY_EVENT_NULL, {
15
+ event: JSON.stringify(event),
16
+ });
14
17
  return event;
15
18
  }
16
19
  event["dt.rum.event.source.type"] = 'react_native';
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isKeyCustomProperty = exports.isNotObject = exports.doesNotExceedKeySize = exports.restrictingValueSize = exports.isKeySyntaxAllowed = exports.getReactNativeVersion = exports.containEventPropertiesInArray = exports.addIsApiReported = exports.flagEventProperties = exports.containEventProperties = exports.containSessionProperties = exports.trimString = exports.isObject = void 0;
4
4
  const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger");
5
+ const LogMessages_1 = require("../../../core/logging/LogMessages");
5
6
  const EventSpecContstants_1 = require("../spec/EventSpecContstants");
6
7
  const logger = new ConsoleLogger_1.ConsoleLogger('EventModifierUtil');
7
8
  const isObject = (obj) => {
@@ -17,7 +18,7 @@ const trimString = (key, str, maxLength) => {
17
18
  return stringToTrim;
18
19
  }
19
20
  else {
20
- logger.debug(`trimString(): Limiting value of ${key} as maximum value length (${maxLength}) is reached!`);
21
+ logger.debug(LogMessages_1.LogMessage.TRIM_STRING_VALUE_LIMITED, { key, maxLength });
21
22
  return stringToTrim.substring(0, maxLength);
22
23
  }
23
24
  };
@@ -75,7 +76,7 @@ const getReactNativeVersion = () => {
75
76
  }
76
77
  catch (_a) { }
77
78
  }
78
- logger.debug('Unable to determine React Native version');
79
+ logger.debug(LogMessages_1.LogMessage.REACT_NATIVE_VERSION_UNKNOWN);
79
80
  return undefined;
80
81
  };
81
82
  exports.getReactNativeVersion = getReactNativeVersion;
@@ -83,7 +84,7 @@ const isKeySyntaxAllowed = (entry) => {
83
84
  const [key] = entry;
84
85
  const rV = EventSpecContstants_1.KEY_NAME_REGEX.test(key);
85
86
  if (!rV) {
86
- logger.debug(`isKeySyntaxAllowed(): Filtering key ${key} as it doesnt fulfill character rules!`);
87
+ logger.debug(LogMessages_1.LogMessage.KEY_SYNTAX_INVALID, { key });
87
88
  }
88
89
  return rV;
89
90
  };
@@ -92,7 +93,10 @@ const restrictingValueSize = (entry) => {
92
93
  const [key, value] = entry;
93
94
  if (typeof value === 'string' &&
94
95
  value.length > EventSpecContstants_1.MAX_CUSTOM_EVENT_VALUE_LENGTH) {
95
- logger.debug(`restrictingValueSize(): Limiting value of ${key} as maximum value length (${EventSpecContstants_1.MAX_CUSTOM_EVENT_VALUE_LENGTH}) is reached!`);
96
+ logger.debug(LogMessages_1.LogMessage.VALUE_SIZE_LIMITED, {
97
+ key,
98
+ maxLength: EventSpecContstants_1.MAX_CUSTOM_EVENT_VALUE_LENGTH,
99
+ });
96
100
  entry[1] = value.slice(0, EventSpecContstants_1.MAX_CUSTOM_EVENT_VALUE_LENGTH);
97
101
  }
98
102
  };
@@ -102,7 +106,10 @@ const doesNotExceedKeySize = ([key]) => {
102
106
  return true;
103
107
  }
104
108
  else {
105
- logger.debug(`doesNotExceedKeySize(): Dropping key ${key} as maximum key length (${EventSpecContstants_1.MAX_CUSTOM_EVENT_KEY_LENGTH}) is reached!`);
109
+ logger.debug(LogMessages_1.LogMessage.KEY_SIZE_EXCEEDED, {
110
+ key,
111
+ maxLength: EventSpecContstants_1.MAX_CUSTOM_EVENT_KEY_LENGTH,
112
+ });
106
113
  return false;
107
114
  }
108
115
  };
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModifyEventValidation = void 0;
4
4
  const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger");
5
+ const LogMessages_1 = require("../../../core/logging/LogMessages");
5
6
  const EventSpecContstants_1 = require("../spec/EventSpecContstants");
6
7
  const EventModifierUtil_1 = require("./EventModifierUtil");
7
8
  class ModifyEventValidation {
@@ -55,13 +56,17 @@ class ModifyEventValidation {
55
56
  isCustomPropertiesAllowed(key, hasSessionPropertyCharacteristics) {
56
57
  if (hasSessionPropertyCharacteristics) {
57
58
  if (key.startsWith(`${"event_properties"}.`)) {
58
- this.logger.debug(`isPropertiesAllowed(): Filtering key ${key} as usage of event properties is not allowed!`);
59
+ this.logger.debug(LogMessages_1.LogMessage.EVENT_PROPERTIES_FILTERED, {
60
+ key,
61
+ });
59
62
  return false;
60
63
  }
61
64
  }
62
65
  else {
63
66
  if (key.startsWith(`${"session_properties"}.`)) {
64
- this.logger.debug(`isPropertiesAllowed(): Filtering key ${key} as usage of session properties is not allowed!`);
67
+ this.logger.debug(LogMessages_1.LogMessage.SESSION_PROPERTIES_FILTERED, {
68
+ key,
69
+ });
65
70
  return false;
66
71
  }
67
72
  }
@@ -78,16 +83,22 @@ class ModifyEventValidation {
78
83
  return false;
79
84
  }
80
85
  }
81
- this.logger.debug(`isKeyNameForbidden(): Filtering key ${key} as this field is reserved and must not be overridden!`);
86
+ this.logger.debug(LogMessages_1.LogMessage.KEY_NAME_FORBIDDEN, { key });
82
87
  return true;
83
88
  }
84
89
  sanitizeUserEnrichedEvent(originalEvent, userEnrichedEvent, externalException) {
85
90
  if (!(0, EventModifierUtil_1.isObject)(userEnrichedEvent)) {
86
- this.logger.debug(`sanitizeUserEnrichedEvent(${originalEvent}, ${userEnrichedEvent}): Enriched event is not an object`);
91
+ this.logger.debug(LogMessages_1.LogMessage.SANITIZE_EVENT_NOT_OBJECT, {
92
+ originalEvent: JSON.stringify(originalEvent),
93
+ userEnrichedEvent: JSON.stringify(userEnrichedEvent),
94
+ });
87
95
  return originalEvent;
88
96
  }
89
97
  if (userEnrichedEvent === originalEvent) {
90
- this.logger.debug(`sanitizeUserEnrichedEvent(${originalEvent}, ${userEnrichedEvent}): Event has not been changed`);
98
+ this.logger.debug(LogMessages_1.LogMessage.SANITIZE_EVENT_NOT_CHANGED, {
99
+ originalEvent: JSON.stringify(originalEvent),
100
+ userEnrichedEvent: JSON.stringify(userEnrichedEvent),
101
+ });
91
102
  return originalEvent;
92
103
  }
93
104
  let overriddenKeys = originalEvent["dt.support.api.overridden_fields"];
@@ -272,8 +283,10 @@ class ModifyEventValidation {
272
283
  if ((0, EventModifierUtil_1.isKeyCustomProperty)(key)) {
273
284
  propertyCount++;
274
285
  if (propertyCount > EventSpecContstants_1.MAX_CUSTOM_EVENT_FIELDS) {
275
- this.logger.debug(`enforcePropertyLimit(): Dropped ${key} because overall ` +
276
- `property limit (${EventSpecContstants_1.MAX_CUSTOM_EVENT_FIELDS}) is reached!`);
286
+ this.logger.debug(LogMessages_1.LogMessage.PROPERTY_LIMIT_EXCEEDED, {
287
+ key,
288
+ limit: EventSpecContstants_1.MAX_CUSTOM_EVENT_FIELDS,
289
+ });
277
290
  droppedCustomProperties = true;
278
291
  continue;
279
292
  }
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SendSessionPropertyEventValidation = exports.SendEventValidation = void 0;
3
+ exports.SendExceptionEventValidation = exports.SendSessionPropertyEventValidation = exports.SendEventValidation = void 0;
4
4
  const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger");
5
+ const LogMessages_1 = require("../../../core/logging/LogMessages");
5
6
  const TimestampProvider_1 = require("../../provider/TimestampProvider");
6
7
  const EventTimestamp_1 = require("../EventTimestamp");
7
8
  const EventSpecContstants_1 = require("../spec/EventSpecContstants");
@@ -14,7 +15,9 @@ class SendEventValidationImpl {
14
15
  this.fieldWhitelist = fieldWhitelist;
15
16
  }
16
17
  modifyEvent(event) {
17
- this.logger.debug(`modifyEvent(${JSON.stringify(event)})`);
18
+ this.logger.debug(LogMessages_1.LogMessage.MODIFY_EVENT, {
19
+ event: JSON.stringify(event),
20
+ });
18
21
  if (event == null) {
19
22
  return null;
20
23
  }
@@ -90,7 +93,9 @@ class SendEventValidationImpl {
90
93
  if ((0, EventModifierUtil_1.isKeyCustomProperty)(entry[0])) {
91
94
  amountOfCustomProperties++;
92
95
  if (amountOfCustomProperties > EventSpecContstants_1.MAX_CUSTOM_EVENT_FIELDS) {
93
- this.logger.debug(`limitEventProperties(): Dropped ${entry[0]} because overall property limit is reached!`);
96
+ this.logger.debug(LogMessages_1.LogMessage.EVENT_PROPERTY_LIMIT_EXCEEDED, {
97
+ key: entry[0],
98
+ });
94
99
  droppedCustomProperties = true;
95
100
  return;
96
101
  }
@@ -122,9 +127,10 @@ class SendEventValidationImpl {
122
127
  if (this.fieldWhitelist.includes(key)) {
123
128
  return true;
124
129
  }
125
- this.logger.debug(`isKeyNameAllowed(): Filtering key ${key} as this field or namespace is reserved!`);
130
+ this.logger.debug(LogMessages_1.LogMessage.KEY_NAME_NOT_ALLOWED, { key });
126
131
  return false;
127
132
  }
128
133
  }
129
134
  exports.SendEventValidation = new SendEventValidationImpl(TimestampProvider_1.defaultTimestampProvider, EventSpecContstants_1.SEND_EVENT_WHITELIST_NAMESPACES, EventSpecContstants_1.SEND_EVENT_WHITELIST_FIELDS, 'SendEventValidation');
130
135
  exports.SendSessionPropertyEventValidation = new SendEventValidationImpl(TimestampProvider_1.defaultTimestampProvider, EventSpecContstants_1.SEND_SESSION_PROPERTY_EVENT_WHITELIST_NAMESPACES, EventSpecContstants_1.SEND_SESSION_PROPERTY_EVENT_WHITELIST_FIELDS, 'SendSessionPropertyEventValidation');
136
+ exports.SendExceptionEventValidation = new SendEventValidationImpl(TimestampProvider_1.defaultTimestampProvider, EventSpecContstants_1.SEND_EXCEPTION_EVENT_WHITELIST_NAMESPACES, EventSpecContstants_1.SEND_EXCEPTION_EVENT_WHITELIST_FIELDS, 'SendExceptionEventValidation');
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringLengthEventModifier = void 0;
4
4
  const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger");
5
+ const LogMessages_1 = require("../../../core/logging/LogMessages");
5
6
  const EventSpecContstants_1 = require("../spec/EventSpecContstants");
6
7
  const EventModifierUtil_1 = require("./EventModifierUtil");
7
8
  class StringLengthEventModifier {
@@ -10,7 +11,9 @@ class StringLengthEventModifier {
10
11
  }
11
12
  modifyEvent(event) {
12
13
  if (event == null) {
13
- this.logger.debug(`modifyEvent(${JSON.stringify(event)}): Event is null!`);
14
+ this.logger.debug(LogMessages_1.LogMessage.MODIFY_EVENT_NULL, {
15
+ event: JSON.stringify(event),
16
+ });
14
17
  return event;
15
18
  }
16
19
  if (event["characteristics.is_api_reported"] ===
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ValueRestrictionModifier = void 0;
4
4
  const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger");
5
+ const LogMessages_1 = require("../../../core/logging/LogMessages");
5
6
  const EventModifierUtil_1 = require("./EventModifierUtil");
6
7
  class ValueRestrictionModifierImpl {
7
8
  constructor() {
@@ -23,7 +24,10 @@ class ValueRestrictionModifierImpl {
23
24
  if (Object.prototype.hasOwnProperty.call(obj, key) &&
24
25
  (this.valueHasRestrictedValues(obj[key]) ||
25
26
  obj[key] === undefined)) {
26
- this.logger.debug(`eventHasNonFiniteNumbers() - ${key} contains non-finite numbers or undefined: ${obj[key]} changed to null!`);
27
+ this.logger.debug(LogMessages_1.LogMessage.EVENT_NON_FINITE_VALUE, {
28
+ key,
29
+ value: JSON.stringify(obj[key]),
30
+ });
27
31
  return true;
28
32
  }
29
33
  }