@react-native-firebase/database 18.3.2 → 18.5.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 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
+ ## [18.5.0](https://github.com/invertase/react-native-firebase/compare/v18.4.0...v18.5.0) (2023-09-22)
7
+
8
+ ### Features
9
+
10
+ - **database:** Firebase V9 modular API ([#7136](https://github.com/invertase/react-native-firebase/issues/7136)) ([21531f2](https://github.com/invertase/react-native-firebase/commit/21531f26438cc34e4b86f17d58102263a73f2747))
11
+
12
+ ## [18.4.0](https://github.com/invertase/react-native-firebase/compare/v18.3.2...v18.4.0) (2023-09-11)
13
+
14
+ **Note:** Version bump only for package @react-native-firebase/database
15
+
6
16
  ## [18.3.2](https://github.com/invertase/react-native-firebase/compare/v18.3.1...v18.3.2) (2023-09-02)
7
17
 
8
18
  **Note:** Version bump only for package @react-native-firebase/database
package/lib/index.d.ts CHANGED
@@ -17,6 +17,8 @@
17
17
 
18
18
  import { ReactNativeFirebase } from '@react-native-firebase/app';
19
19
 
20
+ export type FirebaseApp = ReactNativeFirebase.FirebaseApp;
21
+
20
22
  /**
21
23
  * Firebase Database package for React Native.
22
24
  *
package/lib/index.js CHANGED
@@ -216,6 +216,8 @@ export default createModuleNamespace({
216
216
  ModuleClass: FirebaseDatabaseModule,
217
217
  });
218
218
 
219
+ export * from './modular';
220
+
219
221
  // import database, { firebase } from '@react-native-firebase/database';
220
222
  // database().X(...);
221
223
  // firebase.database().X(...);
@@ -0,0 +1,217 @@
1
+ import { ReactNativeFirebase } from '@react-native-firebase/app';
2
+ import { FirebaseDatabaseTypes } from '..';
3
+
4
+ import FirebaseApp = ReactNativeFirebase.FirebaseApp;
5
+ import Database = FirebaseDatabaseTypes.Module;
6
+ import DatabaseReference = FirebaseDatabaseTypes.Reference;
7
+
8
+ /**
9
+ * Returns the instance of the Realtime Database SDK that is associated with
10
+ * the provided FirebaseApp. Initializes a new instance with
11
+ * default settings if no instance exists or if the existing
12
+ * instance uses a custom database URL.
13
+ *
14
+ * @param {FirebaseApp?} app - The FirebaseApp instance that the returned Realtime Database instance is associated with.
15
+ * @param {string?} url
16
+ * @returns {*}
17
+ */
18
+ export declare function getDatabase(app?: FirebaseApp, url?: string): Database;
19
+
20
+ /**
21
+ * Modify this Database instance to communicate with the Firebase Database emulator.
22
+ * This must be called synchronously immediately following the first call to firebase.database().
23
+ * Do not use with production credentials as emulator traffic is not encrypted.
24
+ *
25
+ * Note: on android, hosts 'localhost' and '127.0.0.1' are automatically remapped to '10.0.2.2' (the
26
+ * "host" computer IP address for android emulators) to make the standard development experience easy.
27
+ * If you want to use the emulator on a real android device, you will need to specify the actual host
28
+ * computer IP address.
29
+ *
30
+ * @param db: The Database instance
31
+ * @param host: emulator host (eg, 'localhost')
32
+ * @param port: emulator port (eg, 9000)
33
+ */
34
+ export declare function connectDatabaseEmulator(
35
+ db: Database,
36
+ host: string,
37
+ port: number,
38
+ // TODO: this exists in both the JS namespaced and modular versions of the SDK.
39
+ // But the RNFB namespaced version doesn't have it.
40
+ // options?: {
41
+ // mockUserToken?: EmulatorMockTokenOptions | string;
42
+ // },
43
+ ): void;
44
+
45
+ /**
46
+ * Disconnects from the server (all Database operations will be completed offline).
47
+ *
48
+ * The client automatically maintains a persistent connection to the Database server, which
49
+ * will remain active indefinitely and reconnect when disconnected. However, the `goOffline()` and
50
+ * `goOnline()` methods may be used to control the client connection in cases where a persistent
51
+ * connection is undesirable.
52
+ *
53
+ * While offline, the client will no longer receive data updates from the Database. However,
54
+ * all Database operations performed locally will continue to immediately fire events, allowing
55
+ * your application to continue behaving normally. Additionally, each operation performed locally
56
+ * will automatically be queued and retried upon reconnection to the Database server.
57
+ *
58
+ * To reconnect to the Database and begin receiving remote events, see `goOnline()`.
59
+ *
60
+ * #### Example
61
+ *
62
+ * ```js
63
+ * const db = getDatabase();;
64
+ * await goOnline(db);
65
+ * ```
66
+ */
67
+ export declare function goOffline(db: Database): Promise<void>;
68
+
69
+ /**
70
+ * Reconnects to the server and synchronizes the offline Database state with the server state.
71
+ *
72
+ * This method should be used after disabling the active connection with `goOffline()`. Once
73
+ * reconnected, the client will transmit the proper data and fire the appropriate events so that
74
+ * your client "catches up" automatically.
75
+ *
76
+ * #### Example
77
+ *
78
+ * ```js
79
+ * const db = getDatabase();
80
+ * await goOnline(db);
81
+ * ```
82
+ */
83
+ export declare function goOnline(db: Database): Promise<void>;
84
+
85
+ /**
86
+ * Returns a `Reference` representing the location in the Database corresponding to the provided path.
87
+ * If no path is provided, the Reference will point to the root of the Database.
88
+ *
89
+ * #### Example
90
+ *
91
+ * ```js
92
+ * const db = getDatabase();
93
+ *
94
+ * // Get a reference to the root of the Database
95
+ * const rootRef = ref(db);
96
+ *
97
+ * // Get a reference to the /users/ada node
98
+ * const adaRef = ref(db, "users/ada");
99
+ * ```
100
+ *
101
+ * @param db The Database instance.
102
+ * @param path Optional path representing the location the returned `Reference` will point. If not provided, the returned `Reference` will point to the root of the Database.
103
+ */
104
+ export declare function ref(db: Database, path?: string): DatabaseReference;
105
+
106
+ /**
107
+ * Generates a Reference from a database URL.
108
+ * Note domain must be the same.
109
+ * Any query parameters are stripped as per the web SDK.
110
+ *
111
+ * @param db The Database instance.
112
+ * @param url The Firebase URL at which the returned Reference will point.
113
+ * @returns {DatabaseReference}
114
+ */
115
+ export declare function refFromURL(db: Database, url: string): DatabaseReference;
116
+
117
+ /**
118
+ * Sets whether persistence is enabled for all database calls for the current app
119
+ * instance.
120
+ *
121
+ * > Ensure this is called before any database calls are performed, otherwise
122
+ * persistence will only come into effect when the app is next started.
123
+ *
124
+ * #### Example
125
+ *
126
+ * ```js
127
+ * const db = getDatabase();
128
+ * setPersistenceEnabled(db, true);
129
+ *
130
+ * async function bootstrap() {
131
+ * // Bootstrapping application
132
+ * const snapshot = await ref(db, "settings").once("value");
133
+ * }
134
+ * ```
135
+ *
136
+ * @param db The Database instance.
137
+ * @param enabled Whether persistence is enabled for the Database service.
138
+ */
139
+ export declare function setPersistenceEnabled(db: Database, enabled: boolean): void;
140
+
141
+ /**
142
+ * Sets the native logging level for the database module. By default,
143
+ * only warnings and errors are logged natively. Setting this to true will log all
144
+ * database events.
145
+ *
146
+ * > Ensure logging is disabled for production apps, as excessive logging can cause performance issues.
147
+ *
148
+ * #### Example
149
+ *
150
+ * ```js
151
+ * const db = getDatabase();
152
+ *
153
+ * // Set debug logging if developing
154
+ * if (__DEV__) {
155
+ * setLoggingEnabled(db, true);
156
+ * }
157
+ * ```
158
+ *
159
+ * @param db The Database instance.
160
+ * @param enabled Whether debug logging is enabled.
161
+ * @returns {void}
162
+ */
163
+ export declare function setLoggingEnabled(db: Database, enabled: boolean): void;
164
+
165
+ /**
166
+ * By default, Firebase Database will use up to 10MB of disk space to cache data. If the cache grows beyond this size,
167
+ * Firebase Database will start removing data that hasn't been recently used. If you find that your application
168
+ * caches too little or too much data, call this method to change the cache size. This method must be called before
169
+ * creating your first Database reference and only needs to be called once per application.
170
+ *
171
+ * Note that the specified cache size is only an approximation and the size on disk may temporarily exceed it at times.
172
+ * Cache sizes smaller than 1 MB or greater than 100 MB are not supported.
173
+ *
174
+ * #### Example
175
+ *
176
+ * ```js
177
+ * const db = getDatabase();
178
+ *
179
+ * setPersistenceEnabled(db, true);
180
+ * setPersistenceCacheSizeBytes(db, 2000000); // 2MB
181
+ *
182
+ * async function bootstrap() {
183
+ * // Bootstrapping application
184
+ * const snapshot = await ref(db, 'settings').once("value");
185
+ * }
186
+ * ```
187
+ *
188
+ * @param db The Database instance.
189
+ * @param bytes The new size of the cache in bytes.
190
+ */
191
+ export declare function setPersistenceCacheSizeBytes(db: Database, bytes: number): void;
192
+
193
+ /**
194
+ * Force the use of longPolling instead of websockets. This will be ignored if websocket protocol is used in databaseURL.
195
+ */
196
+ export declare function forceLongPolling(): void;
197
+
198
+ /**
199
+ * Force the use of websockets instead of longPolling.
200
+ */
201
+ export declare function forceWebSockets(): void;
202
+
203
+ /**
204
+ * Returns a placeholder value for auto-populating the current timestamp (time
205
+ * since the Unix epoch, in milliseconds) as determined by the Firebase
206
+ * servers.
207
+ */
208
+ export function serverTimestamp(): object;
209
+
210
+ /**
211
+ * Returns a placeholder value that can be used to atomically increment the
212
+ * current database value by the provided delta.
213
+ *
214
+ * @param delta - the amount to modify the current value atomically.
215
+ * @returns A placeholder value for modifying data atomically server-side.
216
+ */
217
+ export function increment(delta: number): object;
@@ -0,0 +1,124 @@
1
+ import { firebase } from '..';
2
+
3
+ /**
4
+ * @typedef {import("..").FirebaseApp} FirebaseApp
5
+ * @typedef {import("..").FirebaseDatabaseTypes.Module} Database
6
+ */
7
+
8
+ /**
9
+ * @param {FirebaseApp?} app - The FirebaseApp instance that the returned Realtime Database instance is associated with.
10
+ * @param {string?} url
11
+ * @returns {Database}
12
+ */
13
+ export function getDatabase(app, url) {
14
+ if (app) {
15
+ return firebase.app(app.name).database(url);
16
+ }
17
+
18
+ return firebase.app().database(url);
19
+ }
20
+
21
+ /**
22
+ * @param {Database} db
23
+ * @param {string} host
24
+ * @param {number} port
25
+ * @returns {void}
26
+ */
27
+ export function connectDatabaseEmulator(db, host, port) {
28
+ db.useEmulator(host, port);
29
+ }
30
+
31
+ /**
32
+ * @param {Database} db
33
+ * @returns {Promise<void>}
34
+ */
35
+ export function goOffline(db) {
36
+ return db.goOffline();
37
+ }
38
+
39
+ /**
40
+ * @param {Database} db
41
+ * @returns {Promise<void>}
42
+ */
43
+ export function goOnline(db) {
44
+ return db.goOnline();
45
+ }
46
+
47
+ /**
48
+ * @param {Database} db
49
+ * @param {string?} path
50
+ * @returns {DatabaseReference}
51
+ */
52
+ export function ref(db, path) {
53
+ return db.ref(path);
54
+ }
55
+
56
+ /**
57
+ * @param {Database} db
58
+ * @param {string} url
59
+ * @returns {DatabaseReference}
60
+ */
61
+ export function refFromURL(db, url) {
62
+ return db.refFromURL(url);
63
+ }
64
+
65
+ /**
66
+ * @param {Database} db
67
+ * @param {boolean} enabled
68
+ * @returns {void}
69
+ */
70
+ export function setPersistenceEnabled(db, enabled) {
71
+ return db.setPersistenceEnabled(enabled);
72
+ }
73
+
74
+ /**
75
+ * @param {Database} db
76
+ * @param {boolean} enabled
77
+ * @returns {void}
78
+ */
79
+ export function setLoggingEnabled(db, enabled) {
80
+ return db.setLoggingEnabled(enabled);
81
+ }
82
+
83
+ /**
84
+ * @param {Database} db
85
+ * @param {number} bytes
86
+ * @returns {void}
87
+ */
88
+ export function setPersistenceCacheSizeBytes(db, bytes) {
89
+ return db.setPersistenceCacheSizeBytes(bytes);
90
+ }
91
+
92
+ export function forceLongPolling() {
93
+ throw new Error('forceLongPolling() is not implemented');
94
+ }
95
+
96
+ export function forceWebSockets() {
97
+ throw new Error('forceWebSockets() is not implemented');
98
+ }
99
+
100
+ /**
101
+ * @param {Database} db
102
+ * @returns {Date}
103
+ */
104
+ export function getServerTime(db) {
105
+ return db.getServerTime();
106
+ }
107
+
108
+ /**
109
+ * @returns {object}
110
+ */
111
+ export function serverTimestamp() {
112
+ return firebase.database.ServerValue.TIMESTAMP;
113
+ }
114
+
115
+ /**
116
+ * @param {number} delta
117
+ * @returns {object}
118
+ */
119
+ export function increment(delta) {
120
+ return firebase.database.ServerValue.increment(delta);
121
+ }
122
+
123
+ export * from './query';
124
+ export * from './transaction';