@sentry/react-native 7.12.0 → 8.0.0-beta.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/RNSentry.podspec +9 -4
- package/android/libs/replay-stubs.jar +0 -0
- package/android/src/main/java/io/sentry/react/RNSentryCompositeOptionsConfiguration.java +25 -0
- package/android/src/main/java/io/sentry/react/RNSentryJsonConverter.java +76 -0
- package/android/src/main/java/io/sentry/react/RNSentryJsonUtils.java +41 -0
- package/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +2 -395
- package/android/src/main/java/io/sentry/react/RNSentrySDK.java +68 -0
- package/android/src/main/java/io/sentry/react/RNSentryStart.java +413 -0
- package/android/src/main/java/io/sentry/react/RNSentryVersion.java +1 -1
- package/dist/js/replay/mobilereplay.d.ts +0 -26
- package/dist/js/replay/mobilereplay.d.ts.map +1 -1
- package/dist/js/replay/mobilereplay.js.map +1 -1
- package/dist/js/sdk.d.ts.map +1 -1
- package/dist/js/sdk.js +21 -10
- package/dist/js/sdk.js.map +1 -1
- package/dist/js/tools/metroconfig.d.ts +9 -1
- package/dist/js/tools/metroconfig.d.ts.map +1 -1
- package/dist/js/tools/metroconfig.js +9 -2
- package/dist/js/tools/metroconfig.js.map +1 -1
- package/dist/js/tools/sentryMetroSerializer.d.ts.map +1 -1
- package/dist/js/tools/sentryMetroSerializer.js +1 -0
- package/dist/js/tools/sentryMetroSerializer.js.map +1 -1
- package/dist/js/tools/sentryOptionsSerializer.d.ts +6 -0
- package/dist/js/tools/sentryOptionsSerializer.d.ts.map +1 -0
- package/dist/js/tools/sentryOptionsSerializer.js +92 -0
- package/dist/js/tools/sentryOptionsSerializer.js.map +1 -0
- package/dist/js/tools/utils.d.ts +2 -1
- package/dist/js/tools/utils.d.ts.map +1 -1
- package/dist/js/tools/utils.js.map +1 -1
- package/dist/js/utils/worldwide.d.ts +2 -0
- package/dist/js/utils/worldwide.d.ts.map +1 -1
- package/dist/js/utils/worldwide.js.map +1 -1
- package/dist/js/version.d.ts +1 -1
- package/dist/js/version.d.ts.map +1 -1
- package/dist/js/version.js +1 -1
- package/dist/js/version.js.map +1 -1
- package/ios/RNSentry+fetchNativeStack.m +1 -0
- package/ios/RNSentry.h +3 -0
- package/ios/RNSentry.mm +12 -45
- package/ios/RNSentryDependencyContainer.h +2 -1
- package/ios/RNSentryDependencyContainer.m +1 -0
- package/ios/RNSentryEmitNewFrameEvent.h +3 -0
- package/ios/RNSentryExperimentalOptions.m +1 -1
- package/ios/RNSentryFramesTrackerListener.h +2 -2
- package/ios/RNSentryFramesTrackerListener.m +2 -0
- package/ios/RNSentryOnDrawReporter.h +2 -1
- package/ios/RNSentryOnDrawReporter.m +2 -0
- package/ios/RNSentryRNSScreen.m +3 -4
- package/ios/RNSentryReplay.mm +0 -5
- package/ios/RNSentryReplayBreadcrumbConverter.m +12 -12
- package/ios/RNSentrySDK.h +31 -0
- package/ios/RNSentrySDK.m +78 -0
- package/ios/RNSentryStart.h +25 -0
- package/ios/RNSentryStart.m +228 -0
- package/ios/RNSentryVersion.m +1 -1
- package/ios/SentrySDKWrapper.m +2 -2
- package/ios/SentryScreenFramesWrapper.h +14 -0
- package/ios/SentryScreenFramesWrapper.m +39 -0
- package/package.json +2 -2
- package/plugin/build/logger.d.ts +24 -0
- package/plugin/build/logger.js +44 -0
- package/plugin/build/utils.d.ts +0 -18
- package/plugin/build/utils.js +1 -34
- package/plugin/build/version.d.ts +2 -0
- package/plugin/build/version.js +6 -0
- package/plugin/build/withSentry.d.ts +1 -0
- package/plugin/build/withSentry.js +11 -10
- package/plugin/build/withSentryAndroid.d.ts +6 -1
- package/plugin/build/withSentryAndroid.js +52 -8
- package/plugin/build/withSentryAndroidGradlePlugin.d.ts +1 -1
- package/plugin/build/withSentryAndroidGradlePlugin.js +8 -8
- package/plugin/build/withSentryIOS.d.ts +6 -1
- package/plugin/build/withSentryIOS.js +55 -7
- package/scripts/sentry-xcode.sh +20 -0
- package/sentry.gradle +51 -0
- package/ts3.8/dist/js/replay/mobilereplay.d.ts +0 -26
- package/ts3.8/dist/js/utils/worldwide.d.ts +2 -0
- package/ts3.8/dist/js/version.d.ts +1 -1
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.withSentryAndroidGradlePlugin = exports.sentryAndroidGradlePluginVersion = void 0;
|
|
4
4
|
const config_plugins_1 = require("@expo/config-plugins");
|
|
5
|
-
const
|
|
6
|
-
exports.sentryAndroidGradlePluginVersion = '
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
|
+
exports.sentryAndroidGradlePluginVersion = '6.0.0';
|
|
7
7
|
/**
|
|
8
8
|
* Adds the Sentry Android Gradle Plugin to the project.
|
|
9
9
|
* https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/#enable-sentry-agp
|
|
@@ -13,29 +13,29 @@ function withSentryAndroidGradlePlugin(config, { includeProguardMapping = true,
|
|
|
13
13
|
const withSentryProjectBuildGradle = (config) => {
|
|
14
14
|
return (0, config_plugins_1.withProjectBuildGradle)(config, projectBuildGradle => {
|
|
15
15
|
if (!projectBuildGradle.modResults?.contents) {
|
|
16
|
-
(0,
|
|
16
|
+
(0, logger_1.warnOnce)('android/build.gradle content is missing or undefined.');
|
|
17
17
|
return projectBuildGradle;
|
|
18
18
|
}
|
|
19
19
|
if (projectBuildGradle.modResults.language !== 'groovy') {
|
|
20
|
-
(0,
|
|
20
|
+
(0, logger_1.warnOnce)('Cannot configure Sentry in android/build.gradle because it is not in Groovy.');
|
|
21
21
|
return projectBuildGradle;
|
|
22
22
|
}
|
|
23
23
|
const dependency = `classpath("io.sentry:sentry-android-gradle-plugin:${exports.sentryAndroidGradlePluginVersion}")`;
|
|
24
24
|
if (projectBuildGradle.modResults.contents.includes(dependency)) {
|
|
25
|
-
(0,
|
|
25
|
+
(0, logger_1.warnOnce)('sentry-android-gradle-plugin dependency in already in android/build.gradle.');
|
|
26
26
|
return projectBuildGradle;
|
|
27
27
|
}
|
|
28
28
|
try {
|
|
29
29
|
const updatedContents = projectBuildGradle.modResults.contents.replace(/dependencies\s*{/, `dependencies {\n ${dependency}`);
|
|
30
30
|
if (updatedContents === projectBuildGradle.modResults.contents) {
|
|
31
|
-
(0,
|
|
31
|
+
(0, logger_1.warnOnce)('Failed to inject the dependency. Could not find `dependencies` in build.gradle.');
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
projectBuildGradle.modResults.contents = updatedContents;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
catch (error) {
|
|
38
|
-
(0,
|
|
38
|
+
(0, logger_1.warnOnce)('An error occurred while trying to modify build.gradle');
|
|
39
39
|
}
|
|
40
40
|
return projectBuildGradle;
|
|
41
41
|
});
|
|
@@ -44,7 +44,7 @@ function withSentryAndroidGradlePlugin(config, { includeProguardMapping = true,
|
|
|
44
44
|
const withSentryAppBuildGradle = (config) => {
|
|
45
45
|
return (0, config_plugins_1.withAppBuildGradle)(config, appBuildGradle => {
|
|
46
46
|
if (appBuildGradle.modResults.language !== 'groovy') {
|
|
47
|
-
(0,
|
|
47
|
+
(0, logger_1.warnOnce)('Cannot configure Sentry in android/app/build.gradle because it is not in Groovy.');
|
|
48
48
|
return appBuildGradle;
|
|
49
49
|
}
|
|
50
50
|
const sentryPlugin = 'apply plugin: "io.sentry.android.gradle"';
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import type { ExpoConfig } from '@expo/config-types';
|
|
1
2
|
import type { ConfigPlugin } from 'expo/config-plugins';
|
|
2
3
|
type BuildPhase = {
|
|
3
4
|
shellScript: string;
|
|
4
5
|
};
|
|
5
|
-
export declare const withSentryIOS: ConfigPlugin<
|
|
6
|
+
export declare const withSentryIOS: ConfigPlugin<{
|
|
7
|
+
sentryProperties: string;
|
|
8
|
+
useNativeInit: boolean | undefined;
|
|
9
|
+
}>;
|
|
6
10
|
export declare function modifyExistingXcodeBuildScript(script: BuildPhase): void;
|
|
7
11
|
export declare function addSentryWithBundledScriptsToBundleShellScript(script: string): string;
|
|
12
|
+
export declare function modifyAppDelegate(config: ExpoConfig): ExpoConfig;
|
|
8
13
|
export {};
|
|
@@ -23,14 +23,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.addSentryWithBundledScriptsToBundleShellScript = exports.modifyExistingXcodeBuildScript = exports.withSentryIOS = void 0;
|
|
26
|
+
exports.modifyAppDelegate = exports.addSentryWithBundledScriptsToBundleShellScript = exports.modifyExistingXcodeBuildScript = exports.withSentryIOS = void 0;
|
|
27
27
|
const config_plugins_1 = require("expo/config-plugins");
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
|
+
const logger_1 = require("./logger");
|
|
29
30
|
const utils_1 = require("./utils");
|
|
30
31
|
const SENTRY_REACT_NATIVE_XCODE_PATH = "`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('@sentry/react-native/package.json')) + '/scripts/sentry-xcode.sh'\"`";
|
|
31
32
|
const SENTRY_REACT_NATIVE_XCODE_DEBUG_FILES_PATH = "`${NODE_BINARY:-node} --print \"require('path').dirname(require.resolve('@sentry/react-native/package.json')) + '/scripts/sentry-xcode-debug-files.sh'\"`";
|
|
32
|
-
const withSentryIOS = (config, sentryProperties) => {
|
|
33
|
-
const
|
|
33
|
+
const withSentryIOS = (config, { sentryProperties, useNativeInit = false }) => {
|
|
34
|
+
const xcodeProjectCfg = (0, config_plugins_1.withXcodeProject)(config, config => {
|
|
34
35
|
const xcodeProject = config.modResults;
|
|
35
36
|
const sentryBuildPhase = xcodeProject.pbxItemByComment('Upload Debug Symbols to Sentry', 'PBXShellScriptBuildPhase');
|
|
36
37
|
if (!sentryBuildPhase) {
|
|
@@ -47,7 +48,8 @@ const withSentryIOS = (config, sentryProperties) => {
|
|
|
47
48
|
modifyExistingXcodeBuildScript(bundleReactNativePhase);
|
|
48
49
|
return config;
|
|
49
50
|
});
|
|
50
|
-
|
|
51
|
+
const appDelegateCfc = useNativeInit ? modifyAppDelegate(xcodeProjectCfg) : xcodeProjectCfg;
|
|
52
|
+
return (0, config_plugins_1.withDangerousMod)(appDelegateCfc, [
|
|
51
53
|
'ios',
|
|
52
54
|
config => {
|
|
53
55
|
(0, utils_1.writeSentryPropertiesTo)(path.resolve(config.modRequest.projectRoot, 'ios'), sentryProperties);
|
|
@@ -58,16 +60,16 @@ const withSentryIOS = (config, sentryProperties) => {
|
|
|
58
60
|
exports.withSentryIOS = withSentryIOS;
|
|
59
61
|
function modifyExistingXcodeBuildScript(script) {
|
|
60
62
|
if (!script.shellScript.match(/(packager|scripts)\/react-native-xcode\.sh\b/)) {
|
|
61
|
-
(0,
|
|
63
|
+
(0, logger_1.warnOnce)(`'react-native-xcode.sh' not found in 'Bundle React Native code and images'.
|
|
62
64
|
Please open a bug report at https://github.com/getsentry/sentry-react-native`);
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
65
67
|
if (script.shellScript.includes('sentry-xcode.sh')) {
|
|
66
|
-
(0,
|
|
68
|
+
(0, logger_1.warnOnce)("The latest 'sentry-xcode.sh' script already exists in 'Bundle React Native code and images'.");
|
|
67
69
|
return;
|
|
68
70
|
}
|
|
69
71
|
if (script.shellScript.includes('@sentry')) {
|
|
70
|
-
(0,
|
|
72
|
+
(0, logger_1.warnOnce)(`Outdated or custom Sentry script found in 'Bundle React Native code and images'.
|
|
71
73
|
Regenerate the native project to use the latest script.
|
|
72
74
|
Run npx expo prebuild --clean`);
|
|
73
75
|
return;
|
|
@@ -82,3 +84,49 @@ function addSentryWithBundledScriptsToBundleShellScript(script) {
|
|
|
82
84
|
(match) => `/bin/sh ${SENTRY_REACT_NATIVE_XCODE_PATH} ${match}`);
|
|
83
85
|
}
|
|
84
86
|
exports.addSentryWithBundledScriptsToBundleShellScript = addSentryWithBundledScriptsToBundleShellScript;
|
|
87
|
+
function modifyAppDelegate(config) {
|
|
88
|
+
return (0, config_plugins_1.withAppDelegate)(config, async (config) => {
|
|
89
|
+
if (!config.modResults?.path) {
|
|
90
|
+
(0, logger_1.warnOnce)("Can't add 'RNSentrySDK.start()' to the iOS AppDelegate, because the file was not found.");
|
|
91
|
+
return config;
|
|
92
|
+
}
|
|
93
|
+
const fileName = path.basename(config.modResults.path);
|
|
94
|
+
if (config.modResults.language === 'swift') {
|
|
95
|
+
if (config.modResults.contents.includes('RNSentrySDK.start()')) {
|
|
96
|
+
(0, logger_1.warnOnce)(`Your '${fileName}' already contains 'RNSentrySDK.start()'.`);
|
|
97
|
+
return config;
|
|
98
|
+
}
|
|
99
|
+
// Add RNSentrySDK.start() at the beginning of application method
|
|
100
|
+
const originalContents = config.modResults.contents;
|
|
101
|
+
config.modResults.contents = config.modResults.contents.replace(/(func application\([^)]*\) -> Bool \{)\s*\n(\s*)/s, '$1\n$2RNSentrySDK.start()\n$2');
|
|
102
|
+
if (config.modResults.contents === originalContents) {
|
|
103
|
+
(0, logger_1.warnOnce)(`Failed to insert 'RNSentrySDK.start()' in '${fileName}'.`);
|
|
104
|
+
}
|
|
105
|
+
else if (!config.modResults.contents.includes('import RNSentry')) {
|
|
106
|
+
// Insert import statement after the first import (works for both UIKit and Expo imports)
|
|
107
|
+
config.modResults.contents = config.modResults.contents.replace(/(import \S+\n)/, '$1import RNSentry\n');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (['objcpp', 'objc'].includes(config.modResults.language)) {
|
|
111
|
+
if (config.modResults.contents.includes('[RNSentrySDK start]')) {
|
|
112
|
+
(0, logger_1.warnOnce)(`Your '${fileName}' already contains '[RNSentrySDK start]'.`);
|
|
113
|
+
return config;
|
|
114
|
+
}
|
|
115
|
+
// Add [RNSentrySDK start] at the beginning of application:didFinishLaunchingWithOptions method
|
|
116
|
+
const originalContents = config.modResults.contents;
|
|
117
|
+
config.modResults.contents = config.modResults.contents.replace(/(- \(BOOL\)application:[\s\S]*?didFinishLaunchingWithOptions:[\s\S]*?\{\n)(\s*)/s, '$1$2[RNSentrySDK start];\n$2');
|
|
118
|
+
if (config.modResults.contents === originalContents) {
|
|
119
|
+
(0, logger_1.warnOnce)(`Failed to insert '[RNSentrySDK start]' in '${fileName}.`);
|
|
120
|
+
}
|
|
121
|
+
else if (!config.modResults.contents.includes('#import <RNSentry/RNSentry.h>')) {
|
|
122
|
+
// Add import after AppDelegate.h
|
|
123
|
+
config.modResults.contents = config.modResults.contents.replace(/(#import "AppDelegate.h"\n)/, '$1#import <RNSentry/RNSentry.h>\n');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
(0, logger_1.warnOnce)(`Unsupported language '${config.modResults.language}' detected in '${fileName}', the native code won't be updated.`);
|
|
128
|
+
}
|
|
129
|
+
return config;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
exports.modifyAppDelegate = modifyAppDelegate;
|
package/scripts/sentry-xcode.sh
CHANGED
|
@@ -78,4 +78,24 @@ if [ -f "$SENTRY_COLLECT_MODULES" ]; then
|
|
|
78
78
|
/bin/sh "$SENTRY_COLLECT_MODULES"
|
|
79
79
|
fi
|
|
80
80
|
|
|
81
|
+
# sentry.options.json Block
|
|
82
|
+
SENTRY_OPTIONS_FILE_ERROR_MESSAGE_POSTFIX="Skipping options file copy. To disable this behavior, set SENTRY_COPY_OPTIONS_FILE=false in your environment variables."
|
|
83
|
+
SENTRY_OPTIONS_FILE_NAME="sentry.options.json"
|
|
84
|
+
SENTRY_OPTIONS_FILE_DESTINATION_PATH="$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/$SENTRY_OPTIONS_FILE_NAME"
|
|
85
|
+
[ -z "$SENTRY_OPTIONS_FILE_PATH" ] && SENTRY_OPTIONS_FILE_PATH="$RN_PROJECT_ROOT/$SENTRY_OPTIONS_FILE_NAME"
|
|
86
|
+
[ -z "$SENTRY_COPY_OPTIONS_FILE" ] && SENTRY_COPY_OPTIONS_FILE=true
|
|
87
|
+
|
|
88
|
+
if [ "$SENTRY_COPY_OPTIONS_FILE" = true ]; then
|
|
89
|
+
if [[ -z "$CONFIGURATION_BUILD_DIR" ]]; then
|
|
90
|
+
echo "[Sentry] CONFIGURATION_BUILD_DIR is not set. $SENTRY_OPTIONS_FILE_ERROR_MESSAGE_POSTFIX" 1>&2
|
|
91
|
+
elif [[ -z "$UNLOCALIZED_RESOURCES_FOLDER_PATH" ]]; then
|
|
92
|
+
echo "[Sentry] UNLOCALIZED_RESOURCES_FOLDER_PATH is not set. $SENTRY_OPTIONS_FILE_ERROR_MESSAGE_POSTFIX" 1>&2
|
|
93
|
+
elif [ ! -f "$SENTRY_OPTIONS_FILE_PATH" ]; then
|
|
94
|
+
echo "[Sentry] $SENTRY_OPTIONS_FILE_PATH not found. $SENTRY_OPTIONS_FILE_ERROR_MESSAGE_POSTFIX" 1>&2
|
|
95
|
+
else
|
|
96
|
+
cp "$SENTRY_OPTIONS_FILE_PATH" "$SENTRY_OPTIONS_FILE_DESTINATION_PATH"
|
|
97
|
+
echo "[Sentry] Copied $SENTRY_OPTIONS_FILE_PATH to $SENTRY_OPTIONS_FILE_DESTINATION_PATH"
|
|
98
|
+
fi
|
|
99
|
+
fi
|
|
100
|
+
|
|
81
101
|
exit $exitCode
|
package/sentry.gradle
CHANGED
|
@@ -20,8 +20,48 @@ interface InjectedExecOps {
|
|
|
20
20
|
ExecOperations getExecOps()
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
project.ext.shouldCopySentryOptionsFile = { -> // If not set, default to true
|
|
24
|
+
return System.getenv('SENTRY_COPY_OPTIONS_FILE') != 'false'
|
|
25
|
+
}
|
|
26
|
+
|
|
23
27
|
def config = project.hasProperty("sentryCli") ? project.sentryCli : [];
|
|
24
28
|
|
|
29
|
+
def configFile = "sentry.options.json" // Sentry configuration file
|
|
30
|
+
def androidAssetsDir = new File("$rootDir/app/src/main/assets") // Path to Android assets folder
|
|
31
|
+
|
|
32
|
+
tasks.register("copySentryJsonConfiguration") {
|
|
33
|
+
onlyIf { shouldCopySentryOptionsFile() }
|
|
34
|
+
doLast {
|
|
35
|
+
def appRoot = project.rootDir.parentFile ?: project.rootDir
|
|
36
|
+
def sentryOptionsFile = new File(appRoot, configFile)
|
|
37
|
+
if (sentryOptionsFile.exists()) {
|
|
38
|
+
if (!androidAssetsDir.exists()) {
|
|
39
|
+
androidAssetsDir.mkdirs()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
copy {
|
|
43
|
+
from sentryOptionsFile
|
|
44
|
+
into androidAssetsDir
|
|
45
|
+
rename { String fileName -> configFile }
|
|
46
|
+
}
|
|
47
|
+
logger.lifecycle("Copied ${configFile} to Android assets")
|
|
48
|
+
} else {
|
|
49
|
+
logger.warn("${configFile} not found in app root (${appRoot})")
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
tasks.register("cleanupTemporarySentryJsonConfiguration") {
|
|
55
|
+
onlyIf { shouldCopySentryOptionsFile() }
|
|
56
|
+
doLast {
|
|
57
|
+
def sentryOptionsFile = new File(androidAssetsDir, configFile)
|
|
58
|
+
if (sentryOptionsFile.exists()) {
|
|
59
|
+
logger.lifecycle("Deleting temporary file: ${sentryOptionsFile.path}")
|
|
60
|
+
sentryOptionsFile.delete()
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
25
65
|
plugins.withId('com.android.application') {
|
|
26
66
|
def androidComponents = extensions.getByName("androidComponents")
|
|
27
67
|
|
|
@@ -278,6 +318,17 @@ plugins.withId('com.android.application') {
|
|
|
278
318
|
// gradle.projectsEvaluated doesn't work with --configure-on-demand
|
|
279
319
|
// the task are create too late and not executed
|
|
280
320
|
project.afterEvaluate {
|
|
321
|
+
// Add a task that copies the sentry.options.json file before the build starts
|
|
322
|
+
tasks.named("preBuild").configure {
|
|
323
|
+
dependsOn("copySentryJsonConfiguration")
|
|
324
|
+
}
|
|
325
|
+
// Cleanup sentry.options.json from assets after the build
|
|
326
|
+
tasks.matching { task ->
|
|
327
|
+
task.name == "build" || task.name.startsWith("assemble") || task.name.startsWith("install")
|
|
328
|
+
}.configureEach {
|
|
329
|
+
finalizedBy("cleanupTemporarySentryJsonConfiguration")
|
|
330
|
+
}
|
|
331
|
+
|
|
281
332
|
if (config.flavorAware && config.sentryProperties) {
|
|
282
333
|
throw new GradleException("Incompatible sentry configuration. " +
|
|
283
334
|
"You cannot use both `flavorAware` and `sentryProperties`. " +
|
|
@@ -66,32 +66,6 @@ export interface MobileReplayOptions {
|
|
|
66
66
|
* @platform ios
|
|
67
67
|
*/
|
|
68
68
|
enableFastViewRendering?: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Array of view class names to include in subtree traversal during session replay and screenshot capture on iOS.
|
|
71
|
-
*
|
|
72
|
-
* Only views that are instances of these classes (or subclasses) will be traversed.
|
|
73
|
-
* This helps prevent crashes when traversing problematic view hierarchies by allowing you to explicitly include only safe view classes.
|
|
74
|
-
*
|
|
75
|
-
* If both `includedViewClasses` and `excludedViewClasses` are set, `excludedViewClasses` takes precedence:
|
|
76
|
-
* views matching excluded classes won't be traversed even if they match an included class.
|
|
77
|
-
*
|
|
78
|
-
* @default undefined
|
|
79
|
-
* @platform ios
|
|
80
|
-
*/
|
|
81
|
-
includedViewClasses?: string[];
|
|
82
|
-
/**
|
|
83
|
-
* Array of view class names to exclude from subtree traversal during session replay and screenshot capture on iOS.
|
|
84
|
-
*
|
|
85
|
-
* Views of these classes (or subclasses) will be skipped entirely, including all their children.
|
|
86
|
-
* This helps prevent crashes when traversing problematic view hierarchies by allowing you to explicitly exclude problematic view classes.
|
|
87
|
-
*
|
|
88
|
-
* If both `includedViewClasses` and `excludedViewClasses` are set, `excludedViewClasses` takes precedence:
|
|
89
|
-
* views matching excluded classes won't be traversed even if they match an included class.
|
|
90
|
-
*
|
|
91
|
-
* @default undefined
|
|
92
|
-
* @platform ios
|
|
93
|
-
*/
|
|
94
|
-
excludedViewClasses?: string[];
|
|
95
69
|
/**
|
|
96
70
|
* Sets the screenshot strategy used by the Session Replay integration on Android.
|
|
97
71
|
*
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="react-native" />
|
|
2
2
|
import type { InternalGlobal } from '@sentry/core';
|
|
3
3
|
import type { ErrorUtils } from 'react-native/types';
|
|
4
|
+
import type { ReactNativeOptions } from '../options';
|
|
4
5
|
import type { ExpoGlobalObject } from './expoglobalobject';
|
|
5
6
|
export interface HermesPromiseRejectionTrackingOptions {
|
|
6
7
|
allRejections: boolean;
|
|
@@ -32,6 +33,7 @@ export interface ReactNativeInternalGlobal extends InternalGlobal {
|
|
|
32
33
|
nativePerformanceNow?: () => number;
|
|
33
34
|
TextEncoder?: TextEncoder;
|
|
34
35
|
alert?: (message: string) => void;
|
|
36
|
+
__SENTRY_OPTIONS__?: ReactNativeOptions;
|
|
35
37
|
SENTRY_RELEASE?: {
|
|
36
38
|
/** Used by Sentry Webpack Plugin, not used by RN, only to silence TS */
|
|
37
39
|
id?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const SDK_PACKAGE_NAME = "npm:@sentry/react-native";
|
|
2
2
|
export declare const SDK_NAME = "sentry.javascript.react-native";
|
|
3
|
-
export declare const SDK_VERSION = "
|
|
3
|
+
export declare const SDK_VERSION = "8.0.0-beta.0";
|
|
4
4
|
//# sourceMappingURL=version.d.ts.map
|