@firebase/firestore 3.4.0 → 3.4.1-canary.0b385f18c

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 (100) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/firestore/compat/index.d.ts +1 -1
  3. package/dist/firestore/src/index/directional_index_byte_encoder.d.ts +24 -0
  4. package/dist/firestore/src/index/firestore_index_value_writer.d.ts +33 -0
  5. package/dist/firestore/src/index/index_byte_encoder.d.ts +14 -0
  6. package/dist/firestore/src/index/ordered_code_writer.d.ts +60 -0
  7. package/dist/firestore/src/lite-api/reference.d.ts +4 -2
  8. package/dist/firestore/src/lite-api/reference_impl.d.ts +5 -0
  9. package/dist/firestore/src/lite-api/transaction.d.ts +4 -0
  10. package/dist/firestore/src/lite-api/write_batch.d.ts +3 -0
  11. package/dist/firestore/src/local/indexeddb_remote_document_cache.d.ts +5 -0
  12. package/dist/firestore/src/model/collections.d.ts +0 -4
  13. package/dist/firestore/src/model/document.d.ts +3 -1
  14. package/dist/firestore/src/model/values.d.ts +3 -0
  15. package/dist/firestore/src/util/byte_string.d.ts +1 -0
  16. package/dist/firestore/src/util/error.d.ts +2 -3
  17. package/dist/firestore/test/unit/index/ordered_code_writer.test.d.ts +1 -0
  18. package/dist/firestore/test/util/helpers.d.ts +1 -0
  19. package/dist/index.d.ts +13 -21
  20. package/dist/index.esm2017.js +2649 -2640
  21. package/dist/index.esm2017.js.map +1 -1
  22. package/dist/index.esm5.js +2640 -2630
  23. package/dist/index.esm5.js.map +1 -1
  24. package/dist/index.node.cjs.js +49 -38
  25. package/dist/index.node.cjs.js.map +1 -1
  26. package/dist/index.node.mjs +50 -35
  27. package/dist/index.node.mjs.map +1 -1
  28. package/dist/index.rn.js +2847 -2838
  29. package/dist/index.rn.js.map +1 -1
  30. package/dist/internal.d.ts +18 -22
  31. package/dist/lite/firestore/compat/index.d.ts +1 -1
  32. package/dist/lite/firestore/src/index/directional_index_byte_encoder.d.ts +24 -0
  33. package/dist/lite/firestore/src/index/firestore_index_value_writer.d.ts +33 -0
  34. package/dist/lite/firestore/src/index/index_byte_encoder.d.ts +14 -0
  35. package/dist/lite/firestore/src/index/ordered_code_writer.d.ts +60 -0
  36. package/dist/lite/firestore/src/lite-api/reference.d.ts +4 -2
  37. package/dist/lite/firestore/src/lite-api/reference_impl.d.ts +5 -0
  38. package/dist/lite/firestore/src/lite-api/transaction.d.ts +4 -0
  39. package/dist/lite/firestore/src/lite-api/write_batch.d.ts +3 -0
  40. package/dist/lite/firestore/src/local/indexeddb_remote_document_cache.d.ts +5 -0
  41. package/dist/lite/firestore/src/model/collections.d.ts +0 -4
  42. package/dist/lite/firestore/src/model/document.d.ts +3 -1
  43. package/dist/lite/firestore/src/model/values.d.ts +3 -0
  44. package/dist/lite/firestore/src/util/byte_string.d.ts +1 -0
  45. package/dist/lite/firestore/src/util/error.d.ts +2 -3
  46. package/dist/lite/firestore/test/unit/index/ordered_code_writer.test.d.ts +1 -0
  47. package/dist/lite/firestore/test/util/helpers.d.ts +1 -0
  48. package/dist/lite/index.browser.esm2017.js +846 -833
  49. package/dist/lite/index.browser.esm2017.js.map +1 -1
  50. package/dist/lite/index.browser.esm5.js +834 -820
  51. package/dist/lite/index.browser.esm5.js.map +1 -1
  52. package/dist/lite/index.d.ts +18 -21
  53. package/dist/lite/index.node.cjs.js +26 -8
  54. package/dist/lite/index.node.cjs.js.map +1 -1
  55. package/dist/lite/index.node.mjs +27 -9
  56. package/dist/lite/index.node.mjs.map +1 -1
  57. package/dist/lite/index.rn.esm2017.js +836 -823
  58. package/dist/lite/index.rn.esm2017.js.map +1 -1
  59. package/dist/lite/internal.d.ts +86 -21
  60. package/dist/lite/packages/firestore/babel-register.d.ts +1 -0
  61. package/dist/lite/packages/firestore/compat/index.d.ts +1 -1
  62. package/dist/lite/packages/firestore/dist/lite/index.browser.esm2017.d.ts +114 -113
  63. package/dist/lite/packages/firestore/src/index/directional_index_byte_encoder.d.ts +24 -0
  64. package/dist/lite/packages/firestore/src/index/firestore_index_value_writer.d.ts +33 -0
  65. package/dist/lite/packages/firestore/src/index/index_byte_encoder.d.ts +14 -0
  66. package/dist/lite/packages/firestore/src/index/ordered_code_writer.d.ts +60 -0
  67. package/dist/lite/packages/firestore/src/lite-api/reference.d.ts +4 -2
  68. package/dist/lite/packages/firestore/src/lite-api/reference_impl.d.ts +5 -0
  69. package/dist/lite/packages/firestore/src/lite-api/transaction.d.ts +4 -0
  70. package/dist/lite/packages/firestore/src/lite-api/write_batch.d.ts +3 -0
  71. package/dist/lite/packages/firestore/src/local/indexeddb_remote_document_cache.d.ts +5 -0
  72. package/dist/lite/packages/firestore/src/model/collections.d.ts +0 -4
  73. package/dist/lite/packages/firestore/src/model/document.d.ts +3 -1
  74. package/dist/lite/packages/firestore/src/model/values.d.ts +3 -0
  75. package/dist/lite/packages/firestore/src/util/byte_string.d.ts +1 -0
  76. package/dist/lite/packages/firestore/src/util/error.d.ts +2 -3
  77. package/dist/lite/packages/firestore/test/unit/index/ordered_code_writer.test.d.ts +1 -0
  78. package/dist/lite/packages/firestore/test/util/helpers.d.ts +1 -0
  79. package/dist/lite/private.d.ts +85 -21
  80. package/dist/packages/firestore/babel-register.d.ts +1 -0
  81. package/dist/packages/firestore/compat/index.d.ts +1 -1
  82. package/dist/packages/firestore/dist/index.esm2017.d.ts +152 -152
  83. package/dist/packages/firestore/src/index/directional_index_byte_encoder.d.ts +24 -0
  84. package/dist/packages/firestore/src/index/firestore_index_value_writer.d.ts +33 -0
  85. package/dist/packages/firestore/src/index/index_byte_encoder.d.ts +14 -0
  86. package/dist/packages/firestore/src/index/ordered_code_writer.d.ts +60 -0
  87. package/dist/packages/firestore/src/lite-api/reference.d.ts +4 -2
  88. package/dist/packages/firestore/src/lite-api/reference_impl.d.ts +5 -0
  89. package/dist/packages/firestore/src/lite-api/transaction.d.ts +4 -0
  90. package/dist/packages/firestore/src/lite-api/write_batch.d.ts +3 -0
  91. package/dist/packages/firestore/src/local/indexeddb_remote_document_cache.d.ts +5 -0
  92. package/dist/packages/firestore/src/model/collections.d.ts +0 -4
  93. package/dist/packages/firestore/src/model/document.d.ts +3 -1
  94. package/dist/packages/firestore/src/model/values.d.ts +3 -0
  95. package/dist/packages/firestore/src/util/byte_string.d.ts +1 -0
  96. package/dist/packages/firestore/src/util/error.d.ts +2 -3
  97. package/dist/packages/firestore/test/unit/index/ordered_code_writer.test.d.ts +1 -0
  98. package/dist/packages/firestore/test/util/helpers.d.ts +1 -0
  99. package/dist/private.d.ts +17 -22
  100. package/package.json +10 -10
@@ -8,18 +8,13 @@ var logger = require('@firebase/logger');
8
8
  var util = require('util');
9
9
  var util$1 = require('@firebase/util');
10
10
  var crypto = require('crypto');
11
- var module$1 = require('module');
12
11
  var grpcJs = require('@grpc/grpc-js');
13
12
  var path = require('path');
14
13
  var url = require('url');
15
14
  var protoLoader = require('@grpc/proto-loader');
16
15
 
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- var module__default = /*#__PURE__*/_interopDefaultLegacy(module$1);
20
-
21
16
  const name = "@firebase/firestore";
22
- const version$1 = "3.4.0";
17
+ const version$1 = "3.4.1-canary.0b385f18c";
23
18
 
24
19
  /**
25
20
  * @license
@@ -72,7 +67,7 @@ User.GOOGLE_CREDENTIALS = new User('google-credentials-uid');
72
67
  User.FIRST_PARTY = new User('first-party-uid');
73
68
  User.MOCK_USER = new User('mock-user');
74
69
 
75
- const version = "9.6.0";
70
+ const version = "9.6.1-canary.0b385f18c";
76
71
 
77
72
  /**
78
73
  * @license
@@ -392,7 +387,7 @@ const Code = {
392
387
  DATA_LOSS: 'data-loss'
393
388
  };
394
389
  /** An error returned by a Firestore operation. */
395
- class FirestoreError extends Error {
390
+ class FirestoreError extends util$1.FirebaseError {
396
391
  /** @hideconstructor */
397
392
  constructor(
398
393
  /**
@@ -403,11 +398,9 @@ class FirestoreError extends Error {
403
398
  * A custom error description.
404
399
  */
405
400
  message) {
406
- super(message);
401
+ super(code, message);
407
402
  this.code = code;
408
403
  this.message = message;
409
- /** The custom name for all FirestoreErrors. */
410
- this.name = 'FirebaseError';
411
404
  // HACK: We write a toString property directly because Error is not a real
412
405
  // class and so inheritance does not work correctly. We could alternatively
413
406
  // do the same "back-door inheritance" trick that FirebaseError does.
@@ -3170,6 +3163,19 @@ class ByteString {
3170
3163
  const binaryString = binaryStringFromUint8Array(array);
3171
3164
  return new ByteString(binaryString);
3172
3165
  }
3166
+ [Symbol.iterator]() {
3167
+ let i = 0;
3168
+ return {
3169
+ next: () => {
3170
+ if (i < this.binaryString.length) {
3171
+ return { value: this.binaryString.charCodeAt(i++), done: false };
3172
+ }
3173
+ else {
3174
+ return { value: undefined, done: true };
3175
+ }
3176
+ }
3177
+ };
3178
+ }
3173
3179
  toBase64() {
3174
3180
  return encodeBase64(this.binaryString);
3175
3181
  }
@@ -3530,6 +3536,9 @@ function typeOrder(value) {
3530
3536
  }
3531
3537
  /** Tests `left` and `right` for equality based on the backend semantics. */
3532
3538
  function valueEquals(left, right) {
3539
+ if (left === right) {
3540
+ return true;
3541
+ }
3533
3542
  const leftType = typeOrder(left);
3534
3543
  const rightType = typeOrder(right);
3535
3544
  if (leftType !== rightType) {
@@ -3620,6 +3629,9 @@ function arrayValueContains(haystack, needle) {
3620
3629
  return ((haystack.values || []).find(v => valueEquals(v, needle)) !== undefined);
3621
3630
  }
3622
3631
  function valueCompare(left, right) {
3632
+ if (left === right) {
3633
+ return 0;
3634
+ }
3623
3635
  const leftType = typeOrder(left);
3624
3636
  const rightType = typeOrder(right);
3625
3637
  if (leftType !== rightType) {
@@ -4191,7 +4203,7 @@ class MutableDocument {
4191
4203
  this.documentState === other.documentState &&
4192
4204
  this.data.isEqual(other.data));
4193
4205
  }
4194
- clone() {
4206
+ mutableCopy() {
4195
4207
  return new MutableDocument(this.key, this.documentType, this.version, this.data.clone(), this.documentState);
4196
4208
  }
4197
4209
  toString() {
@@ -11928,18 +11940,20 @@ function localStoreApplyRemoteEventToLocalCache(localStore, remoteEvent) {
11928
11940
  .next(() => {
11929
11941
  return localStoreImpl.targetCache.addMatchingKeys(txn, change.addedDocuments, targetId);
11930
11942
  }));
11931
- const resumeToken = change.resumeToken;
11932
- // Update the resume token if the change includes one.
11933
- if (resumeToken.approximateByteSize() > 0) {
11934
- const newTargetData = oldTargetData
11935
- .withResumeToken(resumeToken, remoteVersion)
11936
- .withSequenceNumber(txn.currentSequenceNumber);
11937
- newTargetDataByTargetMap = newTargetDataByTargetMap.insert(targetId, newTargetData);
11938
- // Update the target data if there are target changes (or if
11939
- // sufficient time has passed since the last update).
11940
- if (shouldPersistTargetData(oldTargetData, newTargetData, change)) {
11941
- promises.push(localStoreImpl.targetCache.updateTargetData(txn, newTargetData));
11942
- }
11943
+ let newTargetData = oldTargetData.withSequenceNumber(txn.currentSequenceNumber);
11944
+ if (remoteEvent.targetMismatches.has(targetId)) {
11945
+ newTargetData = newTargetData
11946
+ .withResumeToken(ByteString.EMPTY_BYTE_STRING, SnapshotVersion.min())
11947
+ .withLastLimboFreeSnapshotVersion(SnapshotVersion.min());
11948
+ }
11949
+ else if (change.resumeToken.approximateByteSize() > 0) {
11950
+ newTargetData = newTargetData.withResumeToken(change.resumeToken, remoteVersion);
11951
+ }
11952
+ newTargetDataByTargetMap = newTargetDataByTargetMap.insert(targetId, newTargetData);
11953
+ // Update the target data if there are target changes (or if
11954
+ // sufficient time has passed since the last update).
11955
+ if (shouldPersistTargetData(oldTargetData, newTargetData, change)) {
11956
+ promises.push(localStoreImpl.targetCache.updateTargetData(txn, newTargetData));
11943
11957
  }
11944
11958
  });
11945
11959
  let changedDocs = mutableDocumentMap();
@@ -12039,7 +12053,6 @@ documentVersions) {
12039
12053
  * too frequent.
12040
12054
  */
12041
12055
  function shouldPersistTargetData(oldTargetData, newTargetData, change) {
12042
- hardAssert(newTargetData.resumeToken.approximateByteSize() > 0);
12043
12056
  // Always persist target data if we don't already have a resume token.
12044
12057
  if (oldTargetData.resumeToken.approximateByteSize() === 0) {
12045
12058
  return true;
@@ -12876,7 +12889,7 @@ class MemoryRemoteDocumentCacheImpl {
12876
12889
  const previousSize = entry ? entry.size : 0;
12877
12890
  const currentSize = this.sizer(doc);
12878
12891
  this.docs = this.docs.insert(key, {
12879
- document: doc.clone(),
12892
+ document: doc.mutableCopy(),
12880
12893
  size: currentSize,
12881
12894
  readTime
12882
12895
  });
@@ -12899,7 +12912,7 @@ class MemoryRemoteDocumentCacheImpl {
12899
12912
  getEntry(transaction, documentKey) {
12900
12913
  const entry = this.docs.get(documentKey);
12901
12914
  return PersistencePromise.resolve(entry
12902
- ? entry.document.clone()
12915
+ ? entry.document.mutableCopy()
12903
12916
  : MutableDocument.newInvalidDocument(documentKey));
12904
12917
  }
12905
12918
  getEntries(transaction, documentKeys) {
@@ -12907,7 +12920,7 @@ class MemoryRemoteDocumentCacheImpl {
12907
12920
  documentKeys.forEach(documentKey => {
12908
12921
  const entry = this.docs.get(documentKey);
12909
12922
  results = results.insert(documentKey, entry
12910
- ? entry.document.clone()
12923
+ ? entry.document.mutableCopy()
12911
12924
  : MutableDocument.newInvalidDocument(documentKey));
12912
12925
  });
12913
12926
  return PersistencePromise.resolve(results);
@@ -12929,7 +12942,7 @@ class MemoryRemoteDocumentCacheImpl {
12929
12942
  if (!queryMatches(query, document)) {
12930
12943
  continue;
12931
12944
  }
12932
- results = results.insert(document.key, document.clone());
12945
+ results = results.insert(document.key, document.mutableCopy());
12933
12946
  }
12934
12947
  return PersistencePromise.resolve(results);
12935
12948
  }
@@ -14320,11 +14333,9 @@ function nodePromise(action) {
14320
14333
  * See the License for the specific language governing permissions and
14321
14334
  * limitations under the License.
14322
14335
  */
14323
- // This is a hack fix for Node ES modules to use `require`.
14324
- // @ts-ignore To avoid using `--module es2020` flag.
14325
- const require$1 = module__default["default"].createRequire(new (require('url').URL)('file:' + __filename).href);
14326
- // eslint-disable-next-line @typescript-eslint/no-require-imports
14327
- const { version: grpcVersion } = require$1('@grpc/grpc-js/package.json');
14336
+ // TODO: Fetch runtime version from grpc-js/package.json instead
14337
+ // when there's a cleaner way to dynamic require JSON in both Node ESM and CJS
14338
+ const grpcVersion = '1.3.7';
14328
14339
  const LOG_TAG$9 = 'Connection';
14329
14340
  const X_GOOG_API_CLIENT_VALUE = `gl-node/${process.versions.node} fire/${SDK_VERSION} grpc/${grpcVersion}`;
14330
14341
  function createMetadata(databasePath, authToken, appCheckToken, appId) {
@@ -14491,8 +14502,8 @@ class GrpcConnection {
14491
14502
  */
14492
14503
  // __filename and __dirname globals are unavailable in ES modules
14493
14504
  // @ts-ignore To avoid using `--module es2020` flag.
14494
- const __filename$1 = url.fileURLToPath(new (require('url').URL)('file:' + __filename).href);
14495
- const __dirname$1 = path.dirname(__filename$1);
14505
+ const __filenameInESM = url.fileURLToPath(new (require('url').URL)('file:' + __filename).href);
14506
+ const __dirnameInESM = path.dirname(__filenameInESM);
14496
14507
  /** Used by tests so we can match @grpc/proto-loader behavior. */
14497
14508
  const protoLoaderOptions = {
14498
14509
  longs: String,
@@ -14506,7 +14517,7 @@ const protoLoaderOptions = {
14506
14517
  * @returns The GrpcObject representing our protos.
14507
14518
  */
14508
14519
  function loadProtos() {
14509
- const root = path.resolve(__dirname$1, "src/protos" );
14520
+ const root = path.resolve(__dirnameInESM, "src/protos" );
14510
14521
  const firestoreProtoFile = path.join(root, 'google/firestore/v1/firestore.proto');
14511
14522
  const packageDefinition = protoLoader.loadSync(firestoreProtoFile, Object.assign(Object.assign({}, protoLoaderOptions), { includeDirs: [root] }));
14512
14523
  return grpcJs.loadPackageDefinition(packageDefinition);
@@ -20919,7 +20930,7 @@ function registerFirestore(variant, useFetchStreams = true) {
20919
20930
  settings = Object.assign({ useFetchStreams }, settings);
20920
20931
  firestoreInstance._setSettings(settings);
20921
20932
  return firestoreInstance;
20922
- }, "PUBLIC" /* PUBLIC */));
20933
+ }, 'PUBLIC'));
20923
20934
  app.registerVersion(name, version$1, variant);
20924
20935
  // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
20925
20936
  app.registerVersion(name, version$1, 'cjs2017');