noibu-react-native 0.2.6 → 0.2.7

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 (97) hide show
  1. package/README.md +15 -15
  2. package/dist/api/{clientConfig.js → ClientConfig.js} +69 -52
  3. package/dist/api/{helpCode.js → HelpCode.js} +6 -13
  4. package/dist/api/InputManager.js +156 -0
  5. package/dist/api/{metroplexSocket.js → MetroplexSocket.js} +189 -178
  6. package/dist/api/StoredMetrics.js +158 -0
  7. package/dist/api/{storedPageVisit.js → StoredPageVisit.js} +61 -48
  8. package/dist/const_matchers.js +1 -5
  9. package/dist/constants.js +15 -390
  10. package/dist/entry/index.js +3 -4
  11. package/dist/entry/init.js +33 -19
  12. package/dist/monitors/AppNavigationMonitor.js +19 -19
  13. package/dist/monitors/BaseMonitor.js +9 -4
  14. package/dist/monitors/ClickMonitor.js +72 -76
  15. package/dist/monitors/ErrorMonitor.js +45 -55
  16. package/dist/monitors/KeyboardInputMonitor.js +13 -11
  17. package/dist/monitors/PageMonitor.js +25 -2
  18. package/dist/monitors/RequestMonitor.js +46 -57
  19. package/dist/monitors/http-tools/GqlErrorValidator.js +39 -69
  20. package/dist/monitors/http-tools/HTTPDataBundler.js +71 -66
  21. package/dist/monitors/integrations/{react-native-navigation-integration.js → ReactNativeNavigationIntegration.js} +15 -12
  22. package/dist/pageVisit/EventDebouncer.js +43 -74
  23. package/dist/pageVisit/HttpEventManager.js +88 -0
  24. package/dist/pageVisit/PageVisitManager.js +99 -0
  25. package/dist/pageVisit/pageVisitEventError.js +170 -280
  26. package/dist/react/ErrorBoundary.js +3 -6
  27. package/dist/sessionRecorder/{sessionRecorder.js → SessionRecorder.js} +58 -70
  28. package/dist/sessionRecorder/nativeSessionRecorderSubscription.js +3 -5
  29. package/dist/storage/{rnStorageProvider.js → RNStorageProvider.js} +3 -7
  30. package/dist/storage/{storage.js → Storage.js} +17 -30
  31. package/dist/storage/{storageProvider.js → StorageProvider.js} +7 -8
  32. package/dist/utils/date.js +39 -50
  33. package/dist/utils/eventlistener.js +5 -12
  34. package/dist/utils/function.js +42 -113
  35. package/dist/utils/log.js +5 -5
  36. package/dist/utils/object.js +12 -12
  37. package/dist/utils/piiRedactor.js +31 -3
  38. package/dist/utils/stacktrace-parser.js +29 -21
  39. package/package.json +14 -14
  40. package/dist/api/inputManager.js +0 -227
  41. package/dist/api/storedMetrics.js +0 -198
  42. package/dist/pageVisit/pageVisit.js +0 -181
  43. package/dist/pageVisit/pageVisitEventHTTP.js +0 -98
  44. package/dist/pageVisit/userStep.js +0 -20
  45. package/dist/src/api/clientConfig.d.ts +0 -100
  46. package/dist/src/api/clientConfig.test.d.ts +0 -1
  47. package/dist/src/api/helpCode.d.ts +0 -23
  48. package/dist/src/api/inputManager.d.ts +0 -87
  49. package/dist/src/api/metroplexSocket.d.ts +0 -137
  50. package/dist/src/api/storedMetrics.d.ts +0 -73
  51. package/dist/src/api/storedPageVisit.d.ts +0 -40
  52. package/dist/src/const_matchers.d.ts +0 -1
  53. package/dist/src/constants.d.ts +0 -290
  54. package/dist/src/entry/index.d.ts +0 -14
  55. package/dist/src/entry/init.d.ts +0 -5
  56. package/dist/src/monitors/AppNavigationMonitor.d.ts +0 -18
  57. package/dist/src/monitors/BaseMonitor.d.ts +0 -13
  58. package/dist/src/monitors/BaseMonitor.test.d.ts +0 -1
  59. package/dist/src/monitors/ClickMonitor.d.ts +0 -31
  60. package/dist/src/monitors/ErrorMonitor.d.ts +0 -63
  61. package/dist/src/monitors/KeyboardInputMonitor.d.ts +0 -20
  62. package/dist/src/monitors/PageMonitor.d.ts +0 -20
  63. package/dist/src/monitors/RequestMonitor.d.ts +0 -94
  64. package/dist/src/monitors/http-tools/GqlErrorValidator.d.ts +0 -59
  65. package/dist/src/monitors/http-tools/HTTPDataBundler.d.ts +0 -112
  66. package/dist/src/monitors/integrations/react-native-navigation-integration.d.ts +0 -20
  67. package/dist/src/pageVisit/EventDebouncer.d.ts +0 -24
  68. package/dist/src/pageVisit/pageVisit.d.ts +0 -52
  69. package/dist/src/pageVisit/pageVisitEventError.d.ts +0 -15
  70. package/dist/src/pageVisit/pageVisitEventHTTP.d.ts +0 -25
  71. package/dist/src/pageVisit/userStep.d.ts +0 -5
  72. package/dist/src/react/ErrorBoundary.d.ts +0 -72
  73. package/dist/src/sessionRecorder/nativeSessionRecorderSubscription.d.ts +0 -79
  74. package/dist/src/sessionRecorder/sessionRecorder.d.ts +0 -60
  75. package/dist/src/sessionRecorder/types.d.ts +0 -91
  76. package/dist/src/storage/rnStorageProvider.d.ts +0 -23
  77. package/dist/src/storage/storage.d.ts +0 -39
  78. package/dist/src/storage/storageProvider.d.ts +0 -26
  79. package/dist/src/utils/date.d.ts +0 -6
  80. package/dist/src/utils/eventlistener.d.ts +0 -8
  81. package/dist/src/utils/function.d.ts +0 -102
  82. package/dist/src/utils/log.d.ts +0 -4
  83. package/dist/src/utils/object.d.ts +0 -44
  84. package/dist/src/utils/performance.d.ts +0 -6
  85. package/dist/src/utils/piiRedactor.d.ts +0 -11
  86. package/dist/src/utils/polyfills.d.ts +0 -4
  87. package/dist/src/utils/stacktrace-parser.d.ts +0 -7
  88. package/dist/types/Config.d.ts +0 -31
  89. package/dist/types/Metroplex.types.d.ts +0 -73
  90. package/dist/types/NavigationIntegration.d.ts +0 -6
  91. package/dist/types/PageVisit.types.d.ts +0 -8
  92. package/dist/types/PageVisitErrors.types.d.ts +0 -114
  93. package/dist/types/PageVisitEvents.types.d.ts +0 -91
  94. package/dist/types/PageVisitMetrics.types.d.ts +0 -27
  95. package/dist/types/Storage.d.ts +0 -14
  96. package/dist/types/StoredPageVisit.types.d.ts +0 -11
  97. package/dist/types/WrappedObjects.d.ts +0 -6
@@ -1,102 +0,0 @@
1
- import { RawStackFrame } from './stacktrace-parser';
2
- import { REQUIRED_DATA_PROCESSING_URLS } from '../constants';
3
- import { JSErrorOutputMessage } from '../../types/PageVisitErrors.types';
4
- /**
5
- * returns a string that satisfies a max length
6
- * stringToVerify: string that needs to be verified
7
- * length :optional, max length that stringToVerify can be
8
- */
9
- export declare function getMaxSubstringAllowed(stringToVerify: string, length?: number): string;
10
- /**
11
- * Processes the raw stack frames and creates a readable stack in a safe manner
12
- */
13
- export declare function processFrames(rawFrames: RawStackFrame[]): {
14
- file: string;
15
- line: string;
16
- mname: string;
17
- column?: number;
18
- }[];
19
- /**
20
- * Retrieves the javascript stack and message from an error event object
21
- * @param errObj error to extract stack from
22
- */
23
- export declare function getJSStack(errObj: {
24
- stack: string;
25
- message: string;
26
- }): JSErrorOutputMessage;
27
- /**
28
- * Checks if possiblyStacktrace has any stack frames present
29
- */
30
- export declare function isStackTrace(_possiblyStacktrace: unknown): _possiblyStacktrace is string;
31
- /**
32
- * counts the number of bytes
33
- */
34
- export declare function byteCount(s: string): number;
35
- /**
36
- * Stringify function that is aware of inner circular references and handles them by replacing with {} (empty object)
37
- * taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value
38
- */
39
- export declare function stringifyJSON(jsonObject: unknown): string;
40
- /**
41
- * Wrapper for a request, since we have to do some special handling
42
- * @param method
43
- * @param url
44
- * @param data
45
- * @param headers
46
- * @param timeout
47
- * @param sendAndForget
48
- */
49
- export declare function makeRequest(method: string, url: string, data: unknown, headers: Record<string, string>, timeout: number, sendAndForget: boolean): Promise<unknown>;
50
- /**
51
- * makes sure the url sent is a valid URL
52
- */
53
- export declare function isValidURL(str: string): boolean;
54
- /**
55
- * Fakes the user agent retrieval, since there are no good libraries that support both expo and plain RN
56
- * caches the result for the session
57
- */
58
- export declare function getUserAgent(): Promise<string>;
59
- /**
60
- * isInvalidURLConfig will verify that Collect is being initializes with
61
- * the correct env vars.
62
- */
63
- export declare function isInvalidURLConfig(urls: Record<(typeof REQUIRED_DATA_PROCESSING_URLS)[number], string>): boolean;
64
- /**
65
- * isNoibuJSAlreadyLoaded will verify if there are already other
66
- * copies of NoibuJS runnung
67
- */
68
- export declare function isNoibuJSAlreadyLoaded(): boolean;
69
- /**
70
- * asString will create a string out of anything passed to it.
71
- */
72
- export declare function asString(obj: unknown): string;
73
- /**
74
- * masks textual content if it ressembles something sensitive
75
- */
76
- export declare function maskTextInput(text: string): string;
77
- /**
78
- * Checks if the provided object is an instance of the specified type.
79
- * It's safer than `instanceof` operator as it handles cases
80
- * where type is not actually a type but an object.
81
- */
82
- export declare function isInstanceOf<T>(instance: unknown, type: T): instance is T;
83
- /**
84
- * To grab the video recorder type based on the device we run the app on.
85
- */
86
- export declare function getVideoRecorderType(): Promise<string>;
87
- /** String.trim, but safe */
88
- export declare function safeTrim(text: unknown): string;
89
- /**
90
- * Tries to get the stack trace from the given error object and returns it.
91
- * If the error object does not have a stack trace, an empty string is returned.
92
- *
93
- * @param {Error} error - The error object from which to retrieve the stack trace.
94
- * @returns {string} The stack trace of the error, if available. Otherwise, an empty string is returned.
95
- */
96
- export declare function tryGetStackTrace(error: any): string;
97
- /**
98
- * Checks whether the given value is a string or an instance of String.
99
- * @param {*} value - The value to be checked.
100
- * @returns {boolean} Returns true if the value is a string or an instance of String, otherwise returns false.
101
- */
102
- export declare function isString(value: any): value is string | String;
@@ -1,4 +0,0 @@
1
- /**
2
- * log with level = info
3
- */
4
- export declare const noibuLog: Console['log'];
@@ -1,44 +0,0 @@
1
- /** @module Object */
2
- /**
3
- * Replaces an attribute value found in an object with another value
4
- * sourceObject: source object whose attribute will get replaced
5
- * attributeName: the attribute key whose value will be replace
6
- * processingFunction: function that accepts the original value
7
- * and returns the newValue
8
- * @param {} sourceObject
9
- * @param {} attributeName
10
- * @param {} processingFunction
11
- */
12
- export declare const replace: <A extends { [k in K]: Function; }, K extends keyof A>(sourceObject: A, attributeName: K, processingFunction: (arg: A[K]) => A[K]) => void;
13
- /**
14
- * unwraps wrapped property, so we can use it without side effects
15
- * @param anything
16
- */
17
- export declare function unwrapNoibuWrapped<T>(anything: {
18
- __noibu_original__?: T;
19
- } & T): T;
20
- /**
21
- * Checks whether the prototype's property is writeable. If it is not,
22
- * checks whether the property can be made writeable. If it can, it is
23
- * set to writeable.
24
- * returns Whether the property on the prototype is (or is now) writeable
25
- */
26
- export declare const propWriteableOrMadeWriteable: <T>(proto: T, property: keyof T) => boolean;
27
- /**
28
- * Iterates object recursively and calls visit function
29
- * for each property allowing to override its value
30
- * @param {Object} instance An object to iterate through
31
- * @param {Function} visit A callback function that is called for each property
32
- * There are 3 arguments: current object, current property and its value
33
- * @param {{depth: number}} limit Use limit config object to set depth of the recursion
34
- */
35
- export declare const iterateObjectRecursively: (instance: Record<any, any>, visit: (i: typeof instance, p: keyof typeof i, v: (typeof i)[typeof p]) => typeof v, limit?: {
36
- depth: number;
37
- }) => void;
38
- export declare const safeEntries: (obj: unknown | Record<string, string | null> | Headers) => [string, string][];
39
- /**
40
- * Replaces the behaviour of Object.fromEntries() as it is not supported on all browsers
41
- * @param {Iterable} entries The iterable to parse into an object
42
- * @returns An object containing the same key/values as the iterable passed
43
- */
44
- export declare const safeFromEntries: <T>(entries: unknown) => Record<string, T>;
@@ -1,6 +0,0 @@
1
- /**
2
- * Wrapper function for window.performance.now() to ensure
3
- * it's available before calling it. If it's not available,
4
- * we return Date.now() instead.
5
- */
6
- export declare function safePerformanceNow(): any;
@@ -1,11 +0,0 @@
1
- /**
2
- * Redacts one string, returns redacted value or false if nothing to redact
3
- */
4
- export declare function shouldRedact(field: string): boolean;
5
- /**
6
- * Takes a string and redacts any PII we're able to detect
7
- *
8
- * content - the string from which we want to redact PII
9
- * returns the string with any PII we're able to detect redacted.
10
- */
11
- export declare function removePII(content: string): string;
@@ -1,4 +0,0 @@
1
- /**
2
- * In case Promise.all is not available, use this polyfill
3
- */
4
- export declare const promiseAll: any;
@@ -1,7 +0,0 @@
1
- export declare interface RawStackFrame {
2
- file: string;
3
- line?: number;
4
- column?: number;
5
- mname: string;
6
- }
7
- export declare function parseStack(stackString: string): RawStackFrame[];
@@ -1,31 +0,0 @@
1
- import { ATTRIBUTE_SELECTORS_ATT_NAME, BROWSER_ID_KEY, CLIENT_UNLOCK_TIME_KEY, CURRENT_PAGE_VISIT_COUNT_KEY, DISABLED_STATUS_KEY, HELP_CODE_EVENT_NAME, HTTP_DATA_COLLECTION_FLAG_NAME, HTTP_DATA_PAYLOAD_URL_REGEXES_FLAG_NAME, LAST_ACTIVE_TIME_KEY, PAGE_VISIT_ID_KEY, POST_METRICS_EVENT_NAME, WIN_BLOCKED_SELECTOR_ATT_NAME, WIN_NJS_VERSION_ATT_NAME, WIN_SCRIPT_ID_ATT_NAME } from '../src/constants';
2
- export interface StoredConfig {
3
- [BROWSER_ID_KEY]: string;
4
- [LAST_ACTIVE_TIME_KEY]?: Date;
5
- [PAGE_VISIT_ID_KEY]?: string;
6
- [CURRENT_PAGE_VISIT_COUNT_KEY]: number;
7
- [CLIENT_UNLOCK_TIME_KEY]?: Date;
8
- [DISABLED_STATUS_KEY]: boolean;
9
- }
10
- export type UrlConfig = {
11
- metroplexSocketBase: string;
12
- metroplexHTTPBase: string;
13
- domain: string;
14
- };
15
- export interface CustomerConfig {
16
- blockedElements?: NoibuConfig[typeof WIN_BLOCKED_SELECTOR_ATT_NAME];
17
- listOfUrlsToCollectHttpDataFrom?: NoibuConfig[typeof HTTP_DATA_PAYLOAD_URL_REGEXES_FLAG_NAME];
18
- enableHttpDataCollection?: NoibuConfig[typeof HTTP_DATA_COLLECTION_FLAG_NAME];
19
- domain: UrlConfig['domain'];
20
- }
21
- export interface NoibuConfig {
22
- [WIN_BLOCKED_SELECTOR_ATT_NAME]: string;
23
- [WIN_SCRIPT_ID_ATT_NAME]: string;
24
- [WIN_NJS_VERSION_ATT_NAME]: string;
25
- [ATTRIBUTE_SELECTORS_ATT_NAME]: string;
26
- [POST_METRICS_EVENT_NAME]: string;
27
- [HELP_CODE_EVENT_NAME]: string;
28
- [HTTP_DATA_COLLECTION_FLAG_NAME]: string;
29
- [HTTP_DATA_PAYLOAD_URL_REGEXES_FLAG_NAME]: string[];
30
- domain: string;
31
- }
@@ -1,73 +0,0 @@
1
- import { BLOCK_SOCKET_MESSAGE, BROWSER_ID_ATT_NAME, CLOSE_CONNECTION_FORCEFULLY, COLLECT_VER_ATT_NAME, CONN_COUNT_ATT_NAME, CSS_URLS_ATT_NAME, CUSTOM_ID_NAME_TYPE, CUSTOM_ID_VALUE_TYPE, END_AT_ATT_NAME, HELP_CODE_ATT_NAME, HTTP_DATA_METROPLEX_TYPE, IS_LAST_ATT_NAME, LANG_ATT_NAME, LENGTH_ATT_NAME, META_DATA_METROPLEX_TYPE, METROPLEX_SOCKET_INSTANCE_ID_ATT_NAME, OK_SOCKET_MESSAGE, ON_URL_ATT_NAME, PAGE_VISIT_HTTP_DATA_ATT_NAME, PAGE_VISIT_INFORMATION_ATT_NAME, PAGE_VISIT_META_DATA_ATT_NAME, PAGE_VISIT_PART_ATT_NAME, PAGE_VISIT_VID_FRAG_ATT_NAME, PV_EVENTS_ATT_NAME, PV_ID_ATT_NAME, PV_METROPLEX_TYPE, PV_PART_COUNTER_ATT_NAME, PV_SEQ_ATT_NAME, REF_URL_ATT_NAME, SCRIPT_ID_ATT_NAME, SCRIPT_INSTANCE_ID_ATT_NAME, SEQ_NUM_ATT_NAME, SOCKET_INSTANCE_ID_ATT_NAME, STARTED_AT_ATT_NAME, STOP_STORING_PV_SOCKET_MESSAGE, STOP_STORING_VID_SOCKET_MESSAGE, VIDEO_FRAG_ATT_NAME, VIDEO_METROPLEX_TYPE, VIDEO_RECORDER_ATT_NAME, WORK_REQUEST_ATT_NAME } from '../src/constants';
2
- import { HTTPDataBundle, PVEventMessage } from './PageVisitEvents.types';
3
- export interface PageVisitInfo {
4
- [BROWSER_ID_ATT_NAME]: string;
5
- [PV_ID_ATT_NAME]: string;
6
- [VIDEO_METROPLEX_TYPE]: number;
7
- [SCRIPT_ID_ATT_NAME]: string;
8
- [SCRIPT_INSTANCE_ID_ATT_NAME]: string;
9
- [METROPLEX_SOCKET_INSTANCE_ID_ATT_NAME]: string;
10
- [SOCKET_INSTANCE_ID_ATT_NAME]: string;
11
- [PV_SEQ_ATT_NAME]: number;
12
- [IS_LAST_ATT_NAME]: boolean;
13
- [CONN_COUNT_ATT_NAME]: number;
14
- [ON_URL_ATT_NAME]: string;
15
- [REF_URL_ATT_NAME]: string;
16
- [STARTED_AT_ATT_NAME]: string;
17
- [COLLECT_VER_ATT_NAME]: number;
18
- [LANG_ATT_NAME]?: string;
19
- [VIDEO_RECORDER_ATT_NAME]: string;
20
- }
21
- export interface OutboundMessageTypeMap {
22
- [META_DATA_METROPLEX_TYPE]: MetadataMessagePayload;
23
- [WORK_REQUEST_ATT_NAME]: WorkRequestPayload;
24
- [PV_METROPLEX_TYPE]: PageVisitPartPayload;
25
- [HTTP_DATA_METROPLEX_TYPE]: HttpDataPayload;
26
- [VIDEO_METROPLEX_TYPE]: VideoPartPayload;
27
- [PAGE_VISIT_INFORMATION_ATT_NAME]: PageVisitInfo;
28
- }
29
- export type OutboundMessageType = keyof OutboundMessageTypeMap;
30
- export type MetroMessagePayloadProps = typeof PAGE_VISIT_PART_ATT_NAME | typeof PAGE_VISIT_VID_FRAG_ATT_NAME | typeof PAGE_VISIT_HTTP_DATA_ATT_NAME | typeof PAGE_VISIT_META_DATA_ATT_NAME;
31
- export interface MetadataMessagePayload {
32
- [PAGE_VISIT_META_DATA_ATT_NAME]: {
33
- [CUSTOM_ID_VALUE_TYPE]: string;
34
- [CUSTOM_ID_NAME_TYPE]: string;
35
- };
36
- }
37
- export interface WorkRequestPayload {
38
- [WORK_REQUEST_ATT_NAME]: typeof HELP_CODE_ATT_NAME;
39
- }
40
- export interface PageVisitPartPayload {
41
- [PAGE_VISIT_PART_ATT_NAME]: PageVisitFrag;
42
- }
43
- export interface PageVisitFrag {
44
- [PV_EVENTS_ATT_NAME]: PVEventMessage[];
45
- [PV_PART_COUNTER_ATT_NAME]: number;
46
- [END_AT_ATT_NAME]?: string;
47
- [SEQ_NUM_ATT_NAME]?: number;
48
- }
49
- export interface HttpDataPayload {
50
- [PAGE_VISIT_HTTP_DATA_ATT_NAME]: HTTPDataBundle;
51
- }
52
- export interface VideoPartPayload {
53
- [PAGE_VISIT_VID_FRAG_ATT_NAME]: VideoFrag;
54
- }
55
- export interface VideoFrag {
56
- [VIDEO_FRAG_ATT_NAME]: string;
57
- [LENGTH_ATT_NAME]: number;
58
- [PV_SEQ_ATT_NAME]: number;
59
- [CSS_URLS_ATT_NAME]: string[];
60
- [END_AT_ATT_NAME]?: string;
61
- }
62
- export interface CompletePageVisit {
63
- [PAGE_VISIT_VID_FRAG_ATT_NAME]: VideoFrag[];
64
- [PAGE_VISIT_INFORMATION_ATT_NAME]: PageVisitInfo;
65
- [PAGE_VISIT_PART_ATT_NAME]: PageVisitFrag[];
66
- }
67
- export interface SlidingMessage<T extends OutboundMessageType = OutboundMessageType> {
68
- type: T;
69
- payload: OutboundMessageTypeMap[T];
70
- }
71
- export interface InboundMessageType {
72
- data?: typeof STOP_STORING_VID_SOCKET_MESSAGE | typeof STOP_STORING_PV_SOCKET_MESSAGE | typeof BLOCK_SOCKET_MESSAGE | typeof CLOSE_CONNECTION_FORCEFULLY | typeof OK_SOCKET_MESSAGE | string;
73
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * interface enforces constructor signature
3
- */
4
- export interface NavigationIntegration {
5
- register(navigation: any, onNavigation: (breadcrumbs: string[]) => void): void;
6
- }
@@ -1,8 +0,0 @@
1
- import { UserStepEventPayload } from './PageVisitEvents.types';
2
- /**
3
- * Helper class to improve typing in methods that use anonymous classes: Keyboard and Click monitors
4
- */
5
- export interface UserInputEventMonitor {
6
- isValid(event: Event): boolean;
7
- getPayload(event: Event): UserStepEventPayload;
8
- }
@@ -1,114 +0,0 @@
1
- import { CUSTOM_ERROR_EVENT_TYPE, ERROR_EVENT_ERROR_TYPE, ERROR_EVENT_UNHANDLED_REJECTION_TYPE, ERROR_LOG_EVENT_ERROR_TYPE, ERROR_SOURCE_ATT_NAME, FETCH_EXCEPTION_ERROR_TYPE, GLOBAL_REASSIGN_ERROR_TYPE, GQL_COLUMN_ATT_NAME, GQL_ERROR_ATT_NAME, GQL_ERROR_TYPE, GQL_EXTENSIONS_ATT_NAME, GQL_LINE_ATT_NAME, GQL_LOCATIONS_ATT_NAME, GQL_MESSAGE_ATT_NAME, GQL_PATH_ATT_NAME, GQL_SRC_ATT_NAME, HTTP_CODE_ATT_NAME, IMAGE_ERROR_TYPE, JS_ERROR_ATT_NAME, JS_STACK_CAUSE_ATT_NAME, JS_STACK_COL_ATT_NAME, JS_STACK_FILE_ATT_NAME, JS_STACK_FRAMES_ATT_NAME, JS_STACK_LINE_ATT_NAME, JS_STACK_MESSAGE_ATT_NAME, JS_STACK_METHOD_ATT_NAME, PAGE_CHECK_ERROR_ATT_NAME, PAGE_CHECK_ERROR_TYPE, PV_SEQ_ATT_NAME, RESOURCE_ERROR_ATT_NAME, RESPONSE_ERROR_TYPE, TYPE_ATT_NAME, URL_ATT_NAME, WRAPPED_EXCEPTION_ERROR_TYPE, XML_HTTP_REQUEST_ERROR_TYPE } from '../src/constants';
2
- import { WrappedXMLHttpRequest } from './WrappedObjects';
3
- import { UserStepEventPayload } from './PageVisitEvents.types';
4
- export interface Input {
5
- [XML_HTTP_REQUEST_ERROR_TYPE]: HttpInput;
6
- [ERROR_EVENT_ERROR_TYPE]: EventInput;
7
- [ERROR_EVENT_UNHANDLED_REJECTION_TYPE]: EventInput;
8
- [RESPONSE_ERROR_TYPE]: ResponseInput;
9
- [GQL_ERROR_TYPE]: GqlInput;
10
- [IMAGE_ERROR_TYPE]: ResourceInput;
11
- [PAGE_CHECK_ERROR_TYPE]: PageCheckInput;
12
- [WRAPPED_EXCEPTION_ERROR_TYPE]: EventInput;
13
- [FETCH_EXCEPTION_ERROR_TYPE]: EventInput;
14
- [ERROR_LOG_EVENT_ERROR_TYPE]: JErrorObject;
15
- [CUSTOM_ERROR_EVENT_TYPE]: EventInput;
16
- [GLOBAL_REASSIGN_ERROR_TYPE]: GlobalReassignInput;
17
- }
18
- export interface Output {
19
- [XML_HTTP_REQUEST_ERROR_TYPE]: Http;
20
- [ERROR_EVENT_ERROR_TYPE]: JSError;
21
- [ERROR_EVENT_UNHANDLED_REJECTION_TYPE]: JSError;
22
- [RESPONSE_ERROR_TYPE]: Http;
23
- [GQL_ERROR_TYPE]: Gql;
24
- [IMAGE_ERROR_TYPE]: Image;
25
- [PAGE_CHECK_ERROR_TYPE]: PageCheck;
26
- [WRAPPED_EXCEPTION_ERROR_TYPE]: JSError;
27
- [FETCH_EXCEPTION_ERROR_TYPE]: JSError;
28
- [ERROR_LOG_EVENT_ERROR_TYPE]: LogError;
29
- [CUSTOM_ERROR_EVENT_TYPE]: JSError;
30
- [GLOBAL_REASSIGN_ERROR_TYPE]: JSError;
31
- }
32
- export interface ResourceInput {
33
- tag_name: string;
34
- id?: string;
35
- src: string;
36
- detail: string;
37
- }
38
- export interface PageCheckInput {
39
- checkId: string;
40
- version?: string;
41
- triggerId?: string;
42
- assertionId?: string;
43
- log: string[];
44
- }
45
- export interface GqlInput {
46
- [GQL_SRC_ATT_NAME]?: string;
47
- [GQL_MESSAGE_ATT_NAME]: string;
48
- [GQL_LOCATIONS_ATT_NAME]?: {
49
- [GQL_LINE_ATT_NAME]: number;
50
- [GQL_COLUMN_ATT_NAME]: number;
51
- }[];
52
- [GQL_PATH_ATT_NAME]?: string[];
53
- [GQL_EXTENSIONS_ATT_NAME]?: string;
54
- }
55
- export interface HttpInputBase {
56
- status: XMLHttpRequest['status'] | Response['status'];
57
- }
58
- export interface ResponseInput extends Pick<Response, 'url'>, HttpInputBase {
59
- }
60
- export interface HttpInput extends Pick<WrappedXMLHttpRequest, 'responseURL'>, HttpInputBase {
61
- }
62
- export type JErrWithCause = Partial<{
63
- cause: UserStepEventPayload[];
64
- }>;
65
- export type JErrWithStack = Error & JErrWithCause;
66
- export interface JErrWithFilename extends JErrWithCause {
67
- fileName: string;
68
- lineNumber: string;
69
- columnNumber: number;
70
- }
71
- export type JErrorObject = JErrWithFilename | JErrWithStack;
72
- export interface EventInput {
73
- filename?: string;
74
- error: JErrorObject;
75
- }
76
- export interface GlobalReassignInput {
77
- error: Error;
78
- }
79
- interface Base {
80
- [TYPE_ATT_NAME]: string;
81
- [URL_ATT_NAME]: string;
82
- [ERROR_SOURCE_ATT_NAME]?: keyof Input;
83
- }
84
- export interface Http extends Base {
85
- [HTTP_CODE_ATT_NAME]: number;
86
- [PV_SEQ_ATT_NAME]?: number;
87
- }
88
- export interface JSError extends Base {
89
- [JS_ERROR_ATT_NAME]: JSErrorOutputMessage;
90
- }
91
- export interface Gql extends Base {
92
- [GQL_ERROR_ATT_NAME]: GqlInput;
93
- [PV_SEQ_ATT_NAME]?: number;
94
- }
95
- export interface LogError extends Base {
96
- [JS_ERROR_ATT_NAME]: JSErrorOutputMessage;
97
- }
98
- export interface PageCheck extends Base {
99
- [PAGE_CHECK_ERROR_ATT_NAME]: PageCheckInput;
100
- }
101
- export interface Image extends Base {
102
- [RESOURCE_ERROR_ATT_NAME]: ResourceInput;
103
- }
104
- export interface JSErrorOutputMessage {
105
- [JS_STACK_MESSAGE_ATT_NAME]: string;
106
- [JS_STACK_FRAMES_ATT_NAME]: {
107
- [JS_STACK_FILE_ATT_NAME]: string;
108
- [JS_STACK_LINE_ATT_NAME]: string;
109
- [JS_STACK_METHOD_ATT_NAME]: string;
110
- [JS_STACK_COL_ATT_NAME]?: number;
111
- }[];
112
- [JS_STACK_CAUSE_ATT_NAME]?: UserStepEventPayload[];
113
- }
114
- export {};
@@ -1,91 +0,0 @@
1
- import { CLICK_EVENT_TYPE, CSS_CLASS_ATT_NAME, ECOMMERCE_EVENT_TYPE, ERROR_EVENT_TYPE, HTMLID_ATT_NAME, HTTP_DATA_PAYLOAD_ATT_NAME, HTTP_DATA_REQ_HEADERS_ATT_NAME, HTTP_DATA_RESP_HEADERS_ATT_NAME, HTTP_DATA_RESP_PAYLOAD_ATT_NAME, HTTP_EVENT_TYPE, HTTP_METHOD_ATT_NAME, HTTP_RESP_CODE_ATT_NAME, HTTP_RESP_LENGTH_ATT_NAME, HTTP_RESP_TIME_ATT_NAME, KEYBOARD_EVENT_TYPE, LOCATION_EVENT_TYPE, NETWORK_STATS_EVENT_TYPE, OCCURRED_AT_ATT_NAME, PAGE_EVENT_TYPE, PAGE_GROUPS_ATT_NAME, PAGE_TITLE_ATT_NAME, PV_SEQ_ATT_NAME, REF_URL_ATT_NAME, SOURCE_ATT_NAME, TAGNAME_ATT_NAME, TEXT_ATT_NAME, TITLE_EVENT_TYPE, TYPE_ATT_NAME, URL_ATT_NAME, USERSTEP_EVENT_TYPE } from '../src/constants';
2
- import { Output } from './PageVisitErrors.types';
3
- export interface EventPayloadWithTimestamp<T extends EventType = EventType> {
4
- event: EventPayload<T>;
5
- occurredAt: string;
6
- }
7
- export interface PVEventMessage extends Partial<EventTypeMap> {
8
- [OCCURRED_AT_ATT_NAME]: EventPayloadWithTimestamp['occurredAt'];
9
- [TYPE_ATT_NAME]: EventType;
10
- }
11
- export interface EventTypeMap {
12
- [LOCATION_EVENT_TYPE]: LocationEventPayload;
13
- [TITLE_EVENT_TYPE]: TitleEventPayload;
14
- [PAGE_EVENT_TYPE]: PageEventPayload;
15
- [ERROR_EVENT_TYPE]: ValueOf<Output>;
16
- [HTTP_EVENT_TYPE]: PVEventHTTPPayload;
17
- [NETWORK_STATS_EVENT_TYPE]: NetworkStatsEventPayload;
18
- [USERSTEP_EVENT_TYPE]: UserStepEventPayload;
19
- [ECOMMERCE_EVENT_TYPE]: ECommerceEventPayload;
20
- }
21
- export type EventPayload<T extends EventType> = EventTypeMap[T];
22
- export type EventType = typeof LOCATION_EVENT_TYPE | typeof TITLE_EVENT_TYPE | typeof PAGE_EVENT_TYPE | typeof ERROR_EVENT_TYPE | typeof HTTP_EVENT_TYPE | typeof NETWORK_STATS_EVENT_TYPE | typeof USERSTEP_EVENT_TYPE | typeof ECOMMERCE_EVENT_TYPE;
23
- export interface SampleEventPayload {
24
- [name: string]: {
25
- values: [number, number][];
26
- };
27
- }
28
- export interface WebVitalEventPayload {
29
- name: 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';
30
- rating: 'good' | 'needs-improvement' | 'poor';
31
- attribution: string;
32
- value: string;
33
- }
34
- export interface ECommerceEventPayload {
35
- data: string;
36
- name: string;
37
- platform: string;
38
- }
39
- export interface NetworkStatsEventPayload {
40
- rtt: number;
41
- effective_type: string;
42
- downlink: number;
43
- save_data: boolean;
44
- }
45
- export interface PageEventPayload {
46
- type: string;
47
- data?: string;
48
- }
49
- export interface LocationEventPayload {
50
- [PAGE_TITLE_ATT_NAME]: string;
51
- [REF_URL_ATT_NAME]: string;
52
- [PAGE_GROUPS_ATT_NAME]: string[];
53
- [URL_ATT_NAME]: string;
54
- }
55
- export interface TitleEventPayload {
56
- [PAGE_TITLE_ATT_NAME]: string;
57
- [REF_URL_ATT_NAME]: string;
58
- [PAGE_GROUPS_ATT_NAME]: string[];
59
- [URL_ATT_NAME]: string;
60
- }
61
- export interface GtmPageTypeEventPayload {
62
- key: string;
63
- value: string;
64
- }
65
- export interface UserStepEventPayload {
66
- [SOURCE_ATT_NAME]: string;
67
- [TEXT_ATT_NAME]: string;
68
- [TAGNAME_ATT_NAME]: string;
69
- [HTMLID_ATT_NAME]: string;
70
- [CSS_CLASS_ATT_NAME]: string;
71
- }
72
- export interface ClickEventPayload extends UserStepEventPayload {
73
- [TYPE_ATT_NAME]: typeof CLICK_EVENT_TYPE;
74
- }
75
- export interface KeyboardEventPayload extends UserStepEventPayload {
76
- [TYPE_ATT_NAME]: typeof KEYBOARD_EVENT_TYPE;
77
- }
78
- export interface PVEventHTTPPayload {
79
- [HTTP_METHOD_ATT_NAME]: string;
80
- [HTTP_RESP_CODE_ATT_NAME]: number;
81
- [URL_ATT_NAME]: string;
82
- [HTTP_RESP_TIME_ATT_NAME]: number;
83
- [HTTP_RESP_LENGTH_ATT_NAME]?: number;
84
- [PV_SEQ_ATT_NAME]?: number;
85
- }
86
- export interface HTTPDataBundle {
87
- [HTTP_DATA_REQ_HEADERS_ATT_NAME]: Record<string, string>;
88
- [HTTP_DATA_PAYLOAD_ATT_NAME]: string;
89
- [HTTP_DATA_RESP_HEADERS_ATT_NAME]: Record<string, string>;
90
- [HTTP_DATA_RESP_PAYLOAD_ATT_NAME]: string;
91
- }
@@ -1,27 +0,0 @@
1
- import { BROWSER_ID_ATT_NAME, COLLECT_VER_ATT_NAME, CURRENT_METRICS_VERSION, CURRENT_NOIBUJS_VERSION, CUSTOM_ATTRIBUTE_FAIL_COUNT_ATT_NAME, CUSTOM_ATTRIBUTE_KEY_COUNT_ATT_NAME, CUSTOM_ATTRIBUTE_TOTAL_COUNT_ATT_NAME, DID_CUT_PV_ATT_NAME, DID_CUT_VID_ATT_NAME, DID_START_VID_ATT_NAME, ERR_COUNT_EXPECTED_ATT_NAME, OTHER_METRICS_ATT_NAME, EXP_VIDEO_LENGTH_ATT_NAME, HTTP_COUNT_EXPECTED_ATT_NAME, ON_URL_ATT_NAME, PV_CLICKS_ATT_NAME, PV_EXP_HTTP_DATA_SEQ_ATT_NAME, PV_EXP_PART_COUNTER_ATT_NAME, PV_EXP_VF_SEQ_ATT_NAME, PV_HTTP_PAYLOADS_COLLECTED_ATT_NAME, PV_HTTP_PAYLOADS_DROPPED_OVERSIZE_ATT_NAME, PV_HTTP_PAYLOADS_DROPPED_TYPE_ATT_NAME, PV_HTTP_REQUESTS_DROPPED_OVER_LIMIT, PV_ID_ATT_NAME, VER_ATT_NAME, VIDEO_CLICKS_ATT_NAME, OTHER_METRICS_KEYS } from '../src/constants';
2
- export interface PageVisitMetrics {
3
- [BROWSER_ID_ATT_NAME]: null | string;
4
- [PV_ID_ATT_NAME]: string;
5
- [COLLECT_VER_ATT_NAME]: typeof CURRENT_NOIBUJS_VERSION;
6
- [VER_ATT_NAME]: typeof CURRENT_METRICS_VERSION;
7
- [EXP_VIDEO_LENGTH_ATT_NAME]: number;
8
- [PV_EXP_VF_SEQ_ATT_NAME]: number;
9
- [PV_EXP_PART_COUNTER_ATT_NAME]: number;
10
- [PV_EXP_HTTP_DATA_SEQ_ATT_NAME]: number;
11
- [PV_HTTP_PAYLOADS_COLLECTED_ATT_NAME]: number;
12
- [PV_HTTP_PAYLOADS_DROPPED_OVERSIZE_ATT_NAME]: number;
13
- [PV_HTTP_PAYLOADS_DROPPED_TYPE_ATT_NAME]: number;
14
- [PV_HTTP_REQUESTS_DROPPED_OVER_LIMIT]: number;
15
- [VIDEO_CLICKS_ATT_NAME]: number;
16
- [PV_CLICKS_ATT_NAME]: number;
17
- [DID_CUT_PV_ATT_NAME]: boolean;
18
- [DID_CUT_VID_ATT_NAME]: boolean;
19
- [DID_START_VID_ATT_NAME]: boolean;
20
- [HTTP_COUNT_EXPECTED_ATT_NAME]: number;
21
- [ERR_COUNT_EXPECTED_ATT_NAME]: number;
22
- [ON_URL_ATT_NAME]: string;
23
- [CUSTOM_ATTRIBUTE_TOTAL_COUNT_ATT_NAME]: number;
24
- [CUSTOM_ATTRIBUTE_FAIL_COUNT_ATT_NAME]: number;
25
- [CUSTOM_ATTRIBUTE_KEY_COUNT_ATT_NAME]: number;
26
- [OTHER_METRICS_ATT_NAME]?: Partial<Record<ValueOf<typeof OTHER_METRICS_KEYS>, number>>;
27
- }
@@ -1,14 +0,0 @@
1
- export type StorageValue = unknown;
2
- export interface IStorage {
3
- isAvailable(): Promise<boolean>;
4
- load(key: string): Promise<string | null>;
5
- save(key: string, value: StorageValue): Promise<void>;
6
- remove(key: string): Promise<void>;
7
- calculateUsedSize(): Promise<number>;
8
- getDiagnoseInfo(): Promise<string>;
9
- }
10
- export interface Provider {
11
- getItem(key: string): Promise<string | null>;
12
- setItem(key: string, value: string): Promise<void>;
13
- removeItem(key: string): Promise<void>;
14
- }
@@ -1,11 +0,0 @@
1
- import { PageVisitFrag, PageVisitInfo } from './Metroplex.types';
2
- export interface PageVisitPartsBase {
3
- pageVisitInfo: PageVisitInfo;
4
- pageVisitFrags: PageVisitFrag[];
5
- }
6
- export interface ExportPVParts extends PageVisitPartsBase {
7
- timestamp?: Date;
8
- }
9
- export interface ImportPVParts extends PageVisitPartsBase {
10
- timestamp?: string;
11
- }
@@ -1,6 +0,0 @@
1
- export interface WrappedXMLHttpRequest extends XMLHttpRequest, Partial<{
2
- noibuRequestHeaders: Map<string, string>;
3
- noibuHttpMethod: string;
4
- noibuHttpUrl: string;
5
- }> {
6
- }