@dereekb/firebase 2.0.0 → 4.0.0
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/CHANGELOG.md +43 -0
- package/package.json +24 -9
- package/src/index.d.ts +0 -1
- package/src/index.js +1 -2
- package/src/index.js.map +1 -1
- package/src/lib/client/firestore/driver.accessor.batch.d.ts +31 -0
- package/src/lib/{firestore/accessor.batch.js → client/firestore/driver.accessor.batch.js} +22 -4
- package/src/lib/client/firestore/driver.accessor.batch.js.map +1 -0
- package/src/lib/client/firestore/driver.accessor.d.ts +2 -0
- package/src/lib/{firestore/accessor.default.d.ts → client/firestore/driver.accessor.default.d.ts} +4 -11
- package/src/lib/{firestore/accessor.default.js → client/firestore/driver.accessor.default.js} +17 -13
- package/src/lib/client/firestore/driver.accessor.default.js.map +1 -0
- package/src/lib/client/firestore/driver.accessor.js +23 -0
- package/src/lib/client/firestore/driver.accessor.js.map +1 -0
- package/src/lib/client/firestore/driver.accessor.transaction.d.ts +31 -0
- package/src/lib/{firestore/accessor.transaction.js → client/firestore/driver.accessor.transaction.js} +22 -4
- package/src/lib/client/firestore/driver.accessor.transaction.js.map +1 -0
- package/src/lib/client/firestore/driver.d.ts +4 -0
- package/src/lib/client/firestore/driver.js +15 -0
- package/src/lib/client/firestore/driver.js.map +1 -0
- package/src/lib/client/firestore/driver.query.d.ts +13 -0
- package/src/lib/client/firestore/driver.query.js +47 -0
- package/src/lib/client/firestore/driver.query.js.map +1 -0
- package/src/lib/client/firestore/firestore.d.ts +5 -0
- package/src/lib/client/firestore/firestore.js +10 -0
- package/src/lib/client/firestore/firestore.js.map +1 -0
- package/src/lib/client/firestore/index.d.ts +4 -0
- package/src/lib/client/firestore/index.js +8 -0
- package/src/lib/client/firestore/index.js.map +1 -0
- package/src/lib/client/function/function.d.ts +28 -0
- package/src/lib/client/function/function.factory.d.ts +40 -0
- package/src/lib/client/function/function.factory.js +36 -0
- package/src/lib/client/function/function.factory.js.map +1 -0
- package/src/lib/client/function/function.js +3 -0
- package/src/lib/client/function/function.js.map +1 -0
- package/src/lib/client/function/index.d.ts +2 -0
- package/src/lib/client/function/index.js +6 -0
- package/src/lib/client/function/index.js.map +1 -0
- package/src/lib/client/index.d.ts +2 -0
- package/src/lib/client/index.js +6 -0
- package/src/lib/client/index.js.map +1 -0
- package/src/lib/common/auth/auth.d.ts +4 -0
- package/src/lib/common/auth/auth.js +3 -0
- package/src/lib/common/auth/auth.js.map +1 -0
- package/src/lib/common/auth/index.d.ts +1 -0
- package/src/lib/common/auth/index.js +5 -0
- package/src/lib/common/auth/index.js.map +1 -0
- package/src/lib/common/firestore/accessor/accessor.batch.d.ts +3 -0
- package/src/lib/common/firestore/accessor/accessor.batch.js +3 -0
- package/src/lib/common/firestore/accessor/accessor.batch.js.map +1 -0
- package/src/lib/common/firestore/accessor/accessor.d.ts +87 -0
- package/src/lib/common/firestore/accessor/accessor.default.d.ts +2 -0
- package/src/lib/common/firestore/accessor/accessor.default.js +3 -0
- package/src/lib/common/firestore/accessor/accessor.default.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/accessor.js +17 -1
- package/src/lib/common/firestore/accessor/accessor.js.map +1 -0
- package/src/lib/common/firestore/accessor/accessor.transaction.d.ts +3 -0
- package/src/lib/common/firestore/accessor/accessor.transaction.js +3 -0
- package/src/lib/common/firestore/accessor/accessor.transaction.js.map +1 -0
- package/src/lib/common/firestore/accessor/context.batch.d.ts +7 -0
- package/src/lib/common/firestore/accessor/context.batch.js +3 -0
- package/src/lib/common/firestore/accessor/context.batch.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/context.d.ts +0 -0
- package/src/lib/common/firestore/accessor/context.default.d.ts +5 -0
- package/src/lib/common/firestore/accessor/context.default.js +3 -0
- package/src/lib/common/firestore/accessor/context.default.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/context.js +0 -0
- package/src/lib/common/firestore/accessor/context.js.map +1 -0
- package/src/lib/common/firestore/accessor/context.transaction.d.ts +7 -0
- package/src/lib/common/firestore/accessor/context.transaction.js +3 -0
- package/src/lib/common/firestore/accessor/context.transaction.js.map +1 -0
- package/src/lib/common/firestore/accessor/document.d.ts +121 -0
- package/src/lib/common/firestore/accessor/document.js +106 -0
- package/src/lib/common/firestore/accessor/document.js.map +1 -0
- package/src/lib/common/firestore/accessor/document.utility.d.ts +43 -0
- package/src/lib/common/firestore/accessor/document.utility.js +74 -0
- package/src/lib/common/firestore/accessor/document.utility.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/index.d.ts +3 -5
- package/src/lib/common/firestore/accessor/index.js +14 -0
- package/src/lib/common/firestore/accessor/index.js.map +1 -0
- package/src/lib/common/firestore/collection/collection.d.ts +27 -0
- package/src/lib/common/firestore/collection/collection.js +26 -0
- package/src/lib/common/firestore/collection/collection.js.map +1 -0
- package/src/lib/common/firestore/collection/collection.query.d.ts +36 -0
- package/src/lib/common/firestore/collection/collection.query.js +27 -0
- package/src/lib/common/firestore/collection/collection.query.js.map +1 -0
- package/src/lib/common/firestore/collection/index.d.ts +3 -0
- package/src/lib/common/firestore/collection/index.js +7 -0
- package/src/lib/common/firestore/collection/index.js.map +1 -0
- package/src/lib/common/firestore/collection/subcollection.d.ts +25 -0
- package/src/lib/common/firestore/collection/subcollection.js +14 -0
- package/src/lib/common/firestore/collection/subcollection.js.map +1 -0
- package/src/lib/common/firestore/collection/subcollection.single.d.ts +12 -0
- package/src/lib/common/firestore/collection/subcollection.single.js +14 -0
- package/src/lib/common/firestore/collection/subcollection.single.js.map +1 -0
- package/src/lib/common/firestore/context.d.ts +36 -0
- package/src/lib/common/firestore/context.js +36 -0
- package/src/lib/common/firestore/context.js.map +1 -0
- package/src/lib/common/firestore/driver/accessor.d.ts +26 -0
- package/src/lib/common/firestore/driver/accessor.js +3 -0
- package/src/lib/common/firestore/driver/accessor.js.map +1 -0
- package/src/lib/common/firestore/driver/batch.d.ts +22 -0
- package/src/lib/common/firestore/driver/batch.js +3 -0
- package/src/lib/common/firestore/driver/batch.js.map +1 -0
- package/src/lib/common/firestore/driver/driver.d.ts +11 -0
- package/src/lib/common/firestore/driver/driver.js +3 -0
- package/src/lib/common/firestore/driver/driver.js.map +1 -0
- package/src/lib/common/firestore/driver/index.d.ts +6 -0
- package/src/lib/common/firestore/driver/index.js +10 -0
- package/src/lib/common/firestore/driver/index.js.map +1 -0
- package/src/lib/common/firestore/driver/query.d.ts +31 -0
- package/src/lib/common/firestore/driver/query.handler.d.ts +9 -0
- package/src/lib/common/firestore/driver/query.handler.js +26 -0
- package/src/lib/common/firestore/driver/query.handler.js.map +1 -0
- package/src/lib/common/firestore/driver/query.js +3 -0
- package/src/lib/common/firestore/driver/query.js.map +1 -0
- package/src/lib/common/firestore/driver/transaction.d.ts +23 -0
- package/src/lib/common/firestore/driver/transaction.js +3 -0
- package/src/lib/common/firestore/driver/transaction.js.map +1 -0
- package/src/lib/common/firestore/index.d.ts +8 -0
- package/src/lib/common/firestore/index.js +12 -0
- package/src/lib/common/firestore/index.js.map +1 -0
- package/src/lib/common/firestore/query/accumulator.d.ts +24 -0
- package/src/lib/common/firestore/query/accumulator.js +22 -0
- package/src/lib/common/firestore/query/accumulator.js.map +1 -0
- package/src/lib/common/firestore/query/constraint.d.ts +112 -0
- package/src/lib/common/firestore/query/constraint.js +133 -0
- package/src/lib/common/firestore/query/constraint.js.map +1 -0
- package/src/lib/common/firestore/query/index.d.ts +6 -0
- package/src/lib/common/firestore/query/index.js +10 -0
- package/src/lib/common/firestore/query/index.js.map +1 -0
- package/src/lib/{firestore → common/firestore/query}/iterator.d.ts +37 -11
- package/src/lib/common/firestore/query/iterator.js +108 -0
- package/src/lib/common/firestore/query/iterator.js.map +1 -0
- package/src/lib/common/firestore/query/query.d.ts +49 -0
- package/src/lib/common/firestore/query/query.js +37 -0
- package/src/lib/common/firestore/query/query.js.map +1 -0
- package/src/lib/common/firestore/query/query.util.d.ts +16 -0
- package/src/lib/common/firestore/query/query.util.js +27 -0
- package/src/lib/common/firestore/query/query.util.js.map +1 -0
- package/src/lib/common/firestore/query/watcher.d.ts +34 -0
- package/src/lib/common/firestore/query/watcher.js +58 -0
- package/src/lib/common/firestore/query/watcher.js.map +1 -0
- package/src/lib/common/firestore/reference.d.ts +20 -0
- package/src/lib/{firestore → common/firestore}/reference.js +0 -0
- package/src/lib/common/firestore/reference.js.map +1 -0
- package/src/lib/common/firestore/snapshot/index.d.ts +2 -0
- package/src/lib/common/firestore/snapshot/index.js +6 -0
- package/src/lib/common/firestore/snapshot/index.js.map +1 -0
- package/src/lib/common/firestore/snapshot/snapshot.d.ts +13 -0
- package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +25 -0
- package/src/lib/common/firestore/snapshot/snapshot.field.js +57 -0
- package/src/lib/common/firestore/snapshot/snapshot.field.js.map +1 -0
- package/src/lib/common/firestore/snapshot/snapshot.js +35 -0
- package/src/lib/common/firestore/snapshot/snapshot.js.map +1 -0
- package/src/lib/common/firestore/types.d.ts +145 -0
- package/src/lib/common/firestore/types.js +23 -0
- package/src/lib/common/firestore/types.js.map +1 -0
- package/src/lib/common/function/action.d.ts +3 -0
- package/src/lib/common/function/action.js +3 -0
- package/src/lib/common/function/action.js.map +1 -0
- package/src/lib/common/function/index.d.ts +1 -0
- package/src/lib/common/function/index.js +5 -0
- package/src/lib/common/function/index.js.map +1 -0
- package/src/lib/common/index.d.ts +3 -0
- package/src/lib/common/index.js +7 -0
- package/src/lib/common/index.js.map +1 -0
- package/src/lib/index.d.ts +3 -1
- package/src/lib/index.js +3 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/model/index.d.ts +1 -0
- package/src/lib/model/index.js +5 -0
- package/src/lib/model/index.js.map +1 -0
- package/src/lib/model/user.d.ts +12 -0
- package/src/lib/model/user.js +3 -0
- package/src/lib/model/user.js.map +1 -0
- package/test/CHANGELOG.md +5 -0
- package/test/README.md +11 -0
- package/test/package.json +28 -0
- package/test/src/index.d.ts +1 -0
- package/test/src/index.js +5 -0
- package/test/src/index.js.map +1 -0
- package/test/src/lib/client/firestore.authorized.d.ts +5 -0
- package/{src/test/firebase.context.js → test/src/lib/client/firestore.authorized.js} +4 -4
- package/test/src/lib/client/firestore.authorized.js.map +1 -0
- package/test/src/lib/client/firestore.d.ts +39 -0
- package/test/src/lib/client/firestore.js +90 -0
- package/test/src/lib/client/firestore.js.map +1 -0
- package/test/src/lib/client/firestore.mock.item.fixture.authorized.d.ts +6 -0
- package/test/src/lib/client/firestore.mock.item.fixture.authorized.js +12 -0
- package/test/src/lib/client/firestore.mock.item.fixture.authorized.js.map +1 -0
- package/test/src/lib/client/index.d.ts +3 -0
- package/test/src/lib/client/index.js +7 -0
- package/test/src/lib/client/index.js.map +1 -0
- package/test/src/lib/common/firestore.d.ts +35 -0
- package/test/src/lib/common/firestore.js +50 -0
- package/test/src/lib/common/firestore.js.map +1 -0
- package/test/src/lib/common/firestore.mock.d.ts +14 -0
- package/test/src/lib/common/firestore.mock.item.d.ts +95 -0
- package/test/src/lib/common/firestore.mock.item.fixture.d.ts +21 -0
- package/test/src/lib/common/firestore.mock.item.fixture.js +43 -0
- package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -0
- package/test/src/lib/common/firestore.mock.item.js +138 -0
- package/test/src/lib/common/firestore.mock.item.js.map +1 -0
- package/test/src/lib/common/firestore.mock.item.query.d.ts +3 -0
- package/test/src/lib/common/firestore.mock.item.query.js +13 -0
- package/test/src/lib/common/firestore.mock.item.query.js.map +1 -0
- package/test/src/lib/common/firestore.mock.js +29 -0
- package/test/src/lib/common/firestore.mock.js.map +1 -0
- package/test/src/lib/common/index.d.ts +8 -0
- package/test/src/lib/common/index.js +12 -0
- package/test/src/lib/common/index.js.map +1 -0
- package/test/src/lib/common/test.driver.accessor.d.ts +17 -0
- package/test/src/lib/common/test.driver.accessor.js +278 -0
- package/test/src/lib/common/test.driver.accessor.js.map +1 -0
- package/test/src/lib/common/test.driver.query.d.ts +7 -0
- package/test/src/lib/common/test.driver.query.js +189 -0
- package/test/src/lib/common/test.driver.query.js.map +1 -0
- package/test/src/lib/common/test.iterator.d.ts +7 -0
- package/test/src/lib/common/test.iterator.js +222 -0
- package/test/src/lib/common/test.iterator.js.map +1 -0
- package/test/src/lib/index.d.ts +2 -0
- package/test/src/lib/index.js +6 -0
- package/test/src/lib/index.js.map +1 -0
- package/src/lib/firestore/accessor.batch.d.ts +0 -23
- package/src/lib/firestore/accessor.batch.js.map +0 -1
- package/src/lib/firestore/accessor.d.ts +0 -62
- package/src/lib/firestore/accessor.default.js.map +0 -1
- package/src/lib/firestore/accessor.js.map +0 -1
- package/src/lib/firestore/accessor.transaction.d.ts +0 -23
- package/src/lib/firestore/accessor.transaction.js.map +0 -1
- package/src/lib/firestore/context.batch.d.ts +0 -9
- package/src/lib/firestore/context.batch.js +0 -19
- package/src/lib/firestore/context.batch.js.map +0 -1
- package/src/lib/firestore/context.default.d.ts +0 -2
- package/src/lib/firestore/context.default.js +0 -13
- package/src/lib/firestore/context.default.js.map +0 -1
- package/src/lib/firestore/context.js.map +0 -1
- package/src/lib/firestore/context.transaction.d.ts +0 -9
- package/src/lib/firestore/context.transaction.js +0 -19
- package/src/lib/firestore/context.transaction.js.map +0 -1
- package/src/lib/firestore/document.d.ts +0 -69
- package/src/lib/firestore/document.js +0 -49
- package/src/lib/firestore/document.js.map +0 -1
- package/src/lib/firestore/firestore.d.ts +0 -29
- package/src/lib/firestore/firestore.js +0 -37
- package/src/lib/firestore/firestore.js.map +0 -1
- package/src/lib/firestore/index.js +0 -16
- package/src/lib/firestore/index.js.map +0 -1
- package/src/lib/firestore/iterator.js +0 -91
- package/src/lib/firestore/iterator.js.map +0 -1
- package/src/lib/firestore/reference.d.ts +0 -13
- package/src/lib/firestore/reference.js.map +0 -1
- package/src/test/firebase.context.d.ts +0 -5
- package/src/test/firebase.context.item.d.ts +0 -41
- package/src/test/firebase.context.item.js +0 -75
- package/src/test/firebase.context.item.js.map +0 -1
- package/src/test/firebase.context.js.map +0 -1
- package/src/test/firebase.d.ts +0 -29
- package/src/test/firebase.js +0 -67
- package/src/test/firebase.js.map +0 -1
- package/src/test/index.d.ts +0 -3
- package/src/test/index.js +0 -7
- package/src/test/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/driver/query.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Firestore, Transaction, ReadOnlyTransactionOptions, ReadWriteTransactionOptions } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Function that runs in a transaction context and returns a value.
|
|
4
|
+
*/
|
|
5
|
+
export declare type TransactionFunction<T = any> = (transaction: Transaction) => Promise<T>;
|
|
6
|
+
/**
|
|
7
|
+
* Factory for running transactions. Creates a new Transaction, runs it with the input TransactionFunction, and returns the result.
|
|
8
|
+
*/
|
|
9
|
+
export declare type RunTransaction = <T>(fn: TransactionFunction<T>, options?: RunTransactionParams) => Promise<T>;
|
|
10
|
+
export declare type RunTransactionParams = ReadOnlyTransactionOptions | ReadWriteTransactionOptions;
|
|
11
|
+
/**
|
|
12
|
+
* Factory for making a RunTransactionFunction for the input Firestore.
|
|
13
|
+
*/
|
|
14
|
+
export declare type RunTransactionForFirestoreFactory = (firestore: Firestore) => RunTransaction;
|
|
15
|
+
export interface RunTransactionFactoryReference {
|
|
16
|
+
readonly runTransaction: RunTransaction;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Driver for prividing a RunTransactionForFirestoreFactory
|
|
20
|
+
*/
|
|
21
|
+
export interface FirestoreTransactionFactoryDriver {
|
|
22
|
+
readonly transactionFactoryForFirestore: RunTransactionForFirestoreFactory;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/driver/transaction.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./accessor"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./snapshot"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./query"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./context"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./driver"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./collection"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./types"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./reference"), exports);
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/src/lib/common/firestore/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,qDAA2B;AAC3B,kDAAwB;AACxB,oDAA0B;AAC1B,mDAAyB;AACzB,uDAA6B;AAC7B,kDAAwB;AACxB,sDAA4B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ItemAccumulatorInstance, ItemAccumulatorMapFunction, PageItemIteration } from "@dereekb/rxjs";
|
|
2
|
+
import { MapFunction } from "@dereekb/util";
|
|
3
|
+
import { DocumentDataWithId, QueryDocumentSnapshotArray } from "../types";
|
|
4
|
+
import { FirestoreItemPageIterationInstance } from "./iterator";
|
|
5
|
+
export declare type MappedFirebaseQuerySnapshotAccumulator<O, T> = ItemAccumulatorInstance<O, QueryDocumentSnapshotArray<T>, PageItemIteration<QueryDocumentSnapshotArray<T>>>;
|
|
6
|
+
export declare type FirebaseQuerySnapshotAccumulator<T> = MappedFirebaseQuerySnapshotAccumulator<QueryDocumentSnapshotArray<T>, T>;
|
|
7
|
+
/**
|
|
8
|
+
* Mapped accumulator for QueryDocumentSnapshotArray values that returns the DocumentDataWithId values for the items returned in the query.
|
|
9
|
+
*/
|
|
10
|
+
export declare type FirebaseQueryItemAccumulator<T> = MappedFirebaseQuerySnapshotAccumulator<DocumentDataWithId<T>[], T>;
|
|
11
|
+
/**
|
|
12
|
+
* Wrapper for itemAccumulator that has typings for a FirestoreItemPageIterationInstance. Can optionally map the snapshots to another type.
|
|
13
|
+
*
|
|
14
|
+
* @param iteration
|
|
15
|
+
*/
|
|
16
|
+
export declare function firebaseQuerySnapshotAccumulator<O, T>(iteration: FirestoreItemPageIterationInstance<T>): FirebaseQuerySnapshotAccumulator<T>;
|
|
17
|
+
export declare function firebaseQuerySnapshotAccumulator<O, T>(iteration: FirestoreItemPageIterationInstance<T>, mapSnapshots?: ItemAccumulatorMapFunction<O, QueryDocumentSnapshotArray<T>>): MappedFirebaseQuerySnapshotAccumulator<O, T>;
|
|
18
|
+
/**
|
|
19
|
+
* Convenience function for creating a FirebaseQueryItemAccumulator
|
|
20
|
+
*
|
|
21
|
+
* @param iteration
|
|
22
|
+
*/
|
|
23
|
+
export declare function firebaseQueryItemAccumulator<T>(iteration: FirestoreItemPageIterationInstance<T>): FirebaseQueryItemAccumulator<T>;
|
|
24
|
+
export declare function firebaseQueryItemAccumulator<U, T>(iteration: FirestoreItemPageIterationInstance<T>, mapItem?: MapFunction<DocumentDataWithId<T>, U>): MappedFirebaseQuerySnapshotAccumulator<U[], T>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.firebaseQueryItemAccumulator = exports.firebaseQuerySnapshotAccumulator = void 0;
|
|
4
|
+
const rxjs_1 = require("@dereekb/rxjs");
|
|
5
|
+
function firebaseQuerySnapshotAccumulator(iteration, mapSnapshots) {
|
|
6
|
+
return (0, rxjs_1.itemAccumulator)(iteration, mapSnapshots);
|
|
7
|
+
}
|
|
8
|
+
exports.firebaseQuerySnapshotAccumulator = firebaseQuerySnapshotAccumulator;
|
|
9
|
+
function firebaseQueryItemAccumulator(iteration, mapItem) {
|
|
10
|
+
mapItem = mapItem !== null && mapItem !== void 0 ? mapItem : ((x) => x);
|
|
11
|
+
const mapFn = (x) => {
|
|
12
|
+
const result = x.map(y => {
|
|
13
|
+
const data = y.data();
|
|
14
|
+
data.id = y.id;
|
|
15
|
+
return mapItem(data);
|
|
16
|
+
});
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
return firebaseQuerySnapshotAccumulator(iteration, mapFn);
|
|
20
|
+
}
|
|
21
|
+
exports.firebaseQueryItemAccumulator = firebaseQueryItemAccumulator;
|
|
22
|
+
//# sourceMappingURL=accumulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accumulator.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/accumulator.ts"],"names":[],"mappings":";;;AAAA,wCAAwH;AAoBxH,SAAgB,gCAAgC,CAAO,SAAgD,EAAE,YAA2E;IAClL,OAAO,IAAA,sBAAe,EAAqF,SAAS,EAAE,YAAY,CAAC,CAAC;AACtI,CAAC;AAFD,4EAEC;AASD,SAAgB,4BAA4B,CAAO,SAAgD,EAAE,OAA+C;IAClJ,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAK,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,CAAsD,CAAC;IAE7G,MAAM,KAAK,GAAmE,CAAC,CAAgC,EAAE,EAAE;QACjH,MAAM,MAAM,GAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAA2B,CAAC;YAC/C,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,OAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,gCAAgC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC;AAdD,oEAcC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ArrayOrValue, SeparateResult } from '@dereekb/util';
|
|
2
|
+
import { SortingOrder, Maybe, ObjectMap } from '@dereekb/util';
|
|
3
|
+
import { DocumentSnapshot, DocumentData, FieldPath } from '../types';
|
|
4
|
+
export declare type FirestoreQueryConstraintType = string;
|
|
5
|
+
/**
|
|
6
|
+
* A constraint. Used by drivers to apply native firebase query constraints.
|
|
7
|
+
*/
|
|
8
|
+
export interface FirestoreQueryConstraint<T = any> {
|
|
9
|
+
type: FirestoreQueryConstraintType;
|
|
10
|
+
data: T;
|
|
11
|
+
}
|
|
12
|
+
export declare function firestoreQueryConstraint<T>(type: string, data: T): FirestoreQueryConstraint<T>;
|
|
13
|
+
export declare function firestoreQueryConstraintFactory(type: string): <T>(data: T) => FirestoreQueryConstraint<T>;
|
|
14
|
+
export declare const FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE = "limit";
|
|
15
|
+
export interface LimitQueryConstraintData {
|
|
16
|
+
limit: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Limits the maximum number of documents to return.
|
|
20
|
+
*
|
|
21
|
+
* @param limit
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
export declare function limit(limit: number): FirestoreQueryConstraint<LimitQueryConstraintData>;
|
|
25
|
+
export declare const FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE = "limit_to_last";
|
|
26
|
+
export interface LimitToLastQueryConstraintData {
|
|
27
|
+
limit: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns the last matching documents in the query, up to the limit.
|
|
31
|
+
*
|
|
32
|
+
* Does not work with queries with streamed results.
|
|
33
|
+
*/
|
|
34
|
+
export declare function limitToLast(limit: number): FirestoreQueryConstraint<LimitToLastQueryConstraintData>;
|
|
35
|
+
export declare const FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE = "offset";
|
|
36
|
+
export interface OffsetQueryConstraintData {
|
|
37
|
+
offset: number;
|
|
38
|
+
}
|
|
39
|
+
export declare function offset(offset: number): FirestoreQueryConstraint<OffsetQueryConstraintData>;
|
|
40
|
+
export declare const FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE = "where";
|
|
41
|
+
export declare type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
|
|
42
|
+
export interface WhereQueryConstraintData {
|
|
43
|
+
fieldPath: string | FieldPath;
|
|
44
|
+
opStr: WhereFilterOp;
|
|
45
|
+
value: unknown;
|
|
46
|
+
}
|
|
47
|
+
export declare function where<T>(fieldPath: keyof T, opStr: WhereFilterOp, value: unknown): FirestoreQueryConstraint<WhereQueryConstraintData>;
|
|
48
|
+
export declare function where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: unknown): FirestoreQueryConstraint<WhereQueryConstraintData>;
|
|
49
|
+
export declare const FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE = "order_by";
|
|
50
|
+
export declare type OrderByDirection = SortingOrder;
|
|
51
|
+
export interface OrderByQueryConstraintData {
|
|
52
|
+
fieldPath: string | FieldPath;
|
|
53
|
+
directionStr?: OrderByDirection;
|
|
54
|
+
}
|
|
55
|
+
export declare function orderBy(fieldPath: string | FieldPath, directionStr?: OrderByDirection): FirestoreQueryConstraint<OrderByQueryConstraintData>;
|
|
56
|
+
export declare const FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE = "start_at";
|
|
57
|
+
export interface StartAtQueryConstraintData<T = DocumentData> {
|
|
58
|
+
snapshot: DocumentSnapshot<T>;
|
|
59
|
+
}
|
|
60
|
+
export declare function startAt<T = DocumentData>(snapshot: DocumentSnapshot<T>): FirestoreQueryConstraint<StartAtQueryConstraintData<T>>;
|
|
61
|
+
export declare const FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE = "start_after";
|
|
62
|
+
export interface StartAfterQueryConstraintData<T = DocumentData> {
|
|
63
|
+
snapshot: DocumentSnapshot<T>;
|
|
64
|
+
}
|
|
65
|
+
export declare function startAfter<T = DocumentData>(snapshot: DocumentSnapshot<T>): FirestoreQueryConstraint<StartAfterQueryConstraintData<T>>;
|
|
66
|
+
export declare const FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE = "end_at";
|
|
67
|
+
export interface EndAtQueryConstraintData<T = DocumentData> {
|
|
68
|
+
snapshot: DocumentSnapshot<T>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @param snapshot
|
|
73
|
+
* @returns
|
|
74
|
+
*/
|
|
75
|
+
export declare function endAt<T = DocumentData>(snapshot: DocumentSnapshot<T>): FirestoreQueryConstraint<EndAtQueryConstraintData<T>>;
|
|
76
|
+
export declare const FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE = "end_before";
|
|
77
|
+
export interface EndBeforeQueryConstraintData<T = DocumentData> {
|
|
78
|
+
snapshot: DocumentSnapshot<T>;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
*
|
|
82
|
+
* @param snapshot
|
|
83
|
+
* @returns
|
|
84
|
+
*/
|
|
85
|
+
export declare function endBefore<T = DocumentData>(snapshot: DocumentSnapshot<T>): FirestoreQueryConstraint<EndBeforeQueryConstraintData<T>>;
|
|
86
|
+
/**
|
|
87
|
+
* Updates the input builder with the passed constraint value.
|
|
88
|
+
*/
|
|
89
|
+
export declare type FirestoreQueryConstraintHandlerFunction<B, D = any> = (builder: B, data: D, constraint: FirestoreQueryConstraint<D>) => B;
|
|
90
|
+
export declare type FirestoreQueryConstraintHandlerMap<B> = ObjectMap<Maybe<FirestoreQueryConstraintHandlerFunction<B>>>;
|
|
91
|
+
export declare type FullFirestoreQueryConstraintDataMapping = {
|
|
92
|
+
[FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE]: LimitQueryConstraintData;
|
|
93
|
+
[FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE]: LimitToLastQueryConstraintData;
|
|
94
|
+
[FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE]: WhereQueryConstraintData;
|
|
95
|
+
[FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE]: OffsetQueryConstraintData;
|
|
96
|
+
[FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE]: OrderByQueryConstraintData;
|
|
97
|
+
[FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE]: StartAtQueryConstraintData;
|
|
98
|
+
[FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE]: StartAfterQueryConstraintData;
|
|
99
|
+
[FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE]: EndAtQueryConstraintData;
|
|
100
|
+
[FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE]: EndBeforeQueryConstraintData;
|
|
101
|
+
};
|
|
102
|
+
export declare type FullFirestoreQueryConstraintMapping = {
|
|
103
|
+
[K in keyof FullFirestoreQueryConstraintDataMapping]: FirestoreQueryConstraint<FullFirestoreQueryConstraintDataMapping[K]>;
|
|
104
|
+
};
|
|
105
|
+
export declare type FullFirestoreQueryConstraintHandlersMapping<B> = {
|
|
106
|
+
[K in keyof FullFirestoreQueryConstraintMapping]: Maybe<FirestoreQueryConstraintHandlerFunction<B, FullFirestoreQueryConstraintDataMapping[K]>>;
|
|
107
|
+
};
|
|
108
|
+
export declare function addOrReplaceLimitInConstraints(limit: number, addedLimitType?: (typeof FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE | typeof FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE)): (constraints: FirestoreQueryConstraint[]) => FirestoreQueryConstraint[];
|
|
109
|
+
export declare type FirestoreQueryConstraintMapFunction = (constraints: FirestoreQueryConstraint[]) => FirestoreQueryConstraint[];
|
|
110
|
+
export declare function filterConstraintsOfType(...types: FirestoreQueryConstraintType[]): FirestoreQueryConstraintMapFunction;
|
|
111
|
+
export declare function replaceConstraints(replaceFn: (constraints: FirestoreQueryConstraint[]) => Maybe<ArrayOrValue<FirestoreQueryConstraint>>, types: FirestoreQueryConstraintType[]): (constraints: FirestoreQueryConstraint[]) => FirestoreQueryConstraint[];
|
|
112
|
+
export declare function separateConstraints(...types: FirestoreQueryConstraintType[]): (constraints: FirestoreQueryConstraint[]) => SeparateResult<FirestoreQueryConstraint>;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.separateConstraints = exports.replaceConstraints = exports.filterConstraintsOfType = exports.addOrReplaceLimitInConstraints = exports.endBefore = exports.FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE = exports.endAt = exports.FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE = exports.startAfter = exports.FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE = exports.startAt = exports.FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE = exports.orderBy = exports.FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE = exports.where = exports.FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE = exports.offset = exports.FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE = exports.limitToLast = exports.FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE = exports.limit = exports.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE = exports.firestoreQueryConstraintFactory = exports.firestoreQueryConstraint = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
function firestoreQueryConstraint(type, data) {
|
|
6
|
+
return {
|
|
7
|
+
type,
|
|
8
|
+
data
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.firestoreQueryConstraint = firestoreQueryConstraint;
|
|
12
|
+
function firestoreQueryConstraintFactory(type) {
|
|
13
|
+
return (data) => firestoreQueryConstraint(type, data);
|
|
14
|
+
}
|
|
15
|
+
exports.firestoreQueryConstraintFactory = firestoreQueryConstraintFactory;
|
|
16
|
+
// MARK: Limit
|
|
17
|
+
exports.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE = 'limit';
|
|
18
|
+
/**
|
|
19
|
+
* Limits the maximum number of documents to return.
|
|
20
|
+
*
|
|
21
|
+
* @param limit
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
function limit(limit) {
|
|
25
|
+
return firestoreQueryConstraint(exports.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, { limit });
|
|
26
|
+
}
|
|
27
|
+
exports.limit = limit;
|
|
28
|
+
// MARK: Limit To Last
|
|
29
|
+
exports.FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE = 'limit_to_last';
|
|
30
|
+
/**
|
|
31
|
+
* Returns the last matching documents in the query, up to the limit.
|
|
32
|
+
*
|
|
33
|
+
* Does not work with queries with streamed results.
|
|
34
|
+
*/
|
|
35
|
+
function limitToLast(limit) {
|
|
36
|
+
return firestoreQueryConstraint(exports.FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, { limit });
|
|
37
|
+
}
|
|
38
|
+
exports.limitToLast = limitToLast;
|
|
39
|
+
// MARK: Offset
|
|
40
|
+
exports.FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE = 'offset';
|
|
41
|
+
function offset(offset) {
|
|
42
|
+
return firestoreQueryConstraint(exports.FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, { offset });
|
|
43
|
+
}
|
|
44
|
+
exports.offset = offset;
|
|
45
|
+
// MARK: Where
|
|
46
|
+
exports.FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE = 'where';
|
|
47
|
+
function where(fieldPath, opStr, value) {
|
|
48
|
+
return firestoreQueryConstraint(exports.FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, { fieldPath, opStr, value });
|
|
49
|
+
}
|
|
50
|
+
exports.where = where;
|
|
51
|
+
// MARK: OrderBy
|
|
52
|
+
exports.FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE = 'order_by';
|
|
53
|
+
function orderBy(fieldPath, directionStr) {
|
|
54
|
+
return firestoreQueryConstraint(exports.FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, { fieldPath, directionStr });
|
|
55
|
+
}
|
|
56
|
+
exports.orderBy = orderBy;
|
|
57
|
+
// MARK: Start At
|
|
58
|
+
exports.FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE = 'start_at';
|
|
59
|
+
function startAt(snapshot) {
|
|
60
|
+
return firestoreQueryConstraint(exports.FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, { snapshot });
|
|
61
|
+
}
|
|
62
|
+
exports.startAt = startAt;
|
|
63
|
+
// MARK: Start After
|
|
64
|
+
exports.FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE = 'start_after';
|
|
65
|
+
function startAfter(snapshot) {
|
|
66
|
+
return firestoreQueryConstraint(exports.FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, { snapshot });
|
|
67
|
+
}
|
|
68
|
+
exports.startAfter = startAfter;
|
|
69
|
+
// MARK: End At
|
|
70
|
+
exports.FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE = 'end_at';
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @param snapshot
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
function endAt(snapshot) {
|
|
77
|
+
return firestoreQueryConstraint(exports.FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, { snapshot });
|
|
78
|
+
}
|
|
79
|
+
exports.endAt = endAt;
|
|
80
|
+
// MARK: End Before
|
|
81
|
+
exports.FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE = 'end_before';
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param snapshot
|
|
85
|
+
* @returns
|
|
86
|
+
*/
|
|
87
|
+
function endBefore(snapshot) {
|
|
88
|
+
return firestoreQueryConstraint(exports.FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, { snapshot });
|
|
89
|
+
}
|
|
90
|
+
exports.endBefore = endBefore;
|
|
91
|
+
// MARK: Utils
|
|
92
|
+
function addOrReplaceLimitInConstraints(limit, addedLimitType = exports.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE) {
|
|
93
|
+
const replace = replaceConstraints((constraints) => {
|
|
94
|
+
let type;
|
|
95
|
+
if (constraints.length) {
|
|
96
|
+
type = constraints[0].type;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
type = addedLimitType;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
type,
|
|
103
|
+
data: {
|
|
104
|
+
limit
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}, [exports.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, exports.FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE]);
|
|
108
|
+
return replace;
|
|
109
|
+
}
|
|
110
|
+
exports.addOrReplaceLimitInConstraints = addOrReplaceLimitInConstraints;
|
|
111
|
+
function filterConstraintsOfType(...types) {
|
|
112
|
+
const typesToFilterOut = new Set(types);
|
|
113
|
+
return (constraints) => constraints.filter(x => !typesToFilterOut.has(x.type));
|
|
114
|
+
}
|
|
115
|
+
exports.filterConstraintsOfType = filterConstraintsOfType;
|
|
116
|
+
function replaceConstraints(replaceFn, types) {
|
|
117
|
+
const separateFn = separateConstraints(...types);
|
|
118
|
+
return (constraints) => {
|
|
119
|
+
const separated = separateFn(constraints);
|
|
120
|
+
const replacements = (0, util_1.asArray)(replaceFn(separated.excluded));
|
|
121
|
+
return (replacements) ? (0, util_1.mergeArrayOrValueIntoArray)(separated.included, replacements) : separated.included;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
exports.replaceConstraints = replaceConstraints;
|
|
125
|
+
function separateConstraints(...types) {
|
|
126
|
+
return (constraints) => {
|
|
127
|
+
const typesToFilterOut = new Set(types);
|
|
128
|
+
const separated = (0, util_1.separateValues)(constraints, (x) => !typesToFilterOut.has(x.type));
|
|
129
|
+
return separated;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
exports.separateConstraints = separateConstraints;
|
|
133
|
+
//# sourceMappingURL=constraint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/constraint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./accumulator"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./constraint"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./iterator"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./query"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./query.util"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./watcher"), exports);
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,uDAA6B;AAC7B,qDAA2B;AAC3B,kDAAwB;AACxB,uDAA6B;AAC7B,oDAA0B"}
|
|
@@ -1,29 +1,55 @@
|
|
|
1
|
-
import { PageLoadingState, ItemPageIterator, ItemPageIterationInstance, ItemPageIterationConfig, ItemPageIteratorDelegate, MappedPageItemIterationInstance } from '@dereekb/rxjs';
|
|
2
|
-
import {
|
|
3
|
-
import { Maybe } from '@dereekb/util';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { PageLoadingState, ItemPageIterator, ItemPageIterationInstance, ItemPageIterationConfig, ItemPageIteratorDelegate, MappedPageItemIterationInstance, ItemPageLimit } from '@dereekb/rxjs';
|
|
2
|
+
import { QueryDocumentSnapshotArray, QuerySnapshot, SnapshotListenOptions } from "../types";
|
|
3
|
+
import { Maybe, ArrayOrValue } from '@dereekb/util';
|
|
4
|
+
import { Observable } from "rxjs";
|
|
5
|
+
import { CollectionReferenceRef } from '../reference';
|
|
6
|
+
import { FirestoreQueryDriverRef } from '../driver/query';
|
|
7
|
+
import { FirestoreQueryConstraint } from './constraint';
|
|
8
|
+
export interface FirestoreItemPageIteratorFilter extends ItemPageLimit {
|
|
9
|
+
/**
|
|
10
|
+
* Overrides the default limit, if applicable.
|
|
11
|
+
*/
|
|
12
|
+
limit?: Maybe<number>;
|
|
13
|
+
/**
|
|
14
|
+
* Constraints to query on.
|
|
15
|
+
*/
|
|
16
|
+
constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;
|
|
7
17
|
}
|
|
8
|
-
export interface FirestoreItemPageIterationBaseConfig<T> extends
|
|
18
|
+
export interface FirestoreItemPageIterationBaseConfig<T> extends CollectionReferenceRef<T>, FirestoreQueryDriverRef, ItemPageLimit {
|
|
9
19
|
itemsPerPage: number;
|
|
10
20
|
}
|
|
11
21
|
export interface FirestoreItemPageIterationConfig<T> extends FirestoreItemPageIterationBaseConfig<T>, ItemPageIterationConfig<FirestoreItemPageIteratorFilter> {
|
|
12
22
|
}
|
|
13
23
|
export interface FirestoreItemPageQueryResult<T> {
|
|
24
|
+
/**
|
|
25
|
+
* Time the result was read at.
|
|
26
|
+
*/
|
|
27
|
+
readonly time: Date;
|
|
14
28
|
/**
|
|
15
29
|
* The relevant docs for this page result. This value will omit the cursor.
|
|
16
30
|
*/
|
|
17
|
-
docs:
|
|
31
|
+
readonly docs: QueryDocumentSnapshotArray<T>;
|
|
18
32
|
/**
|
|
19
33
|
* The raw snapshot returned from the query.
|
|
20
34
|
*/
|
|
21
|
-
snapshot: QuerySnapshot<T>;
|
|
35
|
+
readonly snapshot: QuerySnapshot<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Reloads these results as a snapshot.
|
|
38
|
+
*/
|
|
39
|
+
reload(): Promise<QuerySnapshot<T>>;
|
|
40
|
+
/**
|
|
41
|
+
* Streams these results.
|
|
42
|
+
*/
|
|
43
|
+
stream(options?: FirestoreItemPageQueryResultStreamOptions<T>): Observable<QuerySnapshot<T>>;
|
|
44
|
+
}
|
|
45
|
+
export interface FirestoreItemPageQueryResultStreamOptions<T> {
|
|
46
|
+
options?: Maybe<SnapshotListenOptions>;
|
|
22
47
|
}
|
|
23
48
|
export declare type FirestoreItemPageIteratorDelegate<T> = ItemPageIteratorDelegate<FirestoreItemPageQueryResult<T>, FirestoreItemPageIteratorFilter, FirestoreItemPageIterationConfig<T>>;
|
|
24
49
|
export declare type InternalFirestoreItemPageIterationInstance<T> = ItemPageIterationInstance<FirestoreItemPageQueryResult<T>, FirestoreItemPageIteratorFilter, FirestoreItemPageIterationConfig<T>>;
|
|
50
|
+
export declare function filterDisallowedFirestoreItemPageIteratorInputContraints(constraints: FirestoreQueryConstraint[]): FirestoreQueryConstraint[];
|
|
25
51
|
export declare function makeFirestoreItemPageIteratorDelegate<T>(): FirestoreItemPageIteratorDelegate<T>;
|
|
26
|
-
export declare class FirestoreItemPageIterationInstance<T> extends MappedPageItemIterationInstance<
|
|
52
|
+
export declare class FirestoreItemPageIterationInstance<T> extends MappedPageItemIterationInstance<QueryDocumentSnapshotArray<T>, FirestoreItemPageQueryResult<T>, PageLoadingState<QueryDocumentSnapshotArray<T>>, PageLoadingState<FirestoreItemPageQueryResult<T>>, InternalFirestoreItemPageIterationInstance<T>> {
|
|
27
53
|
constructor(snapshotIteration: InternalFirestoreItemPageIterationInstance<T>);
|
|
28
54
|
get snapshotIteration(): InternalFirestoreItemPageIterationInstance<T>;
|
|
29
55
|
}
|
|
@@ -31,7 +57,7 @@ export declare class FirestoreItemPageIterationInstance<T> extends MappedPageIte
|
|
|
31
57
|
* FirestoreItemPageIteration factory.
|
|
32
58
|
*/
|
|
33
59
|
export interface FirestoreItemPageIterationFactory<T> {
|
|
34
|
-
firestoreIteration
|
|
60
|
+
readonly firestoreIteration: FirestoreItemPageIterationFactoryFunction<T>;
|
|
35
61
|
}
|
|
36
62
|
/**
|
|
37
63
|
* Function that creates a FirestoreItemPageIterationInstance from the input filter.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.firestoreItemPageIteration = exports.FIRESTORE_ITEM_PAGE_ITERATOR = exports.FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE = exports.firestoreItemPageIterationFactory = exports.FirestoreItemPageIterationInstance = exports.makeFirestoreItemPageIteratorDelegate = exports.filterDisallowedFirestoreItemPageIteratorInputContraints = void 0;
|
|
4
|
+
const rxjs_1 = require("@dereekb/rxjs");
|
|
5
|
+
const util_1 = require("@dereekb/util");
|
|
6
|
+
const rxjs_2 = require("rxjs");
|
|
7
|
+
const constraint_1 = require("./constraint");
|
|
8
|
+
function filterDisallowedFirestoreItemPageIteratorInputContraints(constraints) {
|
|
9
|
+
const isIllegal = new Set([constraint_1.FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE]);
|
|
10
|
+
return constraints.filter(x => !isIllegal.has(x.type));
|
|
11
|
+
}
|
|
12
|
+
exports.filterDisallowedFirestoreItemPageIteratorInputContraints = filterDisallowedFirestoreItemPageIteratorInputContraints;
|
|
13
|
+
function makeFirestoreItemPageIteratorDelegate() {
|
|
14
|
+
return {
|
|
15
|
+
loadItemsForPage: (request) => {
|
|
16
|
+
const { page, iteratorConfig } = request;
|
|
17
|
+
const prevQueryResult$ = (page > 0) ? request.lastItem$ : (0, rxjs_2.of)(undefined);
|
|
18
|
+
const { collection, itemsPerPage, filter, firestoreQueryDriver: driver } = iteratorConfig;
|
|
19
|
+
const { limit: filterLimit, constraints: filterConstraints } = filter !== null && filter !== void 0 ? filter : {};
|
|
20
|
+
return prevQueryResult$.pipe((0, rxjs_2.exhaustMap)((prevResult) => {
|
|
21
|
+
if ((prevResult === null || prevResult === void 0 ? void 0 : prevResult.snapshot.empty) === true) { // TODO: Shouldn't happen. Remove this later.
|
|
22
|
+
return (0, rxjs_2.of)({ end: true });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const constraints = [];
|
|
26
|
+
// Add filter constraints
|
|
27
|
+
if (filterConstraints != null) {
|
|
28
|
+
(0, util_1.mergeIntoArray)(constraints, filterDisallowedFirestoreItemPageIteratorInputContraints((0, util_1.asArray)(filterConstraints)));
|
|
29
|
+
}
|
|
30
|
+
// Add cursor
|
|
31
|
+
const cursorDocument = (prevResult) ? (0, util_1.lastValue)(prevResult.docs) : undefined;
|
|
32
|
+
const startAfterFilter = (cursorDocument) ? (0, constraint_1.startAfter)(cursorDocument) : undefined;
|
|
33
|
+
if (startAfterFilter) {
|
|
34
|
+
constraints.push(startAfterFilter);
|
|
35
|
+
}
|
|
36
|
+
// Add Limit
|
|
37
|
+
const limitCount = filterLimit !== null && filterLimit !== void 0 ? filterLimit : itemsPerPage + ((startAfterFilter) ? 1 : 0); // todo: may not be needed.
|
|
38
|
+
const limitConstraint = (0, constraint_1.limit)(limitCount);
|
|
39
|
+
const constraintsWithLimit = [...constraints, limitConstraint];
|
|
40
|
+
// make query
|
|
41
|
+
const batchQuery = driver.query(collection, ...constraintsWithLimit);
|
|
42
|
+
const resultPromise = driver.getDocs(batchQuery).then((snapshot) => {
|
|
43
|
+
const time = new Date();
|
|
44
|
+
const docs = snapshot.docs;
|
|
45
|
+
const result = {
|
|
46
|
+
value: {
|
|
47
|
+
time,
|
|
48
|
+
docs,
|
|
49
|
+
snapshot,
|
|
50
|
+
reload() {
|
|
51
|
+
return driver.getDocs(batchQuery);
|
|
52
|
+
},
|
|
53
|
+
stream(options) {
|
|
54
|
+
// todo: consider allowing limit to be changed here to stream a subset. This will be useful for detecting collection changes.
|
|
55
|
+
return driver.streamDocs(batchQuery, options === null || options === void 0 ? void 0 : options.options);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
end: snapshot.empty
|
|
59
|
+
};
|
|
60
|
+
return result;
|
|
61
|
+
});
|
|
62
|
+
return (0, rxjs_2.from)(resultPromise);
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
exports.makeFirestoreItemPageIteratorDelegate = makeFirestoreItemPageIteratorDelegate;
|
|
69
|
+
class FirestoreItemPageIterationInstance extends rxjs_1.MappedPageItemIterationInstance {
|
|
70
|
+
constructor(snapshotIteration) {
|
|
71
|
+
super(snapshotIteration, {
|
|
72
|
+
forwardDestroy: true,
|
|
73
|
+
mapValue: (x) => x.docs
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
get snapshotIteration() {
|
|
77
|
+
return this.itemIterator;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.FirestoreItemPageIterationInstance = FirestoreItemPageIterationInstance;
|
|
81
|
+
/**
|
|
82
|
+
* Creates a new factory function that can build FirestoreItemPageIterationInstance values from just the input filter.
|
|
83
|
+
*
|
|
84
|
+
* @param baseConfig
|
|
85
|
+
* @returns FirestoreItemPageIterationInstance
|
|
86
|
+
*/
|
|
87
|
+
function firestoreItemPageIterationFactory(baseConfig) {
|
|
88
|
+
return (filter) => {
|
|
89
|
+
var _a;
|
|
90
|
+
const result = firestoreItemPageIteration({
|
|
91
|
+
collection: baseConfig.collection,
|
|
92
|
+
itemsPerPage: baseConfig.itemsPerPage,
|
|
93
|
+
firestoreQueryDriver: baseConfig.firestoreQueryDriver,
|
|
94
|
+
maxPageLoadLimit: (_a = filter === null || filter === void 0 ? void 0 : filter.maxPageLoadLimit) !== null && _a !== void 0 ? _a : baseConfig.maxPageLoadLimit,
|
|
95
|
+
filter
|
|
96
|
+
});
|
|
97
|
+
return result;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
exports.firestoreItemPageIterationFactory = firestoreItemPageIterationFactory;
|
|
101
|
+
exports.FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE = makeFirestoreItemPageIteratorDelegate();
|
|
102
|
+
exports.FIRESTORE_ITEM_PAGE_ITERATOR = new rxjs_1.ItemPageIterator(exports.FIRESTORE_ITEM_PAGE_ITERATOR_DELEGATE);
|
|
103
|
+
function firestoreItemPageIteration(config) {
|
|
104
|
+
const iterator = exports.FIRESTORE_ITEM_PAGE_ITERATOR.instance(config);
|
|
105
|
+
return new FirestoreItemPageIterationInstance(iterator);
|
|
106
|
+
}
|
|
107
|
+
exports.firestoreItemPageIteration = firestoreItemPageIteration;
|
|
108
|
+
//# sourceMappingURL=iterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterator.js","sourceRoot":"","sources":["../../../../../../../../packages/firebase/src/lib/common/firestore/query/iterator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { ArrayOrValue, Maybe } from "@dereekb/util";
|
|
3
|
+
import { CollectionReferenceRef } from "../reference";
|
|
4
|
+
import { Query, QueryDocumentSnapshot, QuerySnapshot, Transaction } from "../types";
|
|
5
|
+
import { FirestoreQueryConstraint } from "./constraint";
|
|
6
|
+
import { FirestoreQueryDriverRef } from '../driver/query';
|
|
7
|
+
export interface FirestoreExecutableQueryGetDocsContext {
|
|
8
|
+
readonly transaction?: Transaction;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Immutable wrapper of a query and a way to retrieve the docs.
|
|
12
|
+
*/
|
|
13
|
+
export interface FirestoreExecutableQuery<T> {
|
|
14
|
+
readonly query: Query<T>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the first/single document.
|
|
17
|
+
*/
|
|
18
|
+
getFirstDoc(transaction?: Transaction): Promise<Maybe<QueryDocumentSnapshot<T>>>;
|
|
19
|
+
/**
|
|
20
|
+
* Returns the results in a Promise.
|
|
21
|
+
*/
|
|
22
|
+
getDocs(transaction?: Transaction): Promise<QuerySnapshot<T>>;
|
|
23
|
+
/**
|
|
24
|
+
* Streams the results as an Observable.
|
|
25
|
+
*/
|
|
26
|
+
streamDocs(): Observable<QuerySnapshot<T>>;
|
|
27
|
+
/**
|
|
28
|
+
* Extend this query by adding additional filters.
|
|
29
|
+
*
|
|
30
|
+
* @param queryConstraints
|
|
31
|
+
*/
|
|
32
|
+
filter(...queryConstraints: ArrayOrValue<FirestoreQueryConstraint>[]): FirestoreExecutableQuery<T>;
|
|
33
|
+
}
|
|
34
|
+
export declare type FirestoreQueryFactoryFunction<T> = (...queryConstraints: ArrayOrValue<FirestoreQueryConstraint>[]) => FirestoreExecutableQuery<T>;
|
|
35
|
+
export interface FirestoreQueryFactory<T> {
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new FirestoreExecutableQuery from the input constraints.
|
|
38
|
+
*/
|
|
39
|
+
readonly query: FirestoreQueryFactoryFunction<T>;
|
|
40
|
+
}
|
|
41
|
+
export interface FirestoreQueryConfig<T> extends FirestoreQueryDriverRef, CollectionReferenceRef<T> {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Creates a FirestoreCollectionQuery.
|
|
45
|
+
*
|
|
46
|
+
* @param config
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
export declare function firestoreQueryFactory<T>(config: FirestoreQueryConfig<T>): FirestoreQueryFactory<T>;
|