@dreamhorizonorg/pulse-react-native 0.0.2 → 0.0.3

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 (64) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/pulsereactnativeotel/Pulse.kt +2 -0
  3. package/android/src/main/java/com/pulsereactnativeotel/PulseReactNativeOtelModule.kt +40 -24
  4. package/lib/module/NativePulseReactNativeOtel.js.map +1 -1
  5. package/lib/module/config.js +36 -18
  6. package/lib/module/config.js.map +1 -1
  7. package/lib/module/navigation/index.js +10 -3
  8. package/lib/module/navigation/index.js.map +1 -1
  9. package/lib/module/navigation/navigation.interface.js +6 -0
  10. package/lib/module/navigation/navigation.interface.js.map +1 -1
  11. package/lib/module/navigation/screen-load.js +1 -2
  12. package/lib/module/navigation/screen-load.js.map +1 -1
  13. package/lib/module/navigation/useNavigationTracking.js +4 -3
  14. package/lib/module/navigation/useNavigationTracking.js.map +1 -1
  15. package/lib/module/network-interceptor/header-helper.js +24 -0
  16. package/lib/module/network-interceptor/header-helper.js.map +1 -0
  17. package/lib/module/network-interceptor/initialization.js +18 -1
  18. package/lib/module/network-interceptor/initialization.js.map +1 -1
  19. package/lib/module/network-interceptor/request-tracker-xhr.js +59 -3
  20. package/lib/module/network-interceptor/request-tracker-xhr.js.map +1 -1
  21. package/lib/module/network-interceptor/span-helpers.js +15 -3
  22. package/lib/module/network-interceptor/span-helpers.js.map +1 -1
  23. package/lib/module/pulse.constants.js +11 -6
  24. package/lib/module/pulse.constants.js.map +1 -1
  25. package/lib/typescript/src/NativePulseReactNativeOtel.d.ts +8 -1
  26. package/lib/typescript/src/NativePulseReactNativeOtel.d.ts.map +1 -1
  27. package/lib/typescript/src/config.d.ts +7 -7
  28. package/lib/typescript/src/config.d.ts.map +1 -1
  29. package/lib/typescript/src/index.d.ts +1 -1
  30. package/lib/typescript/src/index.d.ts.map +1 -1
  31. package/lib/typescript/src/navigation/index.d.ts +1 -0
  32. package/lib/typescript/src/navigation/index.d.ts.map +1 -1
  33. package/lib/typescript/src/navigation/navigation.interface.d.ts +1 -0
  34. package/lib/typescript/src/navigation/navigation.interface.d.ts.map +1 -1
  35. package/lib/typescript/src/navigation/screen-load.d.ts.map +1 -1
  36. package/lib/typescript/src/navigation/useNavigationTracking.d.ts +1 -1
  37. package/lib/typescript/src/navigation/useNavigationTracking.d.ts.map +1 -1
  38. package/lib/typescript/src/network-interceptor/header-helper.d.ts +15 -0
  39. package/lib/typescript/src/network-interceptor/header-helper.d.ts.map +1 -0
  40. package/lib/typescript/src/network-interceptor/initialization.d.ts +4 -1
  41. package/lib/typescript/src/network-interceptor/initialization.d.ts.map +1 -1
  42. package/lib/typescript/src/network-interceptor/network.interface.d.ts +3 -0
  43. package/lib/typescript/src/network-interceptor/network.interface.d.ts.map +1 -1
  44. package/lib/typescript/src/network-interceptor/request-tracker-xhr.d.ts.map +1 -1
  45. package/lib/typescript/src/network-interceptor/span-helpers.d.ts.map +1 -1
  46. package/lib/typescript/src/pulse.constants.d.ts +13 -5
  47. package/lib/typescript/src/pulse.constants.d.ts.map +1 -1
  48. package/lib/typescript/src/pulse.interface.d.ts +1 -1
  49. package/lib/typescript/src/pulse.interface.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/src/NativePulseReactNativeOtel.ts +8 -1
  52. package/src/config.ts +68 -26
  53. package/src/index.tsx +1 -1
  54. package/src/navigation/index.ts +36 -7
  55. package/src/navigation/navigation.interface.ts +7 -0
  56. package/src/navigation/screen-load.ts +1 -7
  57. package/src/navigation/useNavigationTracking.ts +13 -4
  58. package/src/network-interceptor/header-helper.ts +26 -0
  59. package/src/network-interceptor/initialization.ts +22 -1
  60. package/src/network-interceptor/network.interface.ts +3 -0
  61. package/src/network-interceptor/request-tracker-xhr.ts +90 -2
  62. package/src/network-interceptor/span-helpers.ts +23 -3
  63. package/src/pulse.constants.ts +19 -5
  64. package/src/pulse.interface.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","Pulse","SpanStatusCode","extractHttpAttributes","updateAttributesWithGraphQLData","ATTRIBUTE_KEYS","PHASE_VALUES","setNetworkSpanAttributes","span","startContext","endContext","method","toUpperCase","attributes","HTTP_METHOD","HTTP_URL","url","PULSE_TYPE","status","HTTP_REQUEST_TYPE","type","PLATFORM","OS","urlAttributes","HTTP_STATUS_CODE","state","error","ERROR_MESSAGE","message","String","stack","ERROR_STACK","recordException","setAttributes","createNetworkSpan","interceptorType","body","spanName","baseAttributes","NETWORK","graphqlAttributes","startSpan","completeNetworkSpan","isError","console","log","spanId","spanAttributes","e","end","ERROR","UNSET"],"sourceRoot":"../../../src","sources":["network-interceptor/span-helpers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","Pulse","SpanStatusCode","extractHttpAttributes","updateAttributesWithGraphQLData","ATTRIBUTE_KEYS","PULSE_TYPES","normalizeHeaderName","setNetworkSpanAttributes","span","startContext","endContext","method","toUpperCase","attributes","HTTP_METHOD","HTTP_URL","url","PULSE_TYPE","NETWORK","status","HTTP_REQUEST_TYPE","type","PLATFORM","OS","urlAttributes","HTTP_STATUS_CODE","state","error","ERROR_MESSAGE","message","String","stack","ERROR_STACK","recordException","requestHeaders","headerName","headerValue","Object","entries","normalizedName","HTTP_REQUEST_HEADER","responseHeaders","HTTP_RESPONSE_HEADER","setAttributes","createNetworkSpan","interceptorType","body","spanName","baseAttributes","graphqlAttributes","startSpan","completeNetworkSpan","isError","console","log","spanId","spanAttributes","e","end","ERROR","UNSET"],"sourceRoot":"../../../src","sources":["network-interceptor/span-helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,6 @@ export let ATTRIBUTE_KEYS = /*#__PURE__*/function (ATTRIBUTE_KEYS) {
14
14
  ATTRIBUTE_KEYS["PULSE_TYPE"] = "pulse.type";
15
15
  ATTRIBUTE_KEYS["SCREEN_NAME"] = "screen.name";
16
16
  ATTRIBUTE_KEYS["ROUTE_KEY"] = "routeKey";
17
- ATTRIBUTE_KEYS["PHASE"] = "phase";
18
17
  ATTRIBUTE_KEYS["LAST_SCREEN_NAME"] = "last.screen.name";
19
18
  ATTRIBUTE_KEYS["ROUTE_HAS_BEEN_SEEN"] = "routeHasBeenSeen";
20
19
  ATTRIBUTE_KEYS["PLATFORM"] = "platform";
@@ -24,6 +23,8 @@ export let ATTRIBUTE_KEYS = /*#__PURE__*/function (ATTRIBUTE_KEYS) {
24
23
  ATTRIBUTE_KEYS["HTTP_URL"] = "http.url";
25
24
  ATTRIBUTE_KEYS["HTTP_STATUS_CODE"] = "http.status_code";
26
25
  ATTRIBUTE_KEYS["HTTP_REQUEST_TYPE"] = "http.request.type";
26
+ ATTRIBUTE_KEYS["HTTP_REQUEST_HEADER"] = "http.request.header";
27
+ ATTRIBUTE_KEYS["HTTP_RESPONSE_HEADER"] = "http.response.header";
27
28
  ATTRIBUTE_KEYS["ERROR_MESSAGE"] = "error.message";
28
29
  ATTRIBUTE_KEYS["ERROR_STACK"] = "error.stack";
29
30
  return ATTRIBUTE_KEYS;
@@ -32,11 +33,15 @@ export let PULSE_TYPES = /*#__PURE__*/function (PULSE_TYPES) {
32
33
  PULSE_TYPES["SCREEN_SESSION"] = "screen_session";
33
34
  PULSE_TYPES["SCREEN_LOAD"] = "screen_load";
34
35
  PULSE_TYPES["SCREEN_INTERACTIVE"] = "screen_interactive";
36
+ PULSE_TYPES["NETWORK"] = "network";
35
37
  return PULSE_TYPES;
36
38
  }({});
37
- export let PHASE_VALUES = /*#__PURE__*/function (PHASE_VALUES) {
38
- PHASE_VALUES["START"] = "start";
39
- PHASE_VALUES["NETWORK"] = "network";
40
- return PHASE_VALUES;
41
- }({});
39
+ export const PULSE_FEATURE_NAMES = {
40
+ RN_SCREEN_LOAD: 'rn_screen_load',
41
+ SCREEN_SESSION: 'screen_session',
42
+ RN_SCREEN_INTERACTIVE: 'rn_screen_interactive',
43
+ NETWORK_INSTRUMENTATION: 'network_instrumentation',
44
+ CUSTOM_EVENTS: 'custom_events',
45
+ JS_CRASH: 'js_crash'
46
+ };
42
47
  //# sourceMappingURL=pulse.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SPAN_NAMES","ATTRIBUTE_KEYS","PULSE_TYPES","PHASE_VALUES"],"sourceRoot":"../../src","sources":["pulse.constants.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAMtB,WAAYC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAkB1B,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAMvB,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["SPAN_NAMES","ATTRIBUTE_KEYS","PULSE_TYPES","PULSE_FEATURE_NAMES","RN_SCREEN_LOAD","SCREEN_SESSION","RN_SCREEN_INTERACTIVE","NETWORK_INSTRUMENTATION","CUSTOM_EVENTS","JS_CRASH"],"sourceRoot":"../../src","sources":["pulse.constants.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAMtB,WAAYC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAmB1B,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAOvB,OAAO,MAAMC,mBAAmB,GAAG;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,cAAc,EAAE,gBAAgB;EAChCC,qBAAqB,EAAE,uBAAuB;EAC9CC,uBAAuB,EAAE,yBAAyB;EAClDC,aAAa,EAAE,eAAe;EAC9BC,QAAQ,EAAE;AACZ,CAAU","ignoreList":[]}
@@ -30,7 +30,14 @@ export interface Spec extends TurboModule {
30
30
  /** Set the current React Native screen name to sync active screen name on Android/iOS */
31
31
  setCurrentScreenName(screenName: string): boolean;
32
32
  /** Get all SDK Remote Config features */
33
- getAllFeatures(): Object;
33
+ getAllFeatures(): {
34
+ rn_screen_load: boolean;
35
+ screen_session: boolean;
36
+ rn_screen_interactive: boolean;
37
+ network_instrumentation: boolean;
38
+ custom_events: boolean;
39
+ js_crash: boolean;
40
+ } | null;
34
41
  }
35
42
  declare const _default: Spec;
36
43
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativePulseReactNativeOtel.d.ts","sourceRoot":"","sources":["../../../src/NativePulseReactNativeOtel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,yCAAyC;IACzC,aAAa,IAAI,OAAO,CAAC;IAEzB,4CAA4C;IAC5C,UAAU,CACR,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAEX,gEAAgE;IAChE,iJAAiJ;IACjJ,eAAe,CACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAEX,4CAA4C;IAC5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9E,4CAA4C;IAC5C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtD,8BAA8B;IAC9B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzE,sCAAsC;IACtC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhE,qCAAqC;IACrC,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAEX,oDAAoD;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,kEAAkE;IAClE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAEnC,kDAAkD;IAClD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1D,oDAAoD;IACpD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,2DAA2D;IAC3D,UAAU,IAAI,IAAI,CAAC;IAEnB,yFAAyF;IACzF,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAElD,yCAAyC;IACzC,cAAc,IAAI,MAAM,CAAC;CAC1B;;AAED,wBAA8E"}
1
+ {"version":3,"file":"NativePulseReactNativeOtel.d.ts","sourceRoot":"","sources":["../../../src/NativePulseReactNativeOtel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,yCAAyC;IACzC,aAAa,IAAI,OAAO,CAAC;IAEzB,4CAA4C;IAC5C,UAAU,CACR,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAEX,gEAAgE;IAChE,iJAAiJ;IACjJ,eAAe,CACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAEX,4CAA4C;IAC5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9E,4CAA4C;IAC5C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtD,8BAA8B;IAC9B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzE,sCAAsC;IACtC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhE,qCAAqC;IACrC,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAEX,oDAAoD;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,kEAAkE;IAClE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAEnC,kDAAkD;IAClD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1D,oDAAoD;IACpD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,2DAA2D;IAC3D,UAAU,IAAI,IAAI,CAAC;IAEnB,yFAAyF;IACzF,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAElD,yCAAyC;IACzC,cAAc,IAAI;QAChB,cAAc,EAAE,OAAO,CAAC;QACxB,cAAc,EAAE,OAAO,CAAC;QACxB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,uBAAuB,EAAE,OAAO,CAAC;QACjC,aAAa,EAAE,OAAO,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;;AAED,wBAA8E"}
@@ -1,20 +1,20 @@
1
1
  import { type ReactNavigationIntegration, type NavigationIntegrationOptions } from './navigation';
2
2
  import type { PulseFeatureConfig } from './pulse.interface';
3
- export type PulseConfig = {
4
- autoDetectExceptions?: boolean;
5
- autoDetectNavigation?: boolean;
6
- autoDetectNetwork?: boolean;
3
+ export type NetworkHeaderConfig = {
4
+ requestHeaders?: string[];
5
+ responseHeaders?: string[];
7
6
  };
8
- export type PulseStartOptions = {
7
+ export type PulseConfig = {
9
8
  autoDetectExceptions?: boolean;
10
9
  autoDetectNavigation?: boolean;
11
10
  autoDetectNetwork?: boolean;
11
+ networkHeaders?: NetworkHeaderConfig;
12
12
  };
13
13
  /**
14
14
  * Gets all features from the remote SDK config.
15
- * @returns Record of feature names to their enabled status
15
+ * @returns Record of feature names to their enabled status, or null if config not available
16
16
  */
17
17
  export declare function getFeaturesFromRemoteConfig(): PulseFeatureConfig;
18
- export declare function start(options?: PulseStartOptions): void;
18
+ export declare function start(options?: PulseConfig): void;
19
19
  export declare function createNavigationIntegrationWithConfig(options?: NavigationIntegrationOptions): ReactNavigationIntegration;
20
20
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAaF;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,kBAAkB,CAQhE;AAcD,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAiBvD;AAED,wBAAgB,qCAAqC,CACnD,OAAO,CAAC,EAAE,4BAA4B,GACrC,0BAA0B,CAsB5B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC,CAAC;AAiBF;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,kBAAkB,CAOhE;AA2CD,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CA0BjD;AAED,wBAAgB,qCAAqC,CACnD,OAAO,CAAC,EAAE,4BAA4B,GACrC,0BAA0B,CAsB5B"}
@@ -8,7 +8,7 @@ import { setUserId, setUserProperty, setUserProperties } from './user';
8
8
  import { ErrorBoundary, withErrorBoundary } from './errorBoundary';
9
9
  import { useNavigationTracking, markContentReady } from './navigation';
10
10
  export type { Span } from './trace';
11
- export type { PulseConfig, PulseStartOptions } from './config';
11
+ export type { PulseConfig } from './config';
12
12
  export type { PulseAttributes, PulseAttributeValue } from './pulse.interface';
13
13
  export type { ReactNavigationIntegration, NavigationRoute, NavigationIntegrationOptions, } from './navigation';
14
14
  export type { ErrorBoundaryProps, FallbackRender } from './errorBoundary';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEvE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,YAAY,EACV,0BAA0B,EAC1B,eAAe,EACf,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;CAejB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEvE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,YAAY,EACV,0BAA0B,EAC1B,eAAe,EACf,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;CAejB,CAAC"}
@@ -2,6 +2,7 @@ import type { RefObject } from 'react';
2
2
  import type { NavigationIntegrationOptions, NavigationRoute } from './navigation.interface';
3
3
  import { markContentReady } from './screen-interactive';
4
4
  export type { NavigationRoute, NavigationIntegrationOptions };
5
+ export { DEFAULT_NAVIGATION_OPTIONS } from './navigation.interface';
5
6
  export interface ReactNavigationIntegration {
6
7
  registerNavigationContainer: (maybeNavigationContainer: unknown) => () => void;
7
8
  markContentReady: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/navigation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAEV,4BAA4B,EAC5B,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAEL,gBAAgB,EAIjB,MAAM,sBAAsB,CAAC;AAW9B,YAAY,EAAE,eAAe,EAAE,4BAA4B,EAAE,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IACzC,2BAA2B,EAAE,CAC3B,wBAAwB,EAAE,OAAO,KAC9B,MAAM,IAAI,CAAC;IAChB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,4BAA4B,GACrC,0BAA0B,CAyP5B;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,IAAI,CAOZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/navigation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAEV,4BAA4B,EAC5B,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAShC,OAAO,EAEL,gBAAgB,EAIjB,MAAM,sBAAsB,CAAC;AAe9B,YAAY,EAAE,eAAe,EAAE,4BAA4B,EAAE,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,WAAW,0BAA0B;IACzC,2BAA2B,EAAE,CAC3B,wBAAwB,EAAE,OAAO,KAC9B,MAAM,IAAI,CAAC;IAChB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAYD,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,4BAA4B,GACrC,0BAA0B,CAsQ5B;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,IAAI,CAOZ"}
@@ -14,4 +14,5 @@ export interface NavigationIntegrationOptions {
14
14
  screenNavigationTracking?: boolean;
15
15
  screenInteractiveTracking?: boolean;
16
16
  }
17
+ export declare const DEFAULT_NAVIGATION_OPTIONS: Required<NavigationIntegrationOptions>;
17
18
  //# sourceMappingURL=navigation.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.interface.d.ts","sourceRoot":"","sources":["../../../../src/navigation/navigation.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,KAChC;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC"}
1
+ {"version":3,"file":"navigation.interface.d.ts","sourceRoot":"","sources":["../../../../src/navigation/navigation.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,KAChC;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,4BAA4B,CAK3E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"screen-load.d.ts","sourceRoot":"","sources":["../../../../src/navigation/screen-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,UAAU,CAAC;AAQ5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,eAAe,GAAG,SAAS,CAAC;CAC1C;AAED,eAAO,MAAM,yBAAyB,EAAE,eAGvC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,eAAe,EACtB,kBAAkB,EAAE,MAAM,MAAM,EAAE,EAClC,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EACzC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;+BAEZ,IAAI;uCAgBnB,eAAe,kBACd,eAAe,qBACZ,OAAO,KACzB,IAAI;sCA8BkC,eAAe,KAAG,IAAI;EAyBhE"}
1
+ {"version":3,"file":"screen-load.d.ts","sourceRoot":"","sources":["../../../../src/navigation/screen-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,eAAe,GAAG,SAAS,CAAC;CAC1C;AAED,eAAO,MAAM,yBAAyB,EAAE,eAGvC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,eAAe,EACtB,kBAAkB,EAAE,MAAM,MAAM,EAAE,EAClC,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EACzC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;+BAEZ,IAAI;uCAenB,eAAe,kBACd,eAAe,qBACZ,OAAO,KACzB,IAAI;sCA8BkC,eAAe,KAAG,IAAI;EAyBhE"}
@@ -1,5 +1,5 @@
1
1
  import { type RefObject } from 'react';
2
- import type { NavigationIntegrationOptions } from './navigation.interface';
2
+ import { type NavigationIntegrationOptions } from './navigation.interface';
3
3
  import type { ReactNavigationIntegration } from './index';
4
4
  export declare function useNavigationTracking(navigationRef: RefObject<any>, options?: NavigationIntegrationOptions, createIntegration?: (options?: NavigationIntegrationOptions) => ReactNavigationIntegration): () => void;
5
5
  //# sourceMappingURL=useNavigationTracking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../../../src/navigation/useNavigationTracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,4BAA4B,EACtC,iBAAiB,CAAC,EAAE,CAClB,OAAO,CAAC,EAAE,4BAA4B,KACnC,0BAA0B,GAC9B,MAAM,IAAI,CAuCZ"}
1
+ {"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../../../src/navigation/useNavigationTracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,4BAA4B,EACtC,iBAAiB,CAAC,EAAE,CAClB,OAAO,CAAC,EAAE,4BAA4B,KACnC,0BAA0B,GAC9B,MAAM,IAAI,CA6CZ"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Normalizes header name according to OpenTelemetry HTTP semantic conventions:
3
+ * - Lowercase
4
+ * - Dashes replaced by underscores
5
+ * - Reference: https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/
6
+ * @example
7
+ * normalizeHeaderName('Content-Type') => 'content_type'
8
+ * normalizeHeaderName('X-Request-ID') => 'x_request_id'
9
+ */
10
+ export declare function normalizeHeaderName(headerName: string): string;
11
+ /**
12
+ * Checks if a header should be captured based on configuration.
13
+ */
14
+ export declare function shouldCaptureHeader(headerName: string, headerList: string[]): boolean;
15
+ //# sourceMappingURL=header-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-helper.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/header-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAMT"}
@@ -1,3 +1,6 @@
1
- export declare function initializeNetworkInterceptor(): void;
1
+ import type { NetworkHeaderConfig } from '../config';
2
+ export { normalizeHeaderName, shouldCaptureHeader } from './header-helper';
3
+ export declare function getHeaderConfig(): NetworkHeaderConfig;
4
+ export declare function initializeNetworkInterceptor(config?: NetworkHeaderConfig): void;
2
5
  export declare const isNetworkInterceptorInitialized: () => boolean;
3
6
  //# sourceMappingURL=initialization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/initialization.ts"],"names":[],"mappings":"AAIA,wBAAgB,4BAA4B,IAAI,IAAI,CAqBnD;AAED,eAAO,MAAM,+BAA+B,QAAO,OAAwB,CAAC"}
1
+ {"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/initialization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAQ3E,wBAAgB,eAAe,IAAI,mBAAmB,CAErD;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,mBAAmB,GAC3B,IAAI,CA6BN;AAED,eAAO,MAAM,+BAA+B,QAAO,OAAwB,CAAC"}
@@ -3,15 +3,18 @@ export interface RequestStartContext {
3
3
  method: string;
4
4
  type: 'fetch' | 'xmlhttprequest';
5
5
  baseUrl?: string;
6
+ requestHeaders?: Record<string, string>;
6
7
  }
7
8
  export interface RequestEndContextSuccess {
8
9
  status: number;
9
10
  state: 'success';
11
+ responseHeaders?: Record<string, string>;
10
12
  }
11
13
  export interface RequestEndContextError {
12
14
  state: 'error';
13
15
  status?: number;
14
16
  error?: Error;
17
+ responseHeaders?: Record<string, string>;
15
18
  }
16
19
  export type RequestEndContext = RequestEndContextSuccess | RequestEndContextError;
17
20
  export type RequestStartCallback = (context: RequestStartContext) => {
@@ -1 +1 @@
1
- {"version":3,"file":"network.interface.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/network.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,mBAAmB,KACzB;IAAE,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"}
1
+ {"version":3,"file":"network.interface.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/network.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,mBAAmB,KACzB;IAAE,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"request-tracker-xhr.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/request-tracker-xhr.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcnD,iBAAS,2BAA2B,CAClC,GAAG,EAAE,OAAO,cAAc,GACzB,cAAc,CAuFhB;AAED,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"request-tracker-xhr.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/request-tracker-xhr.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAgBnD,iBAAS,2BAA2B,CAClC,GAAG,EAAE,OAAO,cAAc,GACzB,cAAc,CA6KhB;AAED,eAAe,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"span-helpers.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/span-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1D,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,iBAAiB,GAC5B,eAAe,CA+BjB;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,mBAAmB,EACjC,eAAe,EAAE,OAAO,GAAG,gBAAgB,EAC3C,IAAI,CAAC,EAAE,QAAQ,GAAG,sBAAsB,GAAG,IAAI,GAC9C,IAAI,CAoBN;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,OAAO,GACf,IAAI,CAYN"}
1
+ {"version":3,"file":"span-helpers.d.ts","sourceRoot":"","sources":["../../../../src/network-interceptor/span-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,iBAAiB,GAC5B,eAAe,CAmDjB;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,mBAAmB,EACjC,eAAe,EAAE,OAAO,GAAG,gBAAgB,EAC3C,IAAI,CAAC,EAAE,QAAQ,GAAG,sBAAsB,GAAG,IAAI,GAC9C,IAAI,CAmBN;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,OAAO,GACf,IAAI,CAYN"}
@@ -10,7 +10,6 @@ export declare enum ATTRIBUTE_KEYS {
10
10
  PULSE_TYPE = "pulse.type",
11
11
  SCREEN_NAME = "screen.name",
12
12
  ROUTE_KEY = "routeKey",
13
- PHASE = "phase",
14
13
  LAST_SCREEN_NAME = "last.screen.name",
15
14
  ROUTE_HAS_BEEN_SEEN = "routeHasBeenSeen",
16
15
  PLATFORM = "platform",
@@ -20,16 +19,25 @@ export declare enum ATTRIBUTE_KEYS {
20
19
  HTTP_URL = "http.url",
21
20
  HTTP_STATUS_CODE = "http.status_code",
22
21
  HTTP_REQUEST_TYPE = "http.request.type",
22
+ HTTP_REQUEST_HEADER = "http.request.header",
23
+ HTTP_RESPONSE_HEADER = "http.response.header",
23
24
  ERROR_MESSAGE = "error.message",
24
25
  ERROR_STACK = "error.stack"
25
26
  }
26
27
  export declare enum PULSE_TYPES {
27
28
  SCREEN_SESSION = "screen_session",
28
29
  SCREEN_LOAD = "screen_load",
29
- SCREEN_INTERACTIVE = "screen_interactive"
30
- }
31
- export declare enum PHASE_VALUES {
32
- START = "start",
30
+ SCREEN_INTERACTIVE = "screen_interactive",
33
31
  NETWORK = "network"
34
32
  }
33
+ export declare const PULSE_FEATURE_NAMES: {
34
+ readonly RN_SCREEN_LOAD: "rn_screen_load";
35
+ readonly SCREEN_SESSION: "screen_session";
36
+ readonly RN_SCREEN_INTERACTIVE: "rn_screen_interactive";
37
+ readonly NETWORK_INSTRUMENTATION: "network_instrumentation";
38
+ readonly CUSTOM_EVENTS: "custom_events";
39
+ readonly JS_CRASH: "js_crash";
40
+ };
41
+ export type PulseFeatureName = (typeof PULSE_FEATURE_NAMES)[keyof typeof PULSE_FEATURE_NAMES];
42
+ export type NavigationFeatureName = typeof PULSE_FEATURE_NAMES.SCREEN_SESSION | typeof PULSE_FEATURE_NAMES.RN_SCREEN_LOAD | typeof PULSE_FEATURE_NAMES.RN_SCREEN_INTERACTIVE;
35
43
  //# sourceMappingURL=pulse.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pulse.constants.d.ts","sourceRoot":"","sources":["../../../src/pulse.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,UAAU;IACpB,cAAc,kBAAkB;IAChC,SAAS,cAAc;IACvB,kBAAkB,sBAAsB;CACzC;AAED,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,SAAS,aAAa;IACtB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;IACrC,mBAAmB,qBAAqB;IACxC,QAAQ,aAAa;IACrB,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;CAC5B;AAED,oBAAY,WAAW;IACrB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;CAC1C;AAED,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB"}
1
+ {"version":3,"file":"pulse.constants.d.ts","sourceRoot":"","sources":["../../../src/pulse.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,UAAU;IACpB,cAAc,kBAAkB;IAChC,SAAS,cAAc;IACvB,kBAAkB,sBAAsB;CACzC;AAED,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,SAAS,aAAa;IACtB,gBAAgB,qBAAqB;IACrC,mBAAmB,qBAAqB;IACxC,QAAQ,aAAa;IACrB,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,oBAAoB,yBAAyB;IAC7C,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;CAC5B;AAED,oBAAY,WAAW;IACrB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IACzC,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,mBAAmB;;;;;;;CAOtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAC7B,OAAO,mBAAmB,CAAC,cAAc,GACzC,OAAO,mBAAmB,CAAC,cAAc,GACzC,OAAO,mBAAmB,CAAC,qBAAqB,CAAC"}
@@ -5,5 +5,5 @@
5
5
  */
6
6
  export type PulseAttributeValue = string | number | boolean | string[] | number[] | boolean[];
7
7
  export type PulseAttributes = Record<string, PulseAttributeValue | undefined | null>;
8
- export type PulseFeatureConfig = Record<string, boolean> | null;
8
+ export type PulseFeatureConfig = Record<string, boolean> | null | undefined;
9
9
  //# sourceMappingURL=pulse.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pulse.interface.d.ts","sourceRoot":"","sources":["../../../src/pulse.interface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,EAAE,GACR,MAAM,EAAE,GACR,OAAO,EAAE,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN,mBAAmB,GAAG,SAAS,GAAG,IAAI,CACvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"pulse.interface.d.ts","sourceRoot":"","sources":["../../../src/pulse.interface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,EAAE,GACR,MAAM,EAAE,GACR,OAAO,EAAE,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN,mBAAmB,GAAG,SAAS,GAAG,IAAI,CACvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamhorizonorg/pulse-react-native",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Production-grade observability SDK for React Native applications with OpenTelemetry support. Real-time monitoring, error tracking, performance insights, and distributed tracing.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -60,7 +60,14 @@ export interface Spec extends TurboModule {
60
60
  setCurrentScreenName(screenName: string): boolean;
61
61
 
62
62
  /** Get all SDK Remote Config features */
63
- getAllFeatures(): Object;
63
+ getAllFeatures(): {
64
+ rn_screen_load: boolean;
65
+ screen_session: boolean;
66
+ rn_screen_interactive: boolean;
67
+ network_instrumentation: boolean;
68
+ custom_events: boolean;
69
+ js_crash: boolean;
70
+ } | null;
64
71
  }
65
72
 
66
73
  export default TurboModuleRegistry.getEnforcing<Spec>('PulseReactNativeOtel');
package/src/config.ts CHANGED
@@ -8,41 +8,45 @@ import {
8
8
  import { initializeNetworkInterceptor } from './network-interceptor/initialization';
9
9
  import PulseReactNativeOtel from './NativePulseReactNativeOtel';
10
10
  import type { PulseFeatureConfig } from './pulse.interface';
11
+ import { PULSE_FEATURE_NAMES } from './pulse.constants';
11
12
 
12
- export type PulseConfig = {
13
- autoDetectExceptions?: boolean;
14
- autoDetectNavigation?: boolean;
15
- autoDetectNetwork?: boolean;
13
+ export type NetworkHeaderConfig = {
14
+ requestHeaders?: string[];
15
+ responseHeaders?: string[];
16
16
  };
17
17
 
18
- export type PulseStartOptions = {
18
+ export type PulseConfig = {
19
19
  autoDetectExceptions?: boolean;
20
20
  autoDetectNavigation?: boolean;
21
21
  autoDetectNetwork?: boolean;
22
+ networkHeaders?: NetworkHeaderConfig;
22
23
  };
23
24
 
24
- const defaultConfig: PulseConfig = {
25
+ const defaultConfig: Required<PulseConfig> = {
25
26
  autoDetectExceptions: true,
26
27
  autoDetectNavigation: true,
27
28
  autoDetectNetwork: true,
29
+ networkHeaders: {
30
+ requestHeaders: [],
31
+ responseHeaders: [],
32
+ },
28
33
  };
29
34
 
30
35
  let currentConfig: PulseConfig = { ...defaultConfig };
31
36
 
32
37
  // Cache for features from remote SDK config
33
- let cachedFeatures: PulseFeatureConfig = null;
38
+ let cachedFeatures: PulseFeatureConfig;
34
39
 
35
40
  /**
36
41
  * Gets all features from the remote SDK config.
37
- * @returns Record of feature names to their enabled status
42
+ * @returns Record of feature names to their enabled status, or null if config not available
38
43
  */
39
44
  export function getFeaturesFromRemoteConfig(): PulseFeatureConfig {
40
- if (cachedFeatures !== null) {
45
+ if (cachedFeatures !== undefined) {
41
46
  return cachedFeatures;
42
47
  }
43
48
 
44
- const features = PulseReactNativeOtel.getAllFeatures();
45
- cachedFeatures = features as PulseFeatureConfig;
49
+ cachedFeatures = PulseReactNativeOtel.getAllFeatures();
46
50
  return cachedFeatures;
47
51
  }
48
52
 
@@ -54,27 +58,65 @@ function configure(config: PulseConfig): void {
54
58
  setupErrorHandler(currentConfig.autoDetectExceptions ?? true);
55
59
 
56
60
  if (currentConfig.autoDetectNetwork) {
57
- initializeNetworkInterceptor();
61
+ initializeNetworkInterceptor(
62
+ currentConfig.networkHeaders ?? {
63
+ requestHeaders: [],
64
+ responseHeaders: [],
65
+ }
66
+ );
58
67
  }
59
68
  }
60
69
 
61
- export function start(options?: PulseStartOptions): void {
62
- if (!isSupportedPlatform()) {
63
- return;
70
+ function resolveFeatureState(
71
+ features: PulseFeatureConfig,
72
+ featureName: string,
73
+ optionValue: boolean
74
+ ): boolean {
75
+ if (features !== undefined && features !== null)
76
+ return features[featureName] ?? optionValue;
77
+ return optionValue;
78
+ }
79
+
80
+ function resolveNavigationState(
81
+ features: PulseFeatureConfig,
82
+ optionValue: boolean
83
+ ): boolean {
84
+ if (features !== undefined && features !== null) {
85
+ const hasAny =
86
+ features[PULSE_FEATURE_NAMES.SCREEN_SESSION] === true ||
87
+ features[PULSE_FEATURE_NAMES.RN_SCREEN_LOAD] === true ||
88
+ features[PULSE_FEATURE_NAMES.RN_SCREEN_INTERACTIVE] === true;
89
+ return hasAny ?? optionValue;
64
90
  }
91
+ return optionValue;
92
+ }
93
+
94
+ export function start(options?: PulseConfig): void {
95
+ if (!isSupportedPlatform()) return;
96
+
65
97
  const features = getFeaturesFromRemoteConfig();
66
- const autoDetectExceptions =
67
- features?.js_crash ?? options?.autoDetectExceptions ?? true;
68
- const autoDetectNavigation =
69
- features?.rn_navigation ?? options?.autoDetectNavigation ?? true;
70
- const autoDetectNetwork =
71
- features?.network_instrumentation ?? options?.autoDetectNetwork ?? true;
98
+ const config: PulseConfig = {
99
+ autoDetectExceptions: resolveFeatureState(
100
+ features,
101
+ PULSE_FEATURE_NAMES.JS_CRASH,
102
+ options?.autoDetectExceptions ?? defaultConfig.autoDetectExceptions
103
+ ),
104
+ autoDetectNavigation: resolveNavigationState(
105
+ features,
106
+ options?.autoDetectNavigation ?? defaultConfig.autoDetectNavigation
107
+ ),
108
+ autoDetectNetwork: resolveFeatureState(
109
+ features,
110
+ PULSE_FEATURE_NAMES.NETWORK_INSTRUMENTATION,
111
+ options?.autoDetectNetwork ?? defaultConfig.autoDetectNetwork
112
+ ),
113
+ networkHeaders: options?.networkHeaders ?? {
114
+ requestHeaders: [],
115
+ responseHeaders: [],
116
+ },
117
+ };
72
118
 
73
- configure({
74
- autoDetectExceptions,
75
- autoDetectNavigation,
76
- autoDetectNetwork,
77
- });
119
+ configure(config);
78
120
  }
79
121
 
80
122
  export function createNavigationIntegrationWithConfig(
package/src/index.tsx CHANGED
@@ -9,7 +9,7 @@ import { ErrorBoundary, withErrorBoundary } from './errorBoundary';
9
9
  import { useNavigationTracking, markContentReady } from './navigation';
10
10
 
11
11
  export type { Span } from './trace';
12
- export type { PulseConfig, PulseStartOptions } from './config';
12
+ export type { PulseConfig } from './config';
13
13
  export type { PulseAttributes, PulseAttributeValue } from './pulse.interface';
14
14
  export type {
15
15
  ReactNavigationIntegration,
@@ -5,6 +5,7 @@ import type {
5
5
  NavigationIntegrationOptions,
6
6
  NavigationRoute,
7
7
  } from './navigation.interface';
8
+ import { DEFAULT_NAVIGATION_OPTIONS } from './navigation.interface';
8
9
  import { pushRecentRouteKey, LOG_TAGS } from './utils';
9
10
  import { discardSpan } from '../trace';
10
11
  import {
@@ -28,8 +29,13 @@ import { useNavigationTracking as useNavigationTrackingBase } from './useNavigat
28
29
  import { isSupportedPlatform } from '../initialization';
29
30
  import PulseReactNativeOtel from '../NativePulseReactNativeOtel';
30
31
  import { getFeaturesFromRemoteConfig } from '../config';
32
+ import {
33
+ PULSE_FEATURE_NAMES,
34
+ type NavigationFeatureName,
35
+ } from '../pulse.constants';
31
36
 
32
37
  export type { NavigationRoute, NavigationIntegrationOptions };
38
+ export { DEFAULT_NAVIGATION_OPTIONS } from './navigation.interface';
33
39
 
34
40
  export interface ReactNavigationIntegration {
35
41
  registerNavigationContainer: (
@@ -38,18 +44,41 @@ export interface ReactNavigationIntegration {
38
44
  markContentReady: () => void;
39
45
  }
40
46
 
47
+ function resolveNavigationFeatureState(
48
+ features: ReturnType<typeof getFeaturesFromRemoteConfig>,
49
+ featureName: NavigationFeatureName,
50
+ optionValue: boolean
51
+ ): boolean {
52
+ if (features !== undefined && features !== null)
53
+ return features[featureName] ?? optionValue;
54
+ return optionValue;
55
+ }
56
+
41
57
  export function createReactNavigationIntegration(
42
58
  options?: NavigationIntegrationOptions
43
59
  ): ReactNavigationIntegration {
44
60
  const features = getFeaturesFromRemoteConfig();
45
- const screenSessionTracking =
46
- features?.screen_session ?? options?.screenSessionTracking ?? true;
47
- const screenNavigationTracking =
48
- features?.rn_screen_load ?? options?.screenNavigationTracking ?? true;
49
- const screenInteractiveTracking =
50
- features?.rn_screen_interactive ??
61
+
62
+ const screenSessionTracking = resolveNavigationFeatureState(
63
+ features,
64
+ PULSE_FEATURE_NAMES.SCREEN_SESSION,
65
+ options?.screenSessionTracking ??
66
+ DEFAULT_NAVIGATION_OPTIONS.screenSessionTracking
67
+ );
68
+
69
+ const screenNavigationTracking = resolveNavigationFeatureState(
70
+ features,
71
+ PULSE_FEATURE_NAMES.RN_SCREEN_LOAD,
72
+ options?.screenNavigationTracking ??
73
+ DEFAULT_NAVIGATION_OPTIONS.screenNavigationTracking
74
+ );
75
+
76
+ const screenInteractiveTracking = resolveNavigationFeatureState(
77
+ features,
78
+ PULSE_FEATURE_NAMES.RN_SCREEN_INTERACTIVE,
51
79
  options?.screenInteractiveTracking ??
52
- false;
80
+ DEFAULT_NAVIGATION_OPTIONS.screenInteractiveTracking
81
+ );
53
82
 
54
83
  let navigationContainer: NavigationContainer | undefined;
55
84
  let recentRouteKeys: string[] = [];
@@ -17,3 +17,10 @@ export interface NavigationIntegrationOptions {
17
17
  screenNavigationTracking?: boolean;
18
18
  screenInteractiveTracking?: boolean;
19
19
  }
20
+
21
+ export const DEFAULT_NAVIGATION_OPTIONS: Required<NavigationIntegrationOptions> =
22
+ {
23
+ screenSessionTracking: true,
24
+ screenNavigationTracking: true,
25
+ screenInteractiveTracking: false,
26
+ };
@@ -1,11 +1,6 @@
1
1
  import { Pulse, type Span } from '../index';
2
2
  import { Platform } from 'react-native';
3
- import {
4
- SPAN_NAMES,
5
- ATTRIBUTE_KEYS,
6
- PULSE_TYPES,
7
- PHASE_VALUES,
8
- } from '../pulse.constants';
3
+ import { SPAN_NAMES, ATTRIBUTE_KEYS, PULSE_TYPES } from '../pulse.constants';
9
4
  import type { NavigationRoute } from './navigation.interface';
10
5
  import { LOG_TAGS } from './utils';
11
6
 
@@ -34,7 +29,6 @@ export function createScreenLoadTracker(
34
29
  state.navigationSpan = Pulse.startSpan(SPAN_NAMES.NAVIGATED, {
35
30
  attributes: {
36
31
  [ATTRIBUTE_KEYS.PULSE_TYPE]: PULSE_TYPES.SCREEN_LOAD,
37
- [ATTRIBUTE_KEYS.PHASE]: PHASE_VALUES.START,
38
32
  [ATTRIBUTE_KEYS.PLATFORM]: Platform.OS as 'android' | 'ios',
39
33
  },
40
34
  });