@react-native-firebase/database 24.1.1 → 25.0.1

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 (126) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/module/DatabaseDataSnapshot.js +144 -0
  3. package/dist/module/DatabaseDataSnapshot.js.map +1 -0
  4. package/dist/module/DatabaseOnDisconnect.js +84 -0
  5. package/dist/module/DatabaseOnDisconnect.js.map +1 -0
  6. package/dist/module/DatabaseQuery.js +298 -0
  7. package/dist/module/DatabaseQuery.js.map +1 -0
  8. package/{lib → dist/module}/DatabaseQueryModifiers.js +49 -98
  9. package/dist/module/DatabaseQueryModifiers.js.map +1 -0
  10. package/dist/module/DatabaseReference.js +169 -0
  11. package/dist/module/DatabaseReference.js.map +1 -0
  12. package/dist/module/DatabaseStatics.js +35 -0
  13. package/dist/module/DatabaseStatics.js.map +1 -0
  14. package/{lib → dist/module}/DatabaseSyncTree.js +74 -156
  15. package/dist/module/DatabaseSyncTree.js.map +1 -0
  16. package/{lib → dist/module}/DatabaseThenableReference.js +12 -12
  17. package/dist/module/DatabaseThenableReference.js.map +1 -0
  18. package/{lib → dist/module}/DatabaseTransaction.js +26 -89
  19. package/dist/module/DatabaseTransaction.js.map +1 -0
  20. package/dist/module/index.js +27 -0
  21. package/dist/module/index.js.map +1 -0
  22. package/dist/module/modular/query.js +138 -0
  23. package/dist/module/modular/query.js.map +1 -0
  24. package/dist/module/modular/transaction.js +24 -0
  25. package/dist/module/modular/transaction.js.map +1 -0
  26. package/dist/module/modular.js +76 -0
  27. package/dist/module/modular.js.map +1 -0
  28. package/dist/module/namespaced.js +147 -0
  29. package/dist/module/namespaced.js.map +1 -0
  30. package/dist/module/package.json +1 -0
  31. package/dist/module/types/database.js +21 -0
  32. package/dist/module/types/database.js.map +1 -0
  33. package/dist/module/types/internal.js +4 -0
  34. package/dist/module/types/internal.js.map +1 -0
  35. package/dist/module/types/namespaced.js +67 -0
  36. package/dist/module/types/namespaced.js.map +1 -0
  37. package/dist/module/version.js +5 -0
  38. package/dist/module/version.js.map +1 -0
  39. package/dist/module/web/RNFBDatabaseModule.android.js +6 -0
  40. package/dist/module/web/RNFBDatabaseModule.android.js.map +1 -0
  41. package/dist/module/web/RNFBDatabaseModule.ios.js +6 -0
  42. package/dist/module/web/RNFBDatabaseModule.ios.js.map +1 -0
  43. package/dist/module/web/RNFBDatabaseModule.js +375 -0
  44. package/dist/module/web/RNFBDatabaseModule.js.map +1 -0
  45. package/{lib → dist/module}/web/query.js +19 -24
  46. package/dist/module/web/query.js.map +1 -0
  47. package/dist/typescript/lib/DatabaseDataSnapshot.d.ts +20 -0
  48. package/dist/typescript/lib/DatabaseDataSnapshot.d.ts.map +1 -0
  49. package/dist/typescript/lib/DatabaseOnDisconnect.d.ts +19 -0
  50. package/dist/typescript/lib/DatabaseOnDisconnect.d.ts.map +1 -0
  51. package/dist/typescript/lib/DatabaseQuery.d.ts +32 -0
  52. package/dist/typescript/lib/DatabaseQuery.d.ts.map +1 -0
  53. package/dist/typescript/lib/DatabaseQueryModifiers.d.ts +55 -0
  54. package/dist/typescript/lib/DatabaseQueryModifiers.d.ts.map +1 -0
  55. package/dist/typescript/lib/DatabaseReference.d.ts +21 -0
  56. package/dist/typescript/lib/DatabaseReference.d.ts.map +1 -0
  57. package/dist/typescript/lib/DatabaseStatics.d.ts +10 -0
  58. package/dist/typescript/lib/DatabaseStatics.d.ts.map +1 -0
  59. package/dist/typescript/lib/DatabaseSyncTree.d.ts +72 -0
  60. package/dist/typescript/lib/DatabaseSyncTree.d.ts.map +1 -0
  61. package/dist/typescript/lib/DatabaseThenableReference.d.ts +13 -0
  62. package/dist/typescript/lib/DatabaseThenableReference.d.ts.map +1 -0
  63. package/dist/typescript/lib/DatabaseTransaction.d.ts +15 -0
  64. package/dist/typescript/lib/DatabaseTransaction.d.ts.map +1 -0
  65. package/dist/typescript/lib/index.d.ts +6 -0
  66. package/dist/typescript/lib/index.d.ts.map +1 -0
  67. package/dist/typescript/lib/modular/query.d.ts +41 -0
  68. package/dist/typescript/lib/modular/query.d.ts.map +1 -0
  69. package/dist/typescript/lib/modular/transaction.d.ts +3 -0
  70. package/dist/typescript/lib/modular/transaction.d.ts.map +1 -0
  71. package/dist/typescript/lib/modular.d.ts +24 -0
  72. package/dist/typescript/lib/modular.d.ts.map +1 -0
  73. package/dist/typescript/lib/namespaced.d.ts +13 -0
  74. package/dist/typescript/lib/namespaced.d.ts.map +1 -0
  75. package/dist/typescript/lib/types/database.d.ts +93 -0
  76. package/dist/typescript/lib/types/database.d.ts.map +1 -0
  77. package/dist/typescript/lib/types/internal.d.ts +189 -0
  78. package/dist/typescript/lib/types/internal.d.ts.map +1 -0
  79. package/dist/typescript/lib/types/namespaced.d.ts +1230 -0
  80. package/dist/typescript/lib/types/namespaced.d.ts.map +1 -0
  81. package/dist/typescript/lib/version.d.ts +2 -0
  82. package/dist/typescript/lib/version.d.ts.map +1 -0
  83. package/dist/typescript/lib/web/RNFBDatabaseModule.android.d.ts +3 -0
  84. package/dist/typescript/lib/web/RNFBDatabaseModule.android.d.ts.map +1 -0
  85. package/dist/typescript/lib/web/RNFBDatabaseModule.d.ts +3 -0
  86. package/dist/typescript/lib/web/RNFBDatabaseModule.d.ts.map +1 -0
  87. package/dist/typescript/lib/web/RNFBDatabaseModule.ios.d.ts +3 -0
  88. package/dist/typescript/lib/web/RNFBDatabaseModule.ios.d.ts.map +1 -0
  89. package/dist/typescript/lib/web/query.d.ts +13 -0
  90. package/dist/typescript/lib/web/query.d.ts.map +1 -0
  91. package/dist/typescript/package.json +1 -0
  92. package/lib/{DatabaseDataSnapshot.js → DatabaseDataSnapshot.ts} +62 -88
  93. package/lib/{DatabaseOnDisconnect.js → DatabaseOnDisconnect.ts} +25 -23
  94. package/lib/{DatabaseQuery.js → DatabaseQuery.ts} +130 -144
  95. package/lib/DatabaseQueryModifiers.ts +283 -0
  96. package/lib/{DatabaseReference.js → DatabaseReference.ts} +103 -85
  97. package/lib/{DatabaseStatics.js → DatabaseStatics.ts} +4 -2
  98. package/lib/DatabaseSyncTree.ts +390 -0
  99. package/lib/DatabaseThenableReference.ts +73 -0
  100. package/lib/DatabaseTransaction.ts +172 -0
  101. package/lib/index.ts +25 -0
  102. package/lib/modular/query.ts +410 -0
  103. package/lib/modular/transaction.ts +34 -0
  104. package/lib/modular.ts +134 -0
  105. package/lib/{index.js → namespaced.ts} +91 -90
  106. package/lib/types/database.ts +144 -0
  107. package/lib/types/internal.ts +317 -0
  108. package/lib/{index.d.ts → types/namespaced.ts} +48 -9
  109. package/lib/version.ts +2 -0
  110. package/lib/web/RNFBDatabaseModule.android.ts +4 -0
  111. package/lib/web/RNFBDatabaseModule.ios.ts +4 -0
  112. package/lib/web/RNFBDatabaseModule.ts +534 -0
  113. package/lib/web/query.ts +97 -0
  114. package/package.json +42 -7
  115. package/tsconfig.json +21 -0
  116. package/typedoc.json +3 -3
  117. package/lib/modular/index.d.ts +0 -246
  118. package/lib/modular/index.js +0 -134
  119. package/lib/modular/query.d.ts +0 -972
  120. package/lib/modular/query.js +0 -305
  121. package/lib/modular/transaction.d.ts +0 -54
  122. package/lib/modular/transaction.js +0 -24
  123. package/lib/version.js +0 -2
  124. package/lib/web/RNFBDatabaseModule.android.js +0 -2
  125. package/lib/web/RNFBDatabaseModule.ios.js +0 -2
  126. package/lib/web/RNFBDatabaseModule.js +0 -558
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  /*
2
4
  * Copyright (c) 2016-present Invertase Limited & Contributors
3
5
  *
@@ -16,33 +18,23 @@
16
18
  */
17
19
 
18
20
  import { createDeprecationProxy, isString } from '@react-native-firebase/app/dist/module/common';
19
- import { getReactNativeModule } from '@react-native-firebase/app/dist/module/internal/nativeModule';
20
21
  import NativeError from '@react-native-firebase/app/dist/module/internal/NativeFirebaseError';
21
22
  import SharedEventEmitter from '@react-native-firebase/app/dist/module/internal/SharedEventEmitter';
22
- import DatabaseDataSnapshot from './DatabaseDataSnapshot';
23
-
23
+ import { getReactNativeModule } from '@react-native-firebase/app/dist/module/internal/nativeModule';
24
+ import DatabaseDataSnapshot from "./DatabaseDataSnapshot.js";
24
25
  class DatabaseSyncTree {
25
- constructor() {
26
- this._tree = {};
27
- this._reverseLookup = {};
28
-
29
- // we need to be able to register multiple listeners for a single event,
30
- // *then delete a specific single listener for that event*, so we have to
31
- // be able to identify specific listeners for removal which means we need
32
- // to mirror the private registration accounting from upstream EventEmitter
33
- // so we have access here and can do our single emitter removal
34
- // This is a map of emitter-key <-> set of listener registrations
35
- // The listener registrations have { context, listener, remove() }
36
- this._registry = {};
26
+ _tree = {};
27
+ _reverseLookup = {};
37
28
 
29
+ // We need to track individual emitter subscriptions so one callback can be removed
30
+ // without clearing every listener bound to the same registration key.
31
+ _registry = {};
32
+ constructor() {
38
33
  SharedEventEmitter.addListener('database_sync_event', this._handleSyncEvent.bind(this));
39
34
  }
40
-
41
35
  get native() {
42
36
  return getReactNativeModule('RNFBDatabaseQueryModule');
43
37
  }
44
-
45
- // from upstream EventEmitter: initialize registrations for an emitter key
46
38
  _allocate(registry, eventType) {
47
39
  let registrations = registry[eventType];
48
40
  if (registrations == null) {
@@ -53,12 +45,12 @@ class DatabaseSyncTree {
53
45
  }
54
46
 
55
47
  /**
56
- * Handles an incoming event from native
57
- * @param event
58
- * @private
48
+ * Handles an incoming event from native.
59
49
  */
60
50
  _handleSyncEvent(event) {
61
- const { body } = event;
51
+ const {
52
+ body
53
+ } = event;
62
54
  if (body.error) {
63
55
  this._handleErrorEvent(body);
64
56
  } else {
@@ -67,149 +59,104 @@ class DatabaseSyncTree {
67
59
  }
68
60
 
69
61
  /**
70
- * Routes native database query listener cancellation events to their js counterparts.
71
- *
72
- * @param event
73
- * @private
62
+ * Routes native database query listener cancellation events to their JS counterparts.
74
63
  */
75
64
  _handleErrorEvent(event) {
76
- // console.log('SyncTree.ERROR >>>', event);
77
- const { eventRegistrationKey, registrationCancellationKey } = event.registration;
78
-
65
+ const {
66
+ eventRegistrationKey,
67
+ registrationCancellationKey
68
+ } = event.registration;
69
+ if (!registrationCancellationKey) {
70
+ return;
71
+ }
79
72
  const registration = this.getRegistration(registrationCancellationKey);
80
-
81
73
  if (registration) {
82
- // build a new js error - we additionally attach
83
- // the ref as a property for easier debugging
84
74
  const error = NativeError.fromEvent(event.error, 'database');
85
-
86
- // forward on to users .on(successCallback, cancellationCallback <-- listener
87
75
  SharedEventEmitter.emit(registrationCancellationKey, error);
88
76
 
89
- // remove the paired event registration - if we received a cancellation
90
- // event then it's guaranteed that they'll be no further value events
77
+ // If native cancelled the listener, value events for the paired registration
78
+ // are finished as well, so clean up the JS-side bookkeeping.
91
79
  this.removeRegistration(eventRegistrationKey);
92
80
  }
93
81
  }
94
82
 
95
83
  /**
96
- * Routes native database 'on' events to their js equivalent counterpart.
97
- * If t is no longer any listeners remaining for this event we internally
98
- * call the native unsub method to prevent further events coming through.
99
- *
100
- * @param event
101
- * @private
84
+ * Routes native database `on` events to their JS equivalents.
85
+ * If there are no listeners left for the event, native is told to unsubscribe.
102
86
  */
103
87
  _handleValueEvent(event) {
104
- // console.log('SyncTree.VALUE >>>', event);
105
- const { key, eventRegistrationKey } = event.registration;
88
+ const {
89
+ key,
90
+ eventRegistrationKey
91
+ } = event.registration;
106
92
  const registration = this.getRegistration(eventRegistrationKey);
107
- // console.log('SyncTree.registration >>>', registration);
108
-
109
93
  if (!registration) {
110
- // registration previously revoked
111
- // notify native that the registration
112
- // no longer exists so it can remove
113
- // the native listeners
114
- return this.native.off(key, eventRegistrationKey);
94
+ this.native.off(key, eventRegistrationKey);
95
+ return;
115
96
  }
116
-
117
97
  let snapshot;
118
98
  let previousChildName;
119
-
120
- // Value events don't return a previousChildName
99
+ if (!event.data) {
100
+ return;
101
+ }
121
102
  if (event.eventType === 'value') {
122
103
  snapshot = createDeprecationProxy(new DatabaseDataSnapshot(registration.ref, event.data));
123
104
  } else {
124
- snapshot = createDeprecationProxy(
125
- new DatabaseDataSnapshot(registration.ref, event.data.snapshot),
126
- );
127
- previousChildName = event.data.previousChildName;
105
+ const childData = event.data;
106
+ snapshot = createDeprecationProxy(new DatabaseDataSnapshot(registration.ref, childData.snapshot));
107
+ previousChildName = childData.previousChildName;
128
108
  }
129
-
130
- // forward on to users .on(successCallback <-- listener
131
- return SharedEventEmitter.emit(eventRegistrationKey, snapshot, previousChildName);
109
+ SharedEventEmitter.emit(eventRegistrationKey, snapshot, previousChildName);
132
110
  }
133
111
 
134
112
  /**
135
113
  * Returns registration information such as appName, ref, path and registration keys.
136
- *
137
- * @param registration
138
- * @return {null}
139
114
  */
140
115
  getRegistration(registration) {
141
- return this._reverseLookup[registration]
142
- ? Object.assign({}, this._reverseLookup[registration])
143
- : null;
116
+ return this._reverseLookup[registration] ? Object.assign({}, this._reverseLookup[registration]) : null;
144
117
  }
145
118
 
146
119
  /**
147
120
  * Removes all listeners for the specified registration keys.
148
- *
149
- * @param registrations
150
- * @return {number}
151
121
  */
152
122
  removeListenersForRegistrations(registrations) {
153
123
  if (isString(registrations)) {
154
124
  this.removeRegistration(registrations);
155
125
  SharedEventEmitter.removeAllListeners(registrations);
156
-
157
- // mirror upstream accounting - clear out all registrations for this key
158
- if (registrations == null) {
159
- this._registry = {};
160
- } else {
161
- delete this._registry[registrations];
162
- }
126
+ delete this._registry[registrations];
163
127
  return 1;
164
128
  }
165
-
166
129
  if (!Array.isArray(registrations)) {
167
130
  return 0;
168
131
  }
169
132
  for (let i = 0, len = registrations.length; i < len; i++) {
170
133
  this.removeRegistration(registrations[i]);
171
134
  SharedEventEmitter.removeAllListeners(registrations[i]);
172
- // mirror upstream accounting - clear out all registrations for this key
173
- if (registrations[i] == null) {
174
- this._registry = {};
175
- } else {
176
- delete this._registry[registrations[i]];
177
- }
135
+ delete this._registry[registrations[i]];
178
136
  }
179
-
180
137
  return registrations.length;
181
138
  }
182
139
 
183
140
  /**
184
141
  * Removes a specific listener from the specified registrations.
185
- *
186
- * @param listener
187
- * @param registrations
188
- * @return {Array} array of registrations removed
189
142
  */
190
143
  removeListenerRegistrations(listener, registrations) {
191
144
  if (!Array.isArray(registrations)) {
192
145
  return [];
193
146
  }
194
147
  const removed = [];
195
-
196
148
  for (let i = 0, len = registrations.length; i < len; i++) {
197
149
  const registration = registrations[i];
198
150
  let subscriptions;
199
-
200
- // get all registrations for this key so we can find our specific listener
201
151
  const registrySubscriptionsSet = this._registry[registration];
202
152
  if (registrySubscriptionsSet) {
203
153
  subscriptions = Array.from(registrySubscriptionsSet);
204
154
  }
205
-
206
155
  if (subscriptions) {
207
156
  for (let j = 0, l = subscriptions.length; j < l; j++) {
208
157
  const subscription = subscriptions[j];
209
- // The subscription may have been removed during this event loop.
210
- // its listener matches the listener in method parameters
211
158
  if (subscription && subscription.listener === listener) {
212
- this._registry[registration].delete(subscription);
159
+ this._registry[registration]?.delete(subscription);
213
160
  subscription.remove();
214
161
  removed.push(registration);
215
162
  this.removeRegistration(registration);
@@ -217,52 +164,39 @@ class DatabaseSyncTree {
217
164
  }
218
165
  }
219
166
  }
220
-
221
167
  return removed;
222
168
  }
223
169
 
224
170
  /**
225
- * Returns an array of all registration keys for the specified path.
226
- *
227
- * @param path
228
- * @return {Array}
171
+ * Returns all registration keys for the specified path.
229
172
  */
230
173
  getRegistrationsByPath(path) {
231
174
  const out = [];
232
175
  const eventKeys = Object.keys(this._tree[path] || {});
233
-
234
176
  for (let i = 0, len = eventKeys.length; i < len; i++) {
235
- Array.prototype.push.apply(out, Object.keys(this._tree[path][eventKeys[i]]));
177
+ Array.prototype.push.apply(out, Object.keys(this._tree[path]?.[eventKeys[i]] || {}));
236
178
  }
237
-
238
179
  return out;
239
180
  }
240
181
 
241
182
  /**
242
- * Returns an array of all registration keys for the specified path and eventType.
243
- *
244
- * @param path
245
- * @param eventType
246
- * @return {Array}
183
+ * Returns all registration keys for the specified path and event type.
247
184
  */
248
185
  getRegistrationsByPathEvent(path, eventType) {
186
+ if (!eventType) {
187
+ return [];
188
+ }
249
189
  if (!this._tree[path]) {
250
190
  return [];
251
191
  }
252
192
  if (!this._tree[path][eventType]) {
253
193
  return [];
254
194
  }
255
-
256
195
  return Object.keys(this._tree[path][eventType]);
257
196
  }
258
197
 
259
198
  /**
260
- * Returns a single registration key for the specified path, eventType, and listener
261
- *
262
- * @param path
263
- * @param eventType
264
- * @param listener
265
- * @return {Array}
199
+ * Returns a single registration key for the specified path, event type, and listener.
266
200
  */
267
201
  getOneByPathEventListener(path, eventType, listener) {
268
202
  if (!this._tree[path]) {
@@ -271,97 +205,81 @@ class DatabaseSyncTree {
271
205
  if (!this._tree[path][eventType]) {
272
206
  return null;
273
207
  }
274
-
275
208
  const registrationsForPathEvent = Object.entries(this._tree[path][eventType]);
276
-
277
209
  for (let i = 0; i < registrationsForPathEvent.length; i++) {
278
210
  const registration = registrationsForPathEvent[i];
279
- if (registration[1] === listener) {
211
+ if (registration?.[1] === listener) {
280
212
  return registration[0];
281
213
  }
282
214
  }
283
-
284
215
  return null;
285
216
  }
286
217
 
287
218
  /**
288
219
  * Register a new listener.
289
- *
290
- * @param registration
291
220
  */
292
221
  addRegistration(registration) {
293
- const { eventRegistrationKey, eventType, listener, once, path } = registration;
294
-
222
+ const {
223
+ eventRegistrationKey,
224
+ eventType,
225
+ listener,
226
+ once,
227
+ path
228
+ } = registration;
295
229
  if (!this._tree[path]) {
296
230
  this._tree[path] = {};
297
231
  }
298
232
  if (!this._tree[path][eventType]) {
299
233
  this._tree[path][eventType] = {};
300
234
  }
301
-
302
235
  this._tree[path][eventType][eventRegistrationKey] = listener;
303
236
  this._reverseLookup[eventRegistrationKey] = registration;
304
-
305
237
  if (once) {
306
238
  const subscription = SharedEventEmitter.addListener(eventRegistrationKey, event => {
307
239
  this._onOnceRemoveRegistration(eventRegistrationKey, listener)(event);
308
240
  subscription.remove();
309
241
  });
310
- } else {
311
- const registration = SharedEventEmitter.addListener(eventRegistrationKey, listener);
312
-
313
- // add this listener registration info to our emitter-key map
314
- // in case we need to identify and remove a specific listener later
315
- const registrations = this._allocate(this._registry, eventRegistrationKey);
316
- registrations.add(registration);
242
+ return eventRegistrationKey;
317
243
  }
318
-
244
+ const emitterSubscription = SharedEventEmitter.addListener(eventRegistrationKey, listener);
245
+ const registrations = this._allocate(this._registry, eventRegistrationKey);
246
+ registrations.add(emitterSubscription);
319
247
  return eventRegistrationKey;
320
248
  }
321
249
 
322
250
  /**
323
- * Remove a registration, if it's not a `once` registration then instructs native
324
- * to also remove the underlying database query listener.
325
- *
326
- * @param registration
327
- * @return {boolean}
251
+ * Remove a registration and unsubscribe the paired native listener when needed.
328
252
  */
329
253
  removeRegistration(registration) {
330
254
  if (!this._reverseLookup[registration]) {
331
255
  return false;
332
256
  }
333
- const { path, eventType, once } = this._reverseLookup[registration];
334
-
257
+ const registrationObj = this._reverseLookup[registration];
258
+ const {
259
+ path,
260
+ eventType,
261
+ once
262
+ } = registrationObj;
335
263
  if (!this._tree[path]) {
336
264
  delete this._reverseLookup[registration];
337
265
  return false;
338
266
  }
339
-
340
267
  if (!this._tree[path][eventType]) {
341
268
  delete this._reverseLookup[registration];
342
269
  return false;
343
270
  }
344
271
 
345
- // we don't want `once` events to notify native as they're already
346
- // automatically unsubscribed on native when the first event is sent
347
- const registrationObj = this._reverseLookup[registration];
348
- if (registrationObj && !once) {
272
+ // `once` registrations are already unsubscribed by native after the first event.
273
+ if (!once) {
349
274
  this.native.off(registrationObj.key, registration);
350
275
  }
351
-
352
276
  delete this._tree[path][eventType][registration];
353
277
  delete this._reverseLookup[registration];
354
-
355
- return !!registrationObj;
278
+ return true;
356
279
  }
357
280
 
358
281
  /**
359
- * Wraps a `once` listener with a new function that self de-registers.
360
- *
361
- * @param registration
362
- * @param listener
363
- * @return {function(...[*])}
364
- * @private
282
+ * Wraps a `once` listener with a function that self-deregisters.
365
283
  */
366
284
  _onOnceRemoveRegistration(registration, listener) {
367
285
  return (...args) => {
@@ -370,5 +288,5 @@ class DatabaseSyncTree {
370
288
  };
371
289
  }
372
290
  }
373
-
374
291
  export default new DatabaseSyncTree();
292
+ //# sourceMappingURL=DatabaseSyncTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createDeprecationProxy","isString","NativeError","SharedEventEmitter","getReactNativeModule","DatabaseDataSnapshot","DatabaseSyncTree","_tree","_reverseLookup","_registry","constructor","addListener","_handleSyncEvent","bind","native","_allocate","registry","eventType","registrations","Set","event","body","error","_handleErrorEvent","_handleValueEvent","eventRegistrationKey","registrationCancellationKey","registration","getRegistration","fromEvent","emit","removeRegistration","key","off","snapshot","previousChildName","data","ref","childData","Object","assign","removeListenersForRegistrations","removeAllListeners","Array","isArray","i","len","length","removeListenerRegistrations","listener","removed","subscriptions","registrySubscriptionsSet","from","j","l","subscription","delete","remove","push","getRegistrationsByPath","path","out","eventKeys","keys","prototype","apply","getRegistrationsByPathEvent","getOneByPathEventListener","registrationsForPathEvent","entries","addRegistration","once","_onOnceRemoveRegistration","emitterSubscription","add","registrationObj","args"],"sourceRoot":"../../lib","sources":["DatabaseSyncTree.ts"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  /*
2
4
  * Copyright (c) 2016-present Invertase Limited & Contributors
3
5
  *
@@ -16,33 +18,31 @@
16
18
  */
17
19
 
18
20
  import { createDeprecationProxy } from '@react-native-firebase/app/dist/module/common';
19
- // To avoid React Native require cycle warnings
20
- let DatabaseReference = null;
21
+ let DatabaseReferenceClass = null;
21
22
  export function provideReferenceClass(databaseReference) {
22
- DatabaseReference = databaseReference;
23
+ DatabaseReferenceClass = databaseReference;
23
24
  }
24
-
25
25
  export default class DatabaseThenableReference {
26
26
  constructor(database, path, promise) {
27
- this._ref = createDeprecationProxy(new DatabaseReference(database, path));
27
+ if (!DatabaseReferenceClass) {
28
+ throw new Error('DatabaseReference class has not been provided.');
29
+ }
30
+ this._ref = createDeprecationProxy(new DatabaseReferenceClass(database, path));
28
31
  this._promise = promise;
29
-
30
32
  return new Proxy(this, {
31
33
  get(target, prop) {
32
34
  if (prop === 'then' || prop === 'catch') {
33
- return target[prop];
35
+ return Reflect.get(target, prop, target);
34
36
  }
35
-
36
- return target._ref[prop];
37
- },
37
+ return Reflect.get(target._ref, prop);
38
+ }
38
39
  });
39
40
  }
40
-
41
41
  get then() {
42
42
  return this._promise.then.bind(this._promise);
43
43
  }
44
-
45
44
  get catch() {
46
45
  return this._promise.catch.bind(this._promise);
47
46
  }
48
47
  }
48
+ //# sourceMappingURL=DatabaseThenableReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createDeprecationProxy","DatabaseReferenceClass","provideReferenceClass","databaseReference","DatabaseThenableReference","constructor","database","path","promise","Error","_ref","_promise","Proxy","get","target","prop","Reflect","then","bind","catch"],"sourceRoot":"../../lib","sources":["DatabaseThenableReference.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,sBAAsB,QAAQ,+CAA+C;AAUtF,IAAIC,sBAA2D,GAAG,IAAI;AAEtE,OAAO,SAASC,qBAAqBA,CAACC,iBAA+C,EAAQ;EAC3FF,sBAAsB,GAAGE,iBAAiB;AAC5C;AAEA,eAAe,MAAMC,yBAAyB,CAG5C;EAIAC,WAAWA,CACTC,QAA0B,EAC1BC,IAAY,EACZC,OAAiD,EACjD;IACA,IAAI,CAACP,sBAAsB,EAAE;MAC3B,MAAM,IAAIQ,KAAK,CAAC,gDAAgD,CAAC;IACnE;IAEA,IAAI,CAACC,IAAI,GAAGV,sBAAsB,CAChC,IAAIC,sBAAsB,CAACK,QAAQ,EAAEC,IAAI,CAC3C,CAAoC;IACpC,IAAI,CAACI,QAAQ,GAAGH,OAAO;IAEvB,OAAO,IAAII,KAAK,CAAC,IAAI,EAAE;MACrBC,GAAGA,CAACC,MAAM,EAAEC,IAAI,EAAE;QAChB,IAAIA,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,OAAO,EAAE;UACvC,OAAOC,OAAO,CAACH,GAAG,CAACC,MAAM,EAAEC,IAAI,EAAED,MAAM,CAAC;QAC1C;QAEA,OAAOE,OAAO,CAACH,GAAG,CAACC,MAAM,CAACJ,IAAI,EAAYK,IAAI,CAAC;MACjD;IACF,CAAC,CAAC;EACJ;EAEA,IAAIE,IAAIA,CAAA,EAAqD;IAC3D,OAAO,IAAI,CAACN,QAAQ,CAACM,IAAI,CAACC,IAAI,CAAC,IAAI,CAACP,QAAQ,CAAC;EAC/C;EAEA,IAAIQ,KAAKA,CAAA,EAAsD;IAC7D,OAAO,IAAI,CAACR,QAAQ,CAACQ,KAAK,CAACD,IAAI,CAAC,IAAI,CAACP,QAAQ,CAAC;EAChD;AACF","ignoreList":[]}