react-native-clarity 2.3.0 → 3.0.0
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/README.md +127 -121
- package/android/build.gradle +81 -81
- package/android/gradle.properties +7 -7
- package/android/src/main/java/com/microsoft/clarity/reactnative/ClarityModule.kt +122 -122
- package/ios/Clarity.m +131 -0
- package/ios/Clarity.xcodeproj/project.pbxproj +14 -8
- package/lib/commonjs/index.js +114 -145
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +112 -143
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +11 -7
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +165 -159
- package/react-native-clarity.podspec +2 -1
- package/src/index.tsx +248 -272
- package/ios/Clarity.mm +0 -15
package/lib/commonjs/index.js
CHANGED
|
@@ -15,32 +15,36 @@ exports.setCustomSessionId = setCustomSessionId;
|
|
|
15
15
|
exports.setCustomTag = setCustomTag;
|
|
16
16
|
exports.setCustomUserId = setCustomUserId;
|
|
17
17
|
var _reactNative = require("react-native");
|
|
18
|
-
const LINKING_ERROR = `The package 'react-native-clarity' doesn't seem to be linked. Make sure: \n\n` +
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const LINKING_ERROR = `The package 'react-native-clarity' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
19
|
+
ios: "- You have run 'pod install --repo-update'\n",
|
|
20
|
+
default: ''
|
|
21
|
+
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
21
22
|
const Clarity = _reactNative.NativeModules.Clarity;
|
|
22
23
|
const SupportedPlatforms = ['android'];
|
|
23
24
|
|
|
24
|
-
/**
|
|
25
|
-
* The configuration that will be used to customize the Clarity behaviour.
|
|
26
|
-
*
|
|
27
|
-
* @param userId [OPTIONAL default = null] A custom identifier for the current user. If passed as null, the user id
|
|
28
|
-
* will be auto generated. The user id in general is sticky across sessions.
|
|
29
|
-
* The provided user id must follow these conditions:
|
|
30
|
-
* 1. Cannot be an empty string.
|
|
31
|
-
* 2. Should be base36 and smaller than "1Z141Z4".
|
|
32
|
-
* @param logLevel [OPTIONAL default = LogLevel.None] The level of logging to show in the device logcat stream.
|
|
33
|
-
* @param allowMeteredNetworkUsage [OPTIONAL default = false] Allows uploading session data to the servers on device metered network.
|
|
34
|
-
* @param enableWebViewCapture [OPTIONAL default = true] Allows Clarity to capture the web views DOM content.
|
|
35
|
-
* @param allowedDomains [OPTIONAL default = ["*"]] The whitelisted domains to allow Clarity to capture their DOM content.
|
|
36
|
-
* If it contains "*" as an element, all domains will be captured.
|
|
37
|
-
*
|
|
38
|
-
* @param
|
|
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.
|
|
39
43
|
*/
|
|
40
|
-
/**
|
|
41
|
-
* The level of logging to show in the device logcat stream.
|
|
44
|
+
/**
|
|
45
|
+
* The level of logging to show in the device logcat stream.
|
|
42
46
|
*/
|
|
43
|
-
let LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
47
|
+
let LogLevel = exports.LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
44
48
|
LogLevel["Verbose"] = "Verbose";
|
|
45
49
|
LogLevel["Debug"] = "Debug";
|
|
46
50
|
LogLevel["Info"] = "Info";
|
|
@@ -49,15 +53,26 @@ let LogLevel = /*#__PURE__*/function (LogLevel) {
|
|
|
49
53
|
LogLevel["None"] = "None";
|
|
50
54
|
return LogLevel;
|
|
51
55
|
}({});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
function isClarityUnavailable() {
|
|
57
|
+
if (!SupportedPlatforms.includes(_reactNative.Platform.OS)) {
|
|
58
|
+
console.warn('Clarity supports ' + SupportedPlatforms.join(', ') + ' only for now.');
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (Clarity === null) {
|
|
62
|
+
console.error('Clarity did not initialize properly.', LINKING_ERROR);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
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.
|
|
72
|
+
*/
|
|
58
73
|
function initialize(projectId, config) {
|
|
59
|
-
if (typeof projectId !==
|
|
60
|
-
throw Error(
|
|
74
|
+
if (typeof projectId !== 'string' || !(typeof config === 'object' || typeof config === 'undefined')) {
|
|
75
|
+
throw Error('Invalid Clarity initialization arguments. Please check the docs for assitance.');
|
|
61
76
|
}
|
|
62
77
|
|
|
63
78
|
// applying default values
|
|
@@ -66,16 +81,15 @@ function initialize(projectId, config) {
|
|
|
66
81
|
logLevel = LogLevel.None,
|
|
67
82
|
allowMeteredNetworkUsage = false,
|
|
68
83
|
enableWebViewCapture = true,
|
|
69
|
-
allowedDomains = [
|
|
84
|
+
allowedDomains = ['*'],
|
|
70
85
|
disableOnLowEndDevices = false,
|
|
71
|
-
maximumDailyNetworkUsageInMB = null
|
|
86
|
+
maximumDailyNetworkUsageInMB = null,
|
|
87
|
+
enableIOS_experimental = false
|
|
72
88
|
} = config ?? {};
|
|
73
|
-
if (!SupportedPlatforms.includes(
|
|
74
|
-
|
|
75
|
-
return;
|
|
89
|
+
if (enableIOS_experimental === true && !SupportedPlatforms.includes('ios')) {
|
|
90
|
+
SupportedPlatforms.push('ios');
|
|
76
91
|
}
|
|
77
|
-
if (
|
|
78
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
92
|
+
if (isClarityUnavailable()) {
|
|
79
93
|
return;
|
|
80
94
|
}
|
|
81
95
|
|
|
@@ -85,160 +99,115 @@ function initialize(projectId, config) {
|
|
|
85
99
|
Clarity.initialize(projectId, userId, logLevel, allowMeteredNetworkUsage, enableWebViewCapture, allowedDomains, disableOnLowEndDevices, enableDailyNetworkUsageLimit, refinedMaximumDailyNetworkUsageInMB);
|
|
86
100
|
}
|
|
87
101
|
|
|
88
|
-
/**
|
|
89
|
-
* Pauses the Clarity capturing processes until the next resume() is called.
|
|
102
|
+
/**
|
|
103
|
+
* Pauses the Clarity capturing processes until the next resume() is called.
|
|
90
104
|
*/
|
|
91
105
|
function pause() {
|
|
92
|
-
if (
|
|
93
|
-
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (Clarity === null) {
|
|
97
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
98
|
-
return;
|
|
106
|
+
if (isClarityUnavailable()) {
|
|
107
|
+
return Promise.resolve(undefined);
|
|
99
108
|
}
|
|
100
|
-
Clarity.pause();
|
|
109
|
+
return Clarity.pause();
|
|
101
110
|
}
|
|
102
111
|
|
|
103
|
-
/**
|
|
104
|
-
* Resumes the Clarity capturing processes if they are not already resumed.
|
|
105
|
-
* Note: Clarity starts capturing data right on initialization.
|
|
112
|
+
/**
|
|
113
|
+
* Resumes the Clarity capturing processes if they are not already resumed.
|
|
114
|
+
* Note: Clarity starts capturing data right on initialization.
|
|
106
115
|
*/
|
|
107
116
|
function resume() {
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (Clarity === null) {
|
|
113
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
114
|
-
return;
|
|
117
|
+
if (isClarityUnavailable()) {
|
|
118
|
+
return Promise.resolve(undefined);
|
|
115
119
|
}
|
|
116
|
-
Clarity.resume();
|
|
120
|
+
return Clarity.resume();
|
|
117
121
|
}
|
|
118
122
|
|
|
119
|
-
/**
|
|
120
|
-
* Returns true if Clarity has been paused by the user.
|
|
123
|
+
/**
|
|
124
|
+
* Returns true if Clarity has been paused by the user.
|
|
121
125
|
*/
|
|
122
126
|
function isPaused() {
|
|
123
|
-
if (
|
|
124
|
-
console.warn("Clarity supports " + SupportedPlatforms.join(", ") + " only for now.");
|
|
125
|
-
return Promise.resolve(undefined);
|
|
126
|
-
}
|
|
127
|
-
if (Clarity === null) {
|
|
128
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
127
|
+
if (isClarityUnavailable()) {
|
|
129
128
|
return Promise.resolve(undefined);
|
|
130
129
|
}
|
|
131
130
|
return Clarity.isPaused();
|
|
132
131
|
}
|
|
133
132
|
|
|
134
|
-
/**
|
|
135
|
-
* Sets a custom user id that can be used to identify the user. It has less
|
|
136
|
-
* restrictions than the userId parameter. You can pass any string and
|
|
137
|
-
* you can filter on it on the dashboard side. If you need the most efficient
|
|
138
|
-
* filtering on the dashboard, use the userId parameter if possible.
|
|
139
|
-
* <p>
|
|
140
|
-
* Note: custom user id cannot be null or empty, or consists only of whitespaces.
|
|
141
|
-
* </p>
|
|
142
|
-
* @param customUserId The custom user id to set.
|
|
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.
|
|
143
142
|
*/
|
|
144
143
|
function setCustomUserId(customUserId) {
|
|
145
|
-
if (
|
|
146
|
-
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (Clarity === null) {
|
|
150
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
151
|
-
return;
|
|
144
|
+
if (isClarityUnavailable()) {
|
|
145
|
+
return Promise.resolve(undefined);
|
|
152
146
|
}
|
|
153
|
-
Clarity.setCustomUserId(customUserId);
|
|
147
|
+
return Clarity.setCustomUserId(customUserId);
|
|
154
148
|
}
|
|
155
149
|
|
|
156
|
-
/**
|
|
157
|
-
* Sets a custom session id that can be used to identify the session.
|
|
158
|
-
* <p>
|
|
159
|
-
* Note: custom session id cannot be null or empty, or consists only of whitespaces.
|
|
160
|
-
* </p>
|
|
161
|
-
* @param customSessionId The custom session id to set.
|
|
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.
|
|
162
156
|
*/
|
|
163
157
|
function setCustomSessionId(customSessionId) {
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
if (Clarity === null) {
|
|
169
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
170
|
-
return;
|
|
158
|
+
if (isClarityUnavailable()) {
|
|
159
|
+
return Promise.resolve(undefined);
|
|
171
160
|
}
|
|
172
|
-
Clarity.setCustomSessionId(customSessionId);
|
|
161
|
+
return Clarity.setCustomSessionId(customSessionId);
|
|
173
162
|
}
|
|
174
163
|
|
|
175
|
-
/**
|
|
176
|
-
* Sets a custom tag for the current session.
|
|
177
|
-
* @param key The tag key to set.
|
|
178
|
-
* @param value The tag value to set.
|
|
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.
|
|
179
168
|
*/
|
|
180
169
|
function setCustomTag(key, value) {
|
|
181
|
-
if (
|
|
182
|
-
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
if (Clarity === null) {
|
|
186
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
187
|
-
return;
|
|
170
|
+
if (isClarityUnavailable()) {
|
|
171
|
+
return Promise.resolve(undefined);
|
|
188
172
|
}
|
|
189
|
-
Clarity.setCustomTag(key, value);
|
|
173
|
+
return Clarity.setCustomTag(key, value);
|
|
190
174
|
}
|
|
191
175
|
|
|
192
|
-
/**
|
|
193
|
-
* For React Native applications only, this function is used to set the current screen name
|
|
194
|
-
* in case the ReactNative Navigation package is used.
|
|
195
|
-
* This will allow you to split and analyze your data on the screen names.
|
|
196
|
-
* You can it set to `null` to remove the latest set value.
|
|
197
|
-
* @param screenName The current screen name to set.
|
|
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.
|
|
198
182
|
*/
|
|
199
183
|
function setCurrentScreenName(screenName) {
|
|
200
|
-
if (
|
|
201
|
-
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
if (Clarity === null) {
|
|
205
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
206
|
-
return;
|
|
184
|
+
if (isClarityUnavailable()) {
|
|
185
|
+
return Promise.resolve(undefined);
|
|
207
186
|
}
|
|
208
|
-
Clarity.setCurrentScreenName(screenName);
|
|
187
|
+
return Clarity.setCurrentScreenName(screenName);
|
|
209
188
|
}
|
|
210
189
|
|
|
211
|
-
/**
|
|
212
|
-
* Returns the active session id. This can be used to correlate the Clarity session with other
|
|
213
|
-
* analytics tools that the developer may be using.
|
|
214
|
-
* @returns a promise that resolves to the current session id.
|
|
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.
|
|
215
194
|
*/
|
|
216
195
|
function getCurrentSessionId() {
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
return Promise.resolve("Undefined");
|
|
220
|
-
}
|
|
221
|
-
if (Clarity === null) {
|
|
222
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
223
|
-
return Promise.resolve("Undefined");
|
|
196
|
+
if (isClarityUnavailable()) {
|
|
197
|
+
return Promise.resolve('Undefined');
|
|
224
198
|
}
|
|
225
199
|
return Clarity.getCurrentSessionId();
|
|
226
200
|
}
|
|
227
201
|
|
|
228
|
-
/**
|
|
229
|
-
* Returns the active session url. This can be used to correlate the Clarity session with other
|
|
230
|
-
* analytics tools that the developer may be using.
|
|
231
|
-
*
|
|
232
|
-
* @returns a promise that resolves to the current session url if there is an active one.
|
|
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.
|
|
233
207
|
*/
|
|
234
208
|
function getCurrentSessionUrl() {
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
return Promise.resolve("Undefined");
|
|
238
|
-
}
|
|
239
|
-
if (Clarity === null) {
|
|
240
|
-
console.error("Clarity did not initialize properly.", LINKING_ERROR);
|
|
241
|
-
return Promise.resolve("Undefined");
|
|
209
|
+
if (isClarityUnavailable()) {
|
|
210
|
+
return Promise.resolve('Undefined');
|
|
242
211
|
}
|
|
243
212
|
return Clarity.getCurrentSessionUrl();
|
|
244
213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Clarity","NativeModules","SupportedPlatforms","LogLevel","exports","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","Clarity","NativeModules","SupportedPlatforms","LogLevel","exports","isClarityUnavailable","includes","OS","console","warn","join","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":[]}
|