@firebase/database 0.8.3-canary.fb90580e5 → 0.8.3

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 (134) hide show
  1. package/dist/index.d.ts +0 -16
  2. package/dist/index.esm.js +34 -163
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.esm2017.js +34 -161
  5. package/dist/index.esm2017.js.map +1 -1
  6. package/dist/index.node.cjs.js +34 -163
  7. package/dist/index.node.cjs.js.map +1 -1
  8. package/dist/src/api/Query.d.ts +0 -2
  9. package/dist/src/core/AuthTokenProvider.d.ts +2 -2
  10. package/dist/src/core/Repo.d.ts +21 -10
  11. package/dist/src/core/RepoManager.d.ts +2 -8
  12. package/dist/src/core/util/NextPushId.d.ts +0 -2
  13. package/dist/src/core/util/util.d.ts +0 -8
  14. package/dist/src/core/view/QueryParams.d.ts +0 -6
  15. package/package.json +13 -16
  16. package/dist/exp/exp/index.d.ts +0 -29
  17. package/dist/exp/index.d.ts +0 -49
  18. package/dist/exp/index.esm.js +0 -15735
  19. package/dist/exp/index.esm.js.map +0 -1
  20. package/dist/exp/index.esm2017.js +0 -15139
  21. package/dist/exp/index.esm2017.js.map +0 -1
  22. package/dist/exp/index.node.cjs.js +0 -15746
  23. package/dist/exp/index.node.cjs.js.map +0 -1
  24. package/dist/exp/index.node.d.ts +0 -83
  25. package/dist/exp/src/api/DataSnapshot.d.ts +0 -99
  26. package/dist/exp/src/api/Database.d.ts +0 -87
  27. package/dist/exp/src/api/Query.d.ts +0 -193
  28. package/dist/exp/src/api/Reference.d.ts +0 -106
  29. package/dist/exp/src/api/TransactionResult.d.ts +0 -30
  30. package/dist/exp/src/api/internal.d.ts +0 -55
  31. package/dist/exp/src/api/onDisconnect.d.ts +0 -60
  32. package/dist/exp/src/api/test_access.d.ts +0 -42
  33. package/dist/exp/src/core/AuthTokenProvider.d.ts +0 -50
  34. package/dist/exp/src/core/CompoundWrite.d.ts +0 -77
  35. package/dist/exp/src/core/PersistentConnection.d.ts +0 -148
  36. package/dist/exp/src/core/ReadonlyRestClient.d.ts +0 -73
  37. package/dist/exp/src/core/Repo.d.ts +0 -121
  38. package/dist/exp/src/core/RepoInfo.d.ts +0 -59
  39. package/dist/exp/src/core/RepoManager.d.ts +0 -78
  40. package/dist/exp/src/core/Repo_transaction.d.ts +0 -33
  41. package/dist/exp/src/core/ServerActions.d.ts +0 -85
  42. package/dist/exp/src/core/SnapshotHolder.d.ts +0 -28
  43. package/dist/exp/src/core/SparseSnapshotTree.d.ts +0 -61
  44. package/dist/exp/src/core/SyncPoint.d.ts +0 -84
  45. package/dist/exp/src/core/SyncTree.d.ts +0 -236
  46. package/dist/exp/src/core/WriteTree.d.ts +0 -295
  47. package/dist/exp/src/core/operation/AckUserWrite.d.ts +0 -42
  48. package/dist/exp/src/core/operation/ListenComplete.d.ts +0 -32
  49. package/dist/exp/src/core/operation/Merge.d.ts +0 -46
  50. package/dist/exp/src/core/operation/Operation.d.ts +0 -78
  51. package/dist/exp/src/core/operation/Overwrite.d.ts +0 -35
  52. package/dist/exp/src/core/snap/ChildrenNode.d.ts +0 -180
  53. package/dist/exp/src/core/snap/IndexMap.d.ts +0 -43
  54. package/dist/exp/src/core/snap/LeafNode.d.ts +0 -107
  55. package/dist/exp/src/core/snap/Node.d.ts +0 -148
  56. package/dist/exp/src/core/snap/childSet.d.ts +0 -34
  57. package/dist/exp/src/core/snap/comparators.d.ts +0 -19
  58. package/dist/exp/src/core/snap/indexes/Index.d.ts +0 -69
  59. package/dist/exp/src/core/snap/indexes/KeyIndex.d.ts +0 -54
  60. package/dist/exp/src/core/snap/indexes/PathIndex.d.ts +0 -54
  61. package/dist/exp/src/core/snap/indexes/PriorityIndex.d.ts +0 -58
  62. package/dist/exp/src/core/snap/indexes/ValueIndex.d.ts +0 -56
  63. package/dist/exp/src/core/snap/nodeFromJSON.d.ts +0 -25
  64. package/dist/exp/src/core/snap/snap.d.ts +0 -29
  65. package/dist/exp/src/core/stats/StatsCollection.d.ts +0 -28
  66. package/dist/exp/src/core/stats/StatsListener.d.ts +0 -31
  67. package/dist/exp/src/core/stats/StatsManager.d.ts +0 -24
  68. package/dist/exp/src/core/stats/StatsReporter.d.ts +0 -33
  69. package/dist/exp/src/core/storage/DOMStorageWrapper.d.ts +0 -55
  70. package/dist/exp/src/core/storage/MemoryStorage.d.ts +0 -29
  71. package/dist/exp/src/core/storage/storage.d.ts +0 -22
  72. package/dist/exp/src/core/util/EventEmitter.d.ts +0 -45
  73. package/dist/exp/src/core/util/ImmutableTree.d.ts +0 -157
  74. package/dist/exp/src/core/util/NextPushId.d.ts +0 -33
  75. package/dist/exp/src/core/util/OnlineMonitor.d.ts +0 -40
  76. package/dist/exp/src/core/util/Path.d.ts +0 -132
  77. package/dist/exp/src/core/util/ServerValues.d.ts +0 -66
  78. package/dist/exp/src/core/util/SortedMap.d.ts +0 -362
  79. package/dist/exp/src/core/util/Tree.d.ts +0 -134
  80. package/dist/exp/src/core/util/VisibilityMonitor.d.ts +0 -30
  81. package/dist/exp/src/core/util/libs/parser.d.ts +0 -37
  82. package/dist/exp/src/core/util/misc.d.ts +0 -19
  83. package/dist/exp/src/core/util/util.d.ts +0 -232
  84. package/dist/exp/src/core/util/validation.d.ts +0 -108
  85. package/dist/exp/src/core/version.d.ts +0 -19
  86. package/dist/exp/src/core/view/CacheNode.d.ts +0 -59
  87. package/dist/exp/src/core/view/Change.d.ts +0 -74
  88. package/dist/exp/src/core/view/ChildChangeAccumulator.d.ts +0 -22
  89. package/dist/exp/src/core/view/CompleteChildSource.d.ts +0 -91
  90. package/dist/exp/src/core/view/Event.d.ts +0 -102
  91. package/dist/exp/src/core/view/EventGenerator.d.ts +0 -77
  92. package/dist/exp/src/core/view/EventQueue.d.ts +0 -99
  93. package/dist/exp/src/core/view/EventRegistration.d.ts +0 -154
  94. package/dist/exp/src/core/view/QueryParams.d.ts +0 -176
  95. package/dist/exp/src/core/view/View.d.ts +0 -97
  96. package/dist/exp/src/core/view/ViewCache.d.ts +0 -70
  97. package/dist/exp/src/core/view/ViewProcessor.d.ts +0 -166
  98. package/dist/exp/src/core/view/filter/IndexedFilter.d.ts +0 -54
  99. package/dist/exp/src/core/view/filter/LimitedFilter.d.ts +0 -94
  100. package/dist/exp/src/core/view/filter/NodeFilter.d.ts +0 -75
  101. package/dist/exp/src/core/view/filter/RangedFilter.d.ts +0 -109
  102. package/dist/exp/src/exp/Database.d.ts +0 -95
  103. package/dist/exp/src/realtime/BrowserPollConnection.d.ts +0 -208
  104. package/dist/exp/src/realtime/Connection.d.ts +0 -119
  105. package/dist/exp/src/realtime/Constants.d.ts +0 -26
  106. package/dist/exp/src/realtime/Transport.d.ts +0 -62
  107. package/dist/exp/src/realtime/TransportManager.d.ts +0 -55
  108. package/dist/exp/src/realtime/WebSocketConnection.d.ts +0 -133
  109. package/dist/exp/src/realtime/polling/PacketReceiver.d.ts +0 -41
  110. package/dist/exp/test/browser/crawler_support.test.d.ts +0 -17
  111. package/dist/exp/test/compound_write.test.d.ts +0 -17
  112. package/dist/exp/test/connection.test.d.ts +0 -17
  113. package/dist/exp/test/database.test.d.ts +0 -17
  114. package/dist/exp/test/datasnapshot.test.d.ts +0 -17
  115. package/dist/exp/test/exp/integration.test.d.ts +0 -17
  116. package/dist/exp/test/helpers/EventAccumulator.d.ts +0 -34
  117. package/dist/exp/test/helpers/events.d.ts +0 -37
  118. package/dist/exp/test/helpers/util.d.ts +0 -50
  119. package/dist/exp/test/info.test.d.ts +0 -17
  120. package/dist/exp/test/node.test.d.ts +0 -17
  121. package/dist/exp/test/order.test.d.ts +0 -17
  122. package/dist/exp/test/order_by.test.d.ts +0 -17
  123. package/dist/exp/test/path.test.d.ts +0 -17
  124. package/dist/exp/test/promise.test.d.ts +0 -17
  125. package/dist/exp/test/pushid.test.d.ts +0 -17
  126. package/dist/exp/test/query.test.d.ts +0 -17
  127. package/dist/exp/test/repoinfo.test.d.ts +0 -17
  128. package/dist/exp/test/servervalues.test.d.ts +0 -17
  129. package/dist/exp/test/sortedmap.test.d.ts +0 -17
  130. package/dist/exp/test/sparsesnapshottree.test.d.ts +0 -17
  131. package/dist/exp/test/transaction.test.d.ts +0 -17
  132. package/dist/src/exp/Database.d.ts +0 -95
  133. package/dist/test/exp/integration.test.d.ts +0 -17
  134. package/dist/test/pushid.test.d.ts +0 -17
@@ -662,14 +662,6 @@ var errorForServerCode = function (code, query) {
662
662
  * @private
663
663
  */
664
664
  var INTEGER_REGEXP_ = new RegExp('^-?(0*)\\d{1,10}$');
665
- /**
666
- * For use in keys, the minimum possible 32-bit integer.
667
- */
668
- var INTEGER_32_MIN = -2147483648;
669
- /**
670
- * For use in kyes, the maximum possible 32-bit integer.
671
- */
672
- var INTEGER_32_MAX = 2147483647;
673
665
  /**
674
666
  * If the string contains a 32-bit integer, return it. Else return null.
675
667
  * @param {!string} str
@@ -678,7 +670,7 @@ var INTEGER_32_MAX = 2147483647;
678
670
  var tryParseInt = function (str) {
679
671
  if (INTEGER_REGEXP_.test(str)) {
680
672
  var intVal = Number(str);
681
- if (intVal >= INTEGER_32_MIN && intVal <= INTEGER_32_MAX) {
673
+ if (intVal >= -2147483648 && intVal <= 2147483647) {
682
674
  return intVal;
683
675
  }
684
676
  }
@@ -1879,11 +1871,6 @@ var TransactionResult = /** @class */ (function () {
1879
1871
  * See the License for the specific language governing permissions and
1880
1872
  * limitations under the License.
1881
1873
  */
1882
- // Modeled after base64 web-safe chars, but ordered by ASCII.
1883
- var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';
1884
- var MIN_PUSH_CHAR = '-';
1885
- var MAX_PUSH_CHAR = 'z';
1886
- var MAX_KEY_LEN = 786;
1887
1874
  /**
1888
1875
  * Fancy ID generator that creates 20-character string identifiers with the
1889
1876
  * following properties:
@@ -1899,6 +1886,8 @@ var MAX_KEY_LEN = 786;
1899
1886
  * in the case of a timestamp collision).
1900
1887
  */
1901
1888
  var nextPushId = (function () {
1889
+ // Modeled after base64 web-safe chars, but ordered by ASCII.
1890
+ var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';
1902
1891
  // Timestamp of last push, used to prevent local collisions if you push twice
1903
1892
  // in one ms.
1904
1893
  var lastPushTime = 0;
@@ -1939,76 +1928,7 @@ var nextPushId = (function () {
1939
1928
  util.assert(id.length === 20, 'nextPushId: Length should be 20.');
1940
1929
  return id;
1941
1930
  };
1942
- })();
1943
- var successor = function (key) {
1944
- if (key === '' + INTEGER_32_MAX) {
1945
- // See https://firebase.google.com/docs/database/web/lists-of-data#data-order
1946
- return MIN_PUSH_CHAR;
1947
- }
1948
- var keyAsInt = tryParseInt(key);
1949
- if (keyAsInt != null) {
1950
- return '' + (keyAsInt + 1);
1951
- }
1952
- var next = new Array(key.length);
1953
- for (var i_1 = 0; i_1 < next.length; i_1++) {
1954
- next[i_1] = key.charAt(i_1);
1955
- }
1956
- if (next.length < MAX_KEY_LEN) {
1957
- next.push(MIN_PUSH_CHAR);
1958
- return next.join('');
1959
- }
1960
- var i = next.length - 1;
1961
- while (i >= 0 && next[i] === MAX_PUSH_CHAR) {
1962
- i--;
1963
- }
1964
- // `successor` was called on the largest possible key, so return the
1965
- // MAX_NAME, which sorts larger than all keys.
1966
- if (i === -1) {
1967
- return MAX_NAME;
1968
- }
1969
- var source = next[i];
1970
- var sourcePlusOne = PUSH_CHARS.charAt(PUSH_CHARS.indexOf(source) + 1);
1971
- next[i] = sourcePlusOne;
1972
- return next.slice(0, i + 1).join('');
1973
- };
1974
- // `key` is assumed to be non-empty.
1975
- var predecessor = function (key) {
1976
- if (key === '' + INTEGER_32_MIN) {
1977
- return MIN_NAME;
1978
- }
1979
- var keyAsInt = tryParseInt(key);
1980
- if (keyAsInt != null) {
1981
- return '' + (keyAsInt - 1);
1982
- }
1983
- var next = new Array(key.length);
1984
- for (var i = 0; i < next.length; i++) {
1985
- next[i] = key.charAt(i);
1986
- }
1987
- // If `key` ends in `MIN_PUSH_CHAR`, the largest key lexicographically
1988
- // smaller than `key`, is `key[0:key.length - 1]`. The next key smaller
1989
- // than that, `predecessor(predecessor(key))`, is
1990
- //
1991
- // `key[0:key.length - 2] + (key[key.length - 1] - 1) + \
1992
- // { MAX_PUSH_CHAR repeated MAX_KEY_LEN - (key.length - 1) times }
1993
- //
1994
- // analogous to increment/decrement for base-10 integers.
1995
- //
1996
- // This works because lexigographic comparison works character-by-character,
1997
- // using length as a tie-breaker if one key is a prefix of the other.
1998
- if (next[next.length - 1] === MIN_PUSH_CHAR) {
1999
- if (next.length === 1) {
2000
- // See https://firebase.google.com/docs/database/web/lists-of-data#orderbykey
2001
- return '' + INTEGER_32_MAX;
2002
- }
2003
- delete next[next.length - 1];
2004
- return next.join('');
2005
- }
2006
- // Replace the last character with it's immediate predecessor, and
2007
- // fill the suffix of the key with MAX_PUSH_CHAR. This is the
2008
- // lexicographically largest possible key smaller than `key`.
2009
- next[next.length - 1] = PUSH_CHARS.charAt(PUSH_CHARS.indexOf(next[next.length - 1]) - 1);
2010
- return next.join('') + MAX_PUSH_CHAR.repeat(MAX_KEY_LEN - next.length);
2011
- };
1931
+ })();
2012
1932
 
2013
1933
  /**
2014
1934
  * @license
@@ -4847,8 +4767,7 @@ var Query = /** @class */ (function () {
4847
4767
  'or equalTo() must be a string.';
4848
4768
  if (params.hasStart()) {
4849
4769
  var startName = params.getIndexStartName();
4850
- if (startName !== MIN_NAME &&
4851
- !(params.hasStartAfter() && startName === MAX_NAME)) {
4770
+ if (startName !== MIN_NAME) {
4852
4771
  throw new Error(tooManyArgsError);
4853
4772
  }
4854
4773
  else if (typeof startNode !== 'string') {
@@ -4857,8 +4776,7 @@ var Query = /** @class */ (function () {
4857
4776
  }
4858
4777
  if (params.hasEnd()) {
4859
4778
  var endName = params.getIndexEndName();
4860
- if (endName !== MAX_NAME &&
4861
- !(params.hasEndBefore() && endName === MIN_NAME)) {
4779
+ if (endName !== MAX_NAME) {
4862
4780
  throw new Error(tooManyArgsError);
4863
4781
  }
4864
4782
  else if (typeof endNode !== 'string') {
@@ -5159,20 +5077,6 @@ var Query = /** @class */ (function () {
5159
5077
  }
5160
5078
  return new Query(this.repo, this.path, newParams, this.orderByCalled_);
5161
5079
  };
5162
- Query.prototype.startAfter = function (value, name) {
5163
- if (value === void 0) { value = null; }
5164
- util.validateArgCount('Query.startAfter', 0, 2, arguments.length);
5165
- validateFirebaseDataArg('Query.startAfter', 1, value, this.path, false);
5166
- validateKey('Query.startAfter', 2, name, true);
5167
- var newParams = this.queryParams_.startAfter(value, name);
5168
- Query.validateLimit_(newParams);
5169
- Query.validateQueryEndpoints_(newParams);
5170
- if (this.queryParams_.hasStart()) {
5171
- throw new Error('Query.startAfter: Starting point was already set (by another call to startAt, startAfter ' +
5172
- 'or equalTo).');
5173
- }
5174
- return new Query(this.repo, this.path, newParams, this.orderByCalled_);
5175
- };
5176
5080
  /**
5177
5081
  * @param {number|string|boolean|null} value
5178
5082
  * @param {?string=} name
@@ -5187,21 +5091,7 @@ var Query = /** @class */ (function () {
5187
5091
  Query.validateLimit_(newParams);
5188
5092
  Query.validateQueryEndpoints_(newParams);
5189
5093
  if (this.queryParams_.hasEnd()) {
5190
- throw new Error('Query.endAt: Ending point was already set (by another call to endAt, endBefore, or ' +
5191
- 'equalTo).');
5192
- }
5193
- return new Query(this.repo, this.path, newParams, this.orderByCalled_);
5194
- };
5195
- Query.prototype.endBefore = function (value, name) {
5196
- if (value === void 0) { value = null; }
5197
- util.validateArgCount('Query.endBefore', 0, 2, arguments.length);
5198
- validateFirebaseDataArg('Query.endBefore', 1, value, this.path, false);
5199
- validateKey('Query.endBefore', 2, name, true);
5200
- var newParams = this.queryParams_.endBefore(value, name);
5201
- Query.validateLimit_(newParams);
5202
- Query.validateQueryEndpoints_(newParams);
5203
- if (this.queryParams_.hasEnd()) {
5204
- throw new Error('Query.endBefore: Ending point was already set (by another call to endAt, endBefore, or ' +
5094
+ throw new Error('Query.endAt: Ending point was already set (by another call to endAt or ' +
5205
5095
  'equalTo).');
5206
5096
  }
5207
5097
  return new Query(this.repo, this.path, newParams, this.orderByCalled_);
@@ -12882,31 +12772,44 @@ var Repo = /** @class */ (function () {
12882
12772
  * The purpose of `getValue` is to return the latest known value
12883
12773
  * satisfying `query`.
12884
12774
  *
12885
- * This method will first check for in-memory cached values
12886
- * belonging to active listeners. If they are found, such values
12887
- * are considered to be the most up-to-date.
12775
+ * If the client is connected, this method will send a request
12776
+ * to the server. If the client is not connected, then either:
12777
+ *
12778
+ * 1. The client was once connected, but not anymore.
12779
+ * 2. The client has never connected, this is the first operation
12780
+ * this repo is handling.
12888
12781
  *
12889
- * If the client is not connected, this method will try to
12890
- * establish a connection and request the value for `query`. If
12891
- * the client is not able to retrieve the query result, it reports
12892
- * an error.
12782
+ * In case (1), it's possible that the client still has an active
12783
+ * listener, with cached data. Since this is the latest known
12784
+ * value satisfying the query, that's what getValue will return.
12785
+ * If there is no cached data, `getValue` surfaces an "offline"
12786
+ * error.
12787
+ *
12788
+ * In case (2), `getValue` will trigger a time-limited connection
12789
+ * attempt. If the client is unable to connect to the server, it
12790
+ * will surface an "offline" error because there cannot be any
12791
+ * cached data. On the other hand, if the client is able to connect,
12792
+ * `getValue` will return the server's value for the query, if one
12793
+ * exists.
12893
12794
  *
12894
12795
  * @param query - The query to surface a value for.
12895
12796
  */
12896
12797
  Repo.prototype.getValue = function (query) {
12897
12798
  var _this = this;
12898
- // Only active queries are cached. There is no persisted cache.
12899
- var cached = this.serverSyncTree_.calcCompleteEventCache(query.path);
12900
- if (!cached.isEmpty()) {
12901
- return Promise.resolve(new DataSnapshot(cached, query.getRef(), query.getQueryParams().getIndex()));
12902
- }
12903
12799
  return this.server_.get(query).then(function (payload) {
12904
12800
  var node = nodeFromJSON$1(payload);
12905
12801
  var events = _this.serverSyncTree_.applyServerOverwrite(query.path, node);
12906
12802
  _this.eventQueue_.raiseEventsAtPath(query.path, events);
12907
12803
  return Promise.resolve(new DataSnapshot(node, query.getRef(), query.getQueryParams().getIndex()));
12908
12804
  }, function (err) {
12909
- _this.log_('get for query ' + util.stringify(query) + ' failed: ' + err);
12805
+ _this.log_('get for query ' +
12806
+ util.stringify(query) +
12807
+ ' falling back to cache after error: ' +
12808
+ err);
12809
+ var cached = _this.serverSyncTree_.calcCompleteEventCache(query.path);
12810
+ if (!cached.isEmpty()) {
12811
+ return Promise.resolve(new DataSnapshot(cached, query.getRef(), query.getQueryParams().getIndex()));
12812
+ }
12910
12813
  return Promise.reject(new Error(err));
12911
12814
  });
12912
12815
  };
@@ -13562,10 +13465,8 @@ var QueryParams = /** @class */ (function () {
13562
13465
  this.limitSet_ = false;
13563
13466
  this.startSet_ = false;
13564
13467
  this.startNameSet_ = false;
13565
- this.startAfterSet_ = false;
13566
13468
  this.endSet_ = false;
13567
13469
  this.endNameSet_ = false;
13568
- this.endBeforeSet_ = false;
13569
13470
  this.limit_ = 0;
13570
13471
  this.viewFrom_ = '';
13571
13472
  this.indexStartValue_ = null;
@@ -13580,12 +13481,6 @@ var QueryParams = /** @class */ (function () {
13580
13481
  QueryParams.prototype.hasStart = function () {
13581
13482
  return this.startSet_;
13582
13483
  };
13583
- QueryParams.prototype.hasStartAfter = function () {
13584
- return this.startAfterSet_;
13585
- };
13586
- QueryParams.prototype.hasEndBefore = function () {
13587
- return this.endBeforeSet_;
13588
- };
13589
13484
  /**
13590
13485
  * @return {boolean} True if it would return from left.
13591
13486
  */
@@ -13752,18 +13647,6 @@ var QueryParams = /** @class */ (function () {
13752
13647
  }
13753
13648
  return newParams;
13754
13649
  };
13755
- QueryParams.prototype.startAfter = function (indexValue, key) {
13756
- var childKey;
13757
- if (key == null) {
13758
- childKey = MAX_NAME;
13759
- }
13760
- else {
13761
- childKey = successor(key);
13762
- }
13763
- var params = this.startAt(indexValue, childKey);
13764
- params.startAfterSet_ = true;
13765
- return params;
13766
- };
13767
13650
  /**
13768
13651
  * @param {*} indexValue
13769
13652
  * @param {?string=} key
@@ -13786,18 +13669,6 @@ var QueryParams = /** @class */ (function () {
13786
13669
  }
13787
13670
  return newParams;
13788
13671
  };
13789
- QueryParams.prototype.endBefore = function (indexValue, key) {
13790
- var childKey;
13791
- if (key == null) {
13792
- childKey = MIN_NAME;
13793
- }
13794
- else {
13795
- childKey = predecessor(key);
13796
- }
13797
- var params = this.endAt(indexValue, childKey);
13798
- params.endBeforeSet_ = true;
13799
- return params;
13800
- };
13801
13672
  /**
13802
13673
  * @param {!Index} index
13803
13674
  * @return {!QueryParams}
@@ -15688,7 +15559,7 @@ var TEST_ACCESS = /*#__PURE__*/Object.freeze({
15688
15559
  });
15689
15560
 
15690
15561
  var name = "@firebase/database";
15691
- var version = "0.8.3-canary.fb90580e5";
15562
+ var version = "0.8.3";
15692
15563
 
15693
15564
  /**
15694
15565
  * @license