12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196 |
- import firebase from '@firebase/app-compat';
- import { __assign, __extends, __spreadArray } from 'tslib';
- import { FirestoreError, Bytes, _isBase64Available, _logWarn, connectFirestoreEmulator, enableNetwork, disableNetwork, _validateIsNotUsedTogether, waitForPendingWrites, onSnapshotsInSync, collection, doc, collectionGroup, runTransaction, ensureFirestoreConfigured, WriteBatch as WriteBatch$1, executeWrite, loadBundle, namedQuery, AbstractUserDataWriter, DocumentReference as DocumentReference$1, _DocumentKey, refEqual, setDoc, updateDoc, deleteDoc, onSnapshot, getDocFromCache, getDocFromServer, getDoc, DocumentSnapshot as DocumentSnapshot$1, snapshotEqual, _debugAssert, addDoc, _DatabaseId, QueryDocumentSnapshot as QueryDocumentSnapshot$1, query, where, orderBy, limit, limitToLast, startAt, startAfter, endBefore, endAt, queryEqual, getDocsFromCache, getDocsFromServer, getDocs, QuerySnapshot as QuerySnapshot$1, _cast, enableIndexedDbPersistence, enableMultiTabIndexedDbPersistence, clearIndexedDbPersistence, setLogLevel as setLogLevel$1, _FieldPath, FieldPath as FieldPath$1, serverTimestamp, deleteField, arrayUnion, arrayRemove, increment, GeoPoint, Timestamp, CACHE_SIZE_UNLIMITED } from '@firebase/firestore';
- import { getModularInstance } from '@firebase/util';
- import { Component } from '@firebase/component';
-
- const name = "@firebase/firestore-compat";
- const version = "0.3.1";
-
- /**
- * @license
- * Copyright 2021 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- function validateSetOptions(methodName, options) {
- if (options === undefined) {
- return {
- merge: false
- };
- }
- if (options.mergeFields !== undefined && options.merge !== undefined) {
- throw new FirestoreError('invalid-argument', "Invalid options passed to function ".concat(methodName, "(): You cannot ") +
- 'specify both "merge" and "mergeFields".');
- }
- return options;
- }
-
- /**
- * @license
- * Copyright 2017 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /** Helper function to assert Uint8Array is available at runtime. */
- function assertUint8ArrayAvailable() {
- if (typeof Uint8Array === 'undefined') {
- throw new FirestoreError('unimplemented', 'Uint8Arrays are not available in this environment.');
- }
- }
- /** Helper function to assert Base64 functions are available at runtime. */
- function assertBase64Available() {
- if (!_isBase64Available()) {
- throw new FirestoreError('unimplemented', 'Blobs are unavailable in Firestore in this environment.');
- }
- }
- /** Immutable class holding a blob (binary data) */
- var Blob = /** @class */ (function () {
- function Blob(_delegate) {
- this._delegate = _delegate;
- }
- Blob.fromBase64String = function (base64) {
- assertBase64Available();
- return new Blob(Bytes.fromBase64String(base64));
- };
- Blob.fromUint8Array = function (array) {
- assertUint8ArrayAvailable();
- return new Blob(Bytes.fromUint8Array(array));
- };
- Blob.prototype.toBase64 = function () {
- assertBase64Available();
- return this._delegate.toBase64();
- };
- Blob.prototype.toUint8Array = function () {
- assertUint8ArrayAvailable();
- return this._delegate.toUint8Array();
- };
- Blob.prototype.isEqual = function (other) {
- return this._delegate.isEqual(other._delegate);
- };
- Blob.prototype.toString = function () {
- return 'Blob(base64: ' + this.toBase64() + ')';
- };
- return Blob;
- }());
-
- /**
- * @license
- * Copyright 2017 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- function isPartialObserver(obj) {
- return implementsAnyMethods(obj, ['next', 'error', 'complete']);
- }
- /**
- * Returns true if obj is an object and contains at least one of the specified
- * methods.
- */
- function implementsAnyMethods(obj, methods) {
- if (typeof obj !== 'object' || obj === null) {
- return false;
- }
- var object = obj;
- for (var _i = 0, methods_1 = methods; _i < methods_1.length; _i++) {
- var method = methods_1[_i];
- if (method in object && typeof object[method] === 'function') {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @license
- * Copyright 2017 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /**
- * The persistence provider included with the full Firestore SDK.
- */
- var IndexedDbPersistenceProvider = /** @class */ (function () {
- function IndexedDbPersistenceProvider() {
- }
- IndexedDbPersistenceProvider.prototype.enableIndexedDbPersistence = function (firestore, forceOwnership) {
- return enableIndexedDbPersistence(firestore._delegate, { forceOwnership: forceOwnership });
- };
- IndexedDbPersistenceProvider.prototype.enableMultiTabIndexedDbPersistence = function (firestore) {
- return enableMultiTabIndexedDbPersistence(firestore._delegate);
- };
- IndexedDbPersistenceProvider.prototype.clearIndexedDbPersistence = function (firestore) {
- return clearIndexedDbPersistence(firestore._delegate);
- };
- return IndexedDbPersistenceProvider;
- }());
- /**
- * Compat class for Firestore. Exposes Firestore Legacy API, but delegates
- * to the functional API of firestore-exp.
- */
- var Firestore = /** @class */ (function () {
- function Firestore(databaseIdOrApp, _delegate, _persistenceProvider) {
- var _this = this;
- this._delegate = _delegate;
- this._persistenceProvider = _persistenceProvider;
- this.INTERNAL = {
- delete: function () { return _this.terminate(); }
- };
- if (!(databaseIdOrApp instanceof _DatabaseId)) {
- this._appCompat = databaseIdOrApp;
- }
- }
- Object.defineProperty(Firestore.prototype, "_databaseId", {
- get: function () {
- return this._delegate._databaseId;
- },
- enumerable: false,
- configurable: true
- });
- Firestore.prototype.settings = function (settingsLiteral) {
- var currentSettings = this._delegate._getSettings();
- if (!settingsLiteral.merge &&
- currentSettings.host !== settingsLiteral.host) {
- _logWarn('You are overriding the original host. If you did not intend ' +
- 'to override your settings, use {merge: true}.');
- }
- if (settingsLiteral.merge) {
- settingsLiteral = __assign(__assign({}, currentSettings), settingsLiteral);
- // Remove the property from the settings once the merge is completed
- delete settingsLiteral.merge;
- }
- this._delegate._setSettings(settingsLiteral);
- };
- Firestore.prototype.useEmulator = function (host, port, options) {
- if (options === void 0) { options = {}; }
- connectFirestoreEmulator(this._delegate, host, port, options);
- };
- Firestore.prototype.enableNetwork = function () {
- return enableNetwork(this._delegate);
- };
- Firestore.prototype.disableNetwork = function () {
- return disableNetwork(this._delegate);
- };
- Firestore.prototype.enablePersistence = function (settings) {
- var synchronizeTabs = false;
- var experimentalForceOwningTab = false;
- if (settings) {
- synchronizeTabs = !!settings.synchronizeTabs;
- experimentalForceOwningTab = !!settings.experimentalForceOwningTab;
- _validateIsNotUsedTogether('synchronizeTabs', synchronizeTabs, 'experimentalForceOwningTab', experimentalForceOwningTab);
- }
- return synchronizeTabs
- ? this._persistenceProvider.enableMultiTabIndexedDbPersistence(this)
- : this._persistenceProvider.enableIndexedDbPersistence(this, experimentalForceOwningTab);
- };
- Firestore.prototype.clearPersistence = function () {
- return this._persistenceProvider.clearIndexedDbPersistence(this);
- };
- Firestore.prototype.terminate = function () {
- if (this._appCompat) {
- this._appCompat._removeServiceInstance('firestore-compat');
- this._appCompat._removeServiceInstance('firestore');
- }
- return this._delegate._delete();
- };
- Firestore.prototype.waitForPendingWrites = function () {
- return waitForPendingWrites(this._delegate);
- };
- Firestore.prototype.onSnapshotsInSync = function (arg) {
- return onSnapshotsInSync(this._delegate, arg);
- };
- Object.defineProperty(Firestore.prototype, "app", {
- get: function () {
- if (!this._appCompat) {
- throw new FirestoreError('failed-precondition', "Firestore was not initialized using the Firebase SDK. 'app' is " +
- 'not available');
- }
- return this._appCompat;
- },
- enumerable: false,
- configurable: true
- });
- Firestore.prototype.collection = function (pathString) {
- try {
- return new CollectionReference(this, collection(this._delegate, pathString));
- }
- catch (e) {
- throw replaceFunctionName(e, 'collection()', 'Firestore.collection()');
- }
- };
- Firestore.prototype.doc = function (pathString) {
- try {
- return new DocumentReference(this, doc(this._delegate, pathString));
- }
- catch (e) {
- throw replaceFunctionName(e, 'doc()', 'Firestore.doc()');
- }
- };
- Firestore.prototype.collectionGroup = function (collectionId) {
- try {
- return new Query(this, collectionGroup(this._delegate, collectionId));
- }
- catch (e) {
- throw replaceFunctionName(e, 'collectionGroup()', 'Firestore.collectionGroup()');
- }
- };
- Firestore.prototype.runTransaction = function (updateFunction) {
- var _this = this;
- return runTransaction(this._delegate, function (transaction) {
- return updateFunction(new Transaction(_this, transaction));
- });
- };
- Firestore.prototype.batch = function () {
- var _this = this;
- ensureFirestoreConfigured(this._delegate);
- return new WriteBatch(new WriteBatch$1(this._delegate, function (mutations) {
- return executeWrite(_this._delegate, mutations);
- }));
- };
- Firestore.prototype.loadBundle = function (bundleData) {
- return loadBundle(this._delegate, bundleData);
- };
- Firestore.prototype.namedQuery = function (name) {
- var _this = this;
- return namedQuery(this._delegate, name).then(function (expQuery) {
- if (!expQuery) {
- return null;
- }
- return new Query(_this,
- // We can pass `expQuery` here directly since named queries don't have a UserDataConverter.
- // Otherwise, we would have to create a new ExpQuery and pass the old UserDataConverter.
- expQuery);
- });
- };
- return Firestore;
- }());
- var UserDataWriter = /** @class */ (function (_super) {
- __extends(UserDataWriter, _super);
- function UserDataWriter(firestore) {
- var _this = _super.call(this) || this;
- _this.firestore = firestore;
- return _this;
- }
- UserDataWriter.prototype.convertBytes = function (bytes) {
- return new Blob(new Bytes(bytes));
- };
- UserDataWriter.prototype.convertReference = function (name) {
- var key = this.convertDocumentKey(name, this.firestore._databaseId);
- return DocumentReference.forKey(key, this.firestore, /* converter= */ null);
- };
- return UserDataWriter;
- }(AbstractUserDataWriter));
- function setLogLevel(level) {
- setLogLevel$1(level);
- }
- /**
- * A reference to a transaction.
- */
- var Transaction = /** @class */ (function () {
- function Transaction(_firestore, _delegate) {
- this._firestore = _firestore;
- this._delegate = _delegate;
- this._userDataWriter = new UserDataWriter(_firestore);
- }
- Transaction.prototype.get = function (documentRef) {
- var _this = this;
- var ref = castReference(documentRef);
- return this._delegate
- .get(ref)
- .then(function (result) {
- return new DocumentSnapshot(_this._firestore, new DocumentSnapshot$1(_this._firestore._delegate, _this._userDataWriter, result._key, result._document, result.metadata, ref.converter));
- });
- };
- Transaction.prototype.set = function (documentRef, data, options) {
- var ref = castReference(documentRef);
- if (options) {
- validateSetOptions('Transaction.set', options);
- this._delegate.set(ref, data, options);
- }
- else {
- this._delegate.set(ref, data);
- }
- return this;
- };
- Transaction.prototype.update = function (documentRef, dataOrField, value) {
- var _a;
- var moreFieldsAndValues = [];
- for (var _i = 3; _i < arguments.length; _i++) {
- moreFieldsAndValues[_i - 3] = arguments[_i];
- }
- var ref = castReference(documentRef);
- if (arguments.length === 2) {
- this._delegate.update(ref, dataOrField);
- }
- else {
- (_a = this._delegate).update.apply(_a, __spreadArray([ref,
- dataOrField,
- value], moreFieldsAndValues, false));
- }
- return this;
- };
- Transaction.prototype.delete = function (documentRef) {
- var ref = castReference(documentRef);
- this._delegate.delete(ref);
- return this;
- };
- return Transaction;
- }());
- var WriteBatch = /** @class */ (function () {
- function WriteBatch(_delegate) {
- this._delegate = _delegate;
- }
- WriteBatch.prototype.set = function (documentRef, data, options) {
- var ref = castReference(documentRef);
- if (options) {
- validateSetOptions('WriteBatch.set', options);
- this._delegate.set(ref, data, options);
- }
- else {
- this._delegate.set(ref, data);
- }
- return this;
- };
- WriteBatch.prototype.update = function (documentRef, dataOrField, value) {
- var _a;
- var moreFieldsAndValues = [];
- for (var _i = 3; _i < arguments.length; _i++) {
- moreFieldsAndValues[_i - 3] = arguments[_i];
- }
- var ref = castReference(documentRef);
- if (arguments.length === 2) {
- this._delegate.update(ref, dataOrField);
- }
- else {
- (_a = this._delegate).update.apply(_a, __spreadArray([ref,
- dataOrField,
- value], moreFieldsAndValues, false));
- }
- return this;
- };
- WriteBatch.prototype.delete = function (documentRef) {
- var ref = castReference(documentRef);
- this._delegate.delete(ref);
- return this;
- };
- WriteBatch.prototype.commit = function () {
- return this._delegate.commit();
- };
- return WriteBatch;
- }());
- /**
- * Wraps a `PublicFirestoreDataConverter` translating the types from the
- * experimental SDK into corresponding types from the Classic SDK before passing
- * them to the wrapped converter.
- */
- var FirestoreDataConverter = /** @class */ (function () {
- function FirestoreDataConverter(_firestore, _userDataWriter, _delegate) {
- this._firestore = _firestore;
- this._userDataWriter = _userDataWriter;
- this._delegate = _delegate;
- }
- FirestoreDataConverter.prototype.fromFirestore = function (snapshot, options) {
- var expSnapshot = new QueryDocumentSnapshot$1(this._firestore._delegate, this._userDataWriter, snapshot._key, snapshot._document, snapshot.metadata,
- /* converter= */ null);
- return this._delegate.fromFirestore(new QueryDocumentSnapshot(this._firestore, expSnapshot), options !== null && options !== void 0 ? options : {});
- };
- FirestoreDataConverter.prototype.toFirestore = function (modelObject, options) {
- if (!options) {
- return this._delegate.toFirestore(modelObject);
- }
- else {
- return this._delegate.toFirestore(modelObject, options);
- }
- };
- // Use the same instance of `FirestoreDataConverter` for the given instances
- // of `Firestore` and `PublicFirestoreDataConverter` so that isEqual() will
- // compare equal for two objects created with the same converter instance.
- FirestoreDataConverter.getInstance = function (firestore, converter) {
- var converterMapByFirestore = FirestoreDataConverter.INSTANCES;
- var untypedConverterByConverter = converterMapByFirestore.get(firestore);
- if (!untypedConverterByConverter) {
- untypedConverterByConverter = new WeakMap();
- converterMapByFirestore.set(firestore, untypedConverterByConverter);
- }
- var instance = untypedConverterByConverter.get(converter);
- if (!instance) {
- instance = new FirestoreDataConverter(firestore, new UserDataWriter(firestore), converter);
- untypedConverterByConverter.set(converter, instance);
- }
- return instance;
- };
- FirestoreDataConverter.INSTANCES = new WeakMap();
- return FirestoreDataConverter;
- }());
- /**
- * A reference to a particular document in a collection in the database.
- */
- var DocumentReference = /** @class */ (function () {
- function DocumentReference(firestore, _delegate) {
- this.firestore = firestore;
- this._delegate = _delegate;
- this._userDataWriter = new UserDataWriter(firestore);
- }
- DocumentReference.forPath = function (path, firestore, converter) {
- if (path.length % 2 !== 0) {
- throw new FirestoreError('invalid-argument', 'Invalid document reference. Document ' +
- 'references must have an even number of segments, but ' +
- "".concat(path.canonicalString(), " has ").concat(path.length));
- }
- return new DocumentReference(firestore, new DocumentReference$1(firestore._delegate, converter, new _DocumentKey(path)));
- };
- DocumentReference.forKey = function (key, firestore, converter) {
- return new DocumentReference(firestore, new DocumentReference$1(firestore._delegate, converter, key));
- };
- Object.defineProperty(DocumentReference.prototype, "id", {
- get: function () {
- return this._delegate.id;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentReference.prototype, "parent", {
- get: function () {
- return new CollectionReference(this.firestore, this._delegate.parent);
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentReference.prototype, "path", {
- get: function () {
- return this._delegate.path;
- },
- enumerable: false,
- configurable: true
- });
- DocumentReference.prototype.collection = function (pathString) {
- try {
- return new CollectionReference(this.firestore, collection(this._delegate, pathString));
- }
- catch (e) {
- throw replaceFunctionName(e, 'collection()', 'DocumentReference.collection()');
- }
- };
- DocumentReference.prototype.isEqual = function (other) {
- other = getModularInstance(other);
- if (!(other instanceof DocumentReference$1)) {
- return false;
- }
- return refEqual(this._delegate, other);
- };
- DocumentReference.prototype.set = function (value, options) {
- options = validateSetOptions('DocumentReference.set', options);
- try {
- if (options) {
- return setDoc(this._delegate, value, options);
- }
- else {
- return setDoc(this._delegate, value);
- }
- }
- catch (e) {
- throw replaceFunctionName(e, 'setDoc()', 'DocumentReference.set()');
- }
- };
- DocumentReference.prototype.update = function (fieldOrUpdateData, value) {
- var moreFieldsAndValues = [];
- for (var _i = 2; _i < arguments.length; _i++) {
- moreFieldsAndValues[_i - 2] = arguments[_i];
- }
- try {
- if (arguments.length === 1) {
- return updateDoc(this._delegate, fieldOrUpdateData);
- }
- else {
- return updateDoc.apply(void 0, __spreadArray([this._delegate,
- fieldOrUpdateData,
- value], moreFieldsAndValues, false));
- }
- }
- catch (e) {
- throw replaceFunctionName(e, 'updateDoc()', 'DocumentReference.update()');
- }
- };
- DocumentReference.prototype.delete = function () {
- return deleteDoc(this._delegate);
- };
- DocumentReference.prototype.onSnapshot = function () {
- var _this = this;
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var options = extractSnapshotOptions(args);
- var observer = wrapObserver(args, function (result) {
- return new DocumentSnapshot(_this.firestore, new DocumentSnapshot$1(_this.firestore._delegate, _this._userDataWriter, result._key, result._document, result.metadata, _this._delegate.converter));
- });
- return onSnapshot(this._delegate, options, observer);
- };
- DocumentReference.prototype.get = function (options) {
- var _this = this;
- var snap;
- if ((options === null || options === void 0 ? void 0 : options.source) === 'cache') {
- snap = getDocFromCache(this._delegate);
- }
- else if ((options === null || options === void 0 ? void 0 : options.source) === 'server') {
- snap = getDocFromServer(this._delegate);
- }
- else {
- snap = getDoc(this._delegate);
- }
- return snap.then(function (result) {
- return new DocumentSnapshot(_this.firestore, new DocumentSnapshot$1(_this.firestore._delegate, _this._userDataWriter, result._key, result._document, result.metadata, _this._delegate.converter));
- });
- };
- DocumentReference.prototype.withConverter = function (converter) {
- return new DocumentReference(this.firestore, converter
- ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))
- : this._delegate.withConverter(null));
- };
- return DocumentReference;
- }());
- /**
- * Replaces the function name in an error thrown by the firestore-exp API
- * with the function names used in the classic API.
- */
- function replaceFunctionName(e, original, updated) {
- e.message = e.message.replace(original, updated);
- return e;
- }
- /**
- * Iterates the list of arguments from an `onSnapshot` call and returns the
- * first argument that may be an `SnapshotListenOptions` object. Returns an
- * empty object if none is found.
- */
- function extractSnapshotOptions(args) {
- for (var _i = 0, args_1 = args; _i < args_1.length; _i++) {
- var arg = args_1[_i];
- if (typeof arg === 'object' && !isPartialObserver(arg)) {
- return arg;
- }
- }
- return {};
- }
- /**
- * Creates an observer that can be passed to the firestore-exp SDK. The
- * observer converts all observed values into the format expected by the classic
- * SDK.
- *
- * @param args - The list of arguments from an `onSnapshot` call.
- * @param wrapper - The function that converts the firestore-exp type into the
- * type used by this shim.
- */
- function wrapObserver(args, wrapper) {
- var _a, _b;
- var userObserver;
- if (isPartialObserver(args[0])) {
- userObserver = args[0];
- }
- else if (isPartialObserver(args[1])) {
- userObserver = args[1];
- }
- else if (typeof args[0] === 'function') {
- userObserver = {
- next: args[0],
- error: args[1],
- complete: args[2]
- };
- }
- else {
- userObserver = {
- next: args[1],
- error: args[2],
- complete: args[3]
- };
- }
- return {
- next: function (val) {
- if (userObserver.next) {
- userObserver.next(wrapper(val));
- }
- },
- error: (_a = userObserver.error) === null || _a === void 0 ? void 0 : _a.bind(userObserver),
- complete: (_b = userObserver.complete) === null || _b === void 0 ? void 0 : _b.bind(userObserver)
- };
- }
- var DocumentSnapshot = /** @class */ (function () {
- function DocumentSnapshot(_firestore, _delegate) {
- this._firestore = _firestore;
- this._delegate = _delegate;
- }
- Object.defineProperty(DocumentSnapshot.prototype, "ref", {
- get: function () {
- return new DocumentReference(this._firestore, this._delegate.ref);
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentSnapshot.prototype, "id", {
- get: function () {
- return this._delegate.id;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentSnapshot.prototype, "metadata", {
- get: function () {
- return this._delegate.metadata;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentSnapshot.prototype, "exists", {
- get: function () {
- return this._delegate.exists();
- },
- enumerable: false,
- configurable: true
- });
- DocumentSnapshot.prototype.data = function (options) {
- return this._delegate.data(options);
- };
- DocumentSnapshot.prototype.get = function (fieldPath, options
- // We are using `any` here to avoid an explicit cast by our users.
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- ) {
- return this._delegate.get(fieldPath, options);
- };
- DocumentSnapshot.prototype.isEqual = function (other) {
- return snapshotEqual(this._delegate, other._delegate);
- };
- return DocumentSnapshot;
- }());
- var QueryDocumentSnapshot = /** @class */ (function (_super) {
- __extends(QueryDocumentSnapshot, _super);
- function QueryDocumentSnapshot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- QueryDocumentSnapshot.prototype.data = function (options) {
- var data = this._delegate.data(options);
- _debugAssert(data !== undefined, 'Document in a QueryDocumentSnapshot should exist');
- return data;
- };
- return QueryDocumentSnapshot;
- }(DocumentSnapshot));
- var Query = /** @class */ (function () {
- function Query(firestore, _delegate) {
- this.firestore = firestore;
- this._delegate = _delegate;
- this._userDataWriter = new UserDataWriter(firestore);
- }
- Query.prototype.where = function (fieldPath, opStr, value) {
- try {
- // The "as string" cast is a little bit of a hack. `where` accepts the
- // FieldPath Compat type as input, but is not typed as such in order to
- // not expose this via our public typings file.
- return new Query(this.firestore, query(this._delegate, where(fieldPath, opStr, value)));
- }
- catch (e) {
- throw replaceFunctionName(e, /(orderBy|where)\(\)/, 'Query.$1()');
- }
- };
- Query.prototype.orderBy = function (fieldPath, directionStr) {
- try {
- // The "as string" cast is a little bit of a hack. `orderBy` accepts the
- // FieldPath Compat type as input, but is not typed as such in order to
- // not expose this via our public typings file.
- return new Query(this.firestore, query(this._delegate, orderBy(fieldPath, directionStr)));
- }
- catch (e) {
- throw replaceFunctionName(e, /(orderBy|where)\(\)/, 'Query.$1()');
- }
- };
- Query.prototype.limit = function (n) {
- try {
- return new Query(this.firestore, query(this._delegate, limit(n)));
- }
- catch (e) {
- throw replaceFunctionName(e, 'limit()', 'Query.limit()');
- }
- };
- Query.prototype.limitToLast = function (n) {
- try {
- return new Query(this.firestore, query(this._delegate, limitToLast(n)));
- }
- catch (e) {
- throw replaceFunctionName(e, 'limitToLast()', 'Query.limitToLast()');
- }
- };
- Query.prototype.startAt = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return new Query(this.firestore, query(this._delegate, startAt.apply(void 0, args)));
- }
- catch (e) {
- throw replaceFunctionName(e, 'startAt()', 'Query.startAt()');
- }
- };
- Query.prototype.startAfter = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return new Query(this.firestore, query(this._delegate, startAfter.apply(void 0, args)));
- }
- catch (e) {
- throw replaceFunctionName(e, 'startAfter()', 'Query.startAfter()');
- }
- };
- Query.prototype.endBefore = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return new Query(this.firestore, query(this._delegate, endBefore.apply(void 0, args)));
- }
- catch (e) {
- throw replaceFunctionName(e, 'endBefore()', 'Query.endBefore()');
- }
- };
- Query.prototype.endAt = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return new Query(this.firestore, query(this._delegate, endAt.apply(void 0, args)));
- }
- catch (e) {
- throw replaceFunctionName(e, 'endAt()', 'Query.endAt()');
- }
- };
- Query.prototype.isEqual = function (other) {
- return queryEqual(this._delegate, other._delegate);
- };
- Query.prototype.get = function (options) {
- var _this = this;
- var query;
- if ((options === null || options === void 0 ? void 0 : options.source) === 'cache') {
- query = getDocsFromCache(this._delegate);
- }
- else if ((options === null || options === void 0 ? void 0 : options.source) === 'server') {
- query = getDocsFromServer(this._delegate);
- }
- else {
- query = getDocs(this._delegate);
- }
- return query.then(function (result) {
- return new QuerySnapshot(_this.firestore, new QuerySnapshot$1(_this.firestore._delegate, _this._userDataWriter, _this._delegate, result._snapshot));
- });
- };
- Query.prototype.onSnapshot = function () {
- var _this = this;
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var options = extractSnapshotOptions(args);
- var observer = wrapObserver(args, function (snap) {
- return new QuerySnapshot(_this.firestore, new QuerySnapshot$1(_this.firestore._delegate, _this._userDataWriter, _this._delegate, snap._snapshot));
- });
- return onSnapshot(this._delegate, options, observer);
- };
- Query.prototype.withConverter = function (converter) {
- return new Query(this.firestore, converter
- ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))
- : this._delegate.withConverter(null));
- };
- return Query;
- }());
- var DocumentChange = /** @class */ (function () {
- function DocumentChange(_firestore, _delegate) {
- this._firestore = _firestore;
- this._delegate = _delegate;
- }
- Object.defineProperty(DocumentChange.prototype, "type", {
- get: function () {
- return this._delegate.type;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentChange.prototype, "doc", {
- get: function () {
- return new QueryDocumentSnapshot(this._firestore, this._delegate.doc);
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentChange.prototype, "oldIndex", {
- get: function () {
- return this._delegate.oldIndex;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(DocumentChange.prototype, "newIndex", {
- get: function () {
- return this._delegate.newIndex;
- },
- enumerable: false,
- configurable: true
- });
- return DocumentChange;
- }());
- var QuerySnapshot = /** @class */ (function () {
- function QuerySnapshot(_firestore, _delegate) {
- this._firestore = _firestore;
- this._delegate = _delegate;
- }
- Object.defineProperty(QuerySnapshot.prototype, "query", {
- get: function () {
- return new Query(this._firestore, this._delegate.query);
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(QuerySnapshot.prototype, "metadata", {
- get: function () {
- return this._delegate.metadata;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(QuerySnapshot.prototype, "size", {
- get: function () {
- return this._delegate.size;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(QuerySnapshot.prototype, "empty", {
- get: function () {
- return this._delegate.empty;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(QuerySnapshot.prototype, "docs", {
- get: function () {
- var _this = this;
- return this._delegate.docs.map(function (doc) { return new QueryDocumentSnapshot(_this._firestore, doc); });
- },
- enumerable: false,
- configurable: true
- });
- QuerySnapshot.prototype.docChanges = function (options) {
- var _this = this;
- return this._delegate
- .docChanges(options)
- .map(function (docChange) { return new DocumentChange(_this._firestore, docChange); });
- };
- QuerySnapshot.prototype.forEach = function (callback, thisArg) {
- var _this = this;
- this._delegate.forEach(function (snapshot) {
- callback.call(thisArg, new QueryDocumentSnapshot(_this._firestore, snapshot));
- });
- };
- QuerySnapshot.prototype.isEqual = function (other) {
- return snapshotEqual(this._delegate, other._delegate);
- };
- return QuerySnapshot;
- }());
- var CollectionReference = /** @class */ (function (_super) {
- __extends(CollectionReference, _super);
- function CollectionReference(firestore, _delegate) {
- var _this = _super.call(this, firestore, _delegate) || this;
- _this.firestore = firestore;
- _this._delegate = _delegate;
- return _this;
- }
- Object.defineProperty(CollectionReference.prototype, "id", {
- get: function () {
- return this._delegate.id;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(CollectionReference.prototype, "path", {
- get: function () {
- return this._delegate.path;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(CollectionReference.prototype, "parent", {
- get: function () {
- var docRef = this._delegate.parent;
- return docRef ? new DocumentReference(this.firestore, docRef) : null;
- },
- enumerable: false,
- configurable: true
- });
- CollectionReference.prototype.doc = function (documentPath) {
- try {
- if (documentPath === undefined) {
- // Call `doc` without `documentPath` if `documentPath` is `undefined`
- // as `doc` validates the number of arguments to prevent users from
- // accidentally passing `undefined`.
- return new DocumentReference(this.firestore, doc(this._delegate));
- }
- else {
- return new DocumentReference(this.firestore, doc(this._delegate, documentPath));
- }
- }
- catch (e) {
- throw replaceFunctionName(e, 'doc()', 'CollectionReference.doc()');
- }
- };
- CollectionReference.prototype.add = function (data) {
- var _this = this;
- return addDoc(this._delegate, data).then(function (docRef) { return new DocumentReference(_this.firestore, docRef); });
- };
- CollectionReference.prototype.isEqual = function (other) {
- return refEqual(this._delegate, other._delegate);
- };
- CollectionReference.prototype.withConverter = function (converter) {
- return new CollectionReference(this.firestore, converter
- ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))
- : this._delegate.withConverter(null));
- };
- return CollectionReference;
- }(Query));
- function castReference(documentRef) {
- return _cast(documentRef, DocumentReference$1);
- }
-
- /**
- * @license
- * Copyright 2017 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- // The objects that are a part of this API are exposed to third-parties as
- // compiled javascript so we want to flag our private members with a leading
- // underscore to discourage their use.
- /**
- * A `FieldPath` refers to a field in a document. The path may consist of a
- * single field name (referring to a top-level field in the document), or a list
- * of field names (referring to a nested field in the document).
- */
- var FieldPath = /** @class */ (function () {
- /**
- * Creates a FieldPath from the provided field names. If more than one field
- * name is provided, the path will point to a nested field in a document.
- *
- * @param fieldNames - A list of field names.
- */
- function FieldPath() {
- var fieldNames = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- fieldNames[_i] = arguments[_i];
- }
- this._delegate = new (FieldPath$1.bind.apply(FieldPath$1, __spreadArray([void 0], fieldNames, false)))();
- }
- FieldPath.documentId = function () {
- /**
- * Internal Note: The backend doesn't technically support querying by
- * document ID. Instead it queries by the entire document name (full path
- * included), but in the cases we currently support documentId(), the net
- * effect is the same.
- */
- return new FieldPath(_FieldPath.keyField().canonicalString());
- };
- FieldPath.prototype.isEqual = function (other) {
- other = getModularInstance(other);
- if (!(other instanceof FieldPath$1)) {
- return false;
- }
- return this._delegate._internalPath.isEqual(other._internalPath);
- };
- return FieldPath;
- }());
-
- /**
- * @license
- * Copyright 2017 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- var FieldValue = /** @class */ (function () {
- function FieldValue(_delegate) {
- this._delegate = _delegate;
- }
- FieldValue.serverTimestamp = function () {
- var delegate = serverTimestamp();
- delegate._methodName = 'FieldValue.serverTimestamp';
- return new FieldValue(delegate);
- };
- FieldValue.delete = function () {
- var delegate = deleteField();
- delegate._methodName = 'FieldValue.delete';
- return new FieldValue(delegate);
- };
- FieldValue.arrayUnion = function () {
- var elements = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- elements[_i] = arguments[_i];
- }
- var delegate = arrayUnion.apply(void 0, elements);
- delegate._methodName = 'FieldValue.arrayUnion';
- return new FieldValue(delegate);
- };
- FieldValue.arrayRemove = function () {
- var elements = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- elements[_i] = arguments[_i];
- }
- var delegate = arrayRemove.apply(void 0, elements);
- delegate._methodName = 'FieldValue.arrayRemove';
- return new FieldValue(delegate);
- };
- FieldValue.increment = function (n) {
- var delegate = increment(n);
- delegate._methodName = 'FieldValue.increment';
- return new FieldValue(delegate);
- };
- FieldValue.prototype.isEqual = function (other) {
- return this._delegate.isEqual(other._delegate);
- };
- return FieldValue;
- }());
-
- /**
- * @license
- * Copyright 2021 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- var firestoreNamespace = {
- Firestore: Firestore,
- GeoPoint: GeoPoint,
- Timestamp: Timestamp,
- Blob: Blob,
- Transaction: Transaction,
- WriteBatch: WriteBatch,
- DocumentReference: DocumentReference,
- DocumentSnapshot: DocumentSnapshot,
- Query: Query,
- QueryDocumentSnapshot: QueryDocumentSnapshot,
- QuerySnapshot: QuerySnapshot,
- CollectionReference: CollectionReference,
- FieldPath: FieldPath,
- FieldValue: FieldValue,
- setLogLevel: setLogLevel,
- CACHE_SIZE_UNLIMITED: CACHE_SIZE_UNLIMITED
- };
- /**
- * Configures Firestore as part of the Firebase SDK by calling registerComponent.
- *
- * @param firebase - The FirebaseNamespace to register Firestore with
- * @param firestoreFactory - A factory function that returns a new Firestore
- * instance.
- */
- function configureForFirebase(firebase, firestoreFactory) {
- firebase.INTERNAL.registerComponent(new Component('firestore-compat', function (container) {
- var app = container.getProvider('app-compat').getImmediate();
- var firestoreExp = container.getProvider('firestore').getImmediate();
- return firestoreFactory(app, firestoreExp);
- }, 'PUBLIC').setServiceProps(__assign({}, firestoreNamespace)));
- }
-
- /**
- * @license
- * Copyright 2020 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /**
- * Registers the main Firestore build with the components framework.
- * Persistence can be enabled via `firebase.firestore().enablePersistence()`.
- */
- function registerFirestore(instance) {
- configureForFirebase(instance, function (app, firestoreExp) {
- return new Firestore(app, firestoreExp, new IndexedDbPersistenceProvider());
- });
- instance.registerVersion(name, version);
- }
- registerFirestore(firebase);
-
- export { registerFirestore };
- //# sourceMappingURL=index.esm5.js.map
|