@nx-ddd/firestore-angular-adapter 16.1.0 → 16.2.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/esm2022/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export * from './';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2ZpcmVzdG9yZS1hbmd1bGFyLWFkYXB0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi8nO1xuIl19
1
+ export * from './lib';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2ZpcmVzdG9yZS1hbmd1bGFyLWFkYXB0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWInO1xuIl19
@@ -0,0 +1,117 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Injectable } from '@nx-ddd/core';
3
+ import { doc, collection, collectionGroup, Timestamp, setDoc, getDoc, deleteDoc, getDocs, onSnapshot, updateDoc, Firestore, runTransaction, writeBatch, limit, orderBy, query, where, documentId, FieldValue, serverTimestamp } from '@angular/fire/firestore';
4
+ import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
5
+ import dayjs from 'dayjs';
6
+ import { Observable, map } from 'rxjs';
7
+ import { inject, InjectionToken } from '@angular/core';
8
+ function asObservable(ref, _onSnapshot) {
9
+ return new Observable((observer) => _onSnapshot(ref, value => observer.next(value), error => observer.error(error), () => observer.complete()));
10
+ }
11
+ export const FIREBASE_ADAPTER = new InjectionToken('ANGULAR_FIRESTORE_ADAPTER');
12
+ export function provideFirestoreAdapter(firestoreFactory = () => inject(Firestore)) {
13
+ return [
14
+ {
15
+ provide: FIREBASE_ADAPTER,
16
+ useFactory: () => new AngularFirestoreAdapter(firestoreFactory()),
17
+ },
18
+ ];
19
+ }
20
+ export let AngularFirestoreAdapter = class AngularFirestoreAdapter extends FirestoreAdapter {
21
+ constructor(firestore) {
22
+ super();
23
+ this.firestore = firestore;
24
+ }
25
+ get FieldValue() {
26
+ return Object.assign(FieldValue, { serverTimestamp });
27
+ }
28
+ get Timestamp() {
29
+ return Timestamp;
30
+ }
31
+ get FieldPath() {
32
+ return {
33
+ documentId: () => documentId(),
34
+ };
35
+ }
36
+ isTimestamp(v) {
37
+ return v instanceof Timestamp;
38
+ }
39
+ isFieldValue(v) {
40
+ return v instanceof this.FieldValue;
41
+ }
42
+ isDate(v) {
43
+ return dayjs.isDayjs(v);
44
+ }
45
+ convertDateToTimestamp(date) {
46
+ return Timestamp.fromDate(date.toDate());
47
+ }
48
+ convertTimestampToDate(timestamp) {
49
+ return dayjs(timestamp.toDate());
50
+ }
51
+ doc(path) {
52
+ const docRef = doc(this.firestore, path);
53
+ return {
54
+ __ref: docRef,
55
+ exists: () => getDoc(docRef).then(snapshot => snapshot.exists()),
56
+ set: (data) => setDoc(docRef, data),
57
+ get: () => getDoc(docRef),
58
+ update: (data) => updateDoc(docRef, data),
59
+ delete: () => deleteDoc(docRef),
60
+ stateChanges: () => {
61
+ return new Observable((observer) => {
62
+ return onSnapshot(docRef, value => observer.next(value), error => observer.error(error), () => observer.complete());
63
+ }).pipe(map((snapshot) => ({ id: snapshot.id, ref: snapshot.ref, data: () => snapshot.data() })));
64
+ },
65
+ };
66
+ }
67
+ collection(path) {
68
+ const ref = collection(this.firestore, path);
69
+ return {
70
+ __ref: ref,
71
+ stateChanges: () => asObservable(ref, onSnapshot).pipe(map((snapshot) => snapshot.docChanges().map(change => ({
72
+ type: change.type, payload: { doc: change.doc },
73
+ })))),
74
+ get: () => getDocs(ref),
75
+ };
76
+ }
77
+ collectionGroup(collectionId) {
78
+ const ref = collectionGroup(this.firestore, collectionId);
79
+ return {
80
+ __ref: ref,
81
+ stateChanges: () => asObservable(ref, onSnapshot).pipe(map((snapshot) => snapshot.docChanges().map(change => ({
82
+ type: change.type, payload: { doc: change.doc },
83
+ })))),
84
+ get: () => getDocs(ref),
85
+ };
86
+ }
87
+ runTransaction(fn) {
88
+ return runTransaction(this.firestore, fn);
89
+ }
90
+ query(collection, ...queryFnArray) {
91
+ const ref = query(collection.__ref, ...queryFnArray.map(queryFn => queryFn()));
92
+ return {
93
+ __ref: ref,
94
+ stateChanges: () => asObservable(ref, onSnapshot).pipe(map((snapshot) => snapshot.docChanges().map(change => ({
95
+ type: change.type, payload: { doc: change.doc },
96
+ })))),
97
+ get: () => getDocs(ref),
98
+ };
99
+ }
100
+ where(fieldPath, opStr, value) {
101
+ return () => where(fieldPath, opStr, value);
102
+ }
103
+ orderBy(key, order = 'asc') {
104
+ return () => orderBy(key, order);
105
+ }
106
+ limit(n) {
107
+ return () => limit(n);
108
+ }
109
+ batch() {
110
+ return writeBatch(this.firestore);
111
+ }
112
+ };
113
+ AngularFirestoreAdapter = __decorate([
114
+ Injectable(),
115
+ __metadata("design:paramtypes", [Firestore])
116
+ ], AngularFirestoreAdapter);
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlLWFuZ3VsYXItYWRhcHRlci9zcmMvbGliL2FuZ3VsYXItZmlyZXN0b3JlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUNMLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUM3QyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUM1RCxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQTRCLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUNoRyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxpQ0FBaUMsQ0FBQztBQU8zRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsU0FBUyxZQUFZLENBQ25CLEdBQXdDLEVBQ3hDLFdBQWlDO0lBRWpDLE9BQU8sSUFBSSxVQUFVLENBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQy9ELEdBQUcsRUFDSCxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzdCLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDOUIsR0FBRyxFQUFFLENBQUMs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aUIsRUFBRSxLQUFvQixFQUFFLEtBQWM7UUFDakUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxDQUFPLEdBQVcsRUFBRSxRQUF3QixLQUFLO1FBQ3RELE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFPLENBQVM7UUFDbkIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGLENBQUE7QUFuSFksdUJBQXVCO0lBRG5DLFVBQVUsRUFBRTtxQ0FHbUIsU0FBUztHQUY1Qix1QkFBdUIsQ0FtSG5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0BueC1kZGQvY29yZSc7XG5pbXBvcnQgeyBcbiAgZG9jLCBjb2xsZWN0aW9uLCBjb2xsZWN0aW9uR3JvdXAsXG4gIFRpbWVzdGFtcCwgc2V0RG9jLCBnZXREb2MsIGRlbGV0ZURvYywgZ2V0RG9jcywgXG4gIG9uU25hcHNob3QsIHVwZGF0ZURvYywgRmlyZXN0b3JlLCBydW5UcmFuc2FjdGlvbiwgd3JpdGVCYXRjaCxcbiAgbGltaXQsIG9yZGVyQnksIHF1ZXJ5LCB3aGVyZSwgUXVlcnlTbmFwc2hvdCwgRmllbGRQYXRoLCBkb2N1bWVudElkLCBGaWVsZFZhbHVlLCBzZXJ2ZXJUaW1lc3RhbXBcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQWRhcHRlciwgUXVlcnlGbiwgV2hlcmVGaWx0ZXJPcCB9IGZyb20gJ0BueC1kZGQvZmlyZXN0b3JlL2FkYXB0ZXJzL2Jhc2UnO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRTbmFwc2hvdCxcbiAgRmlyZXN0b3JlQ29sbGVjdGlvbixcbiAgRmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwLFxuICBGaXJlc3RvcmVEb2N1bWVudFxufSBmcm9tICdAbngtZGRkL2ZpcmVzdG9yZS9pbnRlcmZhY2VzJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5mdW5jdGlvbiBhc09ic2VydmFibGU8VCA9IHVua25vd24+KFxuICByZWY6IFBhcmFtZXRlcnM8dHlwZW9mIG9uU25hcHNob3Q8VD4+WzBdLFxuICBfb25TbmFwc2hvdDogdHlwZW9mIG9uU25hcHNob3Q8VD4sXG4pOiBPYnNlcnZhYmxlPFF1ZXJ5U25hcHNob3Q8VD4+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFF1ZXJ5U25hcHNob3Q8VD4+KChvYnNlcnZlcikgPT4gX29uU25hcHNob3QoXG4gICAgcmVmLCBcbiAgICB2YWx1ZSA9PiBvYnNlcnZlci5uZXh0KHZhbHVlKSxcbiAgICBlcnJvciA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksXG4gICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSksXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBGSVJFQkFTRV9BREFQVEVSID0gbmV3IEluamVjdGlvblRva2VuPEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyPignQU5HVUxBUl9GSVJFU1RPUkVfQURBUFRFUicpO1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGaXJlc3RvcmVBZGFwdGVyKGZpcmVzdG9yZUZhY3RvcnkgPSAoKSA9PiBpbmplY3QoRmlyZXN0b3JlKSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZJUkVCQVNFX0FEQVBURVIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBuZXcgQW5ndWxhckZpcmVzdG9yZUFkYXB0ZXIoZmlyZXN0b3JlRmFjdG9yeSgpKSxcbiAgICB9LFxuICBdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVzdG9yZUFkYXB0ZXIgZXh0ZW5kcyBGaXJlc3RvcmVBZGFwdGVyPGRheWpzLkRheWpzPiB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZpcmVzdG9yZTogRmlyZXN0b3JlKSB7IHN1cGVyKCkgfVxuXG4gIGdldCBGaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKEZpZWxkVmFsdWUsIHtzZXJ2ZXJUaW1lc3RhbXB9KTtcbiAgfVxuXG4gIGdldCBUaW1lc3RhbXAoKTogdHlwZW9mIFRpbWVzdGFtcCB7XG4gICAgcmV0dXJuIFRpbWVzdGFtcDsgIFxuICB9XG5cbiAgZ2V0IEZpZWxkUGF0aCgpOiB7ZG9jdW1lbnRJZDogKCkgPT4gRmllbGRQYXRofSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRvY3VtZW50SWQ6ICgpID0+IGRvY3VtZW50SWQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzVGltZXN0YW1wKHY6IGFueSk6IHYgaXMgVGltZXN0YW1wIHtcbiAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRpbWVzdGFtcDtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0ZpZWxkVmFsdWUodjogYW55KTogdiBpcyBGaWVsZFZhbHVlIHtcbiAgICByZXR1cm4gdiBpbnN0YW5jZW9mIHRoaXMuRmllbGRWYWx1ZTtcbiAgfVxuICBcbiAgcHJvdGVjdGVkIGlzRGF0ZSh2OiBhbnkpOiB2IGlzIGRheWpzLkRheWpzIHtcbiAgICByZXR1cm4gZGF5anMuaXNEYXlqcyh2KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb252ZXJ0RGF0ZVRvVGltZXN0YW1wKGRhdGU6IGRheWpzLkRheWpzKTogVGltZXN0YW1wIHtcbiAgICByZXR1cm4gVGltZXN0YW1wLmZyb21EYXRlKGRhdGUudG9EYXRlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnZlcnRUaW1lc3RhbXBUb0RhdGUodGltZXN0YW1wOiBUaW1lc3RhbXApOiBkYXlqcy5EYXlqcyB7XG4gICAgcmV0dXJuIGRheWpzKHRpbWVzdGFtcC50b0RhdGUoKSlcbiAgfVxuXG4gIGRvYyhwYXRoOiBzdHJpbmcpOiBGaXJlc3RvcmVEb2N1bWVudDxhbnk+IHtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuICAgIHJldHVybiB7XG4gICAgICBfX3JlZjogZG9jUmVmLFxuICAgICAgZXhpc3RzOiAoKSA9PiBnZXREb2MoZG9jUmVmKS50aGVuKHNuYXBzaG90ID0+IHNuYXBzaG90LmV4aXN0cygpKSxcbiAgICAgIHNldDogKGRhdGEpID0+IHNldERvYyhkb2NSZWYsIGRhdGEpLFxuICAgICAgZ2V0OiAoKSA9PiBnZXREb2MoZG9jUmVmKSxcbiAgICAgIHVwZGF0ZTogKGRhdGEpID0+IHVwZGF0ZURvYyhkb2NSZWYsIGRhdGEpLFxuICAgICAgZGVsZXRlOiAoKSA9PiBkZWxldGVEb2MoZG9jUmVmKSxcbiAgICAgIHN0YXRlQ2hhbmdlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxhbnk+Pigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4gb25TbmFwc2hvdChkb2NSZWYsIHZhbHVlID0+IG9ic2VydmVyLm5leHQodmFsdWUpLCBlcnJvciA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpO1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIG1hcCgoc25hcHNob3QpID0+ICh7aWQ6IHNuYXBzaG90LmlkLCByZWY6IHNuYXBzaG90LnJlZiwgZGF0YTogKCkgPT4gc25hcHNob3QuZGF0YSgpfSkpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0aW9uKHBhdGg6IHN0cmluZyk6IEZpcmVzdG9yZUNvbGxlY3Rpb248YW55PiB7XG4gICAgY29uc3QgcmVmID0gY29sbGVjdGlvbih0aGlzLmZpcmVzdG9yZSwgcGF0aCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fcmVmOiByZWYsXG4gICAgICBzdGF0ZUNoYW5nZXM6ICgpID0+IGFzT2JzZXJ2YWJsZTx1bmtub3duPihyZWYsIG9uU25hcHNob3QpLnBpcGUoXG4gICAgICAgIG1hcCgoc25hcHNob3QpID0+IHNuYXBzaG90LmRvY0NoYW5nZXMoKS5tYXAoY2hhbmdlID0+ICh7XG4gICAgICAgICAgdHlwZTogY2hhbmdlLnR5cGUsIHBheWxvYWQ6IHtkb2M6IGNoYW5nZS5kb2N9LFxuICAgICAgICB9KSkpLFxuICAgICAgKSxcbiAgICAgIGdldDogKCkgPT4gZ2V0RG9jcyhyZWYpLFxuICAgIH1cbiAgfVxuXG4gIGNvbGxlY3Rpb25Hcm91cChjb2xsZWN0aW9uSWQ6IHN0cmluZyk6IEZpcmVzdG9yZUNvbGxlY3Rpb25Hcm91cDxhbnk+IHtcbiAgICBjb25zdCByZWYgPSBjb2xsZWN0aW9uR3JvdXAodGhpcy5maXJlc3RvcmUsIGNvbGxlY3Rpb25JZCk7XG4gICAgcmV0dXJuICB7XG4gICAgICBfX3JlZjogcmVmLFxuICAgICAgc3RhdGVDaGFuZ2VzOiAoKSA9PiBhc09ic2VydmFibGU8dW5rbm93bj4ocmVmLCBvblNuYXBzaG90KS5waXBlKFxuICAgICAgICBtYXAoKHNuYXBzaG90KSA9PiBzbmFwc2hvdC5kb2NDaGFuZ2VzKCkubWFwKGNoYW5nZSA9PiAoe1xuICAgICAgICAgIHR5cGU6IGNoYW5nZS50eXBlLCBwYXlsb2FkOiB7ZG9jOiBjaGFuZ2UuZG9jfSxcbiAgICAgICAgfSkpKSxcbiAgICAgICksXG4gICAgICBnZXQ6ICgpID0+IGdldERvY3MocmVmKSxcbiAgICB9XG4gIH1cblxuICBydW5UcmFuc2FjdGlvbihmbjogUGFyYW1ldGVyczx0eXBlb2YgcnVuVHJhbnNhY3Rpb24+WzFdKSB7XG4gICAgcmV0dXJuIHJ1blRyYW5zYWN0aW9uKHRoaXMuZmlyZXN0b3JlLCBmbik7XG4gIH1cblxuICBxdWVyeTxEYXRhPihjb2xsZWN0aW9uOiBGaXJlc3RvcmVDb2xsZWN0aW9uPERhdGE+LCAuLi5xdWVyeUZuQXJyYXk6IFF1ZXJ5Rm48RGF0YT5bXSk6IGFueSB7XG4gICAgY29uc3QgcmVmID0gcXVlcnkoY29sbGVjdGlvbi5fX3JlZiwgLi4ucXVlcnlGbkFycmF5Lm1hcChxdWVyeUZuID0+IHF1ZXJ5Rm4oKSkpO1xuICAgIHJldHVybiAge1xuICAgICAgX19yZWY6IHJlZixcbiAgICAgIHN0YXRlQ2hhbmdlczogKCkgPT4gYXNPYnNlcnZhYmxlPHVua25vd24+KHJlZiwgb25TbmFwc2hvdCkucGlwZShcbiAgICAgICAgbWFwKChzbmFwc2hvdCkgPT4gc25hcHNob3QuZG9jQ2hhbmdlcygpLm1hcChjaGFuZ2UgPT4gKHtcbiAgICAgICAgICB0eXBlOiBjaGFuZ2UudHlwZSwgcGF5bG9hZDoge2RvYzogY2hhbmdlLmRvY30sXG4gICAgICAgIH0pKSksXG4gICAgICApLFxuICAgICAgZ2V0OiAoKSA9PiBnZXREb2NzKHJlZiksXG4gICAgfVxuICB9XG5cbiAgd2hlcmU8RGF0YT4oZmllbGRQYXRoOiBzdHJpbmcsIG9wU3RyOiBXaGVyZUZpbHRlck9wLCB2YWx1ZTogdW5rbm93bik6IFF1ZXJ5Rm48RGF0YT4ge1xuICAgIHJldHVybiAoKSA9PiB3aGVyZShmaWVsZFBhdGgsIG9wU3RyLCB2YWx1ZSk7XG4gIH1cblxuICBvcmRlckJ5PERhdGE+KGtleTogc3RyaW5nLCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyk6IFF1ZXJ5Rm48RGF0YT4ge1xuICAgIHJldHVybiAoKSA9PiBvcmRlckJ5KGtleSwgb3JkZXIpO1xuICB9XG5cbiAgbGltaXQ8RGF0YT4objogbnVtYmVyKTogUXVlcnlGbjxEYXRhPiB7XG4gICAgcmV0dXJuICgpID0+IGxpbWl0KG4pO1xuICB9XG4gIFxuICBiYXRjaCgpIHtcbiAgICByZXR1cm4gd3JpdGVCYXRjaCh0aGlzLmZpcmVzdG9yZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ var AngularFirestoreModule_1;
2
+ import { __decorate } from "tslib";
3
+ import { CommonModule } from '@angular/common';
4
+ import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
5
+ import { NxModule } from '@nx-ddd/core';
6
+ import { AngularFirestoreAdapter } from './angular-firestore.adapter';
7
+ export let AngularFirestoreModule = AngularFirestoreModule_1 = class AngularFirestoreModule {
8
+ static from(firestore) {
9
+ return {
10
+ nxModule: AngularFirestoreModule_1,
11
+ providers: [
12
+ { provide: FirestoreAdapter, useValue: new AngularFirestoreAdapter(firestore) },
13
+ ],
14
+ };
15
+ }
16
+ };
17
+ AngularFirestoreModule = AngularFirestoreModule_1 = __decorate([
18
+ NxModule({
19
+ imports: [CommonModule],
20
+ providers: [
21
+ {
22
+ provide: FirestoreAdapter,
23
+ useClass: AngularFirestoreAdapter,
24
+ }
25
+ ],
26
+ })
27
+ ], AngularFirestoreModule);
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUtYW5ndWxhci1hZGFwdGVyL3NyYy9saWIvYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFXL0QsV0FBTSxzQkFBc0IsOEJBQTVCLE1BQU0sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBb0I7UUFDOUIsT0FBTztZQUNMLFFBQVEsRUFBRSx3QkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxFQUFFO2FBQ2hGO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFBO0FBVFksc0JBQXNCO0lBVGxDLFFBQVEsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztRQUN2QixTQUFTLEVBQUU7WUFDVDtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixRQUFRLEVBQUUsdUJBQXVCO2FBQ2xDO1NBQ0Y7S0FDRixDQUFDO0dBQ1csc0JBQXNCLENBU2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IEZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICdAbngtZGRkL2ZpcmVzdG9yZS9hZGFwdGVycy9iYXNlJztcbmltcG9ydCB7IE54TW9kdWxlIH0gZnJvbSAnQG54LWRkZC9jb3JlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyIH0gZnJvbSAnLi9hbmd1bGFyLWZpcmVzdG9yZS5hZGFwdGVyJztcblxuQE54TW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZpcmVzdG9yZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogQW5ndWxhckZpcmVzdG9yZUFkYXB0ZXIsXG4gICAgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIHtcbiAgc3RhdGljIGZyb20oZmlyZXN0b3JlOiBGaXJlc3RvcmUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbnhNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGaXJlc3RvcmVBZGFwdGVyLCB1c2VWYWx1ZTogbmV3IEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyKGZpcmVzdG9yZSkgfSxcbiAgICAgIF0sXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './angular-firestore.module';
2
+ export * from './angular-firestore.adapter';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2ZpcmVzdG9yZS1hbmd1bGFyLWFkYXB0ZXIvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FuZ3VsYXItZmlyZXN0b3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2FuZ3VsYXItZmlyZXN0b3JlLmFkYXB0ZXInO1xuIl19
@@ -1,4 +1,148 @@
1
+ import { __decorate, __metadata } from 'tslib';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
4
+ import { Injectable, NxModule } from '@nx-ddd/core';
5
+ import { Firestore, FieldValue, serverTimestamp, Timestamp, documentId, doc, getDoc, setDoc, updateDoc, deleteDoc, onSnapshot, collection, getDocs, collectionGroup, runTransaction, query, where, orderBy, limit, writeBatch } from '@angular/fire/firestore';
6
+ import dayjs from 'dayjs';
7
+ import { Observable, map } from 'rxjs';
8
+ import { InjectionToken, inject } from '@angular/core';
9
+
10
+ function asObservable(ref, _onSnapshot) {
11
+ return new Observable((observer) => _onSnapshot(ref, value => observer.next(value), error => observer.error(error), () => observer.complete()));
12
+ }
13
+ const FIREBASE_ADAPTER = new InjectionToken('ANGULAR_FIRESTORE_ADAPTER');
14
+ function provideFirestoreAdapter(firestoreFactory = () => inject(Firestore)) {
15
+ return [
16
+ {
17
+ provide: FIREBASE_ADAPTER,
18
+ useFactory: () => new AngularFirestoreAdapter(firestoreFactory()),
19
+ },
20
+ ];
21
+ }
22
+ let AngularFirestoreAdapter = class AngularFirestoreAdapter extends FirestoreAdapter {
23
+ constructor(firestore) {
24
+ super();
25
+ this.firestore = firestore;
26
+ }
27
+ get FieldValue() {
28
+ return Object.assign(FieldValue, { serverTimestamp });
29
+ }
30
+ get Timestamp() {
31
+ return Timestamp;
32
+ }
33
+ get FieldPath() {
34
+ return {
35
+ documentId: () => documentId(),
36
+ };
37
+ }
38
+ isTimestamp(v) {
39
+ return v instanceof Timestamp;
40
+ }
41
+ isFieldValue(v) {
42
+ return v instanceof this.FieldValue;
43
+ }
44
+ isDate(v) {
45
+ return dayjs.isDayjs(v);
46
+ }
47
+ convertDateToTimestamp(date) {
48
+ return Timestamp.fromDate(date.toDate());
49
+ }
50
+ convertTimestampToDate(timestamp) {
51
+ return dayjs(timestamp.toDate());
52
+ }
53
+ doc(path) {
54
+ const docRef = doc(this.firestore, path);
55
+ return {
56
+ __ref: docRef,
57
+ exists: () => getDoc(docRef).then(snapshot => snapshot.exists()),
58
+ set: (data) => setDoc(docRef, data),
59
+ get: () => getDoc(docRef),
60
+ update: (data) => updateDoc(docRef, data),
61
+ delete: () => deleteDoc(docRef),
62
+ stateChanges: () => {
63
+ return new Observable((observer) => {
64
+ return onSnapshot(docRef, value => observer.next(value), error => observer.error(error), () => observer.complete());
65
+ }).pipe(map((snapshot) => ({ id: snapshot.id, ref: snapshot.ref, data: () => snapshot.data() })));
66
+ },
67
+ };
68
+ }
69
+ collection(path) {
70
+ const ref = collection(this.firestore, path);
71
+ return {
72
+ __ref: ref,
73
+ stateChanges: () => asObservable(ref, onSnapshot).pipe(map((snapshot) => snapshot.docChanges().map(change => ({
74
+ type: change.type, payload: { doc: change.doc },
75
+ })))),
76
+ get: () => getDocs(ref),
77
+ };
78
+ }
79
+ collectionGroup(collectionId) {
80
+ const ref = collectionGroup(this.firestore, collectionId);
81
+ return {
82
+ __ref: ref,
83
+ stateChanges: () => asObservable(ref, onSnapshot).pipe(map((snapshot) => snapshot.docChanges().map(change => ({
84
+ type: change.type, payload: { doc: change.doc },
85
+ })))),
86
+ get: () => getDocs(ref),
87
+ };
88
+ }
89
+ runTransaction(fn) {
90
+ return runTransaction(this.firestore, fn);
91
+ }
92
+ query(collection, ...queryFnArray) {
93
+ const ref = query(collection.__ref, ...queryFnArray.map(queryFn => queryFn()));
94
+ return {
95
+ __ref: ref,
96
+ stateChanges: () => asObservable(ref, onSnapshot).pipe(map((snapshot) => snapshot.docChanges().map(change => ({
97
+ type: change.type, payload: { doc: change.doc },
98
+ })))),
99
+ get: () => getDocs(ref),
100
+ };
101
+ }
102
+ where(fieldPath, opStr, value) {
103
+ return () => where(fieldPath, opStr, value);
104
+ }
105
+ orderBy(key, order = 'asc') {
106
+ return () => orderBy(key, order);
107
+ }
108
+ limit(n) {
109
+ return () => limit(n);
110
+ }
111
+ batch() {
112
+ return writeBatch(this.firestore);
113
+ }
114
+ };
115
+ AngularFirestoreAdapter = __decorate([
116
+ Injectable(),
117
+ __metadata("design:paramtypes", [Firestore])
118
+ ], AngularFirestoreAdapter);
119
+
120
+ var AngularFirestoreModule_1;
121
+ let AngularFirestoreModule = AngularFirestoreModule_1 = class AngularFirestoreModule {
122
+ static from(firestore) {
123
+ return {
124
+ nxModule: AngularFirestoreModule_1,
125
+ providers: [
126
+ { provide: FirestoreAdapter, useValue: new AngularFirestoreAdapter(firestore) },
127
+ ],
128
+ };
129
+ }
130
+ };
131
+ AngularFirestoreModule = AngularFirestoreModule_1 = __decorate([
132
+ NxModule({
133
+ imports: [CommonModule],
134
+ providers: [
135
+ {
136
+ provide: FirestoreAdapter,
137
+ useClass: AngularFirestoreAdapter,
138
+ }
139
+ ],
140
+ })
141
+ ], AngularFirestoreModule);
142
+
1
143
  /**
2
144
  * Generated bundle index. Do not edit.
3
145
  */
146
+
147
+ export { AngularFirestoreAdapter, AngularFirestoreModule, FIREBASE_ADAPTER, provideFirestoreAdapter };
4
148
  //# sourceMappingURL=nx-ddd-firestore-angular-adapter.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-firestore-angular-adapter.mjs","sources":["../../../../../packages/@nx-ddd/firestore-angular-adapter/src/nx-ddd-firestore-angular-adapter.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AAEG"}
1
+ {"version":3,"file":"nx-ddd-firestore-angular-adapter.mjs","sources":["../../../../../packages/@nx-ddd/firestore-angular-adapter/src/lib/angular-firestore.adapter.ts","../../../../../packages/@nx-ddd/firestore-angular-adapter/src/lib/angular-firestore.module.ts","../../../../../packages/@nx-ddd/firestore-angular-adapter/src/nx-ddd-firestore-angular-adapter.ts"],"sourcesContent":["import { Injectable } from '@nx-ddd/core';\nimport { \n doc, collection, collectionGroup,\n Timestamp, setDoc, getDoc, deleteDoc, getDocs, \n onSnapshot, updateDoc, Firestore, runTransaction, writeBatch,\n limit, orderBy, query, where, QuerySnapshot, FieldPath, documentId, FieldValue, serverTimestamp\n} from '@angular/fire/firestore';\nimport { FirestoreAdapter, QueryFn, WhereFilterOp } from '@nx-ddd/firestore/adapters/base';\nimport {\n DocumentSnapshot,\n FirestoreCollection,\n FirestoreCollectionGroup,\n FirestoreDocument\n} from '@nx-ddd/firestore/interfaces';\nimport dayjs from 'dayjs';\nimport { Observable, map } from 'rxjs';\nimport { inject, InjectionToken } from '@angular/core';\n\n\nfunction asObservable<T = unknown>(\n ref: Parameters<typeof onSnapshot<T>>[0],\n _onSnapshot: typeof onSnapshot<T>,\n): Observable<QuerySnapshot<T>> {\n return new Observable<QuerySnapshot<T>>((observer) => _onSnapshot(\n ref, \n value => observer.next(value),\n error => observer.error(error),\n () => observer.complete()),\n );\n}\n\nexport const FIREBASE_ADAPTER = new InjectionToken<AngularFirestoreAdapter>('ANGULAR_FIRESTORE_ADAPTER');\nexport function provideFirestoreAdapter(firestoreFactory = () => inject(Firestore)) {\n return [\n {\n provide: FIREBASE_ADAPTER,\n useFactory: () => new AngularFirestoreAdapter(firestoreFactory()),\n },\n ];\n}\n\n@Injectable()\nexport class AngularFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {\n\n constructor(public firestore: Firestore) { super() }\n\n get FieldValue() {\n return Object.assign(FieldValue, {serverTimestamp});\n }\n\n get Timestamp(): typeof Timestamp {\n return Timestamp; \n }\n\n get FieldPath(): {documentId: () => FieldPath} {\n return {\n documentId: () => documentId(),\n };\n }\n\n protected isTimestamp(v: any): v is Timestamp {\n return v instanceof Timestamp;\n }\n\n protected isFieldValue(v: any): v is FieldValue {\n return v instanceof this.FieldValue;\n }\n \n protected isDate(v: any): v is dayjs.Dayjs {\n return dayjs.isDayjs(v);\n }\n\n protected convertDateToTimestamp(date: dayjs.Dayjs): Timestamp {\n return Timestamp.fromDate(date.toDate());\n }\n\n protected convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs {\n return dayjs(timestamp.toDate())\n }\n\n doc(path: string): FirestoreDocument<any> {\n const docRef = doc(this.firestore, path);\n return {\n __ref: docRef,\n exists: () => getDoc(docRef).then(snapshot => snapshot.exists()),\n set: (data) => setDoc(docRef, data),\n get: () => getDoc(docRef),\n update: (data) => updateDoc(docRef, data),\n delete: () => deleteDoc(docRef),\n stateChanges: () => {\n return new Observable<DocumentSnapshot<any>>((observer) => {\n return onSnapshot(docRef, value => observer.next(value), error => observer.error(error), () => observer.complete());\n }).pipe(\n map((snapshot) => ({id: snapshot.id, ref: snapshot.ref, data: () => snapshot.data()})),\n );\n },\n }\n }\n\n collection(path: string): FirestoreCollection<any> {\n const ref = collection(this.firestore, path);\n return {\n __ref: ref,\n stateChanges: () => asObservable<unknown>(ref, onSnapshot).pipe(\n map((snapshot) => snapshot.docChanges().map(change => ({\n type: change.type, payload: {doc: change.doc},\n }))),\n ),\n get: () => getDocs(ref),\n }\n }\n\n collectionGroup(collectionId: string): FirestoreCollectionGroup<any> {\n const ref = collectionGroup(this.firestore, collectionId);\n return {\n __ref: ref,\n stateChanges: () => asObservable<unknown>(ref, onSnapshot).pipe(\n map((snapshot) => snapshot.docChanges().map(change => ({\n type: change.type, payload: {doc: change.doc},\n }))),\n ),\n get: () => getDocs(ref),\n }\n }\n\n runTransaction(fn: Parameters<typeof runTransaction>[1]) {\n return runTransaction(this.firestore, fn);\n }\n\n query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): any {\n const ref = query(collection.__ref, ...queryFnArray.map(queryFn => queryFn()));\n return {\n __ref: ref,\n stateChanges: () => asObservable<unknown>(ref, onSnapshot).pipe(\n map((snapshot) => snapshot.docChanges().map(change => ({\n type: change.type, payload: {doc: change.doc},\n }))),\n ),\n get: () => getDocs(ref),\n }\n }\n\n where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data> {\n return () => where(fieldPath, opStr, value);\n }\n\n orderBy<Data>(key: string, order: 'asc' | 'desc' = 'asc'): QueryFn<Data> {\n return () => orderBy(key, order);\n }\n\n limit<Data>(n: number): QueryFn<Data> {\n return () => limit(n);\n }\n \n batch() {\n return writeBatch(this.firestore);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Firestore } from '@angular/fire/firestore';\nimport { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';\nimport { NxModule } from '@nx-ddd/core';\nimport { AngularFirestoreAdapter } from './angular-firestore.adapter';\n\n@NxModule({\n imports: [CommonModule],\n providers: [\n {\n provide: FirestoreAdapter,\n useClass: AngularFirestoreAdapter,\n }\n ],\n})\nexport class AngularFirestoreModule {\n static from(firestore: Firestore) {\n return {\n nxModule: AngularFirestoreModule,\n providers: [\n { provide: FirestoreAdapter, useValue: new AngularFirestoreAdapter(firestore) },\n ],\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './';
1
+ export * from './lib';
@@ -0,0 +1,35 @@
1
+ import { Timestamp, Firestore, runTransaction, FieldPath, FieldValue } from '@angular/fire/firestore';
2
+ import { FirestoreAdapter, QueryFn, WhereFilterOp } from '@nx-ddd/firestore/adapters/base';
3
+ import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument } from '@nx-ddd/firestore/interfaces';
4
+ import dayjs from 'dayjs';
5
+ import { InjectionToken } from '@angular/core';
6
+ export declare const FIREBASE_ADAPTER: InjectionToken<AngularFirestoreAdapter>;
7
+ export declare function provideFirestoreAdapter(firestoreFactory?: () => Firestore): {
8
+ provide: InjectionToken<AngularFirestoreAdapter>;
9
+ useFactory: () => AngularFirestoreAdapter;
10
+ }[];
11
+ export declare class AngularFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
12
+ firestore: Firestore;
13
+ constructor(firestore: Firestore);
14
+ get FieldValue(): typeof FieldValue & {
15
+ serverTimestamp: typeof import("@firebase/firestore").serverTimestamp;
16
+ };
17
+ get Timestamp(): typeof Timestamp;
18
+ get FieldPath(): {
19
+ documentId: () => FieldPath;
20
+ };
21
+ protected isTimestamp(v: any): v is Timestamp;
22
+ protected isFieldValue(v: any): v is FieldValue;
23
+ protected isDate(v: any): v is dayjs.Dayjs;
24
+ protected convertDateToTimestamp(date: dayjs.Dayjs): Timestamp;
25
+ protected convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs;
26
+ doc(path: string): FirestoreDocument<any>;
27
+ collection(path: string): FirestoreCollection<any>;
28
+ collectionGroup(collectionId: string): FirestoreCollectionGroup<any>;
29
+ runTransaction(fn: Parameters<typeof runTransaction>[1]): Promise<unknown>;
30
+ query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): any;
31
+ where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data>;
32
+ orderBy<Data>(key: string, order?: 'asc' | 'desc'): QueryFn<Data>;
33
+ limit<Data>(n: number): QueryFn<Data>;
34
+ batch(): import("@firebase/firestore").WriteBatch;
35
+ }
@@ -0,0 +1,12 @@
1
+ import { Firestore } from '@angular/fire/firestore';
2
+ import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
3
+ import { AngularFirestoreAdapter } from './angular-firestore.adapter';
4
+ export declare class AngularFirestoreModule {
5
+ static from(firestore: Firestore): {
6
+ nxModule: typeof AngularFirestoreModule;
7
+ providers: {
8
+ provide: typeof FirestoreAdapter;
9
+ useValue: AngularFirestoreAdapter;
10
+ }[];
11
+ };
12
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './angular-firestore.module';
2
+ export * from './angular-firestore.adapter';
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@nx-ddd/firestore-angular-adapter",
3
- "version": "16.1.0",
3
+ "version": "16.2.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.0.0",
6
6
  "@angular/core": "^16.0.0",
7
7
  "@angular/fire": "^7.5.0",
8
- "@nx-ddd/core": "16.1.0",
9
- "@nx-ddd/firestore": "16.1.0",
8
+ "@nx-ddd/core": "16.2.0",
9
+ "@nx-ddd/firestore": "16.2.0",
10
10
  "dayjs": "1.11.10",
11
11
  "rxjs": "^7.0.0"
12
12
  },