@react-native-firebase/app 25.1.0 → 26.1.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.
Files changed (163) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +21 -0
  3. package/RNFBApp.podspec +20 -15
  4. package/android/build.gradle +25 -6
  5. package/android/src/reactnative/java/io/invertase/firebase/app/{ReactNativeFirebaseAppModule.java → NativeRNFBTurboApp.java} +81 -45
  6. package/android/src/reactnative/java/io/invertase/firebase/app/ReactNativeFirebaseAppPackage.java +3 -3
  7. package/android/src/reactnative/java/io/invertase/firebase/app/ReactNativeFirebaseVersion.java +2 -2
  8. package/android/src/reactnative/java/io/invertase/firebase/app/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboAppSpec.java +136 -0
  9. package/android/src/reactnative/java/io/invertase/firebase/app/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboUtilsSpec.java +94 -0
  10. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/CMakeLists.txt +36 -0
  11. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/RNFBAppTurboModules-generated.cpp +170 -0
  12. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/RNFBAppTurboModules.h +39 -0
  13. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/react/renderer/components/RNFBAppTurboModules/RNFBAppTurboModulesJSI-generated.cpp +187 -0
  14. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/react/renderer/components/RNFBAppTurboModules/RNFBAppTurboModulesJSI.h +606 -0
  15. package/android/src/reactnative/java/io/invertase/firebase/common/RCTConvertFirebase.java +3 -3
  16. package/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebaseEventEmitter.java +475 -20
  17. package/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebaseMeta.java +8 -0
  18. package/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebasePreferences.java +8 -0
  19. package/android/src/reactnative/java/io/invertase/firebase/utils/{ReactNativeFirebaseUtilsModule.java → NativeRNFBTurboUtils.java} +57 -40
  20. package/android/src/test/java/io/invertase/firebase/app/NativeRNFBTurboAppTest.java +400 -0
  21. package/android/src/test/java/io/invertase/firebase/common/ReactNativeFirebaseEventEmitterTest.java +1823 -0
  22. package/app.plugin.js +1 -1
  23. package/dist/module/FirebaseApp.js +0 -9
  24. package/dist/module/FirebaseApp.js.map +1 -1
  25. package/dist/module/common/index.js +0 -645
  26. package/dist/module/common/index.js.map +1 -1
  27. package/dist/module/common/unitTestUtils.js +18 -54
  28. package/dist/module/common/unitTestUtils.js.map +1 -1
  29. package/dist/module/index.js +0 -1
  30. package/dist/module/index.js.map +1 -1
  31. package/dist/module/internal/RNFBNativeEventEmitter.js +12 -6
  32. package/dist/module/internal/RNFBNativeEventEmitter.js.map +1 -1
  33. package/dist/module/internal/constants.js +2 -2
  34. package/dist/module/internal/constants.js.map +1 -1
  35. package/dist/module/internal/index.js +1 -1
  36. package/dist/module/internal/index.js.map +1 -1
  37. package/dist/module/internal/nativeModuleAndroidIos.js +50 -10
  38. package/dist/module/internal/nativeModuleAndroidIos.js.map +1 -1
  39. package/dist/module/internal/nativeModuleWeb.js +12 -4
  40. package/dist/module/internal/nativeModuleWeb.js.map +1 -1
  41. package/dist/module/internal/registry/app.js +20 -12
  42. package/dist/module/internal/registry/app.js.map +1 -1
  43. package/dist/module/internal/registry/modular.js +73 -0
  44. package/dist/module/internal/registry/modular.js.map +1 -0
  45. package/dist/module/internal/registry/nativeModule.js +116 -95
  46. package/dist/module/internal/registry/nativeModule.js.map +1 -1
  47. package/dist/module/internal/web/RNFBAppModule.js +16 -3
  48. package/dist/module/internal/web/RNFBAppModule.js.map +1 -1
  49. package/dist/module/internal/web/utils.js +6 -1
  50. package/dist/module/internal/web/utils.js.map +1 -1
  51. package/dist/module/modular.js +44 -37
  52. package/dist/module/modular.js.map +1 -1
  53. package/dist/module/types/app.js +0 -3
  54. package/dist/module/types/app.js.map +1 -1
  55. package/dist/module/types/internal.js +0 -2
  56. package/dist/module/utils/UtilsStatics.js +2 -2
  57. package/dist/module/utils/UtilsStatics.js.map +1 -1
  58. package/dist/module/utils/index.js +21 -17
  59. package/dist/module/utils/index.js.map +1 -1
  60. package/dist/module/version.js +1 -1
  61. package/dist/typescript/lib/FirebaseApp.d.ts +1 -2
  62. package/dist/typescript/lib/FirebaseApp.d.ts.map +1 -1
  63. package/dist/typescript/lib/common/index.d.ts +0 -8
  64. package/dist/typescript/lib/common/index.d.ts.map +1 -1
  65. package/dist/typescript/lib/common/unitTestUtils.d.ts +1 -4
  66. package/dist/typescript/lib/common/unitTestUtils.d.ts.map +1 -1
  67. package/dist/typescript/lib/index.d.ts +0 -1
  68. package/dist/typescript/lib/index.d.ts.map +1 -1
  69. package/dist/typescript/lib/internal/NativeFirebaseError.d.ts +1 -1
  70. package/dist/typescript/lib/internal/NativeFirebaseError.d.ts.map +1 -1
  71. package/dist/typescript/lib/internal/RNFBNativeEventEmitter.d.ts.map +1 -1
  72. package/dist/typescript/lib/internal/constants.d.ts +2 -3
  73. package/dist/typescript/lib/internal/constants.d.ts.map +1 -1
  74. package/dist/typescript/lib/internal/index.d.ts +1 -1
  75. package/dist/typescript/lib/internal/index.d.ts.map +1 -1
  76. package/dist/typescript/lib/internal/nativeModuleAndroidIos.d.ts +2 -6
  77. package/dist/typescript/lib/internal/nativeModuleAndroidIos.d.ts.map +1 -1
  78. package/dist/typescript/lib/internal/nativeModuleWeb.d.ts.map +1 -1
  79. package/dist/typescript/lib/internal/registry/app.d.ts +2 -2
  80. package/dist/typescript/lib/internal/registry/app.d.ts.map +1 -1
  81. package/dist/typescript/lib/internal/registry/modular.d.ts +22 -0
  82. package/dist/typescript/lib/internal/registry/modular.d.ts.map +1 -0
  83. package/dist/typescript/lib/internal/registry/nativeModule.d.ts +3 -11
  84. package/dist/typescript/lib/internal/registry/nativeModule.d.ts.map +1 -1
  85. package/dist/typescript/lib/internal/web/RNFBAppModule.d.ts.map +1 -1
  86. package/dist/typescript/lib/internal/web/utils.d.ts.map +1 -1
  87. package/dist/typescript/lib/modular.d.ts +21 -7
  88. package/dist/typescript/lib/modular.d.ts.map +1 -1
  89. package/dist/typescript/lib/types/app.d.ts +4 -4
  90. package/dist/typescript/lib/types/app.d.ts.map +1 -1
  91. package/dist/typescript/lib/types/internal.d.ts +1 -33
  92. package/dist/typescript/lib/types/internal.d.ts.map +1 -1
  93. package/dist/typescript/lib/utils/index.d.ts +7 -3
  94. package/dist/typescript/lib/utils/index.d.ts.map +1 -1
  95. package/dist/typescript/lib/version.d.ts +1 -1
  96. package/firebase-schema.json +5 -1
  97. package/firebase_spm.rb +1016 -0
  98. package/ios/RNFBApp/RCTConvert+FIRApp.h +4 -0
  99. package/ios/RNFBApp/RCTConvert+FIROptions.h +4 -0
  100. package/ios/RNFBApp/RNFBAppModule.h +1 -3
  101. package/ios/RNFBApp/{RNFBAppModule.m → RNFBAppModule.mm} +80 -77
  102. package/ios/RNFBApp/RNFBSharedUtils.h +4 -0
  103. package/ios/RNFBApp/RNFBUtilsModule.h +1 -3
  104. package/ios/RNFBApp/{RNFBUtilsModule.m → RNFBUtilsModule.mm} +68 -25
  105. package/ios/RNFBApp/RNFBVersion.m +1 -1
  106. package/ios/RNFBApp.xcodeproj/project.pbxproj +12 -12
  107. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  108. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  109. package/ios/generated/RCTModuleProviders.h +16 -0
  110. package/ios/generated/RCTModuleProviders.mm +52 -0
  111. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  112. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  113. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  114. package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
  115. package/ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.h +14 -0
  116. package/ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.mm +19 -0
  117. package/ios/generated/RNFBAppTurboModules/RNFBAppTurboModules-generated.mm +210 -0
  118. package/ios/generated/RNFBAppTurboModules/RNFBAppTurboModules.h +399 -0
  119. package/ios/generated/RNFBAppTurboModulesJSI-generated.cpp +187 -0
  120. package/ios/generated/RNFBAppTurboModulesJSI.h +606 -0
  121. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  122. package/ios/generated/ReactCodegen.podspec +111 -0
  123. package/lib/FirebaseApp.ts +1 -10
  124. package/lib/common/index.ts +0 -742
  125. package/lib/common/unitTestUtils.ts +17 -73
  126. package/lib/index.ts +0 -1
  127. package/lib/internal/NativeFirebaseError.ts +1 -1
  128. package/lib/internal/RNFBNativeEventEmitter.ts +12 -6
  129. package/lib/internal/constants.ts +3 -25
  130. package/lib/internal/global.d.ts +0 -4
  131. package/lib/internal/index.ts +1 -1
  132. package/lib/internal/nativeModuleAndroidIos.ts +69 -12
  133. package/lib/internal/nativeModuleWeb.ts +11 -5
  134. package/lib/internal/registry/app.ts +24 -22
  135. package/lib/internal/registry/modular.ts +97 -0
  136. package/lib/internal/registry/nativeModule.ts +136 -107
  137. package/lib/internal/web/RNFBAppModule.ts +16 -3
  138. package/lib/internal/web/utils.ts +6 -1
  139. package/lib/modular.ts +47 -72
  140. package/lib/types/app.ts +6 -11
  141. package/lib/types/internal.ts +1 -46
  142. package/lib/utils/UtilsStatics.ts +2 -2
  143. package/lib/utils/index.ts +24 -18
  144. package/lib/version.ts +1 -1
  145. package/package.json +45 -6
  146. package/plugin/build/app.plugin.d.ts +2 -0
  147. package/plugin/build/app.plugin.js +6 -0
  148. package/plugin/src/app.plugin.ts +3 -0
  149. package/plugin/tsconfig.tsbuildinfo +1 -1
  150. package/react-native.config.js +2 -0
  151. package/specs/NativeRNFBTurboApp.ts +57 -0
  152. package/specs/NativeRNFBTurboUtils.ts +34 -0
  153. package/typedoc.json +1 -2
  154. package/dist/module/internal/registry/namespace.js +0 -262
  155. package/dist/module/internal/registry/namespace.js.map +0 -1
  156. package/dist/module/namespaced.js +0 -25
  157. package/dist/module/namespaced.js.map +0 -1
  158. package/dist/typescript/lib/internal/registry/namespace.d.ts +0 -26
  159. package/dist/typescript/lib/internal/registry/namespace.d.ts.map +0 -1
  160. package/dist/typescript/lib/namespaced.d.ts +0 -5
  161. package/dist/typescript/lib/namespaced.d.ts.map +0 -1
  162. package/lib/internal/registry/namespace.ts +0 -338
  163. package/lib/namespaced.ts +0 -24
@@ -15,7 +15,11 @@
15
15
  *
16
16
  */
17
17
 
18
+ #if __has_include(<FirebaseCore/FirebaseCore.h>)
18
19
  #import <FirebaseCore/FirebaseCore.h>
20
+ #else
21
+ @import FirebaseCore;
22
+ #endif
19
23
  #import <React/RCTConvert.h>
20
24
 
21
25
  @interface RCTConvert (FIRApp)
@@ -15,7 +15,11 @@
15
15
  *
16
16
  */
17
17
 
18
+ #if __has_include(<FirebaseCore/FirebaseCore.h>)
18
19
  #import <FirebaseCore/FirebaseCore.h>
20
+ #else
21
+ @import FirebaseCore;
22
+ #endif
19
23
  #import <React/RCTConvert.h>
20
24
 
21
25
  @interface RCTConvert (FIROptions)
@@ -17,9 +17,7 @@
17
17
 
18
18
  #import <Foundation/Foundation.h>
19
19
 
20
- #import <React/RCTBridgeModule.h>
21
-
22
- @interface RNFBAppModule : NSObject <RCTBridgeModule>
20
+ @interface RNFBAppModule : NSObject
23
21
 
24
22
  + (NSString *)getCustomDomain:(NSString *)appName;
25
23
 
@@ -15,10 +15,19 @@
15
15
  *
16
16
  */
17
17
 
18
+ #if __has_include(<Firebase/Firebase.h>)
18
19
  #import <Firebase/Firebase.h>
20
+ #elif __has_include(<FirebaseCore/FirebaseCore.h>)
21
+ #import <FirebaseCore/FirebaseCore.h>
22
+ #else
23
+ @import FirebaseCore;
24
+ #endif
25
+ #import <React/RCTInvalidating.h>
19
26
  #import <React/RCTUtils.h>
20
27
 
28
+ #import "RCTConvert+FIRApp.h"
21
29
  #import "RNFBAppModule.h"
30
+ #import "RNFBAppTurboModules.h"
22
31
  #import "RNFBJSON.h"
23
32
  #import "RNFBMeta.h"
24
33
  #import "RNFBPreferences.h"
@@ -31,15 +40,19 @@
31
40
  #define REGISTER_LIB
32
41
  #endif
33
42
 
43
+ @interface RNFBAppModule () <NativeRNFBTurboAppSpec, RCTInvalidating>
44
+ @end
45
+
34
46
  @implementation RNFBAppModule
35
47
 
36
48
  #pragma mark -
37
49
  #pragma mark Module Setup
38
50
 
39
- RCT_EXPORT_MODULE();
51
+ RCT_EXPORT_MODULE(NativeRNFBTurboApp)
40
52
 
41
- - (dispatch_queue_t)methodQueue {
42
- return dispatch_get_main_queue();
53
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
54
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
55
+ return std::make_shared<facebook::react::NativeRNFBTurboAppSpecJSI>(params);
43
56
  }
44
57
 
45
58
  - (void)setBridge:(RCTBridge *)bridge {
@@ -71,54 +84,70 @@ RCT_EXPORT_MODULE();
71
84
  [[RNFBRCTEventEmitter shared] invalidate];
72
85
  }
73
86
 
87
+ #pragma mark -
88
+ #pragma mark Constants
89
+
90
+ - (NSDictionary *)appConstantsDictionary {
91
+ NSDictionary *firApps = [FIRApp allApps];
92
+ NSMutableArray *appsArray = [NSMutableArray new];
93
+ NSMutableDictionary *constants = [NSMutableDictionary new];
94
+
95
+ for (id key in firApps) {
96
+ [appsArray addObject:[RNFBSharedUtils firAppToDictionary:firApps[key]]];
97
+ }
98
+
99
+ constants[@"NATIVE_FIREBASE_APPS"] = appsArray;
100
+ constants[@"FIREBASE_RAW_JSON"] = [[RNFBJSON shared] getRawJSON];
101
+
102
+ return constants;
103
+ }
104
+
105
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboApp::Constants::Builder>)constantsToExport {
106
+ return [_RCTTypedModuleConstants newWithUnsafeDictionary:[self appConstantsDictionary]];
107
+ }
108
+
109
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboApp::Constants::Builder>)getConstants {
110
+ return [self constantsToExport];
111
+ }
112
+
74
113
  #pragma mark -
75
114
  #pragma mark META Methods
76
115
 
77
- RCT_EXPORT_METHOD(metaGetAll
78
- : (RCTPromiseResolveBlock)resolve rejecter
79
- : (RCTPromiseRejectBlock)reject) {
116
+ - (void)metaGetAll:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
80
117
  resolve([RNFBMeta getAll]);
81
118
  }
82
119
 
83
120
  #pragma mark -
84
121
  #pragma mark JSON Methods
85
122
 
86
- RCT_EXPORT_METHOD(jsonGetAll
87
- : (RCTPromiseResolveBlock)resolve rejecter
88
- : (RCTPromiseRejectBlock)reject) {
123
+ - (void)jsonGetAll:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
89
124
  resolve([[RNFBJSON shared] getAll]);
90
125
  }
91
126
 
92
127
  #pragma mark -
93
128
  #pragma mark Preference Methods
94
129
 
95
- RCT_EXPORT_METHOD(preferencesSetBool
96
- : (NSString *)key boolValue
97
- : (BOOL)boolValue resolver
98
- : (RCTPromiseResolveBlock)resolve rejecter
99
- : (RCTPromiseRejectBlock)reject) {
100
- [[RNFBPreferences shared] setBooleanValue:key boolValue:boolValue];
130
+ - (void)preferencesSetBool:(NSString *)key
131
+ value:(BOOL)value
132
+ resolve:(RCTPromiseResolveBlock)resolve
133
+ reject:(RCTPromiseRejectBlock)reject {
134
+ [[RNFBPreferences shared] setBooleanValue:key boolValue:value];
101
135
  resolve([NSNull null]);
102
136
  }
103
137
 
104
- RCT_EXPORT_METHOD(preferencesSetString
105
- : (NSString *)key stringValue
106
- : (NSString *)stringValue resolver
107
- : (RCTPromiseResolveBlock)resolve rejecter
108
- : (RCTPromiseRejectBlock)reject) {
109
- [[RNFBPreferences shared] setStringValue:key stringValue:stringValue];
138
+ - (void)preferencesSetString:(NSString *)key
139
+ value:(NSString *)value
140
+ resolve:(RCTPromiseResolveBlock)resolve
141
+ reject:(RCTPromiseRejectBlock)reject {
142
+ [[RNFBPreferences shared] setStringValue:key stringValue:value];
110
143
  resolve([NSNull null]);
111
144
  }
112
145
 
113
- RCT_EXPORT_METHOD(preferencesGetAll
114
- : (RCTPromiseResolveBlock)resolve rejecter
115
- : (RCTPromiseRejectBlock)reject) {
146
+ - (void)preferencesGetAll:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
116
147
  resolve([[RNFBPreferences shared] getAll]);
117
148
  }
118
149
 
119
- RCT_EXPORT_METHOD(preferencesClearAll
120
- : (RCTPromiseResolveBlock)resolve rejecter
121
- : (RCTPromiseRejectBlock)reject) {
150
+ - (void)preferencesClearAll:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
122
151
  [[RNFBPreferences shared] clearAll];
123
152
  resolve([NSNull null]);
124
153
  }
@@ -126,52 +155,48 @@ RCT_EXPORT_METHOD(preferencesClearAll
126
155
  #pragma mark -
127
156
  #pragma mark Event Methods
128
157
 
129
- RCT_EXPORT_METHOD(eventsNotifyReady : (BOOL)ready) {
158
+ - (void)eventsNotifyReady:(BOOL)ready {
130
159
  [[RNFBRCTEventEmitter shared] notifyJsReady:ready];
131
160
  }
132
161
 
133
- RCT_EXPORT_METHOD(eventsGetListeners
134
- : (RCTPromiseResolveBlock)resolve rejecter
135
- : (RCTPromiseRejectBlock)reject) {
162
+ - (void)eventsGetListeners:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
136
163
  resolve([[RNFBRCTEventEmitter shared] getListenersDictionary]);
137
164
  }
138
165
 
139
- RCT_EXPORT_METHOD(eventsPing
140
- : (NSString *)eventName eventBody
141
- : (NSDictionary *)eventBody resolver
142
- : (RCTPromiseResolveBlock)resolve rejecter
143
- : (RCTPromiseRejectBlock)reject) {
166
+ - (void)eventsPing:(NSString *)eventName
167
+ eventBody:(NSDictionary *)eventBody
168
+ resolve:(RCTPromiseResolveBlock)resolve
169
+ reject:(RCTPromiseRejectBlock)reject {
144
170
  [[RNFBRCTEventEmitter shared] sendEventWithName:eventName body:eventBody];
145
171
  resolve(eventBody);
146
172
  }
147
173
 
148
- RCT_EXPORT_METHOD(eventsAddListener : (NSString *)eventName) {
174
+ - (void)eventsAddListener:(NSString *)eventName {
149
175
  [[RNFBRCTEventEmitter shared] addListener:eventName];
150
176
  }
151
177
 
152
- RCT_EXPORT_METHOD(eventsRemoveListener : (NSString *)eventName all : (BOOL)all) {
178
+ - (void)eventsRemoveListener:(NSString *)eventName all:(BOOL)all {
153
179
  [[RNFBRCTEventEmitter shared] removeListeners:eventName all:all];
154
180
  }
155
181
 
156
182
  #pragma mark -
157
183
  #pragma mark Events Unused
158
184
 
159
- RCT_EXPORT_METHOD(addListener : (NSString *)eventName) {
185
+ - (void)addListener:(NSString *)eventName {
160
186
  // Keep: Required for RN built in Event Emitter Calls.
161
187
  }
162
188
 
163
- RCT_EXPORT_METHOD(removeListeners : (NSInteger)count) {
189
+ - (void)removeListeners:(double)count {
164
190
  // Keep: Required for RN built in Event Emitter Calls.
165
191
  }
166
192
 
167
193
  #pragma mark -
168
194
  #pragma mark Firebase App Methods
169
195
 
170
- RCT_EXPORT_METHOD(initializeApp
171
- : (NSDictionary *)options appConfig
172
- : (NSDictionary *)appConfig resolver
173
- : (RCTPromiseResolveBlock)resolve rejecter
174
- : (RCTPromiseRejectBlock)reject) {
196
+ - (void)initializeApp:(NSDictionary *)options
197
+ appConfig:(NSDictionary *)appConfig
198
+ resolve:(RCTPromiseResolveBlock)resolve
199
+ reject:(RCTPromiseRejectBlock)reject {
175
200
  RCTUnsafeExecuteOnMainQueueSync(^{
176
201
  FIRApp *firApp;
177
202
  NSString *appName = [appConfig valueForKey:@"name"];
@@ -182,24 +207,18 @@ RCT_EXPORT_METHOD(initializeApp
182
207
  GCMSenderID:messagingSenderId];
183
208
  firOptions.APIKey = [options valueForKey:@"apiKey"];
184
209
  firOptions.projectID = [options valueForKey:@"projectId"];
185
- // kFirebaseOptionsDatabaseUrl
186
210
  if (![[options valueForKey:@"databaseURL"] isEqual:[NSNull null]]) {
187
211
  firOptions.databaseURL = [options valueForKey:@"databaseURL"];
188
212
  }
189
- // kFirebaseOptionsStorageBucket
190
213
  if (![[options valueForKey:@"storageBucket"] isEqual:[NSNull null]]) {
191
214
  firOptions.storageBucket = [options valueForKey:@"storageBucket"];
192
215
  }
193
-
194
- // kFirebaseOptionsIosBundleId
195
216
  if (![[options valueForKey:@"iosBundleId"] isEqual:[NSNull null]]) {
196
217
  firOptions.bundleID = [options valueForKey:@"iosBundleId"];
197
218
  }
198
- // kFirebaseOptionsIosClientId
199
219
  if (![[options valueForKey:@"iosClientId"] isEqual:[NSNull null]]) {
200
220
  firOptions.clientID = [options valueForKey:@"iosClientId"];
201
221
  }
202
- // kFirebaseOptionsAppGroupId
203
222
  if (![[options valueForKey:@"appGroupId"] isEqual:[NSNull null]]) {
204
223
  firOptions.appGroupID = [options valueForKey:@"appGroupId"];
205
224
  }
@@ -237,7 +256,7 @@ static NSMutableDictionary<NSString *, NSString *> *customAuthDomains;
237
256
  return customAuthDomains[appName];
238
257
  }
239
258
 
240
- RCT_EXPORT_METHOD(setLogLevel : (NSString *)logLevel) {
259
+ - (void)setLogLevel:(NSString *)logLevel {
241
260
  int level = FIRLoggerLevelError;
242
261
  if ([logLevel isEqualToString:@"verbose"]) {
243
262
  level = FIRLoggerLevelDebug;
@@ -249,19 +268,20 @@ RCT_EXPORT_METHOD(setLogLevel : (NSString *)logLevel) {
249
268
  level = FIRLoggerLevelWarning;
250
269
  }
251
270
  DLog(@"RNFBSetLogLevel: setting level to %d from %@.", level, logLevel);
252
- [[FIRConfiguration sharedInstance] setLoggerLevel:level];
271
+ [[FIRConfiguration sharedInstance] setLoggerLevel:(FIRLoggerLevel)level];
253
272
  }
254
273
 
255
- RCT_EXPORT_METHOD(setAutomaticDataCollectionEnabled : (FIRApp *)firApp enabled : (BOOL)enabled) {
274
+ - (void)setAutomaticDataCollectionEnabled:(NSString *)appName enabled:(BOOL)enabled {
275
+ FIRApp *firApp = [RCTConvert firAppFromString:appName];
256
276
  if (firApp) {
257
277
  firApp.dataCollectionDefaultEnabled = enabled;
258
278
  }
259
279
  }
260
280
 
261
- RCT_EXPORT_METHOD(deleteApp
262
- : (FIRApp *)firApp resolver
263
- : (RCTPromiseResolveBlock)resolve rejecter
264
- : (RCTPromiseRejectBlock)reject) {
281
+ - (void)deleteApp:(NSString *)appName
282
+ resolve:(RCTPromiseResolveBlock)resolve
283
+ reject:(RCTPromiseRejectBlock)reject {
284
+ FIRApp *firApp = [RCTConvert firAppFromString:appName];
265
285
  if (!firApp) {
266
286
  return resolve([NSNull null]);
267
287
  }
@@ -270,12 +290,10 @@ RCT_EXPORT_METHOD(deleteApp
270
290
  if (success) {
271
291
  resolve([NSNull null]);
272
292
  } else {
273
- // try again once more
274
293
  [firApp deleteApp:^(BOOL success2) {
275
294
  if (success2) {
276
295
  resolve([NSNull null]);
277
296
  } else {
278
- // TODO js error builder
279
297
  reject(@"app/delete-app-failed", @"Failed to delete the specified app.", nil);
280
298
  }
281
299
  }];
@@ -283,23 +301,8 @@ RCT_EXPORT_METHOD(deleteApp
283
301
  }];
284
302
  }
285
303
 
286
- - (NSDictionary *)constantsToExport {
287
- NSDictionary *firApps = [FIRApp allApps];
288
- NSMutableArray *appsArray = [NSMutableArray new];
289
- NSMutableDictionary *constants = [NSMutableDictionary new];
290
-
291
- for (id key in firApps) {
292
- [appsArray addObject:[RNFBSharedUtils firAppToDictionary:firApps[key]]];
293
- }
294
-
295
- constants[@"NATIVE_FIREBASE_APPS"] = appsArray;
296
-
297
- constants[@"FIREBASE_RAW_JSON"] = [[RNFBJSON shared] getRawJSON];
298
-
299
- return constants;
300
- }
301
-
302
304
  + (BOOL)requiresMainQueueSetup {
303
- return YES;
305
+ return NO;
304
306
  }
307
+
305
308
  @end
@@ -18,7 +18,11 @@
18
18
  #ifndef RNFBSharedUtils_h
19
19
  #define RNFBSharedUtils_h
20
20
 
21
+ #if __has_include(<FirebaseCore/FirebaseCore.h>)
21
22
  #import <FirebaseCore/FirebaseCore.h>
23
+ #else
24
+ @import FirebaseCore;
25
+ #endif
22
26
  #import <React/RCTBridgeModule.h>
23
27
 
24
28
  #ifdef DEBUG
@@ -18,9 +18,7 @@
18
18
  #import <Foundation/Foundation.h>
19
19
  #import <Photos/Photos.h>
20
20
 
21
- #import <React/RCTBridgeModule.h>
22
-
23
- @interface RNFBUtilsModule : NSObject <RCTBridgeModule>
21
+ @interface RNFBUtilsModule : NSObject
24
22
 
25
23
  + (BOOL)isRemoteAsset:(NSString *)localFilePath;
26
24
  + (BOOL)unused_isHeic:(NSString *)localFilePath;
@@ -18,20 +18,84 @@
18
18
  #import <React/RCTUtils.h>
19
19
 
20
20
  #import "RNFBApp/RNFBSharedUtils.h"
21
+ #import "RNFBAppTurboModules.h"
21
22
  #import "RNFBUtilsModule.h"
22
23
 
24
+ @interface RNFBUtilsModule () <NativeRNFBTurboUtilsSpec>
25
+ @end
26
+
23
27
  @implementation RNFBUtilsModule
24
28
  #pragma mark -
25
29
  #pragma mark Module Setup
26
30
 
27
- RCT_EXPORT_MODULE();
31
+ RCT_EXPORT_MODULE(NativeRNFBTurboUtils)
28
32
 
29
- - (dispatch_queue_t)methodQueue {
30
- return dispatch_get_main_queue();
33
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
34
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
35
+ return std::make_shared<facebook::react::NativeRNFBTurboUtilsSpecJSI>(params);
31
36
  }
32
37
 
33
38
  + (BOOL)requiresMainQueueSetup {
34
- return YES;
39
+ return NO;
40
+ }
41
+
42
+ #pragma mark -
43
+ #pragma mark Constants
44
+
45
+ - (NSString *)getPathForDirectory:(int)directory {
46
+ NSArray *paths =
47
+ NSSearchPathForDirectoriesInDomains((NSSearchPathDirectory)directory, NSUserDomainMask, YES);
48
+ return [paths firstObject];
49
+ }
50
+
51
+ - (NSDictionary *)utilsConstantsDictionary {
52
+ return @{
53
+ @"isRunningInTestLab" : @NO,
54
+ @"MAIN_BUNDLE" : [[NSBundle mainBundle] bundlePath],
55
+ @"CACHES_DIRECTORY" : [self getPathForDirectory:NSCachesDirectory],
56
+ @"DOCUMENT_DIRECTORY" : [self getPathForDirectory:NSDocumentDirectory],
57
+ @"PICTURES_DIRECTORY" : [self getPathForDirectory:NSPicturesDirectory],
58
+ @"MOVIES_DIRECTORY" : [self getPathForDirectory:NSMoviesDirectory],
59
+ @"TEMP_DIRECTORY" : NSTemporaryDirectory(),
60
+ @"LIBRARY_DIRECTORY" : [self getPathForDirectory:NSLibraryDirectory],
61
+ };
62
+ }
63
+
64
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboUtils::Constants::Builder>)
65
+ constantsToExport {
66
+ return [_RCTTypedModuleConstants newWithUnsafeDictionary:[self utilsConstantsDictionary]];
67
+ }
68
+
69
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboUtils::Constants::Builder>)getConstants {
70
+ return [self constantsToExport];
71
+ }
72
+
73
+ #pragma mark -
74
+ #pragma mark Android-only stubs
75
+
76
+ - (void)androidGetPlayServicesStatus:(RCTPromiseResolveBlock)resolve
77
+ reject:(RCTPromiseRejectBlock)reject {
78
+ resolve(@{
79
+ @"isAvailable" : @YES,
80
+ @"status" : @0,
81
+ @"hasResolution" : @NO,
82
+ @"isUserResolvableError" : @NO,
83
+ });
84
+ }
85
+
86
+ - (void)androidPromptForPlayServices:(RCTPromiseResolveBlock)resolve
87
+ reject:(RCTPromiseRejectBlock)reject {
88
+ resolve(nil);
89
+ }
90
+
91
+ - (void)androidResolutionForPlayServices:(RCTPromiseResolveBlock)resolve
92
+ reject:(RCTPromiseRejectBlock)reject {
93
+ resolve(nil);
94
+ }
95
+
96
+ - (void)androidMakePlayServicesAvailable:(RCTPromiseResolveBlock)resolve
97
+ reject:(RCTPromiseRejectBlock)reject {
98
+ resolve(nil);
35
99
  }
36
100
 
37
101
  #pragma mark -
@@ -56,7 +120,6 @@ RCT_EXPORT_MODULE();
56
120
 
57
121
  if ([localFilePath hasPrefix:@"assets-library://"] || [localFilePath hasPrefix:@"ph://"]) {
58
122
  if ([localFilePath hasPrefix:@"assets-library://"]) {
59
- NSURL *localFile = [[NSURL alloc] initWithString:localFilePath];
60
123
  static BOOL hasWarned = NO;
61
124
  if (!hasWarned) {
62
125
  NSLog(@"'assets-library://' & 'ph://' URLs are not supported in Catalyst-based targets "
@@ -77,24 +140,4 @@ RCT_EXPORT_MODULE();
77
140
  return asset;
78
141
  }
79
142
 
80
- - (NSString *)getPathForDirectory:(int)directory {
81
- NSArray *paths =
82
- NSSearchPathForDirectoriesInDomains((NSSearchPathDirectory)directory, NSUserDomainMask, YES);
83
- return [paths firstObject];
84
- }
85
-
86
- - (NSDictionary *)constantsToExport {
87
- NSMutableDictionary *constants = [@{
88
- @"MAIN_BUNDLE" : [[NSBundle mainBundle] bundlePath],
89
- @"CACHES_DIRECTORY" : [self getPathForDirectory:NSCachesDirectory],
90
- @"DOCUMENT_DIRECTORY" : [self getPathForDirectory:NSDocumentDirectory],
91
- @"PICTURES_DIRECTORY" : [self getPathForDirectory:NSPicturesDirectory],
92
- @"MOVIES_DIRECTORY" : [self getPathForDirectory:NSMoviesDirectory],
93
- @"TEMP_DIRECTORY" : NSTemporaryDirectory(),
94
- @"LIBRARY_DIRECTORY" : [self getPathForDirectory:NSLibraryDirectory],
95
- } mutableCopy];
96
-
97
- return constants;
98
- }
99
-
100
143
  @end
@@ -18,4 +18,4 @@
18
18
  #import <React/RCTVersion.h>
19
19
 
20
20
  // generated file - do not modify or commit
21
- NSString* const RNFBVersionString = @"25.1.0";
21
+ NSString* const RNFBVersionString = @"26.1.0";
@@ -7,7 +7,7 @@
7
7
  objects = {
8
8
 
9
9
  /* Begin PBXBuildFile section */
10
- 2744B98621F45429004F8E3F /* RNFBAppModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 2744B98521F45429004F8E3F /* RNFBAppModule.m */; };
10
+ 2744B98621F45429004F8E3F /* RNFBAppModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2744B98521F45429004F8E3F /* RNFBAppModule.mm */; };
11
11
  2744B99121F46140004F8E3F /* RNFBRCTEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2744B99021F46140004F8E3F /* RNFBRCTEventEmitter.m */; };
12
12
  2744B9A421F48A4F004F8E3F /* RCTConvert+FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2744B9A321F48A4F004F8E3F /* RCTConvert+FIROptions.m */; };
13
13
  2744B9A721F57C2F004F8E3F /* RCTConvert+FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 2744B9A621F57C2F004F8E3F /* RCTConvert+FIRApp.m */; };
@@ -15,7 +15,7 @@
15
15
  2748D8172236429D00FC8DC8 /* RNFBSharedUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2748D8102236417700FC8DC8 /* RNFBSharedUtils.m */; };
16
16
  2748D81C223674CD00FC8DC8 /* RNFBPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 2748D81B223674CD00FC8DC8 /* RNFBPreferences.m */; };
17
17
  2748D8202237018600FC8DC8 /* RNFBMeta.m in Sources */ = {isa = PBXBuildFile; fileRef = 2748D81F2237018600FC8DC8 /* RNFBMeta.m */; };
18
- 4D97BAD423042F2700077358 /* RNFBUtilsModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D97BAD323042F2700077358 /* RNFBUtilsModule.m */; };
18
+ 4D97BAD423042F2700077358 /* RNFBUtilsModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4D97BAD323042F2700077358 /* RNFBUtilsModule.mm */; };
19
19
  DAA1F28522FCF6AD00F4DEC1 /* RNFBVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA1F28422FCF6AD00F4DEC1 /* RNFBVersion.m */; };
20
20
  RNFB00001A2025011100000001 /* RNFBNullSentinelInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = RNFB00001A2025011100000002 /* RNFBNullSentinelInterceptor.m */; };
21
21
  /* End PBXBuildFile section */
@@ -35,7 +35,7 @@
35
35
  /* Begin PBXFileReference section */
36
36
  2744B98221F45429004F8E3F /* libRNFBApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNFBApp.a; sourceTree = BUILT_PRODUCTS_DIR; };
37
37
  2744B98421F45429004F8E3F /* RNFBAppModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBAppModule.h; path = RNFBApp/RNFBAppModule.h; sourceTree = SOURCE_ROOT; };
38
- 2744B98521F45429004F8E3F /* RNFBAppModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBAppModule.m; path = RNFBApp/RNFBAppModule.m; sourceTree = SOURCE_ROOT; };
38
+ 2744B98521F45429004F8E3F /* RNFBAppModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = RNFBAppModule.mm; path = RNFBApp/RNFBAppModule.mm; sourceTree = SOURCE_ROOT; };
39
39
  2744B98D21F45E8B004F8E3F /* RNFBRCTEventEmitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBRCTEventEmitter.h; sourceTree = "<group>"; };
40
40
  2744B99021F46140004F8E3F /* RNFBRCTEventEmitter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBRCTEventEmitter.m; sourceTree = "<group>"; };
41
41
  2744B9A221F48826004F8E3F /* RCTConvert+FIROptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+FIROptions.h"; sourceTree = "<group>"; };
@@ -51,7 +51,7 @@
51
51
  2748D81E2237012B00FC8DC8 /* RNFBMeta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBMeta.h; sourceTree = "<group>"; };
52
52
  2748D81F2237018600FC8DC8 /* RNFBMeta.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBMeta.m; sourceTree = "<group>"; };
53
53
  4D97BAD223042F0800077358 /* RNFBUtilsModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBUtilsModule.h; sourceTree = "<group>"; };
54
- 4D97BAD323042F2700077358 /* RNFBUtilsModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBUtilsModule.m; sourceTree = "<group>"; };
54
+ 4D97BAD323042F2700077358 /* RNFBUtilsModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RNFBUtilsModule.mm; sourceTree = "<group>"; };
55
55
  DAA1F28422FCF6AD00F4DEC1 /* RNFBVersion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBVersion.m; sourceTree = "<group>"; };
56
56
  DAA1F28622FCF6C200F4DEC1 /* RNFBVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBVersion.h; sourceTree = "<group>"; };
57
57
  RNFB00001A2025011100000002 /* RNFBNullSentinelInterceptor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBNullSentinelInterceptor.m; sourceTree = "<group>"; };
@@ -91,7 +91,7 @@
91
91
  2744B9A521F57BD9004F8E3F /* RCTConvert+FIRApp.h */,
92
92
  2744B9A621F57C2F004F8E3F /* RCTConvert+FIRApp.m */,
93
93
  2744B98421F45429004F8E3F /* RNFBAppModule.h */,
94
- 2744B98521F45429004F8E3F /* RNFBAppModule.m */,
94
+ 2744B98521F45429004F8E3F /* RNFBAppModule.mm */,
95
95
  2748D8162236428100FC8DC8 /* RNFBJSON.h */,
96
96
  2748D8142236426300FC8DC8 /* RNFBJSON.m */,
97
97
  2748D81A223674B600FC8DC8 /* RNFBPreferences.h */,
@@ -99,7 +99,7 @@
99
99
  DAA1F28422FCF6AD00F4DEC1 /* RNFBVersion.m */,
100
100
  DAA1F28622FCF6C200F4DEC1 /* RNFBVersion.h */,
101
101
  4D97BAD223042F0800077358 /* RNFBUtilsModule.h */,
102
- 4D97BAD323042F2700077358 /* RNFBUtilsModule.m */,
102
+ 4D97BAD323042F2700077358 /* RNFBUtilsModule.mm */,
103
103
  RNFB00001A2025011100000003 /* RNFBNullSentinelInterceptor.h */,
104
104
  RNFB00001A2025011100000002 /* RNFBNullSentinelInterceptor.m */,
105
105
  );
@@ -173,12 +173,12 @@
173
173
  isa = PBXSourcesBuildPhase;
174
174
  buildActionMask = 2147483647;
175
175
  files = (
176
- 2744B98621F45429004F8E3F /* RNFBAppModule.m in Sources */,
176
+ 2744B98621F45429004F8E3F /* RNFBAppModule.mm in Sources */,
177
177
  2744B9A721F57C2F004F8E3F /* RCTConvert+FIRApp.m in Sources */,
178
178
  2748D8172236429D00FC8DC8 /* RNFBSharedUtils.m in Sources */,
179
179
  2748D81C223674CD00FC8DC8 /* RNFBPreferences.m in Sources */,
180
180
  DAA1F28522FCF6AD00F4DEC1 /* RNFBVersion.m in Sources */,
181
- 4D97BAD423042F2700077358 /* RNFBUtilsModule.m in Sources */,
181
+ 4D97BAD423042F2700077358 /* RNFBUtilsModule.mm in Sources */,
182
182
  2748D8202237018600FC8DC8 /* RNFBMeta.m in Sources */,
183
183
  2744B99121F46140004F8E3F /* RNFBRCTEventEmitter.m in Sources */,
184
184
  2744B9A421F48A4F004F8E3F /* RCTConvert+FIROptions.m in Sources */,
@@ -218,7 +218,7 @@
218
218
  );
219
219
  GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
220
220
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
221
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
221
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
222
222
  MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
223
223
  MTL_FAST_MATH = YES;
224
224
  OTHER_LDFLAGS = "-ObjC";
@@ -252,7 +252,7 @@
252
252
  GCC_C_LANGUAGE_STANDARD = gnu11;
253
253
  GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
254
254
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
255
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
255
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
256
256
  MTL_ENABLE_DEBUG_INFO = NO;
257
257
  MTL_FAST_MATH = YES;
258
258
  OTHER_LDFLAGS = "-ObjC";
@@ -310,7 +310,7 @@
310
310
  "${SRCROOT}/../../../tests/ios/Pods/Headers/Public/**",
311
311
  "$(SRCROOT)/../../../node_modules/react-native/React/**",
312
312
  );
313
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
313
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
314
314
  LIBRARY_SEARCH_PATHS = "$(inherited)";
315
315
  MACH_O_TYPE = staticlib;
316
316
  OTHER_LDFLAGS = "$(inherited)";
@@ -374,7 +374,7 @@
374
374
  "${SRCROOT}/../../../ios/Pods/Headers/Public/**",
375
375
  "$(SRCROOT)/../../../node_modules/react-native/React/**",
376
376
  );
377
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
377
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
378
378
  LIBRARY_SEARCH_PATHS = "$(inherited)";
379
379
  MACH_O_TYPE = staticlib;
380
380
  ONLY_ACTIVE_ARCH = YES;
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ #if __has_include(<React-RCTAppDelegate/RCTDependencyProvider.h>)
12
+ #import <React-RCTAppDelegate/RCTDependencyProvider.h>
13
+ #elif __has_include(<React_RCTAppDelegate/RCTDependencyProvider.h>)
14
+ #import <React_RCTAppDelegate/RCTDependencyProvider.h>
15
+ #else
16
+ #import "RCTDependencyProvider.h"
17
+ #endif
18
+
19
+ NS_ASSUME_NONNULL_BEGIN
20
+
21
+ @interface RCTAppDependencyProvider : NSObject <RCTDependencyProvider>
22
+
23
+ @end
24
+
25
+ NS_ASSUME_NONNULL_END