react-native-clarity 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +127 -127
- package/android/build.gradle +81 -81
- package/android/gradle.properties +7 -7
- package/android/src/main/AndroidManifest.xml +4 -4
- package/android/src/main/java/com/microsoft/clarity/reactnative/ClarityModule.kt +122 -122
- package/android/src/main/java/com/microsoft/clarity/reactnative/ClarityPackage.kt +17 -17
- package/ios/Clarity.h +12 -12
- package/ios/Clarity.m +131 -131
- package/ios/Clarity.xcodeproj/project.pbxproj +280 -280
- package/lib/commonjs/index.js +74 -66
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +74 -66
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +105 -105
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +165 -165
- package/react-native-clarity.podspec +36 -36
- package/src/index.tsx +257 -248
package/lib/commonjs/index.js
CHANGED
|
@@ -21,28 +21,29 @@ const LINKING_ERROR = `The package 'react-native-clarity' doesn't seem to be lin
|
|
|
21
21
|
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
22
22
|
const Clarity = _reactNative.NativeModules.Clarity;
|
|
23
23
|
const SupportedPlatforms = ['android'];
|
|
24
|
+
let SupportWarningWasShown = false;
|
|
24
25
|
|
|
25
|
-
/**
|
|
26
|
-
* The configuration that will be used to customize the Clarity behaviour.
|
|
27
|
-
*
|
|
28
|
-
* @param userId [OPTIONAL default = null] A custom identifier for the current user. If passed as null, the user id
|
|
29
|
-
* will be auto generated. The user id in general is sticky across sessions.
|
|
30
|
-
* The provided user id must follow these conditions:
|
|
31
|
-
* 1. Cannot be an empty string.
|
|
32
|
-
* 2. Should be base36 and smaller than "1Z141Z4".
|
|
33
|
-
* @param logLevel [OPTIONAL default = LogLevel.None] The level of logging to show in the device logcat stream.
|
|
34
|
-
* @param allowMeteredNetworkUsage [OPTIONAL default = false] Allows uploading session data to the servers on device metered network.
|
|
35
|
-
* @param enableWebViewCapture [OPTIONAL default = true] Allows Clarity to capture the web views DOM content.
|
|
36
|
-
* @param allowedDomains [OPTIONAL default = ["*"]] The whitelisted domains to allow Clarity to capture their DOM content.
|
|
37
|
-
* If it contains "*" as an element, all domains will be captured.
|
|
38
|
-
* Note: iOS currently does not support allowedDomains feature.
|
|
39
|
-
* @param disableOnLowEndDevices [OPTIONAL default = false] Disable Clarity on low-end devices.
|
|
40
|
-
* @param maximumDailyNetworkUsageInMB [OPTIONAL default = null] Maximum daily network usage for Clarity (null = No limit). When the limit is reached, Clarity will turn on lean mode.
|
|
41
|
-
* Note: iOS currently does not support limiting network usage.
|
|
42
|
-
* @param enableIOS_experimental [OPTIONAL default = false] Experimental flag to enable Clarity on iOS platform.
|
|
26
|
+
/**
|
|
27
|
+
* The configuration that will be used to customize the Clarity behaviour.
|
|
28
|
+
*
|
|
29
|
+
* @param userId [OPTIONAL default = null] A custom identifier for the current user. If passed as null, the user id
|
|
30
|
+
* will be auto generated. The user id in general is sticky across sessions.
|
|
31
|
+
* The provided user id must follow these conditions:
|
|
32
|
+
* 1. Cannot be an empty string.
|
|
33
|
+
* 2. Should be base36 and smaller than "1Z141Z4".
|
|
34
|
+
* @param logLevel [OPTIONAL default = LogLevel.None] The level of logging to show in the device logcat stream.
|
|
35
|
+
* @param allowMeteredNetworkUsage [OPTIONAL default = false] Allows uploading session data to the servers on device metered network.
|
|
36
|
+
* @param enableWebViewCapture [OPTIONAL default = true] Allows Clarity to capture the web views DOM content.
|
|
37
|
+
* @param allowedDomains [OPTIONAL default = ["*"]] The whitelisted domains to allow Clarity to capture their DOM content.
|
|
38
|
+
* If it contains "*" as an element, all domains will be captured.
|
|
39
|
+
* Note: iOS currently does not support allowedDomains feature.
|
|
40
|
+
* @param disableOnLowEndDevices [OPTIONAL default = false] Disable Clarity on low-end devices.
|
|
41
|
+
* @param maximumDailyNetworkUsageInMB [OPTIONAL default = null] Maximum daily network usage for Clarity (null = No limit). When the limit is reached, Clarity will turn on lean mode.
|
|
42
|
+
* Note: iOS currently does not support limiting network usage.
|
|
43
|
+
* @param enableIOS_experimental [OPTIONAL default = false] Experimental flag to enable Clarity on iOS platform.
|
|
43
44
|
*/
|
|
44
|
-
/**
|
|
45
|
-
* The level of logging to show in the device logcat stream.
|
|
45
|
+
/**
|
|
46
|
+
* The level of logging to show in the device logcat stream.
|
|
46
47
|
*/
|
|
47
48
|
let LogLevel = exports.LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
48
49
|
LogLevel["Verbose"] = "Verbose";
|
|
@@ -55,7 +56,14 @@ let LogLevel = exports.LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
|
55
56
|
}({});
|
|
56
57
|
function isClarityUnavailable() {
|
|
57
58
|
if (!SupportedPlatforms.includes(_reactNative.Platform.OS)) {
|
|
58
|
-
|
|
59
|
+
let warningMessage = 'Clarity supports ' + SupportedPlatforms.join(', ') + ' only for now.';
|
|
60
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
61
|
+
warningMessage = `${warningMessage} To enable experimental iOS support, set the 'enableIOS_experimental' config value to true.`;
|
|
62
|
+
}
|
|
63
|
+
if (!SupportWarningWasShown) {
|
|
64
|
+
console.warn(warningMessage);
|
|
65
|
+
SupportWarningWasShown = true;
|
|
66
|
+
}
|
|
59
67
|
return true;
|
|
60
68
|
}
|
|
61
69
|
if (Clarity === null) {
|
|
@@ -65,10 +73,10 @@ function isClarityUnavailable() {
|
|
|
65
73
|
return false;
|
|
66
74
|
}
|
|
67
75
|
|
|
68
|
-
/**
|
|
69
|
-
* Initializes the Clarity SDK if the API level is supported.
|
|
70
|
-
* @param projectId [REQUIRED] The Clarity project id to send data to.
|
|
71
|
-
* @param config [OPTIONAL] The clarity config, if not provided default values are used.
|
|
76
|
+
/**
|
|
77
|
+
* Initializes the Clarity SDK if the API level is supported.
|
|
78
|
+
* @param projectId [REQUIRED] The Clarity project id to send data to.
|
|
79
|
+
* @param config [OPTIONAL] The clarity config, if not provided default values are used.
|
|
72
80
|
*/
|
|
73
81
|
function initialize(projectId, config) {
|
|
74
82
|
if (typeof projectId !== 'string' || !(typeof config === 'object' || typeof config === 'undefined')) {
|
|
@@ -99,8 +107,8 @@ function initialize(projectId, config) {
|
|
|
99
107
|
Clarity.initialize(projectId, userId, logLevel, allowMeteredNetworkUsage, enableWebViewCapture, allowedDomains, disableOnLowEndDevices, enableDailyNetworkUsageLimit, refinedMaximumDailyNetworkUsageInMB);
|
|
100
108
|
}
|
|
101
109
|
|
|
102
|
-
/**
|
|
103
|
-
* Pauses the Clarity capturing processes until the next resume() is called.
|
|
110
|
+
/**
|
|
111
|
+
* Pauses the Clarity capturing processes until the next resume() is called.
|
|
104
112
|
*/
|
|
105
113
|
function pause() {
|
|
106
114
|
if (isClarityUnavailable()) {
|
|
@@ -109,9 +117,9 @@ function pause() {
|
|
|
109
117
|
return Clarity.pause();
|
|
110
118
|
}
|
|
111
119
|
|
|
112
|
-
/**
|
|
113
|
-
* Resumes the Clarity capturing processes if they are not already resumed.
|
|
114
|
-
* Note: Clarity starts capturing data right on initialization.
|
|
120
|
+
/**
|
|
121
|
+
* Resumes the Clarity capturing processes if they are not already resumed.
|
|
122
|
+
* Note: Clarity starts capturing data right on initialization.
|
|
115
123
|
*/
|
|
116
124
|
function resume() {
|
|
117
125
|
if (isClarityUnavailable()) {
|
|
@@ -120,8 +128,8 @@ function resume() {
|
|
|
120
128
|
return Clarity.resume();
|
|
121
129
|
}
|
|
122
130
|
|
|
123
|
-
/**
|
|
124
|
-
* Returns true if Clarity has been paused by the user.
|
|
131
|
+
/**
|
|
132
|
+
* Returns true if Clarity has been paused by the user.
|
|
125
133
|
*/
|
|
126
134
|
function isPaused() {
|
|
127
135
|
if (isClarityUnavailable()) {
|
|
@@ -130,15 +138,15 @@ function isPaused() {
|
|
|
130
138
|
return Clarity.isPaused();
|
|
131
139
|
}
|
|
132
140
|
|
|
133
|
-
/**
|
|
134
|
-
* Sets a custom user id that can be used to identify the user. It has less
|
|
135
|
-
* restrictions than the userId parameter. You can pass any string and
|
|
136
|
-
* you can filter on it on the dashboard side. If you need the most efficient
|
|
137
|
-
* filtering on the dashboard, use the userId parameter if possible.
|
|
138
|
-
* <p>
|
|
139
|
-
* Note: custom user id cannot be null or empty, or consists only of whitespaces.
|
|
140
|
-
* </p>
|
|
141
|
-
* @param customUserId The custom user id to set.
|
|
141
|
+
/**
|
|
142
|
+
* Sets a custom user id that can be used to identify the user. It has less
|
|
143
|
+
* restrictions than the userId parameter. You can pass any string and
|
|
144
|
+
* you can filter on it on the dashboard side. If you need the most efficient
|
|
145
|
+
* filtering on the dashboard, use the userId parameter if possible.
|
|
146
|
+
* <p>
|
|
147
|
+
* Note: custom user id cannot be null or empty, or consists only of whitespaces.
|
|
148
|
+
* </p>
|
|
149
|
+
* @param customUserId The custom user id to set.
|
|
142
150
|
*/
|
|
143
151
|
function setCustomUserId(customUserId) {
|
|
144
152
|
if (isClarityUnavailable()) {
|
|
@@ -147,12 +155,12 @@ function setCustomUserId(customUserId) {
|
|
|
147
155
|
return Clarity.setCustomUserId(customUserId);
|
|
148
156
|
}
|
|
149
157
|
|
|
150
|
-
/**
|
|
151
|
-
* Sets a custom session id that can be used to identify the session.
|
|
152
|
-
* <p>
|
|
153
|
-
* Note: custom session id cannot be null or empty, or consists only of whitespaces.
|
|
154
|
-
* </p>
|
|
155
|
-
* @param customSessionId The custom session id to set.
|
|
158
|
+
/**
|
|
159
|
+
* Sets a custom session id that can be used to identify the session.
|
|
160
|
+
* <p>
|
|
161
|
+
* Note: custom session id cannot be null or empty, or consists only of whitespaces.
|
|
162
|
+
* </p>
|
|
163
|
+
* @param customSessionId The custom session id to set.
|
|
156
164
|
*/
|
|
157
165
|
function setCustomSessionId(customSessionId) {
|
|
158
166
|
if (isClarityUnavailable()) {
|
|
@@ -161,10 +169,10 @@ function setCustomSessionId(customSessionId) {
|
|
|
161
169
|
return Clarity.setCustomSessionId(customSessionId);
|
|
162
170
|
}
|
|
163
171
|
|
|
164
|
-
/**
|
|
165
|
-
* Sets a custom tag for the current session.
|
|
166
|
-
* @param key The tag key to set.
|
|
167
|
-
* @param value The tag value to set.
|
|
172
|
+
/**
|
|
173
|
+
* Sets a custom tag for the current session.
|
|
174
|
+
* @param key The tag key to set.
|
|
175
|
+
* @param value The tag value to set.
|
|
168
176
|
*/
|
|
169
177
|
function setCustomTag(key, value) {
|
|
170
178
|
if (isClarityUnavailable()) {
|
|
@@ -173,12 +181,12 @@ function setCustomTag(key, value) {
|
|
|
173
181
|
return Clarity.setCustomTag(key, value);
|
|
174
182
|
}
|
|
175
183
|
|
|
176
|
-
/**
|
|
177
|
-
* For React Native applications only, this function is used to set the current screen name
|
|
178
|
-
* in case the ReactNative Navigation package is used.
|
|
179
|
-
* This will allow you to split and analyze your data on the screen names.
|
|
180
|
-
* You can it set to `null` to remove the latest set value.
|
|
181
|
-
* @param screenName The current screen name to set.
|
|
184
|
+
/**
|
|
185
|
+
* For React Native applications only, this function is used to set the current screen name
|
|
186
|
+
* in case the ReactNative Navigation package is used.
|
|
187
|
+
* This will allow you to split and analyze your data on the screen names.
|
|
188
|
+
* You can it set to `null` to remove the latest set value.
|
|
189
|
+
* @param screenName The current screen name to set.
|
|
182
190
|
*/
|
|
183
191
|
function setCurrentScreenName(screenName) {
|
|
184
192
|
if (isClarityUnavailable()) {
|
|
@@ -187,10 +195,10 @@ function setCurrentScreenName(screenName) {
|
|
|
187
195
|
return Clarity.setCurrentScreenName(screenName);
|
|
188
196
|
}
|
|
189
197
|
|
|
190
|
-
/**
|
|
191
|
-
* Returns the active session id. This can be used to correlate the Clarity session with other
|
|
192
|
-
* analytics tools that the developer may be using.
|
|
193
|
-
* @returns a promise that resolves to the current session id.
|
|
198
|
+
/**
|
|
199
|
+
* Returns the active session id. This can be used to correlate the Clarity session with other
|
|
200
|
+
* analytics tools that the developer may be using.
|
|
201
|
+
* @returns a promise that resolves to the current session id.
|
|
194
202
|
*/
|
|
195
203
|
function getCurrentSessionId() {
|
|
196
204
|
if (isClarityUnavailable()) {
|
|
@@ -199,11 +207,11 @@ function getCurrentSessionId() {
|
|
|
199
207
|
return Clarity.getCurrentSessionId();
|
|
200
208
|
}
|
|
201
209
|
|
|
202
|
-
/**
|
|
203
|
-
* Returns the active session url. This can be used to correlate the Clarity session with other
|
|
204
|
-
* analytics tools that the developer may be using.
|
|
205
|
-
*
|
|
206
|
-
* @returns a promise that resolves to the current session url if there is an active one.
|
|
210
|
+
/**
|
|
211
|
+
* Returns the active session url. This can be used to correlate the Clarity session with other
|
|
212
|
+
* analytics tools that the developer may be using.
|
|
213
|
+
*
|
|
214
|
+
* @returns a promise that resolves to the current session url if there is an active one.
|
|
207
215
|
*/
|
|
208
216
|
function getCurrentSessionUrl() {
|
|
209
217
|
if (isClarityUnavailable()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","Clarity","NativeModules","SupportedPlatforms","LogLevel","exports","isClarityUnavailable","includes","OS","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","Clarity","NativeModules","SupportedPlatforms","SupportWarningWasShown","LogLevel","exports","isClarityUnavailable","includes","OS","warningMessage","join","console","warn","error","initialize","projectId","config","Error","userId","logLevel","None","allowMeteredNetworkUsage","enableWebViewCapture","allowedDomains","disableOnLowEndDevices","maximumDailyNetworkUsageInMB","enableIOS_experimental","push","enableDailyNetworkUsageLimit","refinedMaximumDailyNetworkUsageInMB","pause","Promise","resolve","undefined","resume","isPaused","setCustomUserId","customUserId","setCustomSessionId","customSessionId","setCustomTag","key","value","setCurrentScreenName","screenName","getCurrentSessionId","getCurrentSessionUrl"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -5,29 +5,30 @@ const LINKING_ERROR = `The package 'react-native-clarity' doesn't seem to be lin
|
|
|
5
5
|
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
6
6
|
const Clarity = NativeModules.Clarity;
|
|
7
7
|
const SupportedPlatforms = ['android'];
|
|
8
|
+
let SupportWarningWasShown = false;
|
|
8
9
|
|
|
9
|
-
/**
|
|
10
|
-
* The configuration that will be used to customize the Clarity behaviour.
|
|
11
|
-
*
|
|
12
|
-
* @param userId [OPTIONAL default = null] A custom identifier for the current user. If passed as null, the user id
|
|
13
|
-
* will be auto generated. The user id in general is sticky across sessions.
|
|
14
|
-
* The provided user id must follow these conditions:
|
|
15
|
-
* 1. Cannot be an empty string.
|
|
16
|
-
* 2. Should be base36 and smaller than "1Z141Z4".
|
|
17
|
-
* @param logLevel [OPTIONAL default = LogLevel.None] The level of logging to show in the device logcat stream.
|
|
18
|
-
* @param allowMeteredNetworkUsage [OPTIONAL default = false] Allows uploading session data to the servers on device metered network.
|
|
19
|
-
* @param enableWebViewCapture [OPTIONAL default = true] Allows Clarity to capture the web views DOM content.
|
|
20
|
-
* @param allowedDomains [OPTIONAL default = ["*"]] The whitelisted domains to allow Clarity to capture their DOM content.
|
|
21
|
-
* If it contains "*" as an element, all domains will be captured.
|
|
22
|
-
* Note: iOS currently does not support allowedDomains feature.
|
|
23
|
-
* @param disableOnLowEndDevices [OPTIONAL default = false] Disable Clarity on low-end devices.
|
|
24
|
-
* @param maximumDailyNetworkUsageInMB [OPTIONAL default = null] Maximum daily network usage for Clarity (null = No limit). When the limit is reached, Clarity will turn on lean mode.
|
|
25
|
-
* Note: iOS currently does not support limiting network usage.
|
|
26
|
-
* @param enableIOS_experimental [OPTIONAL default = false] Experimental flag to enable Clarity on iOS platform.
|
|
10
|
+
/**
|
|
11
|
+
* The configuration that will be used to customize the Clarity behaviour.
|
|
12
|
+
*
|
|
13
|
+
* @param userId [OPTIONAL default = null] A custom identifier for the current user. If passed as null, the user id
|
|
14
|
+
* will be auto generated. The user id in general is sticky across sessions.
|
|
15
|
+
* The provided user id must follow these conditions:
|
|
16
|
+
* 1. Cannot be an empty string.
|
|
17
|
+
* 2. Should be base36 and smaller than "1Z141Z4".
|
|
18
|
+
* @param logLevel [OPTIONAL default = LogLevel.None] The level of logging to show in the device logcat stream.
|
|
19
|
+
* @param allowMeteredNetworkUsage [OPTIONAL default = false] Allows uploading session data to the servers on device metered network.
|
|
20
|
+
* @param enableWebViewCapture [OPTIONAL default = true] Allows Clarity to capture the web views DOM content.
|
|
21
|
+
* @param allowedDomains [OPTIONAL default = ["*"]] The whitelisted domains to allow Clarity to capture their DOM content.
|
|
22
|
+
* If it contains "*" as an element, all domains will be captured.
|
|
23
|
+
* Note: iOS currently does not support allowedDomains feature.
|
|
24
|
+
* @param disableOnLowEndDevices [OPTIONAL default = false] Disable Clarity on low-end devices.
|
|
25
|
+
* @param maximumDailyNetworkUsageInMB [OPTIONAL default = null] Maximum daily network usage for Clarity (null = No limit). When the limit is reached, Clarity will turn on lean mode.
|
|
26
|
+
* Note: iOS currently does not support limiting network usage.
|
|
27
|
+
* @param enableIOS_experimental [OPTIONAL default = false] Experimental flag to enable Clarity on iOS platform.
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
|
-
/**
|
|
30
|
-
* The level of logging to show in the device logcat stream.
|
|
30
|
+
/**
|
|
31
|
+
* The level of logging to show in the device logcat stream.
|
|
31
32
|
*/
|
|
32
33
|
export let LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
33
34
|
LogLevel["Verbose"] = "Verbose";
|
|
@@ -40,7 +41,14 @@ export let LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
|
40
41
|
}({});
|
|
41
42
|
function isClarityUnavailable() {
|
|
42
43
|
if (!SupportedPlatforms.includes(Platform.OS)) {
|
|
43
|
-
|
|
44
|
+
let warningMessage = 'Clarity supports ' + SupportedPlatforms.join(', ') + ' only for now.';
|
|
45
|
+
if (Platform.OS === 'ios') {
|
|
46
|
+
warningMessage = `${warningMessage} To enable experimental iOS support, set the 'enableIOS_experimental' config value to true.`;
|
|
47
|
+
}
|
|
48
|
+
if (!SupportWarningWasShown) {
|
|
49
|
+
console.warn(warningMessage);
|
|
50
|
+
SupportWarningWasShown = true;
|
|
51
|
+
}
|
|
44
52
|
return true;
|
|
45
53
|
}
|
|
46
54
|
if (Clarity === null) {
|
|
@@ -50,10 +58,10 @@ function isClarityUnavailable() {
|
|
|
50
58
|
return false;
|
|
51
59
|
}
|
|
52
60
|
|
|
53
|
-
/**
|
|
54
|
-
* Initializes the Clarity SDK if the API level is supported.
|
|
55
|
-
* @param projectId [REQUIRED] The Clarity project id to send data to.
|
|
56
|
-
* @param config [OPTIONAL] The clarity config, if not provided default values are used.
|
|
61
|
+
/**
|
|
62
|
+
* Initializes the Clarity SDK if the API level is supported.
|
|
63
|
+
* @param projectId [REQUIRED] The Clarity project id to send data to.
|
|
64
|
+
* @param config [OPTIONAL] The clarity config, if not provided default values are used.
|
|
57
65
|
*/
|
|
58
66
|
export function initialize(projectId, config) {
|
|
59
67
|
if (typeof projectId !== 'string' || !(typeof config === 'object' || typeof config === 'undefined')) {
|
|
@@ -84,8 +92,8 @@ export function initialize(projectId, config) {
|
|
|
84
92
|
Clarity.initialize(projectId, userId, logLevel, allowMeteredNetworkUsage, enableWebViewCapture, allowedDomains, disableOnLowEndDevices, enableDailyNetworkUsageLimit, refinedMaximumDailyNetworkUsageInMB);
|
|
85
93
|
}
|
|
86
94
|
|
|
87
|
-
/**
|
|
88
|
-
* Pauses the Clarity capturing processes until the next resume() is called.
|
|
95
|
+
/**
|
|
96
|
+
* Pauses the Clarity capturing processes until the next resume() is called.
|
|
89
97
|
*/
|
|
90
98
|
export function pause() {
|
|
91
99
|
if (isClarityUnavailable()) {
|
|
@@ -94,9 +102,9 @@ export function pause() {
|
|
|
94
102
|
return Clarity.pause();
|
|
95
103
|
}
|
|
96
104
|
|
|
97
|
-
/**
|
|
98
|
-
* Resumes the Clarity capturing processes if they are not already resumed.
|
|
99
|
-
* Note: Clarity starts capturing data right on initialization.
|
|
105
|
+
/**
|
|
106
|
+
* Resumes the Clarity capturing processes if they are not already resumed.
|
|
107
|
+
* Note: Clarity starts capturing data right on initialization.
|
|
100
108
|
*/
|
|
101
109
|
export function resume() {
|
|
102
110
|
if (isClarityUnavailable()) {
|
|
@@ -105,8 +113,8 @@ export function resume() {
|
|
|
105
113
|
return Clarity.resume();
|
|
106
114
|
}
|
|
107
115
|
|
|
108
|
-
/**
|
|
109
|
-
* Returns true if Clarity has been paused by the user.
|
|
116
|
+
/**
|
|
117
|
+
* Returns true if Clarity has been paused by the user.
|
|
110
118
|
*/
|
|
111
119
|
export function isPaused() {
|
|
112
120
|
if (isClarityUnavailable()) {
|
|
@@ -115,15 +123,15 @@ export function isPaused() {
|
|
|
115
123
|
return Clarity.isPaused();
|
|
116
124
|
}
|
|
117
125
|
|
|
118
|
-
/**
|
|
119
|
-
* Sets a custom user id that can be used to identify the user. It has less
|
|
120
|
-
* restrictions than the userId parameter. You can pass any string and
|
|
121
|
-
* you can filter on it on the dashboard side. If you need the most efficient
|
|
122
|
-
* filtering on the dashboard, use the userId parameter if possible.
|
|
123
|
-
* <p>
|
|
124
|
-
* Note: custom user id cannot be null or empty, or consists only of whitespaces.
|
|
125
|
-
* </p>
|
|
126
|
-
* @param customUserId The custom user id to set.
|
|
126
|
+
/**
|
|
127
|
+
* Sets a custom user id that can be used to identify the user. It has less
|
|
128
|
+
* restrictions than the userId parameter. You can pass any string and
|
|
129
|
+
* you can filter on it on the dashboard side. If you need the most efficient
|
|
130
|
+
* filtering on the dashboard, use the userId parameter if possible.
|
|
131
|
+
* <p>
|
|
132
|
+
* Note: custom user id cannot be null or empty, or consists only of whitespaces.
|
|
133
|
+
* </p>
|
|
134
|
+
* @param customUserId The custom user id to set.
|
|
127
135
|
*/
|
|
128
136
|
export function setCustomUserId(customUserId) {
|
|
129
137
|
if (isClarityUnavailable()) {
|
|
@@ -132,12 +140,12 @@ export function setCustomUserId(customUserId) {
|
|
|
132
140
|
return Clarity.setCustomUserId(customUserId);
|
|
133
141
|
}
|
|
134
142
|
|
|
135
|
-
/**
|
|
136
|
-
* Sets a custom session id that can be used to identify the session.
|
|
137
|
-
* <p>
|
|
138
|
-
* Note: custom session id cannot be null or empty, or consists only of whitespaces.
|
|
139
|
-
* </p>
|
|
140
|
-
* @param customSessionId The custom session id to set.
|
|
143
|
+
/**
|
|
144
|
+
* Sets a custom session id that can be used to identify the session.
|
|
145
|
+
* <p>
|
|
146
|
+
* Note: custom session id cannot be null or empty, or consists only of whitespaces.
|
|
147
|
+
* </p>
|
|
148
|
+
* @param customSessionId The custom session id to set.
|
|
141
149
|
*/
|
|
142
150
|
export function setCustomSessionId(customSessionId) {
|
|
143
151
|
if (isClarityUnavailable()) {
|
|
@@ -146,10 +154,10 @@ export function setCustomSessionId(customSessionId) {
|
|
|
146
154
|
return Clarity.setCustomSessionId(customSessionId);
|
|
147
155
|
}
|
|
148
156
|
|
|
149
|
-
/**
|
|
150
|
-
* Sets a custom tag for the current session.
|
|
151
|
-
* @param key The tag key to set.
|
|
152
|
-
* @param value The tag value to set.
|
|
157
|
+
/**
|
|
158
|
+
* Sets a custom tag for the current session.
|
|
159
|
+
* @param key The tag key to set.
|
|
160
|
+
* @param value The tag value to set.
|
|
153
161
|
*/
|
|
154
162
|
export function setCustomTag(key, value) {
|
|
155
163
|
if (isClarityUnavailable()) {
|
|
@@ -158,12 +166,12 @@ export function setCustomTag(key, value) {
|
|
|
158
166
|
return Clarity.setCustomTag(key, value);
|
|
159
167
|
}
|
|
160
168
|
|
|
161
|
-
/**
|
|
162
|
-
* For React Native applications only, this function is used to set the current screen name
|
|
163
|
-
* in case the ReactNative Navigation package is used.
|
|
164
|
-
* This will allow you to split and analyze your data on the screen names.
|
|
165
|
-
* You can it set to `null` to remove the latest set value.
|
|
166
|
-
* @param screenName The current screen name to set.
|
|
169
|
+
/**
|
|
170
|
+
* For React Native applications only, this function is used to set the current screen name
|
|
171
|
+
* in case the ReactNative Navigation package is used.
|
|
172
|
+
* This will allow you to split and analyze your data on the screen names.
|
|
173
|
+
* You can it set to `null` to remove the latest set value.
|
|
174
|
+
* @param screenName The current screen name to set.
|
|
167
175
|
*/
|
|
168
176
|
export function setCurrentScreenName(screenName) {
|
|
169
177
|
if (isClarityUnavailable()) {
|
|
@@ -172,10 +180,10 @@ export function setCurrentScreenName(screenName) {
|
|
|
172
180
|
return Clarity.setCurrentScreenName(screenName);
|
|
173
181
|
}
|
|
174
182
|
|
|
175
|
-
/**
|
|
176
|
-
* Returns the active session id. This can be used to correlate the Clarity session with other
|
|
177
|
-
* analytics tools that the developer may be using.
|
|
178
|
-
* @returns a promise that resolves to the current session id.
|
|
183
|
+
/**
|
|
184
|
+
* Returns the active session id. This can be used to correlate the Clarity session with other
|
|
185
|
+
* analytics tools that the developer may be using.
|
|
186
|
+
* @returns a promise that resolves to the current session id.
|
|
179
187
|
*/
|
|
180
188
|
export function getCurrentSessionId() {
|
|
181
189
|
if (isClarityUnavailable()) {
|
|
@@ -184,11 +192,11 @@ export function getCurrentSessionId() {
|
|
|
184
192
|
return Clarity.getCurrentSessionId();
|
|
185
193
|
}
|
|
186
194
|
|
|
187
|
-
/**
|
|
188
|
-
* Returns the active session url. This can be used to correlate the Clarity session with other
|
|
189
|
-
* analytics tools that the developer may be using.
|
|
190
|
-
*
|
|
191
|
-
* @returns a promise that resolves to the current session url if there is an active one.
|
|
195
|
+
/**
|
|
196
|
+
* Returns the active session url. This can be used to correlate the Clarity session with other
|
|
197
|
+
* analytics tools that the developer may be using.
|
|
198
|
+
*
|
|
199
|
+
* @returns a promise that resolves to the current session url if there is an active one.
|
|
192
200
|
*/
|
|
193
201
|
export function getCurrentSessionUrl() {
|
|
194
202
|
if (isClarityUnavailable()) {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","Clarity","SupportedPlatforms","LogLevel","isClarityUnavailable","includes","OS","
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","Clarity","SupportedPlatforms","SupportWarningWasShown","LogLevel","isClarityUnavailable","includes","OS","warningMessage","join","console","warn","error","initialize","projectId","config","Error","userId","logLevel","None","allowMeteredNetworkUsage","enableWebViewCapture","allowedDomains","disableOnLowEndDevices","maximumDailyNetworkUsageInMB","enableIOS_experimental","push","enableDailyNetworkUsageLimit","refinedMaximumDailyNetworkUsageInMB","pause","Promise","resolve","undefined","resume","isPaused","setCustomUserId","customUserId","setCustomSessionId","customSessionId","setCustomTag","key","value","setCurrentScreenName","screenName","getCurrentSessionId","getCurrentSessionUrl"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|