@dereekb/firebase 10.0.22 → 10.0.24

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/index.cjs.js CHANGED
@@ -2945,6 +2945,46 @@ function firestoreDocumentLoader(accessorContext) {
2945
2945
  return loadDocumentsForDocumentReferences(accessor, references);
2946
2946
  };
2947
2947
  }
2948
+ /**
2949
+ * Used to make a FirestoreDocumentSnapshotPairsLoader.
2950
+ *
2951
+ * @param accessorContext
2952
+ * @returns
2953
+ */
2954
+ function firestoreDocumentSnapshotPairsLoader(accessorContext) {
2955
+ return (snapshots, transaction) => {
2956
+ const accessor = transaction ? accessorContext.documentAccessorForTransaction(transaction) : accessorContext.documentAccessor();
2957
+ const instance = firestoreDocumentSnapshotPairsLoaderInstance(accessor);
2958
+ return snapshots.map(instance);
2959
+ };
2960
+ }
2961
+ /**
2962
+ * Used to make a FirestoreDocumentSnapshotPairsLoader.
2963
+ *
2964
+ * @param accessorContext
2965
+ * @returns
2966
+ */
2967
+ function firestoreDocumentSnapshotPairsLoaderInstance(accessor) {
2968
+ const fn = snapshot => {
2969
+ const data = documentDataWithIdAndKey(snapshot);
2970
+ const document = accessor.loadDocument(snapshot.ref);
2971
+ const pair = {
2972
+ data,
2973
+ snapshot: snapshot,
2974
+ document
2975
+ };
2976
+ return pair;
2977
+ };
2978
+ fn._accessor = accessor;
2979
+ return fn;
2980
+ }
2981
+ /**
2982
+ * Used to make a FirestoreQueryDocumentSnapshotPairsLoader.
2983
+ *
2984
+ * @param accessorContext
2985
+ * @returns
2986
+ */
2987
+ const firestoreQueryDocumentSnapshotPairsLoader = firestoreDocumentSnapshotPairsLoader;
2948
2988
  function documentData(snapshot, withId = false) {
2949
2989
  if (withId) {
2950
2990
  return documentDataWithIdAndKey(snapshot);
@@ -2955,12 +2995,6 @@ function documentData(snapshot, withId = false) {
2955
2995
  function documentDataFunction(withId) {
2956
2996
  return withId ? documentDataWithIdAndKey : snapshot => snapshot.data();
2957
2997
  }
2958
- /**
2959
- * Creates a DocumentDataWithId from the input DocumentSnapshot. If the data does not exist, returns undefined.
2960
- *
2961
- * @param snapshot
2962
- * @returns
2963
- */
2964
2998
  function documentDataWithIdAndKey(snapshot) {
2965
2999
  const data = snapshot.data();
2966
3000
  if (data) {
@@ -4813,7 +4847,39 @@ function firestoreQueryFactory(config) {
4813
4847
  }
4814
4848
 
4815
4849
  /**
4816
- * Iterates through the results of a Firestore query by each FirestoreDocumentSnapshotDataPair.
4850
+ * Use to build an Observable that reacts to OnSnapshot events from queries.
4851
+ *
4852
+ * @param callOnSnapshot
4853
+ * @returns
4854
+ */
4855
+ function streamFromOnSnapshot(callOnSnapshot) {
4856
+ return new rxjs.Observable(subscriber => {
4857
+ const unsubscribe = callOnSnapshot({
4858
+ next: subscriber.next.bind(subscriber),
4859
+ error: subscriber.error.bind(subscriber),
4860
+ complete: subscriber.complete.bind(subscriber)
4861
+ });
4862
+ return {
4863
+ unsubscribe
4864
+ };
4865
+ });
4866
+ }
4867
+ function documentReferencesFromSnapshot(snapshots) {
4868
+ return snapshots.docs.map(x => x.ref);
4869
+ }
4870
+ // MARK: Utility
4871
+ /**
4872
+ * Reads the FirestoreModelKey from the query document snapshot.
4873
+ *
4874
+ * @param snapshot
4875
+ * @returns
4876
+ */
4877
+ function readFirestoreModelKeyFromDocumentSnapshot(snapshot) {
4878
+ return snapshot.ref.path;
4879
+ }
4880
+
4881
+ /**
4882
+ * Iterates through the results of a Firestore query by each FirestoreDocumentSnapshotDataPairWithData.
4817
4883
  *
4818
4884
  * @param config
4819
4885
  * @returns
@@ -4824,15 +4890,10 @@ function iterateFirestoreDocumentSnapshotPairs(config) {
4824
4890
  iterateSnapshotPair,
4825
4891
  documentAccessor
4826
4892
  } = config;
4893
+ const loadPairForSnapshot = firestoreDocumentSnapshotPairsLoaderInstance(documentAccessor);
4827
4894
  return iterateFirestoreDocumentSnapshots(Object.assign(Object.assign({}, config), {
4828
4895
  iterateSnapshot: snapshot => __awaiter(this, void 0, void 0, function* () {
4829
- const document = documentAccessor.loadDocument(snapshot.ref);
4830
- const data = documentDataWithIdAndKey(snapshot);
4831
- const pair = {
4832
- document,
4833
- snapshot,
4834
- data
4835
- };
4896
+ const pair = loadPairForSnapshot(snapshot);
4836
4897
  return iterateSnapshotPair(pair);
4837
4898
  })
4838
4899
  }));
@@ -4879,19 +4940,11 @@ function iterateFirestoreDocumentSnapshotPairBatches(config) {
4879
4940
  iterateSnapshotPairsBatch,
4880
4941
  documentAccessor
4881
4942
  } = config;
4943
+ const loadPairForSnapshot = firestoreDocumentSnapshotPairsLoaderInstance(documentAccessor);
4882
4944
  return iterateFirestoreDocumentSnapshotBatches(Object.assign(Object.assign({}, config), {
4883
4945
  maxParallelCheckpoints: 1,
4884
4946
  iterateSnapshotBatch: snapshots => __awaiter(this, void 0, void 0, function* () {
4885
- const pairs = snapshots.map(snapshot => {
4886
- const document = documentAccessor.loadDocument(snapshot.ref);
4887
- const data = documentDataWithIdAndKey(snapshot);
4888
- const pair = {
4889
- document,
4890
- snapshot,
4891
- data
4892
- };
4893
- return pair;
4894
- });
4947
+ const pairs = snapshots.map(loadPairForSnapshot);
4895
4948
  return iterateSnapshotPairsBatch(pairs);
4896
4949
  })
4897
4950
  }));
@@ -4950,6 +5003,8 @@ function iterateFirestoreDocumentSnapshotCheckpoints(config) {
4950
5003
  return __awaiter(this, void 0, void 0, function* () {
4951
5004
  const {
4952
5005
  iterateCheckpoint,
5006
+ filterCheckpointSnapshots: inputFilterCheckpointSnapshot,
5007
+ handleRepeatCursor: inputHandleRepeatCursor,
4953
5008
  waitBetweenCheckpoints,
4954
5009
  useCheckpointResult,
4955
5010
  constraintsFactory: inputConstraintsFactory,
@@ -4965,6 +5020,9 @@ function iterateFirestoreDocumentSnapshotCheckpoints(config) {
4965
5020
  let hasReachedEnd = false;
4966
5021
  let totalSnapshotsVisited = 0;
4967
5022
  let cursorDocument;
5023
+ const visitedCursorPaths = new Set();
5024
+ const handleRepeatCursor = typeof inputHandleRepeatCursor === 'function' ? inputHandleRepeatCursor : () => inputHandleRepeatCursor;
5025
+ const filterCheckpointSnapshot = inputFilterCheckpointSnapshot !== null && inputFilterCheckpointSnapshot !== void 0 ? inputFilterCheckpointSnapshot : util.mapIdentityFunction();
4968
5026
  function taskInputFactory() {
4969
5027
  return __awaiter(this, void 0, void 0, function* () {
4970
5028
  // Perform another query, then pass the results to the task factory.
@@ -4983,7 +5041,23 @@ function iterateFirestoreDocumentSnapshotCheckpoints(config) {
4983
5041
  const query = queryFactory.query(constraints);
4984
5042
  const docQuerySnapshot = yield query.getDocs();
4985
5043
  const docSnapshots = docQuerySnapshot.docs;
4986
- cursorDocument = util.lastValue(docSnapshots); // set the next cursor document
5044
+ // check for repeat cursor
5045
+ const nextCursorDocument = util.lastValue(docSnapshots);
5046
+ if (nextCursorDocument != null) {
5047
+ const cursorPath = readFirestoreModelKeyFromDocumentSnapshot(nextCursorDocument);
5048
+ if (visitedCursorPaths.has(cursorPath)) {
5049
+ const shouldContinue = yield handleRepeatCursor(nextCursorDocument);
5050
+ if (shouldContinue === false) {
5051
+ cursorDocument = null;
5052
+ hasReachedEnd = true;
5053
+ return null; // exit immediately
5054
+ }
5055
+ } else {
5056
+ visitedCursorPaths.add(cursorPath);
5057
+ }
5058
+ }
5059
+ cursorDocument = nextCursorDocument; // set the next cursor document
5060
+ // update state
4987
5061
  const newSnapshotsVisited = docSnapshots.length;
4988
5062
  totalSnapshotsVisited += newSnapshotsVisited;
4989
5063
  if (!cursorDocument || totalSnapshotsVisited > totalSnapshotsLimit) {
@@ -5005,13 +5079,14 @@ function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5005
5079
  i,
5006
5080
  docQuerySnapshot
5007
5081
  }) => __awaiter(this, void 0, void 0, function* () {
5008
- const docSnapshots = docQuerySnapshot.docs;
5082
+ const docSnapshots = yield filterCheckpointSnapshot(docQuerySnapshot.docs);
5009
5083
  const results = yield iterateCheckpoint(docSnapshots, docQuerySnapshot);
5010
5084
  const checkpointResults = {
5011
5085
  i,
5012
5086
  cursorDocument,
5013
5087
  results,
5014
- docSnapshots
5088
+ docSnapshots,
5089
+ docQuerySnapshot
5015
5090
  };
5016
5091
  yield useCheckpointResult === null || useCheckpointResult === void 0 ? void 0 : useCheckpointResult(checkpointResults);
5017
5092
  })
@@ -5024,27 +5099,9 @@ function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5024
5099
  return result;
5025
5100
  });
5026
5101
  }
5027
-
5028
- /**
5029
- * Use to build an Observable that reacts to OnSnapshot events from queries.
5030
- *
5031
- * @param callOnSnapshot
5032
- * @returns
5033
- */
5034
- function streamFromOnSnapshot(callOnSnapshot) {
5035
- return new rxjs.Observable(subscriber => {
5036
- const unsubscribe = callOnSnapshot({
5037
- next: subscriber.next.bind(subscriber),
5038
- error: subscriber.error.bind(subscriber),
5039
- complete: subscriber.complete.bind(subscriber)
5040
- });
5041
- return {
5042
- unsubscribe
5043
- };
5044
- });
5045
- }
5046
- function documentReferencesFromSnapshot(snapshots) {
5047
- return snapshots.docs.map(x => x.ref);
5102
+ // MARK: Utility
5103
+ function allowDocumentSnapshotWithPathOnceFilter() {
5104
+ return util.allowValueOnceFilter(readFirestoreModelKeyFromDocumentSnapshot);
5048
5105
  }
5049
5106
 
5050
5107
  const DEFAULT_QUERY_CHANGE_WATCHER_DELAY = 0;
@@ -5754,6 +5811,7 @@ $$1({ target: 'Array', proto: true, forced: String(test) === String(test.reverse
5754
5811
 
5755
5812
  function firestoreCollectionQueryFactory(queryFactory, accessorContext) {
5756
5813
  const documentLoader = firestoreDocumentLoader(accessorContext);
5814
+ const documentSnapshotPairsLoader = firestoreQueryDocumentSnapshotPairsLoader(accessorContext);
5757
5815
  const wrapQuery = baseQuery => {
5758
5816
  return {
5759
5817
  baseQuery,
@@ -5761,8 +5819,14 @@ function firestoreCollectionQueryFactory(queryFactory, accessorContext) {
5761
5819
  const result = yield baseQuery.getFirstDoc(transaction);
5762
5820
  return result ? documentLoader([result.ref])[0] : undefined;
5763
5821
  }),
5822
+ getFirstDocSnapshotDataPair: transaction => __awaiter(this, void 0, void 0, function* () {
5823
+ const result = yield baseQuery.getFirstDoc(transaction);
5824
+ return result ? documentSnapshotPairsLoader([result])[0] : undefined;
5825
+ }),
5764
5826
  getDocs: transaction => baseQuery.getDocs(transaction).then(x => documentLoader(documentReferencesFromSnapshot(x), transaction)),
5827
+ getDocSnapshotDataPairs: transaction => baseQuery.getDocs(transaction).then(x => documentSnapshotPairsLoader(x.docs, transaction)),
5765
5828
  streamDocs: () => baseQuery.streamDocs().pipe(rxjs.map(x => documentLoader(documentReferencesFromSnapshot(x)))),
5829
+ streamDocSnapshotDataPairs: () => baseQuery.streamDocs().pipe(rxjs.map(x => documentSnapshotPairsLoader(x.docs))),
5766
5830
  filter: (...queryConstraints) => wrapQuery(baseQuery.filter(...queryConstraints))
5767
5831
  };
5768
5832
  };
@@ -8071,6 +8135,7 @@ exports.addOrReplaceLimitInConstraints = addOrReplaceLimitInConstraints;
8071
8135
  exports.allChildDocumentsUnderParent = allChildDocumentsUnderParent;
8072
8136
  exports.allChildDocumentsUnderParentPath = allChildDocumentsUnderParentPath;
8073
8137
  exports.allChildDocumentsUnderRelativePath = allChildDocumentsUnderRelativePath;
8138
+ exports.allowDocumentSnapshotWithPathOnceFilter = allowDocumentSnapshotWithPathOnceFilter;
8074
8139
  exports.asTopLevelFieldPath = asTopLevelFieldPath;
8075
8140
  exports.asTopLevelFieldPaths = asTopLevelFieldPaths;
8076
8141
  exports.assertFirestoreUpdateHasData = assertFirestoreUpdateHasData;
@@ -8141,6 +8206,7 @@ exports.firestoreBitwiseSetMap = firestoreBitwiseSetMap;
8141
8206
  exports.firestoreBoolean = firestoreBoolean;
8142
8207
  exports.firestoreClientAccessorDriver = firestoreClientAccessorDriver;
8143
8208
  exports.firestoreClientIncrementUpdateToUpdateData = firestoreClientIncrementUpdateToUpdateData;
8209
+ exports.firestoreCollectionQueryFactory = firestoreCollectionQueryFactory;
8144
8210
  exports.firestoreContextFactory = firestoreContextFactory;
8145
8211
  exports.firestoreDate = firestoreDate;
8146
8212
  exports.firestoreDateCellRange = firestoreDateCellRange;
@@ -8154,6 +8220,8 @@ exports.firestoreDencoderStringArray = firestoreDencoderStringArray;
8154
8220
  exports.firestoreDocumentAccessorContextExtension = firestoreDocumentAccessorContextExtension;
8155
8221
  exports.firestoreDocumentAccessorFactory = firestoreDocumentAccessorFactory;
8156
8222
  exports.firestoreDocumentLoader = firestoreDocumentLoader;
8223
+ exports.firestoreDocumentSnapshotPairsLoader = firestoreDocumentSnapshotPairsLoader;
8224
+ exports.firestoreDocumentSnapshotPairsLoaderInstance = firestoreDocumentSnapshotPairsLoaderInstance;
8157
8225
  exports.firestoreDummyKey = firestoreDummyKey;
8158
8226
  exports.firestoreEncodedArray = firestoreEncodedArray;
8159
8227
  exports.firestoreEncodedObjectMap = firestoreEncodedObjectMap;
@@ -8208,6 +8276,7 @@ exports.firestoreObjectArray = firestoreObjectArray;
8208
8276
  exports.firestorePassThroughField = firestorePassThroughField;
8209
8277
  exports.firestoreQueryConstraint = firestoreQueryConstraint;
8210
8278
  exports.firestoreQueryConstraintFactory = firestoreQueryConstraintFactory;
8279
+ exports.firestoreQueryDocumentSnapshotPairsLoader = firestoreQueryDocumentSnapshotPairsLoader;
8211
8280
  exports.firestoreQueryFactory = firestoreQueryFactory;
8212
8281
  exports.firestoreSingleDocumentAccessor = firestoreSingleDocumentAccessor;
8213
8282
  exports.firestoreString = firestoreString;
@@ -8314,6 +8383,7 @@ exports.optionalFirestoreUnitedStatesAddress = optionalFirestoreUnitedStatesAddr
8314
8383
  exports.orderBy = orderBy;
8315
8384
  exports.orderByDocumentId = orderByDocumentId;
8316
8385
  exports.readFirestoreModelKey = readFirestoreModelKey;
8386
+ exports.readFirestoreModelKeyFromDocumentSnapshot = readFirestoreModelKeyFromDocumentSnapshot;
8317
8387
  exports.replaceConstraints = replaceConstraints;
8318
8388
  exports.selectFromFirebaseModelsService = selectFromFirebaseModelsService;
8319
8389
  exports.separateConstraints = separateConstraints;
package/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { increment, onSnapshot, getDoc, deleteDoc, setDoc, updateDoc, doc, collectionGroup, collection, runTransaction, writeBatch, limit as limit$1, limitToLast as limitToLast$1, orderBy as orderBy$1, documentId, where as where$1, startAt as startAt$1, startAfter as startAfter$1, endAt as endAt$1, endBefore as endBefore$1, getDocs, query } from 'firebase/firestore';
2
- import { cachedGetter, mergeModifiers, asArray, filterUndefinedValues, objectHasNoKeys, filterFalsyAndEmptyValues, build, wrapUseAsyncFunction, makeWithFactory, performMakeLoop, runAsyncTasksForValues, filterMaybeValues, useAsync, toModelFieldConversions, makeModelMapFunctions, modifyModelMapFunctions, assignValuesToPOJOFunction, KeyValueTypleValueFilter, asObjectCopyFactory, passThrough, isEqualToValueDecisionFunction, transformStringFunctionConfig, transformStringFunction, isDate, transformNumberFunction, sortValuesFunctionOrMapIdentityWithSortRef, isMapIdentityFunction, chainMapSameFunctions, filterUniqueFunction, unique, filterUniqueTransform, filterFromPOJOFunction, mapObjectMapFunction, copyObject, mapObjectMap, filterEmptyValues, modelFieldMapFunctions, toModelMapFunctions, latLngStringFunction, DEFAULT_LAT_LNG_STRING_VALUE, sortAscendingIndexNumberRefFunction, bitwiseSetDencoder, filterNullAndUndefinedValues, convertToArray, pushItemOrArrayItemsIntoArray, separateValues, UTF_8_START_CHARACTER, UTF_PRIVATE_USAGE_AREA_START, mergeArraysIntoArray, lastValue, flattenArrayOrValueArray, performAsyncTasks, batch, asGetter, getValueFromGetter, performTasksFromFactoryInParallelFunction, groupValues, forEachInIterable, arrayToObject, takeFront, isOddNumber, objectToMap, ServerErrorResponse, toReadableError, capitalizeFirstLetter, lowercaseFirstLetter, toRelativeSlashPathStartType, mappedUseFunction, iterableToArray, setContainsAllValues, usePromise, slashPathFactory, errorMessageContainsString } from '@dereekb/util';
2
+ import { cachedGetter, mergeModifiers, asArray, filterUndefinedValues, objectHasNoKeys, filterFalsyAndEmptyValues, build, wrapUseAsyncFunction, makeWithFactory, performMakeLoop, runAsyncTasksForValues, filterMaybeValues, useAsync, toModelFieldConversions, makeModelMapFunctions, modifyModelMapFunctions, assignValuesToPOJOFunction, KeyValueTypleValueFilter, asObjectCopyFactory, passThrough, isEqualToValueDecisionFunction, transformStringFunctionConfig, transformStringFunction, isDate, transformNumberFunction, sortValuesFunctionOrMapIdentityWithSortRef, isMapIdentityFunction, chainMapSameFunctions, filterUniqueFunction, unique, filterUniqueTransform, filterFromPOJOFunction, mapObjectMapFunction, copyObject, mapObjectMap, filterEmptyValues, modelFieldMapFunctions, toModelMapFunctions, latLngStringFunction, DEFAULT_LAT_LNG_STRING_VALUE, sortAscendingIndexNumberRefFunction, bitwiseSetDencoder, filterNullAndUndefinedValues, convertToArray, pushItemOrArrayItemsIntoArray, separateValues, UTF_8_START_CHARACTER, UTF_PRIVATE_USAGE_AREA_START, mergeArraysIntoArray, lastValue, flattenArrayOrValueArray, performAsyncTasks, batch, asGetter, getValueFromGetter, mapIdentityFunction, performTasksFromFactoryInParallelFunction, allowValueOnceFilter, groupValues, forEachInIterable, arrayToObject, takeFront, isOddNumber, objectToMap, ServerErrorResponse, toReadableError, capitalizeFirstLetter, lowercaseFirstLetter, toRelativeSlashPathStartType, mappedUseFunction, iterableToArray, setContainsAllValues, usePromise, slashPathFactory, errorMessageContainsString } from '@dereekb/util';
3
3
  import { filterMaybe, lazyFrom, itemAccumulator, ItemPageIterator, MappedPageItemIterationInstance } from '@dereekb/rxjs';
4
4
  import { from, map, combineLatest, shareReplay, of, exhaustMap, Observable, switchMap, timer, skip } from 'rxjs';
5
5
  import { UNKNOWN_WEBSITE_LINK_TYPE, decodeWebsiteLinkEncodedDataToWebsiteFileLink, encodeWebsiteFileLinkToWebsiteLinkEncodedData, AbstractModelPermissionService, grantedRoleMapReader, noAccessRoleMap, fullAccessRoleMap } from '@dereekb/model';
@@ -2966,6 +2966,13 @@ function getDocumentSnapshotData(document, withId = true) {
2966
2966
  function getDocumentSnapshotsData(documents, withId = true) {
2967
2967
  return getDocumentSnapshots(documents).then(x => getDataFromDocumentSnapshots(x, withId));
2968
2968
  }
2969
+
2970
+ /**
2971
+ * Returns the data from all input snapshots. Snapshots without data are filtered out.
2972
+ *
2973
+ * @param snapshots
2974
+ */
2975
+
2969
2976
  function getDataFromDocumentSnapshots(snapshots, withId = true) {
2970
2977
  const mapFn = documentDataFunction(withId);
2971
2978
  return filterMaybeValues(snapshots.map(mapFn));
@@ -3010,6 +3017,61 @@ function firestoreDocumentLoader(accessorContext) {
3010
3017
  };
3011
3018
  }
3012
3019
 
3020
+ /**
3021
+ * Used for loading documents for the input snapshots.
3022
+ */
3023
+
3024
+ /**
3025
+ * Used for loading documents for the input query snapshots. Query snapshots always contain data.
3026
+ */
3027
+
3028
+ /**
3029
+ * Used to make a FirestoreDocumentSnapshotPairsLoader.
3030
+ *
3031
+ * @param accessorContext
3032
+ * @returns
3033
+ */
3034
+ function firestoreDocumentSnapshotPairsLoader(accessorContext) {
3035
+ return (snapshots, transaction) => {
3036
+ const accessor = transaction ? accessorContext.documentAccessorForTransaction(transaction) : accessorContext.documentAccessor();
3037
+ const instance = firestoreDocumentSnapshotPairsLoaderInstance(accessor);
3038
+ return snapshots.map(instance);
3039
+ };
3040
+ }
3041
+
3042
+ /**
3043
+ * Used for loading a FirestoreDocumentSnapshotDataPair for the input snapshot. The accessor is already available given the context.
3044
+ */
3045
+
3046
+ /**
3047
+ * Used to make a FirestoreDocumentSnapshotPairsLoader.
3048
+ *
3049
+ * @param accessorContext
3050
+ * @returns
3051
+ */
3052
+ function firestoreDocumentSnapshotPairsLoaderInstance(accessor) {
3053
+ const fn = snapshot => {
3054
+ const data = documentDataWithIdAndKey(snapshot);
3055
+ const document = accessor.loadDocument(snapshot.ref);
3056
+ const pair = {
3057
+ data,
3058
+ snapshot: snapshot,
3059
+ document
3060
+ };
3061
+ return pair;
3062
+ };
3063
+ fn._accessor = accessor;
3064
+ return fn;
3065
+ }
3066
+
3067
+ /**
3068
+ * Used to make a FirestoreQueryDocumentSnapshotPairsLoader.
3069
+ *
3070
+ * @param accessorContext
3071
+ * @returns
3072
+ */
3073
+ const firestoreQueryDocumentSnapshotPairsLoader = firestoreDocumentSnapshotPairsLoader;
3074
+
3013
3075
  /**
3014
3076
  * Creates the document data from the snapshot.
3015
3077
  *
@@ -3034,6 +3096,7 @@ function documentDataFunction(withId) {
3034
3096
  * @param snapshot
3035
3097
  * @returns
3036
3098
  */
3099
+
3037
3100
  function documentDataWithIdAndKey(snapshot) {
3038
3101
  const data = snapshot.data();
3039
3102
  if (data) {
@@ -5281,13 +5344,48 @@ function firestoreQueryFactory(config) {
5281
5344
  };
5282
5345
  }
5283
5346
 
5347
+ // MARK: OnSnapshot
5348
+
5349
+ /**
5350
+ * Use to build an Observable that reacts to OnSnapshot events from queries.
5351
+ *
5352
+ * @param callOnSnapshot
5353
+ * @returns
5354
+ */
5355
+ function streamFromOnSnapshot(callOnSnapshot) {
5356
+ return new Observable(subscriber => {
5357
+ const unsubscribe = callOnSnapshot({
5358
+ next: subscriber.next.bind(subscriber),
5359
+ error: subscriber.error.bind(subscriber),
5360
+ complete: subscriber.complete.bind(subscriber)
5361
+ });
5362
+ return {
5363
+ unsubscribe
5364
+ };
5365
+ });
5366
+ }
5367
+ function documentReferencesFromSnapshot(snapshots) {
5368
+ return snapshots.docs.map(x => x.ref);
5369
+ }
5370
+
5371
+ // MARK: Utility
5372
+ /**
5373
+ * Reads the FirestoreModelKey from the query document snapshot.
5374
+ *
5375
+ * @param snapshot
5376
+ * @returns
5377
+ */
5378
+ function readFirestoreModelKeyFromDocumentSnapshot(snapshot) {
5379
+ return snapshot.ref.path;
5380
+ }
5381
+
5284
5382
  // MARK: Iterate Snapshot Pairs
5285
5383
  /**
5286
5384
  * Config for iterateFirestoreDocumentSnapshots().
5287
5385
  */
5288
5386
 
5289
5387
  /**
5290
- * Iterates through the results of a Firestore query by each FirestoreDocumentSnapshotDataPair.
5388
+ * Iterates through the results of a Firestore query by each FirestoreDocumentSnapshotDataPairWithData.
5291
5389
  *
5292
5390
  * @param config
5293
5391
  * @returns
@@ -5297,15 +5395,10 @@ async function iterateFirestoreDocumentSnapshotPairs(config) {
5297
5395
  iterateSnapshotPair,
5298
5396
  documentAccessor
5299
5397
  } = config;
5398
+ const loadPairForSnapshot = firestoreDocumentSnapshotPairsLoaderInstance(documentAccessor);
5300
5399
  return iterateFirestoreDocumentSnapshots(Object.assign({}, config, {
5301
5400
  iterateSnapshot: async snapshot => {
5302
- const document = documentAccessor.loadDocument(snapshot.ref);
5303
- const data = documentDataWithIdAndKey(snapshot);
5304
- const pair = {
5305
- document,
5306
- snapshot,
5307
- data
5308
- };
5401
+ const pair = loadPairForSnapshot(snapshot);
5309
5402
  return iterateSnapshotPair(pair);
5310
5403
  }
5311
5404
  }));
@@ -5358,19 +5451,11 @@ async function iterateFirestoreDocumentSnapshotPairBatches(config) {
5358
5451
  iterateSnapshotPairsBatch,
5359
5452
  documentAccessor
5360
5453
  } = config;
5454
+ const loadPairForSnapshot = firestoreDocumentSnapshotPairsLoaderInstance(documentAccessor);
5361
5455
  return iterateFirestoreDocumentSnapshotBatches(Object.assign({}, config, {
5362
5456
  maxParallelCheckpoints: 1,
5363
5457
  iterateSnapshotBatch: async snapshots => {
5364
- const pairs = snapshots.map(snapshot => {
5365
- const document = documentAccessor.loadDocument(snapshot.ref);
5366
- const data = documentDataWithIdAndKey(snapshot);
5367
- const pair = {
5368
- document,
5369
- snapshot,
5370
- data
5371
- };
5372
- return pair;
5373
- });
5458
+ const pairs = snapshots.map(loadPairForSnapshot);
5374
5459
  return iterateSnapshotPairsBatch(pairs);
5375
5460
  }
5376
5461
  }));
@@ -5444,6 +5529,8 @@ async function iterateFirestoreDocumentSnapshotBatches(config) {
5444
5529
  async function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5445
5530
  const {
5446
5531
  iterateCheckpoint,
5532
+ filterCheckpointSnapshots: inputFilterCheckpointSnapshot,
5533
+ handleRepeatCursor: inputHandleRepeatCursor,
5447
5534
  waitBetweenCheckpoints,
5448
5535
  useCheckpointResult,
5449
5536
  constraintsFactory: inputConstraintsFactory,
@@ -5459,6 +5546,9 @@ async function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5459
5546
  let hasReachedEnd = false;
5460
5547
  let totalSnapshotsVisited = 0;
5461
5548
  let cursorDocument;
5549
+ const visitedCursorPaths = new Set();
5550
+ const handleRepeatCursor = typeof inputHandleRepeatCursor === 'function' ? inputHandleRepeatCursor : () => inputHandleRepeatCursor;
5551
+ const filterCheckpointSnapshot = inputFilterCheckpointSnapshot != null ? inputFilterCheckpointSnapshot : mapIdentityFunction();
5462
5552
  async function taskInputFactory() {
5463
5553
  // Perform another query, then pass the results to the task factory.
5464
5554
  if (hasReachedEnd) {
@@ -5476,8 +5566,25 @@ async function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5476
5566
  const query = queryFactory.query(constraints);
5477
5567
  const docQuerySnapshot = await query.getDocs();
5478
5568
  const docSnapshots = docQuerySnapshot.docs;
5479
- cursorDocument = lastValue(docSnapshots); // set the next cursor document
5480
5569
 
5570
+ // check for repeat cursor
5571
+ const nextCursorDocument = lastValue(docSnapshots);
5572
+ if (nextCursorDocument != null) {
5573
+ const cursorPath = readFirestoreModelKeyFromDocumentSnapshot(nextCursorDocument);
5574
+ if (visitedCursorPaths.has(cursorPath)) {
5575
+ const shouldContinue = await handleRepeatCursor(nextCursorDocument);
5576
+ if (shouldContinue === false) {
5577
+ cursorDocument = null;
5578
+ hasReachedEnd = true;
5579
+ return null; // exit immediately
5580
+ }
5581
+ } else {
5582
+ visitedCursorPaths.add(cursorPath);
5583
+ }
5584
+ }
5585
+ cursorDocument = nextCursorDocument; // set the next cursor document
5586
+
5587
+ // update state
5481
5588
  const newSnapshotsVisited = docSnapshots.length;
5482
5589
  totalSnapshotsVisited += newSnapshotsVisited;
5483
5590
  if (!cursorDocument || totalSnapshotsVisited > totalSnapshotsLimit) {
@@ -5499,13 +5606,14 @@ async function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5499
5606
  i,
5500
5607
  docQuerySnapshot
5501
5608
  }) => {
5502
- const docSnapshots = docQuerySnapshot.docs;
5609
+ const docSnapshots = await filterCheckpointSnapshot(docQuerySnapshot.docs);
5503
5610
  const results = await iterateCheckpoint(docSnapshots, docQuerySnapshot);
5504
5611
  const checkpointResults = {
5505
5612
  i,
5506
5613
  cursorDocument,
5507
5614
  results,
5508
- docSnapshots
5615
+ docSnapshots,
5616
+ docQuerySnapshot
5509
5617
  };
5510
5618
  await (useCheckpointResult == null ? void 0 : useCheckpointResult(checkpointResults));
5511
5619
  }
@@ -5518,28 +5626,9 @@ async function iterateFirestoreDocumentSnapshotCheckpoints(config) {
5518
5626
  return result;
5519
5627
  }
5520
5628
 
5521
- // MARK: OnSnapshot
5522
-
5523
- /**
5524
- * Use to build an Observable that reacts to OnSnapshot events from queries.
5525
- *
5526
- * @param callOnSnapshot
5527
- * @returns
5528
- */
5529
- function streamFromOnSnapshot(callOnSnapshot) {
5530
- return new Observable(subscriber => {
5531
- const unsubscribe = callOnSnapshot({
5532
- next: subscriber.next.bind(subscriber),
5533
- error: subscriber.error.bind(subscriber),
5534
- complete: subscriber.complete.bind(subscriber)
5535
- });
5536
- return {
5537
- unsubscribe
5538
- };
5539
- });
5540
- }
5541
- function documentReferencesFromSnapshot(snapshots) {
5542
- return snapshots.docs.map(x => x.ref);
5629
+ // MARK: Utility
5630
+ function allowDocumentSnapshotWithPathOnceFilter() {
5631
+ return allowValueOnceFilter(readFirestoreModelKeyFromDocumentSnapshot);
5543
5632
  }
5544
5633
 
5545
5634
  const DEFAULT_QUERY_CHANGE_WATCHER_DELAY = 0;
@@ -6259,6 +6348,7 @@ $$1({ target: 'Array', proto: true, forced: String(test) === String(test.reverse
6259
6348
 
6260
6349
  function firestoreCollectionQueryFactory(queryFactory, accessorContext) {
6261
6350
  const documentLoader = firestoreDocumentLoader(accessorContext);
6351
+ const documentSnapshotPairsLoader = firestoreQueryDocumentSnapshotPairsLoader(accessorContext);
6262
6352
  const wrapQuery = baseQuery => {
6263
6353
  return {
6264
6354
  baseQuery,
@@ -6266,8 +6356,14 @@ function firestoreCollectionQueryFactory(queryFactory, accessorContext) {
6266
6356
  const result = await baseQuery.getFirstDoc(transaction);
6267
6357
  return result ? documentLoader([result.ref])[0] : undefined;
6268
6358
  },
6359
+ getFirstDocSnapshotDataPair: async transaction => {
6360
+ const result = await baseQuery.getFirstDoc(transaction);
6361
+ return result ? documentSnapshotPairsLoader([result])[0] : undefined;
6362
+ },
6269
6363
  getDocs: transaction => baseQuery.getDocs(transaction).then(x => documentLoader(documentReferencesFromSnapshot(x), transaction)),
6364
+ getDocSnapshotDataPairs: transaction => baseQuery.getDocs(transaction).then(x => documentSnapshotPairsLoader(x.docs, transaction)),
6270
6365
  streamDocs: () => baseQuery.streamDocs().pipe(map(x => documentLoader(documentReferencesFromSnapshot(x)))),
6366
+ streamDocSnapshotDataPairs: () => baseQuery.streamDocs().pipe(map(x => documentSnapshotPairsLoader(x.docs))),
6271
6367
  filter: (...queryConstraints) => wrapQuery(baseQuery.filter(...queryConstraints))
6272
6368
  };
6273
6369
  };
@@ -9106,4 +9202,4 @@ function systemStateFirestoreCollection(firestoreContext, converters) {
9106
9202
  });
9107
9203
  }
9108
9204
 
9109
- export { AbstractFirestoreDocument, AbstractFirestoreDocumentDataAccessorWrapper, AbstractFirestoreDocumentWithParent, BASE_MODEL_STORAGE_FILE_PATH, CALL_MODEL_APP_FUNCTION_KEY, COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION, CREATE_MODEL_APP_FUNCTION_KEY, ContextGrantedModelRolesReaderInstance, DEFAULT_DATE_CELL_RANGE_VALUE, DEFAULT_FIRESTORE_DATE_CELL_SCHEDULE_VALUE, DEFAULT_FIRESTORE_ITEM_PAGE_ITERATOR_ITEMS_PER_PAGE, DEFAULT_FIRESTORE_STRING_FIELD_VALUE, DEFAULT_FIRESTORE_UNITED_STATES_ADDRESS_VALUE, DEFAULT_FIRESTORE_WEBSITE_FILE_LINK_VALUE, DEFAULT_ITERATE_FIRESTORE_DOCUMENT_SNAPSHOT_BATCHES_BATCH_SIZE, DEFAULT_QUERY_CHANGE_WATCHER_DELAY, DEFAULT_SINGLE_ITEM_FIRESTORE_COLLECTION_DOCUMENT_IDENTIFIER, DEFAULT_WEBSITE_LINK, DELETE_MODEL_APP_FUNCTION_KEY, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_NETWORK_REQUEST_FAILED, FIREBASE_AUTH_PASSWORD_MAX_LENGTH, FIREBASE_AUTH_PASSWORD_MIN_LENGTH, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, FIREBASE_AUTH_WRONG_PASSWORD, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_PASSWORD_KEY, FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING, FIRESTORE_COLLECTION_NAME_SEPARATOR, FIRESTORE_DUMMY_MODEL_KEY, FIRESTORE_EMPTY_VALUE, FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, FIRESTORE_ITEM_PAGE_ITERATOR, FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE, FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, FIRESTORE_MAX_WHERE_IN_FILTER_ARGS_COUNT, FIRESTORE_MODEL_ID_REGEX, FIRESTORE_MODEL_KEY_REGEX, FIRESTORE_MODEL_KEY_REGEX_STRICT, FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, FIRESTORE_PASSTHROUGH_FIELD, FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, FirebaseDevelopmentFunctions, FirebaseModelPermissionServiceInstance, FirebaseServerError, FirestoreAccessorStreamMode, FirestoreDocumentContextType, FirestoreItemPageIterationInstance, InferredTargetModelIdParams, InferredTargetModelParams, IsFirestoreModelId, IsFirestoreModelKey, MAX_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MIN_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER_DEFAULT, MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER_SPLITTER, MODEL_STORAGE_FILE_SLASH_PATH_FACTORY, ModifyBeforeSetFirestoreDocumentDataAccessorWrapper, READ_MODEL_APP_FUNCTION_KEY, RUN_DEV_FUNCTION_APP_FUNCTION_KEY, SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER, ScheduledFunctionDevelopmentFirebaseFunctionListEntry, ScheduledFunctionDevelopmentFirebaseFunctionParams, ScheduledFunctionDevelopmentFunctionTypeEnum, SystemStateDocument, SystemStateFirestoreCollections, TargetModelIdParams, TargetModelParams, UPDATE_MODEL_APP_FUNCTION_KEY, addConstraintToBuilder, addOrReplaceLimitInConstraints, allChildDocumentsUnderParent, allChildDocumentsUnderParentPath, allChildDocumentsUnderRelativePath, asTopLevelFieldPath, asTopLevelFieldPaths, assertFirestoreUpdateHasData, assertStorageUploadOptionsStringFormat, assignDateCellRangeFunction, assignDateCellScheduleFunction, assignUnitedStatesAddressFunction, assignWebsiteFileLinkFunction, assignWebsiteLinkFunction, buildFirebaseCollectionTypeModelTypeMap, callModelFirebaseFunctionMapFactory, childFirestoreModelKey, childFirestoreModelKeyPath, childFirestoreModelKeys, clientFirebaseFirestoreContextFactory, clientFirebaseStorageContextFactory, contextGrantedModelRolesReader, contextGrantedModelRolesReaderDoesNotExistErrorMessage, contextGrantedModelRolesReaderPermissionErrorMessage, convertHttpsCallableErrorToReadableError, copyDocumentIdForUserRelatedModifierFunction, copyDocumentIdToFieldModifierFunction, copyUserRelatedDataAccessorFactoryFunction, copyUserRelatedDataModifierConfig, dataFromDocumentSnapshots, dataFromSnapshotStream, developmentFirebaseFunctionMapFactory, directDataHttpsCallable, documentData, documentDataFunction, documentDataWithIdAndKey, documentReferenceFromDocument, documentReferencesFromDocuments, documentReferencesFromSnapshot, endAt, endAtValue, endBefore, extendFirestoreCollectionWithSingleDocumentAccessor, filterConstraintsOfType, filterDisallowedFirestoreItemPageIteratorInputContraints, firebaseAuthErrorToReadableError, firebaseFirestoreClientDrivers, firebaseFirestoreQueryConstraintFunctionsDriver, firebaseFirestoreQueryDriver, firebaseFunctionMapFactory, firebaseModelLoader, firebaseModelPermissionService, firebaseModelService, firebaseModelServiceFactory, firebaseModelsService, firebaseQueryItemAccumulator, firebaseQuerySnapshotAccumulator, firebaseStorageBucketFolderPath, firebaseStorageClientAccessorDriver, firebaseStorageClientAccessorFile, firebaseStorageClientAccessorFolder, firebaseStorageClientDrivers, firebaseStorageClientListFilesResultFactory, firebaseStorageContextFactory, firebaseStorageFileExists, firebaseStorageFilePathFromStorageFilePath, firebaseStorageRefForStorageFilePath, firestoreArray, firestoreArrayMap, firestoreBitwiseObjectMap, firestoreBitwiseSet, firestoreBitwiseSetMap, firestoreBoolean, firestoreClientAccessorDriver, firestoreClientIncrementUpdateToUpdateData, firestoreContextFactory, firestoreDate, firestoreDateCellRange, firestoreDateCellRangeArray, firestoreDateCellRangeAssignFn, firestoreDateCellSchedule, firestoreDateCellScheduleAssignFn, firestoreDencoderArray, firestoreDencoderMap, firestoreDencoderStringArray, firestoreDocumentAccessorContextExtension, firestoreDocumentAccessorFactory, firestoreDocumentLoader, firestoreDummyKey, firestoreEncodedArray, firestoreEncodedObjectMap, firestoreEnum, firestoreEnumArray, firestoreField, firestoreFieldConfigToModelMapFunctionsRef, firestoreIdBatchVerifierFactory, firestoreIdentityTypeArray, firestoreIdentityTypeArrayName, firestoreItemPageIteration, firestoreItemPageIterationFactory, firestoreLatLngString, firestoreMap, firestoreMapZoomLevel, firestoreModelId, firestoreModelIdArrayField, firestoreModelIdFromDocument, firestoreModelIdGrantedRoleArrayMap, firestoreModelIdGrantedRoleMap, firestoreModelIdString, firestoreModelIdentity, firestoreModelIdentityTypeMap, firestoreModelIdsFromDocuments, firestoreModelIdsFromKey, firestoreModelKey, firestoreModelKeyArrayField, firestoreModelKeyCollectionName, firestoreModelKeyCollectionType, firestoreModelKeyCollectionTypeArray, firestoreModelKeyCollectionTypeArrayName, firestoreModelKeyCollectionTypePair, firestoreModelKeyEncodedGrantedRoleMap, firestoreModelKeyFromDocument, firestoreModelKeyGrantedRoleArrayMap, firestoreModelKeyGrantedRoleMap, firestoreModelKeyPairObject, firestoreModelKeyParentKey, firestoreModelKeyParentKeyPartPairs, firestoreModelKeyPart, firestoreModelKeyPartPairs, firestoreModelKeyPartPairsKeyPath, firestoreModelKeyPartPairsPaths, firestoreModelKeyPath, firestoreModelKeyString, firestoreModelKeyTypePair, firestoreModelKeys, firestoreModelKeysFromDocuments, firestoreModelType, firestoreNumber, firestoreObjectArray, firestorePassThroughField, firestoreQueryConstraint, firestoreQueryConstraintFactory, firestoreQueryFactory, firestoreSingleDocumentAccessor, firestoreString, firestoreSubObject, firestoreTimezoneString, firestoreUID, firestoreUniqueArray, firestoreUniqueKeyedArray, firestoreUniqueStringArray, firestoreUnitedStatesAddress, firestoreUnitedStatesAddressAssignFn, firestoreUpdateWithNoDataError, firestoreWebsiteFileLink, firestoreWebsiteFileLinkAssignFn, firestoreWebsiteFileLinkEncodedArray, firestoreWebsiteFileLinkObjectArray, firestoreWebsiteLink, firestoreWebsiteLinkArray, firestoreWebsiteLinkAssignFn, flatFirestoreModelKey, getDataFromDocumentSnapshots, getDocumentSnapshotData, getDocumentSnapshotDataPair, getDocumentSnapshotDataPairs, getDocumentSnapshotDataTuples, getDocumentSnapshotPair, getDocumentSnapshotPairs, getDocumentSnapshots, getDocumentSnapshotsData, grantFullAccessIfAdmin, grantFullAccessIfAuthUserRelated, grantModelRolesIfAdmin, grantModelRolesIfAdminFunction, grantModelRolesIfAuthUserRelatedModelFunction, grantModelRolesIfFunction, grantModelRolesIfHasAuthRolesFactory, grantModelRolesIfHasAuthRolesFunction, grantModelRolesOnlyIfFunction, inContextFirebaseModelServiceFactory, inContextFirebaseModelsServiceFactory, incrementUpdateWithAccessorFunction, inferKeyFromTwoWayFlatFirestoreModelKey, interceptAccessorFactoryFunction, isAdminInFirebaseModelContext, isFirebaseStorageObjectNotFoundError, isFirestoreModelId, isFirestoreModelKey, isOwnerOfUserRelatedModelInFirebaseModelContext, iterateFirestoreDocumentSnapshotBatches, iterateFirestoreDocumentSnapshotCheckpoints, iterateFirestoreDocumentSnapshotPairBatches, iterateFirestoreDocumentSnapshotPairs, iterateFirestoreDocumentSnapshots, iterationQueryDocChangeWatcher, iterationQueryDocChangeWatcherChangeTypeForGroup, latestDataFromDocuments, latestSnapshotsFromDocuments, lazyFirebaseFunctionsFactory, limit, limitToLast, limitedFirestoreDocumentAccessorFactory, loadDocumentsForDocumentReferences, loadDocumentsForDocumentReferencesFromValues, loadDocumentsForIds, loadDocumentsForIdsFromValues, loadDocumentsForKeys, loadDocumentsForKeysFromValues, loadDocumentsForSnapshots, loadDocumentsForValues, makeDocuments, makeFirestoreCollection, makeFirestoreCollectionGroup, makeFirestoreCollectionWithParent, makeFirestoreItemPageIteratorDelegate, makeFirestoreQueryConstraintFunctionsDriver, makeRootSingleItemFirestoreCollection, makeSingleItemFirestoreCollection, mapDataFromSnapshot, mapHttpsCallable, modelFirebaseFunctionMapFactory, modelStorageSlashPathFactory, modifyBeforeSetInterceptAccessorFactoryFunction, newDocuments, noStringFormatInStorageUploadOptionsError, offset, onCallCreateModelParams, onCallCreateModelResult, onCallCreateModelResultWithDocs, onCallDeleteModelParams, onCallDevelopmentParams, onCallReadModelParams, onCallTypedModelParams, onCallTypedModelParamsFunction, onCallUpdateModelParams, optionalFirestoreArray, optionalFirestoreBoolean, optionalFirestoreDate, optionalFirestoreEnum, optionalFirestoreField, optionalFirestoreNumber, optionalFirestoreString, optionalFirestoreUID, optionalFirestoreUnitedStatesAddress, orderBy, orderByDocumentId, readFirestoreModelKey, replaceConstraints, selectFromFirebaseModelsService, separateConstraints, setIdAndKeyFromKeyIdRefOnDocumentData, setIdAndKeyFromSnapshotOnDocumentData, snapshotConverterFunctions, snapshotStreamDataForAccessor, snapshotStreamForAccessor, startAfter, startAt, startAtValue, storageListFilesResultFactory, storageListFilesResultHasNoNextError, storagePathFactory, streamFromOnSnapshot, systemStateCollectionReference, systemStateConverter, systemStateFirestoreCollection, systemStateIdentity, twoWayFlatFirestoreModelKey, unsupportedFirestoreDriverFunctionError, updateWithAccessorUpdateAndConverterFunction, useContextAuth, useContextAuthUid, useDocumentSnapshot, useDocumentSnapshotData, useFirebaseModelsService, where, whereDateIsAfter, whereDateIsAfterWithSort, whereDateIsBefore, whereDateIsBeforeWithSort, whereDateIsBetween, whereDateIsInRange, whereDateIsOnOrAfter, whereDateIsOnOrAfterWithSort, whereDateIsOnOrBefore, whereDateIsOnOrBeforeWithSort, whereDocumentId, whereStringHasRootIdentityModelKey, whereStringValueHasPrefix };
9205
+ export { AbstractFirestoreDocument, AbstractFirestoreDocumentDataAccessorWrapper, AbstractFirestoreDocumentWithParent, BASE_MODEL_STORAGE_FILE_PATH, CALL_MODEL_APP_FUNCTION_KEY, COPY_USER_RELATED_DATA_ACCESSOR_FACTORY_FUNCTION, CREATE_MODEL_APP_FUNCTION_KEY, ContextGrantedModelRolesReaderInstance, DEFAULT_DATE_CELL_RANGE_VALUE, DEFAULT_FIRESTORE_DATE_CELL_SCHEDULE_VALUE, DEFAULT_FIRESTORE_ITEM_PAGE_ITERATOR_ITEMS_PER_PAGE, DEFAULT_FIRESTORE_STRING_FIELD_VALUE, DEFAULT_FIRESTORE_UNITED_STATES_ADDRESS_VALUE, DEFAULT_FIRESTORE_WEBSITE_FILE_LINK_VALUE, DEFAULT_ITERATE_FIRESTORE_DOCUMENT_SNAPSHOT_BATCHES_BATCH_SIZE, DEFAULT_QUERY_CHANGE_WATCHER_DELAY, DEFAULT_SINGLE_ITEM_FIRESTORE_COLLECTION_DOCUMENT_IDENTIFIER, DEFAULT_WEBSITE_LINK, DELETE_MODEL_APP_FUNCTION_KEY, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_NETWORK_REQUEST_FAILED, FIREBASE_AUTH_PASSWORD_MAX_LENGTH, FIREBASE_AUTH_PASSWORD_MIN_LENGTH, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, FIREBASE_AUTH_WRONG_PASSWORD, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_PASSWORD_KEY, FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING, FIRESTORE_COLLECTION_NAME_SEPARATOR, FIRESTORE_DUMMY_MODEL_KEY, FIRESTORE_EMPTY_VALUE, FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, FIRESTORE_ITEM_PAGE_ITERATOR, FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE, FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, FIRESTORE_MAX_WHERE_IN_FILTER_ARGS_COUNT, FIRESTORE_MODEL_ID_REGEX, FIRESTORE_MODEL_KEY_REGEX, FIRESTORE_MODEL_KEY_REGEX_STRICT, FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, FIRESTORE_PASSTHROUGH_FIELD, FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, FirebaseDevelopmentFunctions, FirebaseModelPermissionServiceInstance, FirebaseServerError, FirestoreAccessorStreamMode, FirestoreDocumentContextType, FirestoreItemPageIterationInstance, InferredTargetModelIdParams, InferredTargetModelParams, IsFirestoreModelId, IsFirestoreModelKey, MAX_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MIN_FIRESTORE_MAP_ZOOM_LEVEL_VALUE, MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER_DEFAULT, MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER_SPLITTER, MODEL_STORAGE_FILE_SLASH_PATH_FACTORY, ModifyBeforeSetFirestoreDocumentDataAccessorWrapper, READ_MODEL_APP_FUNCTION_KEY, RUN_DEV_FUNCTION_APP_FUNCTION_KEY, SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER, ScheduledFunctionDevelopmentFirebaseFunctionListEntry, ScheduledFunctionDevelopmentFirebaseFunctionParams, ScheduledFunctionDevelopmentFunctionTypeEnum, SystemStateDocument, SystemStateFirestoreCollections, TargetModelIdParams, TargetModelParams, UPDATE_MODEL_APP_FUNCTION_KEY, addConstraintToBuilder, addOrReplaceLimitInConstraints, allChildDocumentsUnderParent, allChildDocumentsUnderParentPath, allChildDocumentsUnderRelativePath, allowDocumentSnapshotWithPathOnceFilter, asTopLevelFieldPath, asTopLevelFieldPaths, assertFirestoreUpdateHasData, assertStorageUploadOptionsStringFormat, assignDateCellRangeFunction, assignDateCellScheduleFunction, assignUnitedStatesAddressFunction, assignWebsiteFileLinkFunction, assignWebsiteLinkFunction, buildFirebaseCollectionTypeModelTypeMap, callModelFirebaseFunctionMapFactory, childFirestoreModelKey, childFirestoreModelKeyPath, childFirestoreModelKeys, clientFirebaseFirestoreContextFactory, clientFirebaseStorageContextFactory, contextGrantedModelRolesReader, contextGrantedModelRolesReaderDoesNotExistErrorMessage, contextGrantedModelRolesReaderPermissionErrorMessage, convertHttpsCallableErrorToReadableError, copyDocumentIdForUserRelatedModifierFunction, copyDocumentIdToFieldModifierFunction, copyUserRelatedDataAccessorFactoryFunction, copyUserRelatedDataModifierConfig, dataFromDocumentSnapshots, dataFromSnapshotStream, developmentFirebaseFunctionMapFactory, directDataHttpsCallable, documentData, documentDataFunction, documentDataWithIdAndKey, documentReferenceFromDocument, documentReferencesFromDocuments, documentReferencesFromSnapshot, endAt, endAtValue, endBefore, extendFirestoreCollectionWithSingleDocumentAccessor, filterConstraintsOfType, filterDisallowedFirestoreItemPageIteratorInputContraints, firebaseAuthErrorToReadableError, firebaseFirestoreClientDrivers, firebaseFirestoreQueryConstraintFunctionsDriver, firebaseFirestoreQueryDriver, firebaseFunctionMapFactory, firebaseModelLoader, firebaseModelPermissionService, firebaseModelService, firebaseModelServiceFactory, firebaseModelsService, firebaseQueryItemAccumulator, firebaseQuerySnapshotAccumulator, firebaseStorageBucketFolderPath, firebaseStorageClientAccessorDriver, firebaseStorageClientAccessorFile, firebaseStorageClientAccessorFolder, firebaseStorageClientDrivers, firebaseStorageClientListFilesResultFactory, firebaseStorageContextFactory, firebaseStorageFileExists, firebaseStorageFilePathFromStorageFilePath, firebaseStorageRefForStorageFilePath, firestoreArray, firestoreArrayMap, firestoreBitwiseObjectMap, firestoreBitwiseSet, firestoreBitwiseSetMap, firestoreBoolean, firestoreClientAccessorDriver, firestoreClientIncrementUpdateToUpdateData, firestoreCollectionQueryFactory, firestoreContextFactory, firestoreDate, firestoreDateCellRange, firestoreDateCellRangeArray, firestoreDateCellRangeAssignFn, firestoreDateCellSchedule, firestoreDateCellScheduleAssignFn, firestoreDencoderArray, firestoreDencoderMap, firestoreDencoderStringArray, firestoreDocumentAccessorContextExtension, firestoreDocumentAccessorFactory, firestoreDocumentLoader, firestoreDocumentSnapshotPairsLoader, firestoreDocumentSnapshotPairsLoaderInstance, firestoreDummyKey, firestoreEncodedArray, firestoreEncodedObjectMap, firestoreEnum, firestoreEnumArray, firestoreField, firestoreFieldConfigToModelMapFunctionsRef, firestoreIdBatchVerifierFactory, firestoreIdentityTypeArray, firestoreIdentityTypeArrayName, firestoreItemPageIteration, firestoreItemPageIterationFactory, firestoreLatLngString, firestoreMap, firestoreMapZoomLevel, firestoreModelId, firestoreModelIdArrayField, firestoreModelIdFromDocument, firestoreModelIdGrantedRoleArrayMap, firestoreModelIdGrantedRoleMap, firestoreModelIdString, firestoreModelIdentity, firestoreModelIdentityTypeMap, firestoreModelIdsFromDocuments, firestoreModelIdsFromKey, firestoreModelKey, firestoreModelKeyArrayField, firestoreModelKeyCollectionName, firestoreModelKeyCollectionType, firestoreModelKeyCollectionTypeArray, firestoreModelKeyCollectionTypeArrayName, firestoreModelKeyCollectionTypePair, firestoreModelKeyEncodedGrantedRoleMap, firestoreModelKeyFromDocument, firestoreModelKeyGrantedRoleArrayMap, firestoreModelKeyGrantedRoleMap, firestoreModelKeyPairObject, firestoreModelKeyParentKey, firestoreModelKeyParentKeyPartPairs, firestoreModelKeyPart, firestoreModelKeyPartPairs, firestoreModelKeyPartPairsKeyPath, firestoreModelKeyPartPairsPaths, firestoreModelKeyPath, firestoreModelKeyString, firestoreModelKeyTypePair, firestoreModelKeys, firestoreModelKeysFromDocuments, firestoreModelType, firestoreNumber, firestoreObjectArray, firestorePassThroughField, firestoreQueryConstraint, firestoreQueryConstraintFactory, firestoreQueryDocumentSnapshotPairsLoader, firestoreQueryFactory, firestoreSingleDocumentAccessor, firestoreString, firestoreSubObject, firestoreTimezoneString, firestoreUID, firestoreUniqueArray, firestoreUniqueKeyedArray, firestoreUniqueStringArray, firestoreUnitedStatesAddress, firestoreUnitedStatesAddressAssignFn, firestoreUpdateWithNoDataError, firestoreWebsiteFileLink, firestoreWebsiteFileLinkAssignFn, firestoreWebsiteFileLinkEncodedArray, firestoreWebsiteFileLinkObjectArray, firestoreWebsiteLink, firestoreWebsiteLinkArray, firestoreWebsiteLinkAssignFn, flatFirestoreModelKey, getDataFromDocumentSnapshots, getDocumentSnapshotData, getDocumentSnapshotDataPair, getDocumentSnapshotDataPairs, getDocumentSnapshotDataTuples, getDocumentSnapshotPair, getDocumentSnapshotPairs, getDocumentSnapshots, getDocumentSnapshotsData, grantFullAccessIfAdmin, grantFullAccessIfAuthUserRelated, grantModelRolesIfAdmin, grantModelRolesIfAdminFunction, grantModelRolesIfAuthUserRelatedModelFunction, grantModelRolesIfFunction, grantModelRolesIfHasAuthRolesFactory, grantModelRolesIfHasAuthRolesFunction, grantModelRolesOnlyIfFunction, inContextFirebaseModelServiceFactory, inContextFirebaseModelsServiceFactory, incrementUpdateWithAccessorFunction, inferKeyFromTwoWayFlatFirestoreModelKey, interceptAccessorFactoryFunction, isAdminInFirebaseModelContext, isFirebaseStorageObjectNotFoundError, isFirestoreModelId, isFirestoreModelKey, isOwnerOfUserRelatedModelInFirebaseModelContext, iterateFirestoreDocumentSnapshotBatches, iterateFirestoreDocumentSnapshotCheckpoints, iterateFirestoreDocumentSnapshotPairBatches, iterateFirestoreDocumentSnapshotPairs, iterateFirestoreDocumentSnapshots, iterationQueryDocChangeWatcher, iterationQueryDocChangeWatcherChangeTypeForGroup, latestDataFromDocuments, latestSnapshotsFromDocuments, lazyFirebaseFunctionsFactory, limit, limitToLast, limitedFirestoreDocumentAccessorFactory, loadDocumentsForDocumentReferences, loadDocumentsForDocumentReferencesFromValues, loadDocumentsForIds, loadDocumentsForIdsFromValues, loadDocumentsForKeys, loadDocumentsForKeysFromValues, loadDocumentsForSnapshots, loadDocumentsForValues, makeDocuments, makeFirestoreCollection, makeFirestoreCollectionGroup, makeFirestoreCollectionWithParent, makeFirestoreItemPageIteratorDelegate, makeFirestoreQueryConstraintFunctionsDriver, makeRootSingleItemFirestoreCollection, makeSingleItemFirestoreCollection, mapDataFromSnapshot, mapHttpsCallable, modelFirebaseFunctionMapFactory, modelStorageSlashPathFactory, modifyBeforeSetInterceptAccessorFactoryFunction, newDocuments, noStringFormatInStorageUploadOptionsError, offset, onCallCreateModelParams, onCallCreateModelResult, onCallCreateModelResultWithDocs, onCallDeleteModelParams, onCallDevelopmentParams, onCallReadModelParams, onCallTypedModelParams, onCallTypedModelParamsFunction, onCallUpdateModelParams, optionalFirestoreArray, optionalFirestoreBoolean, optionalFirestoreDate, optionalFirestoreEnum, optionalFirestoreField, optionalFirestoreNumber, optionalFirestoreString, optionalFirestoreUID, optionalFirestoreUnitedStatesAddress, orderBy, orderByDocumentId, readFirestoreModelKey, readFirestoreModelKeyFromDocumentSnapshot, replaceConstraints, selectFromFirebaseModelsService, separateConstraints, setIdAndKeyFromKeyIdRefOnDocumentData, setIdAndKeyFromSnapshotOnDocumentData, snapshotConverterFunctions, snapshotStreamDataForAccessor, snapshotStreamForAccessor, startAfter, startAt, startAtValue, storageListFilesResultFactory, storageListFilesResultHasNoNextError, storagePathFactory, streamFromOnSnapshot, systemStateCollectionReference, systemStateConverter, systemStateFirestoreCollection, systemStateIdentity, twoWayFlatFirestoreModelKey, unsupportedFirestoreDriverFunctionError, updateWithAccessorUpdateAndConverterFunction, useContextAuth, useContextAuthUid, useDocumentSnapshot, useDocumentSnapshotData, useFirebaseModelsService, where, whereDateIsAfter, whereDateIsAfterWithSort, whereDateIsBefore, whereDateIsBeforeWithSort, whereDateIsBetween, whereDateIsInRange, whereDateIsOnOrAfter, whereDateIsOnOrAfterWithSort, whereDateIsOnOrBefore, whereDateIsOnOrBeforeWithSort, whereDocumentId, whereStringHasRootIdentityModelKey, whereStringValueHasPrefix };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase",
3
- "version": "10.0.22",
3
+ "version": "10.0.24",
4
4
  "exports": {
5
5
  ".": {
6
6
  "types": "./src/index.d.ts",