noibu-react-native 0.2.3 → 0.2.4
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.
- package/dist/api/helpCode.js +61 -87
- package/dist/api/metroplexSocket.js +72 -65
- package/dist/api/storedPageVisit.js +150 -208
- package/dist/constants.js +3 -7
- package/dist/entry/init.js +11 -11
- package/dist/monitors/{appNavigationMonitor.js → AppNavigationMonitor.js} +10 -19
- package/dist/monitors/ClickMonitor.js +198 -0
- package/dist/monitors/ErrorMonitor.js +206 -0
- package/dist/monitors/KeyboardInputMonitor.js +60 -0
- package/dist/monitors/PageMonitor.js +98 -0
- package/dist/monitors/RequestMonitor.js +390 -0
- package/dist/monitors/http-tools/GqlErrorValidator.js +259 -0
- package/dist/monitors/{httpDataBundler.js → http-tools/HTTPDataBundler.js} +23 -102
- package/dist/pageVisit/{eventDebouncer.js → EventDebouncer.js} +36 -47
- package/dist/pageVisit/pageVisitEventError.js +3 -3
- package/dist/pageVisit/pageVisitEventHTTP.js +5 -4
- package/dist/sessionRecorder/sessionRecorder.js +1 -1
- package/dist/src/api/clientConfig.d.ts +1 -1
- package/dist/src/api/helpCode.d.ts +10 -16
- package/dist/src/api/metroplexSocket.d.ts +52 -71
- package/dist/src/api/storedPageVisit.d.ts +12 -21
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/monitors/AppNavigationMonitor.d.ts +18 -0
- package/dist/src/monitors/ClickMonitor.d.ts +31 -0
- package/dist/src/monitors/ErrorMonitor.d.ts +63 -0
- package/dist/src/monitors/{keyboardInputMonitor.d.ts → KeyboardInputMonitor.d.ts} +7 -4
- package/dist/src/monitors/{pageMonitor.d.ts → PageMonitor.d.ts} +6 -8
- package/dist/src/monitors/RequestMonitor.d.ts +94 -0
- package/dist/src/monitors/http-tools/GqlErrorValidator.d.ts +59 -0
- package/dist/src/monitors/{httpDataBundler.d.ts → http-tools/HTTPDataBundler.d.ts} +13 -28
- package/dist/src/monitors/integrations/react-native-navigation-integration.d.ts +3 -2
- package/dist/src/pageVisit/{eventDebouncer.d.ts → EventDebouncer.d.ts} +3 -10
- package/dist/src/pageVisit/pageVisit.d.ts +1 -1
- package/dist/src/pageVisit/pageVisitEventHTTP.d.ts +3 -3
- package/dist/src/storage/rnStorageProvider.d.ts +1 -1
- package/dist/src/storage/storage.d.ts +1 -1
- package/dist/src/storage/storageProvider.d.ts +2 -2
- package/dist/src/utils/function.d.ts +4 -5
- package/dist/src/utils/object.d.ts +3 -5
- package/dist/src/utils/polyfills.d.ts +1 -4
- package/dist/types/Metroplex.types.d.ts +73 -0
- package/dist/types/Monitor.d.ts +11 -0
- package/dist/types/Monitor.js +19 -0
- package/dist/types/PageVisit.types.d.ts +2 -145
- package/dist/types/PageVisitErrors.types.d.ts +114 -0
- package/dist/types/PageVisitEvents.types.d.ts +91 -0
- package/dist/types/Storage.d.ts +1 -1
- package/dist/types/StoredPageVisit.types.d.ts +4 -45
- package/dist/utils/function.js +0 -1
- package/dist/utils/object.js +1 -0
- package/package.json +4 -3
- package/dist/monitors/clickMonitor.js +0 -258
- package/dist/monitors/errorMonitor.js +0 -202
- package/dist/monitors/gqlErrorValidator.js +0 -306
- package/dist/monitors/inputMonitor.js +0 -138
- package/dist/monitors/keyboardInputMonitor.js +0 -66
- package/dist/monitors/pageMonitor.js +0 -122
- package/dist/monitors/requestMonitor.js +0 -386
- package/dist/src/monitors/appNavigationMonitor.d.ts +0 -22
- package/dist/src/monitors/clickMonitor.d.ts +0 -44
- package/dist/src/monitors/errorMonitor.d.ts +0 -28
- package/dist/src/monitors/gqlErrorValidator.d.ts +0 -82
- package/dist/src/monitors/inputMonitor.d.ts +0 -34
- package/dist/src/monitors/requestMonitor.d.ts +0 -10
- package/dist/types/RRWeb.d.ts +0 -48
- package/dist/types/ReactNative.d.ts +0 -4
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Monitor {
|
|
2
|
+
monitor(): void;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Singleton pattern with our flavor
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class Singleton {
|
|
8
|
+
private static instances;
|
|
9
|
+
/** returns singleton instance */
|
|
10
|
+
static getInstance<T extends Singleton>(this: new (...args: unknown[]) => T, ...args: unknown[]): T;
|
|
11
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { noibuLog } from '../utils/log.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Singleton pattern with our flavor
|
|
5
|
+
*/
|
|
6
|
+
class Singleton {
|
|
7
|
+
/** returns singleton instance */
|
|
8
|
+
static getInstance(...args) {
|
|
9
|
+
// Use 'this' to reference the current class constructor
|
|
10
|
+
if (!Singleton.instances.has(this)) {
|
|
11
|
+
noibuLog('Creating new Singleton instance:', this.name);
|
|
12
|
+
Singleton.instances.set(this, new this(...args));
|
|
13
|
+
}
|
|
14
|
+
return Singleton.instances.get(this);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
Singleton.instances = new Map();
|
|
18
|
+
|
|
19
|
+
export { Singleton };
|
|
@@ -1,151 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type PVEventHTTP = {
|
|
3
|
-
[HTTP_METHOD_ATT_NAME]: string;
|
|
4
|
-
[HTTP_RESP_CODE_ATT_NAME]: number;
|
|
5
|
-
[URL_ATT_NAME]: string;
|
|
6
|
-
[HTTP_RESP_TIME_ATT_NAME]: number;
|
|
7
|
-
[HTTP_RESP_LENGTH_ATT_NAME]?: number;
|
|
8
|
-
[PV_SEQ_ATT_NAME]?: number;
|
|
9
|
-
};
|
|
10
|
-
export type HTTPDataBundle = {
|
|
11
|
-
[HTTP_DATA_REQ_HEADERS_ATT_NAME]: Record<string, string>;
|
|
12
|
-
[HTTP_DATA_PAYLOAD_ATT_NAME]: string;
|
|
13
|
-
[HTTP_DATA_RESP_HEADERS_ATT_NAME]: Record<string, string>;
|
|
14
|
-
[HTTP_DATA_RESP_PAYLOAD_ATT_NAME]: string;
|
|
15
|
-
};
|
|
16
|
-
export interface UserInputMonitorPayload {
|
|
17
|
-
[SOURCE_ATT_NAME]: string;
|
|
18
|
-
[TEXT_ATT_NAME]: string;
|
|
19
|
-
[TAGNAME_ATT_NAME]: string;
|
|
20
|
-
[HTMLID_ATT_NAME]: string;
|
|
21
|
-
[TYPE_ATT_NAME]: string;
|
|
22
|
-
[CSS_CLASS_ATT_NAME]: string;
|
|
23
|
-
}
|
|
24
|
-
export interface ClickMonitorPayload extends UserInputMonitorPayload {
|
|
25
|
-
[SOURCE_ATT_NAME]: string;
|
|
26
|
-
[TEXT_ATT_NAME]: string;
|
|
27
|
-
[TAGNAME_ATT_NAME]: string;
|
|
28
|
-
[HTMLID_ATT_NAME]: string;
|
|
29
|
-
[TYPE_ATT_NAME]: typeof CLICK_EVENT_TYPE;
|
|
30
|
-
[CSS_CLASS_ATT_NAME]: string;
|
|
31
|
-
}
|
|
32
|
-
export interface KeyboardMonitorPayload extends UserInputMonitorPayload {
|
|
33
|
-
[SOURCE_ATT_NAME]: string;
|
|
34
|
-
[TEXT_ATT_NAME]: string;
|
|
35
|
-
[TAGNAME_ATT_NAME]: string;
|
|
36
|
-
[HTMLID_ATT_NAME]: string;
|
|
37
|
-
[TYPE_ATT_NAME]: typeof KEYBOARD_EVENT_TYPE;
|
|
38
|
-
[CSS_CLASS_ATT_NAME]: string;
|
|
39
|
-
}
|
|
40
|
-
export type JSErrorOutputMessage = {
|
|
41
|
-
[JS_STACK_MESSAGE_ATT_NAME]: string;
|
|
42
|
-
[JS_STACK_FRAMES_ATT_NAME]: {
|
|
43
|
-
[JS_STACK_FILE_ATT_NAME]: string;
|
|
44
|
-
[JS_STACK_LINE_ATT_NAME]: string;
|
|
45
|
-
[JS_STACK_METHOD_ATT_NAME]: string;
|
|
46
|
-
[JS_STACK_COL_ATT_NAME]?: number;
|
|
47
|
-
}[];
|
|
48
|
-
[JS_STACK_CAUSE_ATT_NAME]?: UserInputMonitorPayload[];
|
|
49
|
-
};
|
|
1
|
+
import { UserStepEventPayload } from './PageVisitEvents.types';
|
|
50
2
|
/**
|
|
51
3
|
* Helper class to improve typing in methods that use anonymous classes: Keyboard and Click monitors
|
|
52
4
|
*/
|
|
53
5
|
export interface UserInputEventMonitor {
|
|
54
6
|
isValid(event: Event): boolean;
|
|
55
|
-
getPayload(event: Event):
|
|
56
|
-
}
|
|
57
|
-
export declare namespace PVError {
|
|
58
|
-
export interface Input {
|
|
59
|
-
[ERROR_EVENT_ERROR_TYPE]: EventInput;
|
|
60
|
-
[ERROR_EVENT_UNHANDLED_REJECTION_TYPE]: EventInput;
|
|
61
|
-
[RESPONSE_ERROR_TYPE]: ResponseInput;
|
|
62
|
-
[GQL_ERROR_TYPE]: GqlInput;
|
|
63
|
-
[IMAGE_ERROR_TYPE]: ResourceInput;
|
|
64
|
-
[PAGE_CHECK_ERROR_TYPE]: PageCheckInput;
|
|
65
|
-
[WRAPPED_EXCEPTION_ERROR_TYPE]: EventInput;
|
|
66
|
-
[FETCH_EXCEPTION_ERROR_TYPE]: EventInput;
|
|
67
|
-
[ERROR_LOG_EVENT_ERROR_TYPE]: JErrorObject;
|
|
68
|
-
[CUSTOM_ERROR_EVENT_TYPE]: EventInput;
|
|
69
|
-
[GLOBAL_REASSIGN_ERROR_TYPE]: GlobalReassignInput;
|
|
70
|
-
}
|
|
71
|
-
export interface Output {
|
|
72
|
-
[ERROR_EVENT_ERROR_TYPE]: Event;
|
|
73
|
-
[ERROR_EVENT_UNHANDLED_REJECTION_TYPE]: Event;
|
|
74
|
-
[RESPONSE_ERROR_TYPE]: Http;
|
|
75
|
-
[GQL_ERROR_TYPE]: Gql;
|
|
76
|
-
[IMAGE_ERROR_TYPE]: Image;
|
|
77
|
-
[PAGE_CHECK_ERROR_TYPE]: PageCheck;
|
|
78
|
-
[WRAPPED_EXCEPTION_ERROR_TYPE]: Event;
|
|
79
|
-
[FETCH_EXCEPTION_ERROR_TYPE]: Event;
|
|
80
|
-
[ERROR_LOG_EVENT_ERROR_TYPE]: Log;
|
|
81
|
-
[CUSTOM_ERROR_EVENT_TYPE]: Event;
|
|
82
|
-
[GLOBAL_REASSIGN_ERROR_TYPE]: Event;
|
|
83
|
-
}
|
|
84
|
-
export type ResourceInput = {
|
|
85
|
-
tag_name: string;
|
|
86
|
-
id?: string;
|
|
87
|
-
src: string;
|
|
88
|
-
detail: string;
|
|
89
|
-
};
|
|
90
|
-
export type PageCheckInput = {
|
|
91
|
-
checkId: string;
|
|
92
|
-
version?: string;
|
|
93
|
-
triggerId?: string;
|
|
94
|
-
assertionId?: string;
|
|
95
|
-
log: string[];
|
|
96
|
-
};
|
|
97
|
-
export type GqlInput = {
|
|
98
|
-
[GQL_SRC_ATT_NAME]?: string;
|
|
99
|
-
[GQL_MESSAGE_ATT_NAME]: string;
|
|
100
|
-
[GQL_LOCATIONS_ATT_NAME]?: {
|
|
101
|
-
[GQL_LINE_ATT_NAME]: number;
|
|
102
|
-
[GQL_COLUMN_ATT_NAME]: number;
|
|
103
|
-
}[];
|
|
104
|
-
[GQL_PATH_ATT_NAME]?: string[];
|
|
105
|
-
[GQL_EXTENSIONS_ATT_NAME]?: string;
|
|
106
|
-
};
|
|
107
|
-
export type ResponseInput = Pick<Response, 'status' | 'url'>;
|
|
108
|
-
export type JErrWithCause = Partial<{
|
|
109
|
-
cause: UserInputMonitorPayload[];
|
|
110
|
-
}>;
|
|
111
|
-
export type JErrWithStack = Error & JErrWithCause;
|
|
112
|
-
export type JErrWithFilename = {
|
|
113
|
-
fileName: string;
|
|
114
|
-
lineNumber: string;
|
|
115
|
-
columnNumber: number;
|
|
116
|
-
} & JErrWithCause;
|
|
117
|
-
export type JErrorObject = JErrWithFilename | JErrWithStack;
|
|
118
|
-
export type EventInput = {
|
|
119
|
-
filename?: string;
|
|
120
|
-
error: JErrorObject;
|
|
121
|
-
};
|
|
122
|
-
export type GlobalReassignInput = {
|
|
123
|
-
error: Error;
|
|
124
|
-
};
|
|
125
|
-
interface Base {
|
|
126
|
-
[TYPE_ATT_NAME]: string;
|
|
127
|
-
[URL_ATT_NAME]: string;
|
|
128
|
-
[ERROR_SOURCE_ATT_NAME]?: keyof Input;
|
|
129
|
-
}
|
|
130
|
-
export interface Http extends Base {
|
|
131
|
-
[HTTP_CODE_ATT_NAME]: number;
|
|
132
|
-
[PV_SEQ_ATT_NAME]?: number;
|
|
133
|
-
}
|
|
134
|
-
export interface Event extends Base {
|
|
135
|
-
[JS_ERROR_ATT_NAME]: JSErrorOutputMessage;
|
|
136
|
-
}
|
|
137
|
-
export interface Gql extends Base {
|
|
138
|
-
[GQL_ERROR_ATT_NAME]: GqlInput;
|
|
139
|
-
[PV_SEQ_ATT_NAME]?: number;
|
|
140
|
-
}
|
|
141
|
-
export interface Log extends Base {
|
|
142
|
-
[JS_ERROR_ATT_NAME]: JSErrorOutputMessage;
|
|
143
|
-
}
|
|
144
|
-
export interface PageCheck extends Base {
|
|
145
|
-
[PAGE_CHECK_ERROR_ATT_NAME]: PageCheckInput;
|
|
146
|
-
}
|
|
147
|
-
export interface Image extends Base {
|
|
148
|
-
[RESOURCE_ERROR_ATT_NAME]: ResourceInput;
|
|
149
|
-
}
|
|
150
|
-
export {};
|
|
7
|
+
getPayload(event: Event): UserStepEventPayload;
|
|
151
8
|
}
|
|
@@ -0,0 +1,114 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
}
|
package/dist/types/Storage.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type StorageValue = unknown;
|
|
2
2
|
export interface IStorage {
|
|
3
3
|
isAvailable(): Promise<boolean>;
|
|
4
|
-
load
|
|
4
|
+
load(key: string): Promise<string | null>;
|
|
5
5
|
save(key: string, value: StorageValue): Promise<void>;
|
|
6
6
|
remove(key: string): Promise<void>;
|
|
7
7
|
calculateUsedSize(): Promise<number>;
|
|
@@ -1,52 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface PageVisitPart {
|
|
3
|
-
[PV_PART_COUNTER_ATT_NAME]: number;
|
|
4
|
-
[END_AT_ATT_NAME]: number;
|
|
5
|
-
[PV_EXP_VF_SEQ_ATT_NAME]?: number;
|
|
6
|
-
[PV_EXP_PART_COUNTER_ATT_NAME]?: number;
|
|
7
|
-
[PV_EVENTS_ATT_NAME]: Array<any>;
|
|
8
|
-
[SEQ_NUM_ATT_NAME]: number;
|
|
9
|
-
}
|
|
10
|
-
export interface PageVisitInfo {
|
|
11
|
-
[BROWSER_ID_ATT_NAME]: string;
|
|
12
|
-
[PV_ID_ATT_NAME]: string;
|
|
13
|
-
[VIDEO_METROPLEX_TYPE]: number;
|
|
14
|
-
[SCRIPT_ID_ATT_NAME]: string;
|
|
15
|
-
[SCRIPT_INSTANCE_ID_ATT_NAME]: string;
|
|
16
|
-
[METROPLEX_SOCKET_INSTANCE_ID_ATT_NAME]: string;
|
|
17
|
-
[SOCKET_INSTANCE_ID_ATT_NAME]: string;
|
|
18
|
-
[PV_SEQ_ATT_NAME]: number;
|
|
19
|
-
[IS_LAST_ATT_NAME]: boolean;
|
|
20
|
-
[CONN_COUNT_ATT_NAME]: number;
|
|
21
|
-
[ON_URL_ATT_NAME]: string;
|
|
22
|
-
[PAGE_GROUPS_ATT_NAME]: Array<string>;
|
|
23
|
-
[PAGE_TITLE_ATT_NAME]: string;
|
|
24
|
-
[REF_URL_ATT_NAME]: string;
|
|
25
|
-
[STARTED_AT_ATT_NAME]: string;
|
|
26
|
-
[COLLECT_VER_ATT_NAME]: number;
|
|
27
|
-
[LANG_ATT_NAME]?: string;
|
|
28
|
-
[VIDEO_RECORDER_ATT_NAME]: string;
|
|
29
|
-
}
|
|
1
|
+
import { PageVisitFrag, PageVisitInfo } from './Metroplex.types';
|
|
30
2
|
export interface PageVisitPartsBase {
|
|
31
3
|
pageVisitInfo: PageVisitInfo;
|
|
32
|
-
pageVisitFrags:
|
|
4
|
+
pageVisitFrags: PageVisitFrag[];
|
|
33
5
|
}
|
|
34
|
-
export interface
|
|
6
|
+
export interface ExportPVParts extends PageVisitPartsBase {
|
|
35
7
|
timestamp?: Date;
|
|
36
8
|
}
|
|
37
|
-
export interface
|
|
9
|
+
export interface ImportPVParts extends PageVisitPartsBase {
|
|
38
10
|
timestamp?: string;
|
|
39
11
|
}
|
|
40
|
-
export interface VideoFrag {
|
|
41
|
-
[VIDEO_FRAG_ATT_NAME]: string;
|
|
42
|
-
[PV_SEQ_ATT_NAME]: number;
|
|
43
|
-
[END_AT_ATT_NAME]: number;
|
|
44
|
-
[LENGTH_ATT_NAME]: number;
|
|
45
|
-
[SEQ_NUM_ATT_NAME]: number;
|
|
46
|
-
[CSS_URLS_ATT_NAME]: string[];
|
|
47
|
-
}
|
|
48
|
-
export interface CompletePageVisitParts {
|
|
49
|
-
[PAGE_VISIT_VID_FRAG_ATT_NAME]: Array<VideoFrag>;
|
|
50
|
-
[PAGE_VISIT_INFORMATION_ATT_NAME]: PageVisitInfo;
|
|
51
|
-
[PAGE_VISIT_PART_ATT_NAME]: Array<PageVisitPart>;
|
|
52
|
-
}
|
package/dist/utils/function.js
CHANGED
|
@@ -28,7 +28,6 @@ function getMaxSubstringAllowed(stringToVerify, length = MAX_STRING_LENGTH) {
|
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Processes the raw stack frames and creates a readable stack in a safe manner
|
|
31
|
-
* @param {StackFrame[]} rawFrames
|
|
32
31
|
*/
|
|
33
32
|
function processFrames(rawFrames) {
|
|
34
33
|
return rawFrames.map(frame => {
|
package/dist/utils/object.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "noibu-react-native",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"targetNjsVersion": "1.0.104",
|
|
5
5
|
"description": "React-Native SDK for NoibuJS to collect errors in React-Native applications",
|
|
6
6
|
"main": "dist/entry/index.js",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"build:dev": "node ./build.watch.js",
|
|
19
19
|
"prepare": "npm run clean; npm run build;",
|
|
20
20
|
"test": "jest --coverage --passWithNoTests",
|
|
21
|
+
"tsc": "tsc",
|
|
21
22
|
"lint": "eslint src -c .eslintrc.json --ext js,ts,jsx,tsx",
|
|
22
23
|
"lint_output": "eslint src -c .eslintrc.json --ext js,ts,jsx,tsx -f json > eslint_report.json",
|
|
23
24
|
"codecov": "codecov"
|
|
@@ -71,8 +72,8 @@
|
|
|
71
72
|
"jest": "^29.7.0",
|
|
72
73
|
"prettier": "^2.8.8",
|
|
73
74
|
"react": "16.13.1",
|
|
74
|
-
"react-native": "
|
|
75
|
-
"react-native-navigation": "
|
|
75
|
+
"react-native": "0.63.0",
|
|
76
|
+
"react-native-navigation": "^7.40.3",
|
|
76
77
|
"react-native-url-polyfill": "1.3.0",
|
|
77
78
|
"react-native-uuid": "2.0.1",
|
|
78
79
|
"rimraf": "^5.0.1",
|