@react-native-firebase/crashlytics 25.1.0 → 26.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/RNFBCrashlytics.podspec +10 -6
- package/android/build.gradle +23 -0
- package/android/src/main/java/io/invertase/firebase/crashlytics/{ReactNativeFirebaseCrashlyticsModule.java → NativeRNFBTurboCrashlytics.java} +44 -39
- package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsPackage.java +1 -1
- package/android/src/main/java/io/invertase/firebase/crashlytics/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboCrashlyticsSpec.java +125 -0
- package/android/src/main/java/io/invertase/firebase/crashlytics/generated/jni/CMakeLists.txt +36 -0
- package/android/src/main/java/io/invertase/firebase/crashlytics/generated/jni/RNFBCrashlyticsTurboModules-generated.cpp +116 -0
- package/android/src/main/java/io/invertase/firebase/crashlytics/generated/jni/RNFBCrashlyticsTurboModules.h +31 -0
- package/android/src/main/java/io/invertase/firebase/crashlytics/generated/jni/react/renderer/components/RNFBCrashlyticsTurboModules/RNFBCrashlyticsTurboModulesJSI-generated.cpp +124 -0
- package/android/src/main/java/io/invertase/firebase/crashlytics/generated/jni/react/renderer/components/RNFBCrashlyticsTurboModules/RNFBCrashlyticsTurboModulesJSI.h +320 -0
- package/app.plugin.js +1 -1
- package/dist/module/handlers.js +7 -24
- package/dist/module/handlers.js.map +1 -1
- package/dist/module/index.js +125 -8
- package/dist/module/index.js.map +1 -1
- package/dist/module/types/crashlytics.js +1 -40
- package/dist/module/types/crashlytics.js.map +1 -1
- package/dist/module/types/internal.js +4 -0
- package/dist/module/types/internal.js.map +1 -0
- package/dist/module/version.js +1 -1
- package/dist/typescript/lib/handlers.d.ts.map +1 -1
- package/dist/typescript/lib/index.d.ts +19 -4
- package/dist/typescript/lib/index.d.ts.map +1 -1
- package/dist/typescript/lib/types/crashlytics.d.ts +0 -21
- package/dist/typescript/lib/types/crashlytics.d.ts.map +1 -1
- package/dist/typescript/lib/types/internal.d.ts +44 -0
- package/dist/typescript/lib/types/internal.d.ts.map +1 -0
- package/dist/typescript/lib/version.d.ts +1 -1
- package/ios/RNFBCrashlytics/RNFBCrashlyticsModule.h +2 -3
- package/ios/RNFBCrashlytics/{RNFBCrashlyticsModule.m → RNFBCrashlyticsModule.mm} +64 -72
- package/ios/RNFBCrashlytics.xcodeproj/project.pbxproj +8 -8
- package/ios/generated/RCTAppDependencyProvider.h +25 -0
- package/ios/generated/RCTAppDependencyProvider.mm +55 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
- package/ios/generated/RNFBCrashlyticsTurboModules/RNFBCrashlyticsTurboModules-generated.mm +148 -0
- package/ios/generated/RNFBCrashlyticsTurboModules/RNFBCrashlyticsTurboModules.h +214 -0
- package/ios/generated/RNFBCrashlyticsTurboModulesJSI-generated.cpp +124 -0
- package/ios/generated/RNFBCrashlyticsTurboModulesJSI.h +320 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/lib/handlers.ts +7 -26
- package/lib/index.ts +209 -7
- package/lib/types/crashlytics.ts +0 -30
- package/lib/types/internal.ts +59 -0
- package/lib/version.ts +1 -1
- package/package.json +30 -5
- package/plugin/build/app.plugin.d.ts +2 -0
- package/plugin/build/app.plugin.js +6 -0
- package/plugin/src/app.plugin.ts +3 -0
- package/plugin/tsconfig.tsbuildinfo +1 -1
- package/react-native.config.js +3 -28
- package/specs/NativeRNFBTurboCrashlytics.ts +41 -0
- package/typedoc.json +2 -3
- package/dist/module/modular.js +0 -241
- package/dist/module/modular.js.map +0 -1
- package/dist/module/namespaced.js +0 -135
- package/dist/module/namespaced.js.map +0 -1
- package/dist/typescript/lib/modular.d.ts +0 -193
- package/dist/typescript/lib/modular.d.ts.map +0 -1
- package/dist/typescript/lib/namespaced.d.ts +0 -12
- package/dist/typescript/lib/namespaced.d.ts.map +0 -1
- package/lib/modular.ts +0 -249
- package/lib/namespaced.ts +0 -206
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [26.0.0](https://github.com/invertase/react-native-firebase/compare/v25.1.0...v26.0.0) (2026-07-29)
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
- **crashlytics:** migrate crashlytics to TurboModules
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **crashlytics:** migrate crashlytics to TurboModules ([122295e](https://github.com/invertase/react-native-firebase/commit/122295e0afa6b70f55f4934c98f60d559190a908))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- add codegen verify and spec-native parity tests ([49d9f1b](https://github.com/invertase/react-native-firebase/commit/49d9f1baba4fc83c1dd4983f582bbd7352d78809))
|
|
19
|
+
- add ResultT codegen type alias ([ff2d68f](https://github.com/invertase/react-native-firebase/commit/ff2d68ff8f73092f8ba3c75e007049dd31be822f))
|
|
20
|
+
- **ios:** set IPHONEOS_DEPLOYMENT_TARGET to 15.0, update platform support docs/conditionals ([#9108](https://github.com/invertase/react-native-firebase/issues/9108)) ([99d0899](https://github.com/invertase/react-native-firebase/commit/99d089908e3eec6155d73ecf05ff7274ad33c46e)), closes [#8882](https://github.com/invertase/react-native-firebase/issues/8882)
|
|
21
|
+
|
|
6
22
|
## [25.1.0](https://github.com/invertase/react-native-firebase/compare/v25.0.1...v25.1.0) (2026-06-25)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @react-native-firebase/crashlytics
|
package/RNFBCrashlytics.podspec
CHANGED
|
@@ -29,15 +29,19 @@ Pod::Spec.new do |s|
|
|
|
29
29
|
s.ios.deployment_target = firebase_ios_target
|
|
30
30
|
s.macos.deployment_target = firebase_macos_target
|
|
31
31
|
s.tvos.deployment_target = firebase_tvos_target
|
|
32
|
-
s.source_files = 'ios/**/*.{h,m}'
|
|
32
|
+
s.source_files = 'ios/**/*.{h,m,mm,cpp,swift}'
|
|
33
|
+
s.private_header_files = "ios/**/*.h"
|
|
34
|
+
s.exclude_files = 'ios/generated/RCTThirdPartyComponentsProvider.*', 'ios/generated/RCTAppDependencyProvider.*', 'ios/generated/RCTModuleProviders.*', 'ios/generated/RCTModulesConformingToProtocolsProvider.*', 'ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.*'
|
|
35
|
+
s.pod_target_xcconfig = {
|
|
36
|
+
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ios/generated/RNFBCrashlyticsTurboModules\" \"$(PODS_TARGET_SRCROOT)/ios/generated\"",
|
|
37
|
+
}
|
|
33
38
|
|
|
34
39
|
s.dependency 'RNFBApp'
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
s.dependency "React-Core"
|
|
41
|
+
install_modules_dependencies(s);
|
|
42
|
+
|
|
43
|
+
if defined?(ENV["RCT_NEW_ARCH_ENABLED"]) != nil && (ENV["RCT_NEW_ARCH_ENABLED"] == '0')
|
|
44
|
+
raise "#{s.name} requires New Architecture. Enable New Architecture to use this module"
|
|
41
45
|
end
|
|
42
46
|
|
|
43
47
|
if defined?($FirebaseSDKVersion)
|
package/android/build.gradle
CHANGED
|
@@ -82,6 +82,11 @@ android {
|
|
|
82
82
|
targetCompatibility = JavaVersion.VERSION_11
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
+
sourceSets {
|
|
86
|
+
main {
|
|
87
|
+
java.excludes = ['**/generated/jni/**']
|
|
88
|
+
}
|
|
89
|
+
}
|
|
85
90
|
}
|
|
86
91
|
|
|
87
92
|
repositories {
|
|
@@ -100,3 +105,21 @@ ReactNative.shared.applyPackageVersion()
|
|
|
100
105
|
ReactNative.shared.applyDefaultExcludes()
|
|
101
106
|
ReactNative.module.applyAndroidVersions()
|
|
102
107
|
ReactNative.module.applyReactNativeDependency("api")
|
|
108
|
+
|
|
109
|
+
def isNewArchitectureDisabled() {
|
|
110
|
+
return project.hasProperty("newArchEnabled") && project.newArchEnabled != "true"
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (isNewArchitectureDisabled()) {
|
|
114
|
+
def ANSI_RED = "\u001B[31m";
|
|
115
|
+
def ANSI_RESET = "\u001B[0m";
|
|
116
|
+
|
|
117
|
+
println("\n\n\n")
|
|
118
|
+
println(ANSI_RED + "**************************************************************************************************************")
|
|
119
|
+
println("\n\n\n")
|
|
120
|
+
println("New Architecture support is required for @react-native-firebase/crashlytics")
|
|
121
|
+
println("\n\n\n")
|
|
122
|
+
println("**************************************************************************************************************" + ANSI_RESET)
|
|
123
|
+
println("\n\n\n")
|
|
124
|
+
System.exit(1)
|
|
125
|
+
}
|
|
@@ -17,24 +17,46 @@ package io.invertase.firebase.crashlytics;
|
|
|
17
17
|
*
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
+
import static io.invertase.firebase.common.ReactNativeFirebaseModule.rejectPromiseWithCodeAndMessage;
|
|
21
|
+
|
|
20
22
|
import android.os.Handler;
|
|
21
23
|
import android.util.Log;
|
|
22
|
-
import com.facebook.
|
|
24
|
+
import com.facebook.fbreact.specs.NativeRNFBTurboCrashlyticsSpec;
|
|
25
|
+
import com.facebook.react.bridge.Promise;
|
|
26
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
27
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
28
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
29
|
+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
23
30
|
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
|
24
|
-
import io.invertase.firebase.common.ReactNativeFirebaseModule;
|
|
25
31
|
import io.invertase.firebase.common.ReactNativeFirebasePreferences;
|
|
26
32
|
import java.util.HashMap;
|
|
27
33
|
import java.util.Map;
|
|
28
34
|
import java.util.Objects;
|
|
29
35
|
|
|
30
|
-
public class
|
|
36
|
+
public class NativeRNFBTurboCrashlytics extends NativeRNFBTurboCrashlyticsSpec {
|
|
31
37
|
private static final String TAG = "Crashlytics";
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
super(reactContext
|
|
39
|
+
public NativeRNFBTurboCrashlytics(ReactApplicationContext reactContext) {
|
|
40
|
+
super(reactContext);
|
|
35
41
|
}
|
|
36
42
|
|
|
37
|
-
@
|
|
43
|
+
@Override
|
|
44
|
+
protected Map<String, Object> getTypedExportedConstants() {
|
|
45
|
+
final Map<String, Object> constants = new HashMap<>();
|
|
46
|
+
constants.put(
|
|
47
|
+
"isCrashlyticsCollectionEnabled",
|
|
48
|
+
ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled());
|
|
49
|
+
constants.put(
|
|
50
|
+
"isErrorGenerationOnJSCrashEnabled",
|
|
51
|
+
ReactNativeFirebaseCrashlyticsInitProvider.isErrorGenerationOnJSCrashEnabled());
|
|
52
|
+
constants.put(
|
|
53
|
+
"isCrashlyticsJavascriptExceptionHandlerChainingEnabled",
|
|
54
|
+
ReactNativeFirebaseCrashlyticsInitProvider
|
|
55
|
+
.isCrashlyticsJavascriptExceptionHandlerChainingEnabled());
|
|
56
|
+
return constants;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@Override
|
|
38
60
|
public void checkForUnsentReports(Promise promise) {
|
|
39
61
|
FirebaseCrashlytics.getInstance()
|
|
40
62
|
.checkForUnsentReports()
|
|
@@ -58,7 +80,7 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
58
80
|
});
|
|
59
81
|
}
|
|
60
82
|
|
|
61
|
-
@
|
|
83
|
+
@Override
|
|
62
84
|
public void crashWithStackPromise(ReadableMap jsErrorMap, Promise promise) {
|
|
63
85
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
64
86
|
Exception e = recordJavaScriptError(jsErrorMap);
|
|
@@ -71,10 +93,9 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
71
93
|
promise.resolve(null);
|
|
72
94
|
}
|
|
73
95
|
|
|
74
|
-
@
|
|
96
|
+
@Override
|
|
75
97
|
public void crash() {
|
|
76
98
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
77
|
-
// async task so as not to get caught by the React Native redbox handler in debug
|
|
78
99
|
new Handler()
|
|
79
100
|
.postDelayed(
|
|
80
101
|
new Runnable() {
|
|
@@ -89,25 +110,25 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
89
110
|
}
|
|
90
111
|
}
|
|
91
112
|
|
|
92
|
-
@
|
|
93
|
-
public void deleteUnsentReports() {
|
|
113
|
+
@Override
|
|
114
|
+
public void deleteUnsentReports(Promise promise) {
|
|
94
115
|
FirebaseCrashlytics.getInstance().deleteUnsentReports();
|
|
116
|
+
promise.resolve(null);
|
|
95
117
|
}
|
|
96
118
|
|
|
97
|
-
@
|
|
119
|
+
@Override
|
|
98
120
|
public void didCrashOnPreviousExecution(Promise promise) {
|
|
99
121
|
promise.resolve(FirebaseCrashlytics.getInstance().didCrashOnPreviousExecution());
|
|
100
122
|
}
|
|
101
123
|
|
|
102
|
-
@
|
|
124
|
+
@Override
|
|
103
125
|
public void log(String message) {
|
|
104
126
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
105
127
|
FirebaseCrashlytics.getInstance().log(message);
|
|
106
128
|
}
|
|
107
129
|
}
|
|
108
130
|
|
|
109
|
-
|
|
110
|
-
@ReactMethod
|
|
131
|
+
@Override
|
|
111
132
|
public void logPromise(String message, Promise promise) {
|
|
112
133
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
113
134
|
FirebaseCrashlytics.getInstance().log(message);
|
|
@@ -115,7 +136,7 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
115
136
|
promise.resolve(null);
|
|
116
137
|
}
|
|
117
138
|
|
|
118
|
-
@
|
|
139
|
+
@Override
|
|
119
140
|
public void setAttribute(String key, String value, Promise promise) {
|
|
120
141
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
121
142
|
FirebaseCrashlytics.getInstance().setCustomKey(key, value);
|
|
@@ -123,7 +144,7 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
123
144
|
promise.resolve(null);
|
|
124
145
|
}
|
|
125
146
|
|
|
126
|
-
@
|
|
147
|
+
@Override
|
|
127
148
|
public void setAttributes(ReadableMap keyValuesMap, Promise promise) {
|
|
128
149
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
129
150
|
ReadableMapKeySetIterator iterator = keyValuesMap.keySetIterator();
|
|
@@ -139,12 +160,12 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
139
160
|
promise.resolve(null);
|
|
140
161
|
}
|
|
141
162
|
|
|
142
|
-
@
|
|
163
|
+
@Override
|
|
143
164
|
public void sendUnsentReports() {
|
|
144
165
|
FirebaseCrashlytics.getInstance().sendUnsentReports();
|
|
145
166
|
}
|
|
146
167
|
|
|
147
|
-
@
|
|
168
|
+
@Override
|
|
148
169
|
public void setUserId(String userId, Promise promise) {
|
|
149
170
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
150
171
|
FirebaseCrashlytics.getInstance().setUserId(userId);
|
|
@@ -152,14 +173,14 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
152
173
|
promise.resolve(null);
|
|
153
174
|
}
|
|
154
175
|
|
|
155
|
-
@
|
|
156
|
-
public void setCrashlyticsCollectionEnabled(
|
|
176
|
+
@Override
|
|
177
|
+
public void setCrashlyticsCollectionEnabled(boolean enabled, Promise promise) {
|
|
157
178
|
ReactNativeFirebasePreferences.getSharedInstance()
|
|
158
179
|
.setBooleanValue(Constants.KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED, enabled);
|
|
159
180
|
promise.resolve(null);
|
|
160
181
|
}
|
|
161
182
|
|
|
162
|
-
@
|
|
183
|
+
@Override
|
|
163
184
|
public void recordError(ReadableMap jsErrorMap) {
|
|
164
185
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
165
186
|
recordJavaScriptError(jsErrorMap);
|
|
@@ -168,7 +189,7 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
168
189
|
}
|
|
169
190
|
}
|
|
170
191
|
|
|
171
|
-
@
|
|
192
|
+
@Override
|
|
172
193
|
public void recordErrorPromise(ReadableMap jsErrorMap, Promise promise) {
|
|
173
194
|
if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
|
|
174
195
|
recordJavaScriptError(jsErrorMap);
|
|
@@ -204,20 +225,4 @@ public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseMod
|
|
|
204
225
|
FirebaseCrashlytics.getInstance().recordException(customException);
|
|
205
226
|
return customException;
|
|
206
227
|
}
|
|
207
|
-
|
|
208
|
-
@Override
|
|
209
|
-
public Map<String, Object> getConstants() {
|
|
210
|
-
final Map<String, Object> constants = new HashMap<>();
|
|
211
|
-
constants.put(
|
|
212
|
-
"isCrashlyticsCollectionEnabled",
|
|
213
|
-
ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled());
|
|
214
|
-
constants.put(
|
|
215
|
-
"isErrorGenerationOnJSCrashEnabled",
|
|
216
|
-
ReactNativeFirebaseCrashlyticsInitProvider.isErrorGenerationOnJSCrashEnabled());
|
|
217
|
-
constants.put(
|
|
218
|
-
"isCrashlyticsJavascriptExceptionHandlerChainingEnabled",
|
|
219
|
-
ReactNativeFirebaseCrashlyticsInitProvider
|
|
220
|
-
.isCrashlyticsJavascriptExceptionHandlerChainingEnabled());
|
|
221
|
-
return constants;
|
|
222
|
-
}
|
|
223
228
|
}
|
|
@@ -30,7 +30,7 @@ public class ReactNativeFirebaseCrashlyticsPackage implements ReactPackage {
|
|
|
30
30
|
@Override
|
|
31
31
|
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
32
32
|
List<NativeModule> modules = new ArrayList<>();
|
|
33
|
-
modules.add(new
|
|
33
|
+
modules.add(new NativeRNFBTurboCrashlytics(reactContext));
|
|
34
34
|
return modules;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJavaSpec.js
|
|
9
|
+
*
|
|
10
|
+
* @nolint
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
package com.facebook.fbreact.specs;
|
|
14
|
+
|
|
15
|
+
import com.facebook.proguard.annotations.DoNotStrip;
|
|
16
|
+
import com.facebook.react.bridge.Promise;
|
|
17
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
18
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
19
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
20
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
21
|
+
import com.facebook.react.common.build.ReactBuildConfig;
|
|
22
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
23
|
+
import java.util.Arrays;
|
|
24
|
+
import java.util.HashSet;
|
|
25
|
+
import java.util.Map;
|
|
26
|
+
import java.util.Set;
|
|
27
|
+
import javax.annotation.Nonnull;
|
|
28
|
+
import javax.annotation.Nullable;
|
|
29
|
+
|
|
30
|
+
public abstract class NativeRNFBTurboCrashlyticsSpec extends ReactContextBaseJavaModule implements TurboModule {
|
|
31
|
+
public static final String NAME = "NativeRNFBTurboCrashlytics";
|
|
32
|
+
|
|
33
|
+
public NativeRNFBTurboCrashlyticsSpec(ReactApplicationContext reactContext) {
|
|
34
|
+
super(reactContext);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@Override
|
|
38
|
+
public @Nonnull String getName() {
|
|
39
|
+
return NAME;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected abstract Map<String, Object> getTypedExportedConstants();
|
|
43
|
+
|
|
44
|
+
@Override
|
|
45
|
+
@DoNotStrip
|
|
46
|
+
public final @Nullable Map<String, Object> getConstants() {
|
|
47
|
+
Map<String, Object> constants = getTypedExportedConstants();
|
|
48
|
+
if (ReactBuildConfig.DEBUG || ReactBuildConfig.IS_INTERNAL_BUILD) {
|
|
49
|
+
Set<String> obligatoryFlowConstants = new HashSet<>(Arrays.asList(
|
|
50
|
+
"isCrashlyticsCollectionEnabled",
|
|
51
|
+
"isCrashlyticsJavascriptExceptionHandlerChainingEnabled",
|
|
52
|
+
"isErrorGenerationOnJSCrashEnabled"
|
|
53
|
+
));
|
|
54
|
+
Set<String> optionalFlowConstants = new HashSet<>();
|
|
55
|
+
Set<String> undeclaredConstants = new HashSet<>(constants.keySet());
|
|
56
|
+
undeclaredConstants.removeAll(obligatoryFlowConstants);
|
|
57
|
+
undeclaredConstants.removeAll(optionalFlowConstants);
|
|
58
|
+
if (!undeclaredConstants.isEmpty()) {
|
|
59
|
+
throw new IllegalStateException(String.format("Native Module Flow doesn't declare constants: %s", undeclaredConstants));
|
|
60
|
+
}
|
|
61
|
+
undeclaredConstants = obligatoryFlowConstants;
|
|
62
|
+
undeclaredConstants.removeAll(constants.keySet());
|
|
63
|
+
if (!undeclaredConstants.isEmpty()) {
|
|
64
|
+
throw new IllegalStateException(String.format("Native Module doesn't fill in constants: %s", undeclaredConstants));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return constants;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@ReactMethod
|
|
71
|
+
@DoNotStrip
|
|
72
|
+
public abstract void checkForUnsentReports(Promise promise);
|
|
73
|
+
|
|
74
|
+
@ReactMethod
|
|
75
|
+
@DoNotStrip
|
|
76
|
+
public abstract void crash();
|
|
77
|
+
|
|
78
|
+
@ReactMethod
|
|
79
|
+
@DoNotStrip
|
|
80
|
+
public abstract void crashWithStackPromise(ReadableMap jsErrorDict, Promise promise);
|
|
81
|
+
|
|
82
|
+
@ReactMethod
|
|
83
|
+
@DoNotStrip
|
|
84
|
+
public abstract void deleteUnsentReports(Promise promise);
|
|
85
|
+
|
|
86
|
+
@ReactMethod
|
|
87
|
+
@DoNotStrip
|
|
88
|
+
public abstract void didCrashOnPreviousExecution(Promise promise);
|
|
89
|
+
|
|
90
|
+
@ReactMethod
|
|
91
|
+
@DoNotStrip
|
|
92
|
+
public abstract void log(String message);
|
|
93
|
+
|
|
94
|
+
@ReactMethod
|
|
95
|
+
@DoNotStrip
|
|
96
|
+
public abstract void logPromise(String message, Promise promise);
|
|
97
|
+
|
|
98
|
+
@ReactMethod
|
|
99
|
+
@DoNotStrip
|
|
100
|
+
public abstract void sendUnsentReports();
|
|
101
|
+
|
|
102
|
+
@ReactMethod
|
|
103
|
+
@DoNotStrip
|
|
104
|
+
public abstract void setAttribute(String key, String value, Promise promise);
|
|
105
|
+
|
|
106
|
+
@ReactMethod
|
|
107
|
+
@DoNotStrip
|
|
108
|
+
public abstract void setAttributes(ReadableMap attributes, Promise promise);
|
|
109
|
+
|
|
110
|
+
@ReactMethod
|
|
111
|
+
@DoNotStrip
|
|
112
|
+
public abstract void setUserId(String userId, Promise promise);
|
|
113
|
+
|
|
114
|
+
@ReactMethod
|
|
115
|
+
@DoNotStrip
|
|
116
|
+
public abstract void recordError(ReadableMap jsErrorDict);
|
|
117
|
+
|
|
118
|
+
@ReactMethod
|
|
119
|
+
@DoNotStrip
|
|
120
|
+
public abstract void recordErrorPromise(ReadableMap jsErrorDict, Promise promise);
|
|
121
|
+
|
|
122
|
+
@ReactMethod
|
|
123
|
+
@DoNotStrip
|
|
124
|
+
public abstract void setCrashlyticsCollectionEnabled(boolean enabled, Promise promise);
|
|
125
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
#
|
|
3
|
+
# This source code is licensed under the MIT license found in the
|
|
4
|
+
# LICENSE file in the root directory of this source tree.
|
|
5
|
+
|
|
6
|
+
cmake_minimum_required(VERSION 3.13)
|
|
7
|
+
set(CMAKE_VERBOSE_MAKEFILE on)
|
|
8
|
+
|
|
9
|
+
file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/RNFBCrashlyticsTurboModules/*.cpp)
|
|
10
|
+
|
|
11
|
+
add_library(
|
|
12
|
+
react_codegen_RNFBCrashlyticsTurboModules
|
|
13
|
+
OBJECT
|
|
14
|
+
${react_codegen_SRCS}
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
target_include_directories(react_codegen_RNFBCrashlyticsTurboModules PUBLIC . react/renderer/components/RNFBCrashlyticsTurboModules)
|
|
18
|
+
|
|
19
|
+
target_link_libraries(
|
|
20
|
+
react_codegen_RNFBCrashlyticsTurboModules
|
|
21
|
+
fbjni
|
|
22
|
+
jsi
|
|
23
|
+
# We need to link different libraries based on whether we are building rncore or not, that's necessary
|
|
24
|
+
# because we want to break a circular dependency between react_codegen_rncore and reactnative
|
|
25
|
+
reactnative
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
target_compile_options(
|
|
29
|
+
react_codegen_RNFBCrashlyticsTurboModules
|
|
30
|
+
PRIVATE
|
|
31
|
+
-DLOG_TAG=\"ReactNative\"
|
|
32
|
+
-fexceptions
|
|
33
|
+
-frtti
|
|
34
|
+
-std=c++20
|
|
35
|
+
-Wall
|
|
36
|
+
)
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJniCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "RNFBCrashlyticsTurboModules.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_getConstants(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
16
|
+
static jmethodID cachedMethodId = nullptr;
|
|
17
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, ObjectKind, "getConstants", "()Ljava/util/Map;", args, count, cachedMethodId);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_checkForUnsentReports(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
21
|
+
static jmethodID cachedMethodId = nullptr;
|
|
22
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "checkForUnsentReports", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_crash(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
26
|
+
static jmethodID cachedMethodId = nullptr;
|
|
27
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "crash", "()V", args, count, cachedMethodId);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_crashWithStackPromise(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
31
|
+
static jmethodID cachedMethodId = nullptr;
|
|
32
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "crashWithStackPromise", "(Lcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_deleteUnsentReports(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
36
|
+
static jmethodID cachedMethodId = nullptr;
|
|
37
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "deleteUnsentReports", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_didCrashOnPreviousExecution(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
41
|
+
static jmethodID cachedMethodId = nullptr;
|
|
42
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "didCrashOnPreviousExecution", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_log(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
46
|
+
static jmethodID cachedMethodId = nullptr;
|
|
47
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "log", "(Ljava/lang/String;)V", args, count, cachedMethodId);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_logPromise(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
51
|
+
static jmethodID cachedMethodId = nullptr;
|
|
52
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "logPromise", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_sendUnsentReports(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
56
|
+
static jmethodID cachedMethodId = nullptr;
|
|
57
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "sendUnsentReports", "()V", args, count, cachedMethodId);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setAttribute(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
61
|
+
static jmethodID cachedMethodId = nullptr;
|
|
62
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setAttribute", "(Ljava/lang/String;Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setAttributes(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
66
|
+
static jmethodID cachedMethodId = nullptr;
|
|
67
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setAttributes", "(Lcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setUserId(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
71
|
+
static jmethodID cachedMethodId = nullptr;
|
|
72
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setUserId", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_recordError(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
76
|
+
static jmethodID cachedMethodId = nullptr;
|
|
77
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "recordError", "(Lcom/facebook/react/bridge/ReadableMap;)V", args, count, cachedMethodId);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_recordErrorPromise(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
81
|
+
static jmethodID cachedMethodId = nullptr;
|
|
82
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "recordErrorPromise", "(Lcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setCrashlyticsCollectionEnabled(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
86
|
+
static jmethodID cachedMethodId = nullptr;
|
|
87
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setCrashlyticsCollectionEnabled", "(ZLcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
NativeRNFBTurboCrashlyticsSpecJSI::NativeRNFBTurboCrashlyticsSpecJSI(const JavaTurboModule::InitParams ¶ms)
|
|
91
|
+
: JavaTurboModule(params) {
|
|
92
|
+
methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_getConstants};
|
|
93
|
+
methodMap_["checkForUnsentReports"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_checkForUnsentReports};
|
|
94
|
+
methodMap_["crash"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_crash};
|
|
95
|
+
methodMap_["crashWithStackPromise"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_crashWithStackPromise};
|
|
96
|
+
methodMap_["deleteUnsentReports"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_deleteUnsentReports};
|
|
97
|
+
methodMap_["didCrashOnPreviousExecution"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_didCrashOnPreviousExecution};
|
|
98
|
+
methodMap_["log"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_log};
|
|
99
|
+
methodMap_["logPromise"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_logPromise};
|
|
100
|
+
methodMap_["sendUnsentReports"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_sendUnsentReports};
|
|
101
|
+
methodMap_["setAttribute"] = MethodMetadata {2, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setAttribute};
|
|
102
|
+
methodMap_["setAttributes"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setAttributes};
|
|
103
|
+
methodMap_["setUserId"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setUserId};
|
|
104
|
+
methodMap_["recordError"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_recordError};
|
|
105
|
+
methodMap_["recordErrorPromise"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_recordErrorPromise};
|
|
106
|
+
methodMap_["setCrashlyticsCollectionEnabled"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboCrashlyticsSpecJSI_setCrashlyticsCollectionEnabled};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
std::shared_ptr<TurboModule> RNFBCrashlyticsTurboModules_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) {
|
|
110
|
+
if (moduleName == "NativeRNFBTurboCrashlytics") {
|
|
111
|
+
return std::make_shared<NativeRNFBTurboCrashlyticsSpecJSI>(params);
|
|
112
|
+
}
|
|
113
|
+
return nullptr;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJniH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include <ReactCommon/JavaTurboModule.h>
|
|
14
|
+
#include <ReactCommon/TurboModule.h>
|
|
15
|
+
#include <jsi/jsi.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* JNI C++ class for module 'NativeRNFBTurboCrashlytics'
|
|
21
|
+
*/
|
|
22
|
+
class JSI_EXPORT NativeRNFBTurboCrashlyticsSpecJSI : public JavaTurboModule {
|
|
23
|
+
public:
|
|
24
|
+
NativeRNFBTurboCrashlyticsSpecJSI(const JavaTurboModule::InitParams ¶ms);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
JSI_EXPORT
|
|
29
|
+
std::shared_ptr<TurboModule> RNFBCrashlyticsTurboModules_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms);
|
|
30
|
+
|
|
31
|
+
} // namespace facebook::react
|