react-native-gleapsdk 6.0.4 → 6.2.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/android/build.gradle +1 -1
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradlew +185 -0
- package/android/gradlew.bat +89 -0
- package/android/src/main/java/com/reactnativegleapsdk/GleapsdkModule.java +176 -107
- package/ios/Gleapsdk.m +85 -42
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/networklogger.js +1 -1
- package/lib/commonjs/networklogger.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/networklogger.js +1 -1
- package/lib/module/networklogger.js.map +1 -1
- package/lib/typescript/index.d.ts +3 -1
- package/package.json +1 -1
- package/react-native-gleapsdk.podspec +1 -1
- package/src/index.tsx +4 -2
- package/src/networklogger.ts +1 -1
package/android/build.gradle
CHANGED
|
@@ -56,6 +56,6 @@ dependencies {
|
|
|
56
56
|
//noinspection GradleDynamicVersion
|
|
57
57
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
|
58
58
|
// https://mvnrepository.com/artifact/io.gleap/gleap-android-sdk
|
|
59
|
-
implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '6.
|
|
59
|
+
implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '6.2.5'
|
|
60
60
|
|
|
61
61
|
}
|
|
Binary file
|
package/android/gradlew
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2015 the original author or authors.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
##############################################################################
|
|
20
|
+
##
|
|
21
|
+
## Gradle start up script for UN*X
|
|
22
|
+
##
|
|
23
|
+
##############################################################################
|
|
24
|
+
|
|
25
|
+
# Attempt to set APP_HOME
|
|
26
|
+
# Resolve links: $0 may be a link
|
|
27
|
+
PRG="$0"
|
|
28
|
+
# Need this for relative symlinks.
|
|
29
|
+
while [ -h "$PRG" ] ; do
|
|
30
|
+
ls=`ls -ld "$PRG"`
|
|
31
|
+
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
32
|
+
if expr "$link" : '/.*' > /dev/null; then
|
|
33
|
+
PRG="$link"
|
|
34
|
+
else
|
|
35
|
+
PRG=`dirname "$PRG"`"/$link"
|
|
36
|
+
fi
|
|
37
|
+
done
|
|
38
|
+
SAVED="`pwd`"
|
|
39
|
+
cd "`dirname \"$PRG\"`/" >/dev/null
|
|
40
|
+
APP_HOME="`pwd -P`"
|
|
41
|
+
cd "$SAVED" >/dev/null
|
|
42
|
+
|
|
43
|
+
APP_NAME="Gradle"
|
|
44
|
+
APP_BASE_NAME=`basename "$0"`
|
|
45
|
+
|
|
46
|
+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
47
|
+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
|
48
|
+
|
|
49
|
+
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
50
|
+
MAX_FD="maximum"
|
|
51
|
+
|
|
52
|
+
warn () {
|
|
53
|
+
echo "$*"
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
die () {
|
|
57
|
+
echo
|
|
58
|
+
echo "$*"
|
|
59
|
+
echo
|
|
60
|
+
exit 1
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
# OS specific support (must be 'true' or 'false').
|
|
64
|
+
cygwin=false
|
|
65
|
+
msys=false
|
|
66
|
+
darwin=false
|
|
67
|
+
nonstop=false
|
|
68
|
+
case "`uname`" in
|
|
69
|
+
CYGWIN* )
|
|
70
|
+
cygwin=true
|
|
71
|
+
;;
|
|
72
|
+
Darwin* )
|
|
73
|
+
darwin=true
|
|
74
|
+
;;
|
|
75
|
+
MINGW* )
|
|
76
|
+
msys=true
|
|
77
|
+
;;
|
|
78
|
+
NONSTOP* )
|
|
79
|
+
nonstop=true
|
|
80
|
+
;;
|
|
81
|
+
esac
|
|
82
|
+
|
|
83
|
+
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
# Determine the Java command to use to start the JVM.
|
|
87
|
+
if [ -n "$JAVA_HOME" ] ; then
|
|
88
|
+
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
|
89
|
+
# IBM's JDK on AIX uses strange locations for the executables
|
|
90
|
+
JAVACMD="$JAVA_HOME/jre/sh/java"
|
|
91
|
+
else
|
|
92
|
+
JAVACMD="$JAVA_HOME/bin/java"
|
|
93
|
+
fi
|
|
94
|
+
if [ ! -x "$JAVACMD" ] ; then
|
|
95
|
+
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
|
96
|
+
|
|
97
|
+
Please set the JAVA_HOME variable in your environment to match the
|
|
98
|
+
location of your Java installation."
|
|
99
|
+
fi
|
|
100
|
+
else
|
|
101
|
+
JAVACMD="java"
|
|
102
|
+
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
103
|
+
|
|
104
|
+
Please set the JAVA_HOME variable in your environment to match the
|
|
105
|
+
location of your Java installation."
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
# Increase the maximum file descriptors if we can.
|
|
109
|
+
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
|
110
|
+
MAX_FD_LIMIT=`ulimit -H -n`
|
|
111
|
+
if [ $? -eq 0 ] ; then
|
|
112
|
+
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
|
113
|
+
MAX_FD="$MAX_FD_LIMIT"
|
|
114
|
+
fi
|
|
115
|
+
ulimit -n $MAX_FD
|
|
116
|
+
if [ $? -ne 0 ] ; then
|
|
117
|
+
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
|
118
|
+
fi
|
|
119
|
+
else
|
|
120
|
+
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
121
|
+
fi
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
# For Darwin, add options to specify how the application appears in the dock
|
|
125
|
+
if $darwin; then
|
|
126
|
+
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
# For Cygwin or MSYS, switch paths to Windows format before running java
|
|
130
|
+
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
|
131
|
+
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
132
|
+
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
133
|
+
|
|
134
|
+
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
135
|
+
|
|
136
|
+
# We build the pattern for arguments to be converted via cygpath
|
|
137
|
+
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
138
|
+
SEP=""
|
|
139
|
+
for dir in $ROOTDIRSRAW ; do
|
|
140
|
+
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
141
|
+
SEP="|"
|
|
142
|
+
done
|
|
143
|
+
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
144
|
+
# Add a user-defined pattern to the cygpath arguments
|
|
145
|
+
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
146
|
+
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
147
|
+
fi
|
|
148
|
+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
149
|
+
i=0
|
|
150
|
+
for arg in "$@" ; do
|
|
151
|
+
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
152
|
+
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
153
|
+
|
|
154
|
+
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
155
|
+
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
156
|
+
else
|
|
157
|
+
eval `echo args$i`="\"$arg\""
|
|
158
|
+
fi
|
|
159
|
+
i=`expr $i + 1`
|
|
160
|
+
done
|
|
161
|
+
case $i in
|
|
162
|
+
0) set -- ;;
|
|
163
|
+
1) set -- "$args0" ;;
|
|
164
|
+
2) set -- "$args0" "$args1" ;;
|
|
165
|
+
3) set -- "$args0" "$args1" "$args2" ;;
|
|
166
|
+
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
167
|
+
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
168
|
+
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
169
|
+
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
170
|
+
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
171
|
+
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
172
|
+
esac
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
# Escape application args
|
|
176
|
+
save () {
|
|
177
|
+
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
|
178
|
+
echo " "
|
|
179
|
+
}
|
|
180
|
+
APP_ARGS=`save "$@"`
|
|
181
|
+
|
|
182
|
+
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
|
183
|
+
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
|
184
|
+
|
|
185
|
+
exec "$JAVACMD" "$@"
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
@rem
|
|
2
|
+
@rem Copyright 2015 the original author or authors.
|
|
3
|
+
@rem
|
|
4
|
+
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
@rem you may not use this file except in compliance with the License.
|
|
6
|
+
@rem You may obtain a copy of the License at
|
|
7
|
+
@rem
|
|
8
|
+
@rem https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
@rem
|
|
10
|
+
@rem Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
@rem See the License for the specific language governing permissions and
|
|
14
|
+
@rem limitations under the License.
|
|
15
|
+
@rem
|
|
16
|
+
|
|
17
|
+
@if "%DEBUG%" == "" @echo off
|
|
18
|
+
@rem ##########################################################################
|
|
19
|
+
@rem
|
|
20
|
+
@rem Gradle startup script for Windows
|
|
21
|
+
@rem
|
|
22
|
+
@rem ##########################################################################
|
|
23
|
+
|
|
24
|
+
@rem Set local scope for the variables with windows NT shell
|
|
25
|
+
if "%OS%"=="Windows_NT" setlocal
|
|
26
|
+
|
|
27
|
+
set DIRNAME=%~dp0
|
|
28
|
+
if "%DIRNAME%" == "" set DIRNAME=.
|
|
29
|
+
set APP_BASE_NAME=%~n0
|
|
30
|
+
set APP_HOME=%DIRNAME%
|
|
31
|
+
|
|
32
|
+
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
|
33
|
+
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
|
34
|
+
|
|
35
|
+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
36
|
+
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
|
37
|
+
|
|
38
|
+
@rem Find java.exe
|
|
39
|
+
if defined JAVA_HOME goto findJavaFromJavaHome
|
|
40
|
+
|
|
41
|
+
set JAVA_EXE=java.exe
|
|
42
|
+
%JAVA_EXE% -version >NUL 2>&1
|
|
43
|
+
if "%ERRORLEVEL%" == "0" goto execute
|
|
44
|
+
|
|
45
|
+
echo.
|
|
46
|
+
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
47
|
+
echo.
|
|
48
|
+
echo Please set the JAVA_HOME variable in your environment to match the
|
|
49
|
+
echo location of your Java installation.
|
|
50
|
+
|
|
51
|
+
goto fail
|
|
52
|
+
|
|
53
|
+
:findJavaFromJavaHome
|
|
54
|
+
set JAVA_HOME=%JAVA_HOME:"=%
|
|
55
|
+
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|
56
|
+
|
|
57
|
+
if exist "%JAVA_EXE%" goto execute
|
|
58
|
+
|
|
59
|
+
echo.
|
|
60
|
+
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
|
61
|
+
echo.
|
|
62
|
+
echo Please set the JAVA_HOME variable in your environment to match the
|
|
63
|
+
echo location of your Java installation.
|
|
64
|
+
|
|
65
|
+
goto fail
|
|
66
|
+
|
|
67
|
+
:execute
|
|
68
|
+
@rem Setup the command line
|
|
69
|
+
|
|
70
|
+
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@rem Execute Gradle
|
|
74
|
+
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
|
75
|
+
|
|
76
|
+
:end
|
|
77
|
+
@rem End local scope for the variables with windows NT shell
|
|
78
|
+
if "%ERRORLEVEL%"=="0" goto mainEnd
|
|
79
|
+
|
|
80
|
+
:fail
|
|
81
|
+
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
|
82
|
+
rem the _cmd.exe /c_ return code!
|
|
83
|
+
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
|
84
|
+
exit /b 1
|
|
85
|
+
|
|
86
|
+
:mainEnd
|
|
87
|
+
if "%OS%"=="Windows_NT" endlocal
|
|
88
|
+
|
|
89
|
+
:omega
|
|
@@ -58,86 +58,134 @@ public class GleapsdkModule extends ReactContextBaseJavaModule {
|
|
|
58
58
|
*/
|
|
59
59
|
@ReactMethod
|
|
60
60
|
public void initialize(String sdkKey) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
public void invoke(String message) {
|
|
84
|
-
JSONObject obj = new JSONObject();
|
|
85
|
-
try {
|
|
86
|
-
obj.put("name", message);
|
|
87
|
-
} catch (JSONException e) {
|
|
88
|
-
e.printStackTrace();
|
|
89
|
-
}
|
|
61
|
+
getCurrentActivity().runOnUiThread(
|
|
62
|
+
new Runnable() {
|
|
63
|
+
@Override
|
|
64
|
+
public void run() {
|
|
65
|
+
try {
|
|
66
|
+
Activity activity = getReactApplicationContext()
|
|
67
|
+
.getCurrentActivity();
|
|
68
|
+
if (activity != null) {
|
|
69
|
+
Gleap.getInstance().setApplicationType(APPLICATIONTYPE.REACTNATIVE);
|
|
70
|
+
Gleap.getInstance().setFeedbackWillBeSentCallback(new FeedbackWillBeSentCallback() {
|
|
71
|
+
@Override
|
|
72
|
+
public void flowInvoced() {
|
|
73
|
+
getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("feedbackWillBeSent", null);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
Gleap.initialize(sdkKey, activity.getApplication());
|
|
77
|
+
Gleap.getInstance().setConfigLoadedCallback(new ConfigLoadedCallback() {
|
|
78
|
+
@Override
|
|
79
|
+
public void configLoaded(JSONObject jsonObject) {
|
|
80
|
+
getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("configLoaded", jsonObject.toString());
|
|
81
|
+
}
|
|
82
|
+
});
|
|
90
83
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
84
|
+
Gleap.getInstance().registerCustomAction(new CustomActionCallback() {
|
|
85
|
+
@Override
|
|
86
|
+
public void invoke(String message) {
|
|
87
|
+
JSONObject obj = new JSONObject();
|
|
88
|
+
try {
|
|
89
|
+
obj.put("name", message);
|
|
90
|
+
} catch (JSONException e) {
|
|
91
|
+
e.printStackTrace();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("customActionTriggered", obj.toString());
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
|
|
99
98
|
@Override
|
|
100
|
-
public void
|
|
101
|
-
|
|
99
|
+
public void close() {
|
|
100
|
+
new java.util.Timer().schedule(
|
|
101
|
+
new java.util.TimerTask() {
|
|
102
|
+
@Override
|
|
103
|
+
public void run() {
|
|
104
|
+
showDevMenu();
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
500
|
|
108
|
+
);
|
|
102
109
|
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
} catch (Exception ex) {
|
|
106
113
|
}
|
|
107
|
-
}
|
|
114
|
+
}
|
|
108
115
|
}
|
|
109
|
-
|
|
110
|
-
}
|
|
116
|
+
);
|
|
111
117
|
}
|
|
112
118
|
|
|
113
119
|
/**
|
|
114
120
|
* Start bug report manually by calling this function.
|
|
115
121
|
*/
|
|
116
122
|
@ReactMethod
|
|
117
|
-
public void
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
|
|
123
|
+
public void open() {
|
|
124
|
+
getCurrentActivity().runOnUiThread(
|
|
125
|
+
new Runnable() {
|
|
121
126
|
@Override
|
|
122
|
-
public void
|
|
123
|
-
|
|
124
|
-
|
|
127
|
+
public void run() {
|
|
128
|
+
try {
|
|
129
|
+
Gleap.getInstance().startFeedbackFlow();
|
|
130
|
+
Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
|
|
125
131
|
@Override
|
|
126
|
-
public void
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
public void close() {
|
|
133
|
+
new java.util.Timer().schedule(
|
|
134
|
+
new java.util.TimerTask() {
|
|
135
|
+
@Override
|
|
136
|
+
public void run() {
|
|
137
|
+
if (!isSilentBugReport) {
|
|
138
|
+
showDevMenu();
|
|
139
|
+
} else {
|
|
140
|
+
isSilentBugReport = false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
500
|
|
145
|
+
);
|
|
132
146
|
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
147
|
+
});
|
|
148
|
+
} catch (Exception e) {
|
|
149
|
+
System.out.println(e);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Start bug report manually by calling this function.
|
|
157
|
+
*/
|
|
158
|
+
@ReactMethod
|
|
159
|
+
public void startFeedbackFlow(String feedbackFlow) {
|
|
160
|
+
getCurrentActivity().runOnUiThread(
|
|
161
|
+
new Runnable() {
|
|
162
|
+
@Override
|
|
163
|
+
public void run() {
|
|
164
|
+
try {
|
|
165
|
+
Gleap.getInstance().startFeedbackFlow(feedbackFlow);
|
|
166
|
+
Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
|
|
167
|
+
@Override
|
|
168
|
+
public void close() {
|
|
169
|
+
new java.util.Timer().schedule(
|
|
170
|
+
new java.util.TimerTask() {
|
|
171
|
+
@Override
|
|
172
|
+
public void run() {
|
|
173
|
+
if (!isSilentBugReport) {
|
|
174
|
+
showDevMenu();
|
|
175
|
+
} else {
|
|
176
|
+
isSilentBugReport = false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
500
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
} catch (Exception e) {
|
|
185
|
+
System.out.println(e);
|
|
186
|
+
}
|
|
136
187
|
}
|
|
137
188
|
});
|
|
138
|
-
} catch (Exception e) {
|
|
139
|
-
System.out.println(e);
|
|
140
|
-
}
|
|
141
189
|
}
|
|
142
190
|
|
|
143
191
|
/**
|
|
@@ -148,15 +196,21 @@ public class GleapsdkModule extends ReactContextBaseJavaModule {
|
|
|
148
196
|
String description,
|
|
149
197
|
String priority
|
|
150
198
|
) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
199
|
+
getCurrentActivity().runOnUiThread(
|
|
200
|
+
new Runnable() {
|
|
201
|
+
@Override
|
|
202
|
+
public void run() {
|
|
203
|
+
isSilentBugReport = true;
|
|
204
|
+
Gleap.SEVERITY severity = Gleap.SEVERITY.LOW;
|
|
205
|
+
if (priority == "MEDIUM") {
|
|
206
|
+
severity = Gleap.SEVERITY.MEDIUM;
|
|
207
|
+
}
|
|
208
|
+
if (priority == "HIGH") {
|
|
209
|
+
severity = Gleap.SEVERITY.HIGH;
|
|
210
|
+
}
|
|
211
|
+
Gleap.getInstance().sendSilentBugReport(description, severity);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
160
214
|
}
|
|
161
215
|
|
|
162
216
|
@ReactMethod
|
|
@@ -164,24 +218,33 @@ public class GleapsdkModule extends ReactContextBaseJavaModule {
|
|
|
164
218
|
Gleap.getInstance().setLanguage(language);
|
|
165
219
|
}
|
|
166
220
|
|
|
221
|
+
@ReactMethod
|
|
222
|
+
public void enableDebugConsoleLog() {}
|
|
223
|
+
|
|
167
224
|
@ReactMethod
|
|
168
225
|
public void identify(String userid, ReadableMap data) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
226
|
+
getCurrentActivity().runOnUiThread(
|
|
227
|
+
new Runnable() {
|
|
228
|
+
@Override
|
|
229
|
+
public void run() {
|
|
230
|
+
JSONObject jsonObject = null;
|
|
231
|
+
String name = "";
|
|
232
|
+
String email = "";
|
|
233
|
+
try {
|
|
234
|
+
jsonObject = GleapUtil.convertMapToJson(data);
|
|
235
|
+
if (jsonObject.has("name")) {
|
|
236
|
+
name = jsonObject.getString("name");
|
|
237
|
+
}
|
|
238
|
+
if (jsonObject.has("email")) {
|
|
239
|
+
email = jsonObject.getString("email");
|
|
240
|
+
}
|
|
241
|
+
} catch (JSONException e) {
|
|
242
|
+
e.printStackTrace();
|
|
243
|
+
}
|
|
244
|
+
GleapUserProperties gleapUserSession = new GleapUserProperties(name, email);
|
|
245
|
+
Gleap.getInstance().identifyUser(userid, gleapUserSession);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
185
248
|
}
|
|
186
249
|
|
|
187
250
|
@ReactMethod
|
|
@@ -435,24 +498,30 @@ public class GleapsdkModule extends ReactContextBaseJavaModule {
|
|
|
435
498
|
* Show dev menu after shaking the phone.
|
|
436
499
|
*/
|
|
437
500
|
private void showDevMenu() {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
501
|
+
getCurrentActivity().runOnUiThread(
|
|
502
|
+
new Runnable() {
|
|
503
|
+
@Override
|
|
504
|
+
public void run() {
|
|
505
|
+
final ReactApplication application = (ReactApplication) getReactApplicationContext()
|
|
506
|
+
.getCurrentActivity()
|
|
507
|
+
.getApplication();
|
|
508
|
+
Handler mainHandler = new Handler(GleapsdkModule.this.getReactApplicationContext().getMainLooper());
|
|
509
|
+
Runnable myRunnable = new Runnable() {
|
|
510
|
+
@Override
|
|
511
|
+
public void run() {
|
|
512
|
+
try {
|
|
513
|
+
application
|
|
514
|
+
.getReactNativeHost()
|
|
515
|
+
.getReactInstanceManager()
|
|
516
|
+
.getDevSupportManager()
|
|
517
|
+
.showDevOptionsDialog();
|
|
518
|
+
} catch (Exception e) {
|
|
519
|
+
e.printStackTrace();
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
mainHandler.post(myRunnable);
|
|
453
524
|
}
|
|
454
|
-
}
|
|
455
|
-
};
|
|
456
|
-
mainHandler.post(myRunnable);
|
|
525
|
+
});
|
|
457
526
|
}
|
|
458
527
|
}
|
package/ios/Gleapsdk.m
CHANGED
|
@@ -35,8 +35,10 @@ RCT_EXPORT_MODULE()
|
|
|
35
35
|
|
|
36
36
|
RCT_EXPORT_METHOD(initialize:(NSString *)token)
|
|
37
37
|
{
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
39
|
+
[self initSDK];
|
|
40
|
+
[Gleap initializeWithToken: token];
|
|
41
|
+
});
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
- (void)configLoaded:(NSDictionary *)config {
|
|
@@ -129,101 +131,142 @@ RCT_EXPORT_METHOD(initialize:(NSString *)token)
|
|
|
129
131
|
|
|
130
132
|
RCT_EXPORT_METHOD(sendSilentBugReport:(NSString *)description andSeverity:(NSString *)priority)
|
|
131
133
|
{
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
135
|
+
GleapBugSeverity prio = MEDIUM;
|
|
136
|
+
if ([priority isEqualToString: @"LOW"]) {
|
|
137
|
+
prio = LOW;
|
|
138
|
+
}
|
|
139
|
+
if ([priority isEqualToString: @"HIGH"]) {
|
|
140
|
+
prio = HIGH;
|
|
141
|
+
}
|
|
142
|
+
[Gleap sendSilentBugReportWith: description andSeverity: prio];
|
|
143
|
+
});
|
|
140
144
|
}
|
|
141
145
|
|
|
142
146
|
RCT_EXPORT_METHOD(attachNetworkLog:(NSArray *)networkLogs)
|
|
143
147
|
{
|
|
144
|
-
|
|
148
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
149
|
+
[Gleap attachData: @{ @"networkLogs": networkLogs }];
|
|
150
|
+
});
|
|
145
151
|
}
|
|
146
152
|
|
|
147
|
-
RCT_EXPORT_METHOD(startFeedbackFlow)
|
|
153
|
+
RCT_EXPORT_METHOD(startFeedbackFlow:(NSString *)feedbackFlow)
|
|
148
154
|
{
|
|
149
|
-
|
|
155
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
156
|
+
[Gleap startFeedbackFlow: feedbackFlow];
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
RCT_EXPORT_METHOD(enableDebugConsoleLog)
|
|
161
|
+
{
|
|
162
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
163
|
+
[Gleap enableDebugConsoleLog];
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
RCT_EXPORT_METHOD(open)
|
|
168
|
+
{
|
|
169
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
170
|
+
[Gleap open];
|
|
171
|
+
});
|
|
150
172
|
}
|
|
151
173
|
|
|
152
174
|
RCT_EXPORT_METHOD(setLanguage:(NSString *)language)
|
|
153
175
|
{
|
|
154
|
-
|
|
176
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
177
|
+
[Gleap setLanguage: language];
|
|
178
|
+
});
|
|
155
179
|
}
|
|
156
180
|
|
|
157
181
|
RCT_EXPORT_METHOD(clearIdentity)
|
|
158
182
|
{
|
|
159
|
-
|
|
183
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
184
|
+
[Gleap clearIdentity];
|
|
185
|
+
});
|
|
160
186
|
}
|
|
161
187
|
|
|
162
188
|
RCT_EXPORT_METHOD(identify:(NSString *)userId withUserProperties: (NSDictionary *)userProperties)
|
|
163
189
|
{
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
[Gleap identifyUserWith: userId andData: userProperty];
|
|
190
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
191
|
+
GleapUserProperty *userProperty = [[GleapUserProperty alloc] init];
|
|
192
|
+
if (userProperties != nil && [userProperties objectForKey: @"name"] != nil) {
|
|
193
|
+
userProperty.name = [userProperties objectForKey: @"name"];
|
|
194
|
+
}
|
|
195
|
+
if (userProperties != nil && [userProperties objectForKey: @"email"] != nil) {
|
|
196
|
+
userProperty.email = [userProperties objectForKey: @"email"];
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
[Gleap identifyUserWith: userId andData: userProperty];
|
|
200
|
+
});
|
|
176
201
|
}
|
|
177
202
|
|
|
178
203
|
RCT_EXPORT_METHOD(attachCustomData:(NSDictionary *)customData)
|
|
179
204
|
{
|
|
180
|
-
|
|
205
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
206
|
+
[Gleap attachCustomData: customData];
|
|
207
|
+
});
|
|
181
208
|
}
|
|
182
209
|
|
|
183
210
|
RCT_EXPORT_METHOD(setCustomData:(NSString *)key andData:(NSString *)value)
|
|
184
211
|
{
|
|
185
|
-
|
|
212
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
213
|
+
[Gleap setCustomData: value forKey: key];
|
|
214
|
+
});
|
|
186
215
|
}
|
|
187
216
|
|
|
188
217
|
RCT_EXPORT_METHOD(removeCustomDataForKey:(NSString *)key)
|
|
189
218
|
{
|
|
190
|
-
|
|
219
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
220
|
+
[Gleap removeCustomDataForKey: key];
|
|
221
|
+
});
|
|
191
222
|
}
|
|
192
223
|
|
|
193
224
|
RCT_EXPORT_METHOD(clearCustomData)
|
|
194
225
|
{
|
|
195
|
-
|
|
226
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
227
|
+
[Gleap clearCustomData];
|
|
228
|
+
});
|
|
196
229
|
}
|
|
197
230
|
|
|
198
231
|
RCT_EXPORT_METHOD(setApiUrl: (NSString *)apiUrl)
|
|
199
232
|
{
|
|
200
|
-
|
|
233
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
234
|
+
[Gleap setApiUrl: apiUrl];
|
|
235
|
+
});
|
|
201
236
|
}
|
|
202
237
|
|
|
203
238
|
RCT_EXPORT_METHOD(setWidgetUrl: (NSString *)apiUrl)
|
|
204
239
|
{
|
|
205
|
-
|
|
240
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
241
|
+
[Gleap setWidgetUrl: apiUrl];
|
|
242
|
+
});
|
|
206
243
|
}
|
|
207
244
|
|
|
208
245
|
RCT_EXPORT_METHOD(logEvent:(NSString *)name andData:(NSDictionary *)data)
|
|
209
246
|
{
|
|
210
|
-
|
|
247
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
248
|
+
[Gleap logEvent: name withData: data];
|
|
249
|
+
});
|
|
211
250
|
}
|
|
212
251
|
|
|
213
252
|
RCT_EXPORT_METHOD(removeAllAttachments)
|
|
214
253
|
{
|
|
215
|
-
|
|
254
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
255
|
+
[Gleap removeAllAttachments];
|
|
256
|
+
});
|
|
216
257
|
}
|
|
217
258
|
|
|
218
259
|
RCT_EXPORT_METHOD(addAttachment:(NSString *)base64file withFileName:(NSString *)fileName)
|
|
219
260
|
{
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
261
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
262
|
+
NSArray *dataParts = [base64file componentsSeparatedByString: @";base64,"];
|
|
263
|
+
NSData *fileData = [[NSData alloc] initWithBase64EncodedString: [dataParts lastObject] options:0];
|
|
264
|
+
if (fileData != nil) {
|
|
265
|
+
[Gleap addAttachmentWithData: fileData andName: fileName];
|
|
266
|
+
} else {
|
|
267
|
+
NSLog(@"[Gleap]: Invalid base64 string passed.");
|
|
268
|
+
}
|
|
269
|
+
});
|
|
227
270
|
}
|
|
228
271
|
|
|
229
272
|
@end
|
package/lib/commonjs/index.js
CHANGED
|
@@ -55,7 +55,7 @@ if (GleapSdk) {
|
|
|
55
55
|
if (_reactNative.Platform.OS === 'android') {
|
|
56
56
|
GleapSdk.attachNetworkLog(JSON.stringify(requests));
|
|
57
57
|
} else {
|
|
58
|
-
GleapSdk.attachNetworkLog(requests);
|
|
58
|
+
GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
61
|
gleapEmitter.addListener('customActionTriggered', data => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["LINKING_ERROR","Platform","select","ios","default","GleapSdk","NativeModules","Gleapsdk","Proxy","get","Error","networkLogger","GleapNetworkIntercepter","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","data","isJsonString","name","length","i","str","e"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,aAAa,GAChB,gFAAD,GACAC,sBAASC,MAAT,CAAgB;AAAEC,EAAAA,GAAG,EAAE,gCAAP;AAAyCC,EAAAA,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["LINKING_ERROR","Platform","select","ios","default","GleapSdk","NativeModules","Gleapsdk","Proxy","get","Error","networkLogger","GleapNetworkIntercepter","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","data","isJsonString","name","length","i","str","e"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\nconst networkLogger = new GleapNetworkIntercepter();\n\nGleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n};\n\nGleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n};\n\nif (GleapSdk) {\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n}\n\nfunction isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
|
|
@@ -49,7 +49,7 @@ class BugBattleNetworkIntercepter {
|
|
|
49
49
|
|
|
50
50
|
var startDate = this.requests[gleapRequestId].date;
|
|
51
51
|
|
|
52
|
-
if (startDate) {
|
|
52
|
+
if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {
|
|
53
53
|
this.requests[gleapRequestId].duration = new Date().getTime() - startDate.getTime();
|
|
54
54
|
this.requests[gleapRequestId].date = this.requests[gleapRequestId].date.toString();
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["networklogger.ts"],"names":["BugBattleNetworkIntercepter","getRequests","Object","values","requests","setMaxRequests","maxRequests","setStopped","stopped","cleanRequests","keys","length","keysToRemove","slice","i","calcRequestTime","gleapRequestId","startDate","date","duration","Date","getTime","toString","contentSizeOk","text","size","kiloBytes","megaBytes","start","interceptNetworkRequests","onFetch","params","method","request","payload","body","headers","type","url","onFetchLoad","req","then","responseText","success","response","status","statusText","onFetchFailed","_err","onOpen","args","onSend","requestHeaders","onError","onLoad","contentType","getResponseHeader","isTextOrJSON","includes","responseType","_response","callback","self","open","XMLHttpRequest","prototype","send","wrappedSetRequestHeader","setRequestHeader","header","value","push","requestId","arguments","addEventListener","apply","global","originalFetch","fetch","data","textData","Promise","resolve","json","JSON","parse","catch","err"],"mappings":";;;;;;;;;AAAA,MAAMA,2BAAN,CAAkC;AAAA;AAAA,uCACpB,CADoB;;AAAA,sCAEhB,EAFgB;;AAAA,yCAGlB,EAHkB;;AAAA,qCAItB,KAJsB;AAAA;;AAMhCC,EAAAA,WAAW,GAAG;AACZ,WAAOC,MAAM,CAACC,MAAP,CAAc,KAAKC,QAAnB,CAAP;AACD;;AAEDC,EAAAA,cAAc,CAACC,WAAD,EAAsB;AAClC,SAAKA,WAAL,GAAmBA,WAAnB;AACD;;AAEDC,EAAAA,UAAU,CAACC,OAAD,EAAmB;AAC3B,SAAKA,OAAL,GAAeA,OAAf;AACD;;AAEDC,EAAAA,aAAa,GAAG;AACd,QAAIC,IAAI,GAAGR,MAAM,CAACQ,IAAP,CAAY,KAAKN,QAAjB,CAAX;;AACA,QAAIM,IAAI,CAACC,MAAL,GAAc,KAAKL,WAAvB,EAAoC;AAClC,UAAIM,YAAY,GAAGF,IAAI,CAACG,KAAL,CAAW,CAAX,EAAcH,IAAI,CAACC,MAAL,GAAc,KAAKL,WAAjC,CAAnB;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,YAAY,CAACD,MAAjC,EAAyCG,CAAC,EAA1C,EAA8C;AAC5C,eAAO,KAAKV,QAAL,CAAcQ,YAAY,CAACE,CAAD,CAA1B,CAAP;AACD;AACF;AACF;;AAEDC,EAAAA,eAAe,CAACC,cAAD,EAAkC;AAC/C,QAAI,CAAC,KAAKZ,QAAL,CAAcY,cAAd,CAAL,EAAoC;AAClC;AACD;;AAED,QAAIC,SAAS,GAAG,KAAKb,QAAL,CAAcY,cAAd,EAA8BE,IAA9C;;AACA,QAAID,SAAJ,EAAe;AACb,WAAKb,QAAL,CAAcY,cAAd,EAA8BG,QAA9B,GACE,IAAIC,IAAJ,GAAWC,OAAX,KAAuBJ,SAAS,CAACI,OAAV,EADzB;AAEA,WAAKjB,QAAL,CAAcY,cAAd,EAA8BE,IAA9B,GACE,KAAKd,QAAL,CAAcY,cAAd,EAA8BE,IAA9B,CAAmCI,QAAnC,EADF;AAED;AACF;;AAEDC,EAAAA,aAAa,CAACC,IAAD,EAAe;AAC1B,QAAIA,IAAI,IAAIA,IAAI,CAACb,MAAjB,EAAyB;AACvB,YAAMc,IAAI,GAAGD,IAAI,CAACb,MAAL,GAAc,EAA3B;AACA,YAAMe,SAAS,GAAGD,IAAI,GAAG,IAAzB;AACA,YAAME,SAAS,GAAGD,SAAS,GAAG,IAA9B;;AACA,UAAIC,SAAS,GAAG,GAAhB,EAAqB;AACnB,eAAO,IAAP;AACD;AACF;;AACD,WAAO,KAAP;AACD;;AAEDC,EAAAA,KAAK,GAAG;AACN,SAAKrB,UAAL,CAAgB,KAAhB;AACA,SAAKsB,wBAAL,CAA8B;AAC5BC,MAAAA,OAAO,EAAE,CAACC,MAAD,EAAcf,cAAd,KAAsC;AAC7C,YAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AAED,YAAIuB,MAAM,CAACpB,MAAP,IAAiB,CAArB,EAAwB;AACtB,cAAIqB,MAAM,GAAGD,MAAM,CAAC,CAAD,CAAN,CAAUC,MAAV,GAAmBD,MAAM,CAAC,CAAD,CAAN,CAAUC,MAA7B,GAAsC,KAAnD;AACA,eAAK5B,QAAL,CAAcY,cAAd,IAAgC;AAC9BiB,YAAAA,OAAO,EAAE;AACPC,cAAAA,OAAO,EAAEH,MAAM,CAAC,CAAD,CAAN,CAAUI,IADZ;AAEPC,cAAAA,OAAO,EAAEL,MAAM,CAAC,CAAD,CAAN,CAAUK;AAFZ,aADqB;AAK9BC,YAAAA,IAAI,EAAEL,MALwB;AAM9BM,YAAAA,GAAG,EAAEP,MAAM,CAAC,CAAD,CANmB;AAO9Bb,YAAAA,IAAI,EAAE,IAAIE,IAAJ;AAPwB,WAAhC;AASD,SAXD,MAWO;AACL,eAAKhB,QAAL,CAAcY,cAAd,IAAgC;AAC9BiB,YAAAA,OAAO,EAAE,EADqB;AAE9BK,YAAAA,GAAG,EAAEP,MAAM,CAAC,CAAD,CAFmB;AAG9BM,YAAAA,IAAI,EAAE,KAHwB;AAI9BnB,YAAAA,IAAI,EAAE,IAAIE,IAAJ;AAJwB,WAAhC;AAMD;;AAED,aAAKX,aAAL;AACD,OA3B2B;AA4B5B8B,MAAAA,WAAW,EAAE,CAACC,GAAD,EAAWxB,cAAX,KAAmC;AAC9C,YAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AAEDgC,QAAAA,GAAG,CAAChB,IAAJ,GAAWiB,IAAX,CAAiBC,YAAD,IAAuB;AACrC,eAAKtC,QAAL,CAAcY,cAAd,EAA8B2B,OAA9B,GAAwC,IAAxC;AACA,eAAKvC,QAAL,CAAcY,cAAd,EAA8B4B,QAA9B,GAAyC;AACvCC,YAAAA,MAAM,EAAEL,GAAG,CAACK,MAD2B;AAEvCC,YAAAA,UAAU,EAAEN,GAAG,CAACM,UAFuB;AAGvCJ,YAAAA,YAAY,EAAE,KAAKnB,aAAL,CAAmBmB,YAAnB,IACVA,YADU,GAEV;AALmC,WAAzC;AAQA,eAAK3B,eAAL,CAAqBC,cAArB;AACA,eAAKP,aAAL;AACD,SAZD;AAaD,OA9C2B;AA+C5BsC,MAAAA,aAAa,EAAE,CAACC,IAAD,EAAYhC,cAAZ,KAAoC;AACjD,YAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AAED,aAAKJ,QAAL,CAAcY,cAAd,EAA8B2B,OAA9B,GAAwC,KAAxC;AACA,aAAK5B,eAAL,CAAqBC,cAArB;AACA,aAAKP,aAAL;AACD,OAvD2B;AAwD5BwC,MAAAA,MAAM,EAAE,CAAChB,OAAD,EAAeiB,IAAf,KAAwC;AAC9C,YAAI,KAAK1C,OAAT,EAAkB;AAChB;AACD;;AAED,YACEyB,OAAO,IACPA,OAAO,CAACjB,cADR,IAEAkC,IAAI,CAACvC,MAAL,IAAe,CAFf,IAGA,KAAKP,QAJP,EAKE;AACA,eAAKA,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,IAAwC;AACtCqB,YAAAA,IAAI,EAAEa,IAAI,CAAC,CAAD,CAD4B;AAEtCZ,YAAAA,GAAG,EAAEY,IAAI,CAAC,CAAD,CAF6B;AAGtChC,YAAAA,IAAI,EAAE,IAAIE,IAAJ;AAHgC,WAAxC;AAKD;;AAED,aAAKX,aAAL;AACD,OA3E2B;AA4E5B0C,MAAAA,MAAM,EAAE,CAAClB,OAAD,EAAeiB,IAAf,KAAwC;AAC9C,YAAI,KAAK1C,OAAT,EAAkB;AAChB;AACD;;AAED,YACEyB,OAAO,IACPA,OAAO,CAACjB,cADR,IAEAkC,IAAI,CAACvC,MAAL,GAAc,CAFd,IAGA,KAAKP,QAHL,IAIA,KAAKA,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,CALF,EAME;AACA,eAAKZ,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,EAAsCiB,OAAtC,GAAgD;AAC9CC,YAAAA,OAAO,EAAEgB,IAAI,CAAC,CAAD,CADiC;AAE9Cd,YAAAA,OAAO,EAAEH,OAAO,CAACmB;AAF6B,WAAhD;AAID;;AAED,aAAK3C,aAAL;AACD,OA/F2B;AAgG5B4C,MAAAA,OAAO,EAAGpB,OAAD,IAAkB;AACzB,YACE,CAAC,KAAKzB,OAAN,IACA,KAAKJ,QADL,IAEA6B,OAFA,IAGAA,OAAO,CAACjB,cAHR,IAIA,KAAKZ,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,CALF,EAME;AACA,eAAKZ,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,EAAsC2B,OAAtC,GAAgD,KAAhD;AACA,eAAK5B,eAAL,CAAqBkB,OAAO,CAACjB,cAA7B;AACD;;AAED,aAAKP,aAAL;AACD,OA7G2B;AA8G5B6C,MAAAA,MAAM,EAAGrB,OAAD,IAAkB;AACxB,YAAI,KAAKzB,OAAT,EAAkB;AAChB;AACD;;AAED,YACEyB,OAAO,IACPA,OAAO,CAACjB,cADR,IAEA,KAAKZ,QAFL,IAGA,KAAKA,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,CAJF,EAKE;AACA,gBAAMuC,WAAW,GAAGtB,OAAO,CAACuB,iBAAR,CAA0B,cAA1B,CAApB;AACA,gBAAMC,YAAY,GAChBF,WAAW,KACVA,WAAW,CAACG,QAAZ,CAAqB,MAArB,KAAgCH,WAAW,CAACG,QAAZ,CAAqB,MAArB,CADtB,CADb;AAIA,cAAIhB,YAAY,GAAG,MAAMa,WAAN,GAAoB,GAAvC;;AACA,cAAItB,OAAO,CAAC0B,YAAR,KAAyB,EAAzB,IAA+B1B,OAAO,CAAC0B,YAAR,KAAyB,MAA5D,EAAoE;AAClEjB,YAAAA,YAAY,GAAGT,OAAO,CAACS,YAAvB;AACD;;AACD,cAAIT,OAAO,CAAC2B,SAAR,IAAqBH,YAAzB,EAAuC;AACrCf,YAAAA,YAAY,GAAGT,OAAO,CAAC2B,SAAvB;AACD;;AAED,eAAKxD,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,EAAsC2B,OAAtC,GAAgD,IAAhD;AACA,eAAKvC,QAAL,CAAc6B,OAAO,CAACjB,cAAtB,EAAsC4B,QAAtC,GAAiD;AAC/CC,YAAAA,MAAM,EAAEZ,OAAO,CAACY,MAD+B;AAE/CH,YAAAA,YAAY,EAAE,KAAKnB,aAAL,CAAmBmB,YAAnB,IACVA,YADU,GAEV;AAJ2C,WAAjD;AAOA,eAAK3B,eAAL,CAAqBkB,OAAO,CAACjB,cAA7B;AACD;;AAED,aAAKP,aAAL;AACD;AAlJ2B,KAA9B;AAoJD;;AAEDoB,EAAAA,wBAAwB,CAACgC,QAAD,EAAgB;AACtC;AACA,QAAIC,IAAI,GAAG,IAAX,CAFsC,CAItC;;AACA,UAAMC,IAAI,GAAGC,cAAc,CAACC,SAAf,CAAyBF,IAAtC;AACA,UAAMG,IAAI,GAAGF,cAAc,CAACC,SAAf,CAAyBC,IAAtC,CANsC,CAQtC;;AACAF,IAAAA,cAAc,CAACC,SAAf,CAAyBE,uBAAzB,GACEH,cAAc,CAACC,SAAf,CAAyBG,gBAD3B;;AAEAJ,IAAAA,cAAc,CAACC,SAAf,CAAyBG,gBAAzB,GAA4C,UAAUC,MAAV,EAAkBC,KAAlB,EAAyB;AACnE;AACA,WAAKH,uBAAL,CAA6BE,MAA7B,EAAqCC,KAArC,EAFmE,CAInE;;AACA,UAAI,CAAC,KAAKlB,cAAV,EAA0B;AACxB;AACA,aAAKA,cAAL,GAAsB,EAAtB;AACD,OARkE,CAUnE;;;AACA,UAAI,CAAC,KAAKA,cAAL,CAAoBiB,MAApB,CAAL,EAAkC;AAChC;AACA,aAAKjB,cAAL,CAAoBiB,MAApB,IAA8B,EAA9B;AACD,OAdkE,CAgBnE;;;AACA,WAAKjB,cAAL,CAAoBiB,MAApB,EAA4BE,IAA5B,CAAiCD,KAAjC;AACD,KAlBD;;AAoBAN,IAAAA,cAAc,CAACC,SAAf,CAAyBF,IAAzB,GAAgC,YAAY;AACzC,UAAD,CAAc/C,cAAd,GAA+B,EAAE8C,IAAI,CAACU,SAAtC;AACAX,MAAAA,QAAQ,CAACZ,MAAT,IAAmBY,QAAQ,CAACZ,MAAT,CAAgB,IAAhB,EAAsBwB,SAAtB,CAAnB;;AAEA,UAAIZ,QAAQ,CAACP,MAAb,EAAqB;AACnB,aAAKoB,gBAAL,CAAsB,MAAtB,EAA8B,YAAY;AACxC;AACAb,UAAAA,QAAQ,CAACP,MAAT,CAAgB,IAAhB;AACD,SAHD;AAID;;AACD,UAAIO,QAAQ,CAACR,OAAb,EAAsB;AACpB,aAAKqB,gBAAL,CAAsB,OAAtB,EAA+B,YAAY;AACzC;AACAb,UAAAA,QAAQ,CAACR,OAAT,CAAiB,IAAjB;AACD,SAHD;AAID,OAfyC,CAiB1C;;;AACA,aAAOU,IAAI,CAACY,KAAL,CAAW,IAAX,EAAiBF,SAAjB,CAAP;AACD,KAnBD;;AAqBAT,IAAAA,cAAc,CAACC,SAAf,CAAyBC,IAAzB,GAAgC,YAAY;AAC1CL,MAAAA,QAAQ,CAACV,MAAT,IAAmBU,QAAQ,CAACV,MAAT,CAAgB,IAAhB,EAAsBsB,SAAtB,CAAnB,CAD0C,CAE1C;;AACA,aAAOP,IAAI,CAACS,KAAL,CAAW,IAAX,EAAiBF,SAAjB,CAAP;AACD,KAJD,CApDsC,CA0DtC;;;AACA,QAAIG,MAAJ,EAAY;AACV,OAAC,YAAY;AACX,YAAIC,aAAa,GAAGD,MAAM,CAACE,KAA3B;;AACAF,QAAAA,MAAM,CAACE,KAAP,GAAe,YAAY;AACzB,cAAI9D,cAAc,GAAG,EAAE8C,IAAI,CAACU,SAA5B;AACAX,UAAAA,QAAQ,CAAC/B,OAAT,CAAiB2C,SAAjB,EAA4BzD,cAA5B;AAEA,iBACE6D,aAAa,CACX;AADW,WAEVF,KAFH,CAES,IAFT,EAEeF,SAFf,EAGGhC,IAHH,CAGQ,UAAUsC,IAAV,EAAgB;AACpB,mBAAOA,IAAI,CAACvD,IAAL,GAAYiB,IAAZ,CAAkBuC,QAAD,IAAc;AACpCD,cAAAA,IAAI,CAACvD,IAAL,GAAY,YAAY;AACtB,uBAAOyD,OAAO,CAACC,OAAR,CAAgBF,QAAhB,CAAP;AACD,eAFD;;AAIAD,cAAAA,IAAI,CAACI,IAAL,GAAY,YAAY;AACtB,uBAAOF,OAAO,CAACC,OAAR,CAAgBE,IAAI,CAACC,KAAL,CAAWL,QAAX,CAAhB,CAAP;AACD,eAFD;;AAIAnB,cAAAA,QAAQ,CAACtB,WAAT,CAAqBwC,IAArB,EAA2B/D,cAA3B;AAEA,qBAAO+D,IAAP;AACD,aAZM,CAAP;AAaD,WAjBH,EAkBGO,KAlBH,CAkBUC,GAAD,IAAS;AACd1B,YAAAA,QAAQ,CAACd,aAAT,CAAuBwC,GAAvB,EAA4BvE,cAA5B;AACA,kBAAMuE,GAAN;AACD,WArBH,CADF;AAwBD,SA5BD;AA6BD,OA/BD;AAgCD;;AAED,WAAO1B,QAAP;AACD;;AA7S+B;;eAgTnB7D,2B","sourcesContent":["class BugBattleNetworkIntercepter {\n requestId = 0;\n requests: any = {};\n maxRequests = 10;\n stopped = false;\n\n getRequests() {\n return Object.values(this.requests);\n }\n\n setMaxRequests(maxRequests: number) {\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped: boolean) {\n this.stopped = stopped;\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(gleapRequestId: string | number) {\n if (!this.requests[gleapRequestId]) {\n return;\n }\n\n var startDate = this.requests[gleapRequestId].date;\n if (startDate) {\n this.requests[gleapRequestId].duration =\n new Date().getTime() - startDate.getTime();\n this.requests[gleapRequestId].date =\n this.requests[gleapRequestId].date.toString();\n }\n }\n\n contentSizeOk(text: string) {\n if (text && text.length) {\n const size = text.length * 16;\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n if (megaBytes < 0.5) {\n return true;\n }\n }\n return false;\n }\n\n start() {\n this.setStopped(false);\n this.interceptNetworkRequests({\n onFetch: (params: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n if (params.length >= 2) {\n var method = params[1].method ? params[1].method : 'GET';\n this.requests[gleapRequestId] = {\n request: {\n payload: params[1].body,\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[gleapRequestId] = {\n request: {},\n url: params[0],\n type: 'GET',\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n req.text().then((responseText: any) => {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: req.statusText,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n });\n },\n onFetchFailed: (_err: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n this.requests[gleapRequestId].success = false;\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n },\n onOpen: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.gleapRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length > 0 &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].request = {\n payload: args[0],\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request: any) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.gleapRequestId &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].success = false;\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request: any) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n const contentType = request.getResponseHeader('content-type');\n const isTextOrJSON =\n contentType &&\n (contentType.includes('json') || contentType.includes('text'));\n\n var responseText = '<' + contentType + '>';\n if (request.responseType === '' || request.responseType === 'text') {\n responseText = request.responseText;\n }\n if (request._response && isTextOrJSON) {\n responseText = request._response;\n }\n\n this.requests[request.gleapRequestId].success = true;\n this.requests[request.gleapRequestId].response = {\n status: request.status,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback: any) {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // XMLHttpRequest\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // @ts-ignore\n XMLHttpRequest.prototype.wrappedSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n // @ts-ignore\n this.wrappedSetRequestHeader(header, value);\n\n // @ts-ignore\n if (!this.requestHeaders) {\n // @ts-ignore\n this.requestHeaders = {};\n }\n\n // @ts-ignore\n if (!this.requestHeaders[header]) {\n // @ts-ignore\n this.requestHeaders[header] = [];\n }\n\n // @ts-ignore\n this.requestHeaders[header].push(value);\n };\n\n XMLHttpRequest.prototype.open = function () {\n (this as any).gleapRequestId = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n\n if (callback.onLoad) {\n this.addEventListener('load', function () {\n // @ts-ignore\n callback.onLoad(this);\n });\n }\n if (callback.onError) {\n this.addEventListener('error', function () {\n // @ts-ignore\n callback.onError(this);\n });\n }\n\n // @ts-ignore\n return open.apply(this, arguments);\n };\n\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n // @ts-ignore\n return send.apply(this, arguments);\n };\n\n // Fetch\n if (global) {\n (function () {\n var originalFetch = global.fetch;\n global.fetch = function () {\n var gleapRequestId = ++self.requestId;\n callback.onFetch(arguments, gleapRequestId);\n\n return (\n originalFetch\n // @ts-ignore\n .apply(this, arguments)\n .then(function (data) {\n return data.text().then((textData) => {\n data.text = function () {\n return Promise.resolve(textData);\n };\n\n data.json = function () {\n return Promise.resolve(JSON.parse(textData));\n };\n\n callback.onFetchLoad(data, gleapRequestId);\n\n return data;\n });\n })\n .catch((err) => {\n callback.onFetchFailed(err, gleapRequestId);\n throw err;\n })\n );\n };\n })();\n }\n\n return callback;\n }\n}\n\nexport default BugBattleNetworkIntercepter;\n"]}
|
|
1
|
+
{"version":3,"sources":["networklogger.ts"],"names":["BugBattleNetworkIntercepter","getRequests","Object","values","requests","setMaxRequests","maxRequests","setStopped","stopped","cleanRequests","keys","length","keysToRemove","slice","i","calcRequestTime","gleapRequestId","startDate","date","isFrozen","duration","Date","getTime","toString","contentSizeOk","text","size","kiloBytes","megaBytes","start","interceptNetworkRequests","onFetch","params","method","request","payload","body","headers","type","url","onFetchLoad","req","then","responseText","success","response","status","statusText","onFetchFailed","_err","onOpen","args","onSend","requestHeaders","onError","onLoad","contentType","getResponseHeader","isTextOrJSON","includes","responseType","_response","callback","self","open","XMLHttpRequest","prototype","send","wrappedSetRequestHeader","setRequestHeader","header","value","push","requestId","arguments","addEventListener","apply","global","originalFetch","fetch","data","textData","Promise","resolve","json","JSON","parse","catch","err"],"mappings":"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","sourcesContent":["class BugBattleNetworkIntercepter {\n requestId = 0;\n requests: any = {};\n maxRequests = 10;\n stopped = false;\n\n getRequests() {\n return Object.values(this.requests);\n }\n\n setMaxRequests(maxRequests: number) {\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped: boolean) {\n this.stopped = stopped;\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(gleapRequestId: string | number) {\n if (!this.requests[gleapRequestId]) {\n return;\n }\n\n var startDate = this.requests[gleapRequestId].date;\n if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {\n this.requests[gleapRequestId].duration =\n new Date().getTime() - startDate.getTime();\n this.requests[gleapRequestId].date =\n this.requests[gleapRequestId].date.toString();\n }\n }\n\n contentSizeOk(text: string) {\n if (text && text.length) {\n const size = text.length * 16;\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n if (megaBytes < 0.5) {\n return true;\n }\n }\n return false;\n }\n\n start() {\n this.setStopped(false);\n this.interceptNetworkRequests({\n onFetch: (params: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n if (params.length >= 2) {\n var method = params[1].method ? params[1].method : 'GET';\n this.requests[gleapRequestId] = {\n request: {\n payload: params[1].body,\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[gleapRequestId] = {\n request: {},\n url: params[0],\n type: 'GET',\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n req.text().then((responseText: any) => {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: req.statusText,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n });\n },\n onFetchFailed: (_err: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n this.requests[gleapRequestId].success = false;\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n },\n onOpen: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.gleapRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length > 0 &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].request = {\n payload: args[0],\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request: any) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.gleapRequestId &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].success = false;\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request: any) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n const contentType = request.getResponseHeader('content-type');\n const isTextOrJSON =\n contentType &&\n (contentType.includes('json') || contentType.includes('text'));\n\n var responseText = '<' + contentType + '>';\n if (request.responseType === '' || request.responseType === 'text') {\n responseText = request.responseText;\n }\n if (request._response && isTextOrJSON) {\n responseText = request._response;\n }\n\n this.requests[request.gleapRequestId].success = true;\n this.requests[request.gleapRequestId].response = {\n status: request.status,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback: any) {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // XMLHttpRequest\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // @ts-ignore\n XMLHttpRequest.prototype.wrappedSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n // @ts-ignore\n this.wrappedSetRequestHeader(header, value);\n\n // @ts-ignore\n if (!this.requestHeaders) {\n // @ts-ignore\n this.requestHeaders = {};\n }\n\n // @ts-ignore\n if (!this.requestHeaders[header]) {\n // @ts-ignore\n this.requestHeaders[header] = [];\n }\n\n // @ts-ignore\n this.requestHeaders[header].push(value);\n };\n\n XMLHttpRequest.prototype.open = function () {\n (this as any).gleapRequestId = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n\n if (callback.onLoad) {\n this.addEventListener('load', function () {\n // @ts-ignore\n callback.onLoad(this);\n });\n }\n if (callback.onError) {\n this.addEventListener('error', function () {\n // @ts-ignore\n callback.onError(this);\n });\n }\n\n // @ts-ignore\n return open.apply(this, arguments);\n };\n\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n // @ts-ignore\n return send.apply(this, arguments);\n };\n\n // Fetch\n if (global) {\n (function () {\n var originalFetch = global.fetch;\n global.fetch = function () {\n var gleapRequestId = ++self.requestId;\n callback.onFetch(arguments, gleapRequestId);\n\n return (\n originalFetch\n // @ts-ignore\n .apply(this, arguments)\n .then(function (data) {\n return data.text().then((textData) => {\n data.text = function () {\n return Promise.resolve(textData);\n };\n\n data.json = function () {\n return Promise.resolve(JSON.parse(textData));\n };\n\n callback.onFetchLoad(data, gleapRequestId);\n\n return data;\n });\n })\n .catch((err) => {\n callback.onFetchFailed(err, gleapRequestId);\n throw err;\n })\n );\n };\n })();\n }\n\n return callback;\n }\n}\n\nexport default BugBattleNetworkIntercepter;\n"]}
|
package/lib/module/index.js
CHANGED
|
@@ -44,7 +44,7 @@ if (GleapSdk) {
|
|
|
44
44
|
if (Platform.OS === 'android') {
|
|
45
45
|
GleapSdk.attachNetworkLog(JSON.stringify(requests));
|
|
46
46
|
} else {
|
|
47
|
-
GleapSdk.attachNetworkLog(requests);
|
|
47
|
+
GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
gleapEmitter.addListener('customActionTriggered', data => {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","GleapNetworkIntercepter","LINKING_ERROR","select","ios","default","GleapSdk","Gleapsdk","Proxy","get","Error","networkLogger","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","data","isJsonString","name","length","i","str","e"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,EAA4CC,QAA5C,QAA4D,cAA5D;AACA,OAAOC,uBAAP,MAAoC,iBAApC;AAEA,MAAMC,aAAa,GAChB,gFAAD,GACAF,QAAQ,CAACG,MAAT,CAAgB;AAAEC,EAAAA,GAAG,EAAE,gCAAP;AAAyCC,EAAAA,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","GleapNetworkIntercepter","LINKING_ERROR","select","ios","default","GleapSdk","Gleapsdk","Proxy","get","Error","networkLogger","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","data","isJsonString","name","length","i","str","e"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\nconst networkLogger = new GleapNetworkIntercepter();\n\nGleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n};\n\nGleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n};\n\nif (GleapSdk) {\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n}\n\nfunction isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
|
|
@@ -42,7 +42,7 @@ class BugBattleNetworkIntercepter {
|
|
|
42
42
|
|
|
43
43
|
var startDate = this.requests[gleapRequestId].date;
|
|
44
44
|
|
|
45
|
-
if (startDate) {
|
|
45
|
+
if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {
|
|
46
46
|
this.requests[gleapRequestId].duration = new Date().getTime() - startDate.getTime();
|
|
47
47
|
this.requests[gleapRequestId].date = this.requests[gleapRequestId].date.toString();
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["networklogger.ts"],"names":["BugBattleNetworkIntercepter","getRequests","Object","values","requests","setMaxRequests","maxRequests","setStopped","stopped","cleanRequests","keys","length","keysToRemove","slice","i","calcRequestTime","gleapRequestId","startDate","date","duration","Date","getTime","toString","contentSizeOk","text","size","kiloBytes","megaBytes","start","interceptNetworkRequests","onFetch","params","method","request","payload","body","headers","type","url","onFetchLoad","req","then","responseText","success","response","status","statusText","onFetchFailed","_err","onOpen","args","onSend","requestHeaders","onError","onLoad","contentType","getResponseHeader","isTextOrJSON","includes","responseType","_response","callback","self","open","XMLHttpRequest","prototype","send","wrappedSetRequestHeader","setRequestHeader","header","value","push","requestId","arguments","addEventListener","apply","global","originalFetch","fetch","data","textData","Promise","resolve","json","JSON","parse","catch","err"],"mappings":"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","sourcesContent":["class BugBattleNetworkIntercepter {\n requestId = 0;\n requests: any = {};\n maxRequests = 10;\n stopped = false;\n\n getRequests() {\n return Object.values(this.requests);\n }\n\n setMaxRequests(maxRequests: number) {\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped: boolean) {\n this.stopped = stopped;\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(gleapRequestId: string | number) {\n if (!this.requests[gleapRequestId]) {\n return;\n }\n\n var startDate = this.requests[gleapRequestId].date;\n if (startDate) {\n this.requests[gleapRequestId].duration =\n new Date().getTime() - startDate.getTime();\n this.requests[gleapRequestId].date =\n this.requests[gleapRequestId].date.toString();\n }\n }\n\n contentSizeOk(text: string) {\n if (text && text.length) {\n const size = text.length * 16;\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n if (megaBytes < 0.5) {\n return true;\n }\n }\n return false;\n }\n\n start() {\n this.setStopped(false);\n this.interceptNetworkRequests({\n onFetch: (params: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n if (params.length >= 2) {\n var method = params[1].method ? params[1].method : 'GET';\n this.requests[gleapRequestId] = {\n request: {\n payload: params[1].body,\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[gleapRequestId] = {\n request: {},\n url: params[0],\n type: 'GET',\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n req.text().then((responseText: any) => {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: req.statusText,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n });\n },\n onFetchFailed: (_err: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n this.requests[gleapRequestId].success = false;\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n },\n onOpen: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.gleapRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length > 0 &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].request = {\n payload: args[0],\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request: any) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.gleapRequestId &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].success = false;\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request: any) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n const contentType = request.getResponseHeader('content-type');\n const isTextOrJSON =\n contentType &&\n (contentType.includes('json') || contentType.includes('text'));\n\n var responseText = '<' + contentType + '>';\n if (request.responseType === '' || request.responseType === 'text') {\n responseText = request.responseText;\n }\n if (request._response && isTextOrJSON) {\n responseText = request._response;\n }\n\n this.requests[request.gleapRequestId].success = true;\n this.requests[request.gleapRequestId].response = {\n status: request.status,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback: any) {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // XMLHttpRequest\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // @ts-ignore\n XMLHttpRequest.prototype.wrappedSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n // @ts-ignore\n this.wrappedSetRequestHeader(header, value);\n\n // @ts-ignore\n if (!this.requestHeaders) {\n // @ts-ignore\n this.requestHeaders = {};\n }\n\n // @ts-ignore\n if (!this.requestHeaders[header]) {\n // @ts-ignore\n this.requestHeaders[header] = [];\n }\n\n // @ts-ignore\n this.requestHeaders[header].push(value);\n };\n\n XMLHttpRequest.prototype.open = function () {\n (this as any).gleapRequestId = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n\n if (callback.onLoad) {\n this.addEventListener('load', function () {\n // @ts-ignore\n callback.onLoad(this);\n });\n }\n if (callback.onError) {\n this.addEventListener('error', function () {\n // @ts-ignore\n callback.onError(this);\n });\n }\n\n // @ts-ignore\n return open.apply(this, arguments);\n };\n\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n // @ts-ignore\n return send.apply(this, arguments);\n };\n\n // Fetch\n if (global) {\n (function () {\n var originalFetch = global.fetch;\n global.fetch = function () {\n var gleapRequestId = ++self.requestId;\n callback.onFetch(arguments, gleapRequestId);\n\n return (\n originalFetch\n // @ts-ignore\n .apply(this, arguments)\n .then(function (data) {\n return data.text().then((textData) => {\n data.text = function () {\n return Promise.resolve(textData);\n };\n\n data.json = function () {\n return Promise.resolve(JSON.parse(textData));\n };\n\n callback.onFetchLoad(data, gleapRequestId);\n\n return data;\n });\n })\n .catch((err) => {\n callback.onFetchFailed(err, gleapRequestId);\n throw err;\n })\n );\n };\n })();\n }\n\n return callback;\n }\n}\n\nexport default BugBattleNetworkIntercepter;\n"]}
|
|
1
|
+
{"version":3,"sources":["networklogger.ts"],"names":["BugBattleNetworkIntercepter","getRequests","Object","values","requests","setMaxRequests","maxRequests","setStopped","stopped","cleanRequests","keys","length","keysToRemove","slice","i","calcRequestTime","gleapRequestId","startDate","date","isFrozen","duration","Date","getTime","toString","contentSizeOk","text","size","kiloBytes","megaBytes","start","interceptNetworkRequests","onFetch","params","method","request","payload","body","headers","type","url","onFetchLoad","req","then","responseText","success","response","status","statusText","onFetchFailed","_err","onOpen","args","onSend","requestHeaders","onError","onLoad","contentType","getResponseHeader","isTextOrJSON","includes","responseType","_response","callback","self","open","XMLHttpRequest","prototype","send","wrappedSetRequestHeader","setRequestHeader","header","value","push","requestId","arguments","addEventListener","apply","global","originalFetch","fetch","data","textData","Promise","resolve","json","JSON","parse","catch","err"],"mappings":";;AAAA,MAAMA,2BAAN,CAAkC;AAAA;AAAA,uCACpB,CADoB;;AAAA,sCAEhB,EAFgB;;AAAA,yCAGlB,EAHkB;;AAAA,qCAItB,KAJsB;AAAA;;AAMhCC,EAAAA,WAAW,GAAG;AACZ,WAAOC,MAAM,CAACC,MAAP,CAAc,KAAKC,QAAnB,CAAP;AACD;;AAEDC,EAAAA,cAAc,CAACC,WAAD,EAAsB;AAClC,SAAKA,WAAL,GAAmBA,WAAnB;AACD;;AAEDC,EAAAA,UAAU,CAACC,OAAD,EAAmB;AAC3B,SAAKA,OAAL,GAAeA,OAAf;AACD;;AAEDC,EAAAA,aAAa,GAAG;AACd,QAAIC,IAAI,GAAGR,MAAM,CAACQ,IAAP,CAAY,KAAKN,QAAjB,CAAX;;AACA,QAAIM,IAAI,CAACC,MAAL,GAAc,KAAKL,WAAvB,EAAoC;AAClC,UAAIM,YAAY,GAAGF,IAAI,CAACG,KAAL,CAAW,CAAX,EAAcH,IAAI,CAACC,MAAL,GAAc,KAAKL,WAAjC,CAAnB;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,YAAY,CAACD,MAAjC,EAAyCG,CAAC,EAA1C,EAA8C;AAC5C,eAAO,KAAKV,QAAL,CAAcQ,YAAY,CAACE,CAAD,CAA1B,CAAP;AACD;AACF;AACF;;AAEDC,EAAAA,eAAe,CAACC,cAAD,EAAkC;AAC/C,QAAI,CAAC,KAAKZ,QAAL,CAAcY,cAAd,CAAL,EAAoC;AAClC;AACD;;AAED,QAAIC,SAAS,GAAG,KAAKb,QAAL,CAAcY,cAAd,EAA8BE,IAA9C;;AACA,QAAID,SAAS,IAAI,CAACf,MAAM,CAACiB,QAAP,CAAgB,KAAKf,QAAL,CAAcY,cAAd,CAAhB,CAAlB,EAAkE;AAChE,WAAKZ,QAAL,CAAcY,cAAd,EAA8BI,QAA9B,GACE,IAAIC,IAAJ,GAAWC,OAAX,KAAuBL,SAAS,CAACK,OAAV,EADzB;AAEA,WAAKlB,QAAL,CAAcY,cAAd,EAA8BE,IAA9B,GACE,KAAKd,QAAL,CAAcY,cAAd,EAA8BE,IAA9B,CAAmCK,QAAnC,EADF;AAED;AACF;;AAEDC,EAAAA,aAAa,CAACC,IAAD,EAAe;AAC1B,QAAIA,IAAI,IAAIA,IAAI,CAACd,MAAjB,EAAyB;AACvB,YAAMe,IAAI,GAAGD,IAAI,CAACd,MAAL,GAAc,EAA3B;AACA,YAAMgB,SAAS,GAAGD,IAAI,GAAG,IAAzB;AACA,YAAME,SAAS,GAAGD,SAAS,GAAG,IAA9B;;AACA,UAAIC,SAAS,GAAG,GAAhB,EAAqB;AACnB,eAAO,IAAP;AACD;AACF;;AACD,WAAO,KAAP;AACD;;AAEDC,EAAAA,KAAK,GAAG;AACN,SAAKtB,UAAL,CAAgB,KAAhB;AACA,SAAKuB,wBAAL,CAA8B;AAC5BC,MAAAA,OAAO,EAAE,CAACC,MAAD,EAAchB,cAAd,KAAsC;AAC7C,YAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AAED,YAAIwB,MAAM,CAACrB,MAAP,IAAiB,CAArB,EAAwB;AACtB,cAAIsB,MAAM,GAAGD,MAAM,CAAC,CAAD,CAAN,CAAUC,MAAV,GAAmBD,MAAM,CAAC,CAAD,CAAN,CAAUC,MAA7B,GAAsC,KAAnD;AACA,eAAK7B,QAAL,CAAcY,cAAd,IAAgC;AAC9BkB,YAAAA,OAAO,EAAE;AACPC,cAAAA,OAAO,EAAEH,MAAM,CAAC,CAAD,CAAN,CAAUI,IADZ;AAEPC,cAAAA,OAAO,EAAEL,MAAM,CAAC,CAAD,CAAN,CAAUK;AAFZ,aADqB;AAK9BC,YAAAA,IAAI,EAAEL,MALwB;AAM9BM,YAAAA,GAAG,EAAEP,MAAM,CAAC,CAAD,CANmB;AAO9Bd,YAAAA,IAAI,EAAE,IAAIG,IAAJ;AAPwB,WAAhC;AASD,SAXD,MAWO;AACL,eAAKjB,QAAL,CAAcY,cAAd,IAAgC;AAC9BkB,YAAAA,OAAO,EAAE,EADqB;AAE9BK,YAAAA,GAAG,EAAEP,MAAM,CAAC,CAAD,CAFmB;AAG9BM,YAAAA,IAAI,EAAE,KAHwB;AAI9BpB,YAAAA,IAAI,EAAE,IAAIG,IAAJ;AAJwB,WAAhC;AAMD;;AAED,aAAKZ,aAAL;AACD,OA3B2B;AA4B5B+B,MAAAA,WAAW,EAAE,CAACC,GAAD,EAAWzB,cAAX,KAAmC;AAC9C,YAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AAEDiC,QAAAA,GAAG,CAAChB,IAAJ,GAAWiB,IAAX,CAAiBC,YAAD,IAAuB;AACrC,eAAKvC,QAAL,CAAcY,cAAd,EAA8B4B,OAA9B,GAAwC,IAAxC;AACA,eAAKxC,QAAL,CAAcY,cAAd,EAA8B6B,QAA9B,GAAyC;AACvCC,YAAAA,MAAM,EAAEL,GAAG,CAACK,MAD2B;AAEvCC,YAAAA,UAAU,EAAEN,GAAG,CAACM,UAFuB;AAGvCJ,YAAAA,YAAY,EAAE,KAAKnB,aAAL,CAAmBmB,YAAnB,IACVA,YADU,GAEV;AALmC,WAAzC;AAQA,eAAK5B,eAAL,CAAqBC,cAArB;AACA,eAAKP,aAAL;AACD,SAZD;AAaD,OA9C2B;AA+C5BuC,MAAAA,aAAa,EAAE,CAACC,IAAD,EAAYjC,cAAZ,KAAoC;AACjD,YAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AAED,aAAKJ,QAAL,CAAcY,cAAd,EAA8B4B,OAA9B,GAAwC,KAAxC;AACA,aAAK7B,eAAL,CAAqBC,cAArB;AACA,aAAKP,aAAL;AACD,OAvD2B;AAwD5ByC,MAAAA,MAAM,EAAE,CAAChB,OAAD,EAAeiB,IAAf,KAAwC;AAC9C,YAAI,KAAK3C,OAAT,EAAkB;AAChB;AACD;;AAED,YACE0B,OAAO,IACPA,OAAO,CAAClB,cADR,IAEAmC,IAAI,CAACxC,MAAL,IAAe,CAFf,IAGA,KAAKP,QAJP,EAKE;AACA,eAAKA,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,IAAwC;AACtCsB,YAAAA,IAAI,EAAEa,IAAI,CAAC,CAAD,CAD4B;AAEtCZ,YAAAA,GAAG,EAAEY,IAAI,CAAC,CAAD,CAF6B;AAGtCjC,YAAAA,IAAI,EAAE,IAAIG,IAAJ;AAHgC,WAAxC;AAKD;;AAED,aAAKZ,aAAL;AACD,OA3E2B;AA4E5B2C,MAAAA,MAAM,EAAE,CAAClB,OAAD,EAAeiB,IAAf,KAAwC;AAC9C,YAAI,KAAK3C,OAAT,EAAkB;AAChB;AACD;;AAED,YACE0B,OAAO,IACPA,OAAO,CAAClB,cADR,IAEAmC,IAAI,CAACxC,MAAL,GAAc,CAFd,IAGA,KAAKP,QAHL,IAIA,KAAKA,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,CALF,EAME;AACA,eAAKZ,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,EAAsCkB,OAAtC,GAAgD;AAC9CC,YAAAA,OAAO,EAAEgB,IAAI,CAAC,CAAD,CADiC;AAE9Cd,YAAAA,OAAO,EAAEH,OAAO,CAACmB;AAF6B,WAAhD;AAID;;AAED,aAAK5C,aAAL;AACD,OA/F2B;AAgG5B6C,MAAAA,OAAO,EAAGpB,OAAD,IAAkB;AACzB,YACE,CAAC,KAAK1B,OAAN,IACA,KAAKJ,QADL,IAEA8B,OAFA,IAGAA,OAAO,CAAClB,cAHR,IAIA,KAAKZ,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,CALF,EAME;AACA,eAAKZ,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,EAAsC4B,OAAtC,GAAgD,KAAhD;AACA,eAAK7B,eAAL,CAAqBmB,OAAO,CAAClB,cAA7B;AACD;;AAED,aAAKP,aAAL;AACD,OA7G2B;AA8G5B8C,MAAAA,MAAM,EAAGrB,OAAD,IAAkB;AACxB,YAAI,KAAK1B,OAAT,EAAkB;AAChB;AACD;;AAED,YACE0B,OAAO,IACPA,OAAO,CAAClB,cADR,IAEA,KAAKZ,QAFL,IAGA,KAAKA,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,CAJF,EAKE;AACA,gBAAMwC,WAAW,GAAGtB,OAAO,CAACuB,iBAAR,CAA0B,cAA1B,CAApB;AACA,gBAAMC,YAAY,GAChBF,WAAW,KACVA,WAAW,CAACG,QAAZ,CAAqB,MAArB,KAAgCH,WAAW,CAACG,QAAZ,CAAqB,MAArB,CADtB,CADb;AAIA,cAAIhB,YAAY,GAAG,MAAMa,WAAN,GAAoB,GAAvC;;AACA,cAAItB,OAAO,CAAC0B,YAAR,KAAyB,EAAzB,IAA+B1B,OAAO,CAAC0B,YAAR,KAAyB,MAA5D,EAAoE;AAClEjB,YAAAA,YAAY,GAAGT,OAAO,CAACS,YAAvB;AACD;;AACD,cAAIT,OAAO,CAAC2B,SAAR,IAAqBH,YAAzB,EAAuC;AACrCf,YAAAA,YAAY,GAAGT,OAAO,CAAC2B,SAAvB;AACD;;AAED,eAAKzD,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,EAAsC4B,OAAtC,GAAgD,IAAhD;AACA,eAAKxC,QAAL,CAAc8B,OAAO,CAAClB,cAAtB,EAAsC6B,QAAtC,GAAiD;AAC/CC,YAAAA,MAAM,EAAEZ,OAAO,CAACY,MAD+B;AAE/CH,YAAAA,YAAY,EAAE,KAAKnB,aAAL,CAAmBmB,YAAnB,IACVA,YADU,GAEV;AAJ2C,WAAjD;AAOA,eAAK5B,eAAL,CAAqBmB,OAAO,CAAClB,cAA7B;AACD;;AAED,aAAKP,aAAL;AACD;AAlJ2B,KAA9B;AAoJD;;AAEDqB,EAAAA,wBAAwB,CAACgC,QAAD,EAAgB;AACtC;AACA,QAAIC,IAAI,GAAG,IAAX,CAFsC,CAItC;;AACA,UAAMC,IAAI,GAAGC,cAAc,CAACC,SAAf,CAAyBF,IAAtC;AACA,UAAMG,IAAI,GAAGF,cAAc,CAACC,SAAf,CAAyBC,IAAtC,CANsC,CAQtC;;AACAF,IAAAA,cAAc,CAACC,SAAf,CAAyBE,uBAAzB,GACEH,cAAc,CAACC,SAAf,CAAyBG,gBAD3B;;AAEAJ,IAAAA,cAAc,CAACC,SAAf,CAAyBG,gBAAzB,GAA4C,UAAUC,MAAV,EAAkBC,KAAlB,EAAyB;AACnE;AACA,WAAKH,uBAAL,CAA6BE,MAA7B,EAAqCC,KAArC,EAFmE,CAInE;;AACA,UAAI,CAAC,KAAKlB,cAAV,EAA0B;AACxB;AACA,aAAKA,cAAL,GAAsB,EAAtB;AACD,OARkE,CAUnE;;;AACA,UAAI,CAAC,KAAKA,cAAL,CAAoBiB,MAApB,CAAL,EAAkC;AAChC;AACA,aAAKjB,cAAL,CAAoBiB,MAApB,IAA8B,EAA9B;AACD,OAdkE,CAgBnE;;;AACA,WAAKjB,cAAL,CAAoBiB,MAApB,EAA4BE,IAA5B,CAAiCD,KAAjC;AACD,KAlBD;;AAoBAN,IAAAA,cAAc,CAACC,SAAf,CAAyBF,IAAzB,GAAgC,YAAY;AACzC,UAAD,CAAchD,cAAd,GAA+B,EAAE+C,IAAI,CAACU,SAAtC;AACAX,MAAAA,QAAQ,CAACZ,MAAT,IAAmBY,QAAQ,CAACZ,MAAT,CAAgB,IAAhB,EAAsBwB,SAAtB,CAAnB;;AAEA,UAAIZ,QAAQ,CAACP,MAAb,EAAqB;AACnB,aAAKoB,gBAAL,CAAsB,MAAtB,EAA8B,YAAY;AACxC;AACAb,UAAAA,QAAQ,CAACP,MAAT,CAAgB,IAAhB;AACD,SAHD;AAID;;AACD,UAAIO,QAAQ,CAACR,OAAb,EAAsB;AACpB,aAAKqB,gBAAL,CAAsB,OAAtB,EAA+B,YAAY;AACzC;AACAb,UAAAA,QAAQ,CAACR,OAAT,CAAiB,IAAjB;AACD,SAHD;AAID,OAfyC,CAiB1C;;;AACA,aAAOU,IAAI,CAACY,KAAL,CAAW,IAAX,EAAiBF,SAAjB,CAAP;AACD,KAnBD;;AAqBAT,IAAAA,cAAc,CAACC,SAAf,CAAyBC,IAAzB,GAAgC,YAAY;AAC1CL,MAAAA,QAAQ,CAACV,MAAT,IAAmBU,QAAQ,CAACV,MAAT,CAAgB,IAAhB,EAAsBsB,SAAtB,CAAnB,CAD0C,CAE1C;;AACA,aAAOP,IAAI,CAACS,KAAL,CAAW,IAAX,EAAiBF,SAAjB,CAAP;AACD,KAJD,CApDsC,CA0DtC;;;AACA,QAAIG,MAAJ,EAAY;AACV,OAAC,YAAY;AACX,YAAIC,aAAa,GAAGD,MAAM,CAACE,KAA3B;;AACAF,QAAAA,MAAM,CAACE,KAAP,GAAe,YAAY;AACzB,cAAI/D,cAAc,GAAG,EAAE+C,IAAI,CAACU,SAA5B;AACAX,UAAAA,QAAQ,CAAC/B,OAAT,CAAiB2C,SAAjB,EAA4B1D,cAA5B;AAEA,iBACE8D,aAAa,CACX;AADW,WAEVF,KAFH,CAES,IAFT,EAEeF,SAFf,EAGGhC,IAHH,CAGQ,UAAUsC,IAAV,EAAgB;AACpB,mBAAOA,IAAI,CAACvD,IAAL,GAAYiB,IAAZ,CAAkBuC,QAAD,IAAc;AACpCD,cAAAA,IAAI,CAACvD,IAAL,GAAY,YAAY;AACtB,uBAAOyD,OAAO,CAACC,OAAR,CAAgBF,QAAhB,CAAP;AACD,eAFD;;AAIAD,cAAAA,IAAI,CAACI,IAAL,GAAY,YAAY;AACtB,uBAAOF,OAAO,CAACC,OAAR,CAAgBE,IAAI,CAACC,KAAL,CAAWL,QAAX,CAAhB,CAAP;AACD,eAFD;;AAIAnB,cAAAA,QAAQ,CAACtB,WAAT,CAAqBwC,IAArB,EAA2BhE,cAA3B;AAEA,qBAAOgE,IAAP;AACD,aAZM,CAAP;AAaD,WAjBH,EAkBGO,KAlBH,CAkBUC,GAAD,IAAS;AACd1B,YAAAA,QAAQ,CAACd,aAAT,CAAuBwC,GAAvB,EAA4BxE,cAA5B;AACA,kBAAMwE,GAAN;AACD,WArBH,CADF;AAwBD,SA5BD;AA6BD,OA/BD;AAgCD;;AAED,WAAO1B,QAAP;AACD;;AA7S+B;;AAgTlC,eAAe9D,2BAAf","sourcesContent":["class BugBattleNetworkIntercepter {\n requestId = 0;\n requests: any = {};\n maxRequests = 10;\n stopped = false;\n\n getRequests() {\n return Object.values(this.requests);\n }\n\n setMaxRequests(maxRequests: number) {\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped: boolean) {\n this.stopped = stopped;\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(gleapRequestId: string | number) {\n if (!this.requests[gleapRequestId]) {\n return;\n }\n\n var startDate = this.requests[gleapRequestId].date;\n if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {\n this.requests[gleapRequestId].duration =\n new Date().getTime() - startDate.getTime();\n this.requests[gleapRequestId].date =\n this.requests[gleapRequestId].date.toString();\n }\n }\n\n contentSizeOk(text: string) {\n if (text && text.length) {\n const size = text.length * 16;\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n if (megaBytes < 0.5) {\n return true;\n }\n }\n return false;\n }\n\n start() {\n this.setStopped(false);\n this.interceptNetworkRequests({\n onFetch: (params: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n if (params.length >= 2) {\n var method = params[1].method ? params[1].method : 'GET';\n this.requests[gleapRequestId] = {\n request: {\n payload: params[1].body,\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[gleapRequestId] = {\n request: {},\n url: params[0],\n type: 'GET',\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n req.text().then((responseText: any) => {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: req.statusText,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n });\n },\n onFetchFailed: (_err: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n this.requests[gleapRequestId].success = false;\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n },\n onOpen: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.gleapRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length > 0 &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].request = {\n payload: args[0],\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request: any) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.gleapRequestId &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].success = false;\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request: any) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n const contentType = request.getResponseHeader('content-type');\n const isTextOrJSON =\n contentType &&\n (contentType.includes('json') || contentType.includes('text'));\n\n var responseText = '<' + contentType + '>';\n if (request.responseType === '' || request.responseType === 'text') {\n responseText = request.responseText;\n }\n if (request._response && isTextOrJSON) {\n responseText = request._response;\n }\n\n this.requests[request.gleapRequestId].success = true;\n this.requests[request.gleapRequestId].response = {\n status: request.status,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback: any) {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // XMLHttpRequest\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // @ts-ignore\n XMLHttpRequest.prototype.wrappedSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n // @ts-ignore\n this.wrappedSetRequestHeader(header, value);\n\n // @ts-ignore\n if (!this.requestHeaders) {\n // @ts-ignore\n this.requestHeaders = {};\n }\n\n // @ts-ignore\n if (!this.requestHeaders[header]) {\n // @ts-ignore\n this.requestHeaders[header] = [];\n }\n\n // @ts-ignore\n this.requestHeaders[header].push(value);\n };\n\n XMLHttpRequest.prototype.open = function () {\n (this as any).gleapRequestId = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n\n if (callback.onLoad) {\n this.addEventListener('load', function () {\n // @ts-ignore\n callback.onLoad(this);\n });\n }\n if (callback.onError) {\n this.addEventListener('error', function () {\n // @ts-ignore\n callback.onError(this);\n });\n }\n\n // @ts-ignore\n return open.apply(this, arguments);\n };\n\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n // @ts-ignore\n return send.apply(this, arguments);\n };\n\n // Fetch\n if (global) {\n (function () {\n var originalFetch = global.fetch;\n global.fetch = function () {\n var gleapRequestId = ++self.requestId;\n callback.onFetch(arguments, gleapRequestId);\n\n return (\n originalFetch\n // @ts-ignore\n .apply(this, arguments)\n .then(function (data) {\n return data.text().then((textData) => {\n data.text = function () {\n return Promise.resolve(textData);\n };\n\n data.json = function () {\n return Promise.resolve(JSON.parse(textData));\n };\n\n callback.onFetchLoad(data, gleapRequestId);\n\n return data;\n });\n })\n .catch((err) => {\n callback.onFetchFailed(err, gleapRequestId);\n throw err;\n })\n );\n };\n })();\n }\n\n return callback;\n }\n}\n\nexport default BugBattleNetworkIntercepter;\n"]}
|
|
@@ -4,7 +4,8 @@ export declare type GleapUserProperty = {
|
|
|
4
4
|
};
|
|
5
5
|
declare type GleapSdkType = {
|
|
6
6
|
initialize(token: string): void;
|
|
7
|
-
|
|
7
|
+
open(): void;
|
|
8
|
+
startFeedbackFlow(feedbackFlow: string): void;
|
|
8
9
|
sendSilentBugReport(description: string, severity: 'LOW' | 'MEDIUM' | 'HIGH'): void;
|
|
9
10
|
identify(userId: string, userProperties: GleapUserProperty): void;
|
|
10
11
|
clearIdentity(): void;
|
|
@@ -23,6 +24,7 @@ declare type GleapSdkType = {
|
|
|
23
24
|
removeAllAttachments(): void;
|
|
24
25
|
startNetworkLogging(): void;
|
|
25
26
|
stopNetworkLogging(): void;
|
|
27
|
+
enableDebugConsoleLog(): void;
|
|
26
28
|
};
|
|
27
29
|
declare const _default: GleapSdkType;
|
|
28
30
|
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-gleapsdk",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.2.1",
|
|
4
4
|
"description": "Know exactly why and how a bug happened. Get reports with screenshots, live action replays and all of the important metadata every time.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/index.tsx
CHANGED
|
@@ -14,7 +14,8 @@ export type GleapUserProperty = {
|
|
|
14
14
|
|
|
15
15
|
type GleapSdkType = {
|
|
16
16
|
initialize(token: string): void;
|
|
17
|
-
|
|
17
|
+
open(): void;
|
|
18
|
+
startFeedbackFlow(feedbackFlow: string): void;
|
|
18
19
|
sendSilentBugReport(
|
|
19
20
|
description: string,
|
|
20
21
|
severity: 'LOW' | 'MEDIUM' | 'HIGH'
|
|
@@ -36,6 +37,7 @@ type GleapSdkType = {
|
|
|
36
37
|
removeAllAttachments(): void;
|
|
37
38
|
startNetworkLogging(): void;
|
|
38
39
|
stopNetworkLogging(): void;
|
|
40
|
+
enableDebugConsoleLog(): void;
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
const GleapSdk = NativeModules.Gleapsdk
|
|
@@ -80,7 +82,7 @@ if (GleapSdk) {
|
|
|
80
82
|
if (Platform.OS === 'android') {
|
|
81
83
|
GleapSdk.attachNetworkLog(JSON.stringify(requests));
|
|
82
84
|
} else {
|
|
83
|
-
GleapSdk.attachNetworkLog(requests);
|
|
85
|
+
GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));
|
|
84
86
|
}
|
|
85
87
|
});
|
|
86
88
|
|
package/src/networklogger.ts
CHANGED
|
@@ -32,7 +32,7 @@ class BugBattleNetworkIntercepter {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
var startDate = this.requests[gleapRequestId].date;
|
|
35
|
-
if (startDate) {
|
|
35
|
+
if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {
|
|
36
36
|
this.requests[gleapRequestId].duration =
|
|
37
37
|
new Date().getTime() - startDate.getTime();
|
|
38
38
|
this.requests[gleapRequestId].date =
|