@sentry/react-native 5.0.0-alpha.8 → 5.0.0-beta.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/CHANGELOG.md +155 -3
- package/README.md +1 -1
- package/RNSentry.podspec +5 -5
- package/android/build.gradle +1 -1
- package/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +124 -20
- package/android/src/newarch/java/io/sentry/react/RNSentryModule.java +10 -0
- package/android/src/oldarch/java/io/sentry/react/RNSentryModule.java +10 -0
- package/dist/js/NativeRNSentry.d.ts +37 -3
- package/dist/js/NativeRNSentry.d.ts.map +1 -1
- package/dist/js/NativeRNSentry.js.map +1 -1
- package/dist/js/breadcrumb.d.ts +11 -0
- package/dist/js/breadcrumb.d.ts.map +1 -0
- package/dist/js/breadcrumb.js +34 -0
- package/dist/js/breadcrumb.js.map +1 -0
- package/dist/js/client.d.ts +4 -5
- package/dist/js/client.d.ts.map +1 -1
- package/dist/js/client.js +22 -35
- package/dist/js/client.js.map +1 -1
- package/dist/js/index.d.ts +1 -0
- package/dist/js/index.d.ts.map +1 -1
- package/dist/js/index.js +1 -0
- package/dist/js/index.js.map +1 -1
- package/dist/js/integrations/debugsymbolicator.d.ts +1 -1
- package/dist/js/integrations/debugsymbolicator.d.ts.map +1 -1
- package/dist/js/integrations/debugsymbolicator.js.map +1 -1
- package/dist/js/integrations/devicecontext.d.ts +2 -2
- package/dist/js/integrations/devicecontext.d.ts.map +1 -1
- package/dist/js/integrations/devicecontext.js +45 -11
- package/dist/js/integrations/devicecontext.js.map +1 -1
- package/dist/js/integrations/eventorigin.d.ts +1 -1
- package/dist/js/integrations/eventorigin.d.ts.map +1 -1
- package/dist/js/integrations/eventorigin.js.map +1 -1
- package/dist/js/integrations/index.d.ts +1 -0
- package/dist/js/integrations/index.d.ts.map +1 -1
- package/dist/js/integrations/index.js +1 -0
- package/dist/js/integrations/index.js.map +1 -1
- package/dist/js/integrations/modulesloader.d.ts +17 -0
- package/dist/js/integrations/modulesloader.d.ts.map +1 -0
- package/dist/js/integrations/modulesloader.js +39 -0
- package/dist/js/integrations/modulesloader.js.map +1 -0
- package/dist/js/integrations/reactnativeerrorhandlers.d.ts +1 -1
- package/dist/js/integrations/reactnativeerrorhandlers.d.ts.map +1 -1
- package/dist/js/integrations/reactnativeerrorhandlers.js +4 -3
- package/dist/js/integrations/reactnativeerrorhandlers.js.map +1 -1
- package/dist/js/integrations/reactnativeinfo.d.ts +1 -1
- package/dist/js/integrations/reactnativeinfo.d.ts.map +1 -1
- package/dist/js/integrations/reactnativeinfo.js.map +1 -1
- package/dist/js/integrations/release.d.ts +1 -1
- package/dist/js/integrations/release.d.ts.map +1 -1
- package/dist/js/integrations/release.js.map +1 -1
- package/dist/js/integrations/screenshot.d.ts +23 -0
- package/dist/js/integrations/screenshot.d.ts.map +1 -0
- package/dist/js/integrations/screenshot.js +39 -0
- package/dist/js/integrations/screenshot.js.map +1 -0
- package/dist/js/integrations/sdkinfo.d.ts +1 -1
- package/dist/js/integrations/sdkinfo.d.ts.map +1 -1
- package/dist/js/integrations/sdkinfo.js.map +1 -1
- package/dist/js/measurements.d.ts +4 -0
- package/dist/js/measurements.d.ts.map +1 -1
- package/dist/js/measurements.js +11 -0
- package/dist/js/measurements.js.map +1 -1
- package/dist/js/misc.d.ts +1 -1
- package/dist/js/misc.d.ts.map +1 -1
- package/dist/js/misc.js.map +1 -1
- package/dist/js/options.d.ts +18 -11
- package/dist/js/options.d.ts.map +1 -1
- package/dist/js/options.js.map +1 -1
- package/dist/js/scope.d.ts +1 -1
- package/dist/js/scope.d.ts.map +1 -1
- package/dist/js/scope.js +4 -2
- package/dist/js/scope.js.map +1 -1
- package/dist/js/sdk.d.ts +4 -3
- package/dist/js/sdk.d.ts.map +1 -1
- package/dist/js/sdk.js +13 -7
- package/dist/js/sdk.js.map +1 -1
- package/dist/js/tools/ModulesCollector.d.ts +17 -0
- package/dist/js/tools/ModulesCollector.d.ts.map +1 -0
- package/dist/js/tools/ModulesCollector.js +110 -0
- package/dist/js/tools/ModulesCollector.js.map +1 -0
- package/dist/js/tools/collectModules.d.ts +2 -0
- package/dist/js/tools/collectModules.d.ts.map +1 -0
- package/dist/js/tools/collectModules.js +11 -0
- package/dist/js/tools/collectModules.js.map +1 -0
- package/dist/js/touchevents.d.ts +4 -0
- package/dist/js/touchevents.d.ts.map +1 -1
- package/dist/js/touchevents.js +10 -5
- package/dist/js/touchevents.js.map +1 -1
- package/dist/js/tracing/nativeframes.d.ts +2 -2
- package/dist/js/tracing/nativeframes.d.ts.map +1 -1
- package/dist/js/tracing/nativeframes.js.map +1 -1
- package/dist/js/tracing/reactnativenavigation.d.ts +4 -3
- package/dist/js/tracing/reactnativenavigation.d.ts.map +1 -1
- package/dist/js/tracing/reactnativenavigation.js +1 -1
- package/dist/js/tracing/reactnativenavigation.js.map +1 -1
- package/dist/js/tracing/reactnativetracing.d.ts +5 -5
- package/dist/js/tracing/reactnativetracing.d.ts.map +1 -1
- package/dist/js/tracing/reactnativetracing.js +1 -1
- package/dist/js/tracing/reactnativetracing.js.map +1 -1
- package/dist/js/tracing/reactnavigation.d.ts +3 -2
- package/dist/js/tracing/reactnavigation.d.ts.map +1 -1
- package/dist/js/tracing/reactnavigation.js +1 -1
- package/dist/js/tracing/reactnavigation.js.map +1 -1
- package/dist/js/tracing/reactnavigationv4.d.ts +4 -3
- package/dist/js/tracing/reactnavigationv4.d.ts.map +1 -1
- package/dist/js/tracing/reactnavigationv4.js +1 -1
- package/dist/js/tracing/reactnavigationv4.js.map +1 -1
- package/dist/js/tracing/routingInstrumentation.d.ts +3 -3
- package/dist/js/tracing/routingInstrumentation.d.ts.map +1 -1
- package/dist/js/tracing/routingInstrumentation.js.map +1 -1
- package/dist/js/tracing/stalltracking.d.ts +2 -2
- package/dist/js/tracing/stalltracking.d.ts.map +1 -1
- package/dist/js/tracing/stalltracking.js.map +1 -1
- package/dist/js/tracing/types.d.ts +1 -1
- package/dist/js/tracing/types.d.ts.map +1 -1
- package/dist/js/tracing/types.js.map +1 -1
- package/dist/js/tracing/utils.d.ts +2 -2
- package/dist/js/tracing/utils.d.ts.map +1 -1
- package/dist/js/tracing/utils.js.map +1 -1
- package/dist/js/transports/TextEncoder.d.ts +1 -1
- package/dist/js/transports/TextEncoder.d.ts.map +1 -1
- package/dist/js/transports/TextEncoder.js.map +1 -1
- package/dist/js/transports/native.d.ts +7 -3
- package/dist/js/transports/native.d.ts.map +1 -1
- package/dist/js/transports/native.js +10 -1
- package/dist/js/transports/native.js.map +1 -1
- package/dist/js/user.d.ts +1 -1
- package/dist/js/user.d.ts.map +1 -1
- package/dist/js/user.js.map +1 -1
- package/dist/js/utils/envelope.d.ts +1 -1
- package/dist/js/utils/envelope.d.ts.map +1 -1
- package/dist/js/utils/envelope.js.map +1 -1
- package/dist/js/utils/ignorerequirecyclelogs.d.ts +6 -0
- package/dist/js/utils/ignorerequirecyclelogs.d.ts.map +1 -0
- package/dist/js/utils/ignorerequirecyclelogs.js +15 -0
- package/dist/js/utils/ignorerequirecyclelogs.js.map +1 -0
- package/dist/js/utils/outcome.d.ts +1 -1
- package/dist/js/utils/outcome.d.ts.map +1 -1
- package/dist/js/utils/outcome.js.map +1 -1
- package/dist/js/utils/safe.d.ts +1 -1
- package/dist/js/utils/safe.d.ts.map +1 -1
- package/dist/js/utils/safe.js.map +1 -1
- package/dist/js/utils/worldwide.d.ts +1 -1
- 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/dist/js/wrapper.d.ts +10 -3
- package/dist/js/wrapper.d.ts.map +1 -1
- package/dist/js/wrapper.js +42 -6
- package/dist/js/wrapper.js.map +1 -1
- package/ios/RNSentry.h +5 -0
- package/ios/RNSentry.mm +90 -49
- package/package.json +28 -25
- package/scripts/collect-modules.sh +43 -0
- package/sentry.gradle +84 -6
- package/src/js/NativeRNSentry.ts +94 -0
- package/ios/RNSentry.xcodeproj/project.pbxproj +0 -472
- package/ios/RNSentry.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/RNSentry.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
package/sentry.gradle
CHANGED
|
@@ -34,13 +34,18 @@ gradle.projectsEvaluated {
|
|
|
34
34
|
// separately we then hook into the bundle task of react native to inject
|
|
35
35
|
// sourcemap generation parameters. In case for whatever reason no release
|
|
36
36
|
// was found for the asset folder we just bail.
|
|
37
|
-
def bundleTasks = tasks.findAll { task -> task.name.startsWith("bundle") && task.name.endsWith("JsAndAssets") && !task.name.contains("Debug") && task.enabled }
|
|
37
|
+
def bundleTasks = tasks.findAll { task -> (task.name.startsWith("createBundle") || task.name.startsWith("bundle")) && task.name.endsWith("JsAndAssets") && !task.name.contains("Debug") && task.enabled }
|
|
38
38
|
bundleTasks.each { bundleTask ->
|
|
39
39
|
def shouldCleanUp
|
|
40
40
|
def sourcemapOutput
|
|
41
41
|
def bundleOutput
|
|
42
42
|
def props = bundleTask.getProperties()
|
|
43
43
|
def reactRoot = props.get("workingDir")
|
|
44
|
+
if (reactRoot == null) {
|
|
45
|
+
reactRoot = props.get("root").get() // RN 0.71 and above
|
|
46
|
+
}
|
|
47
|
+
def modulesOutput = "$reactRoot/android/app/src/main/assets/modules.json"
|
|
48
|
+
def modulesTask = null
|
|
44
49
|
|
|
45
50
|
(shouldCleanUp, bundleOutput, sourcemapOutput) = forceSourceMapOutputFromBundleTask(bundleTask)
|
|
46
51
|
|
|
@@ -60,6 +65,7 @@ gradle.projectsEvaluated {
|
|
|
60
65
|
def previousCliTask = null
|
|
61
66
|
|
|
62
67
|
def nameCleanup = "${bundleTask.name}_SentryUploadCleanUp"
|
|
68
|
+
def nameModulesCleanup = "${bundleTask.name}_SentryCollectModulesCleanUp"
|
|
63
69
|
// Upload the source map several times if necessary: once for each release and versionCode.
|
|
64
70
|
currentVariants.each { key, currentVariant ->
|
|
65
71
|
variant = currentVariant[0]
|
|
@@ -79,6 +85,7 @@ gradle.projectsEvaluated {
|
|
|
79
85
|
// below) and distribution identifier (`--dist` below). Give the task a unique name
|
|
80
86
|
// based on where we're uploading to.
|
|
81
87
|
def nameCliTask = "${bundleTask.name}_SentryUpload_${releaseName}_${versionCode}"
|
|
88
|
+
def nameModulesTask = "${bundleTask.name}_SentryCollectModules_${releaseName}_${versionCode}"
|
|
82
89
|
|
|
83
90
|
// If several outputs have the same releaseName and versionCode, we'd do the exact same
|
|
84
91
|
// upload for each of them. No need to repeat.
|
|
@@ -153,6 +160,34 @@ gradle.projectsEvaluated {
|
|
|
153
160
|
enabled true
|
|
154
161
|
}
|
|
155
162
|
|
|
163
|
+
modulesTask = tasks.create(nameModulesTask, Exec) {
|
|
164
|
+
description = "collect javascript modules from bundle source map"
|
|
165
|
+
group = 'sentry.io'
|
|
166
|
+
|
|
167
|
+
workingDir reactRoot
|
|
168
|
+
|
|
169
|
+
def collectModulesScript = config.collectModulesScript
|
|
170
|
+
? file(config.collectModulesScript).getAbsolutePath()
|
|
171
|
+
: "$reactRoot/node_modules/@sentry/react-native/dist/js/tools/collectModules.js"
|
|
172
|
+
def modulesPaths = config.modulesPaths
|
|
173
|
+
? config.modulesPaths.join(',')
|
|
174
|
+
: "$reactRoot/node_modules"
|
|
175
|
+
def args = ["node",
|
|
176
|
+
collectModulesScript,
|
|
177
|
+
sourcemapOutput,
|
|
178
|
+
modulesOutput,
|
|
179
|
+
modulesPaths
|
|
180
|
+
]
|
|
181
|
+
|
|
182
|
+
project.logger.info("Sentry-CollectModules arguments: ${args}")
|
|
183
|
+
commandLine(*args)
|
|
184
|
+
|
|
185
|
+
def skip = config.skipCollectModules
|
|
186
|
+
? config.skipCollectModules == true
|
|
187
|
+
: false
|
|
188
|
+
enabled !skip
|
|
189
|
+
}
|
|
190
|
+
|
|
156
191
|
// chain the upload tasks so they run sequentially in order to run
|
|
157
192
|
// the cliCleanUpTask after the final upload task is run
|
|
158
193
|
if (previousCliTask != null) {
|
|
@@ -161,6 +196,25 @@ gradle.projectsEvaluated {
|
|
|
161
196
|
bundleTask.finalizedBy cliTask
|
|
162
197
|
}
|
|
163
198
|
previousCliTask = cliTask
|
|
199
|
+
cliTask.finalizedBy modulesTask
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
def modulesCleanUpTask = tasks.create(name: nameModulesCleanup, type: Delete) {
|
|
203
|
+
description = "clean up collected modules generated file"
|
|
204
|
+
group = 'sentry.io'
|
|
205
|
+
|
|
206
|
+
delete modulesOutput
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
def variantTaskName = variant.replaceAll("[\\s\\-()]", "") // variant is dev-release beta-release etc.
|
|
210
|
+
// task.name could be packageDev-debugRelease but in that case currentVariants == null
|
|
211
|
+
// because of the regex in `extractCurrentVariants` and this code doesn't run
|
|
212
|
+
def packageTasks = tasks.findAll {
|
|
213
|
+
task -> "package${variantTaskName}".equalsIgnoreCase(task.name) && task.enabled
|
|
214
|
+
}
|
|
215
|
+
packageTasks.each { packageTask ->
|
|
216
|
+
packageTask.dependsOn modulesTask
|
|
217
|
+
packageTask.finalizedBy modulesCleanUpTask
|
|
164
218
|
}
|
|
165
219
|
|
|
166
220
|
/** Delete sourcemap files */
|
|
@@ -169,7 +223,8 @@ gradle.projectsEvaluated {
|
|
|
169
223
|
group = 'sentry.io'
|
|
170
224
|
|
|
171
225
|
delete sourcemapOutput
|
|
172
|
-
delete "$buildDir/intermediates/assets/release/index.android.bundle.map"
|
|
226
|
+
delete "$buildDir/intermediates/assets/release/index.android.bundle.map"
|
|
227
|
+
// react native default bundle dir
|
|
173
228
|
}
|
|
174
229
|
|
|
175
230
|
// register clean task extension
|
|
@@ -204,7 +259,7 @@ def extractReleasesInfo() {
|
|
|
204
259
|
}
|
|
205
260
|
|
|
206
261
|
/** Extract from arguments collection bundle and sourcemap files output names. */
|
|
207
|
-
static
|
|
262
|
+
static extractBundleTaskArgumentsLegacy(cmdArgs, Project project) {
|
|
208
263
|
def bundleOutput = null
|
|
209
264
|
def sourcemapOutput = null
|
|
210
265
|
|
|
@@ -248,6 +303,26 @@ static extractBundleTaskArguments(cmdArgs, Project project) {
|
|
|
248
303
|
return [bundleOutput, sourcemapOutput]
|
|
249
304
|
}
|
|
250
305
|
|
|
306
|
+
/** Extract bundle and sourcemap paths from bundle task props.
|
|
307
|
+
* Based on https://github.dev/facebook/react-native/blob/473eb1dd870a4f62c4ebcba27e12bde1e99e3d07/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/BundleHermesCTask.kt#L109
|
|
308
|
+
* Output source map path is the same for both Hermes and JSC.
|
|
309
|
+
*/
|
|
310
|
+
static extractBundleTaskArgumentsRN71AndAbove(bundleTask, logger) {
|
|
311
|
+
def props = bundleTask.getProperties()
|
|
312
|
+
def bundleAssetName = props.bundleAssetName?.get()
|
|
313
|
+
|
|
314
|
+
if (bundleAssetName == null) {
|
|
315
|
+
return [null, null]
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
def bundleFile = new File(props.jsBundleDir.get().asFile.absolutePath, bundleAssetName)
|
|
319
|
+
def outputSourceMap = new File(props.jsSourceMapsDir.get().asFile.absolutePath, "${bundleAssetName}.map")
|
|
320
|
+
|
|
321
|
+
logger.info("bundleFile: `${bundleFile}`")
|
|
322
|
+
logger.info("outputSourceMap: `${outputSourceMap}`")
|
|
323
|
+
return [bundleFile, outputSourceMap]
|
|
324
|
+
}
|
|
325
|
+
|
|
251
326
|
/** Force Bundle task to produce sourcemap files if they are not pre-configured by user yet. */
|
|
252
327
|
def forceSourceMapOutputFromBundleTask(bundleTask) {
|
|
253
328
|
def props = bundleTask.getProperties()
|
|
@@ -257,7 +332,10 @@ def forceSourceMapOutputFromBundleTask(bundleTask) {
|
|
|
257
332
|
def bundleOutput = null
|
|
258
333
|
def sourcemapOutput = null
|
|
259
334
|
|
|
260
|
-
(bundleOutput, sourcemapOutput) =
|
|
335
|
+
(bundleOutput, sourcemapOutput) = extractBundleTaskArgumentsRN71AndAbove(bundleTask, logger)
|
|
336
|
+
if (bundleOutput == null) {
|
|
337
|
+
(bundleOutput, sourcemapOutput) = extractBundleTaskArgumentsLegacy(cmdArgs, project)
|
|
338
|
+
}
|
|
261
339
|
|
|
262
340
|
if (sourcemapOutput == null) {
|
|
263
341
|
sourcemapOutput = bundleOutput + ".map"
|
|
@@ -280,8 +358,8 @@ def forceSourceMapOutputFromBundleTask(bundleTask) {
|
|
|
280
358
|
|
|
281
359
|
/** compose array with one item - current build flavor name */
|
|
282
360
|
static extractCurrentVariants(bundleTask, releases) {
|
|
283
|
-
// examples: bundleLocalReleaseJsAndAssets,
|
|
284
|
-
def pattern = Pattern.compile("
|
|
361
|
+
// examples: bundleLocalReleaseJsAndAssets, createBundleYellowDebugJsAndAssets
|
|
362
|
+
def pattern = Pattern.compile("(?:create)?(?:B|b)undle([A-Z][A-Za-z0-9_]+)JsAndAssets")
|
|
285
363
|
|
|
286
364
|
def currentRelease = ""
|
|
287
365
|
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { Package } from '@sentry/types';
|
|
2
|
+
import type { TurboModule} from 'react-native';
|
|
3
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
4
|
+
import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
|
|
5
|
+
|
|
6
|
+
// There has to be only one interface and it has to be named `Spec`
|
|
7
|
+
// Only extra allowed definitions are types (probably codegen bug)
|
|
8
|
+
export interface Spec extends TurboModule {
|
|
9
|
+
addBreadcrumb(breadcrumb: UnsafeObject): void;
|
|
10
|
+
captureEnvelope(
|
|
11
|
+
bytes: number[],
|
|
12
|
+
options: {
|
|
13
|
+
store: boolean,
|
|
14
|
+
},
|
|
15
|
+
): Promise<boolean>;
|
|
16
|
+
captureScreenshot(): Promise<NativeScreenshot[]>;
|
|
17
|
+
clearBreadcrumbs(): void;
|
|
18
|
+
crash(): void;
|
|
19
|
+
closeNativeSdk(): Promise<void>;
|
|
20
|
+
disableNativeFramesTracking(): void;
|
|
21
|
+
fetchNativeRelease(): Promise<NativeReleaseResponse>;
|
|
22
|
+
fetchNativeSdkInfo(): Promise<Package>;
|
|
23
|
+
fetchNativeDeviceContexts(): Promise<NativeDeviceContextsResponse>;
|
|
24
|
+
fetchNativeAppStart(): Promise<NativeAppStartResponse | null>;
|
|
25
|
+
fetchNativeFrames(): Promise<NativeFramesResponse | null>;
|
|
26
|
+
initNativeSdk(options: UnsafeObject): Promise<boolean>;
|
|
27
|
+
setUser(
|
|
28
|
+
defaultUserKeys: UnsafeObject | null,
|
|
29
|
+
otherUserKeys: UnsafeObject | null
|
|
30
|
+
): void;
|
|
31
|
+
setContext(key: string, value: UnsafeObject | null): void;
|
|
32
|
+
setExtra(key: string, value: string): void;
|
|
33
|
+
setTag(key: string, value: string): void;
|
|
34
|
+
enableNativeFramesTracking(): void;
|
|
35
|
+
fetchModules(): Promise<string | undefined | null>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type NativeAppStartResponse = {
|
|
39
|
+
isColdStart: boolean;
|
|
40
|
+
appStartTime: number;
|
|
41
|
+
didFetchAppStart: boolean;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export type NativeFramesResponse = {
|
|
45
|
+
totalFrames: number;
|
|
46
|
+
slowFrames: number;
|
|
47
|
+
frozenFrames: number;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export type NativeReleaseResponse = {
|
|
51
|
+
build: string;
|
|
52
|
+
id: string;
|
|
53
|
+
version: string;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* This type describes serialized scope from sentry-cocoa. (This is not used for Android)
|
|
58
|
+
* https://github.com/getsentry/sentry-cocoa/blob/master/Sources/Sentry/SentryScope.m
|
|
59
|
+
*/
|
|
60
|
+
export type NativeDeviceContextsResponse = {
|
|
61
|
+
[key: string]: unknown;
|
|
62
|
+
tags?: Record<string, string>;
|
|
63
|
+
extra?: Record<string, unknown>;
|
|
64
|
+
context?: Record<string, Record<string, unknown>>;
|
|
65
|
+
user?: {
|
|
66
|
+
userId?: string;
|
|
67
|
+
email?: string;
|
|
68
|
+
username?: string;
|
|
69
|
+
ipAddress?: string;
|
|
70
|
+
segment?: string;
|
|
71
|
+
data?: Record<string, unknown>;
|
|
72
|
+
};
|
|
73
|
+
dist?: string;
|
|
74
|
+
environment?: string;
|
|
75
|
+
fingerprint?: string[];
|
|
76
|
+
level?: string;
|
|
77
|
+
breadcrumbs?: {
|
|
78
|
+
level?: string;
|
|
79
|
+
timestamp?: string;
|
|
80
|
+
category?: string;
|
|
81
|
+
type?: string;
|
|
82
|
+
message?: string;
|
|
83
|
+
data?: Record<string, unknown>;
|
|
84
|
+
}[];
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export type NativeScreenshot = {
|
|
88
|
+
data: number[];
|
|
89
|
+
contentType: string;
|
|
90
|
+
filename: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// The export must be here to pass codegen even if not used
|
|
94
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('RNSentry');
|