@react-native-firebase/app 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.
Files changed (150) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/RNFBApp.podspec +7 -13
  3. package/android/build.gradle +25 -6
  4. package/android/src/reactnative/java/io/invertase/firebase/app/{ReactNativeFirebaseAppModule.java → NativeRNFBTurboApp.java} +81 -45
  5. package/android/src/reactnative/java/io/invertase/firebase/app/ReactNativeFirebaseAppPackage.java +3 -3
  6. package/android/src/reactnative/java/io/invertase/firebase/app/ReactNativeFirebaseVersion.java +2 -2
  7. package/android/src/reactnative/java/io/invertase/firebase/app/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboAppSpec.java +136 -0
  8. package/android/src/reactnative/java/io/invertase/firebase/app/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboUtilsSpec.java +94 -0
  9. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/CMakeLists.txt +36 -0
  10. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/RNFBAppTurboModules-generated.cpp +170 -0
  11. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/RNFBAppTurboModules.h +39 -0
  12. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/react/renderer/components/RNFBAppTurboModules/RNFBAppTurboModulesJSI-generated.cpp +187 -0
  13. package/android/src/reactnative/java/io/invertase/firebase/app/generated/jni/react/renderer/components/RNFBAppTurboModules/RNFBAppTurboModulesJSI.h +606 -0
  14. package/android/src/reactnative/java/io/invertase/firebase/common/RCTConvertFirebase.java +3 -3
  15. package/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebaseEventEmitter.java +475 -20
  16. package/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebaseMeta.java +8 -0
  17. package/android/src/reactnative/java/io/invertase/firebase/common/ReactNativeFirebasePreferences.java +8 -0
  18. package/android/src/reactnative/java/io/invertase/firebase/utils/{ReactNativeFirebaseUtilsModule.java → NativeRNFBTurboUtils.java} +57 -40
  19. package/android/src/test/java/io/invertase/firebase/app/NativeRNFBTurboAppTest.java +400 -0
  20. package/android/src/test/java/io/invertase/firebase/common/ReactNativeFirebaseEventEmitterTest.java +1823 -0
  21. package/app.plugin.js +1 -1
  22. package/dist/module/FirebaseApp.js +0 -9
  23. package/dist/module/FirebaseApp.js.map +1 -1
  24. package/dist/module/common/index.js +0 -645
  25. package/dist/module/common/index.js.map +1 -1
  26. package/dist/module/common/unitTestUtils.js +18 -54
  27. package/dist/module/common/unitTestUtils.js.map +1 -1
  28. package/dist/module/index.js +0 -1
  29. package/dist/module/index.js.map +1 -1
  30. package/dist/module/internal/RNFBNativeEventEmitter.js +12 -6
  31. package/dist/module/internal/RNFBNativeEventEmitter.js.map +1 -1
  32. package/dist/module/internal/constants.js +2 -2
  33. package/dist/module/internal/constants.js.map +1 -1
  34. package/dist/module/internal/index.js +1 -1
  35. package/dist/module/internal/index.js.map +1 -1
  36. package/dist/module/internal/nativeModuleAndroidIos.js +50 -10
  37. package/dist/module/internal/nativeModuleAndroidIos.js.map +1 -1
  38. package/dist/module/internal/nativeModuleWeb.js +12 -4
  39. package/dist/module/internal/nativeModuleWeb.js.map +1 -1
  40. package/dist/module/internal/registry/app.js +20 -12
  41. package/dist/module/internal/registry/app.js.map +1 -1
  42. package/dist/module/internal/registry/modular.js +73 -0
  43. package/dist/module/internal/registry/modular.js.map +1 -0
  44. package/dist/module/internal/registry/nativeModule.js +116 -95
  45. package/dist/module/internal/registry/nativeModule.js.map +1 -1
  46. package/dist/module/modular.js +44 -37
  47. package/dist/module/modular.js.map +1 -1
  48. package/dist/module/types/app.js +0 -3
  49. package/dist/module/types/app.js.map +1 -1
  50. package/dist/module/types/internal.js +0 -2
  51. package/dist/module/utils/UtilsStatics.js +2 -2
  52. package/dist/module/utils/UtilsStatics.js.map +1 -1
  53. package/dist/module/utils/index.js +21 -17
  54. package/dist/module/utils/index.js.map +1 -1
  55. package/dist/module/version.js +1 -1
  56. package/dist/typescript/lib/FirebaseApp.d.ts +1 -2
  57. package/dist/typescript/lib/FirebaseApp.d.ts.map +1 -1
  58. package/dist/typescript/lib/common/index.d.ts +0 -8
  59. package/dist/typescript/lib/common/index.d.ts.map +1 -1
  60. package/dist/typescript/lib/common/unitTestUtils.d.ts +1 -4
  61. package/dist/typescript/lib/common/unitTestUtils.d.ts.map +1 -1
  62. package/dist/typescript/lib/index.d.ts +0 -1
  63. package/dist/typescript/lib/index.d.ts.map +1 -1
  64. package/dist/typescript/lib/internal/NativeFirebaseError.d.ts +1 -1
  65. package/dist/typescript/lib/internal/NativeFirebaseError.d.ts.map +1 -1
  66. package/dist/typescript/lib/internal/RNFBNativeEventEmitter.d.ts.map +1 -1
  67. package/dist/typescript/lib/internal/constants.d.ts +2 -3
  68. package/dist/typescript/lib/internal/constants.d.ts.map +1 -1
  69. package/dist/typescript/lib/internal/index.d.ts +1 -1
  70. package/dist/typescript/lib/internal/index.d.ts.map +1 -1
  71. package/dist/typescript/lib/internal/nativeModuleAndroidIos.d.ts +2 -6
  72. package/dist/typescript/lib/internal/nativeModuleAndroidIos.d.ts.map +1 -1
  73. package/dist/typescript/lib/internal/nativeModuleWeb.d.ts.map +1 -1
  74. package/dist/typescript/lib/internal/registry/app.d.ts +2 -2
  75. package/dist/typescript/lib/internal/registry/app.d.ts.map +1 -1
  76. package/dist/typescript/lib/internal/registry/modular.d.ts +22 -0
  77. package/dist/typescript/lib/internal/registry/modular.d.ts.map +1 -0
  78. package/dist/typescript/lib/internal/registry/nativeModule.d.ts +3 -11
  79. package/dist/typescript/lib/internal/registry/nativeModule.d.ts.map +1 -1
  80. package/dist/typescript/lib/modular.d.ts +21 -7
  81. package/dist/typescript/lib/modular.d.ts.map +1 -1
  82. package/dist/typescript/lib/types/app.d.ts +4 -4
  83. package/dist/typescript/lib/types/app.d.ts.map +1 -1
  84. package/dist/typescript/lib/types/internal.d.ts +1 -33
  85. package/dist/typescript/lib/types/internal.d.ts.map +1 -1
  86. package/dist/typescript/lib/utils/index.d.ts +7 -3
  87. package/dist/typescript/lib/utils/index.d.ts.map +1 -1
  88. package/dist/typescript/lib/version.d.ts +1 -1
  89. package/firebase-schema.json +5 -1
  90. package/ios/RNFBApp/RNFBAppModule.h +1 -3
  91. package/ios/RNFBApp/{RNFBAppModule.m → RNFBAppModule.mm} +74 -77
  92. package/ios/RNFBApp/RNFBUtilsModule.h +1 -3
  93. package/ios/RNFBApp/{RNFBUtilsModule.m → RNFBUtilsModule.mm} +68 -25
  94. package/ios/RNFBApp/RNFBVersion.m +1 -1
  95. package/ios/RNFBApp.xcodeproj/project.pbxproj +12 -12
  96. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  97. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  98. package/ios/generated/RCTModuleProviders.h +16 -0
  99. package/ios/generated/RCTModuleProviders.mm +52 -0
  100. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  101. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  102. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  103. package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
  104. package/ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.h +14 -0
  105. package/ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.mm +19 -0
  106. package/ios/generated/RNFBAppTurboModules/RNFBAppTurboModules-generated.mm +210 -0
  107. package/ios/generated/RNFBAppTurboModules/RNFBAppTurboModules.h +399 -0
  108. package/ios/generated/RNFBAppTurboModulesJSI-generated.cpp +187 -0
  109. package/ios/generated/RNFBAppTurboModulesJSI.h +606 -0
  110. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  111. package/ios/generated/ReactCodegen.podspec +111 -0
  112. package/lib/FirebaseApp.ts +1 -10
  113. package/lib/common/index.ts +0 -742
  114. package/lib/common/unitTestUtils.ts +17 -73
  115. package/lib/index.ts +0 -1
  116. package/lib/internal/NativeFirebaseError.ts +1 -1
  117. package/lib/internal/RNFBNativeEventEmitter.ts +12 -6
  118. package/lib/internal/constants.ts +3 -25
  119. package/lib/internal/global.d.ts +0 -4
  120. package/lib/internal/index.ts +1 -1
  121. package/lib/internal/nativeModuleAndroidIos.ts +69 -12
  122. package/lib/internal/nativeModuleWeb.ts +11 -5
  123. package/lib/internal/registry/app.ts +24 -22
  124. package/lib/internal/registry/modular.ts +97 -0
  125. package/lib/internal/registry/nativeModule.ts +136 -107
  126. package/lib/modular.ts +47 -72
  127. package/lib/types/app.ts +6 -11
  128. package/lib/types/internal.ts +1 -46
  129. package/lib/utils/UtilsStatics.ts +2 -2
  130. package/lib/utils/index.ts +24 -18
  131. package/lib/version.ts +1 -1
  132. package/package.json +41 -3
  133. package/plugin/build/app.plugin.d.ts +2 -0
  134. package/plugin/build/app.plugin.js +6 -0
  135. package/plugin/src/app.plugin.ts +3 -0
  136. package/plugin/tsconfig.tsbuildinfo +1 -1
  137. package/react-native.config.js +2 -0
  138. package/specs/NativeRNFBTurboApp.ts +57 -0
  139. package/specs/NativeRNFBTurboUtils.ts +34 -0
  140. package/typedoc.json +1 -2
  141. package/dist/module/internal/registry/namespace.js +0 -262
  142. package/dist/module/internal/registry/namespace.js.map +0 -1
  143. package/dist/module/namespaced.js +0 -25
  144. package/dist/module/namespaced.js.map +0 -1
  145. package/dist/typescript/lib/internal/registry/namespace.d.ts +0 -26
  146. package/dist/typescript/lib/internal/registry/namespace.d.ts.map +0 -1
  147. package/dist/typescript/lib/namespaced.d.ts +0 -5
  148. package/dist/typescript/lib/namespaced.d.ts.map +0 -1
  149. package/lib/internal/registry/namespace.ts +0 -338
  150. package/lib/namespaced.ts +0 -24
@@ -124,745 +124,3 @@ export function parseListenerOrObserver<T>(
124
124
 
125
125
  throw new Error("'listenerOrObserver' expected a function or an object with 'next' function.");
126
126
  }
127
-
128
- // Used to indicate if there is no corresponding modular function
129
- const NO_REPLACEMENT = true;
130
-
131
- type MethodMap = Record<string, string | typeof NO_REPLACEMENT>;
132
- type InstanceMap = Record<string, MethodMap>;
133
- type DeprecationMap = Record<string, InstanceMap>;
134
-
135
- const mapOfDeprecationReplacements: DeprecationMap = {
136
- analytics: {
137
- default: {
138
- logEvent: 'logEvent()',
139
- setAnalyticsCollectionEnabled: 'setAnalyticsCollectionEnabled()',
140
- setSessionTimeoutDuration: 'setSessionTimeoutDuration()',
141
- getAppInstanceId: 'getAppInstanceId()',
142
- getSessionId: 'getSessionId()',
143
- setUserId: 'setUserId()',
144
- setUserProperty: 'setUserProperty()',
145
- setUserProperties: 'setUserProperties()',
146
- resetAnalyticsData: 'resetAnalyticsData()',
147
- setDefaultEventParameters: 'setDefaultEventParameters()',
148
- initiateOnDeviceConversionMeasurementWithEmailAddress:
149
- 'initiateOnDeviceConversionMeasurementWithEmailAddress()',
150
- initiateOnDeviceConversionMeasurementWithHashedEmailAddress:
151
- 'initiateOnDeviceConversionMeasurementWithHashedEmailAddress()',
152
- initiateOnDeviceConversionMeasurementWithPhoneNumber:
153
- 'initiateOnDeviceConversionMeasurementWithPhoneNumber()',
154
- initiateOnDeviceConversionMeasurementWithHashedPhoneNumber:
155
- 'initiateOnDeviceConversionMeasurementWithHashedPhoneNumber()',
156
- setConsent: 'setConsent()',
157
- // We're deprecating all helper methods for event. e.g. `logAddPaymentInfo()` from namespaced and modular.
158
- logAddPaymentInfo: 'logEvent()',
159
- logScreenView: 'logEvent()',
160
- logAddShippingInfo: 'logEvent()',
161
- logAddToCart: 'logEvent()',
162
- logAddToWishlist: 'logEvent()',
163
- logAppOpen: 'logEvent()',
164
- logBeginCheckout: 'logEvent()',
165
- logCampaignDetails: 'logEvent()',
166
- logEarnVirtualCurrency: 'logEvent()',
167
- logGenerateLead: 'logEvent()',
168
- logJoinGroup: 'logEvent()',
169
- logLevelEnd: 'logEvent()',
170
- logLevelStart: 'logEvent()',
171
- logLevelUp: 'logEvent()',
172
- logLogin: 'logEvent()',
173
- logPostScore: 'logEvent()',
174
- logSelectContent: 'logEvent()',
175
- logPurchase: 'logEvent()',
176
- logRefund: 'logEvent()',
177
- logRemoveFromCart: 'logEvent()',
178
- logSearch: 'logEvent()',
179
- logSelectItem: 'logEvent()',
180
- logSetCheckoutOption: 'logEvent()',
181
- logSelectPromotion: 'logEvent()',
182
- logShare: 'logEvent()',
183
- logSignUp: 'logEvent()',
184
- logSpendVirtualCurrency: 'logEvent()',
185
- logTutorialBegin: 'logEvent()',
186
- logTutorialComplete: 'logEvent()',
187
- logUnlockAchievement: 'logEvent()',
188
- logViewCart: 'logEvent()',
189
- logViewItem: 'logEvent()',
190
- logViewPromotion: 'logEvent()',
191
- logViewSearchResults: 'logEvent()',
192
- },
193
- },
194
- appCheck: {
195
- default: {
196
- activate: 'initializeAppCheck()',
197
- setTokenAutoRefreshEnabled: 'setTokenAutoRefreshEnabled()',
198
- getToken: 'getToken()',
199
- getLimitedUseToken: 'getLimitedUseToken()',
200
- onTokenChanged: 'onTokenChanged()',
201
- },
202
- statics: {
203
- CustomProvider: 'CustomProvider',
204
- },
205
- },
206
- appDistribution: {
207
- default: {
208
- isTesterSignedIn: 'isTesterSignedIn()',
209
- signInTester: 'signInTester()',
210
- checkForUpdate: 'checkForUpdate()',
211
- signOutTester: 'signOutTester()',
212
- },
213
- },
214
- auth: {
215
- default: {
216
- applyActionCode: 'applyActionCode()',
217
- checkActionCode: 'checkActionCode()',
218
- confirmPasswordReset: 'confirmPasswordReset()',
219
- createUserWithEmailAndPassword: 'createUserWithEmailAndPassword()',
220
- fetchSignInMethodsForEmail: 'fetchSignInMethodsForEmail()',
221
- getMultiFactorResolver: 'getMultiFactorResolver()',
222
- isSignInWithEmailLink: 'isSignInWithEmailLink()',
223
- onAuthStateChanged: 'onAuthStateChanged()',
224
- onIdTokenChanged: 'onIdTokenChanged()',
225
- sendPasswordResetEmail: 'sendPasswordResetEmail()',
226
- sendSignInLinkToEmail: 'sendSignInLinkToEmail()',
227
- signInAnonymously: 'signInAnonymously()',
228
- signInWithCredential: 'signInWithCredential()',
229
- signInWithCustomToken: 'signInWithCustomToken()',
230
- signInWithEmailAndPassword: 'signInWithEmailAndPassword()',
231
- signInWithEmailLink: 'signInWithEmailLink()',
232
- signInWithPhoneNumber: 'signInWithPhoneNumber()',
233
- signInWithRedirect: 'signInWithRedirect()',
234
- signInWithPopup: 'signInWithPopup()',
235
- signOut: 'signOut()',
236
- useUserAccessGroup: 'useUserAccessGroup()',
237
- verifyPasswordResetCode: 'verifyPasswordResetCode()',
238
- getCustomAuthDomain: 'getCustomAuthDomain()',
239
- useEmulator: 'connectAuthEmulator()',
240
- setLanguageCode: 'useDeviceLanguage()',
241
- multiFactor: 'multiFactor()',
242
- useDeviceLanguage: 'useDeviceLanguage()',
243
- updateCurrentUser: 'updateCurrentUser()',
244
- validatePassword: 'validatePassword()',
245
- },
246
- User: {
247
- delete: 'deleteUser()',
248
- getIdToken: 'getIdToken()',
249
- getIdTokenResult: 'getIdTokenResult()',
250
- linkWithCredential: 'linkWithCredential()',
251
- linkWithPopup: 'linkWithPopup()',
252
- linkWithRedirect: 'linkWithRedirect()',
253
- reauthenticateWithCredential: 'reauthenticateWithCredential()',
254
- reauthenticateWithPopup: 'reauthenticateWithPopup()',
255
- reauthenticateWithRedirect: 'reauthenticateWithRedirect()',
256
- reload: 'reload()',
257
- sendEmailVerification: 'sendEmailVerification()',
258
- toJSON: NO_REPLACEMENT,
259
- unlink: 'unlink()',
260
- updateEmail: 'updateEmail()',
261
- updatePassword: 'updatePassword()',
262
- updatePhoneNumber: 'updatePhoneNumber()',
263
- updateProfile: 'updateProfile()',
264
- verifyBeforeUpdateEmail: 'verifyBeforeUpdateEmail()',
265
- },
266
- statics: {
267
- AppleAuthProvider: 'AppleAuthProvider',
268
- EmailAuthProvider: 'EmailAuthProvider',
269
- PhoneAuthProvider: 'PhoneAuthProvider',
270
- GoogleAuthProvider: 'GoogleAuthProvider',
271
- GithubAuthProvider: 'GithubAuthProvider',
272
- TwitterAuthProvider: 'TwitterAuthProvider',
273
- FacebookAuthProvider: 'FacebookAuthProvider',
274
- PhoneMultiFactorGenerator: 'PhoneMultiFactorGenerator',
275
- OAuthProvider: 'OAuthProvider',
276
- OIDCAuthProvider: 'OIDCAuthProvider',
277
- PhoneAuthState: 'PhoneAuthState',
278
- getMultiFactorResolver: 'getMultiFactorResolver()',
279
- multiFactor: 'multiFactor()',
280
- },
281
- },
282
- crashlytics: {
283
- default: {
284
- checkForUnsentReports: 'checkForUnsentReports()',
285
- crash: 'crash()',
286
- deleteUnsentReports: 'deleteUnsentReports()',
287
- didCrashOnPreviousExecution: 'didCrashOnPreviousExecution()',
288
- log: 'log()',
289
- setAttribute: 'setAttribute()',
290
- setAttributes: 'setAttributes()',
291
- setUserId: 'setUserId()',
292
- recordError: 'recordError()',
293
- sendUnsentReports: 'sendUnsentReports()',
294
- setCrashlyticsCollectionEnabled: 'setCrashlyticsCollectionEnabled()',
295
- },
296
- },
297
-
298
- database: {
299
- default: {
300
- useEmulator: 'connectDatabaseEmulator()',
301
- goOffline: 'goOffline()',
302
- goOnline: 'goOnline()',
303
- ref: 'ref()',
304
- refFromURL: 'refFromURL()',
305
- setPersistenceEnabled: 'setPersistenceEnabled()',
306
- setLoggingEnabled: 'setLoggingEnabled()',
307
- setPersistenceCacheSizeBytes: 'setPersistenceCacheSizeBytes()',
308
- getServerTime: 'getServerTime()',
309
- },
310
- statics: {
311
- ServerValue: 'ServerValue',
312
- },
313
- DatabaseReference: {
314
- child: 'child()',
315
- set: 'set()',
316
- update: 'update()',
317
- setWithPriority: 'setWithPriority()',
318
- remove: 'remove()',
319
- on: 'onValue()',
320
- once: 'get()',
321
- endAt: 'endAt()',
322
- endBefore: 'endBefore()',
323
- startAt: 'startAt()',
324
- startAfter: 'startAfter()',
325
- limitToFirst: 'limitToFirst()',
326
- limitToLast: 'limitToLast()',
327
- orderByChild: 'orderByChild()',
328
- orderByKey: 'orderByKey()',
329
- orderByValue: 'orderByValue()',
330
- equalTo: 'equalTo()',
331
- setPriority: 'setPriority()',
332
- push: 'push()',
333
- onDisconnect: 'onDisconnect()',
334
- keepSynced: 'keepSynced()',
335
- transaction: 'runTransaction()',
336
- },
337
- },
338
- firestore: {
339
- default: {
340
- batch: 'writeBatch()',
341
- loadBundle: 'loadBundle()',
342
- namedQuery: 'namedQuery()',
343
- clearPersistence: 'clearIndexedDbPersistence()',
344
- waitForPendingWrites: 'waitForPendingWrites()',
345
- terminate: 'terminate()',
346
- useEmulator: 'connectFirestoreEmulator()',
347
- collection: 'collection()',
348
- collectionGroup: 'collectionGroup()',
349
- disableNetwork: 'disableNetwork()',
350
- doc: 'doc()',
351
- enableNetwork: 'enableNetwork()',
352
- runTransaction: 'runTransaction()',
353
- settings: 'settings()',
354
- persistentCacheIndexManager: 'getPersistentCacheIndexManager()',
355
- },
356
- statics: {
357
- setLogLevel: 'setLogLevel()',
358
- Filter: 'where()',
359
- FieldValue: 'FieldValue',
360
- Timestamp: 'Timestamp',
361
- GeoPoint: 'GeoPoint',
362
- Blob: 'Bytes',
363
- FieldPath: 'FieldPath',
364
- },
365
- CollectionReference: {
366
- count: 'getCountFromServer()',
367
- countFromServer: 'getCountFromServer()',
368
- endAt: 'endAt()',
369
- endBefore: 'endBefore()',
370
- get: 'getDocs()',
371
- isEqual: NO_REPLACEMENT,
372
- limit: 'limit()',
373
- limitToLast: 'limitToLast()',
374
- onSnapshot: 'onSnapshot()',
375
- orderBy: 'orderBy()',
376
- startAfter: 'startAfter()',
377
- startAt: 'startAt()',
378
- where: 'where()',
379
- add: 'addDoc()',
380
- doc: 'doc()',
381
- },
382
- DocumentReference: {
383
- collection: 'collection()',
384
- delete: 'deleteDoc()',
385
- get: 'getDoc()',
386
- isEqual: NO_REPLACEMENT,
387
- onSnapshot: 'onSnapshot()',
388
- set: 'setDoc()',
389
- update: 'updateDoc()',
390
- },
391
- DocumentSnapshot: {
392
- isEqual: NO_REPLACEMENT,
393
- },
394
- FieldValue: {
395
- arrayRemove: 'arrayRemove()',
396
- arrayUnion: 'arrayUnion()',
397
- delete: 'deleteField()',
398
- increment: 'increment()',
399
- serverTimestamp: 'serverTimestamp()',
400
- },
401
- Filter: {
402
- or: 'or()',
403
- and: 'and()',
404
- },
405
- PersistentCacheIndexManager: {
406
- enableIndexAutoCreation: 'enablePersistentCacheIndexAutoCreation()',
407
- disableIndexAutoCreation: 'disablePersistentCacheIndexAutoCreation()',
408
- deleteAllIndexes: 'deleteAllPersistentCacheIndexes()',
409
- },
410
- Timestamp: {
411
- seconds: NO_REPLACEMENT,
412
- nanoseconds: NO_REPLACEMENT,
413
- },
414
- },
415
- functions: {
416
- default: {
417
- useEmulator: 'connectFirestoreEmulator()',
418
- httpsCallable: 'httpsCallable()',
419
- httpsCallableFromUrl: 'httpsCallableFromUrl()',
420
- },
421
- statics: {
422
- HttpsErrorCode: 'HttpsErrorCode',
423
- },
424
- },
425
- installations: {
426
- default: {
427
- delete: 'deleteInstallations()',
428
- getId: 'getId()',
429
- getToken: 'getToken()',
430
- },
431
- },
432
- inAppMessaging: {
433
- default: {
434
- isMessagesDisplaySuppressed: 'isMessagesDisplaySuppressed()',
435
- setMessagesDisplaySuppressed: 'setMessagesDisplaySuppressed()',
436
- isAutomaticDataCollectionEnabled: 'isAutomaticDataCollectionEnabled()',
437
- setAutomaticDataCollectionEnabled: 'setAutomaticDataCollectionEnabled()',
438
- triggerEvent: 'triggerEvent()',
439
- },
440
- },
441
- messaging: {
442
- default: {
443
- isAutoInitEnabled: 'isAutoInitEnabled()',
444
- isDeviceRegisteredForRemoteMessages: 'isDeviceRegisteredForRemoteMessages()',
445
- isNotificationDelegationEnabled: 'isNotificationDelegationEnabled()',
446
- isDeliveryMetricsExportToBigQueryEnabled: 'isDeliveryMetricsExportToBigQueryEnabled()',
447
- setAutoInitEnabled: 'setAutoInitEnabled()',
448
- getInitialNotification: 'getInitialNotification()',
449
- getDidOpenSettingsForNotification: 'getDidOpenSettingsForNotification()',
450
- getIsHeadless: 'getIsHeadless()',
451
- onNotificationOpenedApp: 'onNotificationOpenedApp()',
452
- onTokenRefresh: 'onTokenRefresh()',
453
- requestPermission: 'requestPermission()',
454
- registerDeviceForRemoteMessages: 'registerDeviceForRemoteMessages()',
455
- unregisterDeviceForRemoteMessages: 'unregisterDeviceForRemoteMessages()',
456
- getAPNSToken: 'getAPNSToken()',
457
- setAPNSToken: 'setAPNSToken()',
458
- hasPermission: 'hasPermission()',
459
- onDeletedMessages: 'onDeletedMessages()',
460
- onMessageSent: 'onMessageSent()',
461
- onSendError: 'onSendError()',
462
- setBackgroundMessageHandler: 'setBackgroundMessageHandler()',
463
- setOpenSettingsForNotificationsHandler: 'setOpenSettingsForNotificationsHandler()',
464
- sendMessage: 'sendMessage()',
465
- subscribeToTopic: 'subscribeToTopic()',
466
- unsubscribeFromTopic: 'unsubscribeFromTopic()',
467
- setNotificationDelegationEnabled: 'setNotificationDelegationEnabled()',
468
- // Actual firebase-js-sdk methods
469
- getToken: 'getToken()',
470
- deleteToken: 'deleteToken()',
471
- onMessage: 'onMessage()',
472
- isSupported: 'isSupported()',
473
- setDeliveryMetricsExportToBigQuery:
474
- 'experimentalSetDeliveryMetricsExportedToBigQueryEnabled()',
475
- },
476
- statics: {
477
- AuthorizationStatus: 'AuthorizationStatus',
478
- NotificationAndroidPriority: 'NotificationAndroidPriority',
479
- NotificationAndroidVisibility: 'NotificationAndroidVisibility',
480
- },
481
- },
482
- perf: {
483
- default: {
484
- setPerformanceCollectionEnabled: 'initializePerformance()',
485
- newTrace: 'trace()',
486
- newHttpMetric: 'httpMetric()',
487
- newScreenTrace: 'newScreenTrace()',
488
- startScreenTrace: 'startScreenTrace()',
489
- },
490
- },
491
- remoteConfig: {
492
- default: {
493
- activate: 'activate()',
494
- ensureInitialized: 'ensureInitialized()',
495
- fetchAndActivate: 'fetchAndActivate()',
496
- getAll: 'getAll()',
497
- getBoolean: 'getBoolean()',
498
- getNumber: 'getNumber()',
499
- getString: 'getString()',
500
- getValue: 'getValue()',
501
- reset: 'reset()',
502
- setConfigSettings: 'setConfigSettings()',
503
- fetch: 'fetch()',
504
- setDefaults: 'setDefaults()',
505
- setDefaultsFromResource: 'setDefaultsFromResource()',
506
- onConfigUpdated: 'onConfigUpdated()',
507
- },
508
- statics: {
509
- LastFetchStatus: 'LastFetchStatus',
510
- ValueSource: 'ValueSource',
511
- },
512
- },
513
- storage: {
514
- default: {
515
- useEmulator: 'connectStorageEmulator()',
516
- ref: 'ref()',
517
- refFromURL: 'refFromURL()',
518
- setMaxOperationRetryTime: 'setMaxOperationRetryTime()',
519
- setMaxUploadRetryTime: 'setMaxUploadRetryTime()',
520
- setMaxDownloadRetryTime: 'setMaxDownloadRetryTime()',
521
- },
522
- Reference: {
523
- delete: 'deleteObject()',
524
- getDownloadURL: 'getDownloadURL()',
525
- getMetadata: 'getMetadata()',
526
- list: 'list()',
527
- listAll: 'listAll()',
528
- updateMetadata: 'updateMetadata()',
529
- put: 'uploadBytesResumable()',
530
- putString: 'uploadString()',
531
- putFile: 'putFile()',
532
- writeToFile: 'writeToFile()',
533
- toString: 'toString()',
534
- child: 'child()',
535
- },
536
- statics: {
537
- StringFormat: 'StringFormat',
538
- TaskEvent: 'TaskEvent',
539
- TaskState: 'TaskState',
540
- },
541
- },
542
- };
543
-
544
- const modularDeprecationMessage =
545
- 'This method is deprecated (as well as all React Native Firebase namespaced API) and will be removed in the next major release ' +
546
- 'as part of move to match Firebase Web modular SDK API. Please see migration guide for more details: https://rnfirebase.io/migrating-to-v22';
547
-
548
- export function deprecationConsoleWarning(
549
- nameSpace: string,
550
- methodName: string,
551
- instanceName: string,
552
- isModularMethod: boolean,
553
- ): void {
554
- if (!isModularMethod) {
555
- const moduleMap = mapOfDeprecationReplacements[nameSpace];
556
- if (moduleMap) {
557
- const instanceMap = moduleMap[instanceName];
558
- const deprecatedMethod = instanceMap?.[methodName];
559
- if (instanceMap && deprecatedMethod) {
560
- if (!globalThis.RNFB_SILENCE_MODULAR_DEPRECATION_WARNINGS) {
561
- // eslint-disable-next-line no-console
562
- console.warn(createMessage(nameSpace, methodName, instanceName));
563
-
564
- if (globalThis.RNFB_MODULAR_DEPRECATION_STRICT_MODE === true) {
565
- throw new Error('Deprecated API usage detected while in strict mode.');
566
- }
567
- }
568
- }
569
- }
570
- }
571
- }
572
-
573
- export function createMessage(
574
- nameSpace: string,
575
- methodName: string,
576
- instanceName: string = 'default',
577
- uniqueMessage: string | null = null,
578
- ): string | undefined {
579
- if (uniqueMessage) {
580
- // Unique deprecation message used for testing
581
- return uniqueMessage;
582
- }
583
-
584
- const moduleMap = mapOfDeprecationReplacements[nameSpace];
585
- if (moduleMap) {
586
- const instance = moduleMap[instanceName];
587
- if (instance) {
588
- const replacementMethodName = instance[methodName];
589
-
590
- if (replacementMethodName !== NO_REPLACEMENT) {
591
- return (
592
- modularDeprecationMessage +
593
- `. Method called was \`${methodName}\`. Please use \`${replacementMethodName}\` instead.`
594
- );
595
- } else {
596
- return modularDeprecationMessage + `. Method called was \`${methodName}\``;
597
- }
598
- }
599
- }
600
- return undefined;
601
- }
602
-
603
- function getNamespace(target: any): string | undefined {
604
- if (target.constructor.name === 'DatabaseReference') {
605
- return 'database';
606
- }
607
- if (target.GeoPoint || target.CustomProvider) {
608
- // target is statics object. GeoPoint - Firestore, CustomProvider - AppCheck
609
- return 'firestore';
610
- }
611
- if (target._config && target._config.namespace) {
612
- return target._config.namespace;
613
- }
614
- if (target.constructor.name === 'Reference') {
615
- return 'storage';
616
- }
617
- const className = target.name ? target.name : target.constructor.name;
618
- return Object.keys(mapOfDeprecationReplacements).find(key => {
619
- if (mapOfDeprecationReplacements[key]?.[className]) {
620
- return key;
621
- }
622
- return false;
623
- });
624
- }
625
-
626
- function getInstanceName(target: any): string {
627
- if (target.GeoPoint || target.CustomProvider) {
628
- // target is statics object. GeoPoint - Firestore, CustomProvider - AppCheck
629
- return 'statics';
630
- }
631
- if (target.ServerValue) {
632
- return 'statics';
633
- }
634
- if (target._config) {
635
- // module class instance, we use default to store map of deprecated methods
636
- return 'default';
637
- }
638
-
639
- if (target.constructor.name === 'Reference') {
640
- // if path passed into ref(), it will pass in the arg as target.name
641
- return target.constructor.name;
642
- }
643
- if (target.name) {
644
- // It's a function which has a name property unlike classes
645
- return target.name;
646
- }
647
- // It's a class instance
648
- return target.constructor.name;
649
- }
650
-
651
- const MODULAR_INSTANCE_SYMBOL = Symbol('react-native-firebase-modular-instance');
652
-
653
- function isObjectLike(value: unknown): value is object | ((...args: any[]) => unknown) {
654
- return (typeof value === 'object' && value !== null) || typeof value === 'function';
655
- }
656
-
657
- function isModularInstance(value: unknown): boolean {
658
- if (!isObjectLike(value)) {
659
- return false;
660
- }
661
-
662
- return Object.getOwnPropertyDescriptor(value, MODULAR_INSTANCE_SYMBOL)?.value === true;
663
- }
664
-
665
- function markModularInstance<T>(value: T): T {
666
- if (!isObjectLike(value) || isModularInstance(value)) {
667
- return value;
668
- }
669
-
670
- Object.defineProperty(value, MODULAR_INSTANCE_SYMBOL, {
671
- value: true,
672
- configurable: true,
673
- enumerable: false,
674
- writable: false,
675
- });
676
-
677
- return value;
678
- }
679
-
680
- function isModularAccess(target: unknown, receiver?: unknown): boolean {
681
- return _isModularCall || isModularInstance(target) || isModularInstance(receiver);
682
- }
683
-
684
- export function createDeprecationProxy<T extends object>(instance: T): T {
685
- return new Proxy(instance, {
686
- construct(target: any, args: any[]) {
687
- // needed for Timestamp which we pass as static, when we construct new instance, we need to wrap it in proxy again.
688
- return createDeprecationProxy(new target(...args));
689
- },
690
- get(target: any, prop: string | symbol, receiver: any) {
691
- const originalMethod = target[prop];
692
- const modularAccess = isModularAccess(target, receiver);
693
-
694
- if (prop === 'constructor') {
695
- return Reflect.get(target, prop, receiver);
696
- }
697
-
698
- if (target && target.constructor && target.constructor.name === 'Timestamp') {
699
- deprecationConsoleWarning('firestore', prop as string, 'Timestamp', modularAccess);
700
- return Reflect.get(target, prop, receiver);
701
- }
702
-
703
- if (target && target.name === 'firebaseModuleWithApp') {
704
- // statics
705
- if (
706
- prop === 'Filter' ||
707
- prop === 'FieldValue' ||
708
- prop === 'Timestamp' ||
709
- prop === 'GeoPoint' ||
710
- prop === 'Blob' ||
711
- prop === 'FieldPath'
712
- ) {
713
- deprecationConsoleWarning('firestore', prop, 'statics', false);
714
- }
715
- if (prop === 'LastFetchStatus' || prop === 'ValueSource') {
716
- deprecationConsoleWarning('remoteConfig', prop, 'statics', false);
717
- }
718
- if (prop === 'CustomProvider') {
719
- deprecationConsoleWarning('appCheck', prop, 'statics', false);
720
- }
721
- if (prop === 'StringFormat' || prop === 'TaskEvent' || prop === 'TaskState') {
722
- deprecationConsoleWarning('storage', prop, 'statics', false);
723
- }
724
-
725
- if (
726
- prop === 'PhoneAuthState' ||
727
- prop === 'AppleAuthProvider' ||
728
- prop === 'PhoneAuthProvider' ||
729
- prop === 'GoogleAuthProvider' ||
730
- prop === 'GithubAuthProvider' ||
731
- prop === 'TwitterAuthProvider' ||
732
- prop === 'FacebookAuthProvider' ||
733
- prop === 'OAuthProvider' ||
734
- prop === 'OIDCAuthProvider' ||
735
- prop === 'PhoneMultiFactorGenerator' ||
736
- prop === 'EmailAuthProvider' ||
737
- prop === 'multiFactor' ||
738
- prop === 'getMultiFactorResolver'
739
- ) {
740
- deprecationConsoleWarning('auth', prop, 'statics', false);
741
- }
742
-
743
- if (
744
- prop === 'AuthorizationStatus' ||
745
- prop === 'NotificationAndroidPriority' ||
746
- prop === 'NotificationAndroidVisibility'
747
- ) {
748
- deprecationConsoleWarning('messaging', prop, 'statics', false);
749
- }
750
- if (prop === 'ServerValue') {
751
- deprecationConsoleWarning('database', prop, 'statics', false);
752
- }
753
-
754
- if (prop !== 'setLogLevel') {
755
- // we want to capture setLogLevel function call which we do below
756
- return Reflect.get(target, prop, receiver);
757
- }
758
- }
759
-
760
- // Check if it's a getter/setter first
761
- const descriptor =
762
- Object.getOwnPropertyDescriptor(target, prop) ||
763
- Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop);
764
-
765
- if (descriptor && (descriptor.get || descriptor.set)) {
766
- const instanceName = getInstanceName(target);
767
- const nameSpace = getNamespace(target);
768
-
769
- if (descriptor.get && nameSpace) {
770
- // Handle getter - call it and show deprecation warning
771
- deprecationConsoleWarning(nameSpace, prop as string, instanceName, modularAccess);
772
- const result = descriptor.get.call(target);
773
- return modularAccess ? markModularInstance(result) : result;
774
- }
775
-
776
- if (descriptor.set && nameSpace) {
777
- // Handle setter - return a function that calls the setter with deprecation warning
778
- return function (value: any) {
779
- deprecationConsoleWarning(nameSpace, prop as string, instanceName, modularAccess);
780
- descriptor.set!.call(target, value);
781
- };
782
- }
783
- }
784
-
785
- if (typeof originalMethod === 'function') {
786
- return function (...args: any[]) {
787
- const isModularMethod = modularAccess || args.includes(MODULAR_DEPRECATION_ARG);
788
- const instanceName = getInstanceName(target);
789
- const nameSpace = getNamespace(target);
790
-
791
- if (nameSpace) {
792
- deprecationConsoleWarning(nameSpace, prop as string, instanceName, isModularMethod);
793
- }
794
-
795
- const result = originalMethod.apply(target, filterModularArgument(args));
796
- return isModularMethod ? markModularInstance(result) : result;
797
- };
798
- }
799
- return Reflect.get(target, prop, receiver);
800
- },
801
- set(target: any, prop: string | symbol, value: unknown, receiver: unknown) {
802
- const modularAccess = isModularAccess(target, receiver);
803
- const descriptor =
804
- Object.getOwnPropertyDescriptor(target, prop) ||
805
- Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop);
806
-
807
- if (descriptor?.set) {
808
- const instanceName = getInstanceName(target);
809
- const nameSpace = getNamespace(target);
810
-
811
- if (nameSpace) {
812
- deprecationConsoleWarning(nameSpace, prop as string, instanceName, modularAccess);
813
- }
814
-
815
- descriptor.set.call(target, value);
816
- return true;
817
- }
818
-
819
- return Reflect.set(target, prop, value, receiver);
820
- },
821
- });
822
- }
823
-
824
- export const MODULAR_DEPRECATION_ARG = 'react-native-firebase-modular-method-call';
825
-
826
- // Flag to track if we're currently in a modular call
827
- let _isModularCall = false;
828
-
829
- export function withModularFlag<T>(fn: () => T): T {
830
- const previousFlag = _isModularCall;
831
- _isModularCall = true;
832
- try {
833
- return fn();
834
- } finally {
835
- _isModularCall = previousFlag;
836
- }
837
- }
838
-
839
- export function filterModularArgument(list: any[]): any[] {
840
- return list.filter(arg => arg !== MODULAR_DEPRECATION_ARG);
841
- }
842
-
843
- export function warnIfNotModularCall(args: IArguments, replacementMethodName: string = ''): void {
844
- for (let i = 0; i < args.length; i++) {
845
- if (args[i] === MODULAR_DEPRECATION_ARG) {
846
- return;
847
- }
848
- }
849
-
850
- let message = modularDeprecationMessage;
851
- if (replacementMethodName.length > 0) {
852
- message += ` Please use \`${replacementMethodName}\` instead.`;
853
- }
854
-
855
- if (!globalThis.RNFB_SILENCE_MODULAR_DEPRECATION_WARNINGS) {
856
- // eslint-disable-next-line no-console
857
- console.warn(message);
858
-
859
- if (globalThis.RNFB_MODULAR_DEPRECATION_STRICT_MODE === true) {
860
- throw new Error('Deprecated API usage detected while in strict mode.');
861
- }
862
- }
863
- }
864
-
865
- export function isModularCall(args: IArguments): boolean {
866
- const argsArray = Array.from(args);
867
- return argsArray.includes(MODULAR_DEPRECATION_ARG);
868
- }