@firebase/firestore 3.4.4-canary.2dd99ae2d → 3.4.4-canary.307d019c7
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/dist/firestore/src/api/credentials.d.ts +1 -0
- package/dist/firestore/src/api/snapshot.d.ts +1 -2
- package/dist/firestore/src/core/target.d.ts +8 -4
- package/dist/firestore/src/index/index_byte_encoder.d.ts +18 -1
- package/dist/firestore/src/index/index_entry.d.ts +26 -0
- package/dist/firestore/src/lite-api/query.d.ts +2 -2
- package/dist/firestore/src/local/document_overlay_cache.d.ts +72 -0
- package/dist/firestore/src/local/index_manager.d.ts +52 -0
- package/dist/firestore/src/local/indexeddb_document_overlay_cache.d.ts +45 -0
- package/dist/firestore/src/local/indexeddb_index_manager.d.ts +40 -2
- package/dist/firestore/src/local/indexeddb_persistence.d.ts +6 -4
- package/dist/firestore/src/local/indexeddb_remote_document_cache.d.ts +2 -8
- package/dist/firestore/src/local/indexeddb_schema.d.ts +195 -7
- package/dist/firestore/src/local/local_documents_view.d.ts +0 -1
- package/dist/firestore/src/local/local_serializer.d.ts +18 -2
- package/dist/firestore/src/local/memory_document_overlay_cache.d.ts +37 -0
- package/dist/firestore/src/local/memory_index_manager.d.ts +11 -0
- package/dist/firestore/src/local/memory_persistence.d.ts +6 -2
- package/dist/firestore/src/local/memory_remote_document_cache.d.ts +1 -3
- package/dist/firestore/src/local/persistence.d.ts +8 -2
- package/dist/firestore/src/local/remote_document_cache.d.ts +7 -9
- package/dist/firestore/src/local/simple_db.d.ts +1 -0
- package/dist/firestore/src/model/document_key.d.ts +5 -0
- package/dist/firestore/src/model/field_index.d.ts +2 -2
- package/dist/firestore/src/model/overlay.d.ts +32 -0
- package/dist/firestore/src/model/target_index_matcher.d.ts +70 -0
- package/dist/firestore/src/platform/node/grpc_connection.d.ts +2 -2
- package/dist/firestore/src/platform/node/load_protos.d.ts +2 -2
- package/dist/firestore/src/util/sorted_set.d.ts +18 -0
- package/dist/firestore/test/unit/local/counting_query_engine.d.ts +3 -3
- package/dist/firestore/test/unit/local/document_overlay_cache.test.d.ts +1 -0
- package/dist/firestore/test/unit/local/persistence_test_helpers.d.ts +1 -0
- package/dist/firestore/test/unit/local/test_document_overlay_cache.d.ts +38 -0
- package/dist/firestore/test/unit/local/test_index_manager.d.ts +11 -0
- package/dist/firestore/test/unit/local/test_remote_document_cache.d.ts +4 -2
- package/dist/firestore/test/unit/local/test_remote_document_change_buffer.d.ts +1 -1
- package/dist/firestore/test/unit/model/target_index_matcher.test.d.ts +17 -0
- package/dist/firestore/test/util/helpers.d.ts +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.esm2017.js +4496 -3484
- package/dist/index.esm2017.js.map +1 -1
- package/dist/index.esm5.js +4452 -3556
- package/dist/index.esm5.js.map +1 -1
- package/dist/index.node.cjs.js +1757 -295
- package/dist/index.node.cjs.js.map +1 -1
- package/dist/index.node.mjs +1737 -296
- package/dist/index.node.mjs.map +1 -1
- package/dist/index.rn.js +4508 -3496
- package/dist/index.rn.js.map +1 -1
- package/dist/internal.d.ts +253 -14
- package/dist/lite/firestore/src/api/credentials.d.ts +1 -0
- package/dist/lite/firestore/src/api/snapshot.d.ts +1 -2
- package/dist/lite/firestore/src/core/target.d.ts +8 -4
- package/dist/lite/firestore/src/index/index_byte_encoder.d.ts +18 -1
- package/dist/lite/firestore/src/index/index_entry.d.ts +26 -0
- package/dist/lite/firestore/src/lite-api/query.d.ts +2 -2
- package/dist/lite/firestore/src/local/document_overlay_cache.d.ts +72 -0
- package/dist/lite/firestore/src/local/index_manager.d.ts +52 -0
- package/dist/lite/firestore/src/local/indexeddb_document_overlay_cache.d.ts +45 -0
- package/dist/lite/firestore/src/local/indexeddb_index_manager.d.ts +40 -2
- package/dist/lite/firestore/src/local/indexeddb_persistence.d.ts +6 -4
- package/dist/lite/firestore/src/local/indexeddb_remote_document_cache.d.ts +2 -8
- package/dist/lite/firestore/src/local/indexeddb_schema.d.ts +195 -7
- package/dist/lite/firestore/src/local/local_documents_view.d.ts +0 -1
- package/dist/lite/firestore/src/local/local_serializer.d.ts +18 -2
- package/dist/lite/firestore/src/local/memory_document_overlay_cache.d.ts +37 -0
- package/dist/lite/firestore/src/local/memory_index_manager.d.ts +11 -0
- package/dist/lite/firestore/src/local/memory_persistence.d.ts +6 -2
- package/dist/lite/firestore/src/local/memory_remote_document_cache.d.ts +1 -3
- package/dist/lite/firestore/src/local/persistence.d.ts +8 -2
- package/dist/lite/firestore/src/local/remote_document_cache.d.ts +7 -9
- package/dist/lite/firestore/src/local/simple_db.d.ts +1 -0
- package/dist/lite/firestore/src/model/document_key.d.ts +5 -0
- package/dist/lite/firestore/src/model/field_index.d.ts +2 -2
- package/dist/lite/firestore/src/model/overlay.d.ts +32 -0
- package/dist/lite/firestore/src/model/target_index_matcher.d.ts +70 -0
- package/dist/lite/firestore/src/platform/node/grpc_connection.d.ts +2 -2
- package/dist/lite/firestore/src/platform/node/load_protos.d.ts +2 -2
- package/dist/lite/firestore/src/util/sorted_set.d.ts +18 -0
- package/dist/lite/firestore/test/unit/local/counting_query_engine.d.ts +3 -3
- package/dist/lite/firestore/test/unit/local/document_overlay_cache.test.d.ts +1 -0
- package/dist/lite/firestore/test/unit/local/persistence_test_helpers.d.ts +1 -0
- package/dist/lite/firestore/test/unit/local/test_document_overlay_cache.d.ts +38 -0
- package/dist/lite/firestore/test/unit/local/test_index_manager.d.ts +11 -0
- package/dist/lite/firestore/test/unit/local/test_remote_document_cache.d.ts +4 -2
- package/dist/lite/firestore/test/unit/local/test_remote_document_change_buffer.d.ts +1 -1
- package/dist/lite/firestore/test/unit/model/target_index_matcher.test.d.ts +17 -0
- package/dist/lite/firestore/test/util/helpers.d.ts +1 -1
- package/dist/lite/index.browser.esm2017.js +1155 -1143
- package/dist/lite/index.browser.esm2017.js.map +1 -1
- package/dist/lite/index.browser.esm5.js +355 -342
- package/dist/lite/index.browser.esm5.js.map +1 -1
- package/dist/lite/index.node.cjs.js +47 -29
- package/dist/lite/index.node.cjs.js.map +1 -1
- package/dist/lite/index.node.mjs +47 -29
- package/dist/lite/index.node.mjs.map +1 -1
- package/dist/lite/index.rn.esm2017.js +332 -320
- package/dist/lite/index.rn.esm2017.js.map +1 -1
- package/dist/lite/internal.d.ts +7 -2
- package/dist/lite/packages/firestore/dist/lite/index.browser.esm2017.d.ts +121 -121
- package/dist/lite/packages/firestore/src/api/credentials.d.ts +1 -0
- package/dist/lite/packages/firestore/src/api/snapshot.d.ts +1 -2
- package/dist/lite/packages/firestore/src/core/target.d.ts +8 -4
- package/dist/lite/packages/firestore/src/index/index_byte_encoder.d.ts +18 -1
- package/dist/lite/packages/firestore/src/index/index_entry.d.ts +26 -0
- package/dist/lite/packages/firestore/src/lite-api/query.d.ts +2 -2
- package/dist/lite/packages/firestore/src/local/document_overlay_cache.d.ts +72 -0
- package/dist/lite/packages/firestore/src/local/index_manager.d.ts +52 -0
- package/dist/lite/packages/firestore/src/local/indexeddb_document_overlay_cache.d.ts +45 -0
- package/dist/lite/packages/firestore/src/local/indexeddb_index_manager.d.ts +40 -2
- package/dist/lite/packages/firestore/src/local/indexeddb_persistence.d.ts +6 -4
- package/dist/lite/packages/firestore/src/local/indexeddb_remote_document_cache.d.ts +2 -8
- package/dist/lite/packages/firestore/src/local/indexeddb_schema.d.ts +195 -7
- package/dist/lite/packages/firestore/src/local/local_documents_view.d.ts +0 -1
- package/dist/lite/packages/firestore/src/local/local_serializer.d.ts +18 -2
- package/dist/lite/packages/firestore/src/local/memory_document_overlay_cache.d.ts +37 -0
- package/dist/lite/packages/firestore/src/local/memory_index_manager.d.ts +11 -0
- package/dist/lite/packages/firestore/src/local/memory_persistence.d.ts +6 -2
- package/dist/lite/packages/firestore/src/local/memory_remote_document_cache.d.ts +1 -3
- package/dist/lite/packages/firestore/src/local/persistence.d.ts +8 -2
- package/dist/lite/packages/firestore/src/local/remote_document_cache.d.ts +7 -9
- package/dist/lite/packages/firestore/src/local/simple_db.d.ts +1 -0
- package/dist/lite/packages/firestore/src/model/document_key.d.ts +5 -0
- package/dist/lite/packages/firestore/src/model/field_index.d.ts +2 -2
- package/dist/lite/packages/firestore/src/model/overlay.d.ts +32 -0
- package/dist/lite/packages/firestore/src/model/target_index_matcher.d.ts +70 -0
- package/dist/lite/packages/firestore/src/platform/node/grpc_connection.d.ts +2 -2
- package/dist/lite/packages/firestore/src/platform/node/load_protos.d.ts +2 -2
- package/dist/lite/packages/firestore/src/util/sorted_set.d.ts +18 -0
- package/dist/lite/packages/firestore/test/unit/local/counting_query_engine.d.ts +3 -3
- package/dist/lite/packages/firestore/test/unit/local/document_overlay_cache.test.d.ts +1 -0
- package/dist/lite/packages/firestore/test/unit/local/persistence_test_helpers.d.ts +1 -0
- package/dist/lite/packages/firestore/test/unit/local/test_document_overlay_cache.d.ts +38 -0
- package/dist/lite/packages/firestore/test/unit/local/test_index_manager.d.ts +11 -0
- package/dist/lite/packages/firestore/test/unit/local/test_remote_document_cache.d.ts +4 -2
- package/dist/lite/packages/firestore/test/unit/local/test_remote_document_change_buffer.d.ts +1 -1
- package/dist/lite/packages/firestore/test/unit/model/target_index_matcher.test.d.ts +17 -0
- package/dist/lite/packages/firestore/test/util/helpers.d.ts +1 -1
- package/dist/lite/private.d.ts +2 -2
- package/dist/packages/firestore/dist/index.esm2017.d.ts +189 -186
- package/dist/packages/firestore/src/api/credentials.d.ts +1 -0
- package/dist/packages/firestore/src/api/snapshot.d.ts +1 -2
- package/dist/packages/firestore/src/core/target.d.ts +8 -4
- package/dist/packages/firestore/src/index/index_byte_encoder.d.ts +18 -1
- package/dist/packages/firestore/src/index/index_entry.d.ts +26 -0
- package/dist/packages/firestore/src/lite-api/query.d.ts +2 -2
- package/dist/packages/firestore/src/local/document_overlay_cache.d.ts +72 -0
- package/dist/packages/firestore/src/local/index_manager.d.ts +52 -0
- package/dist/packages/firestore/src/local/indexeddb_document_overlay_cache.d.ts +45 -0
- package/dist/packages/firestore/src/local/indexeddb_index_manager.d.ts +40 -2
- package/dist/packages/firestore/src/local/indexeddb_persistence.d.ts +6 -4
- package/dist/packages/firestore/src/local/indexeddb_remote_document_cache.d.ts +2 -8
- package/dist/packages/firestore/src/local/indexeddb_schema.d.ts +195 -7
- package/dist/packages/firestore/src/local/local_documents_view.d.ts +0 -1
- package/dist/packages/firestore/src/local/local_serializer.d.ts +18 -2
- package/dist/packages/firestore/src/local/memory_document_overlay_cache.d.ts +37 -0
- package/dist/packages/firestore/src/local/memory_index_manager.d.ts +11 -0
- package/dist/packages/firestore/src/local/memory_persistence.d.ts +6 -2
- package/dist/packages/firestore/src/local/memory_remote_document_cache.d.ts +1 -3
- package/dist/packages/firestore/src/local/persistence.d.ts +8 -2
- package/dist/packages/firestore/src/local/remote_document_cache.d.ts +7 -9
- package/dist/packages/firestore/src/local/simple_db.d.ts +1 -0
- package/dist/packages/firestore/src/model/document_key.d.ts +5 -0
- package/dist/packages/firestore/src/model/field_index.d.ts +2 -2
- package/dist/packages/firestore/src/model/overlay.d.ts +32 -0
- package/dist/packages/firestore/src/model/target_index_matcher.d.ts +70 -0
- package/dist/packages/firestore/src/platform/node/grpc_connection.d.ts +2 -2
- package/dist/packages/firestore/src/platform/node/load_protos.d.ts +2 -2
- package/dist/packages/firestore/src/util/sorted_set.d.ts +18 -0
- package/dist/packages/firestore/test/unit/local/counting_query_engine.d.ts +3 -3
- package/dist/packages/firestore/test/unit/local/document_overlay_cache.test.d.ts +1 -0
- package/dist/packages/firestore/test/unit/local/persistence_test_helpers.d.ts +1 -0
- package/dist/packages/firestore/test/unit/local/test_document_overlay_cache.d.ts +38 -0
- package/dist/packages/firestore/test/unit/local/test_index_manager.d.ts +11 -0
- package/dist/packages/firestore/test/unit/local/test_remote_document_cache.d.ts +4 -2
- package/dist/packages/firestore/test/unit/local/test_remote_document_change_buffer.d.ts +1 -1
- package/dist/packages/firestore/test/unit/model/target_index_matcher.test.d.ts +17 -0
- package/dist/packages/firestore/test/util/helpers.d.ts +1 -1
- package/dist/private.d.ts +248 -14
- package/package.json +9 -9
|
@@ -63,7 +63,7 @@ l.MOCK_USER = new l("mock-user");
|
|
|
63
63
|
* See the License for the specific language governing permissions and
|
|
64
64
|
* limitations under the License.
|
|
65
65
|
*/
|
|
66
|
-
let f = "9.6.
|
|
66
|
+
let f = "9.6.6-canary.307d019c7";
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* @license
|
|
@@ -99,26 +99,26 @@ const d = new Logger("@firebase/firestore");
|
|
|
99
99
|
d.setLogLevel(t);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
function m(t, ...
|
|
102
|
+
function m(t, ...e) {
|
|
103
103
|
if (d.logLevel <= LogLevel.DEBUG) {
|
|
104
|
-
const
|
|
105
|
-
d.debug(`Firestore (${f}): ${t}`, ...
|
|
104
|
+
const n = e.map(_);
|
|
105
|
+
d.debug(`Firestore (${f}): ${t}`, ...n);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
function p(t, ...
|
|
109
|
+
function p(t, ...e) {
|
|
110
110
|
if (d.logLevel <= LogLevel.ERROR) {
|
|
111
|
-
const
|
|
112
|
-
d.error(`Firestore (${f}): ${t}`, ...
|
|
111
|
+
const n = e.map(_);
|
|
112
|
+
d.error(`Firestore (${f}): ${t}`, ...n);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
117
|
* @internal
|
|
118
|
-
*/ function y(t, ...
|
|
118
|
+
*/ function y(t, ...e) {
|
|
119
119
|
if (d.logLevel <= LogLevel.WARN) {
|
|
120
|
-
const
|
|
121
|
-
d.warn(`Firestore (${f}): ${t}`, ...
|
|
120
|
+
const n = e.map(_);
|
|
121
|
+
d.warn(`Firestore (${f}): ${t}`, ...n);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
|
|
@@ -127,8 +127,8 @@ function p(t, ...n) {
|
|
|
127
127
|
*/ function _(t) {
|
|
128
128
|
if ("string" == typeof t) return t;
|
|
129
129
|
try {
|
|
130
|
-
return
|
|
131
|
-
} catch (
|
|
130
|
+
return e = t, JSON.stringify(e);
|
|
131
|
+
} catch (e) {
|
|
132
132
|
// Converting to JSON failed, just log the object directly
|
|
133
133
|
return t;
|
|
134
134
|
}
|
|
@@ -149,7 +149,7 @@ function p(t, ...n) {
|
|
|
149
149
|
* limitations under the License.
|
|
150
150
|
*/
|
|
151
151
|
/** Formats an object as a JSON string, suitable for logging. */
|
|
152
|
-
var
|
|
152
|
+
var e;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
/**
|
|
@@ -178,11 +178,11 @@ function p(t, ...n) {
|
|
|
178
178
|
*/ function g(t = "Unexpected state") {
|
|
179
179
|
// Log the failure in addition to throw an exception, just in case the
|
|
180
180
|
// exception is swallowed.
|
|
181
|
-
const
|
|
181
|
+
const e = `FIRESTORE (${f}) INTERNAL ASSERTION FAILED: ` + t;
|
|
182
182
|
// NOTE: We don't use FirestoreError here because these are internal failures
|
|
183
183
|
// that cannot be handled by the user. (Also it would create a circular
|
|
184
184
|
// dependency between the error and assert modules which doesn't work.)
|
|
185
|
-
throw p(
|
|
185
|
+
throw p(e), new Error(e);
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
/**
|
|
@@ -190,7 +190,7 @@ function p(t, ...n) {
|
|
|
190
190
|
* given message if it did.
|
|
191
191
|
*
|
|
192
192
|
* Messages are stripped in production builds.
|
|
193
|
-
*/ function v(t,
|
|
193
|
+
*/ function v(t, e) {
|
|
194
194
|
t || g();
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -199,7 +199,7 @@ function p(t, ...n) {
|
|
|
199
199
|
* instance of `T` before casting.
|
|
200
200
|
*/ function b(t,
|
|
201
201
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
202
|
-
|
|
202
|
+
e) {
|
|
203
203
|
return t;
|
|
204
204
|
}
|
|
205
205
|
|
|
@@ -230,8 +230,8 @@ n) {
|
|
|
230
230
|
/**
|
|
231
231
|
* A custom error description.
|
|
232
232
|
*/
|
|
233
|
-
|
|
234
|
-
super(t,
|
|
233
|
+
e) {
|
|
234
|
+
super(t, e), this.code = t, this.message = e,
|
|
235
235
|
// HACK: We write a toString property directly because Error is not a real
|
|
236
236
|
// class and so inheritance does not work correctly. We could alternatively
|
|
237
237
|
// do the same "back-door inheritance" trick that FirebaseError does.
|
|
@@ -256,8 +256,8 @@ n) {
|
|
|
256
256
|
* limitations under the License.
|
|
257
257
|
*/ class k {
|
|
258
258
|
constructor() {
|
|
259
|
-
this.promise = new Promise(((t,
|
|
260
|
-
this.resolve = t, this.reject =
|
|
259
|
+
this.promise = new Promise(((t, e) => {
|
|
260
|
+
this.resolve = t, this.reject = e;
|
|
261
261
|
}));
|
|
262
262
|
}
|
|
263
263
|
}
|
|
@@ -278,8 +278,8 @@ n) {
|
|
|
278
278
|
* See the License for the specific language governing permissions and
|
|
279
279
|
* limitations under the License.
|
|
280
280
|
*/ class j {
|
|
281
|
-
constructor(t,
|
|
282
|
-
this.user =
|
|
281
|
+
constructor(t, e) {
|
|
282
|
+
this.user = e, this.type = "OAuth", this.headers = new Map, this.headers.set("Authorization", `Bearer ${t}`);
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
|
|
@@ -291,9 +291,9 @@ n) {
|
|
|
291
291
|
return Promise.resolve(null);
|
|
292
292
|
}
|
|
293
293
|
invalidateToken() {}
|
|
294
|
-
start(t,
|
|
294
|
+
start(t, e) {
|
|
295
295
|
// Fire with initial user.
|
|
296
|
-
t.enqueueRetryable((() =>
|
|
296
|
+
t.enqueueRetryable((() => e(l.UNAUTHENTICATED)));
|
|
297
297
|
}
|
|
298
298
|
shutdown() {}
|
|
299
299
|
}
|
|
@@ -315,10 +315,10 @@ n) {
|
|
|
315
315
|
return Promise.resolve(this.token);
|
|
316
316
|
}
|
|
317
317
|
invalidateToken() {}
|
|
318
|
-
start(t,
|
|
319
|
-
this.changeListener =
|
|
318
|
+
start(t, e) {
|
|
319
|
+
this.changeListener = e,
|
|
320
320
|
// Fire with initial user.
|
|
321
|
-
t.enqueueRetryable((() =>
|
|
321
|
+
t.enqueueRetryable((() => e(this.token.user)));
|
|
322
322
|
}
|
|
323
323
|
shutdown() {
|
|
324
324
|
this.changeListener = null;
|
|
@@ -336,7 +336,7 @@ n) {
|
|
|
336
336
|
new j(t.accessToken, new l(this.auth.getUid()))) : null)) : Promise.resolve(null);
|
|
337
337
|
}
|
|
338
338
|
invalidateToken() {}
|
|
339
|
-
start(t,
|
|
339
|
+
start(t, e) {}
|
|
340
340
|
shutdown() {}
|
|
341
341
|
}
|
|
342
342
|
|
|
@@ -347,10 +347,10 @@ n) {
|
|
|
347
347
|
* recover from unauthenticated errors (see b/33147818 for context), but it's
|
|
348
348
|
* safer to keep the implementation as-is.
|
|
349
349
|
*/ class G {
|
|
350
|
-
constructor(t,
|
|
351
|
-
this.type = "FirstParty", this.user = l.FIRST_PARTY, this.headers = new Map, this.headers.set("X-Goog-AuthUser",
|
|
350
|
+
constructor(t, e, n) {
|
|
351
|
+
this.type = "FirstParty", this.user = l.FIRST_PARTY, this.headers = new Map, this.headers.set("X-Goog-AuthUser", e);
|
|
352
352
|
const r = t.auth.getAuthHeaderValueForFirstParty([]);
|
|
353
|
-
r && this.headers.set("Authorization", r),
|
|
353
|
+
r && this.headers.set("Authorization", r), n && this.headers.set("X-Goog-Iam-Authorization-Token", n);
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
|
|
@@ -359,15 +359,15 @@ n) {
|
|
|
359
359
|
* to authenticate the user, using technique that is only available
|
|
360
360
|
* to applications hosted by Google.
|
|
361
361
|
*/ class Q {
|
|
362
|
-
constructor(t,
|
|
363
|
-
this.t = t, this.i =
|
|
362
|
+
constructor(t, e, n) {
|
|
363
|
+
this.t = t, this.i = e, this.o = n;
|
|
364
364
|
}
|
|
365
365
|
getToken() {
|
|
366
366
|
return Promise.resolve(new G(this.t, this.i, this.o));
|
|
367
367
|
}
|
|
368
|
-
start(t,
|
|
368
|
+
start(t, e) {
|
|
369
369
|
// Fire with initial uid.
|
|
370
|
-
t.enqueueRetryable((() =>
|
|
370
|
+
t.enqueueRetryable((() => e(l.FIRST_PARTY)));
|
|
371
371
|
}
|
|
372
372
|
shutdown() {}
|
|
373
373
|
invalidateToken() {}
|
|
@@ -390,7 +390,7 @@ class W {
|
|
|
390
390
|
new W(t.token)) : null)) : Promise.resolve(null);
|
|
391
391
|
}
|
|
392
392
|
invalidateToken() {}
|
|
393
|
-
start(t,
|
|
393
|
+
start(t, e) {}
|
|
394
394
|
shutdown() {}
|
|
395
395
|
}
|
|
396
396
|
|
|
@@ -432,8 +432,8 @@ class H {
|
|
|
432
432
|
* @param useFetchStreams Whether to use the Fetch API instead of
|
|
433
433
|
* XMLHTTPRequest
|
|
434
434
|
*/
|
|
435
|
-
constructor(t,
|
|
436
|
-
this.databaseId = t, this.appId =
|
|
435
|
+
constructor(t, e, n, r, s, i, o, u) {
|
|
436
|
+
this.databaseId = t, this.appId = e, this.persistenceKey = n, this.host = r, this.ssl = s,
|
|
437
437
|
this.forceLongPolling = i, this.autoDetectLongPolling = o, this.useFetchStreams = u;
|
|
438
438
|
}
|
|
439
439
|
}
|
|
@@ -444,8 +444,8 @@ class H {
|
|
|
444
444
|
* @internal
|
|
445
445
|
*/
|
|
446
446
|
class K {
|
|
447
|
-
constructor(t,
|
|
448
|
-
this.projectId = t, this.database =
|
|
447
|
+
constructor(t, e) {
|
|
448
|
+
this.projectId = t, this.database = e || "(default)";
|
|
449
449
|
}
|
|
450
450
|
static empty() {
|
|
451
451
|
return new K("", "");
|
|
@@ -478,9 +478,9 @@ class K {
|
|
|
478
478
|
* Path represents an ordered sequence of string segments.
|
|
479
479
|
*/
|
|
480
480
|
class J {
|
|
481
|
-
constructor(t,
|
|
482
|
-
void 0 ===
|
|
483
|
-
this.segments = t, this.offset =
|
|
481
|
+
constructor(t, e, n) {
|
|
482
|
+
void 0 === e ? e = 0 : e > t.length && g(), void 0 === n ? n = t.length - e : n > t.length - e && g(),
|
|
483
|
+
this.segments = t, this.offset = e, this.len = n;
|
|
484
484
|
}
|
|
485
485
|
get length() {
|
|
486
486
|
return this.len;
|
|
@@ -489,10 +489,10 @@ class J {
|
|
|
489
489
|
return 0 === J.comparator(this, t);
|
|
490
490
|
}
|
|
491
491
|
child(t) {
|
|
492
|
-
const
|
|
492
|
+
const e = this.segments.slice(this.offset, this.limit());
|
|
493
493
|
return t instanceof J ? t.forEach((t => {
|
|
494
|
-
|
|
495
|
-
})) :
|
|
494
|
+
e.push(t);
|
|
495
|
+
})) : e.push(t), this.construct(e);
|
|
496
496
|
}
|
|
497
497
|
/** The index of one past the last segment of the path. */ limit() {
|
|
498
498
|
return this.offset + this.length;
|
|
@@ -517,28 +517,28 @@ class J {
|
|
|
517
517
|
}
|
|
518
518
|
isPrefixOf(t) {
|
|
519
519
|
if (t.length < this.length) return !1;
|
|
520
|
-
for (let
|
|
520
|
+
for (let e = 0; e < this.length; e++) if (this.get(e) !== t.get(e)) return !1;
|
|
521
521
|
return !0;
|
|
522
522
|
}
|
|
523
523
|
isImmediateParentOf(t) {
|
|
524
524
|
if (this.length + 1 !== t.length) return !1;
|
|
525
|
-
for (let
|
|
525
|
+
for (let e = 0; e < this.length; e++) if (this.get(e) !== t.get(e)) return !1;
|
|
526
526
|
return !0;
|
|
527
527
|
}
|
|
528
528
|
forEach(t) {
|
|
529
|
-
for (let
|
|
529
|
+
for (let e = this.offset, n = this.limit(); e < n; e++) t(this.segments[e]);
|
|
530
530
|
}
|
|
531
531
|
toArray() {
|
|
532
532
|
return this.segments.slice(this.offset, this.limit());
|
|
533
533
|
}
|
|
534
|
-
static comparator(t,
|
|
535
|
-
const
|
|
536
|
-
for (let r = 0; r <
|
|
537
|
-
const
|
|
538
|
-
if (
|
|
539
|
-
if (
|
|
534
|
+
static comparator(t, e) {
|
|
535
|
+
const n = Math.min(t.length, e.length);
|
|
536
|
+
for (let r = 0; r < n; r++) {
|
|
537
|
+
const n = t.get(r), s = e.get(r);
|
|
538
|
+
if (n < s) return -1;
|
|
539
|
+
if (n > s) return 1;
|
|
540
540
|
}
|
|
541
|
-
return t.length <
|
|
541
|
+
return t.length < e.length ? -1 : t.length > e.length ? 1 : 0;
|
|
542
542
|
}
|
|
543
543
|
}
|
|
544
544
|
|
|
@@ -548,8 +548,8 @@ class J {
|
|
|
548
548
|
*
|
|
549
549
|
* @internal
|
|
550
550
|
*/ class X extends J {
|
|
551
|
-
construct(t,
|
|
552
|
-
return new X(t,
|
|
551
|
+
construct(t, e, n) {
|
|
552
|
+
return new X(t, e, n);
|
|
553
553
|
}
|
|
554
554
|
canonicalString() {
|
|
555
555
|
// NOTE: The client is ignorant of any path segments containing escape
|
|
@@ -568,13 +568,13 @@ class J {
|
|
|
568
568
|
// NOTE: The client is ignorant of any path segments containing escape
|
|
569
569
|
// sequences (e.g. __id123__) and just passes them through raw (they exist
|
|
570
570
|
// for legacy reasons and should not be used frequently).
|
|
571
|
-
const
|
|
572
|
-
for (const
|
|
573
|
-
if (
|
|
571
|
+
const e = [];
|
|
572
|
+
for (const n of t) {
|
|
573
|
+
if (n.indexOf("//") >= 0) throw new U(A, `Invalid segment (${n}). Paths must not contain // in them.`);
|
|
574
574
|
// Strip leading and traling slashed.
|
|
575
|
-
|
|
575
|
+
e.push(...n.split("/").filter((t => t.length > 0)));
|
|
576
576
|
}
|
|
577
|
-
return new X(
|
|
577
|
+
return new X(e);
|
|
578
578
|
}
|
|
579
579
|
static emptyPath() {
|
|
580
580
|
return new X([]);
|
|
@@ -587,8 +587,8 @@ const Z = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
|
|
|
587
587
|
* A dot-separated path for navigating sub-objects within a document.
|
|
588
588
|
* @internal
|
|
589
589
|
*/ class tt extends J {
|
|
590
|
-
construct(t,
|
|
591
|
-
return new tt(t,
|
|
590
|
+
construct(t, e, n) {
|
|
591
|
+
return new tt(t, e, n);
|
|
592
592
|
}
|
|
593
593
|
/**
|
|
594
594
|
* Returns true if the string could be used as a segment in a field path
|
|
@@ -623,24 +623,24 @@ const Z = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
|
|
|
623
623
|
* TODO(b/37244157): we should make this more strict. Right now, it allows
|
|
624
624
|
* non-identifier path components, even if they aren't escaped.
|
|
625
625
|
*/ static fromServerFormat(t) {
|
|
626
|
-
const
|
|
627
|
-
let
|
|
626
|
+
const e = [];
|
|
627
|
+
let n = "", r = 0;
|
|
628
628
|
const s = () => {
|
|
629
|
-
if (0 ===
|
|
630
|
-
|
|
629
|
+
if (0 === n.length) throw new U(A, `Invalid field path (${t}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);
|
|
630
|
+
e.push(n), n = "";
|
|
631
631
|
};
|
|
632
632
|
let i = !1;
|
|
633
633
|
for (;r < t.length; ) {
|
|
634
|
-
const
|
|
635
|
-
if ("\\" ===
|
|
634
|
+
const e = t[r];
|
|
635
|
+
if ("\\" === e) {
|
|
636
636
|
if (r + 1 === t.length) throw new U(A, "Path has trailing escape character: " + t);
|
|
637
|
-
const
|
|
638
|
-
if ("\\" !==
|
|
639
|
-
|
|
640
|
-
} else "`" ===
|
|
637
|
+
const e = t[r + 1];
|
|
638
|
+
if ("\\" !== e && "." !== e && "`" !== e) throw new U(A, "Path has invalid escape sequence: " + t);
|
|
639
|
+
n += e, r += 2;
|
|
640
|
+
} else "`" === e ? (i = !i, r++) : "." !== e || i ? (n += e, r++) : (s(), r++);
|
|
641
641
|
}
|
|
642
642
|
if (s(), i) throw new U(A, "Unterminated ` in path: " + t);
|
|
643
|
-
return new tt(
|
|
643
|
+
return new tt(e);
|
|
644
644
|
}
|
|
645
645
|
static emptyPath() {
|
|
646
646
|
return new tt([]);
|
|
@@ -665,30 +665,39 @@ const Z = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
|
|
|
665
665
|
*/
|
|
666
666
|
/**
|
|
667
667
|
* @internal
|
|
668
|
-
*/ class
|
|
668
|
+
*/ class et {
|
|
669
669
|
constructor(t) {
|
|
670
670
|
this.path = t;
|
|
671
671
|
}
|
|
672
672
|
static fromPath(t) {
|
|
673
|
-
return new
|
|
673
|
+
return new et(X.fromString(t));
|
|
674
674
|
}
|
|
675
675
|
static fromName(t) {
|
|
676
|
-
return new
|
|
676
|
+
return new et(X.fromString(t).popFirst(5));
|
|
677
677
|
}
|
|
678
678
|
static empty() {
|
|
679
|
-
return new
|
|
679
|
+
return new et(X.emptyPath());
|
|
680
|
+
}
|
|
681
|
+
get collectionGroup() {
|
|
682
|
+
return this.path.popLast().lastSegment();
|
|
680
683
|
}
|
|
681
684
|
/** Returns true if the document is in the specified collectionId. */ hasCollectionId(t) {
|
|
682
685
|
return this.path.length >= 2 && this.path.get(this.path.length - 2) === t;
|
|
683
686
|
}
|
|
687
|
+
/** Returns the collection group (i.e. the name of the parent collection) for this key. */ getCollectionGroup() {
|
|
688
|
+
return this.path.get(this.path.length - 2);
|
|
689
|
+
}
|
|
690
|
+
/** Returns the fully qualified path to the parent collection. */ getCollectionPath() {
|
|
691
|
+
return this.path.popLast();
|
|
692
|
+
}
|
|
684
693
|
isEqual(t) {
|
|
685
694
|
return null !== t && 0 === X.comparator(this.path, t.path);
|
|
686
695
|
}
|
|
687
696
|
toString() {
|
|
688
697
|
return this.path.toString();
|
|
689
698
|
}
|
|
690
|
-
static comparator(t,
|
|
691
|
-
return X.comparator(t.path,
|
|
699
|
+
static comparator(t, e) {
|
|
700
|
+
return X.comparator(t.path, e.path);
|
|
692
701
|
}
|
|
693
702
|
static isDocumentKey(t) {
|
|
694
703
|
return t.length % 2 == 0;
|
|
@@ -699,7 +708,7 @@ const Z = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
|
|
|
699
708
|
* @param segments - The segments of the path to the document
|
|
700
709
|
* @returns A new instance of DocumentKey
|
|
701
710
|
*/ static fromSegments(t) {
|
|
702
|
-
return new
|
|
711
|
+
return new et(new X(t.slice()));
|
|
703
712
|
}
|
|
704
713
|
}
|
|
705
714
|
|
|
@@ -718,8 +727,8 @@ const Z = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
|
|
|
718
727
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
719
728
|
* See the License for the specific language governing permissions and
|
|
720
729
|
* limitations under the License.
|
|
721
|
-
*/ function
|
|
722
|
-
if (!
|
|
730
|
+
*/ function nt(t, e, n) {
|
|
731
|
+
if (!n) throw new U(A, `Function ${t}() cannot be called with an empty ${e}.`);
|
|
723
732
|
}
|
|
724
733
|
|
|
725
734
|
/**
|
|
@@ -731,14 +740,14 @@ const Z = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
|
|
|
731
740
|
* an even numbers of segments).
|
|
732
741
|
*/
|
|
733
742
|
function rt(t) {
|
|
734
|
-
if (!
|
|
743
|
+
if (!et.isDocumentKey(t)) throw new U(A, `Invalid document reference. Document references must have an even number of segments, but ${t} has ${t.length}.`);
|
|
735
744
|
}
|
|
736
745
|
|
|
737
746
|
/**
|
|
738
747
|
* Validates that `path` refers to a collection (indicated by the fact it
|
|
739
748
|
* contains an odd numbers of segments).
|
|
740
749
|
*/ function st(t) {
|
|
741
|
-
if (
|
|
750
|
+
if (et.isDocumentKey(t)) throw new U(A, `Invalid collection reference. Collection references must have an odd number of segments, but ${t} has ${t.length}.`);
|
|
742
751
|
}
|
|
743
752
|
|
|
744
753
|
/**
|
|
@@ -755,7 +764,7 @@ function it(t) {
|
|
|
755
764
|
if ("object" == typeof t) {
|
|
756
765
|
if (t instanceof Array) return "an array";
|
|
757
766
|
{
|
|
758
|
-
const
|
|
767
|
+
const e =
|
|
759
768
|
/** try to get the constructor name for an object. */
|
|
760
769
|
function(t) {
|
|
761
770
|
if (t.constructor) return t.constructor.name;
|
|
@@ -769,7 +778,7 @@ function it(t) {
|
|
|
769
778
|
* arguments passed to the public API.
|
|
770
779
|
* @internal
|
|
771
780
|
*/ (t);
|
|
772
|
-
return
|
|
781
|
+
return e ? `a custom ${e} object` : "an object";
|
|
773
782
|
}
|
|
774
783
|
}
|
|
775
784
|
return "function" == typeof t ? "a function" : g();
|
|
@@ -777,22 +786,22 @@ function it(t) {
|
|
|
777
786
|
|
|
778
787
|
function ot(t,
|
|
779
788
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
780
|
-
|
|
789
|
+
e) {
|
|
781
790
|
if ("_delegate" in t && (
|
|
782
791
|
// Unwrap Compat types
|
|
783
792
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
784
|
-
t = t._delegate), !(t instanceof
|
|
785
|
-
if (
|
|
793
|
+
t = t._delegate), !(t instanceof e)) {
|
|
794
|
+
if (e.name === t.constructor.name) throw new U(A, "Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");
|
|
786
795
|
{
|
|
787
|
-
const
|
|
788
|
-
throw new U(A, `Expected type '${
|
|
796
|
+
const n = it(t);
|
|
797
|
+
throw new U(A, `Expected type '${e.name}', but it was: ${n}`);
|
|
789
798
|
}
|
|
790
799
|
}
|
|
791
800
|
return t;
|
|
792
801
|
}
|
|
793
802
|
|
|
794
|
-
function ut(t,
|
|
795
|
-
if (
|
|
803
|
+
function ut(t, e) {
|
|
804
|
+
if (e <= 0) throw new U(A, `Function ${t}() requires a positive number, but it was: ${e}.`);
|
|
796
805
|
}
|
|
797
806
|
|
|
798
807
|
/**
|
|
@@ -999,58 +1008,58 @@ class wt extends
|
|
|
999
1008
|
class {
|
|
1000
1009
|
constructor(t) {
|
|
1001
1010
|
this.databaseInfo = t, this.databaseId = t.databaseId;
|
|
1002
|
-
const
|
|
1003
|
-
this.h =
|
|
1011
|
+
const e = t.ssl ? "https" : "http";
|
|
1012
|
+
this.h = e + "://" + t.host, this.l = "projects/" + this.databaseId.projectId + "/databases/" + this.databaseId.database + "/documents";
|
|
1004
1013
|
}
|
|
1005
|
-
m(t,
|
|
1006
|
-
const i = this.p(t,
|
|
1007
|
-
m("RestConnection", "Sending: ", i,
|
|
1014
|
+
m(t, e, n, r, s) {
|
|
1015
|
+
const i = this.p(t, e);
|
|
1016
|
+
m("RestConnection", "Sending: ", i, n);
|
|
1008
1017
|
const o = {};
|
|
1009
|
-
return this.g(o, r, s), this.v(t, i, o,
|
|
1010
|
-
t)), (
|
|
1011
|
-
throw y("RestConnection", `${t} failed with error: `,
|
|
1012
|
-
|
|
1018
|
+
return this.g(o, r, s), this.v(t, i, o, n).then((t => (m("RestConnection", "Received: ", t),
|
|
1019
|
+
t)), (e => {
|
|
1020
|
+
throw y("RestConnection", `${t} failed with error: `, e, "url: ", i, "request:", n),
|
|
1021
|
+
e;
|
|
1013
1022
|
}));
|
|
1014
1023
|
}
|
|
1015
|
-
T(t,
|
|
1024
|
+
T(t, e, n, r, s) {
|
|
1016
1025
|
// The REST API automatically aggregates all of the streamed results, so we
|
|
1017
1026
|
// can just use the normal invoke() method.
|
|
1018
|
-
return this.m(t,
|
|
1027
|
+
return this.m(t, e, n, r, s);
|
|
1019
1028
|
}
|
|
1020
1029
|
/**
|
|
1021
1030
|
* Modifies the headers for a request, adding any authorization token if
|
|
1022
1031
|
* present and any additional headers for the request.
|
|
1023
|
-
*/ g(t,
|
|
1032
|
+
*/ g(t, e, n) {
|
|
1024
1033
|
t["X-Goog-Api-Client"] = "gl-js/ fire/" + f,
|
|
1025
1034
|
// Content-Type: text/plain will avoid preflight requests which might
|
|
1026
1035
|
// mess with CORS and redirects by proxies. If we add custom headers
|
|
1027
1036
|
// we will need to change this code to potentially use the $httpOverwrite
|
|
1028
1037
|
// parameter supported by ESF to avoid triggering preflight requests.
|
|
1029
1038
|
t["Content-Type"] = "text/plain", this.databaseInfo.appId && (t["X-Firebase-GMPID"] = this.databaseInfo.appId),
|
|
1030
|
-
|
|
1039
|
+
e && e.headers.forEach(((e, n) => t[n] = e)), n && n.headers.forEach(((e, n) => t[n] = e));
|
|
1031
1040
|
}
|
|
1032
|
-
p(t,
|
|
1033
|
-
const
|
|
1034
|
-
return `${this.h}/v1/${
|
|
1041
|
+
p(t, e) {
|
|
1042
|
+
const n = ht[t];
|
|
1043
|
+
return `${this.h}/v1/${e}:${n}`;
|
|
1035
1044
|
}
|
|
1036
1045
|
} {
|
|
1037
1046
|
/**
|
|
1038
1047
|
* @param databaseInfo - The connection info.
|
|
1039
1048
|
* @param fetchImpl - `fetch` or a Polyfill that implements the fetch API.
|
|
1040
1049
|
*/
|
|
1041
|
-
constructor(t,
|
|
1042
|
-
super(t), this.I =
|
|
1050
|
+
constructor(t, e) {
|
|
1051
|
+
super(t), this.I = e;
|
|
1043
1052
|
}
|
|
1044
|
-
A(t,
|
|
1053
|
+
A(t, e) {
|
|
1045
1054
|
throw new Error("Not supported by FetchConnection");
|
|
1046
1055
|
}
|
|
1047
|
-
async v(t,
|
|
1056
|
+
async v(t, e, n, r) {
|
|
1048
1057
|
const s = JSON.stringify(r);
|
|
1049
1058
|
let i;
|
|
1050
1059
|
try {
|
|
1051
|
-
i = await this.I(
|
|
1060
|
+
i = await this.I(e, {
|
|
1052
1061
|
method: "POST",
|
|
1053
|
-
headers:
|
|
1062
|
+
headers: n,
|
|
1054
1063
|
body: s
|
|
1055
1064
|
});
|
|
1056
1065
|
} catch (t) {
|
|
@@ -1101,13 +1110,13 @@ class {
|
|
|
1101
1110
|
*/
|
|
1102
1111
|
function mt(t) {
|
|
1103
1112
|
// Polyfills for IE and WebWorker by using `self` and `msCrypto` when `crypto` is not available.
|
|
1104
|
-
const
|
|
1113
|
+
const e =
|
|
1105
1114
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1106
|
-
"undefined" != typeof self && (self.crypto || self.msCrypto),
|
|
1107
|
-
if (
|
|
1115
|
+
"undefined" != typeof self && (self.crypto || self.msCrypto), n = new Uint8Array(t);
|
|
1116
|
+
if (e && "function" == typeof e.getRandomValues) e.getRandomValues(n); else
|
|
1108
1117
|
// Falls back to Math.random
|
|
1109
|
-
for (let
|
|
1110
|
-
return
|
|
1118
|
+
for (let e = 0; e < t; e++) n[e] = Math.floor(256 * Math.random());
|
|
1119
|
+
return n;
|
|
1111
1120
|
}
|
|
1112
1121
|
|
|
1113
1122
|
/**
|
|
@@ -1128,26 +1137,26 @@ function mt(t) {
|
|
|
1128
1137
|
*/ class pt {
|
|
1129
1138
|
static R() {
|
|
1130
1139
|
// Alphanumeric characters
|
|
1131
|
-
const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
|
|
1140
|
+
const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", e = Math.floor(256 / t.length) * t.length;
|
|
1132
1141
|
// The largest byte value that is a multiple of `char.length`.
|
|
1133
|
-
let
|
|
1134
|
-
for (;
|
|
1142
|
+
let n = "";
|
|
1143
|
+
for (;n.length < 20; ) {
|
|
1135
1144
|
const r = mt(40);
|
|
1136
1145
|
for (let s = 0; s < r.length; ++s)
|
|
1137
1146
|
// Only accept values that are [0, maxMultiple), this ensures they can
|
|
1138
1147
|
// be evenly mapped to indices of `chars` via a modulo operation.
|
|
1139
|
-
|
|
1148
|
+
n.length < 20 && r[s] < e && (n += t.charAt(r[s] % t.length));
|
|
1140
1149
|
}
|
|
1141
|
-
return
|
|
1150
|
+
return n;
|
|
1142
1151
|
}
|
|
1143
1152
|
}
|
|
1144
1153
|
|
|
1145
|
-
function yt(t,
|
|
1146
|
-
return t <
|
|
1154
|
+
function yt(t, e) {
|
|
1155
|
+
return t < e ? -1 : t > e ? 1 : 0;
|
|
1147
1156
|
}
|
|
1148
1157
|
|
|
1149
|
-
/** Helper to compare arrays using isEqual(). */ function _t(t,
|
|
1150
|
-
return t.length ===
|
|
1158
|
+
/** Helper to compare arrays using isEqual(). */ function _t(t, e, n) {
|
|
1159
|
+
return t.length === e.length && t.every(((t, r) => n(t, e[r])));
|
|
1151
1160
|
}
|
|
1152
1161
|
|
|
1153
1162
|
/**
|
|
@@ -1201,9 +1210,9 @@ class gt {
|
|
|
1201
1210
|
/**
|
|
1202
1211
|
* The fractions of a second at nanosecond resolution.*
|
|
1203
1212
|
*/
|
|
1204
|
-
|
|
1205
|
-
if (this.seconds = t, this.nanoseconds =
|
|
1206
|
-
if (
|
|
1213
|
+
e) {
|
|
1214
|
+
if (this.seconds = t, this.nanoseconds = e, e < 0) throw new U(A, "Timestamp nanoseconds out of range: " + e);
|
|
1215
|
+
if (e >= 1e9) throw new U(A, "Timestamp nanoseconds out of range: " + e);
|
|
1207
1216
|
if (t < -62135596800) throw new U(A, "Timestamp seconds out of range: " + t);
|
|
1208
1217
|
// This will break in the year 10,000.
|
|
1209
1218
|
if (t >= 253402300800) throw new U(A, "Timestamp seconds out of range: " + t);
|
|
@@ -1232,8 +1241,8 @@ class gt {
|
|
|
1232
1241
|
* @returns A new `Timestamp` representing the same point in time as the given
|
|
1233
1242
|
* number of milliseconds.
|
|
1234
1243
|
*/ static fromMillis(t) {
|
|
1235
|
-
const
|
|
1236
|
-
return new gt(
|
|
1244
|
+
const e = Math.floor(t / 1e3), n = Math.floor(1e6 * (t - 1e3 * e));
|
|
1245
|
+
return new gt(e, n);
|
|
1237
1246
|
}
|
|
1238
1247
|
/**
|
|
1239
1248
|
* Converts a `Timestamp` to a JavaScript `Date` object. This conversion
|
|
@@ -1355,13 +1364,13 @@ class gt {
|
|
|
1355
1364
|
* See the License for the specific language governing permissions and
|
|
1356
1365
|
* limitations under the License.
|
|
1357
1366
|
*/ function bt(t) {
|
|
1358
|
-
let
|
|
1359
|
-
for (const
|
|
1360
|
-
return
|
|
1367
|
+
let e = 0;
|
|
1368
|
+
for (const n in t) Object.prototype.hasOwnProperty.call(t, n) && e++;
|
|
1369
|
+
return e;
|
|
1361
1370
|
}
|
|
1362
1371
|
|
|
1363
|
-
function Et(t,
|
|
1364
|
-
for (const
|
|
1372
|
+
function Et(t, e) {
|
|
1373
|
+
for (const n in t) Object.prototype.hasOwnProperty.call(t, n) && e(n, t[n]);
|
|
1365
1374
|
}
|
|
1366
1375
|
|
|
1367
1376
|
/**
|
|
@@ -1403,11 +1412,11 @@ class Tt {
|
|
|
1403
1412
|
*
|
|
1404
1413
|
* This is an O(n) operation, where `n` is the size of the field mask.
|
|
1405
1414
|
*/ covers(t) {
|
|
1406
|
-
for (const
|
|
1415
|
+
for (const e of this.fields) if (e.isPrefixOf(t)) return !0;
|
|
1407
1416
|
return !1;
|
|
1408
1417
|
}
|
|
1409
1418
|
isEqual(t) {
|
|
1410
|
-
return _t(this.fields, t.fields, ((t,
|
|
1419
|
+
return _t(this.fields, t.fields, ((t, e) => t.isEqual(e)));
|
|
1411
1420
|
}
|
|
1412
1421
|
}
|
|
1413
1422
|
|
|
@@ -1458,23 +1467,23 @@ class It {
|
|
|
1458
1467
|
this.binaryString = t;
|
|
1459
1468
|
}
|
|
1460
1469
|
static fromBase64String(t) {
|
|
1461
|
-
const
|
|
1462
|
-
return new It(
|
|
1470
|
+
const e = atob(t);
|
|
1471
|
+
return new It(e);
|
|
1463
1472
|
}
|
|
1464
1473
|
static fromUint8Array(t) {
|
|
1465
|
-
const
|
|
1474
|
+
const e =
|
|
1466
1475
|
/**
|
|
1467
1476
|
* Helper function to convert an Uint8array to a binary string.
|
|
1468
1477
|
*/
|
|
1469
1478
|
function(t) {
|
|
1470
|
-
let
|
|
1471
|
-
for (let
|
|
1472
|
-
return
|
|
1479
|
+
let e = "";
|
|
1480
|
+
for (let n = 0; n < t.length; ++n) e += String.fromCharCode(t[n]);
|
|
1481
|
+
return e;
|
|
1473
1482
|
}
|
|
1474
1483
|
/**
|
|
1475
1484
|
* Helper function to convert a binary string to an Uint8Array.
|
|
1476
1485
|
*/ (t);
|
|
1477
|
-
return new It(
|
|
1486
|
+
return new It(e);
|
|
1478
1487
|
}
|
|
1479
1488
|
[Symbol.iterator]() {
|
|
1480
1489
|
let t = 0;
|
|
@@ -1495,9 +1504,9 @@ class It {
|
|
|
1495
1504
|
}
|
|
1496
1505
|
toUint8Array() {
|
|
1497
1506
|
return function(t) {
|
|
1498
|
-
const
|
|
1499
|
-
for (let
|
|
1500
|
-
return
|
|
1507
|
+
const e = new Uint8Array(t.length);
|
|
1508
|
+
for (let n = 0; n < t.length; n++) e[n] = t.charCodeAt(n);
|
|
1509
|
+
return e;
|
|
1501
1510
|
}
|
|
1502
1511
|
/**
|
|
1503
1512
|
* @license
|
|
@@ -1544,18 +1553,18 @@ const At = new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);
|
|
|
1544
1553
|
// The date string can have higher precision (nanos) than the Date class
|
|
1545
1554
|
// (millis), so we do some custom parsing here.
|
|
1546
1555
|
// Parse the nanos right out of the string.
|
|
1547
|
-
let
|
|
1548
|
-
const
|
|
1549
|
-
if (v(!!
|
|
1556
|
+
let e = 0;
|
|
1557
|
+
const n = At.exec(t);
|
|
1558
|
+
if (v(!!n), n[1]) {
|
|
1550
1559
|
// Pad the fraction out to 9 digits (nanos).
|
|
1551
|
-
let t =
|
|
1552
|
-
t = (t + "000000000").substr(0, 9),
|
|
1560
|
+
let t = n[1];
|
|
1561
|
+
t = (t + "000000000").substr(0, 9), e = Number(t);
|
|
1553
1562
|
}
|
|
1554
1563
|
// Parse the date to get the seconds.
|
|
1555
1564
|
const r = new Date(t);
|
|
1556
1565
|
return {
|
|
1557
1566
|
seconds: Math.floor(r.getTime() / 1e3),
|
|
1558
|
-
nanos:
|
|
1567
|
+
nanos: e
|
|
1559
1568
|
};
|
|
1560
1569
|
}
|
|
1561
1570
|
return {
|
|
@@ -1610,8 +1619,8 @@ const At = new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);
|
|
|
1610
1619
|
* - With respect to other ServerTimestampValues, they sort by their
|
|
1611
1620
|
* localWriteTime.
|
|
1612
1621
|
*/ function Dt(t) {
|
|
1613
|
-
var
|
|
1614
|
-
return "server_timestamp" === (null === (
|
|
1622
|
+
var e, n;
|
|
1623
|
+
return "server_timestamp" === (null === (n = ((null === (e = null == t ? void 0 : t.mapValue) || void 0 === e ? void 0 : e.fields) || {}).__type__) || void 0 === n ? void 0 : n.stringValue);
|
|
1615
1624
|
}
|
|
1616
1625
|
|
|
1617
1626
|
/**
|
|
@@ -1620,15 +1629,15 @@ const At = new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);
|
|
|
1620
1629
|
* Preserving the previous values allows the user to display the last resoled
|
|
1621
1630
|
* value until the backend responds with the timestamp.
|
|
1622
1631
|
*/ function Nt(t) {
|
|
1623
|
-
const
|
|
1624
|
-
return Dt(
|
|
1632
|
+
const e = t.mapValue.fields.__previous_value__;
|
|
1633
|
+
return Dt(e) ? Nt(e) : e;
|
|
1625
1634
|
}
|
|
1626
1635
|
|
|
1627
1636
|
/**
|
|
1628
1637
|
* Returns the local time at which this timestamp was first set.
|
|
1629
1638
|
*/ function $t(t) {
|
|
1630
|
-
const
|
|
1631
|
-
return new gt(
|
|
1639
|
+
const e = Rt(t.mapValue.fields.__local_write_time__.timestampValue);
|
|
1640
|
+
return new gt(e.seconds, e.nanos);
|
|
1632
1641
|
}
|
|
1633
1642
|
|
|
1634
1643
|
/**
|
|
@@ -1651,169 +1660,169 @@ const At = new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/);
|
|
|
1651
1660
|
return "nullValue" in t ? 0 /* NullValue */ : "booleanValue" in t ? 1 /* BooleanValue */ : "integerValue" in t || "doubleValue" in t ? 2 /* NumberValue */ : "timestampValue" in t ? 3 /* TimestampValue */ : "stringValue" in t ? 5 /* StringValue */ : "bytesValue" in t ? 6 /* BlobValue */ : "referenceValue" in t ? 7 /* RefValue */ : "geoPointValue" in t ? 8 /* GeoPointValue */ : "arrayValue" in t ? 9 /* ArrayValue */ : "mapValue" in t ? Dt(t) ? 4 /* ServerTimestampValue */ : 10 /* ObjectValue */ : g();
|
|
1652
1661
|
}
|
|
1653
1662
|
|
|
1654
|
-
/** Tests `left` and `right` for equality based on the backend semantics. */ function Ft(t,
|
|
1655
|
-
if (t ===
|
|
1656
|
-
const
|
|
1657
|
-
if (
|
|
1658
|
-
switch (
|
|
1663
|
+
/** Tests `left` and `right` for equality based on the backend semantics. */ function Ft(t, e) {
|
|
1664
|
+
if (t === e) return !0;
|
|
1665
|
+
const n = St(t);
|
|
1666
|
+
if (n !== St(e)) return !1;
|
|
1667
|
+
switch (n) {
|
|
1659
1668
|
case 0 /* NullValue */ :
|
|
1660
1669
|
return !0;
|
|
1661
1670
|
|
|
1662
1671
|
case 1 /* BooleanValue */ :
|
|
1663
|
-
return t.booleanValue ===
|
|
1672
|
+
return t.booleanValue === e.booleanValue;
|
|
1664
1673
|
|
|
1665
1674
|
case 4 /* ServerTimestampValue */ :
|
|
1666
|
-
return $t(t).isEqual($t(
|
|
1675
|
+
return $t(t).isEqual($t(e));
|
|
1667
1676
|
|
|
1668
1677
|
case 3 /* TimestampValue */ :
|
|
1669
|
-
return function(t,
|
|
1670
|
-
if ("string" == typeof t.timestampValue && "string" == typeof
|
|
1678
|
+
return function(t, e) {
|
|
1679
|
+
if ("string" == typeof t.timestampValue && "string" == typeof e.timestampValue && t.timestampValue.length === e.timestampValue.length)
|
|
1671
1680
|
// Use string equality for ISO 8601 timestamps
|
|
1672
|
-
return t.timestampValue ===
|
|
1673
|
-
const
|
|
1674
|
-
return
|
|
1675
|
-
}(t,
|
|
1681
|
+
return t.timestampValue === e.timestampValue;
|
|
1682
|
+
const n = Rt(t.timestampValue), r = Rt(e.timestampValue);
|
|
1683
|
+
return n.seconds === r.seconds && n.nanos === r.nanos;
|
|
1684
|
+
}(t, e);
|
|
1676
1685
|
|
|
1677
1686
|
case 5 /* StringValue */ :
|
|
1678
|
-
return t.stringValue ===
|
|
1687
|
+
return t.stringValue === e.stringValue;
|
|
1679
1688
|
|
|
1680
1689
|
case 6 /* BlobValue */ :
|
|
1681
|
-
return function(t,
|
|
1682
|
-
return Vt(t.bytesValue).isEqual(Vt(
|
|
1683
|
-
}(t,
|
|
1690
|
+
return function(t, e) {
|
|
1691
|
+
return Vt(t.bytesValue).isEqual(Vt(e.bytesValue));
|
|
1692
|
+
}(t, e);
|
|
1684
1693
|
|
|
1685
1694
|
case 7 /* RefValue */ :
|
|
1686
|
-
return t.referenceValue ===
|
|
1695
|
+
return t.referenceValue === e.referenceValue;
|
|
1687
1696
|
|
|
1688
1697
|
case 8 /* GeoPointValue */ :
|
|
1689
|
-
return function(t,
|
|
1690
|
-
return Pt(t.geoPointValue.latitude) === Pt(
|
|
1691
|
-
}(t,
|
|
1698
|
+
return function(t, e) {
|
|
1699
|
+
return Pt(t.geoPointValue.latitude) === Pt(e.geoPointValue.latitude) && Pt(t.geoPointValue.longitude) === Pt(e.geoPointValue.longitude);
|
|
1700
|
+
}(t, e);
|
|
1692
1701
|
|
|
1693
1702
|
case 2 /* NumberValue */ :
|
|
1694
|
-
return function(t,
|
|
1695
|
-
if ("integerValue" in t && "integerValue" in
|
|
1696
|
-
if ("doubleValue" in t && "doubleValue" in
|
|
1697
|
-
const
|
|
1698
|
-
return
|
|
1703
|
+
return function(t, e) {
|
|
1704
|
+
if ("integerValue" in t && "integerValue" in e) return Pt(t.integerValue) === Pt(e.integerValue);
|
|
1705
|
+
if ("doubleValue" in t && "doubleValue" in e) {
|
|
1706
|
+
const n = Pt(t.doubleValue), r = Pt(e.doubleValue);
|
|
1707
|
+
return n === r ? at(n) === at(r) : isNaN(n) && isNaN(r);
|
|
1699
1708
|
}
|
|
1700
1709
|
return !1;
|
|
1701
|
-
}(t,
|
|
1710
|
+
}(t, e);
|
|
1702
1711
|
|
|
1703
1712
|
case 9 /* ArrayValue */ :
|
|
1704
|
-
return _t(t.arrayValue.values || [],
|
|
1713
|
+
return _t(t.arrayValue.values || [], e.arrayValue.values || [], Ft);
|
|
1705
1714
|
|
|
1706
1715
|
case 10 /* ObjectValue */ :
|
|
1707
|
-
return function(t,
|
|
1708
|
-
const
|
|
1709
|
-
if (bt(
|
|
1710
|
-
for (const t in
|
|
1716
|
+
return function(t, e) {
|
|
1717
|
+
const n = t.mapValue.fields || {}, r = e.mapValue.fields || {};
|
|
1718
|
+
if (bt(n) !== bt(r)) return !1;
|
|
1719
|
+
for (const t in n) if (n.hasOwnProperty(t) && (void 0 === r[t] || !Ft(n[t], r[t]))) return !1;
|
|
1711
1720
|
return !0;
|
|
1712
1721
|
}
|
|
1713
|
-
/** Returns true if the ArrayValue contains the specified element. */ (t,
|
|
1722
|
+
/** Returns true if the ArrayValue contains the specified element. */ (t, e);
|
|
1714
1723
|
|
|
1715
1724
|
default:
|
|
1716
1725
|
return g();
|
|
1717
1726
|
}
|
|
1718
1727
|
}
|
|
1719
1728
|
|
|
1720
|
-
function xt(t,
|
|
1721
|
-
return void 0 !== (t.values || []).find((t => Ft(t,
|
|
1729
|
+
function xt(t, e) {
|
|
1730
|
+
return void 0 !== (t.values || []).find((t => Ft(t, e)));
|
|
1722
1731
|
}
|
|
1723
1732
|
|
|
1724
|
-
function qt(t,
|
|
1725
|
-
if (t ===
|
|
1726
|
-
const
|
|
1727
|
-
if (
|
|
1728
|
-
switch (
|
|
1733
|
+
function qt(t, e) {
|
|
1734
|
+
if (t === e) return 0;
|
|
1735
|
+
const n = St(t), r = St(e);
|
|
1736
|
+
if (n !== r) return yt(n, r);
|
|
1737
|
+
switch (n) {
|
|
1729
1738
|
case 0 /* NullValue */ :
|
|
1730
1739
|
return 0;
|
|
1731
1740
|
|
|
1732
1741
|
case 1 /* BooleanValue */ :
|
|
1733
|
-
return yt(t.booleanValue,
|
|
1742
|
+
return yt(t.booleanValue, e.booleanValue);
|
|
1734
1743
|
|
|
1735
1744
|
case 2 /* NumberValue */ :
|
|
1736
|
-
return function(t,
|
|
1737
|
-
const
|
|
1738
|
-
return
|
|
1745
|
+
return function(t, e) {
|
|
1746
|
+
const n = Pt(t.integerValue || t.doubleValue), r = Pt(e.integerValue || e.doubleValue);
|
|
1747
|
+
return n < r ? -1 : n > r ? 1 : n === r ? 0 :
|
|
1739
1748
|
// one or both are NaN.
|
|
1740
|
-
isNaN(
|
|
1741
|
-
}(t,
|
|
1749
|
+
isNaN(n) ? isNaN(r) ? 0 : -1 : 1;
|
|
1750
|
+
}(t, e);
|
|
1742
1751
|
|
|
1743
1752
|
case 3 /* TimestampValue */ :
|
|
1744
|
-
return Ot(t.timestampValue,
|
|
1753
|
+
return Ot(t.timestampValue, e.timestampValue);
|
|
1745
1754
|
|
|
1746
1755
|
case 4 /* ServerTimestampValue */ :
|
|
1747
|
-
return Ot($t(t), $t(
|
|
1756
|
+
return Ot($t(t), $t(e));
|
|
1748
1757
|
|
|
1749
1758
|
case 5 /* StringValue */ :
|
|
1750
|
-
return yt(t.stringValue,
|
|
1759
|
+
return yt(t.stringValue, e.stringValue);
|
|
1751
1760
|
|
|
1752
1761
|
case 6 /* BlobValue */ :
|
|
1753
|
-
return function(t,
|
|
1754
|
-
const
|
|
1755
|
-
return
|
|
1756
|
-
}(t.bytesValue,
|
|
1762
|
+
return function(t, e) {
|
|
1763
|
+
const n = Vt(t), r = Vt(e);
|
|
1764
|
+
return n.compareTo(r);
|
|
1765
|
+
}(t.bytesValue, e.bytesValue);
|
|
1757
1766
|
|
|
1758
1767
|
case 7 /* RefValue */ :
|
|
1759
|
-
return function(t,
|
|
1760
|
-
const
|
|
1761
|
-
for (let t = 0; t <
|
|
1762
|
-
const
|
|
1763
|
-
if (0 !==
|
|
1768
|
+
return function(t, e) {
|
|
1769
|
+
const n = t.split("/"), r = e.split("/");
|
|
1770
|
+
for (let t = 0; t < n.length && t < r.length; t++) {
|
|
1771
|
+
const e = yt(n[t], r[t]);
|
|
1772
|
+
if (0 !== e) return e;
|
|
1764
1773
|
}
|
|
1765
|
-
return yt(
|
|
1766
|
-
}(t.referenceValue,
|
|
1774
|
+
return yt(n.length, r.length);
|
|
1775
|
+
}(t.referenceValue, e.referenceValue);
|
|
1767
1776
|
|
|
1768
1777
|
case 8 /* GeoPointValue */ :
|
|
1769
|
-
return function(t,
|
|
1770
|
-
const
|
|
1771
|
-
if (0 !==
|
|
1772
|
-
return yt(Pt(t.longitude), Pt(
|
|
1773
|
-
}(t.geoPointValue,
|
|
1778
|
+
return function(t, e) {
|
|
1779
|
+
const n = yt(Pt(t.latitude), Pt(e.latitude));
|
|
1780
|
+
if (0 !== n) return n;
|
|
1781
|
+
return yt(Pt(t.longitude), Pt(e.longitude));
|
|
1782
|
+
}(t.geoPointValue, e.geoPointValue);
|
|
1774
1783
|
|
|
1775
1784
|
case 9 /* ArrayValue */ :
|
|
1776
|
-
return function(t,
|
|
1777
|
-
const
|
|
1778
|
-
for (let t = 0; t <
|
|
1779
|
-
const
|
|
1780
|
-
if (
|
|
1785
|
+
return function(t, e) {
|
|
1786
|
+
const n = t.values || [], r = e.values || [];
|
|
1787
|
+
for (let t = 0; t < n.length && t < r.length; ++t) {
|
|
1788
|
+
const e = qt(n[t], r[t]);
|
|
1789
|
+
if (e) return e;
|
|
1781
1790
|
}
|
|
1782
|
-
return yt(
|
|
1783
|
-
}(t.arrayValue,
|
|
1791
|
+
return yt(n.length, r.length);
|
|
1792
|
+
}(t.arrayValue, e.arrayValue);
|
|
1784
1793
|
|
|
1785
1794
|
case 10 /* ObjectValue */ :
|
|
1786
|
-
return function(t,
|
|
1787
|
-
const
|
|
1795
|
+
return function(t, e) {
|
|
1796
|
+
const n = t.fields || {}, r = Object.keys(n), s = e.fields || {}, i = Object.keys(s);
|
|
1788
1797
|
// Even though MapValues are likely sorted correctly based on their insertion
|
|
1789
1798
|
// order (e.g. when received from the backend), local modifications can bring
|
|
1790
1799
|
// elements out of order. We need to re-sort the elements to ensure that
|
|
1791
1800
|
// canonical IDs are independent of insertion order.
|
|
1792
1801
|
r.sort(), i.sort();
|
|
1793
1802
|
for (let t = 0; t < r.length && t < i.length; ++t) {
|
|
1794
|
-
const
|
|
1795
|
-
if (0 !==
|
|
1796
|
-
const o = qt(
|
|
1803
|
+
const e = yt(r[t], i[t]);
|
|
1804
|
+
if (0 !== e) return e;
|
|
1805
|
+
const o = qt(n[r[t]], s[i[t]]);
|
|
1797
1806
|
if (0 !== o) return o;
|
|
1798
1807
|
}
|
|
1799
1808
|
return yt(r.length, i.length);
|
|
1800
1809
|
}
|
|
1801
|
-
/** Returns a reference value for the provided database and key. */ (t.mapValue,
|
|
1810
|
+
/** Returns a reference value for the provided database and key. */ (t.mapValue, e.mapValue);
|
|
1802
1811
|
|
|
1803
1812
|
default:
|
|
1804
1813
|
throw g();
|
|
1805
1814
|
}
|
|
1806
1815
|
}
|
|
1807
1816
|
|
|
1808
|
-
function Ot(t,
|
|
1809
|
-
if ("string" == typeof t && "string" == typeof
|
|
1810
|
-
const
|
|
1811
|
-
return 0 !== s ? s : yt(
|
|
1817
|
+
function Ot(t, e) {
|
|
1818
|
+
if ("string" == typeof t && "string" == typeof e && t.length === e.length) return yt(t, e);
|
|
1819
|
+
const n = Rt(t), r = Rt(e), s = yt(n.seconds, r.seconds);
|
|
1820
|
+
return 0 !== s ? s : yt(n.nanos, r.nanos);
|
|
1812
1821
|
}
|
|
1813
1822
|
|
|
1814
|
-
function Ct(t,
|
|
1823
|
+
function Ct(t, e) {
|
|
1815
1824
|
return {
|
|
1816
|
-
referenceValue: `projects/${t.projectId}/databases/${t.database}/documents/${
|
|
1825
|
+
referenceValue: `projects/${t.projectId}/databases/${t.database}/documents/${e.path.canonicalString()}`
|
|
1817
1826
|
};
|
|
1818
1827
|
}
|
|
1819
1828
|
|
|
@@ -1841,21 +1850,21 @@ function Ct(t, n) {
|
|
|
1841
1850
|
timestampValue: Object.assign({}, t.timestampValue)
|
|
1842
1851
|
};
|
|
1843
1852
|
if (t.mapValue) {
|
|
1844
|
-
const
|
|
1853
|
+
const e = {
|
|
1845
1854
|
mapValue: {
|
|
1846
1855
|
fields: {}
|
|
1847
1856
|
}
|
|
1848
1857
|
};
|
|
1849
|
-
return Et(t.mapValue.fields, ((t,
|
|
1858
|
+
return Et(t.mapValue.fields, ((t, n) => e.mapValue.fields[t] = Mt(n))), e;
|
|
1850
1859
|
}
|
|
1851
1860
|
if (t.arrayValue) {
|
|
1852
|
-
const
|
|
1861
|
+
const e = {
|
|
1853
1862
|
arrayValue: {
|
|
1854
1863
|
values: []
|
|
1855
1864
|
}
|
|
1856
1865
|
};
|
|
1857
|
-
for (let
|
|
1858
|
-
return
|
|
1866
|
+
for (let n = 0; n < (t.arrayValue.values || []).length; ++n) e.arrayValue.values[n] = Mt(t.arrayValue.values[n]);
|
|
1867
|
+
return e;
|
|
1859
1868
|
}
|
|
1860
1869
|
return Object.assign({}, t);
|
|
1861
1870
|
}
|
|
@@ -1896,10 +1905,10 @@ function Ct(t, n) {
|
|
|
1896
1905
|
*/ field(t) {
|
|
1897
1906
|
if (t.isEmpty()) return this.value;
|
|
1898
1907
|
{
|
|
1899
|
-
let
|
|
1900
|
-
for (let
|
|
1901
|
-
!jt(
|
|
1902
|
-
return
|
|
1908
|
+
let e = this.value;
|
|
1909
|
+
for (let n = 0; n < t.length - 1; ++n) if (e = (e.mapValue.fields || {})[t.get(n)],
|
|
1910
|
+
!jt(e)) return null;
|
|
1911
|
+
return e = (e.mapValue.fields || {})[t.lastSegment()], e || null;
|
|
1903
1912
|
}
|
|
1904
1913
|
}
|
|
1905
1914
|
/**
|
|
@@ -1907,25 +1916,25 @@ function Ct(t, n) {
|
|
|
1907
1916
|
*
|
|
1908
1917
|
* @param path - The field path to set.
|
|
1909
1918
|
* @param value - The value to set.
|
|
1910
|
-
*/ set(t,
|
|
1911
|
-
this.getFieldsMap(t.popLast())[t.lastSegment()] = Mt(
|
|
1919
|
+
*/ set(t, e) {
|
|
1920
|
+
this.getFieldsMap(t.popLast())[t.lastSegment()] = Mt(e);
|
|
1912
1921
|
}
|
|
1913
1922
|
/**
|
|
1914
1923
|
* Sets the provided fields to the provided values.
|
|
1915
1924
|
*
|
|
1916
1925
|
* @param data - A map of fields to values (or null for deletes).
|
|
1917
1926
|
*/ setAll(t) {
|
|
1918
|
-
let
|
|
1927
|
+
let e = tt.emptyPath(), n = {}, r = [];
|
|
1919
1928
|
t.forEach(((t, s) => {
|
|
1920
|
-
if (!
|
|
1929
|
+
if (!e.isImmediateParentOf(s)) {
|
|
1921
1930
|
// Insert the accumulated changes at this parent location
|
|
1922
|
-
const t = this.getFieldsMap(
|
|
1923
|
-
this.applyChanges(t,
|
|
1931
|
+
const t = this.getFieldsMap(e);
|
|
1932
|
+
this.applyChanges(t, n, r), n = {}, r = [], e = s.popLast();
|
|
1924
1933
|
}
|
|
1925
|
-
t ?
|
|
1934
|
+
t ? n[s.lastSegment()] = Mt(t) : r.push(s.lastSegment());
|
|
1926
1935
|
}));
|
|
1927
|
-
const s = this.getFieldsMap(
|
|
1928
|
-
this.applyChanges(s,
|
|
1936
|
+
const s = this.getFieldsMap(e);
|
|
1937
|
+
this.applyChanges(s, n, r);
|
|
1929
1938
|
}
|
|
1930
1939
|
/**
|
|
1931
1940
|
* Removes the field at the specified path. If there is no field at the
|
|
@@ -1933,8 +1942,8 @@ function Ct(t, n) {
|
|
|
1933
1942
|
*
|
|
1934
1943
|
* @param path - The field path to remove.
|
|
1935
1944
|
*/ delete(t) {
|
|
1936
|
-
const
|
|
1937
|
-
jt(
|
|
1945
|
+
const e = this.field(t.popLast());
|
|
1946
|
+
jt(e) && e.mapValue.fields && delete e.mapValue.fields[t.lastSegment()];
|
|
1938
1947
|
}
|
|
1939
1948
|
isEqual(t) {
|
|
1940
1949
|
return Ft(this.value, t.value);
|
|
@@ -1943,26 +1952,26 @@ function Ct(t, n) {
|
|
|
1943
1952
|
* Returns the map that contains the leaf element of `path`. If the parent
|
|
1944
1953
|
* entry does not yet exist, or if it is not a map, a new map will be created.
|
|
1945
1954
|
*/ getFieldsMap(t) {
|
|
1946
|
-
let
|
|
1947
|
-
|
|
1955
|
+
let e = this.value;
|
|
1956
|
+
e.mapValue.fields || (e.mapValue = {
|
|
1948
1957
|
fields: {}
|
|
1949
1958
|
});
|
|
1950
|
-
for (let
|
|
1951
|
-
let r =
|
|
1959
|
+
for (let n = 0; n < t.length; ++n) {
|
|
1960
|
+
let r = e.mapValue.fields[t.get(n)];
|
|
1952
1961
|
jt(r) && r.mapValue.fields || (r = {
|
|
1953
1962
|
mapValue: {
|
|
1954
1963
|
fields: {}
|
|
1955
1964
|
}
|
|
1956
|
-
},
|
|
1965
|
+
}, e.mapValue.fields[t.get(n)] = r), e = r;
|
|
1957
1966
|
}
|
|
1958
|
-
return
|
|
1967
|
+
return e.mapValue.fields;
|
|
1959
1968
|
}
|
|
1960
1969
|
/**
|
|
1961
1970
|
* Modifies `fieldsMap` by adding, replacing or deleting the specified
|
|
1962
1971
|
* entries.
|
|
1963
|
-
*/ applyChanges(t,
|
|
1964
|
-
Et(
|
|
1965
|
-
for (const
|
|
1972
|
+
*/ applyChanges(t, e, n) {
|
|
1973
|
+
Et(e, ((e, n) => t[e] = n));
|
|
1974
|
+
for (const e of n) delete t[e];
|
|
1966
1975
|
}
|
|
1967
1976
|
clone() {
|
|
1968
1977
|
return new Bt(Mt(this.value));
|
|
@@ -1995,8 +2004,8 @@ function Ct(t, n) {
|
|
|
1995
2004
|
* applied, `isValidDocument()` returns false and the document should be removed
|
|
1996
2005
|
* from all views.
|
|
1997
2006
|
*/ class zt {
|
|
1998
|
-
constructor(t,
|
|
1999
|
-
this.key = t, this.documentType =
|
|
2007
|
+
constructor(t, e, n, r, s, i) {
|
|
2008
|
+
this.key = t, this.documentType = e, this.version = n, this.readTime = r, this.data = s,
|
|
2000
2009
|
this.documentState = i;
|
|
2001
2010
|
}
|
|
2002
2011
|
/**
|
|
@@ -2008,24 +2017,24 @@ function Ct(t, n) {
|
|
|
2008
2017
|
/**
|
|
2009
2018
|
* Creates a new document that is known to exist with the given data at the
|
|
2010
2019
|
* given version.
|
|
2011
|
-
*/ static newFoundDocument(t,
|
|
2012
|
-
return new zt(t, 1 /* FOUND_DOCUMENT */ ,
|
|
2020
|
+
*/ static newFoundDocument(t, e, n) {
|
|
2021
|
+
return new zt(t, 1 /* FOUND_DOCUMENT */ , e, vt.min(), n, 0 /* SYNCED */);
|
|
2013
2022
|
}
|
|
2014
|
-
/** Creates a new document that is known to not exist at the given version. */ static newNoDocument(t,
|
|
2015
|
-
return new zt(t, 2 /* NO_DOCUMENT */ ,
|
|
2023
|
+
/** Creates a new document that is known to not exist at the given version. */ static newNoDocument(t, e) {
|
|
2024
|
+
return new zt(t, 2 /* NO_DOCUMENT */ , e, vt.min(), Bt.empty(), 0 /* SYNCED */);
|
|
2016
2025
|
}
|
|
2017
2026
|
/**
|
|
2018
2027
|
* Creates a new document that is known to exist at the given version but
|
|
2019
2028
|
* whose data is not known (e.g. a document that was updated without a known
|
|
2020
2029
|
* base document).
|
|
2021
|
-
*/ static newUnknownDocument(t,
|
|
2022
|
-
return new zt(t, 3 /* UNKNOWN_DOCUMENT */ ,
|
|
2030
|
+
*/ static newUnknownDocument(t, e) {
|
|
2031
|
+
return new zt(t, 3 /* UNKNOWN_DOCUMENT */ , e, vt.min(), Bt.empty(), 2 /* HAS_COMMITTED_MUTATIONS */);
|
|
2023
2032
|
}
|
|
2024
2033
|
/**
|
|
2025
2034
|
* Changes the document type to indicate that it exists and that its version
|
|
2026
2035
|
* and data are known.
|
|
2027
|
-
*/ convertToFoundDocument(t,
|
|
2028
|
-
return this.version = t, this.documentType = 1 /* FOUND_DOCUMENT */ , this.data =
|
|
2036
|
+
*/ convertToFoundDocument(t, e) {
|
|
2037
|
+
return this.version = t, this.documentType = 1 /* FOUND_DOCUMENT */ , this.data = e,
|
|
2029
2038
|
this.documentState = 0 /* SYNCED */ , this;
|
|
2030
2039
|
}
|
|
2031
2040
|
/**
|
|
@@ -2102,8 +2111,8 @@ function Ct(t, n) {
|
|
|
2102
2111
|
*/
|
|
2103
2112
|
// Visible for testing
|
|
2104
2113
|
class Gt {
|
|
2105
|
-
constructor(t,
|
|
2106
|
-
this.path = t, this.collectionGroup =
|
|
2114
|
+
constructor(t, e = null, n = [], r = [], s = null, i = null, o = null) {
|
|
2115
|
+
this.path = t, this.collectionGroup = e, this.orderBy = n, this.filters = r, this.limit = s,
|
|
2107
2116
|
this.startAt = i, this.endAt = o, this.P = null;
|
|
2108
2117
|
}
|
|
2109
2118
|
}
|
|
@@ -2115,26 +2124,26 @@ class Gt {
|
|
|
2115
2124
|
* NOTE: you should always construct `Target` from `Query.toTarget` instead of
|
|
2116
2125
|
* using this factory method, because `Query` provides an implicit `orderBy`
|
|
2117
2126
|
* property.
|
|
2118
|
-
*/ function Qt(t,
|
|
2119
|
-
return new Gt(t,
|
|
2127
|
+
*/ function Qt(t, e = null, n = [], r = [], s = null, i = null, o = null) {
|
|
2128
|
+
return new Gt(t, e, n, r, s, i, o);
|
|
2120
2129
|
}
|
|
2121
2130
|
|
|
2122
2131
|
class Wt extends class {} {
|
|
2123
|
-
constructor(t,
|
|
2124
|
-
super(), this.field = t, this.op =
|
|
2132
|
+
constructor(t, e, n) {
|
|
2133
|
+
super(), this.field = t, this.op = e, this.value = n;
|
|
2125
2134
|
}
|
|
2126
2135
|
/**
|
|
2127
2136
|
* Creates a filter based on the provided arguments.
|
|
2128
|
-
*/ static create(t,
|
|
2129
|
-
return t.isKeyField() ? "in" /* IN */ ===
|
|
2137
|
+
*/ static create(t, e, n) {
|
|
2138
|
+
return t.isKeyField() ? "in" /* IN */ === e || "not-in" /* NOT_IN */ === e ? this.V(t, e, n) : new Yt(t, e, n) : "array-contains" /* ARRAY_CONTAINS */ === e ? new Xt(t, n) : "in" /* IN */ === e ? new Zt(t, n) : "not-in" /* NOT_IN */ === e ? new te(t, n) : "array-contains-any" /* ARRAY_CONTAINS_ANY */ === e ? new ee(t, n) : new Wt(t, e, n);
|
|
2130
2139
|
}
|
|
2131
|
-
static V(t,
|
|
2132
|
-
return "in" /* IN */ ===
|
|
2140
|
+
static V(t, e, n) {
|
|
2141
|
+
return "in" /* IN */ === e ? new Ht(t, n) : new Kt(t, n);
|
|
2133
2142
|
}
|
|
2134
2143
|
matches(t) {
|
|
2135
|
-
const
|
|
2144
|
+
const e = t.data.field(this.field);
|
|
2136
2145
|
// Types do not have to match in NOT_EQUAL filters.
|
|
2137
|
-
return "!=" /* NOT_EQUAL */ === this.op ? null !==
|
|
2146
|
+
return "!=" /* NOT_EQUAL */ === this.op ? null !== e && this.D(qt(e, this.value)) : null !== e && St(this.value) === St(e) && this.D(qt(e, this.value));
|
|
2138
2147
|
// Only compare types with matching backend order (such as double and int).
|
|
2139
2148
|
}
|
|
2140
2149
|
D(t) {
|
|
@@ -2168,82 +2177,81 @@ class Wt extends class {} {
|
|
|
2168
2177
|
|
|
2169
2178
|
/** Filter that matches on key fields (i.e. '__name__'). */
|
|
2170
2179
|
class Yt extends Wt {
|
|
2171
|
-
constructor(t,
|
|
2172
|
-
super(t,
|
|
2180
|
+
constructor(t, e, n) {
|
|
2181
|
+
super(t, e, n), this.key = et.fromName(n.referenceValue);
|
|
2173
2182
|
}
|
|
2174
2183
|
matches(t) {
|
|
2175
|
-
const
|
|
2176
|
-
return this.D(
|
|
2184
|
+
const e = et.comparator(t.key, this.key);
|
|
2185
|
+
return this.D(e);
|
|
2177
2186
|
}
|
|
2178
2187
|
}
|
|
2179
2188
|
|
|
2180
2189
|
/** Filter that matches on key fields within an array. */ class Ht extends Wt {
|
|
2181
|
-
constructor(t,
|
|
2182
|
-
super(t, "in" /* IN */ ,
|
|
2190
|
+
constructor(t, e) {
|
|
2191
|
+
super(t, "in" /* IN */ , e), this.keys = Jt("in" /* IN */ , e);
|
|
2183
2192
|
}
|
|
2184
2193
|
matches(t) {
|
|
2185
|
-
return this.keys.some((
|
|
2194
|
+
return this.keys.some((e => e.isEqual(t.key)));
|
|
2186
2195
|
}
|
|
2187
2196
|
}
|
|
2188
2197
|
|
|
2189
2198
|
/** Filter that matches on key fields not present within an array. */ class Kt extends Wt {
|
|
2190
|
-
constructor(t,
|
|
2191
|
-
super(t, "not-in" /* NOT_IN */ ,
|
|
2199
|
+
constructor(t, e) {
|
|
2200
|
+
super(t, "not-in" /* NOT_IN */ , e), this.keys = Jt("not-in" /* NOT_IN */ , e);
|
|
2192
2201
|
}
|
|
2193
2202
|
matches(t) {
|
|
2194
|
-
return !this.keys.some((
|
|
2203
|
+
return !this.keys.some((e => e.isEqual(t.key)));
|
|
2195
2204
|
}
|
|
2196
2205
|
}
|
|
2197
2206
|
|
|
2198
|
-
function Jt(t,
|
|
2199
|
-
var
|
|
2200
|
-
return ((null === (
|
|
2207
|
+
function Jt(t, e) {
|
|
2208
|
+
var n;
|
|
2209
|
+
return ((null === (n = e.arrayValue) || void 0 === n ? void 0 : n.values) || []).map((t => et.fromName(t.referenceValue)));
|
|
2201
2210
|
}
|
|
2202
2211
|
|
|
2203
2212
|
/** A Filter that implements the array-contains operator. */ class Xt extends Wt {
|
|
2204
|
-
constructor(t,
|
|
2205
|
-
super(t, "array-contains" /* ARRAY_CONTAINS */ ,
|
|
2213
|
+
constructor(t, e) {
|
|
2214
|
+
super(t, "array-contains" /* ARRAY_CONTAINS */ , e);
|
|
2206
2215
|
}
|
|
2207
2216
|
matches(t) {
|
|
2208
|
-
const
|
|
2209
|
-
return Lt(
|
|
2217
|
+
const e = t.data.field(this.field);
|
|
2218
|
+
return Lt(e) && xt(e.arrayValue, this.value);
|
|
2210
2219
|
}
|
|
2211
2220
|
}
|
|
2212
2221
|
|
|
2213
2222
|
/** A Filter that implements the IN operator. */ class Zt extends Wt {
|
|
2214
|
-
constructor(t,
|
|
2215
|
-
super(t, "in" /* IN */ ,
|
|
2223
|
+
constructor(t, e) {
|
|
2224
|
+
super(t, "in" /* IN */ , e);
|
|
2216
2225
|
}
|
|
2217
2226
|
matches(t) {
|
|
2218
|
-
const
|
|
2219
|
-
return null !==
|
|
2227
|
+
const e = t.data.field(this.field);
|
|
2228
|
+
return null !== e && xt(this.value.arrayValue, e);
|
|
2220
2229
|
}
|
|
2221
2230
|
}
|
|
2222
2231
|
|
|
2223
|
-
/** A Filter that implements the not-in operator. */ class
|
|
2224
|
-
constructor(t,
|
|
2225
|
-
super(t, "not-in" /* NOT_IN */ ,
|
|
2232
|
+
/** A Filter that implements the not-in operator. */ class te extends Wt {
|
|
2233
|
+
constructor(t, e) {
|
|
2234
|
+
super(t, "not-in" /* NOT_IN */ , e);
|
|
2226
2235
|
}
|
|
2227
2236
|
matches(t) {
|
|
2228
2237
|
if (xt(this.value.arrayValue, {
|
|
2229
2238
|
nullValue: "NULL_VALUE"
|
|
2230
2239
|
})) return !1;
|
|
2231
|
-
const
|
|
2232
|
-
return null !==
|
|
2240
|
+
const e = t.data.field(this.field);
|
|
2241
|
+
return null !== e && !xt(this.value.arrayValue, e);
|
|
2233
2242
|
}
|
|
2234
2243
|
}
|
|
2235
2244
|
|
|
2236
|
-
/** A Filter that implements the array-contains-any operator. */ class
|
|
2237
|
-
constructor(t,
|
|
2238
|
-
super(t, "array-contains-any" /* ARRAY_CONTAINS_ANY */ ,
|
|
2245
|
+
/** A Filter that implements the array-contains-any operator. */ class ee extends Wt {
|
|
2246
|
+
constructor(t, e) {
|
|
2247
|
+
super(t, "array-contains-any" /* ARRAY_CONTAINS_ANY */ , e);
|
|
2239
2248
|
}
|
|
2240
2249
|
matches(t) {
|
|
2241
|
-
const
|
|
2242
|
-
return !(!Lt(
|
|
2250
|
+
const e = t.data.field(this.field);
|
|
2251
|
+
return !(!Lt(e) || !e.arrayValue.values) && e.arrayValue.values.some((t => xt(this.value.arrayValue, t)));
|
|
2243
2252
|
}
|
|
2244
2253
|
}
|
|
2245
2254
|
|
|
2246
|
-
// TODO(indexing): Change Bound.before to "inclusive"
|
|
2247
2255
|
/**
|
|
2248
2256
|
* Represents a bound of a query.
|
|
2249
2257
|
*
|
|
@@ -2257,30 +2265,30 @@ function Jt(t, n) {
|
|
|
2257
2265
|
* Bound provides a function to determine whether a document comes before or
|
|
2258
2266
|
* after a bound. This is influenced by whether the position is just before or
|
|
2259
2267
|
* just after the provided values.
|
|
2260
|
-
*/ class
|
|
2261
|
-
constructor(t,
|
|
2262
|
-
this.position = t, this.
|
|
2268
|
+
*/ class ne {
|
|
2269
|
+
constructor(t, e) {
|
|
2270
|
+
this.position = t, this.inclusive = e;
|
|
2263
2271
|
}
|
|
2264
2272
|
}
|
|
2265
2273
|
|
|
2266
2274
|
/**
|
|
2267
2275
|
* An ordering on a field, in some Direction. Direction defaults to ASCENDING.
|
|
2268
|
-
*/ class
|
|
2269
|
-
constructor(t,
|
|
2270
|
-
this.field = t, this.dir =
|
|
2276
|
+
*/ class re {
|
|
2277
|
+
constructor(t, e = "asc" /* ASCENDING */) {
|
|
2278
|
+
this.field = t, this.dir = e;
|
|
2271
2279
|
}
|
|
2272
2280
|
}
|
|
2273
2281
|
|
|
2274
|
-
function
|
|
2275
|
-
return t.dir ===
|
|
2282
|
+
function se(t, e) {
|
|
2283
|
+
return t.dir === e.dir && t.field.isEqual(e.field);
|
|
2276
2284
|
}
|
|
2277
2285
|
|
|
2278
|
-
function
|
|
2279
|
-
if (null === t) return null ===
|
|
2280
|
-
if (null ===
|
|
2281
|
-
if (t.
|
|
2282
|
-
for (let
|
|
2283
|
-
if (!Ft(t.position[
|
|
2286
|
+
function ie(t, e) {
|
|
2287
|
+
if (null === t) return null === e;
|
|
2288
|
+
if (null === e) return !1;
|
|
2289
|
+
if (t.inclusive !== e.inclusive || t.position.length !== e.position.length) return !1;
|
|
2290
|
+
for (let n = 0; n < t.position.length; n++) {
|
|
2291
|
+
if (!Ft(t.position[n], e.position[n])) return !1;
|
|
2284
2292
|
}
|
|
2285
2293
|
return !0;
|
|
2286
2294
|
}
|
|
@@ -2307,29 +2315,29 @@ function on(t, n) {
|
|
|
2307
2315
|
* query the RemoteStore results.
|
|
2308
2316
|
*
|
|
2309
2317
|
* Visible for testing.
|
|
2310
|
-
*/ class
|
|
2318
|
+
*/ class oe {
|
|
2311
2319
|
/**
|
|
2312
2320
|
* Initializes a Query with a path and optional additional query constraints.
|
|
2313
2321
|
* Path must currently be empty if this is a collection group query.
|
|
2314
2322
|
*/
|
|
2315
|
-
constructor(t,
|
|
2316
|
-
this.path = t, this.collectionGroup =
|
|
2323
|
+
constructor(t, e = null, n = [], r = [], s = null, i = "F" /* First */ , o = null, u = null) {
|
|
2324
|
+
this.path = t, this.collectionGroup = e, this.explicitOrderBy = n, this.filters = r,
|
|
2317
2325
|
this.limit = s, this.limitType = i, this.startAt = o, this.endAt = u, this.$ = null,
|
|
2318
2326
|
// The corresponding `Target` of this `Query` instance.
|
|
2319
2327
|
this.S = null, this.startAt, this.endAt;
|
|
2320
2328
|
}
|
|
2321
2329
|
}
|
|
2322
2330
|
|
|
2323
|
-
/** Creates a new Query for a query that matches all documents at `path` */ function
|
|
2331
|
+
/** Creates a new Query for a query that matches all documents at `path` */ function ue(t) {
|
|
2324
2332
|
return !ct(t.limit) && "L" /* Last */ === t.limitType;
|
|
2325
2333
|
}
|
|
2326
2334
|
|
|
2327
|
-
function
|
|
2335
|
+
function ce(t) {
|
|
2328
2336
|
return t.explicitOrderBy.length > 0 ? t.explicitOrderBy[0].field : null;
|
|
2329
2337
|
}
|
|
2330
2338
|
|
|
2331
|
-
function
|
|
2332
|
-
for (const
|
|
2339
|
+
function ae(t) {
|
|
2340
|
+
for (const e of t.filters) if (e.N()) return e.field;
|
|
2333
2341
|
return null;
|
|
2334
2342
|
}
|
|
2335
2343
|
|
|
@@ -2341,7 +2349,7 @@ function hn(t) {
|
|
|
2341
2349
|
* Returns whether the query matches a collection group rather than a specific
|
|
2342
2350
|
* collection.
|
|
2343
2351
|
*/
|
|
2344
|
-
function
|
|
2352
|
+
function he(t) {
|
|
2345
2353
|
return null !== t.collectionGroup;
|
|
2346
2354
|
}
|
|
2347
2355
|
|
|
@@ -2349,59 +2357,59 @@ function ln(t) {
|
|
|
2349
2357
|
* Returns the implicit order by constraint that is used to execute the Query,
|
|
2350
2358
|
* which can be different from the order by constraints the user provided (e.g.
|
|
2351
2359
|
* the SDK and backend always orders by `__name__`).
|
|
2352
|
-
*/ function
|
|
2353
|
-
const
|
|
2354
|
-
if (null ===
|
|
2355
|
-
|
|
2356
|
-
const t =
|
|
2357
|
-
if (null !== t && null ===
|
|
2360
|
+
*/ function le(t) {
|
|
2361
|
+
const e = b(t);
|
|
2362
|
+
if (null === e.$) {
|
|
2363
|
+
e.$ = [];
|
|
2364
|
+
const t = ae(e), n = ce(e);
|
|
2365
|
+
if (null !== t && null === n)
|
|
2358
2366
|
// In order to implicitly add key ordering, we must also add the
|
|
2359
2367
|
// inequality filter field for it to be a valid query.
|
|
2360
2368
|
// Note that the default inequality field and key ordering is ascending.
|
|
2361
|
-
t.isKeyField() ||
|
|
2369
|
+
t.isKeyField() || e.$.push(new re(t)), e.$.push(new re(tt.keyField(), "asc" /* ASCENDING */)); else {
|
|
2362
2370
|
let t = !1;
|
|
2363
|
-
for (const
|
|
2371
|
+
for (const n of e.explicitOrderBy) e.$.push(n), n.field.isKeyField() && (t = !0);
|
|
2364
2372
|
if (!t) {
|
|
2365
2373
|
// The order of the implicit key ordering always matches the last
|
|
2366
2374
|
// explicit order by
|
|
2367
|
-
const t =
|
|
2368
|
-
|
|
2375
|
+
const t = e.explicitOrderBy.length > 0 ? e.explicitOrderBy[e.explicitOrderBy.length - 1].dir : "asc" /* ASCENDING */;
|
|
2376
|
+
e.$.push(new re(tt.keyField(), t));
|
|
2369
2377
|
}
|
|
2370
2378
|
}
|
|
2371
2379
|
}
|
|
2372
|
-
return
|
|
2380
|
+
return e.$;
|
|
2373
2381
|
}
|
|
2374
2382
|
|
|
2375
2383
|
/**
|
|
2376
2384
|
* Converts this `Query` instance to it's corresponding `Target` representation.
|
|
2377
|
-
*/ function
|
|
2378
|
-
const
|
|
2379
|
-
if (!
|
|
2385
|
+
*/ function fe(t) {
|
|
2386
|
+
const e = b(t);
|
|
2387
|
+
if (!e.S) if ("F" /* First */ === e.limitType) e.S = Qt(e.path, e.collectionGroup, le(e), e.filters, e.limit, e.startAt, e.endAt); else {
|
|
2380
2388
|
// Flip the orderBy directions since we want the last results
|
|
2381
2389
|
const t = [];
|
|
2382
|
-
for (const
|
|
2383
|
-
const
|
|
2384
|
-
t.push(new
|
|
2390
|
+
for (const n of le(e)) {
|
|
2391
|
+
const e = "desc" /* DESCENDING */ === n.dir ? "asc" /* ASCENDING */ : "desc" /* DESCENDING */;
|
|
2392
|
+
t.push(new re(n.field, e));
|
|
2385
2393
|
}
|
|
2386
2394
|
// We need to swap the cursors to match the now-flipped query ordering.
|
|
2387
|
-
const
|
|
2395
|
+
const n = e.endAt ? new ne(e.endAt.position, !e.endAt.inclusive) : null, r = e.startAt ? new ne(e.startAt.position, !e.startAt.inclusive) : null;
|
|
2388
2396
|
// Now return as a LimitType.First query.
|
|
2389
|
-
|
|
2397
|
+
e.S = Qt(e.path, e.collectionGroup, t, e.filters, e.limit, n, r);
|
|
2390
2398
|
}
|
|
2391
|
-
return
|
|
2399
|
+
return e.S;
|
|
2392
2400
|
}
|
|
2393
2401
|
|
|
2394
|
-
function
|
|
2395
|
-
return function(t,
|
|
2396
|
-
if (t.limit !==
|
|
2397
|
-
if (t.orderBy.length !==
|
|
2398
|
-
for (let
|
|
2399
|
-
if (t.filters.length !==
|
|
2400
|
-
for (let s = 0; s < t.filters.length; s++) if (
|
|
2401
|
-
|
|
2402
|
-
var
|
|
2403
|
-
return t.collectionGroup ===
|
|
2404
|
-
}(
|
|
2402
|
+
function de(t, e) {
|
|
2403
|
+
return function(t, e) {
|
|
2404
|
+
if (t.limit !== e.limit) return !1;
|
|
2405
|
+
if (t.orderBy.length !== e.orderBy.length) return !1;
|
|
2406
|
+
for (let n = 0; n < t.orderBy.length; n++) if (!se(t.orderBy[n], e.orderBy[n])) return !1;
|
|
2407
|
+
if (t.filters.length !== e.filters.length) return !1;
|
|
2408
|
+
for (let s = 0; s < t.filters.length; s++) if (n = t.filters[s], r = e.filters[s],
|
|
2409
|
+
n.op !== r.op || !n.field.isEqual(r.field) || !Ft(n.value, r.value)) return !1;
|
|
2410
|
+
var n, r;
|
|
2411
|
+
return t.collectionGroup === e.collectionGroup && !!t.path.isEqual(e.path) && !!ie(t.startAt, e.startAt) && ie(t.endAt, e.endAt);
|
|
2412
|
+
}(fe(t), fe(e)) && t.limitType === e.limitType;
|
|
2405
2413
|
}
|
|
2406
2414
|
|
|
2407
2415
|
/**
|
|
@@ -2429,10 +2437,10 @@ function wn(t, n) {
|
|
|
2429
2437
|
* The return value is an IntegerValue if it can safely represent the value,
|
|
2430
2438
|
* otherwise a DoubleValue is returned.
|
|
2431
2439
|
*/
|
|
2432
|
-
function
|
|
2440
|
+
function we(t, e) {
|
|
2433
2441
|
return function(t) {
|
|
2434
2442
|
return "number" == typeof t && Number.isInteger(t) && !at(t) && t <= Number.MAX_SAFE_INTEGER && t >= Number.MIN_SAFE_INTEGER;
|
|
2435
|
-
}(
|
|
2443
|
+
}(e) ?
|
|
2436
2444
|
/**
|
|
2437
2445
|
* Returns an IntegerValue for `value`.
|
|
2438
2446
|
*/
|
|
@@ -2440,22 +2448,22 @@ function mn(t, n) {
|
|
|
2440
2448
|
return {
|
|
2441
2449
|
integerValue: "" + t
|
|
2442
2450
|
};
|
|
2443
|
-
}(
|
|
2451
|
+
}(e) : function(t, e) {
|
|
2444
2452
|
if (t.F) {
|
|
2445
|
-
if (isNaN(
|
|
2453
|
+
if (isNaN(e)) return {
|
|
2446
2454
|
doubleValue: "NaN"
|
|
2447
2455
|
};
|
|
2448
|
-
if (
|
|
2456
|
+
if (e === 1 / 0) return {
|
|
2449
2457
|
doubleValue: "Infinity"
|
|
2450
2458
|
};
|
|
2451
|
-
if (
|
|
2459
|
+
if (e === -1 / 0) return {
|
|
2452
2460
|
doubleValue: "-Infinity"
|
|
2453
2461
|
};
|
|
2454
2462
|
}
|
|
2455
2463
|
return {
|
|
2456
|
-
doubleValue: at(
|
|
2464
|
+
doubleValue: at(e) ? "-0" : e
|
|
2457
2465
|
};
|
|
2458
|
-
}(t,
|
|
2466
|
+
}(t, e);
|
|
2459
2467
|
}
|
|
2460
2468
|
|
|
2461
2469
|
/**
|
|
@@ -2474,7 +2482,7 @@ function mn(t, n) {
|
|
|
2474
2482
|
* See the License for the specific language governing permissions and
|
|
2475
2483
|
* limitations under the License.
|
|
2476
2484
|
*/
|
|
2477
|
-
/** Used to represent a field transform on a mutation. */ class
|
|
2485
|
+
/** Used to represent a field transform on a mutation. */ class me {
|
|
2478
2486
|
constructor() {
|
|
2479
2487
|
// Make sure that the structural type of `TransformOperation` is unique.
|
|
2480
2488
|
// See https://github.com/microsoft/TypeScript/issues/5451
|
|
@@ -2482,15 +2490,15 @@ function mn(t, n) {
|
|
|
2482
2490
|
}
|
|
2483
2491
|
}
|
|
2484
2492
|
|
|
2485
|
-
/** Transforms a value into a server-generated timestamp. */ class
|
|
2493
|
+
/** Transforms a value into a server-generated timestamp. */ class pe extends me {}
|
|
2486
2494
|
|
|
2487
|
-
/** Transforms an array value via a union operation. */ class
|
|
2495
|
+
/** Transforms an array value via a union operation. */ class ye extends me {
|
|
2488
2496
|
constructor(t) {
|
|
2489
2497
|
super(), this.elements = t;
|
|
2490
2498
|
}
|
|
2491
2499
|
}
|
|
2492
2500
|
|
|
2493
|
-
/** Transforms an array value via a remove operation. */ class
|
|
2501
|
+
/** Transforms an array value via a remove operation. */ class _e extends me {
|
|
2494
2502
|
constructor(t) {
|
|
2495
2503
|
super(), this.elements = t;
|
|
2496
2504
|
}
|
|
@@ -2501,9 +2509,9 @@ function mn(t, n) {
|
|
|
2501
2509
|
* transforms. Converts all field values to integers or doubles, but unlike the
|
|
2502
2510
|
* backend does not cap integer values at 2^63. Instead, JavaScript number
|
|
2503
2511
|
* arithmetic is used and precision loss can occur for values greater than 2^53.
|
|
2504
|
-
*/ class
|
|
2505
|
-
constructor(t,
|
|
2506
|
-
super(), this.q = t, this.O =
|
|
2512
|
+
*/ class ge extends me {
|
|
2513
|
+
constructor(t, e) {
|
|
2514
|
+
super(), this.q = t, this.O = e;
|
|
2507
2515
|
}
|
|
2508
2516
|
}
|
|
2509
2517
|
|
|
@@ -2523,9 +2531,9 @@ function mn(t, n) {
|
|
|
2523
2531
|
* See the License for the specific language governing permissions and
|
|
2524
2532
|
* limitations under the License.
|
|
2525
2533
|
*/
|
|
2526
|
-
/** A field path and the TransformOperation to perform upon it. */ class
|
|
2527
|
-
constructor(t,
|
|
2528
|
-
this.field = t, this.transform =
|
|
2534
|
+
/** A field path and the TransformOperation to perform upon it. */ class ve {
|
|
2535
|
+
constructor(t, e) {
|
|
2536
|
+
this.field = t, this.transform = e;
|
|
2529
2537
|
}
|
|
2530
2538
|
}
|
|
2531
2539
|
|
|
@@ -2533,18 +2541,18 @@ function mn(t, n) {
|
|
|
2533
2541
|
* Encodes a precondition for a mutation. This follows the model that the
|
|
2534
2542
|
* backend accepts with the special case of an explicit "empty" precondition
|
|
2535
2543
|
* (meaning no precondition).
|
|
2536
|
-
*/ class
|
|
2537
|
-
constructor(t,
|
|
2538
|
-
this.updateTime = t, this.exists =
|
|
2544
|
+
*/ class be {
|
|
2545
|
+
constructor(t, e) {
|
|
2546
|
+
this.updateTime = t, this.exists = e;
|
|
2539
2547
|
}
|
|
2540
2548
|
/** Creates a new empty Precondition. */ static none() {
|
|
2541
|
-
return new
|
|
2549
|
+
return new be;
|
|
2542
2550
|
}
|
|
2543
2551
|
/** Creates a new Precondition with an exists flag. */ static exists(t) {
|
|
2544
|
-
return new
|
|
2552
|
+
return new be(void 0, t);
|
|
2545
2553
|
}
|
|
2546
2554
|
/** Creates a new Precondition based on a version a document exists at. */ static updateTime(t) {
|
|
2547
|
-
return new
|
|
2555
|
+
return new be(t);
|
|
2548
2556
|
}
|
|
2549
2557
|
/** Returns whether this Precondition is empty. */ get isNone() {
|
|
2550
2558
|
return void 0 === this.updateTime && void 0 === this.exists;
|
|
@@ -2597,14 +2605,14 @@ function mn(t, n) {
|
|
|
2597
2605
|
* applyToLocalView() to implement the actual behavior of applying the mutation
|
|
2598
2606
|
* to some source document (see `setMutationApplyToRemoteDocument()` for an
|
|
2599
2607
|
* example).
|
|
2600
|
-
*/ class
|
|
2608
|
+
*/ class Ee {}
|
|
2601
2609
|
|
|
2602
2610
|
/**
|
|
2603
2611
|
* A mutation that creates or replaces the document at the given key with the
|
|
2604
2612
|
* object value contents.
|
|
2605
|
-
*/ class
|
|
2606
|
-
constructor(t,
|
|
2607
|
-
super(), this.key = t, this.value =
|
|
2613
|
+
*/ class Te extends Ee {
|
|
2614
|
+
constructor(t, e, n, r = []) {
|
|
2615
|
+
super(), this.key = t, this.value = e, this.precondition = n, this.fieldTransforms = r,
|
|
2608
2616
|
this.type = 0 /* Set */;
|
|
2609
2617
|
}
|
|
2610
2618
|
}
|
|
@@ -2621,16 +2629,16 @@ function mn(t, n) {
|
|
|
2621
2629
|
* is deleted.
|
|
2622
2630
|
* * When a field is not in the mask but is in the values, the values map is
|
|
2623
2631
|
* ignored.
|
|
2624
|
-
*/ class
|
|
2625
|
-
constructor(t,
|
|
2626
|
-
super(), this.key = t, this.data =
|
|
2632
|
+
*/ class Ie extends Ee {
|
|
2633
|
+
constructor(t, e, n, r, s = []) {
|
|
2634
|
+
super(), this.key = t, this.data = e, this.fieldMask = n, this.precondition = r,
|
|
2627
2635
|
this.fieldTransforms = s, this.type = 1 /* Patch */;
|
|
2628
2636
|
}
|
|
2629
2637
|
}
|
|
2630
2638
|
|
|
2631
|
-
/** A mutation that deletes the document at the given key. */ class
|
|
2632
|
-
constructor(t,
|
|
2633
|
-
super(), this.key = t, this.precondition =
|
|
2639
|
+
/** A mutation that deletes the document at the given key. */ class Ae extends Ee {
|
|
2640
|
+
constructor(t, e) {
|
|
2641
|
+
super(), this.key = t, this.precondition = e, this.type = 2 /* Delete */ , this.fieldTransforms = [];
|
|
2634
2642
|
}
|
|
2635
2643
|
}
|
|
2636
2644
|
|
|
@@ -2640,9 +2648,9 @@ function mn(t, n) {
|
|
|
2640
2648
|
*
|
|
2641
2649
|
* The `verify` operation is only used in Transactions, and this class serves
|
|
2642
2650
|
* primarily to facilitate serialization into protos.
|
|
2643
|
-
*/ class
|
|
2644
|
-
constructor(t,
|
|
2645
|
-
super(), this.key = t, this.precondition =
|
|
2651
|
+
*/ class Re extends Ee {
|
|
2652
|
+
constructor(t, e) {
|
|
2653
|
+
super(), this.key = t, this.precondition = e, this.type = 3 /* Verify */ , this.fieldTransforms = [];
|
|
2646
2654
|
}
|
|
2647
2655
|
}
|
|
2648
2656
|
|
|
@@ -2661,13 +2669,13 @@ function mn(t, n) {
|
|
|
2661
2669
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2662
2670
|
* See the License for the specific language governing permissions and
|
|
2663
2671
|
* limitations under the License.
|
|
2664
|
-
*/ const
|
|
2672
|
+
*/ const Pe = (() => {
|
|
2665
2673
|
const t = {
|
|
2666
2674
|
asc: "ASCENDING",
|
|
2667
2675
|
desc: "DESCENDING"
|
|
2668
2676
|
};
|
|
2669
2677
|
return t;
|
|
2670
|
-
})(),
|
|
2678
|
+
})(), Ve = (() => {
|
|
2671
2679
|
const t = {
|
|
2672
2680
|
"<": "LESS_THAN",
|
|
2673
2681
|
"<=": "LESS_THAN_OR_EQUAL",
|
|
@@ -2697,9 +2705,9 @@ function mn(t, n) {
|
|
|
2697
2705
|
* TODO(klimt): We can remove the databaseId argument if we keep the full
|
|
2698
2706
|
* resource name in documents.
|
|
2699
2707
|
*/
|
|
2700
|
-
class
|
|
2701
|
-
constructor(t,
|
|
2702
|
-
this.databaseId = t, this.F =
|
|
2708
|
+
class De {
|
|
2709
|
+
constructor(t, e) {
|
|
2710
|
+
this.databaseId = t, this.F = e;
|
|
2703
2711
|
}
|
|
2704
2712
|
}
|
|
2705
2713
|
|
|
@@ -2714,13 +2722,13 @@ class Nn {
|
|
|
2714
2722
|
/**
|
|
2715
2723
|
* Returns a value for a Date that's appropriate to put into a proto.
|
|
2716
2724
|
*/
|
|
2717
|
-
function
|
|
2725
|
+
function Ne(t, e) {
|
|
2718
2726
|
if (t.F) {
|
|
2719
|
-
return `${new Date(1e3 *
|
|
2727
|
+
return `${new Date(1e3 * e.seconds).toISOString().replace(/\.\d*/, "").replace("Z", "")}.${("000000000" + e.nanoseconds).slice(-9)}Z`;
|
|
2720
2728
|
}
|
|
2721
2729
|
return {
|
|
2722
|
-
seconds: "" +
|
|
2723
|
-
nanos:
|
|
2730
|
+
seconds: "" + e.seconds,
|
|
2731
|
+
nanos: e.nanoseconds
|
|
2724
2732
|
};
|
|
2725
2733
|
}
|
|
2726
2734
|
|
|
@@ -2729,232 +2737,234 @@ function $n(t, n) {
|
|
|
2729
2737
|
*
|
|
2730
2738
|
* Visible for testing.
|
|
2731
2739
|
*/
|
|
2732
|
-
function
|
|
2733
|
-
return t.F ?
|
|
2740
|
+
function $e(t, e) {
|
|
2741
|
+
return t.F ? e.toBase64() : e.toUint8Array();
|
|
2734
2742
|
}
|
|
2735
2743
|
|
|
2736
|
-
function
|
|
2737
|
-
return
|
|
2744
|
+
function Se(t, e) {
|
|
2745
|
+
return Ne(t, e.toTimestamp());
|
|
2738
2746
|
}
|
|
2739
2747
|
|
|
2740
|
-
function
|
|
2748
|
+
function Fe(t) {
|
|
2741
2749
|
return v(!!t), vt.fromTimestamp(function(t) {
|
|
2742
|
-
const
|
|
2743
|
-
return new gt(
|
|
2750
|
+
const e = Rt(t);
|
|
2751
|
+
return new gt(e.seconds, e.nanos);
|
|
2744
2752
|
}(t));
|
|
2745
2753
|
}
|
|
2746
2754
|
|
|
2747
|
-
function
|
|
2755
|
+
function xe(t, e) {
|
|
2748
2756
|
return function(t) {
|
|
2749
2757
|
return new X([ "projects", t.projectId, "databases", t.database ]);
|
|
2750
|
-
}(t).child("documents").child(
|
|
2758
|
+
}(t).child("documents").child(e).canonicalString();
|
|
2751
2759
|
}
|
|
2752
2760
|
|
|
2753
|
-
function
|
|
2754
|
-
return
|
|
2761
|
+
function qe(t, e) {
|
|
2762
|
+
return xe(t.databaseId, e.path);
|
|
2755
2763
|
}
|
|
2756
2764
|
|
|
2757
|
-
function
|
|
2758
|
-
const
|
|
2759
|
-
const
|
|
2760
|
-
return v(
|
|
2761
|
-
}(
|
|
2762
|
-
if (
|
|
2763
|
-
if (
|
|
2764
|
-
return new
|
|
2765
|
+
function Oe(t, e) {
|
|
2766
|
+
const n = function(t) {
|
|
2767
|
+
const e = X.fromString(t);
|
|
2768
|
+
return v(We(e)), e;
|
|
2769
|
+
}(e);
|
|
2770
|
+
if (n.get(1) !== t.databaseId.projectId) throw new U(A, "Tried to deserialize key from different project: " + n.get(1) + " vs " + t.databaseId.projectId);
|
|
2771
|
+
if (n.get(3) !== t.databaseId.database) throw new U(A, "Tried to deserialize key from different database: " + n.get(3) + " vs " + t.databaseId.database);
|
|
2772
|
+
return new et((v((r = n).length > 4 && "documents" === r.get(4)), r.popFirst(5)));
|
|
2765
2773
|
var r;
|
|
2766
2774
|
/** Creates a Document proto from key and fields (but no create/update time) */}
|
|
2767
2775
|
|
|
2768
|
-
function
|
|
2769
|
-
return
|
|
2776
|
+
function Ce(t, e) {
|
|
2777
|
+
return xe(t.databaseId, e);
|
|
2770
2778
|
}
|
|
2771
2779
|
|
|
2772
|
-
function
|
|
2780
|
+
function Le(t) {
|
|
2773
2781
|
return new X([ "projects", t.databaseId.projectId, "databases", t.databaseId.database ]).canonicalString();
|
|
2774
2782
|
}
|
|
2775
2783
|
|
|
2776
|
-
function
|
|
2784
|
+
function Ue(t, e, n) {
|
|
2777
2785
|
return {
|
|
2778
|
-
name:
|
|
2779
|
-
fields:
|
|
2786
|
+
name: qe(t, e),
|
|
2787
|
+
fields: n.value.mapValue.fields
|
|
2780
2788
|
};
|
|
2781
2789
|
}
|
|
2782
2790
|
|
|
2783
|
-
function
|
|
2784
|
-
return "found" in
|
|
2785
|
-
v(!!
|
|
2786
|
-
const
|
|
2791
|
+
function ke(t, e) {
|
|
2792
|
+
return "found" in e ? function(t, e) {
|
|
2793
|
+
v(!!e.found), e.found.name, e.found.updateTime;
|
|
2794
|
+
const n = Oe(t, e.found.name), r = Fe(e.found.updateTime), s = new Bt({
|
|
2787
2795
|
mapValue: {
|
|
2788
|
-
fields:
|
|
2796
|
+
fields: e.found.fields
|
|
2789
2797
|
}
|
|
2790
2798
|
});
|
|
2791
|
-
return zt.newFoundDocument(
|
|
2792
|
-
}(t,
|
|
2793
|
-
v(!!
|
|
2794
|
-
const
|
|
2795
|
-
return zt.newNoDocument(
|
|
2796
|
-
}(t,
|
|
2797
|
-
}
|
|
2798
|
-
|
|
2799
|
-
function
|
|
2800
|
-
let
|
|
2801
|
-
if (
|
|
2802
|
-
update:
|
|
2803
|
-
}; else if (
|
|
2804
|
-
delete:
|
|
2805
|
-
}; else if (
|
|
2806
|
-
update:
|
|
2807
|
-
updateMask:
|
|
2799
|
+
return zt.newFoundDocument(n, r, s);
|
|
2800
|
+
}(t, e) : "missing" in e ? function(t, e) {
|
|
2801
|
+
v(!!e.missing), v(!!e.readTime);
|
|
2802
|
+
const n = Oe(t, e.missing), r = Fe(e.readTime);
|
|
2803
|
+
return zt.newNoDocument(n, r);
|
|
2804
|
+
}(t, e) : g();
|
|
2805
|
+
}
|
|
2806
|
+
|
|
2807
|
+
function je(t, e) {
|
|
2808
|
+
let n;
|
|
2809
|
+
if (e instanceof Te) n = {
|
|
2810
|
+
update: Ue(t, e.key, e.value)
|
|
2811
|
+
}; else if (e instanceof Ae) n = {
|
|
2812
|
+
delete: qe(t, e.key)
|
|
2813
|
+
}; else if (e instanceof Ie) n = {
|
|
2814
|
+
update: Ue(t, e.key, e.data),
|
|
2815
|
+
updateMask: Qe(e.fieldMask)
|
|
2808
2816
|
}; else {
|
|
2809
|
-
if (!(
|
|
2810
|
-
|
|
2811
|
-
verify:
|
|
2817
|
+
if (!(e instanceof Re)) return g();
|
|
2818
|
+
n = {
|
|
2819
|
+
verify: qe(t, e.key)
|
|
2812
2820
|
};
|
|
2813
2821
|
}
|
|
2814
|
-
return
|
|
2815
|
-
const
|
|
2816
|
-
if (
|
|
2817
|
-
fieldPath:
|
|
2822
|
+
return e.fieldTransforms.length > 0 && (n.updateTransforms = e.fieldTransforms.map((t => function(t, e) {
|
|
2823
|
+
const n = e.transform;
|
|
2824
|
+
if (n instanceof pe) return {
|
|
2825
|
+
fieldPath: e.field.canonicalString(),
|
|
2818
2826
|
setToServerValue: "REQUEST_TIME"
|
|
2819
2827
|
};
|
|
2820
|
-
if (
|
|
2821
|
-
fieldPath:
|
|
2828
|
+
if (n instanceof ye) return {
|
|
2829
|
+
fieldPath: e.field.canonicalString(),
|
|
2822
2830
|
appendMissingElements: {
|
|
2823
|
-
values:
|
|
2831
|
+
values: n.elements
|
|
2824
2832
|
}
|
|
2825
2833
|
};
|
|
2826
|
-
if (
|
|
2827
|
-
fieldPath:
|
|
2834
|
+
if (n instanceof _e) return {
|
|
2835
|
+
fieldPath: e.field.canonicalString(),
|
|
2828
2836
|
removeAllFromArray: {
|
|
2829
|
-
values:
|
|
2837
|
+
values: n.elements
|
|
2830
2838
|
}
|
|
2831
2839
|
};
|
|
2832
|
-
if (
|
|
2833
|
-
fieldPath:
|
|
2834
|
-
increment:
|
|
2840
|
+
if (n instanceof ge) return {
|
|
2841
|
+
fieldPath: e.field.canonicalString(),
|
|
2842
|
+
increment: n.O
|
|
2835
2843
|
};
|
|
2836
2844
|
throw g();
|
|
2837
|
-
}(0, t)))),
|
|
2838
|
-
return void 0 !==
|
|
2839
|
-
updateTime:
|
|
2840
|
-
} : void 0 !==
|
|
2841
|
-
exists:
|
|
2845
|
+
}(0, t)))), e.precondition.isNone || (n.currentDocument = function(t, e) {
|
|
2846
|
+
return void 0 !== e.updateTime ? {
|
|
2847
|
+
updateTime: Se(t, e.updateTime)
|
|
2848
|
+
} : void 0 !== e.exists ? {
|
|
2849
|
+
exists: e.exists
|
|
2842
2850
|
} : g();
|
|
2843
|
-
}(t,
|
|
2851
|
+
}(t, e.precondition)), n;
|
|
2844
2852
|
}
|
|
2845
2853
|
|
|
2846
|
-
function
|
|
2854
|
+
function Me(t, e) {
|
|
2847
2855
|
// Dissect the path into parent, collectionId, and optional key filter.
|
|
2848
|
-
const
|
|
2856
|
+
const n = {
|
|
2849
2857
|
structuredQuery: {}
|
|
2850
|
-
}, r =
|
|
2851
|
-
null !==
|
|
2852
|
-
collectionId:
|
|
2858
|
+
}, r = e.path;
|
|
2859
|
+
null !== e.collectionGroup ? (n.parent = Ce(t, r), n.structuredQuery.from = [ {
|
|
2860
|
+
collectionId: e.collectionGroup,
|
|
2853
2861
|
allDescendants: !0
|
|
2854
|
-
} ]) : (
|
|
2862
|
+
} ]) : (n.parent = Ce(t, r.popLast()), n.structuredQuery.from = [ {
|
|
2855
2863
|
collectionId: r.lastSegment()
|
|
2856
2864
|
} ]);
|
|
2857
2865
|
const s = function(t) {
|
|
2858
2866
|
if (0 === t.length) return;
|
|
2859
|
-
const
|
|
2867
|
+
const e = t.map((t =>
|
|
2860
2868
|
// visible for testing
|
|
2861
2869
|
function(t) {
|
|
2862
2870
|
if ("==" /* EQUAL */ === t.op) {
|
|
2863
2871
|
if (kt(t.value)) return {
|
|
2864
2872
|
unaryFilter: {
|
|
2865
|
-
field:
|
|
2873
|
+
field: Ge(t.field),
|
|
2866
2874
|
op: "IS_NAN"
|
|
2867
2875
|
}
|
|
2868
2876
|
};
|
|
2869
2877
|
if (Ut(t.value)) return {
|
|
2870
2878
|
unaryFilter: {
|
|
2871
|
-
field:
|
|
2879
|
+
field: Ge(t.field),
|
|
2872
2880
|
op: "IS_NULL"
|
|
2873
2881
|
}
|
|
2874
2882
|
};
|
|
2875
2883
|
} else if ("!=" /* NOT_EQUAL */ === t.op) {
|
|
2876
2884
|
if (kt(t.value)) return {
|
|
2877
2885
|
unaryFilter: {
|
|
2878
|
-
field:
|
|
2886
|
+
field: Ge(t.field),
|
|
2879
2887
|
op: "IS_NOT_NAN"
|
|
2880
2888
|
}
|
|
2881
2889
|
};
|
|
2882
2890
|
if (Ut(t.value)) return {
|
|
2883
2891
|
unaryFilter: {
|
|
2884
|
-
field:
|
|
2892
|
+
field: Ge(t.field),
|
|
2885
2893
|
op: "IS_NOT_NULL"
|
|
2886
2894
|
}
|
|
2887
2895
|
};
|
|
2888
2896
|
}
|
|
2889
2897
|
return {
|
|
2890
2898
|
fieldFilter: {
|
|
2891
|
-
field:
|
|
2892
|
-
op:
|
|
2899
|
+
field: Ge(t.field),
|
|
2900
|
+
op: ze(t.op),
|
|
2893
2901
|
value: t.value
|
|
2894
2902
|
}
|
|
2895
2903
|
};
|
|
2896
2904
|
}(t)));
|
|
2897
|
-
if (1 ===
|
|
2905
|
+
if (1 === e.length) return e[0];
|
|
2898
2906
|
return {
|
|
2899
2907
|
compositeFilter: {
|
|
2900
2908
|
op: "AND",
|
|
2901
|
-
filters:
|
|
2909
|
+
filters: e
|
|
2902
2910
|
}
|
|
2903
2911
|
};
|
|
2904
|
-
}(
|
|
2905
|
-
s && (
|
|
2912
|
+
}(e.filters);
|
|
2913
|
+
s && (n.structuredQuery.where = s);
|
|
2906
2914
|
const i = function(t) {
|
|
2907
2915
|
if (0 === t.length) return;
|
|
2908
2916
|
return t.map((t =>
|
|
2909
2917
|
// visible for testing
|
|
2910
2918
|
function(t) {
|
|
2911
2919
|
return {
|
|
2912
|
-
field:
|
|
2913
|
-
direction:
|
|
2920
|
+
field: Ge(t.field),
|
|
2921
|
+
direction: Be(t.dir)
|
|
2914
2922
|
};
|
|
2915
2923
|
}(t)));
|
|
2916
|
-
}(
|
|
2917
|
-
i && (
|
|
2918
|
-
const o = function(t,
|
|
2919
|
-
return t.F || ct(
|
|
2920
|
-
value:
|
|
2924
|
+
}(e.orderBy);
|
|
2925
|
+
i && (n.structuredQuery.orderBy = i);
|
|
2926
|
+
const o = function(t, e) {
|
|
2927
|
+
return t.F || ct(e) ? e : {
|
|
2928
|
+
value: e
|
|
2921
2929
|
};
|
|
2922
|
-
}(t,
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2930
|
+
}(t, e.limit);
|
|
2931
|
+
var u;
|
|
2932
|
+
return null !== o && (n.structuredQuery.limit = o), e.startAt && (n.structuredQuery.startAt = {
|
|
2933
|
+
before: (u = e.startAt).inclusive,
|
|
2934
|
+
values: u.position
|
|
2935
|
+
}), e.endAt && (n.structuredQuery.endAt = function(t) {
|
|
2936
|
+
return {
|
|
2937
|
+
before: !t.inclusive,
|
|
2938
|
+
values: t.position
|
|
2939
|
+
};
|
|
2940
|
+
}
|
|
2941
|
+
// visible for testing
|
|
2942
|
+
(e.endAt)), n;
|
|
2932
2943
|
}
|
|
2933
2944
|
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
return Vn[t];
|
|
2945
|
+
function Be(t) {
|
|
2946
|
+
return Pe[t];
|
|
2937
2947
|
}
|
|
2938
2948
|
|
|
2939
2949
|
// visible for testing
|
|
2940
|
-
function
|
|
2941
|
-
return
|
|
2950
|
+
function ze(t) {
|
|
2951
|
+
return Ve[t];
|
|
2942
2952
|
}
|
|
2943
2953
|
|
|
2944
|
-
function
|
|
2954
|
+
function Ge(t) {
|
|
2945
2955
|
return {
|
|
2946
2956
|
fieldPath: t.canonicalString()
|
|
2947
2957
|
};
|
|
2948
2958
|
}
|
|
2949
2959
|
|
|
2950
|
-
function
|
|
2951
|
-
const
|
|
2952
|
-
return t.fields.forEach((t =>
|
|
2953
|
-
fieldPaths:
|
|
2960
|
+
function Qe(t) {
|
|
2961
|
+
const e = [];
|
|
2962
|
+
return t.fields.forEach((t => e.push(t.canonicalString()))), {
|
|
2963
|
+
fieldPaths: e
|
|
2954
2964
|
};
|
|
2955
2965
|
}
|
|
2956
2966
|
|
|
2957
|
-
function
|
|
2967
|
+
function We(t) {
|
|
2958
2968
|
// Resource names have at least 4 components (project ID, database ID)
|
|
2959
2969
|
return t.length >= 4 && "projects" === t.get(0) && "databases" === t.get(2);
|
|
2960
2970
|
}
|
|
@@ -2974,8 +2984,8 @@ function Hn(t) {
|
|
|
2974
2984
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2975
2985
|
* See the License for the specific language governing permissions and
|
|
2976
2986
|
* limitations under the License.
|
|
2977
|
-
*/ function
|
|
2978
|
-
return new
|
|
2987
|
+
*/ function Ye(t) {
|
|
2988
|
+
return new De(t, /* useProto3Json= */ !0);
|
|
2979
2989
|
}
|
|
2980
2990
|
|
|
2981
2991
|
/**
|
|
@@ -3003,7 +3013,7 @@ function Hn(t) {
|
|
|
3003
3013
|
* base delay. This prevents clients from accidentally synchronizing their
|
|
3004
3014
|
* delays causing spikes of load to the backend.
|
|
3005
3015
|
*/
|
|
3006
|
-
class
|
|
3016
|
+
class He {
|
|
3007
3017
|
constructor(
|
|
3008
3018
|
/**
|
|
3009
3019
|
* The AsyncQueue to run backoff operations on.
|
|
@@ -3012,13 +3022,13 @@ class Jn {
|
|
|
3012
3022
|
/**
|
|
3013
3023
|
* The ID to use when scheduling backoff operations on the AsyncQueue.
|
|
3014
3024
|
*/
|
|
3015
|
-
|
|
3025
|
+
e,
|
|
3016
3026
|
/**
|
|
3017
3027
|
* The initial delay (used as the base delay on the first retry attempt).
|
|
3018
3028
|
* Note that jitter will still be applied, so the actual delay could be as
|
|
3019
3029
|
* little as 0.5*initialDelayMs.
|
|
3020
3030
|
*/
|
|
3021
|
-
|
|
3031
|
+
n = 1e3
|
|
3022
3032
|
/**
|
|
3023
3033
|
* The multiplier to use to determine the extended base delay after each
|
|
3024
3034
|
* attempt.
|
|
@@ -3028,7 +3038,7 @@ class Jn {
|
|
|
3028
3038
|
* Note that jitter will still be applied, so the actual delay could be as
|
|
3029
3039
|
* much as 1.5*maxDelayMs.
|
|
3030
3040
|
*/ , s = 6e4) {
|
|
3031
|
-
this.C = t, this.timerId =
|
|
3041
|
+
this.C = t, this.timerId = e, this.L = n, this.U = r, this.k = s, this.j = 0, this.M = null,
|
|
3032
3042
|
/** The last backoff attempt, as epoch milliseconds. */
|
|
3033
3043
|
this.B = Date.now(), this.reset();
|
|
3034
3044
|
}
|
|
@@ -3056,9 +3066,9 @@ class Jn {
|
|
|
3056
3066
|
this.cancel();
|
|
3057
3067
|
// First schedule using the current base (which may be 0 and should be
|
|
3058
3068
|
// honored as such).
|
|
3059
|
-
const
|
|
3069
|
+
const e = Math.floor(this.j + this.Y()), n = Math.max(0, Date.now() - this.B), r = Math.max(0, e - n);
|
|
3060
3070
|
// Guard against lastAttemptTime being in the future due to a clock change.
|
|
3061
|
-
r > 0 && m("ExponentialBackoff", `Backing off for ${r} ms (base delay: ${this.j} ms, delay with jitter: ${
|
|
3071
|
+
r > 0 && m("ExponentialBackoff", `Backing off for ${r} ms (base delay: ${this.j} ms, delay with jitter: ${e} ms, last attempt: ${n} ms ago)`),
|
|
3062
3072
|
this.M = this.C.enqueueAfterDelay(this.timerId, r, (() => (this.B = Date.now(),
|
|
3063
3073
|
t()))),
|
|
3064
3074
|
// Apply backoff factor to determine next delay and ensure it is within
|
|
@@ -3101,22 +3111,22 @@ class Jn {
|
|
|
3101
3111
|
* An implementation of Datastore that exposes additional state for internal
|
|
3102
3112
|
* consumption.
|
|
3103
3113
|
*/
|
|
3104
|
-
class
|
|
3105
|
-
constructor(t,
|
|
3106
|
-
super(), this.authCredentials = t, this.appCheckCredentials =
|
|
3114
|
+
class Ke extends class {} {
|
|
3115
|
+
constructor(t, e, n, r) {
|
|
3116
|
+
super(), this.authCredentials = t, this.appCheckCredentials = e, this.K = n, this.q = r,
|
|
3107
3117
|
this.J = !1;
|
|
3108
3118
|
}
|
|
3109
3119
|
X() {
|
|
3110
3120
|
if (this.J) throw new U(S, "The client has already been terminated.");
|
|
3111
3121
|
}
|
|
3112
|
-
/** Invokes the provided RPC with auth and AppCheck tokens. */ m(t,
|
|
3113
|
-
return this.X(), Promise.all([ this.authCredentials.getToken(), this.appCheckCredentials.getToken() ]).then((([r, s]) => this.K.m(t,
|
|
3122
|
+
/** Invokes the provided RPC with auth and AppCheck tokens. */ m(t, e, n) {
|
|
3123
|
+
return this.X(), Promise.all([ this.authCredentials.getToken(), this.appCheckCredentials.getToken() ]).then((([r, s]) => this.K.m(t, e, n, r, s))).catch((t => {
|
|
3114
3124
|
throw "FirebaseError" === t.name ? (t.code === N && (this.authCredentials.invalidateToken(),
|
|
3115
3125
|
this.appCheckCredentials.invalidateToken()), t) : new U(I, t.toString());
|
|
3116
3126
|
}));
|
|
3117
3127
|
}
|
|
3118
|
-
/** Invokes the provided RPC with streamed results with auth and AppCheck tokens. */ T(t,
|
|
3119
|
-
return this.X(), Promise.all([ this.authCredentials.getToken(), this.appCheckCredentials.getToken() ]).then((([r, s]) => this.K.T(t,
|
|
3128
|
+
/** Invokes the provided RPC with streamed results with auth and AppCheck tokens. */ T(t, e, n) {
|
|
3129
|
+
return this.X(), Promise.all([ this.authCredentials.getToken(), this.appCheckCredentials.getToken() ]).then((([r, s]) => this.K.T(t, e, n, r, s))).catch((t => {
|
|
3120
3130
|
throw "FirebaseError" === t.name ? (t.code === N && (this.authCredentials.invalidateToken(),
|
|
3121
3131
|
this.appCheckCredentials.invalidateToken()), t) : new U(I, t.toString());
|
|
3122
3132
|
}));
|
|
@@ -3128,40 +3138,40 @@ class Xn extends class {} {
|
|
|
3128
3138
|
|
|
3129
3139
|
// TODO(firestorexp): Make sure there is only one Datastore instance per
|
|
3130
3140
|
// firestore-exp client.
|
|
3131
|
-
async function
|
|
3132
|
-
const
|
|
3133
|
-
writes:
|
|
3141
|
+
async function Je(t, e) {
|
|
3142
|
+
const n = b(t), r = Le(n.q) + "/documents", s = {
|
|
3143
|
+
writes: e.map((t => je(n.q, t)))
|
|
3134
3144
|
};
|
|
3135
|
-
await
|
|
3145
|
+
await n.m("Commit", r, s);
|
|
3136
3146
|
}
|
|
3137
3147
|
|
|
3138
|
-
async function
|
|
3139
|
-
const
|
|
3140
|
-
documents:
|
|
3141
|
-
}, i = await
|
|
3148
|
+
async function Xe(t, e) {
|
|
3149
|
+
const n = b(t), r = Le(n.q) + "/documents", s = {
|
|
3150
|
+
documents: e.map((t => qe(n.q, t)))
|
|
3151
|
+
}, i = await n.T("BatchGetDocuments", r, s), o = new Map;
|
|
3142
3152
|
i.forEach((t => {
|
|
3143
|
-
const
|
|
3144
|
-
o.set(
|
|
3153
|
+
const e = ke(n.q, t);
|
|
3154
|
+
o.set(e.key.toString(), e);
|
|
3145
3155
|
}));
|
|
3146
3156
|
const u = [];
|
|
3147
|
-
return
|
|
3148
|
-
const
|
|
3149
|
-
v(!!
|
|
3157
|
+
return e.forEach((t => {
|
|
3158
|
+
const e = o.get(t.toString());
|
|
3159
|
+
v(!!e), u.push(e);
|
|
3150
3160
|
})), u;
|
|
3151
3161
|
}
|
|
3152
3162
|
|
|
3153
|
-
async function
|
|
3154
|
-
const
|
|
3155
|
-
return (await
|
|
3163
|
+
async function Ze(t, e) {
|
|
3164
|
+
const n = b(t), r = Me(n.q, fe(e));
|
|
3165
|
+
return (await n.T("RunQuery", r.parent, {
|
|
3156
3166
|
structuredQuery: r.structuredQuery
|
|
3157
|
-
})).filter((t => !!t.document)).map((t => function(t,
|
|
3158
|
-
const r =
|
|
3167
|
+
})).filter((t => !!t.document)).map((t => function(t, e, n) {
|
|
3168
|
+
const r = Oe(t, e.name), s = Fe(e.updateTime), i = new Bt({
|
|
3159
3169
|
mapValue: {
|
|
3160
|
-
fields:
|
|
3170
|
+
fields: e.fields
|
|
3161
3171
|
}
|
|
3162
3172
|
}), o = zt.newFoundDocument(r, s, i);
|
|
3163
|
-
return
|
|
3164
|
-
}(
|
|
3173
|
+
return n && o.setHasCommittedMutations(), n ? o.setHasCommittedMutations() : o;
|
|
3174
|
+
}(n.q, t.document, void 0)));
|
|
3165
3175
|
}
|
|
3166
3176
|
|
|
3167
3177
|
/**
|
|
@@ -3179,7 +3189,7 @@ async function ne(t, n) {
|
|
|
3179
3189
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3180
3190
|
* See the License for the specific language governing permissions and
|
|
3181
3191
|
* limitations under the License.
|
|
3182
|
-
*/ const
|
|
3192
|
+
*/ const tn = new Map;
|
|
3183
3193
|
|
|
3184
3194
|
/**
|
|
3185
3195
|
* An instance map that ensures only one Datastore exists per Firestore
|
|
@@ -3190,19 +3200,19 @@ async function ne(t, n) {
|
|
|
3190
3200
|
* instance. Callers must invoke removeComponents() when the Firestore
|
|
3191
3201
|
* instance is terminated.
|
|
3192
3202
|
*/
|
|
3193
|
-
function
|
|
3203
|
+
function en(t) {
|
|
3194
3204
|
if (t._terminated) throw new U(S, "The client has already been terminated.");
|
|
3195
|
-
if (!
|
|
3205
|
+
if (!tn.has(t)) {
|
|
3196
3206
|
m("ComponentProvider", "Initializing Datastore");
|
|
3197
3207
|
const i = function(t) {
|
|
3198
3208
|
return new wt(t, fetch.bind(null));
|
|
3199
|
-
}((
|
|
3200
|
-
new H(
|
|
3201
|
-
return new
|
|
3209
|
+
}((e = t._databaseId, n = t.app.options.appId || "", r = t._persistenceKey, s = t._freezeSettings(),
|
|
3210
|
+
new H(e, n, r, s.host, s.ssl, s.experimentalForceLongPolling, s.experimentalAutoDetectLongPolling, s.useFetchStreams))), o = Ye(t._databaseId), u = function(t, e, n, r) {
|
|
3211
|
+
return new Ke(t, e, n, r);
|
|
3202
3212
|
}(t._authCredentials, t._appCheckCredentials, i, o);
|
|
3203
|
-
|
|
3213
|
+
tn.set(t, u);
|
|
3204
3214
|
}
|
|
3205
|
-
var
|
|
3215
|
+
var e, n, r, s;
|
|
3206
3216
|
/**
|
|
3207
3217
|
* @license
|
|
3208
3218
|
* Copyright 2018 Google LLC
|
|
@@ -3218,7 +3228,7 @@ function re(t) {
|
|
|
3218
3228
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3219
3229
|
* See the License for the specific language governing permissions and
|
|
3220
3230
|
* limitations under the License.
|
|
3221
|
-
*/ return
|
|
3231
|
+
*/ return tn.get(t);
|
|
3222
3232
|
}
|
|
3223
3233
|
|
|
3224
3234
|
/**
|
|
@@ -3230,21 +3240,21 @@ function re(t) {
|
|
|
3230
3240
|
* user-supplied `FirestoreSettings` object. This is a separate type so that
|
|
3231
3241
|
* defaults can be supplied and the value can be checked for equality.
|
|
3232
3242
|
*/
|
|
3233
|
-
class
|
|
3243
|
+
class nn {
|
|
3234
3244
|
constructor(t) {
|
|
3235
|
-
var
|
|
3245
|
+
var e;
|
|
3236
3246
|
if (void 0 === t.host) {
|
|
3237
3247
|
if (void 0 !== t.ssl) throw new U(A, "Can't provide ssl option if host option is not set");
|
|
3238
3248
|
this.host = "firestore.googleapis.com", this.ssl = true;
|
|
3239
|
-
} else this.host = t.host, this.ssl = null === (
|
|
3249
|
+
} else this.host = t.host, this.ssl = null === (e = t.ssl) || void 0 === e || e;
|
|
3240
3250
|
if (this.credentials = t.credentials, this.ignoreUndefinedProperties = !!t.ignoreUndefinedProperties,
|
|
3241
3251
|
void 0 === t.cacheSizeBytes) this.cacheSizeBytes = 41943040; else {
|
|
3242
3252
|
if (-1 !== t.cacheSizeBytes && t.cacheSizeBytes < 1048576) throw new U(A, "cacheSizeBytes must be at least 1048576");
|
|
3243
3253
|
this.cacheSizeBytes = t.cacheSizeBytes;
|
|
3244
3254
|
}
|
|
3245
3255
|
this.experimentalForceLongPolling = !!t.experimentalForceLongPolling, this.experimentalAutoDetectLongPolling = !!t.experimentalAutoDetectLongPolling,
|
|
3246
|
-
this.useFetchStreams = !!t.useFetchStreams, function(t,
|
|
3247
|
-
if (!0 ===
|
|
3256
|
+
this.useFetchStreams = !!t.useFetchStreams, function(t, e, n, r) {
|
|
3257
|
+
if (!0 === e && !0 === r) throw new U(A, `${t} and ${n} cannot be used together.`);
|
|
3248
3258
|
}("experimentalForceLongPolling", t.experimentalForceLongPolling, "experimentalAutoDetectLongPolling", t.experimentalAutoDetectLongPolling);
|
|
3249
3259
|
}
|
|
3250
3260
|
isEqual(t) {
|
|
@@ -3272,14 +3282,14 @@ class se {
|
|
|
3272
3282
|
* The Cloud Firestore service interface.
|
|
3273
3283
|
*
|
|
3274
3284
|
* Do not call this constructor directly. Instead, use {@link getFirestore}.
|
|
3275
|
-
*/ class
|
|
3285
|
+
*/ class rn {
|
|
3276
3286
|
/** @hideconstructor */
|
|
3277
|
-
constructor(t,
|
|
3278
|
-
this._authCredentials =
|
|
3287
|
+
constructor(t, e, n) {
|
|
3288
|
+
this._authCredentials = e, this._appCheckCredentials = n,
|
|
3279
3289
|
/**
|
|
3280
3290
|
* Whether it's a Firestore or Firestore Lite instance.
|
|
3281
3291
|
*/
|
|
3282
|
-
this.type = "firestore-lite", this._persistenceKey = "(lite)", this._settings = new
|
|
3292
|
+
this.type = "firestore-lite", this._persistenceKey = "(lite)", this._settings = new nn({}),
|
|
3283
3293
|
this._settingsFrozen = !1, t instanceof K ? this._databaseId = t : (this._app = t,
|
|
3284
3294
|
this._databaseId = function(t) {
|
|
3285
3295
|
if (!Object.prototype.hasOwnProperty.apply(t.options, [ "projectId" ])) throw new U(A, '"projectId" not provided in firebase.initializeApp.');
|
|
@@ -3312,14 +3322,14 @@ class se {
|
|
|
3312
3322
|
}
|
|
3313
3323
|
_setSettings(t) {
|
|
3314
3324
|
if (this._settingsFrozen) throw new U(S, "Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");
|
|
3315
|
-
this._settings = new
|
|
3325
|
+
this._settings = new nn(t), void 0 !== t.credentials && (this._authCredentials = function(t) {
|
|
3316
3326
|
if (!t) return new M;
|
|
3317
3327
|
switch (t.type) {
|
|
3318
3328
|
case "gapi":
|
|
3319
|
-
const
|
|
3329
|
+
const e = t.client;
|
|
3320
3330
|
// Make sure this really is a Gapi client.
|
|
3321
|
-
return v(!("object" != typeof
|
|
3322
|
-
new Q(
|
|
3331
|
+
return v(!("object" != typeof e || null === e || !e.auth || !e.auth.getAuthHeaderValueForFirstParty)),
|
|
3332
|
+
new Q(e, t.sessionIndex || "0", t.iamToken || null);
|
|
3323
3333
|
|
|
3324
3334
|
case "provider":
|
|
3325
3335
|
return t.client;
|
|
@@ -3353,17 +3363,17 @@ class se {
|
|
|
3353
3363
|
* Only ever called once.
|
|
3354
3364
|
*/ _terminate() {
|
|
3355
3365
|
return function(t) {
|
|
3356
|
-
const
|
|
3357
|
-
|
|
3366
|
+
const e = tn.get(t);
|
|
3367
|
+
e && (m("ComponentProvider", "Removing Datastore"), tn.delete(t), e.terminate());
|
|
3358
3368
|
}(this), Promise.resolve();
|
|
3359
3369
|
}
|
|
3360
3370
|
}
|
|
3361
3371
|
|
|
3362
|
-
function
|
|
3363
|
-
const
|
|
3364
|
-
if (
|
|
3365
|
-
return
|
|
3366
|
-
options:
|
|
3372
|
+
function sn(t, e) {
|
|
3373
|
+
const n = _getProvider(t, "firestore/lite");
|
|
3374
|
+
if (n.isInitialized()) throw new U(S, "Firestore can only be initialized once per app.");
|
|
3375
|
+
return n.initialize({
|
|
3376
|
+
options: e
|
|
3367
3377
|
});
|
|
3368
3378
|
}
|
|
3369
3379
|
|
|
@@ -3375,8 +3385,8 @@ function oe(t, n) {
|
|
|
3375
3385
|
* @param app - The {@link @firebase/app#FirebaseApp} instance that the returned `Firestore`
|
|
3376
3386
|
* instance is associated with.
|
|
3377
3387
|
* @returns The `Firestore` instance of the provided app.
|
|
3378
|
-
*/ function
|
|
3379
|
-
return _getProvider(
|
|
3388
|
+
*/ function on(e = getApp()) {
|
|
3389
|
+
return _getProvider(e, "firestore/lite").getImmediate();
|
|
3380
3390
|
}
|
|
3381
3391
|
|
|
3382
3392
|
/**
|
|
@@ -3391,24 +3401,24 @@ function oe(t, n) {
|
|
|
3391
3401
|
* @param port - the emulator port (ex: 9000).
|
|
3392
3402
|
* @param options.mockUserToken - the mock auth token to use for unit testing
|
|
3393
3403
|
* Security Rules.
|
|
3394
|
-
*/ function
|
|
3404
|
+
*/ function un(t, e, n, r = {}) {
|
|
3395
3405
|
var s;
|
|
3396
|
-
const i = (t = ot(t,
|
|
3397
|
-
if ("firestore.googleapis.com" !== i.host && i.host !==
|
|
3406
|
+
const i = (t = ot(t, rn))._getSettings();
|
|
3407
|
+
if ("firestore.googleapis.com" !== i.host && i.host !== e && y("Host has been set in both settings() and useEmulator(), emulator host will be used"),
|
|
3398
3408
|
t._setSettings(Object.assign(Object.assign({}, i), {
|
|
3399
|
-
host: `${
|
|
3409
|
+
host: `${e}:${n}`,
|
|
3400
3410
|
ssl: !1
|
|
3401
3411
|
})), r.mockUserToken) {
|
|
3402
|
-
let
|
|
3403
|
-
if ("string" == typeof r.mockUserToken)
|
|
3412
|
+
let e, n;
|
|
3413
|
+
if ("string" == typeof r.mockUserToken) e = r.mockUserToken, n = l.MOCK_USER; else {
|
|
3404
3414
|
// Let createMockUserToken validate first (catches common mistakes like
|
|
3405
3415
|
// invalid field "uid" and missing field "sub" / "user_id".)
|
|
3406
|
-
|
|
3416
|
+
e = createMockUserToken(r.mockUserToken, null === (s = t._app) || void 0 === s ? void 0 : s.options.projectId);
|
|
3407
3417
|
const i = r.mockUserToken.sub || r.mockUserToken.user_id;
|
|
3408
3418
|
if (!i) throw new U(A, "mockUserToken must contain 'sub' or 'user_id' field!");
|
|
3409
|
-
|
|
3419
|
+
n = new l(i);
|
|
3410
3420
|
}
|
|
3411
|
-
t._authCredentials = new B(new j(
|
|
3421
|
+
t._authCredentials = new B(new j(e, n));
|
|
3412
3422
|
}
|
|
3413
3423
|
}
|
|
3414
3424
|
|
|
@@ -3431,8 +3441,8 @@ function oe(t, n) {
|
|
|
3431
3441
|
* @param firestore - The `Firestore` instance to terminate.
|
|
3432
3442
|
* @returns A `Promise` that is resolved when the instance has been successfully
|
|
3433
3443
|
* terminated.
|
|
3434
|
-
*/ function
|
|
3435
|
-
return t = ot(t,
|
|
3444
|
+
*/ function cn(t) {
|
|
3445
|
+
return t = ot(t, rn), _removeServiceInstance(t.app, "firestore/lite"), t._delete();
|
|
3436
3446
|
}
|
|
3437
3447
|
|
|
3438
3448
|
/**
|
|
@@ -3472,14 +3482,14 @@ function oe(t, n) {
|
|
|
3472
3482
|
* and can be used to write, read, or listen to the location. The document at
|
|
3473
3483
|
* the referenced location may or may not exist.
|
|
3474
3484
|
*/
|
|
3475
|
-
class
|
|
3485
|
+
class an {
|
|
3476
3486
|
/** @hideconstructor */
|
|
3477
3487
|
constructor(t,
|
|
3478
3488
|
/**
|
|
3479
3489
|
* If provided, the `FirestoreDataConverter` associated with this instance.
|
|
3480
3490
|
*/
|
|
3481
|
-
|
|
3482
|
-
this.converter =
|
|
3491
|
+
e, n) {
|
|
3492
|
+
this.converter = e, this._key = n,
|
|
3483
3493
|
/** The type of this Firestore reference. */
|
|
3484
3494
|
this.type = "document", this.firestore = t;
|
|
3485
3495
|
}
|
|
@@ -3500,40 +3510,40 @@ class he {
|
|
|
3500
3510
|
/**
|
|
3501
3511
|
* The collection this `DocumentReference` belongs to.
|
|
3502
3512
|
*/ get parent() {
|
|
3503
|
-
return new
|
|
3513
|
+
return new ln(this.firestore, this.converter, this._key.path.popLast());
|
|
3504
3514
|
}
|
|
3505
3515
|
withConverter(t) {
|
|
3506
|
-
return new
|
|
3516
|
+
return new an(this.firestore, t, this._key);
|
|
3507
3517
|
}
|
|
3508
3518
|
}
|
|
3509
3519
|
|
|
3510
3520
|
/**
|
|
3511
3521
|
* A `Query` refers to a query which you can read or listen to. You can also
|
|
3512
3522
|
* construct refined `Query` objects by adding filters and ordering.
|
|
3513
|
-
*/ class
|
|
3523
|
+
*/ class hn {
|
|
3514
3524
|
// This is the lite version of the Query class in the main SDK.
|
|
3515
3525
|
/** @hideconstructor protected */
|
|
3516
3526
|
constructor(t,
|
|
3517
3527
|
/**
|
|
3518
3528
|
* If provided, the `FirestoreDataConverter` associated with this instance.
|
|
3519
3529
|
*/
|
|
3520
|
-
|
|
3521
|
-
this.converter =
|
|
3530
|
+
e, n) {
|
|
3531
|
+
this.converter = e, this._query = n,
|
|
3522
3532
|
/** The type of this Firestore reference. */
|
|
3523
3533
|
this.type = "query", this.firestore = t;
|
|
3524
3534
|
}
|
|
3525
3535
|
withConverter(t) {
|
|
3526
|
-
return new
|
|
3536
|
+
return new hn(this.firestore, t, this._query);
|
|
3527
3537
|
}
|
|
3528
3538
|
}
|
|
3529
3539
|
|
|
3530
3540
|
/**
|
|
3531
3541
|
* A `CollectionReference` object can be used for adding documents, getting
|
|
3532
3542
|
* document references, and querying for documents (using {@link query}).
|
|
3533
|
-
*/ class
|
|
3543
|
+
*/ class ln extends hn {
|
|
3534
3544
|
/** @hideconstructor */
|
|
3535
|
-
constructor(t,
|
|
3536
|
-
super(t,
|
|
3545
|
+
constructor(t, e, n) {
|
|
3546
|
+
super(t, e, new oe(n)), this._path = n,
|
|
3537
3547
|
/** The type of this Firestore reference. */
|
|
3538
3548
|
this.type = "collection";
|
|
3539
3549
|
}
|
|
@@ -3551,23 +3561,23 @@ class he {
|
|
|
3551
3561
|
* subcollection. If this isn't a subcollection, the reference is null.
|
|
3552
3562
|
*/ get parent() {
|
|
3553
3563
|
const t = this._path.popLast();
|
|
3554
|
-
return t.isEmpty() ? null : new
|
|
3555
|
-
/* converter= */ null, new
|
|
3564
|
+
return t.isEmpty() ? null : new an(this.firestore,
|
|
3565
|
+
/* converter= */ null, new et(t));
|
|
3556
3566
|
}
|
|
3557
3567
|
withConverter(t) {
|
|
3558
|
-
return new
|
|
3568
|
+
return new ln(this.firestore, t, this._path);
|
|
3559
3569
|
}
|
|
3560
3570
|
}
|
|
3561
3571
|
|
|
3562
|
-
function
|
|
3563
|
-
if (t = getModularInstance(t),
|
|
3564
|
-
const r = X.fromString(
|
|
3565
|
-
return st(r), new
|
|
3572
|
+
function fn(t, e, ...n) {
|
|
3573
|
+
if (t = getModularInstance(t), nt("collection", "path", e), t instanceof rn) {
|
|
3574
|
+
const r = X.fromString(e, ...n);
|
|
3575
|
+
return st(r), new ln(t, /* converter= */ null, r);
|
|
3566
3576
|
}
|
|
3567
3577
|
{
|
|
3568
|
-
if (!(t instanceof
|
|
3569
|
-
const r = t._path.child(X.fromString(
|
|
3570
|
-
return st(r), new
|
|
3578
|
+
if (!(t instanceof an || t instanceof ln)) throw new U(A, "Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");
|
|
3579
|
+
const r = t._path.child(X.fromString(e, ...n));
|
|
3580
|
+
return st(r), new ln(t.firestore,
|
|
3571
3581
|
/* converter= */ null, r);
|
|
3572
3582
|
}
|
|
3573
3583
|
}
|
|
@@ -3584,32 +3594,32 @@ function de(t, n, ...e) {
|
|
|
3584
3594
|
* collection or subcollection with this ID as the last segment of its path
|
|
3585
3595
|
* will be included. Cannot contain a slash.
|
|
3586
3596
|
* @returns The created `Query`.
|
|
3587
|
-
*/ function
|
|
3588
|
-
if (t = ot(t,
|
|
3589
|
-
return new
|
|
3597
|
+
*/ function dn(t, e) {
|
|
3598
|
+
if (t = ot(t, rn), nt("collectionGroup", "collection id", e), e.indexOf("/") >= 0) throw new U(A, `Invalid collection ID '${e}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);
|
|
3599
|
+
return new hn(t,
|
|
3590
3600
|
/* converter= */ null,
|
|
3591
3601
|
/**
|
|
3592
3602
|
* Creates a new Query for a collection group query that matches all documents
|
|
3593
3603
|
* within the provided collection group.
|
|
3594
3604
|
*/
|
|
3595
3605
|
function(t) {
|
|
3596
|
-
return new
|
|
3597
|
-
}(
|
|
3606
|
+
return new oe(X.emptyPath(), t);
|
|
3607
|
+
}(e));
|
|
3598
3608
|
}
|
|
3599
3609
|
|
|
3600
|
-
function
|
|
3610
|
+
function wn(t, e, ...n) {
|
|
3601
3611
|
if (t = getModularInstance(t),
|
|
3602
3612
|
// We allow omission of 'pathString' but explicitly prohibit passing in both
|
|
3603
3613
|
// 'undefined' and 'null'.
|
|
3604
|
-
1 === arguments.length && (
|
|
3605
|
-
const r = X.fromString(
|
|
3606
|
-
return rt(r), new
|
|
3607
|
-
/* converter= */ null, new
|
|
3614
|
+
1 === arguments.length && (e = pt.R()), nt("doc", "path", e), t instanceof rn) {
|
|
3615
|
+
const r = X.fromString(e, ...n);
|
|
3616
|
+
return rt(r), new an(t,
|
|
3617
|
+
/* converter= */ null, new et(r));
|
|
3608
3618
|
}
|
|
3609
3619
|
{
|
|
3610
|
-
if (!(t instanceof
|
|
3611
|
-
const r = t._path.child(X.fromString(
|
|
3612
|
-
return rt(r), new
|
|
3620
|
+
if (!(t instanceof an || t instanceof ln)) throw new U(A, "Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");
|
|
3621
|
+
const r = t._path.child(X.fromString(e, ...n));
|
|
3622
|
+
return rt(r), new an(t.firestore, t instanceof ln ? t.converter : null, new et(r));
|
|
3613
3623
|
}
|
|
3614
3624
|
}
|
|
3615
3625
|
|
|
@@ -3620,8 +3630,8 @@ function me(t, n, ...e) {
|
|
|
3620
3630
|
* @param right - A reference to compare.
|
|
3621
3631
|
* @returns true if the references point to the same location in the same
|
|
3622
3632
|
* Firestore database.
|
|
3623
|
-
*/ function
|
|
3624
|
-
return t = getModularInstance(t),
|
|
3633
|
+
*/ function mn(t, e) {
|
|
3634
|
+
return t = getModularInstance(t), e = getModularInstance(e), (t instanceof an || t instanceof ln) && (e instanceof an || e instanceof ln) && (t.firestore === e.firestore && t.path === e.path && t.converter === e.converter);
|
|
3625
3635
|
}
|
|
3626
3636
|
|
|
3627
3637
|
/**
|
|
@@ -3632,8 +3642,8 @@ function me(t, n, ...e) {
|
|
|
3632
3642
|
* @param right - A `Query` to compare.
|
|
3633
3643
|
* @returns true if the references point to the same location in the same
|
|
3634
3644
|
* Firestore database.
|
|
3635
|
-
*/ function
|
|
3636
|
-
return t = getModularInstance(t),
|
|
3645
|
+
*/ function pn(t, e) {
|
|
3646
|
+
return t = getModularInstance(t), e = getModularInstance(e), t instanceof hn && e instanceof hn && (t.firestore === e.firestore && de(t._query, e._query) && t.converter === e.converter);
|
|
3637
3647
|
}
|
|
3638
3648
|
|
|
3639
3649
|
/**
|
|
@@ -3659,7 +3669,7 @@ function me(t, n, ...e) {
|
|
|
3659
3669
|
*
|
|
3660
3670
|
* Create a `FieldPath` by providing field names. If more than one field
|
|
3661
3671
|
* name is provided, the path will point to a nested field in a document.
|
|
3662
|
-
*/ class
|
|
3672
|
+
*/ class yn {
|
|
3663
3673
|
/**
|
|
3664
3674
|
* Creates a `FieldPath` from the provided field names. If more than one field
|
|
3665
3675
|
* name is provided, the path will point to a nested field in a document.
|
|
@@ -3667,7 +3677,7 @@ function me(t, n, ...e) {
|
|
|
3667
3677
|
* @param fieldNames - A list of field names.
|
|
3668
3678
|
*/
|
|
3669
3679
|
constructor(...t) {
|
|
3670
|
-
for (let
|
|
3680
|
+
for (let e = 0; e < t.length; ++e) if (0 === t[e].length) throw new U(A, "Invalid field name at argument $(i + 1). Field names must not be empty.");
|
|
3671
3681
|
this._internalPath = new tt(t);
|
|
3672
3682
|
}
|
|
3673
3683
|
/**
|
|
@@ -3683,8 +3693,8 @@ function me(t, n, ...e) {
|
|
|
3683
3693
|
/**
|
|
3684
3694
|
* Returns a special sentinel `FieldPath` to refer to the ID of a document.
|
|
3685
3695
|
* It can be used in queries to sort or filter by the document ID.
|
|
3686
|
-
*/ function
|
|
3687
|
-
return new
|
|
3696
|
+
*/ function _n() {
|
|
3697
|
+
return new yn("__name__");
|
|
3688
3698
|
}
|
|
3689
3699
|
|
|
3690
3700
|
/**
|
|
@@ -3705,7 +3715,7 @@ function me(t, n, ...e) {
|
|
|
3705
3715
|
*/
|
|
3706
3716
|
/**
|
|
3707
3717
|
* An immutable object representing an array of bytes.
|
|
3708
|
-
*/ class
|
|
3718
|
+
*/ class gn {
|
|
3709
3719
|
/** @hideconstructor */
|
|
3710
3720
|
constructor(t) {
|
|
3711
3721
|
this._byteString = t;
|
|
@@ -3717,7 +3727,7 @@ function me(t, n, ...e) {
|
|
|
3717
3727
|
* @param base64 - The Base64 string used to create the `Bytes` object.
|
|
3718
3728
|
*/ static fromBase64String(t) {
|
|
3719
3729
|
try {
|
|
3720
|
-
return new
|
|
3730
|
+
return new gn(It.fromBase64String(t));
|
|
3721
3731
|
} catch (t) {
|
|
3722
3732
|
throw new U(A, "Failed to construct data from Base64 string: " + t);
|
|
3723
3733
|
}
|
|
@@ -3727,7 +3737,7 @@ function me(t, n, ...e) {
|
|
|
3727
3737
|
*
|
|
3728
3738
|
* @param array - The Uint8Array used to create the `Bytes` object.
|
|
3729
3739
|
*/ static fromUint8Array(t) {
|
|
3730
|
-
return new
|
|
3740
|
+
return new gn(It.fromUint8Array(t));
|
|
3731
3741
|
}
|
|
3732
3742
|
/**
|
|
3733
3743
|
* Returns the underlying bytes as a Base64-encoded string.
|
|
@@ -3779,7 +3789,7 @@ function me(t, n, ...e) {
|
|
|
3779
3789
|
/**
|
|
3780
3790
|
* Sentinel values that can be used when writing document fields with `set()`
|
|
3781
3791
|
* or `update()`.
|
|
3782
|
-
*/ class
|
|
3792
|
+
*/ class vn {
|
|
3783
3793
|
/**
|
|
3784
3794
|
* @param _methodName - The public API endpoint that returns this class.
|
|
3785
3795
|
* @hideconstructor
|
|
@@ -3811,17 +3821,17 @@ function me(t, n, ...e) {
|
|
|
3811
3821
|
*
|
|
3812
3822
|
* Latitude values are in the range of [-90, 90].
|
|
3813
3823
|
* Longitude values are in the range of [-180, 180].
|
|
3814
|
-
*/ class
|
|
3824
|
+
*/ class bn {
|
|
3815
3825
|
/**
|
|
3816
3826
|
* Creates a new immutable `GeoPoint` object with the provided latitude and
|
|
3817
3827
|
* longitude values.
|
|
3818
3828
|
* @param latitude - The latitude as number between -90 and 90.
|
|
3819
3829
|
* @param longitude - The longitude as number between -180 and 180.
|
|
3820
3830
|
*/
|
|
3821
|
-
constructor(t,
|
|
3831
|
+
constructor(t, e) {
|
|
3822
3832
|
if (!isFinite(t) || t < -90 || t > 90) throw new U(A, "Latitude must be a number between -90 and 90, but was: " + t);
|
|
3823
|
-
if (!isFinite(
|
|
3824
|
-
this._lat = t, this._long =
|
|
3833
|
+
if (!isFinite(e) || e < -180 || e > 180) throw new U(A, "Longitude must be a number between -180 and 180, but was: " + e);
|
|
3834
|
+
this._lat = t, this._long = e;
|
|
3825
3835
|
}
|
|
3826
3836
|
/**
|
|
3827
3837
|
* The latitude of this `GeoPoint` instance.
|
|
@@ -3870,29 +3880,29 @@ function me(t, n, ...e) {
|
|
|
3870
3880
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3871
3881
|
* See the License for the specific language governing permissions and
|
|
3872
3882
|
* limitations under the License.
|
|
3873
|
-
*/ const
|
|
3883
|
+
*/ const En = /^__.*__$/;
|
|
3874
3884
|
|
|
3875
|
-
/** The result of parsing document data (e.g. for a setData call). */ class
|
|
3876
|
-
constructor(t,
|
|
3877
|
-
this.data = t, this.fieldMask =
|
|
3885
|
+
/** The result of parsing document data (e.g. for a setData call). */ class Tn {
|
|
3886
|
+
constructor(t, e, n) {
|
|
3887
|
+
this.data = t, this.fieldMask = e, this.fieldTransforms = n;
|
|
3878
3888
|
}
|
|
3879
|
-
toMutation(t,
|
|
3880
|
-
return null !== this.fieldMask ? new
|
|
3889
|
+
toMutation(t, e) {
|
|
3890
|
+
return null !== this.fieldMask ? new Ie(t, this.data, this.fieldMask, e, this.fieldTransforms) : new Te(t, this.data, e, this.fieldTransforms);
|
|
3881
3891
|
}
|
|
3882
3892
|
}
|
|
3883
3893
|
|
|
3884
|
-
/** The result of parsing "update" data (i.e. for an updateData call). */ class
|
|
3894
|
+
/** The result of parsing "update" data (i.e. for an updateData call). */ class In {
|
|
3885
3895
|
constructor(t,
|
|
3886
3896
|
// The fieldMask does not include document transforms.
|
|
3887
|
-
|
|
3888
|
-
this.data = t, this.fieldMask =
|
|
3897
|
+
e, n) {
|
|
3898
|
+
this.data = t, this.fieldMask = e, this.fieldTransforms = n;
|
|
3889
3899
|
}
|
|
3890
|
-
toMutation(t,
|
|
3891
|
-
return new
|
|
3900
|
+
toMutation(t, e) {
|
|
3901
|
+
return new Ie(t, this.data, this.fieldMask, e, this.fieldTransforms);
|
|
3892
3902
|
}
|
|
3893
3903
|
}
|
|
3894
3904
|
|
|
3895
|
-
function
|
|
3905
|
+
function An(t) {
|
|
3896
3906
|
switch (t) {
|
|
3897
3907
|
case 0 /* Set */ :
|
|
3898
3908
|
// fall through
|
|
@@ -3910,7 +3920,7 @@ function Re(t) {
|
|
|
3910
3920
|
}
|
|
3911
3921
|
}
|
|
3912
3922
|
|
|
3913
|
-
/** A "context" object passed around while parsing user data. */ class
|
|
3923
|
+
/** A "context" object passed around while parsing user data. */ class Rn {
|
|
3914
3924
|
/**
|
|
3915
3925
|
* Initializes a ParseContext with the given source and path.
|
|
3916
3926
|
*
|
|
@@ -3929,8 +3939,8 @@ function Re(t) {
|
|
|
3929
3939
|
* which case certain features will not work and errors will be somewhat
|
|
3930
3940
|
* compromised).
|
|
3931
3941
|
*/
|
|
3932
|
-
constructor(t,
|
|
3933
|
-
this.settings = t, this.databaseId =
|
|
3942
|
+
constructor(t, e, n, r, s, i) {
|
|
3943
|
+
this.settings = t, this.databaseId = e, this.q = n, this.ignoreUndefinedProperties = r,
|
|
3934
3944
|
// Minor hack: If fieldTransforms is undefined, we assume this is an
|
|
3935
3945
|
// external call and we need to validate the entire path.
|
|
3936
3946
|
void 0 === s && this.Z(), this.fieldTransforms = s || [], this.fieldMask = i || [];
|
|
@@ -3941,21 +3951,21 @@ function Re(t) {
|
|
|
3941
3951
|
get tt() {
|
|
3942
3952
|
return this.settings.tt;
|
|
3943
3953
|
}
|
|
3944
|
-
/** Returns a new context with the specified settings overwritten. */
|
|
3945
|
-
return new
|
|
3954
|
+
/** Returns a new context with the specified settings overwritten. */ et(t) {
|
|
3955
|
+
return new Rn(Object.assign(Object.assign({}, this.settings), t), this.databaseId, this.q, this.ignoreUndefinedProperties, this.fieldTransforms, this.fieldMask);
|
|
3946
3956
|
}
|
|
3947
|
-
|
|
3948
|
-
var
|
|
3949
|
-
const
|
|
3950
|
-
path:
|
|
3957
|
+
nt(t) {
|
|
3958
|
+
var e;
|
|
3959
|
+
const n = null === (e = this.path) || void 0 === e ? void 0 : e.child(t), r = this.et({
|
|
3960
|
+
path: n,
|
|
3951
3961
|
rt: !1
|
|
3952
3962
|
});
|
|
3953
3963
|
return r.st(t), r;
|
|
3954
3964
|
}
|
|
3955
3965
|
it(t) {
|
|
3956
|
-
var
|
|
3957
|
-
const
|
|
3958
|
-
path:
|
|
3966
|
+
var e;
|
|
3967
|
+
const n = null === (e = this.path) || void 0 === e ? void 0 : e.child(t), r = this.et({
|
|
3968
|
+
path: n,
|
|
3959
3969
|
rt: !1
|
|
3960
3970
|
});
|
|
3961
3971
|
return r.Z(), r;
|
|
@@ -3963,16 +3973,16 @@ function Re(t) {
|
|
|
3963
3973
|
ot(t) {
|
|
3964
3974
|
// TODO(b/34871131): We don't support array paths right now; so make path
|
|
3965
3975
|
// undefined.
|
|
3966
|
-
return this.
|
|
3976
|
+
return this.et({
|
|
3967
3977
|
path: void 0,
|
|
3968
3978
|
rt: !0
|
|
3969
3979
|
});
|
|
3970
3980
|
}
|
|
3971
3981
|
ut(t) {
|
|
3972
|
-
return
|
|
3982
|
+
return Qn(t, this.settings.methodName, this.settings.ct || !1, this.path, this.settings.at);
|
|
3973
3983
|
}
|
|
3974
3984
|
/** Returns 'true' if 'fieldPath' was traversed when creating this context. */ contains(t) {
|
|
3975
|
-
return void 0 !== this.fieldMask.find((
|
|
3985
|
+
return void 0 !== this.fieldMask.find((e => t.isPrefixOf(e))) || void 0 !== this.fieldTransforms.find((e => t.isPrefixOf(e.field)));
|
|
3976
3986
|
}
|
|
3977
3987
|
Z() {
|
|
3978
3988
|
// TODO(b/34871131): Remove null check once we have proper paths for fields
|
|
@@ -3981,22 +3991,22 @@ function Re(t) {
|
|
|
3981
3991
|
}
|
|
3982
3992
|
st(t) {
|
|
3983
3993
|
if (0 === t.length) throw this.ut("Document fields must not be empty");
|
|
3984
|
-
if (
|
|
3994
|
+
if (An(this.tt) && En.test(t)) throw this.ut('Document fields cannot begin and end with "__"');
|
|
3985
3995
|
}
|
|
3986
3996
|
}
|
|
3987
3997
|
|
|
3988
3998
|
/**
|
|
3989
3999
|
* Helper for parsing raw user input (provided via the API) into internal model
|
|
3990
4000
|
* classes.
|
|
3991
|
-
*/ class
|
|
3992
|
-
constructor(t,
|
|
3993
|
-
this.databaseId = t, this.ignoreUndefinedProperties =
|
|
4001
|
+
*/ class Pn {
|
|
4002
|
+
constructor(t, e, n) {
|
|
4003
|
+
this.databaseId = t, this.ignoreUndefinedProperties = e, this.q = n || Ye(t);
|
|
3994
4004
|
}
|
|
3995
|
-
/** Creates a new top-level parse context. */ ht(t,
|
|
3996
|
-
return new
|
|
4005
|
+
/** Creates a new top-level parse context. */ ht(t, e, n, r = !1) {
|
|
4006
|
+
return new Rn({
|
|
3997
4007
|
tt: t,
|
|
3998
|
-
methodName:
|
|
3999
|
-
at:
|
|
4008
|
+
methodName: e,
|
|
4009
|
+
at: n,
|
|
4000
4010
|
path: tt.emptyPath(),
|
|
4001
4011
|
rt: !1,
|
|
4002
4012
|
ct: r
|
|
@@ -4004,29 +4014,29 @@ function Re(t) {
|
|
|
4004
4014
|
}
|
|
4005
4015
|
}
|
|
4006
4016
|
|
|
4007
|
-
function
|
|
4008
|
-
const
|
|
4009
|
-
return new
|
|
4017
|
+
function Vn(t) {
|
|
4018
|
+
const e = t._freezeSettings(), n = Ye(t._databaseId);
|
|
4019
|
+
return new Pn(t._databaseId, !!e.ignoreUndefinedProperties, n);
|
|
4010
4020
|
}
|
|
4011
4021
|
|
|
4012
|
-
/** Parse document data from a set() call. */ function
|
|
4013
|
-
const o = t.ht(i.merge || i.mergeFields ? 2 /* MergeSet */ : 0 /* Set */ ,
|
|
4014
|
-
|
|
4015
|
-
const u =
|
|
4022
|
+
/** Parse document data from a set() call. */ function Dn(t, e, n, r, s, i = {}) {
|
|
4023
|
+
const o = t.ht(i.merge || i.mergeFields ? 2 /* MergeSet */ : 0 /* Set */ , e, n, s);
|
|
4024
|
+
Mn("Data must be an object, but it was:", o, r);
|
|
4025
|
+
const u = kn(r, o);
|
|
4016
4026
|
let c, a;
|
|
4017
4027
|
if (i.merge) c = new Tt(o.fieldMask), a = o.fieldTransforms; else if (i.mergeFields) {
|
|
4018
4028
|
const t = [];
|
|
4019
4029
|
for (const r of i.mergeFields) {
|
|
4020
|
-
const s =
|
|
4030
|
+
const s = Bn(e, r, n);
|
|
4021
4031
|
if (!o.contains(s)) throw new U(A, `Field '${s}' is specified in your field mask but missing from your input data.`);
|
|
4022
|
-
|
|
4032
|
+
Wn(t, s) || t.push(s);
|
|
4023
4033
|
}
|
|
4024
4034
|
c = new Tt(t), a = o.fieldTransforms.filter((t => c.covers(t.field)));
|
|
4025
4035
|
} else c = null, a = o.fieldTransforms;
|
|
4026
|
-
return new
|
|
4036
|
+
return new Tn(new Bt(u), c, a);
|
|
4027
4037
|
}
|
|
4028
4038
|
|
|
4029
|
-
class
|
|
4039
|
+
class Nn extends vn {
|
|
4030
4040
|
_toFieldTransform(t) {
|
|
4031
4041
|
if (2 /* MergeSet */ !== t.tt) throw 1 /* Update */ === t.tt ? t.ut(`${this._methodName}() can only appear at the top level of your update data`) : t.ut(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);
|
|
4032
4042
|
// No transform to add for a delete, but we need to add it to our
|
|
@@ -4034,7 +4044,7 @@ class $e extends be {
|
|
|
4034
4044
|
return t.fieldMask.push(t.path), null;
|
|
4035
4045
|
}
|
|
4036
4046
|
isEqual(t) {
|
|
4037
|
-
return t instanceof
|
|
4047
|
+
return t instanceof Nn;
|
|
4038
4048
|
}
|
|
4039
4049
|
}
|
|
4040
4050
|
|
|
@@ -4053,32 +4063,32 @@ class $e extends be {
|
|
|
4053
4063
|
* context.
|
|
4054
4064
|
* @param context - The parent context.
|
|
4055
4065
|
* @param arrayElement - Whether or not the FieldValue has an array.
|
|
4056
|
-
*/ function
|
|
4057
|
-
return new
|
|
4066
|
+
*/ function $n(t, e, n) {
|
|
4067
|
+
return new Rn({
|
|
4058
4068
|
tt: 3 /* Argument */ ,
|
|
4059
|
-
at:
|
|
4069
|
+
at: e.settings.at,
|
|
4060
4070
|
methodName: t._methodName,
|
|
4061
|
-
rt:
|
|
4062
|
-
},
|
|
4071
|
+
rt: n
|
|
4072
|
+
}, e.databaseId, e.q, e.ignoreUndefinedProperties);
|
|
4063
4073
|
}
|
|
4064
4074
|
|
|
4065
|
-
class
|
|
4075
|
+
class Sn extends vn {
|
|
4066
4076
|
_toFieldTransform(t) {
|
|
4067
|
-
return new
|
|
4077
|
+
return new ve(t.path, new pe);
|
|
4068
4078
|
}
|
|
4069
4079
|
isEqual(t) {
|
|
4070
|
-
return t instanceof
|
|
4080
|
+
return t instanceof Sn;
|
|
4071
4081
|
}
|
|
4072
4082
|
}
|
|
4073
4083
|
|
|
4074
|
-
class
|
|
4075
|
-
constructor(t,
|
|
4076
|
-
super(t), this.lt =
|
|
4084
|
+
class Fn extends vn {
|
|
4085
|
+
constructor(t, e) {
|
|
4086
|
+
super(t), this.lt = e;
|
|
4077
4087
|
}
|
|
4078
4088
|
_toFieldTransform(t) {
|
|
4079
|
-
const
|
|
4080
|
-
/*array=*/ !0),
|
|
4081
|
-
return new
|
|
4089
|
+
const e = $n(this, t,
|
|
4090
|
+
/*array=*/ !0), n = this.lt.map((t => Un(t, e))), r = new ye(n);
|
|
4091
|
+
return new ve(t.path, r);
|
|
4082
4092
|
}
|
|
4083
4093
|
isEqual(t) {
|
|
4084
4094
|
// TODO(mrschmidt): Implement isEquals
|
|
@@ -4086,14 +4096,14 @@ class xe extends be {
|
|
|
4086
4096
|
}
|
|
4087
4097
|
}
|
|
4088
4098
|
|
|
4089
|
-
class
|
|
4090
|
-
constructor(t,
|
|
4091
|
-
super(t), this.lt =
|
|
4099
|
+
class xn extends vn {
|
|
4100
|
+
constructor(t, e) {
|
|
4101
|
+
super(t), this.lt = e;
|
|
4092
4102
|
}
|
|
4093
4103
|
_toFieldTransform(t) {
|
|
4094
|
-
const
|
|
4095
|
-
/*array=*/ !0),
|
|
4096
|
-
return new
|
|
4104
|
+
const e = $n(this, t,
|
|
4105
|
+
/*array=*/ !0), n = this.lt.map((t => Un(t, e))), r = new _e(n);
|
|
4106
|
+
return new ve(t.path, r);
|
|
4097
4107
|
}
|
|
4098
4108
|
isEqual(t) {
|
|
4099
4109
|
// TODO(mrschmidt): Implement isEquals
|
|
@@ -4101,13 +4111,13 @@ class qe extends be {
|
|
|
4101
4111
|
}
|
|
4102
4112
|
}
|
|
4103
4113
|
|
|
4104
|
-
class
|
|
4105
|
-
constructor(t,
|
|
4106
|
-
super(t), this.ft =
|
|
4114
|
+
class qn extends vn {
|
|
4115
|
+
constructor(t, e) {
|
|
4116
|
+
super(t), this.ft = e;
|
|
4107
4117
|
}
|
|
4108
4118
|
_toFieldTransform(t) {
|
|
4109
|
-
const
|
|
4110
|
-
return new
|
|
4119
|
+
const e = new ge(t.q, we(t.q, this.ft));
|
|
4120
|
+
return new ve(t.path, e);
|
|
4111
4121
|
}
|
|
4112
4122
|
isEqual(t) {
|
|
4113
4123
|
// TODO(mrschmidt): Implement isEquals
|
|
@@ -4115,50 +4125,50 @@ class Oe extends be {
|
|
|
4115
4125
|
}
|
|
4116
4126
|
}
|
|
4117
4127
|
|
|
4118
|
-
/** Parse update data from an update() call. */ function
|
|
4119
|
-
const s = t.ht(1 /* Update */ ,
|
|
4120
|
-
|
|
4128
|
+
/** Parse update data from an update() call. */ function On(t, e, n, r) {
|
|
4129
|
+
const s = t.ht(1 /* Update */ , e, n);
|
|
4130
|
+
Mn("Data must be an object, but it was:", s, r);
|
|
4121
4131
|
const i = [], o = Bt.empty();
|
|
4122
4132
|
Et(r, ((t, r) => {
|
|
4123
|
-
const u =
|
|
4133
|
+
const u = Gn(e, t, n);
|
|
4124
4134
|
// For Compat types, we have to "extract" the underlying types before
|
|
4125
4135
|
// performing validation.
|
|
4126
4136
|
r = getModularInstance(r);
|
|
4127
4137
|
const c = s.it(u);
|
|
4128
|
-
if (r instanceof
|
|
4138
|
+
if (r instanceof Nn)
|
|
4129
4139
|
// Add it to the field mask, but don't add anything to updateData.
|
|
4130
4140
|
i.push(u); else {
|
|
4131
|
-
const t =
|
|
4141
|
+
const t = Un(r, c);
|
|
4132
4142
|
null != t && (i.push(u), o.set(u, t));
|
|
4133
4143
|
}
|
|
4134
4144
|
}));
|
|
4135
4145
|
const u = new Tt(i);
|
|
4136
|
-
return new
|
|
4146
|
+
return new In(o, u, s.fieldTransforms);
|
|
4137
4147
|
}
|
|
4138
4148
|
|
|
4139
|
-
/** Parse update data from a list of field/value arguments. */ function
|
|
4140
|
-
const o = t.ht(1 /* Update */ ,
|
|
4141
|
-
if (i.length % 2 != 0) throw new U(A, `Function ${
|
|
4142
|
-
for (let t = 0; t < i.length; t += 2) u.push(
|
|
4149
|
+
/** Parse update data from a list of field/value arguments. */ function Cn(t, e, n, r, s, i) {
|
|
4150
|
+
const o = t.ht(1 /* Update */ , e, n), u = [ Bn(e, r, n) ], c = [ s ];
|
|
4151
|
+
if (i.length % 2 != 0) throw new U(A, `Function ${e}() needs to be called with an even number of arguments that alternate between field names and values.`);
|
|
4152
|
+
for (let t = 0; t < i.length; t += 2) u.push(Bn(e, i[t])), c.push(i[t + 1]);
|
|
4143
4153
|
const a = [], l = Bt.empty();
|
|
4144
4154
|
// We iterate in reverse order to pick the last value for a field if the
|
|
4145
4155
|
// user specified the field multiple times.
|
|
4146
|
-
for (let t = u.length - 1; t >= 0; --t) if (!
|
|
4147
|
-
const
|
|
4148
|
-
let
|
|
4156
|
+
for (let t = u.length - 1; t >= 0; --t) if (!Wn(a, u[t])) {
|
|
4157
|
+
const e = u[t];
|
|
4158
|
+
let n = c[t];
|
|
4149
4159
|
// For Compat types, we have to "extract" the underlying types before
|
|
4150
4160
|
// performing validation.
|
|
4151
|
-
|
|
4152
|
-
const r = o.it(
|
|
4153
|
-
if (
|
|
4161
|
+
n = getModularInstance(n);
|
|
4162
|
+
const r = o.it(e);
|
|
4163
|
+
if (n instanceof Nn)
|
|
4154
4164
|
// Add it to the field mask, but don't add anything to updateData.
|
|
4155
|
-
a.push(
|
|
4156
|
-
const t =
|
|
4157
|
-
null != t && (a.push(
|
|
4165
|
+
a.push(e); else {
|
|
4166
|
+
const t = Un(n, r);
|
|
4167
|
+
null != t && (a.push(e), l.set(e, t));
|
|
4158
4168
|
}
|
|
4159
4169
|
}
|
|
4160
4170
|
const f = new Tt(a);
|
|
4161
|
-
return new
|
|
4171
|
+
return new In(l, f, o.fieldTransforms);
|
|
4162
4172
|
}
|
|
4163
4173
|
|
|
4164
4174
|
/**
|
|
@@ -4167,8 +4177,8 @@ class Oe extends be {
|
|
|
4167
4177
|
*
|
|
4168
4178
|
* @param allowArrays - Whether the query value is an array that may directly
|
|
4169
4179
|
* contain additional arrays (e.g. the operand of an `in` query).
|
|
4170
|
-
*/ function
|
|
4171
|
-
return
|
|
4180
|
+
*/ function Ln(t, e, n, r = !1) {
|
|
4181
|
+
return Un(n, t.ht(r ? 4 /* ArrayArgument */ : 3 /* Argument */ , e));
|
|
4172
4182
|
}
|
|
4173
4183
|
|
|
4174
4184
|
/**
|
|
@@ -4179,12 +4189,12 @@ class Oe extends be {
|
|
|
4179
4189
|
* the source of the data being parsed, etc.
|
|
4180
4190
|
* @returns The parsed value, or null if the value was a FieldValue sentinel
|
|
4181
4191
|
* that should not be included in the resulting parsed data.
|
|
4182
|
-
*/ function
|
|
4183
|
-
if (
|
|
4192
|
+
*/ function Un(t, e) {
|
|
4193
|
+
if (jn(
|
|
4184
4194
|
// Unwrap the API type from the Compat SDK. This will return the API type
|
|
4185
4195
|
// from firestore-exp.
|
|
4186
|
-
t = getModularInstance(t))) return
|
|
4187
|
-
if (t instanceof
|
|
4196
|
+
t = getModularInstance(t))) return Mn("Unsupported field value:", e, t), kn(t, e);
|
|
4197
|
+
if (t instanceof vn)
|
|
4188
4198
|
// FieldValues usually parse into transforms (except deleteField())
|
|
4189
4199
|
// in which case we do not want to include this field in our parsed data
|
|
4190
4200
|
// (as doing so will overwrite the field directly prior to the transform
|
|
@@ -4194,19 +4204,19 @@ class Oe extends be {
|
|
|
4194
4204
|
* "Parses" the provided FieldValueImpl, adding any necessary transforms to
|
|
4195
4205
|
* context.fieldTransforms.
|
|
4196
4206
|
*/
|
|
4197
|
-
return function(t,
|
|
4207
|
+
return function(t, e) {
|
|
4198
4208
|
// Sentinels are only supported with writes, and not within arrays.
|
|
4199
|
-
if (!
|
|
4200
|
-
if (!
|
|
4201
|
-
const
|
|
4202
|
-
|
|
4209
|
+
if (!An(e.tt)) throw e.ut(`${t._methodName}() can only be used with update() and set()`);
|
|
4210
|
+
if (!e.path) throw e.ut(`${t._methodName}() is not currently supported inside arrays`);
|
|
4211
|
+
const n = t._toFieldTransform(e);
|
|
4212
|
+
n && e.fieldTransforms.push(n);
|
|
4203
4213
|
}
|
|
4204
4214
|
/**
|
|
4205
4215
|
* Helper to parse a scalar value (i.e. not an Object, Array, or FieldValue)
|
|
4206
4216
|
*
|
|
4207
4217
|
* @returns The parsed value
|
|
4208
|
-
*/ (t,
|
|
4209
|
-
if (void 0 === t &&
|
|
4218
|
+
*/ (t, e), null;
|
|
4219
|
+
if (void 0 === t && e.ignoreUndefinedProperties)
|
|
4210
4220
|
// If the input is undefined it can never participate in the fieldMask, so
|
|
4211
4221
|
// don't handle this below. If `ignoreUndefinedProperties` is false,
|
|
4212
4222
|
// `parseScalarValue` will reject an undefined value.
|
|
@@ -4214,38 +4224,38 @@ class Oe extends be {
|
|
|
4214
4224
|
if (
|
|
4215
4225
|
// If context.path is null we are inside an array and we don't support
|
|
4216
4226
|
// field mask paths more granular than the top-level array.
|
|
4217
|
-
|
|
4227
|
+
e.path && e.fieldMask.push(e.path), t instanceof Array) {
|
|
4218
4228
|
// TODO(b/34871131): Include the path containing the array in the error
|
|
4219
4229
|
// message.
|
|
4220
4230
|
// In the case of IN queries, the parsed data is an array (representing
|
|
4221
4231
|
// the set of values to be included for the IN query) that may directly
|
|
4222
4232
|
// contain additional arrays (each representing an individual field
|
|
4223
4233
|
// value), so we disable this validation.
|
|
4224
|
-
if (
|
|
4225
|
-
return function(t,
|
|
4226
|
-
const
|
|
4234
|
+
if (e.settings.rt && 4 /* ArrayArgument */ !== e.tt) throw e.ut("Nested arrays are not supported");
|
|
4235
|
+
return function(t, e) {
|
|
4236
|
+
const n = [];
|
|
4227
4237
|
let r = 0;
|
|
4228
4238
|
for (const s of t) {
|
|
4229
|
-
let t =
|
|
4239
|
+
let t = Un(s, e.ot(r));
|
|
4230
4240
|
null == t && (
|
|
4231
4241
|
// Just include nulls in the array for fields being replaced with a
|
|
4232
4242
|
// sentinel.
|
|
4233
4243
|
t = {
|
|
4234
4244
|
nullValue: "NULL_VALUE"
|
|
4235
|
-
}),
|
|
4245
|
+
}), n.push(t), r++;
|
|
4236
4246
|
}
|
|
4237
4247
|
return {
|
|
4238
4248
|
arrayValue: {
|
|
4239
|
-
values:
|
|
4249
|
+
values: n
|
|
4240
4250
|
}
|
|
4241
4251
|
};
|
|
4242
|
-
}(t,
|
|
4252
|
+
}(t, e);
|
|
4243
4253
|
}
|
|
4244
|
-
return function(t,
|
|
4254
|
+
return function(t, e) {
|
|
4245
4255
|
if (null === (t = getModularInstance(t))) return {
|
|
4246
4256
|
nullValue: "NULL_VALUE"
|
|
4247
4257
|
};
|
|
4248
|
-
if ("number" == typeof t) return
|
|
4258
|
+
if ("number" == typeof t) return we(e.q, t);
|
|
4249
4259
|
if ("boolean" == typeof t) return {
|
|
4250
4260
|
booleanValue: t
|
|
4251
4261
|
};
|
|
@@ -4253,37 +4263,37 @@ class Oe extends be {
|
|
|
4253
4263
|
stringValue: t
|
|
4254
4264
|
};
|
|
4255
4265
|
if (t instanceof Date) {
|
|
4256
|
-
const
|
|
4266
|
+
const n = gt.fromDate(t);
|
|
4257
4267
|
return {
|
|
4258
|
-
timestampValue:
|
|
4268
|
+
timestampValue: Ne(e.q, n)
|
|
4259
4269
|
};
|
|
4260
4270
|
}
|
|
4261
4271
|
if (t instanceof gt) {
|
|
4262
4272
|
// Firestore backend truncates precision down to microseconds. To ensure
|
|
4263
4273
|
// offline mode works the same with regards to truncation, perform the
|
|
4264
4274
|
// truncation immediately without waiting for the backend to do that.
|
|
4265
|
-
const
|
|
4275
|
+
const n = new gt(t.seconds, 1e3 * Math.floor(t.nanoseconds / 1e3));
|
|
4266
4276
|
return {
|
|
4267
|
-
timestampValue:
|
|
4277
|
+
timestampValue: Ne(e.q, n)
|
|
4268
4278
|
};
|
|
4269
4279
|
}
|
|
4270
|
-
if (t instanceof
|
|
4280
|
+
if (t instanceof bn) return {
|
|
4271
4281
|
geoPointValue: {
|
|
4272
4282
|
latitude: t.latitude,
|
|
4273
4283
|
longitude: t.longitude
|
|
4274
4284
|
}
|
|
4275
4285
|
};
|
|
4276
|
-
if (t instanceof
|
|
4277
|
-
bytesValue:
|
|
4286
|
+
if (t instanceof gn) return {
|
|
4287
|
+
bytesValue: $e(e.q, t._byteString)
|
|
4278
4288
|
};
|
|
4279
|
-
if (t instanceof
|
|
4280
|
-
const
|
|
4281
|
-
if (!r.isEqual(
|
|
4289
|
+
if (t instanceof an) {
|
|
4290
|
+
const n = e.databaseId, r = t.firestore._databaseId;
|
|
4291
|
+
if (!r.isEqual(n)) throw e.ut(`Document reference is for database ${r.projectId}/${r.database} but should be for database ${n.projectId}/${n.database}`);
|
|
4282
4292
|
return {
|
|
4283
|
-
referenceValue:
|
|
4293
|
+
referenceValue: xe(t.firestore._databaseId || e.databaseId, t._key.path)
|
|
4284
4294
|
};
|
|
4285
4295
|
}
|
|
4286
|
-
throw
|
|
4296
|
+
throw e.ut(`Unsupported field value: ${it(t)}`);
|
|
4287
4297
|
}
|
|
4288
4298
|
/**
|
|
4289
4299
|
* Checks whether an object looks like a JSON object that should be converted
|
|
@@ -4291,56 +4301,56 @@ class Oe extends be {
|
|
|
4291
4301
|
* JSON objects since they should be converted to a struct value. Arrays, Dates,
|
|
4292
4302
|
* GeoPoints, etc. are not considered to look like JSON objects since they map
|
|
4293
4303
|
* to specific FieldValue types other than ObjectValue.
|
|
4294
|
-
*/ (t,
|
|
4304
|
+
*/ (t, e);
|
|
4295
4305
|
}
|
|
4296
4306
|
|
|
4297
|
-
function
|
|
4298
|
-
const
|
|
4307
|
+
function kn(t, e) {
|
|
4308
|
+
const n = {};
|
|
4299
4309
|
return !function(t) {
|
|
4300
|
-
for (const
|
|
4310
|
+
for (const e in t) if (Object.prototype.hasOwnProperty.call(t, e)) return !1;
|
|
4301
4311
|
return !0;
|
|
4302
4312
|
}(t) ? Et(t, ((t, r) => {
|
|
4303
|
-
const s =
|
|
4304
|
-
null != s && (
|
|
4313
|
+
const s = Un(r, e.nt(t));
|
|
4314
|
+
null != s && (n[t] = s);
|
|
4305
4315
|
})) :
|
|
4306
4316
|
// If we encounter an empty object, we explicitly add it to the update
|
|
4307
4317
|
// mask to ensure that the server creates a map entry.
|
|
4308
|
-
|
|
4318
|
+
e.path && e.path.length > 0 && e.fieldMask.push(e.path), {
|
|
4309
4319
|
mapValue: {
|
|
4310
|
-
fields:
|
|
4320
|
+
fields: n
|
|
4311
4321
|
}
|
|
4312
4322
|
};
|
|
4313
4323
|
}
|
|
4314
4324
|
|
|
4315
|
-
function
|
|
4316
|
-
return !("object" != typeof t || null === t || t instanceof Array || t instanceof Date || t instanceof gt || t instanceof
|
|
4325
|
+
function jn(t) {
|
|
4326
|
+
return !("object" != typeof t || null === t || t instanceof Array || t instanceof Date || t instanceof gt || t instanceof bn || t instanceof gn || t instanceof an || t instanceof vn);
|
|
4317
4327
|
}
|
|
4318
4328
|
|
|
4319
|
-
function
|
|
4320
|
-
if (!
|
|
4329
|
+
function Mn(t, e, n) {
|
|
4330
|
+
if (!jn(n) || !function(t) {
|
|
4321
4331
|
return "object" == typeof t && null !== t && (Object.getPrototypeOf(t) === Object.prototype || null === Object.getPrototypeOf(t));
|
|
4322
|
-
}(
|
|
4323
|
-
const r = it(
|
|
4324
|
-
throw "an object" === r ?
|
|
4332
|
+
}(n)) {
|
|
4333
|
+
const r = it(n);
|
|
4334
|
+
throw "an object" === r ? e.ut(t + " a custom object") : e.ut(t + " " + r);
|
|
4325
4335
|
}
|
|
4326
4336
|
}
|
|
4327
4337
|
|
|
4328
4338
|
/**
|
|
4329
4339
|
* Helper that calls fromDotSeparatedString() but wraps any error thrown.
|
|
4330
|
-
*/ function
|
|
4340
|
+
*/ function Bn(t, e, n) {
|
|
4331
4341
|
if ((
|
|
4332
4342
|
// If required, replace the FieldPath Compat class with with the firestore-exp
|
|
4333
4343
|
// FieldPath.
|
|
4334
|
-
|
|
4335
|
-
if ("string" == typeof
|
|
4336
|
-
throw
|
|
4344
|
+
e = getModularInstance(e)) instanceof yn) return e._internalPath;
|
|
4345
|
+
if ("string" == typeof e) return Gn(t, e);
|
|
4346
|
+
throw Qn("Field path arguments must be of type string or ", t,
|
|
4337
4347
|
/* hasConverter= */ !1,
|
|
4338
|
-
/* path= */ void 0,
|
|
4348
|
+
/* path= */ void 0, n);
|
|
4339
4349
|
}
|
|
4340
4350
|
|
|
4341
4351
|
/**
|
|
4342
4352
|
* Matches any characters in a field path string that are reserved.
|
|
4343
|
-
*/ const
|
|
4353
|
+
*/ const zn = new RegExp("[~\\*/\\[\\]]");
|
|
4344
4354
|
|
|
4345
4355
|
/**
|
|
4346
4356
|
* Wraps fromDotSeparatedString with an error message about the method that
|
|
@@ -4350,30 +4360,30 @@ function Be(t, n, e) {
|
|
|
4350
4360
|
* split on dots.
|
|
4351
4361
|
* @param targetDoc - The document against which the field path will be
|
|
4352
4362
|
* evaluated.
|
|
4353
|
-
*/ function
|
|
4354
|
-
if (
|
|
4363
|
+
*/ function Gn(t, e, n) {
|
|
4364
|
+
if (e.search(zn) >= 0) throw Qn(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`, t,
|
|
4355
4365
|
/* hasConverter= */ !1,
|
|
4356
|
-
/* path= */ void 0,
|
|
4366
|
+
/* path= */ void 0, n);
|
|
4357
4367
|
try {
|
|
4358
|
-
return new
|
|
4368
|
+
return new yn(...e.split("."))._internalPath;
|
|
4359
4369
|
} catch (r) {
|
|
4360
|
-
throw
|
|
4370
|
+
throw Qn(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`, t,
|
|
4361
4371
|
/* hasConverter= */ !1,
|
|
4362
|
-
/* path= */ void 0,
|
|
4372
|
+
/* path= */ void 0, n);
|
|
4363
4373
|
}
|
|
4364
4374
|
}
|
|
4365
4375
|
|
|
4366
|
-
function
|
|
4376
|
+
function Qn(t, e, n, r, s) {
|
|
4367
4377
|
const i = r && !r.isEmpty(), o = void 0 !== s;
|
|
4368
|
-
let u = `Function ${
|
|
4369
|
-
|
|
4378
|
+
let u = `Function ${e}() called with invalid data`;
|
|
4379
|
+
n && (u += " (via `toFirestore()`)"), u += ". ";
|
|
4370
4380
|
let c = "";
|
|
4371
4381
|
return (i || o) && (c += " (found", i && (c += ` in field ${r}`), o && (c += ` in document ${s}`),
|
|
4372
4382
|
c += ")"), new U(A, u + t + c);
|
|
4373
4383
|
}
|
|
4374
4384
|
|
|
4375
|
-
/** Checks `haystack` if FieldPath `needle` is present. Runs in O(n). */ function
|
|
4376
|
-
return t.some((t => t.isEqual(
|
|
4385
|
+
/** Checks `haystack` if FieldPath `needle` is present. Runs in O(n). */ function Wn(t, e) {
|
|
4386
|
+
return t.some((t => t.isEqual(e)));
|
|
4377
4387
|
}
|
|
4378
4388
|
|
|
4379
4389
|
/**
|
|
@@ -4400,14 +4410,14 @@ function We(t, n, e, r, s) {
|
|
|
4400
4410
|
* For a `DocumentSnapshot` that points to a non-existing document, any data
|
|
4401
4411
|
* access will return 'undefined'. You can use the `exists()` method to
|
|
4402
4412
|
* explicitly verify a document's existence.
|
|
4403
|
-
*/ class
|
|
4413
|
+
*/ class Yn {
|
|
4404
4414
|
// Note: This class is stripped down version of the DocumentSnapshot in
|
|
4405
4415
|
// the legacy SDK. The changes are:
|
|
4406
4416
|
// - No support for SnapshotMetadata.
|
|
4407
4417
|
// - No support for SnapshotOptions.
|
|
4408
4418
|
/** @hideconstructor protected */
|
|
4409
|
-
constructor(t,
|
|
4410
|
-
this._firestore = t, this._userDataWriter =
|
|
4419
|
+
constructor(t, e, n, r, s) {
|
|
4420
|
+
this._firestore = t, this._userDataWriter = e, this._key = n, this._document = r,
|
|
4411
4421
|
this._converter = s;
|
|
4412
4422
|
}
|
|
4413
4423
|
/** Property of the `DocumentSnapshot` that provides the document's ID. */ get id() {
|
|
@@ -4416,7 +4426,7 @@ function We(t, n, e, r, s) {
|
|
|
4416
4426
|
/**
|
|
4417
4427
|
* The `DocumentReference` for the document included in the `DocumentSnapshot`.
|
|
4418
4428
|
*/ get ref() {
|
|
4419
|
-
return new
|
|
4429
|
+
return new an(this._firestore, this._converter, this._key);
|
|
4420
4430
|
}
|
|
4421
4431
|
/**
|
|
4422
4432
|
* Signals whether or not the document at the snapshot's location exists.
|
|
@@ -4436,7 +4446,7 @@ function We(t, n, e, r, s) {
|
|
|
4436
4446
|
if (this._converter) {
|
|
4437
4447
|
// We only want to use the converter and create a new DocumentSnapshot
|
|
4438
4448
|
// if a converter has been provided.
|
|
4439
|
-
const t = new
|
|
4449
|
+
const t = new Hn(this._firestore, this._userDataWriter, this._key, this._document,
|
|
4440
4450
|
/* converter= */ null);
|
|
4441
4451
|
return this._converter.fromFirestore(t);
|
|
4442
4452
|
}
|
|
@@ -4456,8 +4466,8 @@ function We(t, n, e, r, s) {
|
|
|
4456
4466
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4457
4467
|
get(t) {
|
|
4458
4468
|
if (this._document) {
|
|
4459
|
-
const
|
|
4460
|
-
if (null !==
|
|
4469
|
+
const e = this._document.data.field(Xn("DocumentSnapshot.get", t));
|
|
4470
|
+
if (null !== e) return this._userDataWriter.convertValue(e);
|
|
4461
4471
|
}
|
|
4462
4472
|
}
|
|
4463
4473
|
}
|
|
@@ -4472,7 +4482,7 @@ function We(t, n, e, r, s) {
|
|
|
4472
4482
|
* `DocumentSnapshot`. Since query results contain only existing documents, the
|
|
4473
4483
|
* `exists` property will always be true and `data()` will never return
|
|
4474
4484
|
* 'undefined'.
|
|
4475
|
-
*/ class
|
|
4485
|
+
*/ class Hn extends Yn {
|
|
4476
4486
|
/**
|
|
4477
4487
|
* Retrieves all fields in the document as an `Object`.
|
|
4478
4488
|
*
|
|
@@ -4490,10 +4500,10 @@ function We(t, n, e, r, s) {
|
|
|
4490
4500
|
* array via the `docs` property or enumerated using the `forEach` method. The
|
|
4491
4501
|
* number of documents can be determined via the `empty` and `size`
|
|
4492
4502
|
* properties.
|
|
4493
|
-
*/ class
|
|
4503
|
+
*/ class Kn {
|
|
4494
4504
|
/** @hideconstructor */
|
|
4495
|
-
constructor(t,
|
|
4496
|
-
this._docs =
|
|
4505
|
+
constructor(t, e) {
|
|
4506
|
+
this._docs = e, this.query = t;
|
|
4497
4507
|
}
|
|
4498
4508
|
/** An array of all the documents in the `QuerySnapshot`. */ get docs() {
|
|
4499
4509
|
return [ ...this._docs ];
|
|
@@ -4510,8 +4520,8 @@ function We(t, n, e, r, s) {
|
|
|
4510
4520
|
* @param callback - A callback to be called with a `QueryDocumentSnapshot` for
|
|
4511
4521
|
* each document in the snapshot.
|
|
4512
4522
|
* @param thisArg - The `this` binding for the callback.
|
|
4513
|
-
*/ forEach(t,
|
|
4514
|
-
this._docs.forEach(t,
|
|
4523
|
+
*/ forEach(t, e) {
|
|
4524
|
+
this._docs.forEach(t, e);
|
|
4515
4525
|
}
|
|
4516
4526
|
}
|
|
4517
4527
|
|
|
@@ -4521,14 +4531,14 @@ function We(t, n, e, r, s) {
|
|
|
4521
4531
|
* @param left - A snapshot to compare.
|
|
4522
4532
|
* @param right - A snapshot to compare.
|
|
4523
4533
|
* @returns true if the snapshots are equal.
|
|
4524
|
-
*/ function
|
|
4525
|
-
return t = getModularInstance(t),
|
|
4534
|
+
*/ function Jn(t, e) {
|
|
4535
|
+
return t = getModularInstance(t), e = getModularInstance(e), t instanceof Yn && e instanceof Yn ? t._firestore === e._firestore && t._key.isEqual(e._key) && (null === t._document ? null === e._document : t._document.isEqual(e._document)) && t._converter === e._converter : t instanceof Kn && e instanceof Kn && (pn(t.query, e.query) && _t(t.docs, e.docs, Jn));
|
|
4526
4536
|
}
|
|
4527
4537
|
|
|
4528
4538
|
/**
|
|
4529
4539
|
* Helper that calls `fromDotSeparatedString()` but wraps any error thrown.
|
|
4530
|
-
*/ function
|
|
4531
|
-
return "string" == typeof
|
|
4540
|
+
*/ function Xn(t, e) {
|
|
4541
|
+
return "string" == typeof e ? Gn(t, e) : e instanceof yn ? e._internalPath : e._delegate._internalPath;
|
|
4532
4542
|
}
|
|
4533
4543
|
|
|
4534
4544
|
/**
|
|
@@ -4555,7 +4565,7 @@ function We(t, n, e, r, s) {
|
|
|
4555
4565
|
* can then be passed to {@link query} to create a new query instance that
|
|
4556
4566
|
* also contains this `QueryConstraint`.
|
|
4557
4567
|
*/
|
|
4558
|
-
class
|
|
4568
|
+
class Zn {}
|
|
4559
4569
|
|
|
4560
4570
|
/**
|
|
4561
4571
|
* Creates a new immutable instance of {@link Query} that is extended to also include
|
|
@@ -4565,43 +4575,43 @@ class tr {}
|
|
|
4565
4575
|
* @param queryConstraints - The list of {@link QueryConstraint}s to apply.
|
|
4566
4576
|
* @throws if any of the provided query constraints cannot be combined with the
|
|
4567
4577
|
* existing or new constraints.
|
|
4568
|
-
*/ function
|
|
4569
|
-
for (const
|
|
4578
|
+
*/ function tr(t, ...e) {
|
|
4579
|
+
for (const n of e) t = n._apply(t);
|
|
4570
4580
|
return t;
|
|
4571
4581
|
}
|
|
4572
4582
|
|
|
4573
|
-
class er extends
|
|
4574
|
-
constructor(t,
|
|
4575
|
-
super(), this.dt = t, this.wt =
|
|
4583
|
+
class er extends Zn {
|
|
4584
|
+
constructor(t, e, n) {
|
|
4585
|
+
super(), this.dt = t, this.wt = e, this.yt = n, this.type = "where";
|
|
4576
4586
|
}
|
|
4577
4587
|
_apply(t) {
|
|
4578
|
-
const
|
|
4588
|
+
const e = Vn(t.firestore), n = function(t, e, n, r, s, i, o) {
|
|
4579
4589
|
let u;
|
|
4580
4590
|
if (s.isKeyField()) {
|
|
4581
4591
|
if ("array-contains" /* ARRAY_CONTAINS */ === i || "array-contains-any" /* ARRAY_CONTAINS_ANY */ === i) throw new U(A, `Invalid Query. You can't perform '${i}' queries on documentId().`);
|
|
4582
4592
|
if ("in" /* IN */ === i || "not-in" /* NOT_IN */ === i) {
|
|
4583
|
-
|
|
4584
|
-
const
|
|
4585
|
-
for (const
|
|
4593
|
+
pr(o, i);
|
|
4594
|
+
const e = [];
|
|
4595
|
+
for (const n of o) e.push(mr(r, t, n));
|
|
4586
4596
|
u = {
|
|
4587
4597
|
arrayValue: {
|
|
4588
|
-
values:
|
|
4598
|
+
values: e
|
|
4589
4599
|
}
|
|
4590
4600
|
};
|
|
4591
|
-
} else u =
|
|
4592
|
-
} else "in" /* IN */ !== i && "not-in" /* NOT_IN */ !== i && "array-contains-any" /* ARRAY_CONTAINS_ANY */ !== i ||
|
|
4593
|
-
u =
|
|
4601
|
+
} else u = mr(r, t, o);
|
|
4602
|
+
} else "in" /* IN */ !== i && "not-in" /* NOT_IN */ !== i && "array-contains-any" /* ARRAY_CONTAINS_ANY */ !== i || pr(o, i),
|
|
4603
|
+
u = Ln(n, e, o,
|
|
4594
4604
|
/* allowArrays= */ "in" /* IN */ === i || "not-in" /* NOT_IN */ === i);
|
|
4595
4605
|
const c = Wt.create(s, i, u);
|
|
4596
|
-
return function(t,
|
|
4597
|
-
if (
|
|
4598
|
-
const
|
|
4599
|
-
if (null !==
|
|
4600
|
-
const r =
|
|
4601
|
-
null !== r &&
|
|
4606
|
+
return function(t, e) {
|
|
4607
|
+
if (e.N()) {
|
|
4608
|
+
const n = ae(t);
|
|
4609
|
+
if (null !== n && !n.isEqual(e.field)) throw new U(A, `Invalid query. All where filters with an inequality (<, <=, !=, not-in, >, or >=) must be on the same field. But you have inequality filters on '${n.toString()}' and '${e.field.toString()}'`);
|
|
4610
|
+
const r = ce(t);
|
|
4611
|
+
null !== r && yr(t, e.field, r);
|
|
4602
4612
|
}
|
|
4603
|
-
const
|
|
4604
|
-
for (const
|
|
4613
|
+
const n = function(t, e) {
|
|
4614
|
+
for (const n of t.filters) if (e.indexOf(n.op) >= 0) return n.op;
|
|
4605
4615
|
return null;
|
|
4606
4616
|
}(t,
|
|
4607
4617
|
/**
|
|
@@ -4636,16 +4646,16 @@ class er extends tr {
|
|
|
4636
4646
|
default:
|
|
4637
4647
|
return [];
|
|
4638
4648
|
}
|
|
4639
|
-
}(
|
|
4640
|
-
if (null !==
|
|
4649
|
+
}(e.op));
|
|
4650
|
+
if (null !== n)
|
|
4641
4651
|
// Special case when it's a duplicate op to give a slightly clearer error message.
|
|
4642
|
-
throw
|
|
4652
|
+
throw n === e.op ? new U(A, `Invalid query. You cannot use more than one '${e.op.toString()}' filter.`) : new U(A, `Invalid query. You cannot use '${e.op.toString()}' filters with '${n.toString()}' filters.`);
|
|
4643
4653
|
}(t, c), c;
|
|
4644
|
-
}(t._query, "where",
|
|
4645
|
-
return new
|
|
4646
|
-
const
|
|
4647
|
-
return new
|
|
4648
|
-
}(t._query,
|
|
4654
|
+
}(t._query, "where", e, t.firestore._databaseId, this.dt, this.wt, this.yt);
|
|
4655
|
+
return new hn(t.firestore, t.converter, function(t, e) {
|
|
4656
|
+
const n = t.filters.concat([ e ]);
|
|
4657
|
+
return new oe(t.path, t.collectionGroup, t.explicitOrderBy.slice(), n, t.limit, t.limitType, t.startAt, t.endAt);
|
|
4658
|
+
}(t._query, n));
|
|
4649
4659
|
}
|
|
4650
4660
|
}
|
|
4651
4661
|
|
|
@@ -4659,25 +4669,25 @@ class er extends tr {
|
|
|
4659
4669
|
* "<=", "!=").
|
|
4660
4670
|
* @param value - The value for comparison
|
|
4661
4671
|
* @returns The created {@link Query}.
|
|
4662
|
-
*/ function
|
|
4663
|
-
const r =
|
|
4664
|
-
return new er(s, r,
|
|
4672
|
+
*/ function nr(t, e, n) {
|
|
4673
|
+
const r = e, s = Xn("where", t);
|
|
4674
|
+
return new er(s, r, n);
|
|
4665
4675
|
}
|
|
4666
4676
|
|
|
4667
|
-
class
|
|
4668
|
-
constructor(t,
|
|
4669
|
-
super(), this.dt = t, this._t =
|
|
4677
|
+
class rr extends Zn {
|
|
4678
|
+
constructor(t, e) {
|
|
4679
|
+
super(), this.dt = t, this._t = e, this.type = "orderBy";
|
|
4670
4680
|
}
|
|
4671
4681
|
_apply(t) {
|
|
4672
|
-
const
|
|
4682
|
+
const e = function(t, e, n) {
|
|
4673
4683
|
if (null !== t.startAt) throw new U(A, "Invalid query. You must not call startAt() or startAfter() before calling orderBy().");
|
|
4674
4684
|
if (null !== t.endAt) throw new U(A, "Invalid query. You must not call endAt() or endBefore() before calling orderBy().");
|
|
4675
|
-
const r = new
|
|
4676
|
-
return function(t,
|
|
4677
|
-
if (null ===
|
|
4685
|
+
const r = new re(e, n);
|
|
4686
|
+
return function(t, e) {
|
|
4687
|
+
if (null === ce(t)) {
|
|
4678
4688
|
// This is the first order by. It must match any inequality.
|
|
4679
|
-
const
|
|
4680
|
-
null !==
|
|
4689
|
+
const n = ae(t);
|
|
4690
|
+
null !== n && yr(t, n, e.field);
|
|
4681
4691
|
}
|
|
4682
4692
|
}(t, r), r;
|
|
4683
4693
|
}
|
|
@@ -4692,11 +4702,11 @@ class sr extends tr {
|
|
|
4692
4702
|
* of the query or if any of the fields in the order by are an uncommitted
|
|
4693
4703
|
* server timestamp.
|
|
4694
4704
|
*/ (t._query, this.dt, this._t);
|
|
4695
|
-
return new
|
|
4705
|
+
return new hn(t.firestore, t.converter, function(t, e) {
|
|
4696
4706
|
// TODO(dimond): validate that orderBy does not list the same key twice.
|
|
4697
|
-
const
|
|
4698
|
-
return new
|
|
4699
|
-
}(t._query,
|
|
4707
|
+
const n = t.explicitOrderBy.concat([ e ]);
|
|
4708
|
+
return new oe(t.path, t.collectionGroup, n, t.filters.slice(), t.limit, t.limitType, t.startAt, t.endAt);
|
|
4709
|
+
}(t._query, e));
|
|
4700
4710
|
}
|
|
4701
4711
|
}
|
|
4702
4712
|
|
|
@@ -4708,18 +4718,18 @@ class sr extends tr {
|
|
|
4708
4718
|
* @param directionStr - Optional direction to sort by ('asc' or 'desc'). If
|
|
4709
4719
|
* not specified, order will be ascending.
|
|
4710
4720
|
* @returns The created {@link Query}.
|
|
4711
|
-
*/ function
|
|
4712
|
-
const
|
|
4713
|
-
return new
|
|
4721
|
+
*/ function sr(t, e = "asc") {
|
|
4722
|
+
const n = e, r = Xn("orderBy", t);
|
|
4723
|
+
return new rr(r, n);
|
|
4714
4724
|
}
|
|
4715
4725
|
|
|
4716
|
-
class
|
|
4717
|
-
constructor(t,
|
|
4718
|
-
super(), this.type = t, this.gt =
|
|
4726
|
+
class ir extends Zn {
|
|
4727
|
+
constructor(t, e, n) {
|
|
4728
|
+
super(), this.type = t, this.gt = e, this.vt = n;
|
|
4719
4729
|
}
|
|
4720
4730
|
_apply(t) {
|
|
4721
|
-
return new
|
|
4722
|
-
return new
|
|
4731
|
+
return new hn(t.firestore, t.converter, function(t, e, n) {
|
|
4732
|
+
return new oe(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), e, n, t.startAt, t.endAt);
|
|
4723
4733
|
}(t._query, this.gt, this.vt));
|
|
4724
4734
|
}
|
|
4725
4735
|
}
|
|
@@ -4729,8 +4739,8 @@ class or extends tr {
|
|
|
4729
4739
|
*
|
|
4730
4740
|
* @param limit - The maximum number of items to return.
|
|
4731
4741
|
* @returns The created {@link Query}.
|
|
4732
|
-
*/ function
|
|
4733
|
-
return ut("limit", t), new
|
|
4742
|
+
*/ function or(t) {
|
|
4743
|
+
return ut("limit", t), new ir("limit", t, "F" /* First */);
|
|
4734
4744
|
}
|
|
4735
4745
|
|
|
4736
4746
|
/**
|
|
@@ -4741,54 +4751,56 @@ class or extends tr {
|
|
|
4741
4751
|
*
|
|
4742
4752
|
* @param limit - The maximum number of items to return.
|
|
4743
4753
|
* @returns The created {@link Query}.
|
|
4744
|
-
*/ function
|
|
4745
|
-
return ut("limitToLast", t), new
|
|
4754
|
+
*/ function ur(t) {
|
|
4755
|
+
return ut("limitToLast", t), new ir("limitToLast", t, "L" /* Last */);
|
|
4746
4756
|
}
|
|
4747
4757
|
|
|
4748
|
-
class
|
|
4749
|
-
constructor(t,
|
|
4750
|
-
super(), this.type = t, this.bt =
|
|
4758
|
+
class cr extends Zn {
|
|
4759
|
+
constructor(t, e, n) {
|
|
4760
|
+
super(), this.type = t, this.bt = e, this.Et = n;
|
|
4751
4761
|
}
|
|
4752
4762
|
_apply(t) {
|
|
4753
|
-
const
|
|
4754
|
-
return new
|
|
4755
|
-
return new
|
|
4756
|
-
}(t._query,
|
|
4763
|
+
const e = wr(t, this.type, this.bt, this.Et);
|
|
4764
|
+
return new hn(t.firestore, t.converter, function(t, e) {
|
|
4765
|
+
return new oe(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, e, t.endAt);
|
|
4766
|
+
}(t._query, e));
|
|
4757
4767
|
}
|
|
4758
4768
|
}
|
|
4759
4769
|
|
|
4760
|
-
function
|
|
4761
|
-
return new
|
|
4770
|
+
function ar(...t) {
|
|
4771
|
+
return new cr("startAt", t,
|
|
4772
|
+
/*inclusive=*/ !0);
|
|
4762
4773
|
}
|
|
4763
4774
|
|
|
4764
|
-
function
|
|
4765
|
-
return new
|
|
4766
|
-
/*
|
|
4775
|
+
function hr(...t) {
|
|
4776
|
+
return new cr("startAfter", t,
|
|
4777
|
+
/*inclusive=*/ !1);
|
|
4767
4778
|
}
|
|
4768
4779
|
|
|
4769
|
-
class
|
|
4770
|
-
constructor(t,
|
|
4771
|
-
super(), this.type = t, this.bt =
|
|
4780
|
+
class lr extends Zn {
|
|
4781
|
+
constructor(t, e, n) {
|
|
4782
|
+
super(), this.type = t, this.bt = e, this.Et = n;
|
|
4772
4783
|
}
|
|
4773
4784
|
_apply(t) {
|
|
4774
|
-
const
|
|
4775
|
-
return new
|
|
4776
|
-
return new
|
|
4777
|
-
}(t._query,
|
|
4785
|
+
const e = wr(t, this.type, this.bt, this.Et);
|
|
4786
|
+
return new hn(t.firestore, t.converter, function(t, e) {
|
|
4787
|
+
return new oe(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, t.startAt, e);
|
|
4788
|
+
}(t._query, e));
|
|
4778
4789
|
}
|
|
4779
4790
|
}
|
|
4780
4791
|
|
|
4781
|
-
function
|
|
4782
|
-
return new
|
|
4792
|
+
function fr(...t) {
|
|
4793
|
+
return new lr("endBefore", t,
|
|
4794
|
+
/*inclusive=*/ !1);
|
|
4783
4795
|
}
|
|
4784
4796
|
|
|
4785
|
-
function
|
|
4786
|
-
return new
|
|
4797
|
+
function dr(...t) {
|
|
4798
|
+
return new lr("endAt", t, /*inclusive=*/ !0);
|
|
4787
4799
|
}
|
|
4788
4800
|
|
|
4789
|
-
/** Helper function to create a bound from a document or fields */ function
|
|
4790
|
-
if (
|
|
4791
|
-
if (!r) throw new U(P, `Can't use a DocumentSnapshot that doesn't exist for ${
|
|
4801
|
+
/** Helper function to create a bound from a document or fields */ function wr(t, e, n, r) {
|
|
4802
|
+
if (n[0] = getModularInstance(n[0]), n[0] instanceof Yn) return function(t, e, n, r, s) {
|
|
4803
|
+
if (!r) throw new U(P, `Can't use a DocumentSnapshot that doesn't exist for ${n}().`);
|
|
4792
4804
|
const i = [];
|
|
4793
4805
|
// Because people expect to continue/end a query at the exact document
|
|
4794
4806
|
// provided, we need to use the implicit sort order rather than the explicit
|
|
@@ -4797,23 +4809,23 @@ function wr(...t) {
|
|
|
4797
4809
|
// the provided document. Without the key (by using the explicit sort
|
|
4798
4810
|
// orders), multiple documents could match the position, yielding duplicate
|
|
4799
4811
|
// results.
|
|
4800
|
-
for (const
|
|
4801
|
-
const t = r.data.field(
|
|
4802
|
-
if (Dt(t)) throw new U(A, 'Invalid query. You are trying to start or end a query using a document for which the field "' +
|
|
4812
|
+
for (const n of le(t)) if (n.field.isKeyField()) i.push(Ct(e, r.key)); else {
|
|
4813
|
+
const t = r.data.field(n.field);
|
|
4814
|
+
if (Dt(t)) throw new U(A, 'Invalid query. You are trying to start or end a query using a document for which the field "' + n.field + '" is an uncommitted server timestamp. (Since the value of this field is unknown, you cannot start/end a query with it.)');
|
|
4803
4815
|
if (null === t) {
|
|
4804
|
-
const t =
|
|
4816
|
+
const t = n.field.canonicalString();
|
|
4805
4817
|
throw new U(A, `Invalid query. You are trying to start or end a query using a document for which the field '${t}' (used as the orderBy) does not exist.`);
|
|
4806
4818
|
}
|
|
4807
4819
|
i.push(t);
|
|
4808
4820
|
}
|
|
4809
|
-
return new
|
|
4821
|
+
return new ne(i, s);
|
|
4810
4822
|
}
|
|
4811
4823
|
/**
|
|
4812
4824
|
* Converts a list of field values to a `Bound` for the given query.
|
|
4813
|
-
*/ (t._query, t.firestore._databaseId,
|
|
4825
|
+
*/ (t._query, t.firestore._databaseId, e, n[0]._document, r);
|
|
4814
4826
|
{
|
|
4815
|
-
const s =
|
|
4816
|
-
return function(t,
|
|
4827
|
+
const s = Vn(t.firestore);
|
|
4828
|
+
return function(t, e, n, r, s, i) {
|
|
4817
4829
|
// Use explicit order by's because it has to match the query the user made
|
|
4818
4830
|
const o = t.explicitOrderBy;
|
|
4819
4831
|
if (s.length > o.length) throw new U(A, `Too many arguments provided to ${r}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);
|
|
@@ -4822,48 +4834,48 @@ function wr(...t) {
|
|
|
4822
4834
|
const c = s[i];
|
|
4823
4835
|
if (o[i].field.isKeyField()) {
|
|
4824
4836
|
if ("string" != typeof c) throw new U(A, `Invalid query. Expected a string for document ID in ${r}(), but got a ${typeof c}`);
|
|
4825
|
-
if (!
|
|
4826
|
-
const
|
|
4827
|
-
if (!
|
|
4828
|
-
const s = new
|
|
4829
|
-
u.push(Ct(
|
|
4837
|
+
if (!he(t) && -1 !== c.indexOf("/")) throw new U(A, `Invalid query. When querying a collection and ordering by documentId(), the value passed to ${r}() must be a plain document ID, but '${c}' contains a slash.`);
|
|
4838
|
+
const n = t.path.child(X.fromString(c));
|
|
4839
|
+
if (!et.isDocumentKey(n)) throw new U(A, `Invalid query. When querying a collection group and ordering by documentId(), the value passed to ${r}() must result in a valid document path, but '${n}' is not because it contains an odd number of segments.`);
|
|
4840
|
+
const s = new et(n);
|
|
4841
|
+
u.push(Ct(e, s));
|
|
4830
4842
|
} else {
|
|
4831
|
-
const t =
|
|
4843
|
+
const t = Ln(n, r, c);
|
|
4832
4844
|
u.push(t);
|
|
4833
4845
|
}
|
|
4834
4846
|
}
|
|
4835
|
-
return new
|
|
4847
|
+
return new ne(u, i);
|
|
4836
4848
|
}
|
|
4837
4849
|
/**
|
|
4838
4850
|
* Parses the given `documentIdValue` into a `ReferenceValue`, throwing
|
|
4839
4851
|
* appropriate errors if the value is anything other than a `DocumentReference`
|
|
4840
4852
|
* or `string`, or if the string is malformed.
|
|
4841
|
-
*/ (t._query, t.firestore._databaseId, s,
|
|
4853
|
+
*/ (t._query, t.firestore._databaseId, s, e, n, r);
|
|
4842
4854
|
}
|
|
4843
4855
|
}
|
|
4844
4856
|
|
|
4845
|
-
function
|
|
4846
|
-
if ("string" == typeof (
|
|
4847
|
-
if ("" ===
|
|
4848
|
-
if (!
|
|
4849
|
-
const r =
|
|
4850
|
-
if (!
|
|
4851
|
-
return Ct(t, new
|
|
4857
|
+
function mr(t, e, n) {
|
|
4858
|
+
if ("string" == typeof (n = getModularInstance(n))) {
|
|
4859
|
+
if ("" === n) throw new U(A, "Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");
|
|
4860
|
+
if (!he(e) && -1 !== n.indexOf("/")) throw new U(A, `Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);
|
|
4861
|
+
const r = e.path.child(X.fromString(n));
|
|
4862
|
+
if (!et.isDocumentKey(r)) throw new U(A, `Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${r}' is not because it has an odd number of segments (${r.length}).`);
|
|
4863
|
+
return Ct(t, new et(r));
|
|
4852
4864
|
}
|
|
4853
|
-
if (
|
|
4854
|
-
throw new U(A, `Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${it(
|
|
4865
|
+
if (n instanceof an) return Ct(t, n._key);
|
|
4866
|
+
throw new U(A, `Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${it(n)}.`);
|
|
4855
4867
|
}
|
|
4856
4868
|
|
|
4857
4869
|
/**
|
|
4858
4870
|
* Validates that the value passed into a disjunctive filter satisfies all
|
|
4859
4871
|
* array requirements.
|
|
4860
|
-
*/ function
|
|
4861
|
-
if (!Array.isArray(t) || 0 === t.length) throw new U(A, `Invalid Query. A non-empty array is required for '${
|
|
4862
|
-
if (t.length > 10) throw new U(A, `Invalid Query. '${
|
|
4872
|
+
*/ function pr(t, e) {
|
|
4873
|
+
if (!Array.isArray(t) || 0 === t.length) throw new U(A, `Invalid Query. A non-empty array is required for '${e.toString()}' filters.`);
|
|
4874
|
+
if (t.length > 10) throw new U(A, `Invalid Query. '${e.toString()}' filters support a maximum of 10 elements in the value array.`);
|
|
4863
4875
|
}
|
|
4864
4876
|
|
|
4865
|
-
function
|
|
4866
|
-
if (!
|
|
4877
|
+
function yr(t, e, n) {
|
|
4878
|
+
if (!n.isEqual(e)) throw new U(A, `Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '${e.toString()}' and so you must also use '${e.toString()}' as your first argument to orderBy(), but your first orderBy() is on field '${n.toString()}' instead.`);
|
|
4867
4879
|
}
|
|
4868
4880
|
|
|
4869
4881
|
/**
|
|
@@ -4913,17 +4925,17 @@ function _r(t, n, e) {
|
|
|
4913
4925
|
* their `set()` or fails due to invalid data originating from a `toFirestore()`
|
|
4914
4926
|
* call.
|
|
4915
4927
|
*/
|
|
4916
|
-
function
|
|
4928
|
+
function _r(t, e, n) {
|
|
4917
4929
|
let r;
|
|
4918
4930
|
// Cast to `any` in order to satisfy the union type constraint on
|
|
4919
4931
|
// toFirestore().
|
|
4920
4932
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4921
|
-
return r = t ?
|
|
4933
|
+
return r = t ? n && (n.merge || n.mergeFields) ? t.toFirestore(e, n) : t.toFirestore(e) : e,
|
|
4922
4934
|
r;
|
|
4923
4935
|
}
|
|
4924
4936
|
|
|
4925
|
-
class
|
|
4926
|
-
convertValue(t,
|
|
4937
|
+
class gr extends class {
|
|
4938
|
+
convertValue(t, e = "none") {
|
|
4927
4939
|
switch (St(t)) {
|
|
4928
4940
|
case 0 /* NullValue */ :
|
|
4929
4941
|
return null;
|
|
@@ -4938,7 +4950,7 @@ class vr extends class {
|
|
|
4938
4950
|
return this.convertTimestamp(t.timestampValue);
|
|
4939
4951
|
|
|
4940
4952
|
case 4 /* ServerTimestampValue */ :
|
|
4941
|
-
return this.convertServerTimestamp(t,
|
|
4953
|
+
return this.convertServerTimestamp(t, e);
|
|
4942
4954
|
|
|
4943
4955
|
case 5 /* StringValue */ :
|
|
4944
4956
|
return t.stringValue;
|
|
@@ -4953,32 +4965,32 @@ class vr extends class {
|
|
|
4953
4965
|
return this.convertGeoPoint(t.geoPointValue);
|
|
4954
4966
|
|
|
4955
4967
|
case 9 /* ArrayValue */ :
|
|
4956
|
-
return this.convertArray(t.arrayValue,
|
|
4968
|
+
return this.convertArray(t.arrayValue, e);
|
|
4957
4969
|
|
|
4958
4970
|
case 10 /* ObjectValue */ :
|
|
4959
|
-
return this.convertObject(t.mapValue,
|
|
4971
|
+
return this.convertObject(t.mapValue, e);
|
|
4960
4972
|
|
|
4961
4973
|
default:
|
|
4962
4974
|
throw g();
|
|
4963
4975
|
}
|
|
4964
4976
|
}
|
|
4965
|
-
convertObject(t,
|
|
4966
|
-
const
|
|
4977
|
+
convertObject(t, e) {
|
|
4978
|
+
const n = {};
|
|
4967
4979
|
return Et(t.fields, ((t, r) => {
|
|
4968
|
-
|
|
4969
|
-
})),
|
|
4980
|
+
n[t] = this.convertValue(r, e);
|
|
4981
|
+
})), n;
|
|
4970
4982
|
}
|
|
4971
4983
|
convertGeoPoint(t) {
|
|
4972
|
-
return new
|
|
4984
|
+
return new bn(Pt(t.latitude), Pt(t.longitude));
|
|
4973
4985
|
}
|
|
4974
|
-
convertArray(t,
|
|
4975
|
-
return (t.values || []).map((t => this.convertValue(t,
|
|
4986
|
+
convertArray(t, e) {
|
|
4987
|
+
return (t.values || []).map((t => this.convertValue(t, e)));
|
|
4976
4988
|
}
|
|
4977
|
-
convertServerTimestamp(t,
|
|
4978
|
-
switch (
|
|
4989
|
+
convertServerTimestamp(t, e) {
|
|
4990
|
+
switch (e) {
|
|
4979
4991
|
case "previous":
|
|
4980
|
-
const
|
|
4981
|
-
return null ==
|
|
4992
|
+
const n = Nt(t);
|
|
4993
|
+
return null == n ? null : this.convertValue(n, e);
|
|
4982
4994
|
|
|
4983
4995
|
case "estimate":
|
|
4984
4996
|
return this.convertTimestamp($t(t));
|
|
@@ -4988,16 +5000,16 @@ class vr extends class {
|
|
|
4988
5000
|
}
|
|
4989
5001
|
}
|
|
4990
5002
|
convertTimestamp(t) {
|
|
4991
|
-
const
|
|
4992
|
-
return new gt(
|
|
5003
|
+
const e = Rt(t);
|
|
5004
|
+
return new gt(e.seconds, e.nanos);
|
|
4993
5005
|
}
|
|
4994
|
-
convertDocumentKey(t,
|
|
4995
|
-
const
|
|
4996
|
-
v(
|
|
4997
|
-
const r = new K(
|
|
4998
|
-
return r.isEqual(
|
|
5006
|
+
convertDocumentKey(t, e) {
|
|
5007
|
+
const n = X.fromString(t);
|
|
5008
|
+
v(We(n));
|
|
5009
|
+
const r = new K(n.get(1), n.get(3)), s = new et(n.popFirst(5));
|
|
5010
|
+
return r.isEqual(e) ||
|
|
4999
5011
|
// TODO(b/64130202): Somehow support foreign references.
|
|
5000
|
-
p(`Document ${s} contains a document reference within a different database (${r.projectId}/${r.database}) which is not supported. It will be treated as a reference in the current database (${
|
|
5012
|
+
p(`Document ${s} contains a document reference within a different database (${r.projectId}/${r.database}) which is not supported. It will be treated as a reference in the current database (${e.projectId}/${e.database}) instead.`),
|
|
5001
5013
|
s;
|
|
5002
5014
|
}
|
|
5003
5015
|
} {
|
|
@@ -5005,11 +5017,11 @@ class vr extends class {
|
|
|
5005
5017
|
super(), this.firestore = t;
|
|
5006
5018
|
}
|
|
5007
5019
|
convertBytes(t) {
|
|
5008
|
-
return new
|
|
5020
|
+
return new gn(t);
|
|
5009
5021
|
}
|
|
5010
5022
|
convertReference(t) {
|
|
5011
|
-
const
|
|
5012
|
-
return new
|
|
5023
|
+
const e = this.convertDocumentKey(t, this.firestore._databaseId);
|
|
5024
|
+
return new an(this.firestore, /* converter= */ null, e);
|
|
5013
5025
|
}
|
|
5014
5026
|
}
|
|
5015
5027
|
|
|
@@ -5025,12 +5037,12 @@ class vr extends class {
|
|
|
5025
5037
|
* @param reference - The reference of the document to fetch.
|
|
5026
5038
|
* @returns A Promise resolved with a `DocumentSnapshot` containing the current
|
|
5027
5039
|
* document contents.
|
|
5028
|
-
*/ function
|
|
5029
|
-
const
|
|
5030
|
-
return
|
|
5031
|
-
v(1 ===
|
|
5032
|
-
const r =
|
|
5033
|
-
return new
|
|
5040
|
+
*/ function vr(t) {
|
|
5041
|
+
const e = en((t = ot(t, an)).firestore), n = new gr(t.firestore);
|
|
5042
|
+
return Xe(e, [ t._key ]).then((e => {
|
|
5043
|
+
v(1 === e.length);
|
|
5044
|
+
const r = e[0];
|
|
5045
|
+
return new Yn(t.firestore, n, t._key, r.isFoundDocument() ? r : null, t.converter);
|
|
5034
5046
|
}));
|
|
5035
5047
|
}
|
|
5036
5048
|
|
|
@@ -5045,33 +5057,33 @@ class vr extends class {
|
|
|
5045
5057
|
*
|
|
5046
5058
|
* @param query - The `Query` to execute.
|
|
5047
5059
|
* @returns A Promise that will be resolved with the results of the query.
|
|
5048
|
-
*/ function
|
|
5060
|
+
*/ function br(t) {
|
|
5049
5061
|
!function(t) {
|
|
5050
|
-
if (
|
|
5051
|
-
}((t = ot(t,
|
|
5052
|
-
const
|
|
5053
|
-
return
|
|
5054
|
-
const r =
|
|
5055
|
-
return
|
|
5062
|
+
if (ue(t) && 0 === t.explicitOrderBy.length) throw new U(q, "limitToLast() queries require specifying at least one orderBy() clause");
|
|
5063
|
+
}((t = ot(t, hn))._query);
|
|
5064
|
+
const e = en(t.firestore), n = new gr(t.firestore);
|
|
5065
|
+
return Ze(e, t._query).then((e => {
|
|
5066
|
+
const r = e.map((e => new Hn(t.firestore, n, e.key, e, t.converter)));
|
|
5067
|
+
return ue(t._query) &&
|
|
5056
5068
|
// Limit to last queries reverse the orderBy constraint that was
|
|
5057
5069
|
// specified by the user. As such, we need to reverse the order of the
|
|
5058
5070
|
// results to return the documents in the expected order.
|
|
5059
|
-
r.reverse(), new
|
|
5071
|
+
r.reverse(), new Kn(t, r);
|
|
5060
5072
|
}));
|
|
5061
5073
|
}
|
|
5062
5074
|
|
|
5063
|
-
function
|
|
5064
|
-
const r =
|
|
5065
|
-
return
|
|
5075
|
+
function Er(t, e, n) {
|
|
5076
|
+
const r = _r((t = ot(t, an)).converter, e, n), s = Dn(Vn(t.firestore), "setDoc", t._key, r, null !== t.converter, n);
|
|
5077
|
+
return Je(en(t.firestore), [ s.toMutation(t._key, be.none()) ]);
|
|
5066
5078
|
}
|
|
5067
5079
|
|
|
5068
|
-
function
|
|
5069
|
-
const s =
|
|
5080
|
+
function Tr(t, e, n, ...r) {
|
|
5081
|
+
const s = Vn((t = ot(t, an)).firestore);
|
|
5070
5082
|
// For Compat types, we have to "extract" the underlying types before
|
|
5071
5083
|
// performing validation.
|
|
5072
5084
|
let i;
|
|
5073
|
-
i = "string" == typeof (
|
|
5074
|
-
return
|
|
5085
|
+
i = "string" == typeof (e = getModularInstance(e)) || e instanceof yn ? Cn(s, "updateDoc", t._key, e, n, r) : On(s, "updateDoc", t._key, e);
|
|
5086
|
+
return Je(en(t.firestore), [ i.toMutation(t._key, be.exists(!0)) ]);
|
|
5075
5087
|
}
|
|
5076
5088
|
|
|
5077
5089
|
/**
|
|
@@ -5085,8 +5097,8 @@ function Ir(t, n, e, ...r) {
|
|
|
5085
5097
|
* @param reference - A reference to the document to delete.
|
|
5086
5098
|
* @returns A `Promise` resolved once the document has been successfully
|
|
5087
5099
|
* deleted from the backend.
|
|
5088
|
-
*/ function
|
|
5089
|
-
return
|
|
5100
|
+
*/ function Ir(t) {
|
|
5101
|
+
return Je(en((t = ot(t, an)).firestore), [ new Ae(t._key, be.none()) ]);
|
|
5090
5102
|
}
|
|
5091
5103
|
|
|
5092
5104
|
/**
|
|
@@ -5103,9 +5115,9 @@ function Ir(t, n, e, ...r) {
|
|
|
5103
5115
|
* @throws Error - If the provided input is not a valid Firestore document.
|
|
5104
5116
|
* @returns A `Promise` resolved with a `DocumentReference` pointing to the
|
|
5105
5117
|
* newly created document after it has been written to the backend.
|
|
5106
|
-
*/ function
|
|
5107
|
-
const
|
|
5108
|
-
return
|
|
5118
|
+
*/ function Ar(t, e) {
|
|
5119
|
+
const n = wn(t = ot(t, ln)), r = _r(t.converter, e), s = Dn(Vn(t.firestore), "addDoc", n._key, r, null !== n.converter, {});
|
|
5120
|
+
return Je(en(t.firestore), [ s.toMutation(n._key, be.exists(!1)) ]).then((() => n));
|
|
5109
5121
|
}
|
|
5110
5122
|
|
|
5111
5123
|
/**
|
|
@@ -5127,15 +5139,15 @@ function Ir(t, n, e, ...r) {
|
|
|
5127
5139
|
/**
|
|
5128
5140
|
* Returns a sentinel for use with {@link @firebase/firestore/lite#(updateDoc:1)} or
|
|
5129
5141
|
* {@link @firebase/firestore/lite#(setDoc:1)} with `{merge: true}` to mark a field for deletion.
|
|
5130
|
-
*/ function
|
|
5131
|
-
return new
|
|
5142
|
+
*/ function Rr() {
|
|
5143
|
+
return new Nn("deleteField");
|
|
5132
5144
|
}
|
|
5133
5145
|
|
|
5134
5146
|
/**
|
|
5135
5147
|
* Returns a sentinel used with {@link @firebase/firestore/lite#(setDoc:1)} or {@link @firebase/firestore/lite#(updateDoc:1)} to
|
|
5136
5148
|
* include a server-generated timestamp in the written data.
|
|
5137
|
-
*/ function
|
|
5138
|
-
return new
|
|
5149
|
+
*/ function Pr() {
|
|
5150
|
+
return new Sn("serverTimestamp");
|
|
5139
5151
|
}
|
|
5140
5152
|
|
|
5141
5153
|
/**
|
|
@@ -5149,10 +5161,10 @@ function Ir(t, n, e, ...r) {
|
|
|
5149
5161
|
* @param elements - The elements to union into the array.
|
|
5150
5162
|
* @returns The `FieldValue` sentinel for use in a call to `setDoc()` or
|
|
5151
5163
|
* `updateDoc()`.
|
|
5152
|
-
*/ function
|
|
5164
|
+
*/ function Vr(...t) {
|
|
5153
5165
|
// NOTE: We don't actually parse the data until it's used in set() or
|
|
5154
5166
|
// update() since we'd need the Firestore instance to do this.
|
|
5155
|
-
return new
|
|
5167
|
+
return new Fn("arrayUnion", t);
|
|
5156
5168
|
}
|
|
5157
5169
|
|
|
5158
5170
|
/**
|
|
@@ -5165,10 +5177,10 @@ function Ir(t, n, e, ...r) {
|
|
|
5165
5177
|
* @param elements - The elements to remove from the array.
|
|
5166
5178
|
* @returns The `FieldValue` sentinel for use in a call to `setDoc()` or
|
|
5167
5179
|
* `updateDoc()`
|
|
5168
|
-
*/ function
|
|
5180
|
+
*/ function Dr(...t) {
|
|
5169
5181
|
// NOTE: We don't actually parse the data until it's used in set() or
|
|
5170
5182
|
// update() since we'd need the Firestore instance to do this.
|
|
5171
|
-
return new
|
|
5183
|
+
return new xn("arrayRemove", t);
|
|
5172
5184
|
}
|
|
5173
5185
|
|
|
5174
5186
|
/**
|
|
@@ -5189,8 +5201,8 @@ function Ir(t, n, e, ...r) {
|
|
|
5189
5201
|
* @param n - The value to increment by.
|
|
5190
5202
|
* @returns The `FieldValue` sentinel for use in a call to `setDoc()` or
|
|
5191
5203
|
* `updateDoc()`
|
|
5192
|
-
*/ function
|
|
5193
|
-
return new
|
|
5204
|
+
*/ function Nr(t) {
|
|
5205
|
+
return new qn("increment", t);
|
|
5194
5206
|
}
|
|
5195
5207
|
|
|
5196
5208
|
/**
|
|
@@ -5216,25 +5228,25 @@ function Ir(t, n, e, ...r) {
|
|
|
5216
5228
|
* provides methods for adding writes to the write batch. None of the writes
|
|
5217
5229
|
* will be committed (or visible locally) until {@link WriteBatch.commit} is
|
|
5218
5230
|
* called.
|
|
5219
|
-
*/ class
|
|
5231
|
+
*/ class $r {
|
|
5220
5232
|
/** @hideconstructor */
|
|
5221
|
-
constructor(t,
|
|
5222
|
-
this._firestore = t, this._commitHandler =
|
|
5223
|
-
this._dataReader =
|
|
5233
|
+
constructor(t, e) {
|
|
5234
|
+
this._firestore = t, this._commitHandler = e, this._mutations = [], this._committed = !1,
|
|
5235
|
+
this._dataReader = Vn(t);
|
|
5224
5236
|
}
|
|
5225
|
-
set(t,
|
|
5237
|
+
set(t, e, n) {
|
|
5226
5238
|
this._verifyNotCommitted();
|
|
5227
|
-
const r =
|
|
5228
|
-
return this._mutations.push(i.toMutation(r._key,
|
|
5239
|
+
const r = Sr(t, this._firestore), s = _r(r.converter, e, n), i = Dn(this._dataReader, "WriteBatch.set", r._key, s, null !== r.converter, n);
|
|
5240
|
+
return this._mutations.push(i.toMutation(r._key, be.none())), this;
|
|
5229
5241
|
}
|
|
5230
|
-
update(t,
|
|
5242
|
+
update(t, e, n, ...r) {
|
|
5231
5243
|
this._verifyNotCommitted();
|
|
5232
|
-
const s =
|
|
5244
|
+
const s = Sr(t, this._firestore);
|
|
5233
5245
|
// For Compat types, we have to "extract" the underlying types before
|
|
5234
5246
|
// performing validation.
|
|
5235
5247
|
let i;
|
|
5236
|
-
return i = "string" == typeof (
|
|
5237
|
-
this._mutations.push(i.toMutation(s._key,
|
|
5248
|
+
return i = "string" == typeof (e = getModularInstance(e)) || e instanceof yn ? Cn(this._dataReader, "WriteBatch.update", s._key, e, n, r) : On(this._dataReader, "WriteBatch.update", s._key, e),
|
|
5249
|
+
this._mutations.push(i.toMutation(s._key, be.exists(!0))), this;
|
|
5238
5250
|
}
|
|
5239
5251
|
/**
|
|
5240
5252
|
* Deletes the document referred to by the provided {@link DocumentReference}.
|
|
@@ -5243,8 +5255,8 @@ function Ir(t, n, e, ...r) {
|
|
|
5243
5255
|
* @returns This `WriteBatch` instance. Used for chaining method calls.
|
|
5244
5256
|
*/ delete(t) {
|
|
5245
5257
|
this._verifyNotCommitted();
|
|
5246
|
-
const
|
|
5247
|
-
return this._mutations = this._mutations.concat(new
|
|
5258
|
+
const e = Sr(t, this._firestore);
|
|
5259
|
+
return this._mutations = this._mutations.concat(new Ae(e._key, be.none())), this;
|
|
5248
5260
|
}
|
|
5249
5261
|
/**
|
|
5250
5262
|
* Commits all of the writes in this write batch as a single atomic unit.
|
|
@@ -5265,8 +5277,8 @@ function Ir(t, n, e, ...r) {
|
|
|
5265
5277
|
}
|
|
5266
5278
|
}
|
|
5267
5279
|
|
|
5268
|
-
function
|
|
5269
|
-
if ((t = getModularInstance(t)).firestore !==
|
|
5280
|
+
function Sr(t, e) {
|
|
5281
|
+
if ((t = getModularInstance(t)).firestore !== e) throw new U(A, "Provided document reference is from a different Firestore instance.");
|
|
5270
5282
|
return t;
|
|
5271
5283
|
}
|
|
5272
5284
|
|
|
@@ -5282,9 +5294,9 @@ function Fr(t, n) {
|
|
|
5282
5294
|
*
|
|
5283
5295
|
* @returns A `WriteBatch` that can be used to atomically execute multiple
|
|
5284
5296
|
* writes.
|
|
5285
|
-
*/ function
|
|
5286
|
-
const
|
|
5287
|
-
return new
|
|
5297
|
+
*/ function Fr(t) {
|
|
5298
|
+
const e = en(t = ot(t, rn));
|
|
5299
|
+
return new $r(t, (t => Je(e, t)));
|
|
5288
5300
|
}
|
|
5289
5301
|
|
|
5290
5302
|
/**
|
|
@@ -5306,7 +5318,7 @@ function Fr(t, n) {
|
|
|
5306
5318
|
/**
|
|
5307
5319
|
* Internal transaction object responsible for accumulating the mutations to
|
|
5308
5320
|
* perform and the base versions for any documents read.
|
|
5309
|
-
*/ class
|
|
5321
|
+
*/ class xr {
|
|
5310
5322
|
constructor(t) {
|
|
5311
5323
|
this.datastore = t,
|
|
5312
5324
|
// The version of each document that was read during this transaction.
|
|
@@ -5326,66 +5338,66 @@ function Fr(t, n) {
|
|
|
5326
5338
|
}
|
|
5327
5339
|
async lookup(t) {
|
|
5328
5340
|
if (this.ensureCommitNotCalled(), this.mutations.length > 0) throw new U(A, "Firestore transactions require all reads to be executed before all writes.");
|
|
5329
|
-
const
|
|
5330
|
-
return
|
|
5341
|
+
const e = await Xe(this.datastore, t);
|
|
5342
|
+
return e.forEach((t => this.recordVersion(t))), e;
|
|
5331
5343
|
}
|
|
5332
|
-
set(t,
|
|
5333
|
-
this.write(
|
|
5344
|
+
set(t, e) {
|
|
5345
|
+
this.write(e.toMutation(t, this.precondition(t))), this.writtenDocs.add(t.toString());
|
|
5334
5346
|
}
|
|
5335
|
-
update(t,
|
|
5347
|
+
update(t, e) {
|
|
5336
5348
|
try {
|
|
5337
|
-
this.write(
|
|
5349
|
+
this.write(e.toMutation(t, this.preconditionForUpdate(t)));
|
|
5338
5350
|
} catch (t) {
|
|
5339
5351
|
this.lastWriteError = t;
|
|
5340
5352
|
}
|
|
5341
5353
|
this.writtenDocs.add(t.toString());
|
|
5342
5354
|
}
|
|
5343
5355
|
delete(t) {
|
|
5344
|
-
this.write(new
|
|
5356
|
+
this.write(new Ae(t, this.precondition(t))), this.writtenDocs.add(t.toString());
|
|
5345
5357
|
}
|
|
5346
5358
|
async commit() {
|
|
5347
5359
|
if (this.ensureCommitNotCalled(), this.lastWriteError) throw this.lastWriteError;
|
|
5348
5360
|
const t = this.readVersions;
|
|
5349
5361
|
// For each mutation, note that the doc was written.
|
|
5350
|
-
this.mutations.forEach((
|
|
5351
|
-
t.delete(
|
|
5362
|
+
this.mutations.forEach((e => {
|
|
5363
|
+
t.delete(e.key.toString());
|
|
5352
5364
|
})),
|
|
5353
5365
|
// For each document that was read but not written to, we want to perform
|
|
5354
5366
|
// a `verify` operation.
|
|
5355
|
-
t.forEach(((t,
|
|
5356
|
-
const
|
|
5357
|
-
this.mutations.push(new
|
|
5358
|
-
})), await
|
|
5367
|
+
t.forEach(((t, e) => {
|
|
5368
|
+
const n = et.fromPath(e);
|
|
5369
|
+
this.mutations.push(new Re(n, this.precondition(n)));
|
|
5370
|
+
})), await Je(this.datastore, this.mutations), this.committed = !0;
|
|
5359
5371
|
}
|
|
5360
5372
|
recordVersion(t) {
|
|
5361
|
-
let
|
|
5362
|
-
if (t.isFoundDocument())
|
|
5373
|
+
let e;
|
|
5374
|
+
if (t.isFoundDocument()) e = t.version; else {
|
|
5363
5375
|
if (!t.isNoDocument()) throw g();
|
|
5364
5376
|
// For deleted docs, we must use baseVersion 0 when we overwrite them.
|
|
5365
|
-
|
|
5377
|
+
e = vt.min();
|
|
5366
5378
|
}
|
|
5367
|
-
const
|
|
5368
|
-
if (
|
|
5369
|
-
if (!
|
|
5379
|
+
const n = this.readVersions.get(t.key.toString());
|
|
5380
|
+
if (n) {
|
|
5381
|
+
if (!e.isEqual(n))
|
|
5370
5382
|
// This transaction will fail no matter what.
|
|
5371
5383
|
throw new U(F, "Document version changed between two reads.");
|
|
5372
|
-
} else this.readVersions.set(t.key.toString(),
|
|
5384
|
+
} else this.readVersions.set(t.key.toString(), e);
|
|
5373
5385
|
}
|
|
5374
5386
|
/**
|
|
5375
5387
|
* Returns the version of this document when it was read in this transaction,
|
|
5376
5388
|
* as a precondition, or no precondition if it was not read.
|
|
5377
5389
|
*/ precondition(t) {
|
|
5378
|
-
const
|
|
5379
|
-
return !this.writtenDocs.has(t.toString()) &&
|
|
5390
|
+
const e = this.readVersions.get(t.toString());
|
|
5391
|
+
return !this.writtenDocs.has(t.toString()) && e ? be.updateTime(e) : be.none();
|
|
5380
5392
|
}
|
|
5381
5393
|
/**
|
|
5382
5394
|
* Returns the precondition for a document if the operation is an update.
|
|
5383
5395
|
*/ preconditionForUpdate(t) {
|
|
5384
|
-
const
|
|
5396
|
+
const e = this.readVersions.get(t.toString());
|
|
5385
5397
|
// The first time a document is written, we want to take into account the
|
|
5386
5398
|
// read time and existence
|
|
5387
|
-
if (!this.writtenDocs.has(t.toString()) &&
|
|
5388
|
-
if (
|
|
5399
|
+
if (!this.writtenDocs.has(t.toString()) && e) {
|
|
5400
|
+
if (e.isEqual(vt.min()))
|
|
5389
5401
|
// The document doesn't exist, so fail the transaction.
|
|
5390
5402
|
// This has to be validated locally because you can't send a
|
|
5391
5403
|
// precondition that a document does not exist without changing the
|
|
@@ -5397,11 +5409,11 @@ function Fr(t, n) {
|
|
|
5397
5409
|
// transaction.
|
|
5398
5410
|
throw new U(A, "Can't update a document that doesn't exist.");
|
|
5399
5411
|
// Document exists, base precondition on document update time.
|
|
5400
|
-
return
|
|
5412
|
+
return be.updateTime(e);
|
|
5401
5413
|
}
|
|
5402
5414
|
// Document was not read, so we just use the preconditions for a blind
|
|
5403
5415
|
// update.
|
|
5404
|
-
return
|
|
5416
|
+
return be.exists(!0);
|
|
5405
5417
|
}
|
|
5406
5418
|
write(t) {
|
|
5407
5419
|
this.ensureCommitNotCalled(), this.mutations.push(t);
|
|
@@ -5429,20 +5441,20 @@ function Fr(t, n) {
|
|
|
5429
5441
|
* TransactionRunner encapsulates the logic needed to run and retry transactions
|
|
5430
5442
|
* with backoff.
|
|
5431
5443
|
*/
|
|
5432
|
-
class
|
|
5433
|
-
constructor(t,
|
|
5434
|
-
this.asyncQueue = t, this.datastore =
|
|
5435
|
-
this.Tt = 5, this.It = new
|
|
5444
|
+
class qr {
|
|
5445
|
+
constructor(t, e, n, r) {
|
|
5446
|
+
this.asyncQueue = t, this.datastore = e, this.updateFunction = n, this.deferred = r,
|
|
5447
|
+
this.Tt = 5, this.It = new He(this.asyncQueue, "transaction_retry" /* TransactionRetry */);
|
|
5436
5448
|
}
|
|
5437
5449
|
/** Runs the transaction and sets the result on deferred. */ run() {
|
|
5438
5450
|
this.Tt -= 1, this.At();
|
|
5439
5451
|
}
|
|
5440
5452
|
At() {
|
|
5441
5453
|
this.It.W((async () => {
|
|
5442
|
-
const t = new
|
|
5443
|
-
|
|
5454
|
+
const t = new xr(this.datastore), e = this.Rt(t);
|
|
5455
|
+
e && e.then((e => {
|
|
5444
5456
|
this.asyncQueue.enqueueAndForget((() => t.commit().then((() => {
|
|
5445
|
-
this.deferred.resolve(
|
|
5457
|
+
this.deferred.resolve(e);
|
|
5446
5458
|
})).catch((t => {
|
|
5447
5459
|
this.Pt(t);
|
|
5448
5460
|
}))));
|
|
@@ -5453,8 +5465,8 @@ class Or {
|
|
|
5453
5465
|
}
|
|
5454
5466
|
Rt(t) {
|
|
5455
5467
|
try {
|
|
5456
|
-
const
|
|
5457
|
-
return !ct(
|
|
5468
|
+
const e = this.updateFunction(t);
|
|
5469
|
+
return !ct(e) && e.catch && e.then ? e : (this.deferred.reject(Error("Transaction callback must return a Promise")),
|
|
5458
5470
|
null);
|
|
5459
5471
|
} catch (t) {
|
|
5460
5472
|
// Do not retry errors thrown by user provided updateFunction.
|
|
@@ -5469,8 +5481,8 @@ class Or {
|
|
|
5469
5481
|
if ("FirebaseError" === t.name) {
|
|
5470
5482
|
// In transactions, the backend will fail outdated reads with FAILED_PRECONDITION and
|
|
5471
5483
|
// non-matching document versions with ABORTED. These errors should be retried.
|
|
5472
|
-
const
|
|
5473
|
-
return "aborted" ===
|
|
5484
|
+
const e = t.code;
|
|
5485
|
+
return "aborted" === e || "failed-precondition" === e || !
|
|
5474
5486
|
/**
|
|
5475
5487
|
* Determines whether an error code represents a permanent error when received
|
|
5476
5488
|
* in response to a non-write operation.
|
|
@@ -5507,7 +5519,7 @@ class Or {
|
|
|
5507
5519
|
case L:
|
|
5508
5520
|
return !0;
|
|
5509
5521
|
}
|
|
5510
|
-
}(
|
|
5522
|
+
}(e);
|
|
5511
5523
|
}
|
|
5512
5524
|
return !1;
|
|
5513
5525
|
}
|
|
@@ -5529,7 +5541,7 @@ class Or {
|
|
|
5529
5541
|
* See the License for the specific language governing permissions and
|
|
5530
5542
|
* limitations under the License.
|
|
5531
5543
|
*/
|
|
5532
|
-
/** The Platform's 'document' implementation or null if not available. */ function
|
|
5544
|
+
/** The Platform's 'document' implementation or null if not available. */ function Or() {
|
|
5533
5545
|
// `document` is not always available, e.g. in ReactNative and WebWorkers.
|
|
5534
5546
|
// eslint-disable-next-line no-restricted-globals
|
|
5535
5547
|
return "undefined" != typeof document ? document : null;
|
|
@@ -5561,9 +5573,9 @@ class Or {
|
|
|
5561
5573
|
* Note: We implement `PromiseLike` instead of `Promise`, as the `Promise` type
|
|
5562
5574
|
* in newer versions of TypeScript defines `finally`, which is not available in
|
|
5563
5575
|
* IE.
|
|
5564
|
-
*/ class
|
|
5565
|
-
constructor(t,
|
|
5566
|
-
this.asyncQueue = t, this.timerId =
|
|
5576
|
+
*/ class Cr {
|
|
5577
|
+
constructor(t, e, n, r, s) {
|
|
5578
|
+
this.asyncQueue = t, this.timerId = e, this.targetTimeMs = n, this.op = r, this.removalCallback = s,
|
|
5567
5579
|
this.deferred = new k, this.then = this.deferred.promise.then.bind(this.deferred.promise),
|
|
5568
5580
|
// It's normal for the deferred promise to be canceled (due to cancellation)
|
|
5569
5581
|
// and so we attach a dummy catch callback to avoid
|
|
@@ -5583,9 +5595,9 @@ class Or {
|
|
|
5583
5595
|
* from its delayedOperations list.
|
|
5584
5596
|
* PORTING NOTE: This exists to prevent making removeDelayedOperation() and
|
|
5585
5597
|
* the DelayedOperation class public.
|
|
5586
|
-
*/ static createAndSchedule(t,
|
|
5587
|
-
const i = Date.now() +
|
|
5588
|
-
return o.start(
|
|
5598
|
+
*/ static createAndSchedule(t, e, n, r, s) {
|
|
5599
|
+
const i = Date.now() + n, o = new Cr(t, e, i, r, s);
|
|
5600
|
+
return o.start(n), o;
|
|
5589
5601
|
}
|
|
5590
5602
|
/**
|
|
5591
5603
|
* Starts the timer. This is called immediately after construction by
|
|
@@ -5633,7 +5645,7 @@ class Or {
|
|
|
5633
5645
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5634
5646
|
* See the License for the specific language governing permissions and
|
|
5635
5647
|
* limitations under the License.
|
|
5636
|
-
*/ class
|
|
5648
|
+
*/ class Lr {
|
|
5637
5649
|
constructor() {
|
|
5638
5650
|
// The last promise in the queue.
|
|
5639
5651
|
this.Dt = Promise.resolve(),
|
|
@@ -5656,15 +5668,15 @@ class Or {
|
|
|
5656
5668
|
// List of TimerIds to fast-forward delays for.
|
|
5657
5669
|
this.Ot = [],
|
|
5658
5670
|
// Backoff timer used to schedule retries for retryable operations
|
|
5659
|
-
this.It = new
|
|
5671
|
+
this.It = new He(this, "async_queue_retry" /* AsyncQueueRetry */),
|
|
5660
5672
|
// Visibility handler that triggers an immediate retry of all retryable
|
|
5661
5673
|
// operations. Meant to speed up recovery when we regain file system access
|
|
5662
5674
|
// after page comes into foreground.
|
|
5663
5675
|
this.Ct = () => {
|
|
5664
|
-
const t =
|
|
5676
|
+
const t = Or();
|
|
5665
5677
|
t && m("AsyncQueue", "Visibility state changed to " + t.visibilityState), this.It.H();
|
|
5666
5678
|
};
|
|
5667
|
-
const t =
|
|
5679
|
+
const t = Or();
|
|
5668
5680
|
t && "function" == typeof t.addEventListener && t.addEventListener("visibilitychange", this.Ct);
|
|
5669
5681
|
}
|
|
5670
5682
|
get isShuttingDown() {
|
|
@@ -5685,8 +5697,8 @@ class Or {
|
|
|
5685
5697
|
enterRestrictedMode(t) {
|
|
5686
5698
|
if (!this.$t) {
|
|
5687
5699
|
this.$t = !0, this.qt = t || !1;
|
|
5688
|
-
const
|
|
5689
|
-
|
|
5700
|
+
const e = Or();
|
|
5701
|
+
e && "function" == typeof e.removeEventListener && e.removeEventListener("visibilitychange", this.Ct);
|
|
5690
5702
|
}
|
|
5691
5703
|
}
|
|
5692
5704
|
enqueue(t) {
|
|
@@ -5696,9 +5708,9 @@ class Or {
|
|
|
5696
5708
|
// Create a deferred Promise that we can return to the callee. This
|
|
5697
5709
|
// allows us to return a "hanging Promise" only to the callee and still
|
|
5698
5710
|
// advance the queue even when the operation is not run.
|
|
5699
|
-
const
|
|
5700
|
-
return this.Ut((() => this.$t && this.qt ? Promise.resolve() : (t().then(
|
|
5701
|
-
|
|
5711
|
+
const e = new k;
|
|
5712
|
+
return this.Ut((() => this.$t && this.qt ? Promise.resolve() : (t().then(e.resolve, e.reject),
|
|
5713
|
+
e.promise))).then((() => e.promise));
|
|
5702
5714
|
}
|
|
5703
5715
|
enqueueRetryable(t) {
|
|
5704
5716
|
this.enqueueAndForget((() => (this.Nt.push(t), this.kt())));
|
|
@@ -5768,18 +5780,18 @@ class Or {
|
|
|
5768
5780
|
}
|
|
5769
5781
|
}
|
|
5770
5782
|
Ut(t) {
|
|
5771
|
-
const
|
|
5783
|
+
const e = this.Dt.then((() => (this.xt = !0, t().catch((t => {
|
|
5772
5784
|
this.Ft = t, this.xt = !1;
|
|
5773
|
-
const
|
|
5785
|
+
const e =
|
|
5774
5786
|
/**
|
|
5775
5787
|
* Chrome includes Error.message in Error.stack. Other browsers do not.
|
|
5776
5788
|
* This returns expected output of message + stack when available.
|
|
5777
5789
|
* @param error - Error or FirestoreError
|
|
5778
5790
|
*/
|
|
5779
5791
|
function(t) {
|
|
5780
|
-
let
|
|
5781
|
-
t.stack && (
|
|
5782
|
-
return
|
|
5792
|
+
let e = t.message || "";
|
|
5793
|
+
t.stack && (e = t.stack.includes(t.message) ? t.stack : t.message + "\n" + t.stack);
|
|
5794
|
+
return e;
|
|
5783
5795
|
}
|
|
5784
5796
|
/**
|
|
5785
5797
|
* @license
|
|
@@ -5809,15 +5821,15 @@ class Or {
|
|
|
5809
5821
|
// Re-throw the error so that this.tail becomes a rejected Promise and
|
|
5810
5822
|
// all further attempts to chain (via .then) will just short-circuit
|
|
5811
5823
|
// and return the rejected Promise.
|
|
5812
|
-
throw p("INTERNAL UNHANDLED ERROR: ",
|
|
5824
|
+
throw p("INTERNAL UNHANDLED ERROR: ", e), t;
|
|
5813
5825
|
})).then((t => (this.xt = !1, t))))));
|
|
5814
|
-
return this.Dt =
|
|
5826
|
+
return this.Dt = e, e;
|
|
5815
5827
|
}
|
|
5816
|
-
enqueueAfterDelay(t,
|
|
5828
|
+
enqueueAfterDelay(t, e, n) {
|
|
5817
5829
|
this.Lt(),
|
|
5818
5830
|
// Fast-forward delays for timerIds that have been overriden.
|
|
5819
|
-
this.Ot.indexOf(t) > -1 && (
|
|
5820
|
-
const r =
|
|
5831
|
+
this.Ot.indexOf(t) > -1 && (e = 0);
|
|
5832
|
+
const r = Cr.createAndSchedule(this, t, e, n, (t => this.jt(t)));
|
|
5821
5833
|
return this.St.push(r), r;
|
|
5822
5834
|
}
|
|
5823
5835
|
Lt() {
|
|
@@ -5841,7 +5853,7 @@ class Or {
|
|
|
5841
5853
|
* For Tests: Determine if a delayed operation with a particular TimerId
|
|
5842
5854
|
* exists.
|
|
5843
5855
|
*/ Bt(t) {
|
|
5844
|
-
for (const
|
|
5856
|
+
for (const e of this.St) if (e.timerId === t) return !0;
|
|
5845
5857
|
return !1;
|
|
5846
5858
|
}
|
|
5847
5859
|
/**
|
|
@@ -5854,8 +5866,8 @@ class Or {
|
|
|
5854
5866
|
// Note that draining may generate more delayed ops, so we do that first.
|
|
5855
5867
|
return this.Mt().then((() => {
|
|
5856
5868
|
// Run ops in the same order they'd run if they ran naturally.
|
|
5857
|
-
this.St.sort(((t,
|
|
5858
|
-
for (const
|
|
5869
|
+
this.St.sort(((t, e) => t.targetTimeMs - e.targetTimeMs));
|
|
5870
|
+
for (const e of this.St) if (e.skipDelay(), "all" /* All */ !== t && e.timerId === t) break;
|
|
5859
5871
|
return this.Mt();
|
|
5860
5872
|
}));
|
|
5861
5873
|
}
|
|
@@ -5866,15 +5878,15 @@ class Or {
|
|
|
5866
5878
|
}
|
|
5867
5879
|
/** Called once a DelayedOperation is run or canceled. */ jt(t) {
|
|
5868
5880
|
// NOTE: indexOf / slice are O(n), but delayedOperations is expected to be small.
|
|
5869
|
-
const
|
|
5870
|
-
this.St.splice(
|
|
5881
|
+
const e = this.St.indexOf(t);
|
|
5882
|
+
this.St.splice(e, 1);
|
|
5871
5883
|
}
|
|
5872
5884
|
}
|
|
5873
5885
|
|
|
5874
|
-
class
|
|
5886
|
+
class Ur {
|
|
5875
5887
|
/** @hideconstructor */
|
|
5876
|
-
constructor(t,
|
|
5877
|
-
this._firestore = t, this._transaction =
|
|
5888
|
+
constructor(t, e) {
|
|
5889
|
+
this._firestore = t, this._transaction = e, this._dataReader = Vn(t);
|
|
5878
5890
|
}
|
|
5879
5891
|
/**
|
|
5880
5892
|
* Reads the document referenced by the provided {@link DocumentReference}.
|
|
@@ -5882,25 +5894,25 @@ class kr {
|
|
|
5882
5894
|
* @param documentRef - A reference to the document to be read.
|
|
5883
5895
|
* @returns A `DocumentSnapshot` with the read data.
|
|
5884
5896
|
*/ get(t) {
|
|
5885
|
-
const
|
|
5886
|
-
return this._transaction.lookup([
|
|
5897
|
+
const e = Sr(t, this._firestore), n = new gr(this._firestore);
|
|
5898
|
+
return this._transaction.lookup([ e._key ]).then((t => {
|
|
5887
5899
|
if (!t || 1 !== t.length) return g();
|
|
5888
5900
|
const r = t[0];
|
|
5889
|
-
if (r.isFoundDocument()) return new
|
|
5890
|
-
if (r.isNoDocument()) return new
|
|
5901
|
+
if (r.isFoundDocument()) return new Yn(this._firestore, n, r.key, r, e.converter);
|
|
5902
|
+
if (r.isNoDocument()) return new Yn(this._firestore, n, e._key, null, e.converter);
|
|
5891
5903
|
throw g();
|
|
5892
5904
|
}));
|
|
5893
5905
|
}
|
|
5894
|
-
set(t,
|
|
5895
|
-
const r =
|
|
5906
|
+
set(t, e, n) {
|
|
5907
|
+
const r = Sr(t, this._firestore), s = _r(r.converter, e, n), i = Dn(this._dataReader, "Transaction.set", r._key, s, null !== r.converter, n);
|
|
5896
5908
|
return this._transaction.set(r._key, i), this;
|
|
5897
5909
|
}
|
|
5898
|
-
update(t,
|
|
5899
|
-
const s =
|
|
5910
|
+
update(t, e, n, ...r) {
|
|
5911
|
+
const s = Sr(t, this._firestore);
|
|
5900
5912
|
// For Compat types, we have to "extract" the underlying types before
|
|
5901
5913
|
// performing validation.
|
|
5902
5914
|
let i;
|
|
5903
|
-
return i = "string" == typeof (
|
|
5915
|
+
return i = "string" == typeof (e = getModularInstance(e)) || e instanceof yn ? Cn(this._dataReader, "Transaction.update", s._key, e, n, r) : On(this._dataReader, "Transaction.update", s._key, e),
|
|
5904
5916
|
this._transaction.update(s._key, i), this;
|
|
5905
5917
|
}
|
|
5906
5918
|
/**
|
|
@@ -5909,8 +5921,8 @@ class kr {
|
|
|
5909
5921
|
* @param documentRef - A reference to the document to be deleted.
|
|
5910
5922
|
* @returns This `Transaction` instance. Used for chaining method calls.
|
|
5911
5923
|
*/ delete(t) {
|
|
5912
|
-
const
|
|
5913
|
-
return this._transaction.delete(
|
|
5924
|
+
const e = Sr(t, this._firestore);
|
|
5925
|
+
return this._transaction.delete(e._key), this;
|
|
5914
5926
|
}
|
|
5915
5927
|
}
|
|
5916
5928
|
|
|
@@ -5930,9 +5942,9 @@ class kr {
|
|
|
5930
5942
|
* (the `updateFunction` returned a failed promise), the promise returned by the
|
|
5931
5943
|
* `updateFunction `is returned here. Otherwise, if the transaction failed, a
|
|
5932
5944
|
* rejected promise with the corresponding failure error is returned.
|
|
5933
|
-
*/ function
|
|
5934
|
-
const
|
|
5935
|
-
return new
|
|
5945
|
+
*/ function kr(t, e) {
|
|
5946
|
+
const n = en(t = ot(t, rn)), r = new k;
|
|
5947
|
+
return new qr(new Lr, n, (n => e(new Ur(t, n))), r).run(), r.promise;
|
|
5936
5948
|
}
|
|
5937
5949
|
|
|
5938
5950
|
/**
|
|
@@ -5944,12 +5956,12 @@ class kr {
|
|
|
5944
5956
|
* @packageDocumentation
|
|
5945
5957
|
*/ !function(t) {
|
|
5946
5958
|
f = t;
|
|
5947
|
-
}(`${SDK_VERSION}_lite`), _registerComponent(new Component("firestore/lite", ((t, {options:
|
|
5948
|
-
const
|
|
5949
|
-
return
|
|
5959
|
+
}(`${SDK_VERSION}_lite`), _registerComponent(new Component("firestore/lite", ((t, {options: e}) => {
|
|
5960
|
+
const n = t.getProvider("app").getImmediate(), r = new rn(n, new z(t.getProvider("auth-internal")), new Y(t.getProvider("app-check-internal")));
|
|
5961
|
+
return e && r._setSettings(e), r;
|
|
5950
5962
|
}), "PUBLIC")),
|
|
5951
5963
|
// RUNTIME_ENV and BUILD_TARGET are replaced by real values during the compilation
|
|
5952
|
-
registerVersion("firestore-lite", "3.4.4-canary.
|
|
5964
|
+
registerVersion("firestore-lite", "3.4.4-canary.307d019c7", ""), registerVersion("firestore-lite", "3.4.4-canary.307d019c7", "esm2017");
|
|
5953
5965
|
|
|
5954
|
-
export {
|
|
5966
|
+
export { gn as Bytes, ln as CollectionReference, an as DocumentReference, Yn as DocumentSnapshot, yn as FieldPath, vn as FieldValue, rn as Firestore, U as FirestoreError, bn as GeoPoint, hn as Query, Zn as QueryConstraint, Hn as QueryDocumentSnapshot, Kn as QuerySnapshot, gt as Timestamp, Ur as Transaction, $r as WriteBatch, Ar as addDoc, Dr as arrayRemove, Vr as arrayUnion, fn as collection, dn as collectionGroup, un as connectFirestoreEmulator, Ir as deleteDoc, Rr as deleteField, wn as doc, _n as documentId, dr as endAt, fr as endBefore, vr as getDoc, br as getDocs, on as getFirestore, Nr as increment, sn as initializeFirestore, or as limit, ur as limitToLast, sr as orderBy, tr as query, pn as queryEqual, mn as refEqual, kr as runTransaction, Pr as serverTimestamp, Er as setDoc, w as setLogLevel, Jn as snapshotEqual, hr as startAfter, ar as startAt, cn as terminate, Tr as updateDoc, nr as where, Fr as writeBatch };
|
|
5955
5967
|
//# sourceMappingURL=index.browser.esm2017.js.map
|