@react-native-firebase/app 20.3.0 → 20.5.0

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
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
+ ## [20.5.0](https://github.com/invertase/react-native-firebase/compare/v20.4.0...v20.5.0) (2024-09-11)
7
+
8
+ **Note:** Version bump only for package @react-native-firebase/app
9
+
10
+ ## [20.4.0](https://github.com/invertase/react-native-firebase/compare/v20.3.0...v20.4.0) (2024-08-13)
11
+
12
+ ### Features
13
+
14
+ - **firestore:** support for second database ([#7949](https://github.com/invertase/react-native-firebase/issues/7949)) ([eec08a0](https://github.com/invertase/react-native-firebase/commit/eec08a06f41dd96d13778fbed2afcaaac238fca4))
15
+
6
16
  ## [20.3.0](https://github.com/invertase/react-native-firebase/compare/v20.2.1...v20.3.0) (2024-07-19)
7
17
 
8
18
  ### Bug Fixes
@@ -0,0 +1,43 @@
1
+ import { describe, expect, it } from '@jest/globals';
2
+
3
+ import {
4
+ deleteApp,
5
+ registerVersion,
6
+ onLog,
7
+ getApps,
8
+ initializeApp,
9
+ getApp,
10
+ setLogLevel,
11
+ } from '../lib';
12
+
13
+ describe('App', function () {
14
+ describe('modular', function () {
15
+ it('`deleteApp` function is properly exposed to end user', function () {
16
+ expect(deleteApp).toBeDefined();
17
+ });
18
+
19
+ it('`registerVersion` function is properly exposed to end user', function () {
20
+ expect(registerVersion).toBeDefined();
21
+ });
22
+
23
+ it('`onLog` function is properly exposed to end user', function () {
24
+ expect(onLog).toBeDefined();
25
+ });
26
+
27
+ it('`getApps` function is properly exposed to end user', function () {
28
+ expect(getApps).toBeDefined();
29
+ });
30
+
31
+ it('`initializeApp` function is properly exposed to end user', function () {
32
+ expect(initializeApp).toBeDefined();
33
+ });
34
+
35
+ it('`getApp` function is properly exposed to end user', function () {
36
+ expect(getApp).toBeDefined();
37
+ });
38
+
39
+ it('`setLogLevel` function is properly exposed to end user', function () {
40
+ expect(setLogLevel).toBeDefined();
41
+ });
42
+ });
43
+ });
@@ -18,5 +18,5 @@ package io.invertase.firebase.app;
18
18
  */
19
19
  // generated file - do not modify or commit
20
20
  public class ReactNativeFirebaseVersion {
21
- public static String VERSION = "20.3.0";
21
+ public static String VERSION = "20.5.0";
22
22
  }
@@ -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 = @"20.3.0";
21
+ NSString* const RNFBVersionString = @"20.5.0";
package/lib/index.d.ts CHANGED
@@ -611,5 +611,7 @@ export namespace Utils {
611
611
  */
612
612
  export const utils: ReactNativeFirebase.FirebaseModuleWithStatics<Utils.Module, Utils.Statics>;
613
613
 
614
+ export * from './modular';
615
+
614
616
  declare const module: ReactNativeFirebase.Module;
615
617
  export default module;
package/lib/index.js CHANGED
@@ -18,7 +18,7 @@
18
18
  import { getFirebaseRoot } from './internal/registry/namespace';
19
19
 
20
20
  export const firebase = getFirebaseRoot();
21
- export * from './modular/app';
21
+ export * from './modular';
22
22
  export { default as utils } from './utils';
23
23
 
24
24
  export default firebase;
@@ -15,7 +15,7 @@
15
15
  *
16
16
  */
17
17
 
18
- import { isString } from '@react-native-firebase/app/lib/common';
18
+ import { isString } from '../../common';
19
19
  import FirebaseApp from '../../FirebaseApp';
20
20
  import SDK_VERSION from '../../version';
21
21
  import { DEFAULT_APP_NAME, KNOWN_NAMESPACES } from '../constants';
@@ -93,19 +93,21 @@ function getOrCreateModuleForApp(app, moduleNamespace) {
93
93
  );
94
94
  }
95
95
 
96
- // e.g. firebase.storage(customUrlOrRegion)
97
- function firebaseModuleWithArgs(customUrlOrRegion) {
98
- if (customUrlOrRegion !== undefined) {
96
+ // e.g. firebase.storage(customUrlOrRegion), firebase.functions(customUrlOrRegion), firebase.firestore(databaseId), firebase.database(url)
97
+ function firebaseModuleWithArgs(customUrlOrRegionOrDatabaseId) {
98
+ if (customUrlOrRegionOrDatabaseId !== undefined) {
99
99
  if (!hasCustomUrlOrRegionSupport) {
100
100
  // TODO throw Module does not support arguments error
101
101
  }
102
102
 
103
- if (!isString(customUrlOrRegion)) {
103
+ if (!isString(customUrlOrRegionOrDatabaseId)) {
104
104
  // TODO throw Module first argument must be a string error
105
105
  }
106
106
  }
107
107
 
108
- const key = customUrlOrRegion ? `${customUrlOrRegion}:${moduleNamespace}` : moduleNamespace;
108
+ const key = customUrlOrRegionOrDatabaseId
109
+ ? `${customUrlOrRegionOrDatabaseId}:${moduleNamespace}`
110
+ : moduleNamespace;
109
111
 
110
112
  if (!APP_MODULE_INSTANCE[app.name]) {
111
113
  APP_MODULE_INSTANCE[app.name] = {};
@@ -115,7 +117,7 @@ function getOrCreateModuleForApp(app, moduleNamespace) {
115
117
  APP_MODULE_INSTANCE[app.name][key] = new ModuleClass(
116
118
  app,
117
119
  NAMESPACE_REGISTRY[moduleNamespace],
118
- customUrlOrRegion,
120
+ customUrlOrRegionOrDatabaseId,
119
121
  );
120
122
  }
121
123
 
@@ -153,7 +153,10 @@ function initialiseNativeModule(module) {
153
153
  function subscribeToNativeModuleEvent(eventName) {
154
154
  if (!NATIVE_MODULE_EVENT_SUBSCRIPTIONS[eventName]) {
155
155
  RNFBNativeEventEmitter.addListener(eventName, event => {
156
- if (event.appName) {
156
+ if (event.appName && event.databaseId) {
157
+ // Firestore requires both appName and databaseId to prefix
158
+ SharedEventEmitter.emit(`${event.appName}-${event.databaseId}-${eventName}`, event);
159
+ } else if (event.appName) {
157
160
  // native event has an appName property - auto prefix and internally emit
158
161
  SharedEventEmitter.emit(`${event.appName}-${eventName}`, event);
159
162
  } else {
@@ -0,0 +1,62 @@
1
+ import { ReactNativeFirebase } from '..';
2
+
3
+ import FirebaseApp = ReactNativeFirebase.FirebaseApp;
4
+ import FirebaseAppOptions = ReactNativeFirebase.FirebaseAppOptions;
5
+ import LogLevelString = ReactNativeFirebase.LogLevelString;
6
+
7
+ /**
8
+ * Renders this app unusable and frees the resources of all associated services.
9
+ * @param app - FirebaseApp - The app to delete.
10
+ * @returns Promise<void>
11
+ */
12
+ export function deleteApp(app: FirebaseApp): Promise<void>;
13
+
14
+ /**
15
+ * Registers a library's name and version for platform logging purposes.
16
+ * @param libraryKeyOrName - Library name or key.
17
+ * @param version - Library version.
18
+ * @param variant - Library variant.
19
+ * @returns Promise<void>
20
+ */
21
+ export function registerVersion(
22
+ libraryKeyOrName: string,
23
+ version: string,
24
+ variant: string | null,
25
+ ): Promise<void>;
26
+
27
+ /**
28
+ * Sets log handler for all Firebase SDKs.
29
+ * @param logCallback - The callback function to handle logs.
30
+ * @param options - Optional settings for log handling.
31
+ * @returns Promise<void>
32
+ * @throws Error - onLog is only supported on Web
33
+ */
34
+ export function onLog(logCallback: (logData: any) => void, options?: any): Promise<void>;
35
+
36
+ /**
37
+ * Gets the list of all initialized apps.
38
+ * @returns FirebaseApp[] - An array of all initialized Firebase apps.
39
+ */
40
+ export function getApps(): FirebaseApp[];
41
+
42
+ /**
43
+ * Initializes a Firebase app with the provided options and name.
44
+ * @param options - Options to configure the services used in the app.
45
+ * @param name - The optional name of the app to initialize ('[DEFAULT]' if omitted).
46
+ * @returns FirebaseApp - The initialized Firebase app.
47
+ */
48
+ export function initializeApp(options: FirebaseAppOptions, name?: string): FirebaseApp;
49
+
50
+ /**
51
+ * Retrieves an instance of a Firebase app.
52
+ * @param name - The optional name of the app to return ('[DEFAULT]' if omitted).
53
+ * @returns FirebaseApp - The requested Firebase app instance.
54
+ */
55
+ export function getApp(name?: string): FirebaseApp;
56
+
57
+ /**
58
+ * Sets the log level across all Firebase SDKs.
59
+ * @param logLevel - The log level to set ('debug', 'verbose', 'info', 'warn', 'error', 'silent').
60
+ * @returns void
61
+ */
62
+ export function setLogLevel(logLevel: LogLevelString): void;
@@ -0,0 +1,80 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import {
3
+ deleteApp as deleteAppCompat,
4
+ getApp as getAppCompat,
5
+ getApps as getAppsCompat,
6
+ initializeApp as initializeAppCompat,
7
+ setLogLevel as setLogLevelCompat,
8
+ } from '../internal';
9
+
10
+ /**
11
+ * @typedef {import('..').ReactNativeFirebase.FirebaseApp} FirebaseApp
12
+ * @typedef {import('..').ReactNativeFirebase.FirebaseAppOptions} FirebaseAppOptions
13
+ * @typedef {import('..').ReactNativeFirebase.LogLevelString} LogLevelString
14
+ */
15
+
16
+ /**
17
+ * Renders this app unusable and frees the resources of all associated services.
18
+ * @param {FirebaseApp} app - The app to delete.
19
+ * @returns {Promise<void>}
20
+ */
21
+ export function deleteApp(app) {
22
+ return deleteAppCompat(app.name, app._nativeInitialized);
23
+ }
24
+
25
+ /**
26
+ * Registers a library's name and version for platform logging purposes.
27
+ @param {string} libraryKeyOrName - library name or key.
28
+ @param {string} version - library version.
29
+ @param {string | null} variant - library variant.
30
+ * @returns {Promise<void>}
31
+ */
32
+ export function registerVersion(libraryKeyOrName, version, variant) {
33
+ throw new Error('registerVersion is only supported on Web');
34
+ }
35
+
36
+ /**
37
+ * Sets log handler for all Firebase SDKs.
38
+ * @param {Function} logCallback - The callback function to handle logs.
39
+ * @param {Object} [options] - Optional settings for log handling.
40
+ * @returns {Promise<void>}
41
+ */
42
+ export function onLog(logCallback, options) {
43
+ throw new Error('onLog is only supported on Web');
44
+ }
45
+
46
+ /**
47
+ * Gets the list of all initialized apps.
48
+ * @returns {FirebaseApp[]} - An array of all initialized Firebase apps.
49
+ */
50
+ export function getApps() {
51
+ return getAppsCompat();
52
+ }
53
+
54
+ /**
55
+ * Initializes a Firebase app with the provided options and name.
56
+ * @param {FirebaseAppOptions} options - Options to configure the services used in the app.
57
+ * @param {string} [name] - The optional name of the app to initialize ('[DEFAULT]' if omitted).
58
+ * @returns {FirebaseApp} - The initialized Firebase app.
59
+ */
60
+ export function initializeApp(options, name) {
61
+ return initializeAppCompat(options, name);
62
+ }
63
+
64
+ /**
65
+ * Retrieves an instance of a Firebase app.
66
+ * @param {string} [name] - The optional name of the app to return ('[DEFAULT]' if omitted).
67
+ * @returns {FirebaseApp} - The requested Firebase app instance.
68
+ */
69
+ export function getApp(name) {
70
+ return getAppCompat(name);
71
+ }
72
+
73
+ /**
74
+ * Sets the log level across all Firebase SDKs.
75
+ * @param {LogLevelString} logLevel - The log level to set ('debug', 'verbose', 'info', 'warn', 'error', 'silent').
76
+ * @returns {void}
77
+ */
78
+ export function setLogLevel(logLevel) {
79
+ return setLogLevelCompat(logLevel);
80
+ }
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- module.exports = '20.3.0';
2
+ module.exports = '20.5.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-firebase/app",
3
- "version": "20.3.0",
3
+ "version": "20.5.0",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Storage and more.",
6
6
  "main": "lib/index.js",
@@ -89,5 +89,5 @@
89
89
  "playServicesAuth": "21.2.0"
90
90
  }
91
91
  },
92
- "gitHead": "a916b37b022cf40588fa0fd915b7ab901e2458d0"
92
+ "gitHead": "daf2bc9086c14bbb0e1b02a4d4274b7060263eb1"
93
93
  }
@@ -1,33 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
- import {
3
- deleteApp as deleteAppCompat,
4
- getApp,
5
- getApps,
6
- initializeApp,
7
- setLogLevel,
8
- } from '../internal';
9
-
10
- /**
11
- * Renders this app unusable and frees the resources of all associated services.
12
- * @param app - FirebaseApp - The app to delete.
13
- * @returns
14
- */
15
- export function deleteApp(app) {
16
- return deleteAppCompat(app.name, app._nativeInitialized);
17
- }
18
-
19
- /**
20
- * Registers a library's name and version for platform logging purposes.
21
- */
22
- export function registerVersion() {
23
- throw new Error('registerVersion is only supported on Web');
24
- }
25
-
26
- /**
27
- * Sets log handler for all Firebase SDKs.
28
- */
29
- export function onLog(logCallback, options) {
30
- throw new Error('onLog is only supported on Web');
31
- }
32
-
33
- export { getApps, initializeApp, getApp, setLogLevel };