@nx-ddd/firestore 19.25.0 → 19.26.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.
@@ -86,10 +86,10 @@ class AdminFirestoreAdapter extends FirestoreAdapter {
86
86
  batch() {
87
87
  return this.firestore.batch();
88
88
  }
89
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AdminFirestoreAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
90
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AdminFirestoreAdapter });
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AdminFirestoreAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
90
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AdminFirestoreAdapter });
91
91
  }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AdminFirestoreAdapter, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AdminFirestoreAdapter, decorators: [{
93
93
  type: Injectable
94
94
  }] });
95
95
  function provideFirestoreAdapter() {
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-firestore-adapters-admin.mjs","sources":["../tmp-esm2022/adapters/admin/admin.adapter.js","../tmp-esm2022/adapters/admin/nx-ddd-firestore-adapters-admin.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport admin from 'firebase-admin';\nimport { Subject } from 'rxjs';\nimport { FirestoreAdapter, provideFirestoreAdapter as _provideFirestoreAdapter } from '@nx-ddd/firestore';\nimport * as i0 from \"@angular/core\";\nexport function wrapCollectionLike(origin) {\n return {\n __ref: origin,\n stateChanges: () => {\n const subject = new Subject();\n origin.onSnapshot(snapshot => {\n const actions = snapshot.docChanges().map(change => ({\n type: change.type, payload: { doc: change.doc },\n }));\n subject.next(actions);\n });\n return subject.asObservable();\n },\n get: () => origin.get(),\n count: () => origin.get().then(snapshot => snapshot.size),\n };\n}\nexport function unwrapCollectionLike(collection) {\n return collection.__ref;\n}\nexport class AdminFirestoreAdapter extends FirestoreAdapter {\n firestore = admin.firestore();\n get FieldValue() {\n return admin.firestore.FieldValue;\n }\n get Timestamp() {\n return admin.firestore.Timestamp;\n }\n get FieldPath() {\n return admin.firestore.FieldPath;\n }\n isTimestamp(v) {\n return v instanceof this.Timestamp;\n }\n isFieldValue(v) {\n return v instanceof this.FieldValue;\n }\n convertDateToTimestamp(date) {\n if (this.dateAdapter.isDate(date) && this.dateAdapter.isValid(date)) {\n return admin.firestore.Timestamp.fromDate(this.dateAdapter.getJsDate(date));\n }\n throw new Error(`Invalid date: ${date}`);\n }\n doc(path) {\n const docRef = this.firestore.doc(path);\n return {\n __ref: docRef,\n exists: () => docRef.get().then(snapshot => snapshot.exists),\n set: (data, options) => docRef.set(data, options),\n get: () => docRef.get(),\n update: (data) => docRef.update(data),\n delete: () => docRef.delete(),\n };\n }\n collection(path) {\n const collectionRef = this.firestore.collection(path);\n return wrapCollectionLike(collectionRef);\n }\n collectionGroup(collectionId) {\n const collectionRef = this.firestore.collectionGroup(collectionId);\n return wrapCollectionLike(collectionRef);\n }\n runTransaction(updateFunction) {\n return this.firestore.runTransaction(updateFunction);\n }\n query(collection, ...queryFnArray) {\n const ref = unwrapCollectionLike(collection);\n const query = queryFnArray.reduce((_ref, queryFn) => queryFn(_ref), ref);\n return wrapCollectionLike(query);\n }\n where(key, evaluation, value) {\n return (collection) => collection.where(key, evaluation, value);\n }\n orderBy(key, order = 'asc') {\n return (collection) => collection.orderBy(key, order);\n }\n limit(n) {\n return (collection) => collection.limit(n);\n }\n batch() {\n return this.firestore.batch();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AdminFirestoreAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AdminFirestoreAdapter });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AdminFirestoreAdapter, decorators: [{\n type: Injectable\n }] });\nexport function provideFirestoreAdapter() {\n return _provideFirestoreAdapter(AdminFirestoreAdapter);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvYWRhcHRlcnMvYWRtaW4vYWRtaW4uYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFzQyx1QkFBdUIsSUFBSSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQTJDOUksTUFBTSxVQUFVLGtCQUFrQixDQUFtQixNQUFTO0lBQzVELE9BQU87UUFDTCxLQUFLLEVBQUUsTUFBTTtRQUNiLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQStCLENBQUM7WUFDM0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ25ELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFDO2lCQUM5QyxDQUFDLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ3ZCLEtBQUssRUFBRSxH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LEdBQUcsWUFBa0Q7UUFFckQsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLENBQTRCLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekUsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQXFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FHSCxHQUFXLEVBQUUsVUFBeUIsRUFBRSxLQUFjO1FBQ3RELE9BQU8sQ0FBQyxVQUE2QyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELE9BQU8sQ0FHTCxHQUFXLEVBQUUsUUFBd0IsS0FBSztRQUMxQyxPQUFPLENBQUMsVUFBNkMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELEtBQUssQ0FHSCxDQUFTO1FBQ1QsT0FBTyxDQUFDLFVBQTZDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQzt1R0FqR1UscUJBQXFCOzJHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7O0FBcUdYLE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsT0FBTyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgYWRtaW4gZnJvbSAnZmlyZWJhc2UtYWRtaW4nO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnREYXRhLCBUcmFuc2FjdGlvbiB9IGZyb20gJ2ZpcmViYXNlLWFkbWluL2ZpcmVzdG9yZSc7XG5pbXBvcnQge1xuICBEb2N1bWVudENoYW5nZUFjdGlvbixcbiAgRG9jdW1lbnRSZWZlcmVuY2UsXG4gIENvbGxlY3Rpb25SZWZlcmVuY2UgYXMgX0NvbGxlY3Rpb25SZWZlcmVuY2UsXG4gIENvbGxlY3Rpb25Hcm91cCBhcyBfQ29sbGVjdGlvbkdyb3VwLFxuICBRdWVyeSBhcyBfUXVlcnkgfSBmcm9tICdAbngtZGRkL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVBZGFwdGVyLCBRdWVyeUZuIGFzIF9RdWVyeUZuLCBXaGVyZUZpbHRlck9wLCBwcm92aWRlRmlyZXN0b3JlQWRhcHRlciBhcyBfcHJvdmlkZUZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICdAbngtZGRkL2ZpcmVzdG9yZSc7XG5cbnR5cGUgQ29sbGVjdGlvblJlZmVyZW5jZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBfQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBhZG1pbi5maXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPj47XG5cbnR5cGUgQ29sbGVjdGlvbkdyb3VwPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhXG4+ID0gX0NvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBhZG1pbi5maXJlc3RvcmUuQ29sbGVjdGlvbkdyb3VwPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+PjtcblxudHlwZSBRdWVyeTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPiA9IF9RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBhZG1pbi5maXJlc3RvcmUuUXVlcnk8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4+O1xuXG50eXBlIFF1ZXJ5Rm48XG4gIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGFcbj4gPSBfUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBhZG1pbi5maXJlc3RvcmUuUXVlcnk+XG5cbnR5cGUgT3JpZ2luPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuPiA9IGFkbWluLmZpcmVzdG9yZS5Db2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+XG4gIHwgYWRtaW4uZmlyZXN0b3JlLkNvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IGFkbWluLmZpcmVzdG9yZS5RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcblxudHlwZSBDb2xsZWN0aW9uTGlrZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IFxuICB8IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IFF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuXG4vLyBVdGlsaXR5IHR5cGUgdG8gbWFwIE9yaWdpbiB0byBDb2xsZWN0aW9uTGlrZVxudHlwZSBJbmZlckNvbGxlY3Rpb25MaWtlPE8gZXh0ZW5kcyBPcmlnaW4+ID0gXG4gIE8gZXh0ZW5kcyBhZG1pbi5maXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxpbmZlciBBLCBpbmZlciBCPiA/IENvbGxlY3Rpb25SZWZlcmVuY2U8QSwgQj4gOlxuICBPIGV4dGVuZHMgYWRtaW4uZmlyZXN0b3JlLkNvbGxlY3Rpb25Hcm91cDxpbmZlciBBLCBpbmZlciBCPiA/IENvbGxlY3Rpb25Hcm91cDxBLCBCPiA6XG4gIE8gZXh0ZW5kcyBhZG1pbi5maXJlc3RvcmUuUXVlcnk8aW5mZXIgQSwgaW5mZXIgQj4gPyBRdWVyeTxBLCBCPiA6XG4gIG5ldmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gd3JhcENvbGxlY3Rpb25MaWtlPE8gZXh0ZW5kcyBPcmlnaW4+KG9yaWdpbjogTyk6IEluZmVyQ29sbGVjdGlvbkxpa2U8Tz4ge1xuICByZXR1cm4ge1xuICAgIF9fcmVmOiBvcmlnaW4sXG4gICAgc3RhdGVDaGFuZ2VzOiAoKSA9PiB7XG4gICAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8RG9jdW1lbnRDaGFuZ2VBY3Rpb248YW55PltdPigpO1xuICAgICAgb3JpZ2luLm9uU25hcHNob3Qoc25hcHNob3QgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb25zID0gc25hcHNob3QuZG9jQ2hhbmdlcygpLm1hcChjaGFuZ2UgPT4gKHtcbiAgICAgICAgICB0eXBlOiBjaGFuZ2UudHlwZSwgcGF5bG9hZDoge2RvYzogY2hhbmdlLmRvY30sXG4gICAgICAgIH0pKTtcbiAgICAgICAgc3ViamVjdC5uZXh0KGFjdGlvbnMpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9LFxuICAgIGdldDogKCkgPT4gb3JpZ2luLmdldCgpLFxuICAgIGNvdW50OiAoKSA9PiBvcmlnaW4uZ2V0KCkudGhlbihzbmFwc2hvdCA9PiBzbmFwc2hvdC5zaXplKSxcbiAgfSBhcyBuZXZlciBhcyBJbmZlckNvbGxlY3Rpb25MaWtlPE8+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwQ29sbGVjdGlvbkxpa2U8XG4gIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGFcbj4oXG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25MaWtlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+XG4pOiBPcmlnaW48QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4ge1xuICByZXR1cm4gY29sbGVjdGlvbi5fX3JlZjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFkbWluRmlyZXN0b3JlQWRhcHRlcjxEYXRlPiBleHRlbmRzIEZpcmVzdG9yZUFkYXB0ZXI8RGF0ZT4ge1xuICBwcm90ZWN0ZWQgZmlyZXN0b3JlID0gYWRtaW4uZmlyZXN0b3JlKCk7XG5cbiAgZ2V0IEZpZWxkVmFsdWUoKTogdHlwZW9mIGFkbWluLmZpcmVzdG9yZS5GaWVsZFZhbHVlIHtcbiAgICByZXR1cm4gYWRtaW4uZmlyZXN0b3JlLkZpZWxkVmFsdWU7ICBcbiAgfVxuXG4gIGdldCBUaW1lc3RhbXAoKTogdHlwZW9mIGFkbWluLmZpcmVzdG9yZS5UaW1lc3RhbXAge1xuICAgIHJldHVybiBhZG1pbi5maXJlc3RvcmUuVGltZXN0YW1wOyAgXG4gIH1cblxuICBnZXQgRmllbGRQYXRoKCk6IHR5cGVvZiBhZG1pbi5maXJlc3RvcmUuRmllbGRQYXRoIHtcbiAgICByZXR1cm4gYWRtaW4uZmlyZXN0b3JlLkZpZWxkUGF0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1RpbWVzdGFtcCh2OiBhbnkpOiB2IGlzIGFkbWluLmZpcmVzdG9yZS5UaW1lc3RhbXAge1xuICAgIHJldHVybiB2IGluc3RhbmNlb2YgdGhpcy5UaW1lc3RhbXA7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNGaWVsZFZhbHVlKHY6IGFueSk6IHYgaXMgYWRtaW4uZmlyZXN0b3JlLkZpZWxkVmFsdWUge1xuICAgIHJldHVybiB2IGluc3RhbmNlb2YgdGhpcy5GaWVsZFZhbHVlO1xuICB9XG5cbiAgY29udmVydERhdGVUb1RpbWVzdGFtcChkYXRlOiBEYXRlKTogYWRtaW4uZmlyZXN0b3JlLlRpbWVzdGFtcCB7XG4gICAgaWYgKHRoaXMuZGF0ZUFkYXB0ZXIuaXNEYXRlKGRhdGUpICYmIHRoaXMuZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlKSkge1xuICAgICAgcmV0dXJuIGFkbWluLmZpcmVzdG9yZS5UaW1lc3RhbXAuZnJvbURhdGUodGhpcy5kYXRlQWRhcHRlci5nZXRKc0RhdGUoZGF0ZSkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0ZTogJHtkYXRlfWApO1xuICB9XG5cbiAgZG9jKHBhdGg6IHN0cmluZyk6IERvY3VtZW50UmVmZXJlbmNlPGFueSwgYWRtaW4uZmlyZXN0b3JlLkRvY3VtZW50UmVmZXJlbmNlPiB7XG4gICAgY29uc3QgZG9jUmVmID0gdGhpcy5maXJlc3RvcmUuZG9jKHBhdGgpO1xuICAgIHJldHVybiB7XG4gICAgICBfX3JlZjogZG9jUmVmLFxuICAgICAgZXhpc3RzOiAoKSA9PiBkb2NSZWYuZ2V0KCkudGhlbihzbmFwc2hvdCA9PiBzbmFwc2hvdC5leGlzdHMpLFxuICAgICAgc2V0OiAoZGF0YSwgb3B0aW9ucz8pID0+IGRvY1JlZi5zZXQoZGF0YSwgb3B0aW9ucyksXG4gICAgICBnZXQ6ICgpID0+IGRvY1JlZi5nZXQoKSxcbiAgICAgIHVwZGF0ZTogKGRhdGEpID0+IGRvY1JlZi51cGRhdGUoZGF0YSksXG4gICAgICBkZWxldGU6ICgpID0+IGRvY1JlZi5kZWxldGUoKSxcbiAgICB9O1xuICB9XG5cbiAgY29sbGVjdGlvbjxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4ocGF0aDogc3RyaW5nKTogQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgY29sbGVjdGlvblJlZiA9IHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb24ocGF0aCk7XG4gICAgcmV0dXJuIHdyYXBDb2xsZWN0aW9uTGlrZShjb2xsZWN0aW9uUmVmKSBhcyBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuICB9XG5cbiAgY29sbGVjdGlvbkdyb3VwPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihjb2xsZWN0aW9uSWQ6IHN0cmluZyk6IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgY29sbGVjdGlvblJlZiA9IHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25Hcm91cChjb2xsZWN0aW9uSWQpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UoY29sbGVjdGlvblJlZikgYXMgQ29sbGVjdGlvbkdyb3VwPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuICB9XG4gIFxuICBydW5UcmFuc2FjdGlvbjxUPih1cGRhdGVGdW5jdGlvbjogKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4gUHJvbWlzZTxUPikge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5ydW5UcmFuc2FjdGlvbih1cGRhdGVGdW5jdGlvbik7XG4gIH1cblxuICBxdWVyeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkxpa2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4sXG4gICAgLi4ucXVlcnlGbkFycmF5OiBRdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+W11cbiAgKTogUXVlcnk8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4ge1xuICAgIGNvbnN0IHJlZiA9IHVud3JhcENvbGxlY3Rpb25MaWtlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+KGNvbGxlY3Rpb24pO1xuICAgIGNvbnN0IHF1ZXJ5ID0gcXVlcnlGbkFycmF5LnJlZHVjZSgoX3JlZiwgcXVlcnlGbikgPT4gcXVlcnlGbihfcmVmKSwgcmVmKTtcbiAgICByZXR1cm4gd3JhcENvbGxlY3Rpb25MaWtlKHF1ZXJ5KSBhcyBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcbiAgfVxuXG4gIHdoZXJlPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihrZXk6IHN0cmluZywgZXZhbHVhdGlvbjogV2hlcmVGaWx0ZXJPcCwgdmFsdWU6IHVua25vd24pOiBRdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgICByZXR1cm4gKGNvbGxlY3Rpb246IE9yaWdpbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPikgPT4gY29sbGVjdGlvbi53aGVyZShrZXksIGV2YWx1YXRpb24sIHZhbHVlKTsgIFxuICB9XG5cbiAgb3JkZXJCeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oa2V5OiBzdHJpbmcsIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnKTogUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgcmV0dXJuIChjb2xsZWN0aW9uOiBPcmlnaW48QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4pID0+IGNvbGxlY3Rpb24ub3JkZXJCeShrZXksIG9yZGVyKTtcbiAgfVxuXG4gIGxpbWl0PFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihuOiBudW1iZXIpOiBRdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgICByZXR1cm4gKGNvbGxlY3Rpb246IE9yaWdpbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPikgPT4gY29sbGVjdGlvbi5saW1pdChuKTtcbiAgfVxuXG4gIGJhdGNoKCkge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5iYXRjaCgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlyZXN0b3JlQWRhcHRlcigpIHtcbiAgcmV0dXJuIF9wcm92aWRlRmlyZXN0b3JlQWRhcHRlcihBZG1pbkZpcmVzdG9yZUFkYXB0ZXIpO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWZpcmVzdG9yZS1hZGFwdGVycy1hZG1pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvYWRhcHRlcnMvYWRtaW4vbngtZGRkLWZpcmVzdG9yZS1hZGFwdGVycy1hZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["_provideFirestoreAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"nx-ddd-firestore-adapters-admin.mjs","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/adapters/admin/admin.adapter.ts","../../../../../packages/@nx-ddd/firestore/src/lib/adapters/admin/nx-ddd-firestore-adapters-admin.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport admin from 'firebase-admin';\nimport { Subject } from 'rxjs';\nimport { DocumentData, Transaction } from 'firebase-admin/firestore';\nimport {\n DocumentChangeAction,\n DocumentReference,\n CollectionReference as _CollectionReference,\n CollectionGroup as _CollectionGroup,\n Query as _Query } from '@nx-ddd/firestore';\nimport { FirestoreAdapter, QueryFn as _QueryFn, WhereFilterOp, provideFirestoreAdapter as _provideFirestoreAdapter } from '@nx-ddd/firestore';\n\ntype CollectionReference<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = _CollectionReference<AppModelType, DbModelType, admin.firestore.CollectionReference<AppModelType, DbModelType>>;\n\ntype CollectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _CollectionGroup<AppModelType, DbModelType, admin.firestore.CollectionGroup<AppModelType, DbModelType>>;\n\ntype Query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _Query<AppModelType, DbModelType, admin.firestore.Query<AppModelType, DbModelType>>;\n\ntype QueryFn<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _QueryFn<AppModelType, DbModelType, admin.firestore.Query>\n\ntype Origin<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = admin.firestore.CollectionReference<AppModelType, DbModelType>\n | admin.firestore.CollectionGroup<AppModelType, DbModelType>\n | admin.firestore.Query<AppModelType, DbModelType>;\n\ntype CollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = CollectionReference<AppModelType, DbModelType> \n | CollectionGroup<AppModelType, DbModelType>\n | Query<AppModelType, DbModelType>;\n\n// Utility type to map Origin to CollectionLike\ntype InferCollectionLike<O extends Origin> = \n O extends admin.firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> :\n O extends admin.firestore.CollectionGroup<infer A, infer B> ? CollectionGroup<A, B> :\n O extends admin.firestore.Query<infer A, infer B> ? Query<A, B> :\n never;\n\nexport function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O> {\n return {\n __ref: origin,\n stateChanges: () => {\n const subject = new Subject<DocumentChangeAction<any>[]>();\n origin.onSnapshot(snapshot => {\n const actions = snapshot.docChanges().map(change => ({\n type: change.type, payload: {doc: change.doc},\n }));\n subject.next(actions);\n });\n return subject.asObservable();\n },\n get: () => origin.get(),\n count: () => origin.get().then(snapshot => snapshot.size),\n } as never as InferCollectionLike<O>;\n}\n\nexport function unwrapCollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n>(\n collection: CollectionLike<AppModelType, DbModelType>\n): Origin<AppModelType, DbModelType> {\n return collection.__ref;\n}\n\n@Injectable()\nexport class AdminFirestoreAdapter<Date> extends FirestoreAdapter<Date> {\n protected firestore = admin.firestore();\n\n get FieldValue(): typeof admin.firestore.FieldValue {\n return admin.firestore.FieldValue; \n }\n\n get Timestamp(): typeof admin.firestore.Timestamp {\n return admin.firestore.Timestamp; \n }\n\n get FieldPath(): typeof admin.firestore.FieldPath {\n return admin.firestore.FieldPath;\n }\n\n protected isTimestamp(v: any): v is admin.firestore.Timestamp {\n return v instanceof this.Timestamp;\n }\n\n protected isFieldValue(v: any): v is admin.firestore.FieldValue {\n return v instanceof this.FieldValue;\n }\n\n convertDateToTimestamp(date: Date): admin.firestore.Timestamp {\n if (this.dateAdapter.isDate(date) && this.dateAdapter.isValid(date)) {\n return admin.firestore.Timestamp.fromDate(this.dateAdapter.getJsDate(date));\n }\n throw new Error(`Invalid date: ${date}`);\n }\n\n doc(path: string): DocumentReference<any, admin.firestore.DocumentReference> {\n const docRef = this.firestore.doc(path);\n return {\n __ref: docRef,\n exists: () => docRef.get().then(snapshot => snapshot.exists),\n set: (data, options?) => docRef.set(data, options),\n get: () => docRef.get(),\n update: (data) => docRef.update(data),\n delete: () => docRef.delete(),\n };\n }\n\n collection<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): CollectionReference<AppModelType, DbModelType> {\n const collectionRef = this.firestore.collection(path);\n return wrapCollectionLike(collectionRef) as CollectionReference<AppModelType, DbModelType>;\n }\n\n collectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(collectionId: string): CollectionGroup<AppModelType, DbModelType> {\n const collectionRef = this.firestore.collectionGroup(collectionId);\n return wrapCollectionLike(collectionRef) as CollectionGroup<AppModelType, DbModelType>;\n }\n \n runTransaction<T>(updateFunction: (transaction: Transaction) => Promise<T>) {\n return this.firestore.runTransaction(updateFunction);\n }\n\n query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(\n collection: CollectionLike<AppModelType, DbModelType>,\n ...queryFnArray: QueryFn<AppModelType, DbModelType>[]\n ): Query<AppModelType, DbModelType> {\n const ref = unwrapCollectionLike<AppModelType, DbModelType>(collection);\n const query = queryFnArray.reduce((_ref, queryFn) => queryFn(_ref), ref);\n return wrapCollectionLike(query) as Query<AppModelType, DbModelType>;\n }\n\n where<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<AppModelType, DbModelType> {\n return (collection: Origin<AppModelType, DbModelType>) => collection.where(key, evaluation, value); \n }\n\n orderBy<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(key: string, order: 'asc' | 'desc' = 'asc'): QueryFn<AppModelType, DbModelType> {\n return (collection: Origin<AppModelType, DbModelType>) => collection.orderBy(key, order);\n }\n\n limit<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(n: number): QueryFn<AppModelType, DbModelType> {\n return (collection: Origin<AppModelType, DbModelType>) => collection.limit(n);\n }\n\n batch() {\n return this.firestore.batch();\n }\n}\n\nexport function provideFirestoreAdapter() {\n return _provideFirestoreAdapter(AdminFirestoreAdapter);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_provideFirestoreAdapter"],"mappings":"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"}
@@ -93,10 +93,10 @@ class FirebaseFirestoreAdapter extends FirestoreAdapter {
93
93
  batch() {
94
94
  return writeBatch(this.firestore);
95
95
  }
96
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirebaseFirestoreAdapter, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
97
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirebaseFirestoreAdapter });
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirebaseFirestoreAdapter, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
97
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirebaseFirestoreAdapter });
98
98
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirebaseFirestoreAdapter, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirebaseFirestoreAdapter, decorators: [{
100
100
  type: Injectable
101
101
  }], ctorParameters: () => [{ type: undefined }] });
102
102
 
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-firestore-adapters-firebase.mjs","sources":["../tmp-esm2022/adapters/firebase/firebase.adapter.js","../tmp-esm2022/adapters/firebase/nx-ddd-firestore-adapters-firebase.js"],"sourcesContent":["import { doc, collection, collectionGroup, FieldValue, Timestamp, setDoc, getDoc, getDocs, getFirestore, onSnapshot, deleteDoc, writeBatch, query, orderBy, limit, updateDoc, where, FieldPath } from 'firebase/firestore';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { FirestoreAdapter } from '@nx-ddd/firestore';\nimport * as i0 from \"@angular/core\";\nexport function wrapCollectionLike(origin) {\n return {\n __ref: origin,\n stateChanges: () => {\n const subject = new Subject();\n onSnapshot(origin, (snapshot) => subject.next(snapshot.docChanges().map(change => ({\n type: change.type,\n payload: {\n doc: change.doc\n },\n }))));\n return subject.asObservable();\n },\n get: () => getDocs(origin),\n count: () => getDocs(origin).then(snapshot => snapshot.size),\n };\n}\nexport function unwrapCollectionLike(collection) {\n return collection.__ref;\n}\nexport class FirebaseFirestoreAdapter extends FirestoreAdapter {\n firestore;\n constructor(firestore = getFirestore()) {\n super();\n this.firestore = firestore;\n }\n get FieldValue() {\n return FieldValue;\n }\n get Timestamp() {\n return Timestamp;\n }\n get FieldPath() {\n return new FieldPath();\n }\n isTimestamp(v) {\n return v instanceof Timestamp;\n }\n isFieldValue(v) {\n return v instanceof this.FieldValue;\n }\n doc(path) {\n const docRef = doc(this.firestore, path);\n return {\n __ref: docRef,\n exists: () => getDoc(docRef).then(doc => doc.exists()),\n set: (data) => setDoc(docRef, data),\n get: () => getDoc(docRef),\n update: (data) => updateDoc(docRef, data),\n delete: () => deleteDoc(docRef),\n stateChanges: () => {\n const subject = new Subject();\n onSnapshot(docRef, (doc) => subject.next({\n id: doc.id,\n ref: doc.ref,\n data: () => doc.data(),\n get: (fieldPath) => doc.get(fieldPath),\n }));\n return subject.asObservable();\n },\n };\n }\n collection(path) {\n const ref = collection(this.firestore, path);\n return wrapCollectionLike(ref);\n }\n collectionGroup(collectionId) {\n const ref = collectionGroup(this.firestore, collectionId);\n return wrapCollectionLike(ref);\n }\n query(collection, ...queryFnArray) {\n const ref = unwrapCollectionLike(collection);\n return wrapCollectionLike(query(ref, ...queryFnArray.map(queryFn => queryFn())));\n }\n where(fieldPath, opStr, value) {\n return () => where(fieldPath, opStr, value);\n }\n orderBy(key, order = 'asc') {\n return () => orderBy(key, order);\n }\n limit(n) {\n return () => limit(n);\n }\n runTransaction() {\n throw new Error('FirebaseFirestoreAdapter#runTransaction is not implemented');\n }\n batch() {\n return writeBatch(this.firestore);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirebaseFirestoreAdapter, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirebaseFirestoreAdapter });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirebaseFirestoreAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvYWRhcHRlcnMvZmlyZWJhc2UvZmlyZWJhc2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQXNCLE1BQU0sb0JBQW9CLENBQUM7QUFDL08sT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDTCxnQkFBZ0IsRUFVakIsTUFBTSxtQkFBbUIsQ0FBQzs7QUEyQzNCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBbUIsTUFBUztJQUM1RCxPQUFPO1FBQ0wsS0FBSyxFQUFFLE1BQU07UUFDYixZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUErQixDQUFDO1lBQzNELFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pGLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztpQkFDaEI7YUFDRixDQUFDLENBQUMsQ0FB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QUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFtRCxDQUFDO0lBQ25GLENBQUM7SUFFRCxLQUFLLENBSUgsVUFBMEQsRUFDMUQsR0FBRyxZQUF1QjtRQUUxQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELEtBQUssQ0FHSCxTQUFpQixFQUFFLEtBQW9CLEVBQUUsS0FBYztRQUN2RCxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBR0wsR0FBVyxFQUFFLFFBQXdCLEtBQUs7UUFDMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBR0gsQ0FBUztRQUNULE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7dUdBcEdVLHdCQUF3QjsyR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZG9jLCBjb2xsZWN0aW9uLCBjb2xsZWN0aW9uR3JvdXAsIEZpZWxkVmFsdWUsIFRpbWVzdGFtcCwgc2V0RG9jLCBnZXREb2MsIGdldERvY3MsIGdldEZpcmVzdG9yZSwgb25TbmFwc2hvdCwgZGVsZXRlRG9jLCB3cml0ZUJhdGNoLCBxdWVyeSwgb3JkZXJCeSwgbGltaXQsIHVwZGF0ZURvYywgd2hlcmUsIEZpZWxkUGF0aCwgZ2V0Q291bnRGcm9tU2VydmVyIH0gZnJvbSAnZmlyZWJhc2UvZmlyZXN0b3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIGZpcmVzdG9yZSBmcm9tICdmaXJlYmFzZS9maXJlc3RvcmUnO1xuaW1wb3J0IHtcbiAgRmlyZXN0b3JlQWRhcHRlcixcbiAgUXVlcnlGbiBhcyBfUXVlcnlGbixcbiAgV2hlcmVGaWx0ZXJPcCxcbiAgRG9jdW1lbnRDaGFuZ2VBY3Rpb24sXG4gIERvY3VtZW50U25hcHNob3QsXG4gIENvbGxlY3Rpb25SZWZlcmVuY2UgYXMgX0NvbGxlY3Rpb25SZWZlcmVuY2UsXG4gIENvbGxlY3Rpb25Hcm91cCBhcyBfQ29sbGVjdGlvbkdyb3VwLFxuICBRdWVyeSBhcyBfUXVlcnksXG4gIERvY3VtZW50UmVmZXJlbmNlLFxuICBEb2N1bWVudERhdGFcbn0gZnJvbSAnQG54LWRkZC9maXJlc3RvcmUnO1xuXG50eXBlIENvbGxlY3Rpb25SZWZlcmVuY2U8XG4gIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4+ID0gX0NvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgZmlyZXN0b3JlLkNvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4+O1xuXG50eXBlIENvbGxlY3Rpb25Hcm91cDxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPiA9IF9Db2xsZWN0aW9uR3JvdXA8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgZmlyZXN0b3JlLlF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+PjtcblxudHlwZSBRdWVyeTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPiA9IF9RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBmaXJlc3RvcmUuUXVlcnk8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4+O1xuXG50eXBlIFF1ZXJ5Rm48XG4gIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGFcbj4gPSBfUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBmaXJlc3RvcmUuUXVlcnlDb25zdHJhaW50PlxuXG50eXBlIE9yaWdpbjxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBmaXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IGZpcmVzdG9yZS5RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IGZpcmVzdG9yZS5RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcblxudHlwZSBDb2xsZWN0aW9uTGlrZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IFxuICB8IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IFF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuXG4vLyBVdGlsaXR5IHR5cGUgdG8gbWFwIE9yaWdpbiB0byBDb2xsZWN0aW9uTGlrZVxudHlwZSBJbmZlckNvbGxlY3Rpb25MaWtlPE8gZXh0ZW5kcyBPcmlnaW4+ID0gXG4gIE8gZXh0ZW5kcyBmaXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxpbmZlciBBLCBpbmZlciBCPiA/IENvbGxlY3Rpb25SZWZlcmVuY2U8QSwgQj4gOlxuICBPIGV4dGVuZHMgZmlyZXN0b3JlLlF1ZXJ5PGluZmVyIEEsIGluZmVyIEI+ID8gQ29sbGVjdGlvbkdyb3VwPEEsIEI+IDpcbiAgTyBleHRlbmRzIGZpcmVzdG9yZS5RdWVyeTxpbmZlciBBLCBpbmZlciBCPiA/IFF1ZXJ5PEEsIEI+IDpcbiAgbmV2ZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwQ29sbGVjdGlvbkxpa2U8TyBleHRlbmRzIE9yaWdpbj4ob3JpZ2luOiBPKTogSW5mZXJDb2xsZWN0aW9uTGlrZTxPPiB7XG4gIHJldHVybiB7XG4gICAgX19yZWY6IG9yaWdpbixcbiAgICBzdGF0ZUNoYW5nZXM6ICgpID0+IHtcbiAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDxEb2N1bWVudENoYW5nZUFjdGlvbjxhbnk+W10+KCk7XG4gICAgICBvblNuYXBzaG90KG9yaWdpbiwgKHNuYXBzaG90KSA9PiBzdWJqZWN0Lm5leHQoc25hcHNob3QuZG9jQ2hhbmdlcygpLm1hcChjaGFuZ2UgPT4gKHtcbiAgICAgICAgdHlwZTogY2hhbmdlLnR5cGUsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBkb2M6IGNoYW5nZS5kb2NcbiAgICAgICAgfSxcbiAgICAgIH0pKSkpO1xuICAgICAgcmV0dXJuIHN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfSxcbiAgICBnZXQ6ICgpID0+IGdldERvY3Mob3JpZ2luKSxcbiAgICBjb3VudDogKCkgPT4gZ2V0RG9jcyhvcmlnaW4pLnRoZW4oc25hcHNob3QgPT4gc25hcHNob3Quc2l6ZSksXG4gIH0gYXMgbmV2ZXIgYXMgSW5mZXJDb2xsZWN0aW9uTGlrZTxPPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcENvbGxlY3Rpb25MaWtlPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhXG4+KFxuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uTGlrZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuKTogT3JpZ2luPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgcmV0dXJuIGNvbGxlY3Rpb24uX19yZWY7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaXJlYmFzZUZpcmVzdG9yZUFkYXB0ZXI8RD4gZXh0ZW5kcyBGaXJlc3RvcmVBZGFwdGVyPEQ+IHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlyZXN0b3JlID0gZ2V0RmlyZXN0b3JlKCkpIHsgc3VwZXIoKSB9XG5cbiAgZ2V0IEZpZWxkVmFsdWUoKTogdHlwZW9mIEZpZWxkVmFsdWUge1xuICAgIHJldHVybiBGaWVsZFZhbHVlOyAgXG4gIH1cblxuICBnZXQgVGltZXN0YW1wKCk6IHR5cGVvZiBUaW1lc3RhbXAge1xuICAgIHJldHVybiBUaW1lc3RhbXA7ICBcbiAgfVxuXG4gIGdldCBGaWVsZFBhdGgoKTogRmllbGRQYXRoIHtcbiAgICByZXR1cm4gbmV3IEZpZWxkUGF0aCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzVGltZXN0YW1wKHY6IGFueSk6IHYgaXMgVGltZXN0YW1wIHtcbiAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFRpbWVzdGFtcDtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0ZpZWxkVmFsdWUodjogYW55KTogdiBpcyBGaWVsZFZhbHVlIHtcbiAgICByZXR1cm4gdiBpbnN0YW5jZW9mIHRoaXMuRmllbGRWYWx1ZTtcbiAgfVxuXG4gIGRvYyhwYXRoOiBzdHJpbmcpOiBEb2N1bWVudFJlZmVyZW5jZTxhbnk+IHtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuICAgIHJldHVybiB7XG4gICAgICBfX3JlZjogZG9jUmVmLFxuICAgICAgZXhpc3RzOiAoKSA9PiBnZXREb2MoZG9jUmVmKS50aGVuKGRvYyA9PiBkb2MuZXhpc3RzKCkpLFxuICAgICAgc2V0OiAoZGF0YSkgPT4gc2V0RG9jKGRvY1JlZiwgZGF0YSksXG4gICAgICBnZXQ6ICgpID0+IGdldERvYyhkb2NSZWYpLFxuICAgICAgdXBkYXRlOiAoZGF0YSkgPT4gdXBkYXRlRG9jKGRvY1JlZiwgZGF0YSksXG4gICAgICBkZWxldGU6ICgpID0+IGRlbGV0ZURvYyhkb2NSZWYpLFxuICAgICAgc3RhdGVDaGFuZ2VzOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDxEb2N1bWVudFNuYXBzaG90PGFueT4+KCk7XG4gICAgICAgIG9uU25hcHNob3QoZG9jUmVmLCAoZG9jKSA9PiBzdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIGlkOiBkb2MuaWQsXG4gICAgICAgICAgcmVmOiBkb2MucmVmLFxuICAgICAgICAgIGRhdGE6ICgpID0+IGRvYy5kYXRhKCksXG4gICAgICAgICAgZ2V0OiAoZmllbGRQYXRoOiBzdHJpbmcpID0+IGRvYy5nZXQoZmllbGRQYXRoKSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29sbGVjdGlvbjxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4ocGF0aDogc3RyaW5nKTogQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgcmVmID0gY29sbGVjdGlvbih0aGlzLmZpcmVzdG9yZSwgcGF0aCk7XG4gICAgcmV0dXJuIHdyYXBDb2xsZWN0aW9uTGlrZShyZWYpIGFzIENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG4gIH1cblxuICBjb2xsZWN0aW9uR3JvdXA8XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KGNvbGxlY3Rpb25JZDogc3RyaW5nKTogQ29sbGVjdGlvbkdyb3VwPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgICBjb25zdCByZWYgPSBjb2xsZWN0aW9uR3JvdXAodGhpcy5maXJlc3RvcmUsIGNvbGxlY3Rpb25JZCk7XG4gICAgcmV0dXJuIHdyYXBDb2xsZWN0aW9uTGlrZShyZWYpIGFzIENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG4gIH1cblxuICBxdWVyeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPixcbiAgICAuLi5xdWVyeUZuQXJyYXk6IFF1ZXJ5Rm5bXVxuICApOiBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgcmVmID0gdW53cmFwQ29sbGVjdGlvbkxpa2UoY29sbGVjdGlvbik7XG4gICAgcmV0dXJuIHdyYXBDb2xsZWN0aW9uTGlrZShxdWVyeShyZWYsIC4uLnF1ZXJ5Rm5BcnJheS5tYXAocXVlcnlGbiA9PiBxdWVyeUZuKCkpKSk7XG4gIH1cblxuICB3aGVyZTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oZmllbGRQYXRoOiBzdHJpbmcsIG9wU3RyOiBXaGVyZUZpbHRlck9wLCB2YWx1ZTogdW5rbm93bik6IFF1ZXJ5Rm4ge1xuICAgIHJldHVybiAoKSA9PiB3aGVyZShmaWVsZFBhdGgsIG9wU3RyLCB2YWx1ZSk7XG4gIH1cblxuICBvcmRlckJ5PFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihrZXk6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycpOiBRdWVyeUZuIHtcbiAgICByZXR1cm4gKCkgPT4gb3JkZXJCeShrZXksIG9yZGVyKTtcbiAgfVxuXG4gIGxpbWl0PFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihuOiBudW1iZXIpOiBRdWVyeUZuIHtcbiAgICByZXR1cm4gKCkgPT4gbGltaXQobik7XG4gIH1cblxuICBydW5UcmFuc2FjdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpcmViYXNlRmlyZXN0b3JlQWRhcHRlciNydW5UcmFuc2FjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGJhdGNoKCkge1xuICAgIHJldHVybiB3cml0ZUJhdGNoKHRoaXMuZmlyZXN0b3JlKTtcbiAgfVxufSJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWZpcmVzdG9yZS1hZGFwdGVycy1maXJlYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvYWRhcHRlcnMvZmlyZWJhc2UvbngtZGRkLWZpcmVzdG9yZS1hZGFwdGVycy1maXJlYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nx-ddd-firestore-adapters-firebase.mjs","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/adapters/firebase/firebase.adapter.ts","../../../../../packages/@nx-ddd/firestore/src/lib/adapters/firebase/nx-ddd-firestore-adapters-firebase.ts"],"sourcesContent":["import { doc, collection, collectionGroup, FieldValue, Timestamp, setDoc, getDoc, getDocs, getFirestore, onSnapshot, deleteDoc, writeBatch, query, orderBy, limit, updateDoc, where, FieldPath, getCountFromServer } from 'firebase/firestore';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport type firestore from 'firebase/firestore';\nimport {\n FirestoreAdapter,\n QueryFn as _QueryFn,\n WhereFilterOp,\n DocumentChangeAction,\n DocumentSnapshot,\n CollectionReference as _CollectionReference,\n CollectionGroup as _CollectionGroup,\n Query as _Query,\n DocumentReference,\n DocumentData\n} from '@nx-ddd/firestore';\n\ntype CollectionReference<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = _CollectionReference<AppModelType, DbModelType, firestore.CollectionReference<AppModelType, DbModelType>>;\n\ntype CollectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _CollectionGroup<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;\n\ntype Query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _Query<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;\n\ntype QueryFn<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _QueryFn<AppModelType, DbModelType, firestore.QueryConstraint>\n\ntype Origin<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = firestore.CollectionReference<AppModelType, DbModelType>\n | firestore.Query<AppModelType, DbModelType>\n | firestore.Query<AppModelType, DbModelType>;\n\ntype CollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = CollectionReference<AppModelType, DbModelType> \n | CollectionGroup<AppModelType, DbModelType>\n | Query<AppModelType, DbModelType>;\n\n// Utility type to map Origin to CollectionLike\ntype InferCollectionLike<O extends Origin> = \n O extends firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> :\n O extends firestore.Query<infer A, infer B> ? CollectionGroup<A, B> :\n O extends firestore.Query<infer A, infer B> ? Query<A, B> :\n never;\n\nexport function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O> {\n return {\n __ref: origin,\n stateChanges: () => {\n const subject = new Subject<DocumentChangeAction<any>[]>();\n onSnapshot(origin, (snapshot) => subject.next(snapshot.docChanges().map(change => ({\n type: change.type,\n payload: {\n doc: change.doc\n },\n }))));\n return subject.asObservable();\n },\n get: () => getDocs(origin),\n count: () => getDocs(origin).then(snapshot => snapshot.size),\n } as never as InferCollectionLike<O>;\n}\n\nexport function unwrapCollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n>(\n collection: CollectionLike<AppModelType, DbModelType>\n): Origin<AppModelType, DbModelType> {\n return collection.__ref;\n}\n\n@Injectable()\nexport class FirebaseFirestoreAdapter<D> extends FirestoreAdapter<D> {\n\n constructor(public firestore = getFirestore()) { super() }\n\n get FieldValue(): typeof FieldValue {\n return FieldValue; \n }\n\n get Timestamp(): typeof Timestamp {\n return Timestamp; \n }\n\n get FieldPath(): FieldPath {\n return new FieldPath();\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 doc(path: string): DocumentReference<any> {\n const docRef = doc(this.firestore, path);\n return {\n __ref: docRef,\n exists: () => getDoc(docRef).then(doc => doc.exists()),\n set: (data) => setDoc(docRef, data),\n get: () => getDoc(docRef),\n update: (data) => updateDoc(docRef, data),\n delete: () => deleteDoc(docRef),\n stateChanges: () => {\n const subject = new Subject<DocumentSnapshot<any>>();\n onSnapshot(docRef, (doc) => subject.next({\n id: doc.id,\n ref: doc.ref,\n data: () => doc.data(),\n get: (fieldPath: string) => doc.get(fieldPath),\n }));\n return subject.asObservable();\n },\n }\n }\n\n collection<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): CollectionReference<AppModelType, DbModelType> {\n const ref = collection(this.firestore, path);\n return wrapCollectionLike(ref) as CollectionReference<AppModelType, DbModelType>;\n }\n\n collectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(collectionId: string): CollectionGroup<AppModelType, DbModelType> {\n const ref = collectionGroup(this.firestore, collectionId);\n return wrapCollectionLike(ref) as CollectionReference<AppModelType, DbModelType>;\n }\n\n query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(\n collection: CollectionReference<AppModelType, DbModelType>,\n ...queryFnArray: QueryFn[]\n ): Query<AppModelType, DbModelType> {\n const ref = unwrapCollectionLike(collection);\n return wrapCollectionLike(query(ref, ...queryFnArray.map(queryFn => queryFn())));\n }\n\n where<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn {\n return () => where(fieldPath, opStr, value);\n }\n\n orderBy<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(key: string, order: 'asc' | 'desc' = 'asc'): QueryFn {\n return () => orderBy(key, order);\n }\n\n limit<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(n: number): QueryFn {\n return () => limit(n);\n }\n\n runTransaction() {\n throw new Error('FirebaseFirestoreAdapter#runTransaction is not implemented');\n }\n\n batch() {\n return writeBatch(this.firestore);\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -57,10 +57,10 @@ class DateAdapter {
57
57
  convertToDate(value) {
58
58
  return value;
59
59
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: DateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
61
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: DateAdapter, providedIn: 'root' });
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
61
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DateAdapter, providedIn: 'root' });
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: DateAdapter, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DateAdapter, decorators: [{
64
64
  type: Injectable,
65
65
  args: [{ providedIn: 'root' }]
66
66
  }] });
@@ -81,10 +81,10 @@ class DayjsAdapter {
81
81
  convertToDayjs(value) {
82
82
  return dayjs(value);
83
83
  }
84
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: DayjsAdapter, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
85
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: DayjsAdapter, providedIn: 'root' });
84
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DayjsAdapter, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
85
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DayjsAdapter, providedIn: 'root' });
86
86
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: DayjsAdapter, decorators: [{
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DayjsAdapter, decorators: [{
88
88
  type: Injectable,
89
89
  args: [{ providedIn: 'root' }]
90
90
  }], ctorParameters: () => [{ type: DateAdapter }] });
@@ -482,10 +482,10 @@ class FirestoreQuery extends BaseFirestoreQuery {
482
482
  get dao() {
483
483
  return new FirestoreDAO(this.adapter, this.pathBuilder);
484
484
  }
485
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
486
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirestoreQuery });
485
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
486
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirestoreQuery });
487
487
  }
488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirestoreQuery, decorators: [{
488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirestoreQuery, decorators: [{
489
489
  type: Injectable
490
490
  }] });
491
491
  function getFirestoreQuery(entity, adapter = inject(FirestoreAdapter)) {
@@ -595,10 +595,10 @@ class CachedFirestoreQuery extends FirestoreQuery {
595
595
  local: this.listChanges().pipe(map$1(items => items.length)),
596
596
  });
597
597
  }
598
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: CachedFirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
599
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: CachedFirestoreQuery });
598
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CachedFirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
599
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CachedFirestoreQuery });
600
600
  }
601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: CachedFirestoreQuery, decorators: [{
601
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CachedFirestoreQuery, decorators: [{
602
602
  type: Injectable
603
603
  }] });
604
604
 
@@ -768,10 +768,10 @@ class FirestoreRepository extends BaseFirestoreRepository {
768
768
  get pathBuilder() {
769
769
  return pathBuilderFactory(this.collectionPath);
770
770
  }
771
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirestoreRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
772
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirestoreRepository });
771
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirestoreRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
772
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirestoreRepository });
773
773
  }
774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FirestoreRepository, decorators: [{
774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: FirestoreRepository, decorators: [{
775
775
  type: Injectable
776
776
  }] });
777
777
  function getFirestoreRepository(entity, adapter = inject(FirestoreAdapter)) {
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-firestore.mjs","sources":["../tmp-esm2022/decorators/decorators.js","../tmp-esm2022/adapters/dayjs/dayjs.adatper.js","../tmp-esm2022/adapters/base/base.adapter.js","../tmp-esm2022/converter/converter.js","../tmp-esm2022/dao/firestore.dao.js","../tmp-esm2022/path-builder/path-builder.js","../tmp-esm2022/query/firestore.query.js","../tmp-esm2022/query/v2/query.js","../tmp-esm2022/query/v2/cached-query.js","../tmp-esm2022/repository/repository.js","../tmp-esm2022/nx-ddd-firestore.js"],"sourcesContent":["import { makeDecoratorFactories } from '@nx-ddd/core';\nexport const FIRESTORE_ANNOTATIONS = 'firestore_annotations';\nexport const { createDecorator, createPropsDecorator, createClassDecorator, getAnnotations, } = makeDecoratorFactories((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), FIRESTORE_ANNOTATIONS);\n/** @deprecated use getAnnotations */\nexport function getFirestoreAnnotations(target) {\n return getAnnotations(target);\n}\nexport const ID = createDecorator('id');\nexport const String = createDecorator('string');\nexport const Null = createDecorator('null');\nexport const Geopoint = createDecorator('geopoint');\nexport const Boolean = createDecorator('boolean');\nexport const Timestamp = createDecorator('timestamp');\nexport const Number = createDecorator('number');\nexport const Map = (childType, props) => createDecorator('map', { childType })(props);\nexport const Array = (childType, props) => createDecorator('array', { childType })(props);\nexport const Reference = createDecorator('reference');\nexport function getCollection(target) {\n const annotations = getAnnotations(target);\n const annotation = annotations.find((annotation) => annotation.type === 'collection');\n return annotation.name;\n}\nexport const Firestore = {\n Collection: createClassDecorator('collection'),\n ID: ID,\n String: String,\n Null: Null,\n Geopoint: Geopoint,\n Boolean: Boolean,\n Timestamp: Timestamp,\n Number: Number,\n Map: Map,\n Array: Array,\n Reference: Reference,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvZGVjb3JhdG9ycy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsQ0FBQztBQVc3RCxNQUFNLENBQUMsTUFBTSxFQUNYLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixHQUFHLHNCQUFzQixDQUt4QixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFDLENBQUMsRUFDbkcscUJBQXFCLENBQ3RCLENBQUM7QUFFRixxQ0FBcUM7QUFDckMsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQVc7SUFDakQsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBcUIsRUFBRSxLQUF1QixFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFxQixFQUFFLEtBQXVCLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFdEQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFXO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO0lBQzNGLE9BQVEsVUFBa0IsQ0FBQyxJQUFJLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixVQUFVLEVBQUUsb0JBQW9CLENBQW1CLFlBQVksQ0FBQztJQUNoRSxFQUFFLEVBQUUsRUFBRTtJQUNOLE1BQU0sRUFBRSxNQUFNO0lBQ2QsSUFBSSxFQUFFLElBQUk7SUFDVixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsT0FBTztJQUNoQixTQUFTLEVBQUUsU0FBUztJQUNwQixNQUFNLEVBQUUsTUFBTTtJQUNkLEdBQUcsRUFBRSxHQUFHO0lBQ1IsS0FBSyxFQUFFLEtBQUs7SUFDWixTQUFTLEVBQUUsU0FBUztDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFrZURlY29yYXRvckZhY3RvcmllcyB9IGZyb20gJ0BueC1kZGQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGSVJFU1RPUkVfQU5OT1RBVElPTlMgPSAnZmlyZXN0b3JlX2Fubm90YXRpb25zJztcbmV4cG9ydCB0eXBlIEZpcmVzdG9yZUZpZWxkVHlwZSA9ICdpZCcgfCAnYm9vbGVhbicgfCAnbnVtYmVyJyBcbiAgfCAndGltZXN0YW1wJyB8ICdzdHJpbmcnIHwgJ2dlb3BvaW50JyB8ICdudWxsJyBcbiAgfCAnbWFwJyB8ICdhcnJheScgfCAncmVmZXJlbmNlJztcbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0b3JlQW5ub3RhdGlvbiB7XG4gIHR5cGU6IEZpcmVzdG9yZUZpZWxkVHlwZTtcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIHByb3BOYW1lOiBzdHJpbmc7XG4gIGNoaWxkVHlwZTogYW55O1xufVxuXG5leHBvcnQgY29uc3Qge1xuICBjcmVhdGVEZWNvcmF0b3IsXG4gIGNyZWF0ZVByb3BzRGVjb3JhdG9yLFxuICBjcmVhdGVDbGFzc0RlY29yYXRvcixcbiAgZ2V0QW5ub3RhdGlvbnMsXG59ID0gbWFrZURlY29yYXRvckZhY3RvcmllczxcbiAgRmlyZXN0b3JlRmllbGRUeXBlLFxuICBGaXJlc3RvcmVBbm5vdGF0aW9uLFxuICB7Y2hpbGRUeXBlPzogYW55fVxuPihcbiAgKHR5cGUsIGZpZWxkTmFtZSwgcHJvcE5hbWUsIG9wdGlvbnMpID0+ICh7dHlwZSwgZmllbGROYW1lLCBwcm9wTmFtZSwgY2hpbGRUeXBlOiBvcHRpb25zLmNoaWxkVHlwZX0pLFxuICBGSVJFU1RPUkVfQU5OT1RBVElPTlNcbik7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgZ2V0QW5ub3RhdGlvbnMgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJlc3RvcmVBbm5vdGF0aW9ucyh0YXJnZXQ6IGFueSk6IEZpcmVzdG9yZUFubm90YXRpb25bXSB7XG4gIHJldHVybiBnZXRBbm5vdGF0aW9ucyh0YXJnZXQpO1xufVxuXG5leHBvcnQgY29uc3QgSUQgPSBjcmVhdGVEZWNvcmF0b3IoJ2lkJyk7XG5leHBvcnQgY29uc3QgU3RyaW5nID0gY3JlYXRlRGVjb3JhdG9yKCdzdHJpbmcnKTtcbmV4cG9ydCBjb25zdCBOdWxsID0gY3JlYXRlRGVjb3JhdG9yKCdudWxsJyk7XG5leHBvcnQgY29uc3QgR2VvcG9pbnQgPSBjcmVhdGVEZWNvcmF0b3IoJ2dlb3BvaW50Jyk7XG5leHBvcnQgY29uc3QgQm9vbGVhbiA9IGNyZWF0ZURlY29yYXRvcignYm9vbGVhbicpO1xuZXhwb3J0IGNvbnN0IFRpbWVzdGFtcCA9IGNyZWF0ZURlY29yYXRvcigndGltZXN0YW1wJyk7XG5leHBvcnQgY29uc3QgTnVtYmVyID0gY3JlYXRlRGVjb3JhdG9yKCdudW1iZXInKTtcbmV4cG9ydCBjb25zdCBNYXAgPSAoY2hpbGRUeXBlPzogKCkgPT4gYW55LCBwcm9wcz86IHtuYW1lPzogc3RyaW5nfSkgPT4gY3JlYXRlRGVjb3JhdG9yKCdtYXAnLCB7Y2hpbGRUeXBlfSkocHJvcHMpO1xuZXhwb3J0IGNvbnN0IEFycmF5ID0gKGNoaWxkVHlwZT86ICgpID0+IGFueSwgcHJvcHM/OiB7bmFtZT86IHN0cmluZ30pID0+IGNyZWF0ZURlY29yYXRvcignYXJyYXknLCB7Y2hpbGRUeXBlfSkocHJvcHMpO1xuZXhwb3J0IGNvbnN0IFJlZmVyZW5jZSA9IGNyZWF0ZURlY29yYXRvcigncmVmZXJlbmNlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uKHRhcmdldDogYW55KTogc3RyaW5nIHtcbiAgY29uc3QgYW5ub3RhdGlvbnMgPSBnZXRBbm5vdGF0aW9ucyh0YXJnZXQpO1xuICBjb25zdCBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZmluZCgoYW5ub3RhdGlvbjogYW55KSA9PiBhbm5vdGF0aW9uLnR5cGUgPT09ICdjb2xsZWN0aW9uJyk7XG4gIHJldHVybiAoYW5ub3RhdGlvbiBhcyBhbnkpLm5hbWU7XG59XG5cbmV4cG9ydCBjb25zdCBGaXJlc3RvcmUgPSB7XG4gIENvbGxlY3Rpb246IGNyZWF0ZUNsYXNzRGVjb3JhdG9yPHsgbmFtZTogc3RyaW5nIH0+KCdjb2xsZWN0aW9uJyksXG4gIElEOiBJRCxcbiAgU3RyaW5nOiBTdHJpbmcsXG4gIE51bGw6IE51bGwsXG4gIEdlb3BvaW50OiBHZW9wb2ludCxcbiAgQm9vbGVhbjogQm9vbGVhbixcbiAgVGltZXN0YW1wOiBUaW1lc3RhbXAsXG4gIE51bWJlcjogTnVtYmVyLFxuICBNYXA6IE1hcCxcbiAgQXJyYXk6IEFycmF5LFxuICBSZWZlcmVuY2U6IFJlZmVyZW5jZSxcbn07XG4iXX0=","import { Injectable } from '@angular/core';\nimport dayjs from 'dayjs';\nimport * as i0 from \"@angular/core\";\nexport class DateAdapter {\n isDate(value) {\n return value instanceof Date || dayjs.isDayjs(value);\n }\n isValid(value) {\n return this.isDate(value) && !isNaN(value.getTime());\n }\n getJsDate(value) {\n return value;\n }\n convertToDate(value) {\n return value;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DateAdapter, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DateAdapter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\nexport class DayjsAdapter {\n dateAdapter;\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n isDayjs(value) {\n return dayjs.isDayjs(value);\n }\n isValid(value) {\n return this.isDayjs(value) && value.isValid();\n }\n getJsDate(value) {\n return value.toDate();\n }\n convertToDayjs(value) {\n return dayjs(value);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DayjsAdapter, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DayjsAdapter, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DayjsAdapter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: DateAdapter }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMuYWRhdHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvYWRhcHRlcnMvZGF5anMvZGF5anMuYWRhdHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFHMUIsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFJLEtBQVU7UUFDbEIsT0FBTyxLQUFLLFlBQVksSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsU0FBUyxDQUFJLEtBQVU7UUFDckIsT0FBTyxLQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWEsQ0FBSSxLQUFXO1FBQzFCLE9BQU8sS0FBVSxDQUFDO0lBQ3BCLENBQUM7dUdBZlUsV0FBVzsyR0FBWCxXQUFXLGNBREUsTUFBTTs7MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQW9CbEMsTUFBTSxPQUFPLFlBQVk7SUFDTTtJQUE3QixZQUE2QixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFekQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBa0I7UUFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWMsQ0FBSSxLQUFVO1FBQzFCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBTSxDQUFDO0lBQzNCLENBQUM7dUdBakJVLFlBQVk7MkdBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGF0ZUFkYXB0ZXIge1xuICBpc0RhdGU8RD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIEQge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgZGF5anMuaXNEYXlqcyh2YWx1ZSk7XG4gIH1cblxuICBpc1ZhbGlkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGU8RGF0ZT4odmFsdWUpICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgZ2V0SnNEYXRlPEQ+KHZhbHVlOiBhbnkpOiBEIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgRDtcbiAgfVxuXG4gIGNvbnZlcnRUb0RhdGU8RD4odmFsdWU6IERhdGUpOiBEIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgRDtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERheWpzQWRhcHRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyKSB7fVxuXG4gIGlzRGF5anModmFsdWU6IGFueSk6IHZhbHVlIGlzIGRheWpzLkRheWpzIHtcbiAgICByZXR1cm4gZGF5anMuaXNEYXlqcyh2YWx1ZSk7XG4gIH1cblxuICBpc1ZhbGlkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0RheWpzKHZhbHVlKSAmJiB2YWx1ZS5pc1ZhbGlkKCk7XG4gIH1cblxuICBnZXRKc0RhdGUodmFsdWU6IGRheWpzLkRheWpzKTogRGF0ZSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvRGF0ZSgpO1xuICB9XG5cbiAgY29udmVydFRvRGF5anM8RD4odmFsdWU6IGFueSk6IEQge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSkgYXMgRDtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { getFirestoreAnnotations } from '../../decorators/decorators';\nimport { walkObj } from '@nx-ddd/core';\nimport { get } from 'lodash-es';\nimport { DateAdapter } from '../dayjs';\nexport class FirestoreAdapter {\n dateAdapter = inject(DateAdapter);\n //** @deprecated */\n toFirestoreData(entity) {\n return Object.entries(entity).reduce((pre, [k, v]) => ({\n ...pre, [k]: this.dateAdapter.isDate(v) ? this.convertDateToTimestamp(v) : v,\n }), {});\n }\n //** @deprecated */\n fromFirestoreData(data) {\n return Object.entries(data).reduce((pre, [k, v]) => ({\n ...pre, [k]: this.isTimestamp(v) ? this.convertTimestampToDate(v) : v,\n }), {});\n }\n toFirestore(obj, Entity) {\n const newObj = {};\n for (const annotation of getFirestoreAnnotations(Entity)) {\n const _value = get(obj, annotation.propName);\n if (_value === null) {\n newObj[annotation.fieldName] = null;\n continue;\n }\n switch (annotation.type) {\n case 'id':\n case 'string':\n case 'number':\n case 'boolean': {\n if (typeof _value === 'undefined')\n break;\n newObj[annotation.fieldName] = _value;\n break;\n }\n case 'timestamp': {\n if (typeof _value === 'undefined')\n break;\n if (!this.dateAdapter.isDate(_value)) {\n console.error('[FirestoreAdapter] _value:', _value);\n throw new Error(`Invalid Date Type: ${_value}`);\n }\n newObj[annotation.fieldName] = this.convertDateToTimestamp(_value);\n break;\n }\n case 'array': {\n if (typeof annotation?.childType === 'undefined') {\n if (_value)\n newObj[annotation.fieldName] = _value;\n }\n else {\n const Type = annotation.childType();\n if (typeof _value === 'undefined')\n break;\n if (!Array.isArray(_value)) {\n newObj[annotation.fieldName] = [];\n break;\n }\n const value = (_value ?? []).map(v => {\n switch (Type) {\n case String:\n case Number:\n return v;\n default:\n return this.toFirestore(v, Type);\n }\n });\n if (value)\n newObj[annotation.fieldName] = value;\n }\n break;\n }\n case 'map': {\n if (typeof _value === 'undefined')\n break;\n if (typeof annotation?.childType === 'undefined') {\n if (_value)\n newObj[annotation.fieldName] = _value;\n }\n else {\n const Type = annotation.childType();\n const value = this.toFirestore(_value, Type);\n if (value)\n newObj[annotation.fieldName] = value;\n }\n break;\n }\n }\n }\n return newObj;\n }\n fromFirestore(data, Entity) {\n const newObj = {};\n for (const annotation of getFirestoreAnnotations(Entity)) {\n const _value = data[annotation.fieldName];\n if (typeof _value === 'undefined')\n continue;\n if (_value === null) {\n newObj[annotation.propName] = null;\n continue;\n }\n switch (annotation.type) {\n case 'id':\n case 'string':\n case 'number':\n case 'boolean': {\n newObj[annotation.propName] = _value;\n break;\n }\n case 'timestamp': {\n try {\n newObj[annotation.propName] = this.convertTimestampToDate(_value);\n }\n catch (e) {\n newObj[annotation.propName] = _value;\n }\n break;\n }\n case 'array': {\n if (typeof annotation?.childType === 'undefined') {\n newObj[annotation.propName] = _value;\n }\n else {\n const Type = annotation.childType();\n const value = _value.map(v => {\n switch (Type) {\n case String:\n case Number:\n return v;\n default:\n return this.fromFirestore(v, Type);\n }\n });\n if (value)\n newObj[annotation.propName] = value;\n }\n break;\n }\n case 'map': {\n if (typeof annotation?.childType === 'undefined') {\n newObj[annotation.propName] = _value;\n }\n else {\n const Type = annotation.childType();\n const value = this.fromFirestore(_value, Type);\n if (value)\n newObj[annotation.propName] = value;\n }\n break;\n }\n }\n }\n return newObj;\n }\n /**\n * @description FirestoreのUpdateは通常のオブジェクトでは孫以下のプロパティが既存データとマージされないので、パスに変換する必要がある。\n */\n flattenForUpdate(obj) {\n const newObj = {};\n walkObj(obj, {\n callback: (paths, value) => newObj[paths.join('.')] = value,\n overwrite: (_, value) => {\n if (Array.isArray(value))\n return [true, value];\n if (this.isTimestamp(value))\n return [true, value];\n if (this.isFieldValue(value))\n return [true, value];\n return [false];\n }\n });\n return newObj;\n }\n convertDateToTimestamp(date) {\n return this.Timestamp.fromDate(date);\n }\n convertTimestampToDate(timestamp) {\n return this.dateAdapter.convertToDate(timestamp.toDate());\n }\n}\nexport function provideFirestoreAdapter(useClass) {\n return { provide: FirestoreAdapter, useClass };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9hZGFwdGVycy9iYXNlL2Jhc2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVdoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBUXZDLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQzFCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFrRDVDLG1CQUFtQjtJQUNuQixlQUFlLENBQVMsTUFBYztRQUNwQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRixDQUFDLEVBQUUsRUFBbUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsaUJBQWlCLENBQVMsSUFBbUM7UUFDM0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxD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QUFFLEtBQVksQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO29CQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVU7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsU0FBb0I7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0NBRUY7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsUUFBb0M7SUFDMUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRGaXJlc3RvcmVBbm5vdGF0aW9ucyB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyB3YWxrT2JqIH0gZnJvbSAnQG54LWRkZC9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbGxlY3Rpb25SZWZlcmVuY2UsXG4gIENvbGxlY3Rpb25Hcm91cCxcbiAgRG9jdW1lbnRSZWZlcmVuY2UsXG4gIFRvRmlyZXN0b3JlRGF0YSxcbiAgVGltZXN0YW1wLFxuICBRdWVyeSxcbiAgRmllbGRWYWx1ZSxcbiAgRG9jdW1lbnREYXRhXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXlqcyc7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Rm48QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgUj4gPSAoXG4gIGNvbGxlY3Rpb24/OiBhbnlcbikgPT4gUjtcbmV4cG9ydCB0eXBlIFdoZXJlRmlsdGVyT3AgPSAnPCcgfCAnPD0nIHwgJz09JyB8ICchPScgfCAnPj0nIHwgJz4nIHwgJ2FycmF5LWNvbnRhaW5zJyB8ICdpbicgfCAnYXJyYXktY29udGFpbnMtYW55JyB8ICdub3QtaW4nO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaXJlc3RvcmVBZGFwdGVyPERhdGUgPSBhbnk+IHtcbiAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyID0gaW5qZWN0KERhdGVBZGFwdGVyKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaXNUaW1lc3RhbXAodjogYW55KTogdiBpcyBUaW1lc3RhbXA7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc0ZpZWxkVmFsdWUodjogYW55KTogdiBpcyBGaWVsZFZhbHVlO1xuXG4gIGFic3RyYWN0IGdldCBUaW1lc3RhbXAoKTogYW55XG4gIGFic3RyYWN0IGdldCBGaWVsZFZhbHVlKCk6IGFueVxuICBhYnN0cmFjdCBnZXQgRmllbGRQYXRoKCk6IGFueVxuXG4gIGFic3RyYWN0IGRvYzxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4ocGF0aDogc3RyaW5nKTogRG9jdW1lbnRSZWZlcmVuY2U8QXBwTW9kZWxUeXBlPjtcblxuICBhYnN0cmFjdCBjb2xsZWN0aW9uPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihwYXRoOiBzdHJpbmcpOiBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuXG4gIGFic3RyYWN0IGNvbGxlY3Rpb25Hcm91cDxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oY29sbGVjdGlvbklkOiBzdHJpbmcpOiBDb2xsZWN0aW9uR3JvdXA8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG5cbiAgYWJzdHJhY3QgcXVlcnk8XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4sXG4gICAgLi4ucXVlcnlGbkFycmF5OiBRdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGUsIGFueT5bXVxuICApOiBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcblxuICBhYnN0cmFjdCB3aGVyZTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oa2V5OiBzdHJpbmcsIGV2YWx1YXRpb246IFdoZXJlRmlsdGVyT3AsIHZhbHVlOiB1bmtub3duKTogUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBhbnk+O1xuXG4gIGFic3RyYWN0IG9yZGVyQnk8XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KGtleTogc3RyaW5nLCBvcmRlcjogJ2FzYycgfCAnZGVzYycpOiBRdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGUsIGFueT47XG5cbiAgYWJzdHJhY3QgbGltaXQ8XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KG46IG51bWJlcik6IFF1ZXJ5Rm48QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgYW55PjtcblxuICBhYnN0cmFjdCBydW5UcmFuc2FjdGlvbihmbjogYW55KTogYW55O1xuICBhYnN0cmFjdCBiYXRjaCgpOiBhbnk7XG5cbiAgLy8qKiBAZGVwcmVjYXRlZCAqL1xuICB0b0ZpcmVzdG9yZURhdGE8RW50aXR5PihlbnRpdHk6IEVudGl0eSk6IFRvRmlyZXN0b3JlRGF0YTxFbnRpdHksIERhdGU+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZW50aXR5KS5yZWR1Y2UoKHByZSwgW2ssIHZdKSA9PiAoe1xuICAgICAgLi4ucHJlLCBba106IHRoaXMuZGF0ZUFkYXB0ZXIuaXNEYXRlPERhdGU+KHYpID8gIHRoaXMuY29udmVydERhdGVUb1RpbWVzdGFtcCh2KSA6IHYsXG4gICAgfSksIHt9IGFzIFRvRmlyZXN0b3JlRGF0YTxFbnRpdHksIERhdGU+KTtcbiAgfVxuXG4gIC8vKiogQGRlcHJlY2F0ZWQgKi9cbiAgZnJvbUZpcmVzdG9yZURhdGE8RW50aXR5PihkYXRhOiBUb0ZpcmVzdG9yZURhdGE8RW50aXR5LCBEYXRlPik6IEVudGl0eSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgocHJlLCBbaywgdl0pID0+ICh7XG4gICAgICAuLi5wcmUsIFtrXTogdGhpcy5pc1RpbWVzdGFtcCh2KSA/IHRoaXMuY29udmVydFRpbWVzdGFtcFRvRGF0ZSh2KSA6IHYsXG4gICAgfSksIHt9IGFzIEVudGl0eSk7XG4gIH1cblxuICB0b0ZpcmVzdG9yZTxUPihvYmo6IG9iamVjdCwgRW50aXR5OiBuZXcgKCkgPT4gVCk6IG9iamVjdCB7XG4gICAgY29uc3QgbmV3T2JqID0ge307XG4gICAgZm9yIChjb25zdCBhbm5vdGF0aW9uIG9mIGdldEZpcmVzdG9yZUFubm90YXRpb25zKEVudGl0eSkpIHtcbiAgICAgIGNvbnN0IF92YWx1ZSA9IGdldChvYmosIGFubm90YXRpb24ucHJvcE5hbWUpO1xuICAgICAgaWYgKF92YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBuZXdPYmpbYW5ub3RhdGlvbi5maWVsZE5hbWVdID0gbnVsbDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzd2l0Y2goYW5ub3RhdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2lkJzpcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgY2FzZSAnbnVtYmVyJzogXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBfdmFsdWUgPT09ICd1bmRlZmluZWQnKSBicmVhaztcbiAgICAgICAgICBuZXdPYmpbYW5ub3RhdGlvbi5maWVsZE5hbWVdID0gX3ZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3RpbWVzdGFtcCc6IHtcbiAgICAgICAgICBpZiAodHlwZW9mIF92YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIGJyZWFrO1xuICAgICAgICAgIGlmICghdGhpcy5kYXRlQWRhcHRlci5pc0RhdGU8RGF0ZT4oX3ZhbHVlKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW0ZpcmVzdG9yZUFkYXB0ZXJdIF92YWx1ZTonLCBfdmFsdWUpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIERhdGUgVHlwZTogJHtfdmFsdWV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSB0aGlzLmNvbnZlcnREYXRlVG9UaW1lc3RhbXAoX3ZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGFubm90YXRpb24/LmNoaWxkVHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChfdmFsdWUpIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSBfdmFsdWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFR5cGUgPSAoYW5ub3RhdGlvbiBhcyBhbnkpLmNoaWxkVHlwZSgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBfdmFsdWUgPT09ICd1bmRlZmluZWQnKSBicmVhaztcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShfdmFsdWUpKSB7XG4gICAgICAgICAgICAgIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSBbXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChfdmFsdWUgPz8gW10pLm1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgc3dpdGNoIChUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBTdHJpbmc6XG4gICAgICAgICAgICAgICAgY2FzZSBOdW1iZXI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdlxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9GaXJlc3RvcmUodiwgVHlwZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSBuZXdPYmpbYW5ub3RhdGlvbi5maWVsZE5hbWVdID0gdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbWFwJzoge1xuICAgICAgICAgIGlmICh0eXBlb2YgX3ZhbHVlID09PSAndW5kZWZpbmVkJykgYnJlYWs7XG4gICAgICAgICAgaWYgKHR5cGVvZiAoYW5ub3RhdGlvbiBhcyBhbnkpPy5jaGlsZFR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAoX3ZhbHVlKSBuZXdPYmpbYW5ub3RhdGlvbi5maWVsZE5hbWVdID0gX3ZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBUeXBlID0gKGFubm90YXRpb24gYXMgYW55KS5jaGlsZFR5cGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy50b0ZpcmVzdG9yZShfdmFsdWUsIFR5cGUpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSBuZXdPYmpbYW5ub3RhdGlvbi5maWVsZE5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG4gIH1cbiAgXG4gIGZyb21GaXJlc3RvcmU8VCA9IGFueT4oZGF0YTogYW55LCBFbnRpdHk6IG5ldygpID0+IFQpOiBUIHtcbiAgICBjb25zdCBuZXdPYmogPSB7fTtcbiAgICBmb3IgKGNvbnN0IGFubm90YXRpb24gb2YgZ2V0RmlyZXN0b3JlQW5ub3RhdGlvbnMoRW50aXR5KSkge1xuICAgICAgY29uc3QgX3ZhbHVlID0gZGF0YVthbm5vdGF0aW9uLmZpZWxkTmFtZV07XG4gICAgICBpZiAodHlwZW9mIF92YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIGNvbnRpbnVlO1xuICAgICAgaWYgKF92YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBuZXdPYmpbYW5ub3RhdGlvbi5wcm9wTmFtZV0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoKGFubm90YXRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdpZCc6XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOiB7XG4gICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24ucHJvcE5hbWVdID0gX3ZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3RpbWVzdGFtcCc6IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24ucHJvcE5hbWVdID0gdGhpcy5jb252ZXJ0VGltZXN0YW1wVG9EYXRlKF92YWx1ZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24ucHJvcE5hbWVdID0gX3ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGFubm90YXRpb24/LmNoaWxkVHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG5ld09ialthbm5vdGF0aW9uLnByb3BOYW1lXSA9IF92YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgVHlwZSA9IChhbm5vdGF0aW9uIGFzIGFueSkuY2hpbGRUeXBlKCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IF92YWx1ZS5tYXAodiA9PiB7XG4gICAgICAgICAgICAgIHN3aXRjaCAoVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nOlxuICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUZpcmVzdG9yZSh2LCBUeXBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIG5ld09ialthbm5vdGF0aW9uLnByb3BOYW1lXSA9IHZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ21hcCc6IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGFubm90YXRpb24/LmNoaWxkVHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG5ld09ialthbm5vdGF0aW9uLnByb3BOYW1lXSA9IF92YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgVHlwZSA9IChhbm5vdGF0aW9uIGFzIGFueSkuY2hpbGRUeXBlKCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZnJvbUZpcmVzdG9yZShfdmFsdWUsIFR5cGUpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSBuZXdPYmpbYW5ub3RhdGlvbi5wcm9wTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld09iaiBhcyBUO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaXJlc3RvcmXjga5VcGRhdGXjga/pgJrluLjjga7jgqrjg5bjgrjjgqfjgq/jg4jjgafjga/lravku6XkuIvjga7jg5fjg63jg5Hjg4bjgqPjgYzml6LlrZjjg4fjg7zjgr/jgajjg57jg7zjgrjjgZXjgozjgarjgYTjga7jgafjgIHjg5HjgrnjgavlpInmj5vjgZnjgovlv4XopoHjgYzjgYLjgovjgIJcbiAgICovXG4gIGZsYXR0ZW5Gb3JVcGRhdGUob2JqOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IG5ld09iaiA9IHt9O1xuICAgIHdhbGtPYmoob2JqLCB7XG4gICAgICBjYWxsYmFjazogKHBhdGhzLCB2YWx1ZSkgPT4gbmV3T2JqW3BhdGhzLmpvaW4oJy4nKV0gPSB2YWx1ZSxcbiAgICAgIG92ZXJ3cml0ZTogKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIFt0cnVlLCB2YWx1ZV07XG4gICAgICAgIGlmICh0aGlzLmlzVGltZXN0YW1wKHZhbHVlKSkgcmV0dXJuIFt0cnVlLCB2YWx1ZSBhcyBhbnldO1xuICAgICAgICBpZiAodGhpcy5pc0ZpZWxkVmFsdWUodmFsdWUpKSByZXR1cm4gW3RydWUsIHZhbHVlXTtcbiAgICAgICAgcmV0dXJuIFtmYWxzZV1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3T2JqO1xuICB9XG5cbiAgY29udmVydERhdGVUb1RpbWVzdGFtcChkYXRlOiBEYXRlKTogVGltZXN0YW1wIHtcbiAgICByZXR1cm4gdGhpcy5UaW1lc3RhbXAuZnJvbURhdGUoZGF0ZSk7XG4gIH1cblxuICBjb252ZXJ0VGltZXN0YW1wVG9EYXRlKHRpbWVzdGFtcDogVGltZXN0YW1wKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZUFkYXB0ZXIuY29udmVydFRvRGF0ZSh0aW1lc3RhbXAudG9EYXRlKCkpXG4gIH1cbiAgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlyZXN0b3JlQWRhcHRlcih1c2VDbGFzczogbmV3ICgpID0+IEZpcmVzdG9yZUFkYXB0ZXIpIHtcbiAgcmV0dXJuIHsgcHJvdmlkZTogRmlyZXN0b3JlQWRhcHRlciwgdXNlQ2xhc3MgfTtcbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { plainToInstanceWithValid } from '@nx-ddd/core';\nimport { FirestoreAdapter } from '../adapters/base';\nclass FirestoreHelper {\n static fromFirestore(doc, Entity, adapter) {\n const data = adapter.fromFirestore({ ...doc.data(), id: doc.id }, Entity);\n return plainToInstanceWithValid(Entity, data);\n }\n}\nclass BasicConverter {\n Entity;\n adapter;\n constructor(Entity, adapter) {\n this.Entity = Entity;\n this.adapter = adapter;\n }\n fromFirestore(doc) {\n return this.adapter.fromFirestore({\n ...doc.data(),\n id: doc.id\n }, this.Entity);\n }\n fromFirestoreMany(docs) {\n return docs.map(doc => this.fromFirestore(doc));\n }\n toFirestore(entity) {\n return this.adapter.toFirestore(entity, this.Entity);\n }\n}\nexport function getConverter(Entity, adapter = inject(FirestoreAdapter)) {\n return new BasicConverter(Entity, adapter);\n}\nexport function injectConverter(Entity) {\n return getConverter(Entity, inject(FirestoreAdapter));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9jb252ZXJ0ZXIvY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBV3BELE1BQU0sZUFBZTtJQUNuQixNQUFNLENBQUMsYUFBYSxDQUF5QixHQUE2QixFQUFFLE1BQW1CLEVBQUUsT0FBeUI7UUFDeEgsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEUsT0FBTyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBRUQsTUFBTSxjQUFjO0lBRUc7SUFDQTtJQUZyQixZQUNxQixNQUFtQixFQUNuQixPQUF5QjtRQUR6QixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQWtCO0lBQzFDLENBQUM7SUFFTCxhQUFhLENBQUMsR0FBMEI7UUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUNoQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDYixFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDWCxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBNkI7UUFDN0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBUztRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsTUFBd0IsRUFDeEIsVUFBNEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBRXBELE9BQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUE4QixNQUF3QjtJQUNuRixPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwbGFpblRvSW5zdGFuY2VXaXRoVmFsaWQgfSBmcm9tICdAbngtZGRkL2NvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL2Jhc2UnO1xuaW1wb3J0IHsgRG9jdW1lbnRTbmFwc2hvdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGaXJlc3RvcmVDb252ZXJ0ZXI8RSBleHRlbmRzIHtpZDogc3RyaW5nfT4ge1xuICBmcm9tRmlyZXN0b3JlKGRvYzogRG9jdW1lbnRTbmFwc2hvdDxvYmplY3Q+KTogRTtcbiAgZnJvbUZpcmVzdG9yZU1hbnkoZG9jczogRG9jdW1lbnRTbmFwc2hvdDxvYmplY3Q+W10pOiBFW107XG4gIHRvRmlyZXN0b3JlKGVudGl0eTogUGFydGlhbDxFPik6IG9iamVjdDtcbiAgZnJvbU9iamVjdD8ob2JqOiBvYmplY3QpOiBFO1xuICB0b09iamVjdD8oZW50aXR5OiBFKTogb2JqZWN0O1xufVxuXG5jbGFzcyBGaXJlc3RvcmVIZWxwZXIge1xuICBzdGF0aWMgZnJvbUZpcmVzdG9yZTxFIGV4dGVuZHMge2lkOiBzdHJpbmd9Pihkb2M6IERvY3VtZW50U25hcHNob3Q8b2JqZWN0PiwgRW50aXR5OiBuZXcgKCkgPT4gRSwgYWRhcHRlcjogRmlyZXN0b3JlQWRhcHRlcik6IEUge1xuICAgIGNvbnN0IGRhdGEgPSBhZGFwdGVyLmZyb21GaXJlc3RvcmUoey4uLmRvYy5kYXRhKCksIGlkOiBkb2MuaWR9LCBFbnRpdHkpO1xuICAgIHJldHVybiBwbGFpblRvSW5zdGFuY2VXaXRoVmFsaWQoRW50aXR5LCBkYXRhKTtcbiAgfVxufVxuXG5jbGFzcyBCYXNpY0NvbnZlcnRlcjxFIGV4dGVuZHMge2lkOiBzdHJpbmd9PiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBFbnRpdHk6IG5ldyAoKSA9PiBFLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyLFxuICApIHsgfVxuXG4gIGZyb21GaXJlc3RvcmUoZG9jOiBEb2N1bWVudFNuYXBzaG90PGFueT4pOiBFIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmZyb21GaXJlc3RvcmUoe1xuICAgICAgLi4uZG9jLmRhdGEoKSxcbiAgICAgIGlkOiBkb2MuaWRcbiAgICB9LCB0aGlzLkVudGl0eSk7XG4gIH1cblxuICBmcm9tRmlyZXN0b3JlTWFueShkb2NzOiBEb2N1bWVudFNuYXBzaG90PGFueT5bXSk6IEVbXSB7XG4gICAgcmV0dXJuIGRvY3MubWFwKGRvYyA9PiB0aGlzLmZyb21GaXJlc3RvcmUoZG9jKSk7XG4gIH1cblxuICB0b0ZpcmVzdG9yZShlbnRpdHk6IEUpOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIudG9GaXJlc3RvcmUoZW50aXR5LCB0aGlzLkVudGl0eSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnZlcnRlcjxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KFxuICBFbnRpdHk6IG5ldyAoKSA9PiBFbnRpdHksXG4gIGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIgPSBpbmplY3QoRmlyZXN0b3JlQWRhcHRlciksXG4pOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT4ge1xuICByZXR1cm4gbmV3IEJhc2ljQ29udmVydGVyKEVudGl0eSwgYWRhcHRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb252ZXJ0ZXI8RW50aXR5IGV4dGVuZHMge2lkOiBzdHJpbmd9PihFbnRpdHk6IG5ldyAoKSA9PiBFbnRpdHkpOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT4ge1xuICByZXR1cm4gZ2V0Q29udmVydGVyKEVudGl0eSwgaW5qZWN0KEZpcmVzdG9yZUFkYXB0ZXIpKTtcbn1cbiJdfQ==","export class FirestoreDAO {\n adapter;\n pathBuilder;\n constructor(adapter, pathBuilder) {\n this.adapter = adapter;\n this.pathBuilder = pathBuilder;\n }\n collection(paramMap) {\n const path = this.pathBuilder.collection(paramMap);\n return this.adapter.collection(path);\n }\n collectionGroup() {\n const path = this.pathBuilder.collectionGroup();\n return this.adapter.collectionGroup(path);\n }\n doc(paramMap) {\n const path = this.pathBuilder.doc(paramMap);\n return this.adapter.doc(path);\n }\n getCollection(paramMap) {\n return paramMap ? this.collection(paramMap) : this.collectionGroup();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLmRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvZGFvL2ZpcmVzdG9yZS5kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLFlBQVk7SUFNWDtJQUNBO0lBRlosWUFDWSxPQUF5QixFQUN6QixXQUF5QztRQUR6QyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7SUFDakQsQ0FBQztJQUVMLFVBQVUsQ0FBQyxRQUEwQjtRQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELEdBQUcsQ0FBQyxRQUF3QztRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQTBCO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IEZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9iYXNlJztcbmltcG9ydCB7IENvbGxlY3Rpb25SZWZlcmVuY2UsIENvbGxlY3Rpb25Hcm91cCwgRG9jdW1lbnRSZWZlcmVuY2UsIFRvRmlyZXN0b3JlRGF0YSwgQ29sbGVjdGlvbkxpa2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZpcmVzdG9yZVBhdGhCdWlsZGVyIH0gZnJvbSAnLi4vcGF0aC1idWlsZGVyJztcblxuXG5leHBvcnQgY2xhc3MgRmlyZXN0b3JlREFPPFxuICBFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30sIFxuICBGaXJlc3RvcmVEYXRhID0gVG9GaXJlc3RvcmVEYXRhPEVudGl0eSwgZGF5anMuRGF5anM+LFxuPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIsXG4gICAgcHJvdGVjdGVkIHBhdGhCdWlsZGVyOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHk+LFxuICApIHsgfVxuXG4gIGNvbGxlY3Rpb24ocGFyYW1NYXA/OiBQYXJ0aWFsPEVudGl0eT4pOiBDb2xsZWN0aW9uUmVmZXJlbmNlPEZpcmVzdG9yZURhdGE+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5jb2xsZWN0aW9uKHBhcmFtTWFwKVxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuY29sbGVjdGlvbjxGaXJlc3RvcmVEYXRhPihwYXRoKTtcbiAgfVxuXG4gIGNvbGxlY3Rpb25Hcm91cCgpOkNvbGxlY3Rpb25Hcm91cDxGaXJlc3RvcmVEYXRhPiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMucGF0aEJ1aWxkZXIuY29sbGVjdGlvbkdyb3VwKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5jb2xsZWN0aW9uR3JvdXA8RmlyZXN0b3JlRGF0YT4ocGF0aCk7XG4gIH1cblxuICBkb2MocGFyYW1NYXA6IFBhcnRpYWw8RW50aXR5PiAmIHtpZDogc3RyaW5nfSk6IERvY3VtZW50UmVmZXJlbmNlPEZpcmVzdG9yZURhdGE+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5kb2MocGFyYW1NYXApO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZG9jPEZpcmVzdG9yZURhdGE+KHBhdGgpO1xuICB9XG5cbiAgZ2V0Q29sbGVjdGlvbihwYXJhbU1hcD86IFBhcnRpYWw8RW50aXR5Pik6IENvbGxlY3Rpb25MaWtlIHtcbiAgICByZXR1cm4gcGFyYW1NYXAgPyB0aGlzLmNvbGxlY3Rpb24ocGFyYW1NYXApIDogdGhpcy5jb2xsZWN0aW9uR3JvdXAoKTtcbiAgfVxufVxuIl19","export class FirestorePathBuilder {\n paths;\n doc(param) {\n return resolvePaths(param, this.paths);\n }\n collection(param = {}) {\n return resolvePaths(param, this.paths.slice(0, -1));\n }\n collectionGroup() {\n return this.paths[this.paths.length - 2];\n }\n constructor(paths) {\n this.paths = paths;\n }\n}\nexport function pathBuilderFactory(path) {\n const paths = parsePath(path);\n return new FirestorePathBuilder(paths);\n}\nexport function parsePath(path) {\n const paths = path.split('/').filter(p => p.length);\n if (!paths[paths.length - 1].startsWith(':'))\n paths.push(':id');\n return paths;\n}\nexport const resolvePaths = (obj, paths) => {\n return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');\n};\nconst resolvePath = (obj, key) => {\n if (!obj?.[key])\n throw new Error(`Invalid key is detected in resolving paths, key: \\`${key}\\`, obj: \\`${JSON.stringify(obj)}\\``);\n return obj?.[key];\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9wYXRoLWJ1aWxkZXIvcGF0aC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE1BQU0sT0FBTyxvQkFBb0I7SUFnQlg7SUFacEIsR0FBRyxDQUFDLEtBQTBCO1FBQzVCLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUE4QyxFQUFFO1FBQ3pELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFvQixLQUFlO1FBQWYsVUFBSyxHQUFMLEtBQUssQ0FBVTtJQUFJLENBQUM7Q0FDekM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBSWhDLElBQVU7SUFFVixNQUFNLEtBQUssR0FBRyxTQUFTLENBQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsT0FBTyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUErQixJQUFVO0lBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBZSxFQUFVLEVBQUU7SUFDbkUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RHLENBQUMsQ0FBQTtBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQy9DLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxHQUFHLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakksT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIENvbGxlY3Rpb25QYXJhbU1hcDxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+ID0gUGFydGlhbDxFbnRpdHk+O1xudHlwZSBEb2NQYXJhbU1hcDxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+ID0gQ29sbGVjdGlvblBhcmFtTWFwPEVudGl0eT4gJiBQaWNrPEVudGl0eSwgJ2lkJz47XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RQYXJhbXM8VCBleHRlbmRzIHN0cmluZz4gPSBcbiAgVCBleHRlbmRzIGAke2luZmVyIF9TdGFydH06JHtpbmZlciBQYXJhbX0vJHtpbmZlciBSZXN0fWBcbiAgICA/IHsgW0sgaW4gUGFyYW0gfCBrZXlvZiBFeHRyYWN0UGFyYW1zPFJlc3Q+XTogc3RyaW5nIH1cbiAgICA6IFQgZXh0ZW5kcyBgJHtpbmZlciBfU3RhcnR9OiR7aW5mZXIgUGFyYW19YFxuICAgID8geyBbSyBpbiBQYXJhbV06IHN0cmluZyB9XG4gICAgOiB7fTtcblxudHlwZSBQYXJhbXMgPSBFeHRyYWN0UGFyYW1zPCd1c2Vycy86dXNlcklkL2ltYWdlcy86aWQnPjtcblxuZXhwb3J0IHR5cGUgQ29sUGFyYW08VCBleHRlbmRzIHtyZWFkb25seSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nfT4gPSBPbWl0PEV4dHJhY3RQYXJhbXM8VFsnY29sbGVjdGlvblBhdGgnXT4sICdpZCc+O1xuZXhwb3J0IHR5cGUgRG9jUGFyYW08VCBleHRlbmRzIHtyZWFkb25seSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nfT4gPSBDb2xQYXJhbTxUPiAmIHtpZDogc3RyaW5nfTsgXG5cbmV4cG9ydCBjbGFzcyBGaXJlc3RvcmVQYXRoQnVpbGRlcjxcbiAgRW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nIH0sXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4+IHtcbiAgZG9jKHBhcmFtOiBEb2NQYXJhbU1hcDxFbnRpdHk+KSB7XG4gICAgcmV0dXJuIHJlc29sdmVQYXRocyhwYXJhbSwgdGhpcy5wYXRocyk7XG4gIH1cblxuICBjb2xsZWN0aW9uKHBhcmFtOiBPbWl0PEV4dHJhY3RQYXJhbXM8UGF0aD4sICdpZCc+IHwge30gPSB7fSkge1xuICAgIHJldHVybiByZXNvbHZlUGF0aHMocGFyYW0sIHRoaXMucGF0aHMuc2xpY2UoMCwgLTEpKTtcbiAgfVxuXG4gIGNvbGxlY3Rpb25Hcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aC0yXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGF0aHM6IHN0cmluZ1tdKSB7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhCdWlsZGVyRmFjdG9yeTxcbiAgRSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nXG4+KFxuICBwYXRoOiBQYXRoXG4pOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFLCBQYXRoPiB7XG4gIGNvbnN0IHBhdGhzID0gcGFyc2VQYXRoPFBhdGg+KHBhdGgpO1xuICByZXR1cm4gbmV3IEZpcmVzdG9yZVBhdGhCdWlsZGVyKHBhdGhzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0aDxQYXRoIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihwYXRoOiBQYXRoKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRocyA9IHBhdGguc3BsaXQoJy8nKS5maWx0ZXIocCA9PiBwLmxlbmd0aCk7XG4gIGlmICghcGF0aHNbcGF0aHMubGVuZ3RoLTFdLnN0YXJ0c1dpdGgoJzonKSkgcGF0aHMucHVzaCgnOmlkJyk7XG4gIHJldHVybiBwYXRocztcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVQYXRocyA9IChvYmo6IG9iamVjdCwgcGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHBhdGhzLm1hcCgocGF0aCkgPT4gcGF0aC5zdGFydHNXaXRoKCc6JykgPyByZXNvbHZlUGF0aChvYmosIHBhdGguc2xpY2UoMSkpIDogcGF0aCkuam9pbignLycpO1xufVxuXG5jb25zdCByZXNvbHZlUGF0aCA9IChvYmo6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHtcbiAgaWYgKCFvYmo/LltrZXldKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5IGlzIGRldGVjdGVkIGluIHJlc29sdmluZyBwYXRocywga2V5OiBcXGAke2tleX1cXGAsIG9iajogXFxgJHtKU09OLnN0cmluZ2lmeShvYmopfVxcYGApO1xuICByZXR1cm4gb2JqPy5ba2V5XTtcbn1cbiJdfQ==","import dayjs from 'dayjs';\nimport { ReplaySubject, lastValueFrom, of, throwError } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { FirestoreDAO } from '../dao';\nexport class FirestoreQuery extends FirestoreDAO {\n converter;\n pathBuilder;\n constructor(adapter, converter, pathBuilder) {\n super(adapter, pathBuilder);\n this.converter = converter;\n this.pathBuilder = pathBuilder;\n this.switchCollectionRef();\n }\n collection$ = new ReplaySubject(1);\n list$ = this.collection$.pipe(switchMap((collection) => this.listChangesByCollectionRef(collection).pipe(catchError(error => throwError(() => error)))), shareReplay(1));\n /** @deprecated */\n listChanges(paramMap, options = { switch: true }) {\n return of(paramMap).pipe(tap((paramMap) => options?.switch && this.switchCollectionRef(paramMap)), switchMap(() => this.list$));\n }\n listChangesV2(paramMap) {\n return of(paramMap).pipe(tap((paramMap) => paramMap && this.switchCollectionRef(paramMap)), switchMap(() => this.list$));\n }\n listChangesAfter(updatedAt, { limit } = {}) {\n const entitiesMap = new Map();\n const _updatedAt = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt;\n return this.adapter.query(this.collection(), ...[\n this.adapter.where('updatedAt', '>', _updatedAt),\n this.adapter.orderBy('updatedAt', 'asc'),\n limit ? this.adapter.limit(limit) : undefined,\n ].filter(Boolean)).stateChanges().pipe(\n // bufferTime(1_000),\n // map(zippedActions => zippedActions.flat()),\n tap(actions => actions.forEach(({ type, payload: { doc } }) => {\n if (new Set(['added', 'modified']).has(type)) {\n entitiesMap.set(doc.id, this.converter.fromFirestore(doc));\n }\n else if (type === 'removed') {\n entitiesMap.delete(doc.id);\n }\n })), map(() => [...entitiesMap.values()]));\n }\n changes({ id }) {\n if (!id)\n throw new Error(`Invalid Id. it must be Truthy`);\n return this.list$.pipe(map(entities => entities.find(entity => entity.id === id)), distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));\n }\n changesV2(params) {\n const docRef = this.doc(params);\n return docRef.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));\n }\n get({ id }) {\n return lastValueFrom(this.list$.pipe(take(1), map(entities => entities.find(entity => entity.id === id))));\n }\n list(paramMap) {\n this.switchCollectionRef(paramMap);\n return lastValueFrom(this.list$.pipe(take(1)));\n }\n listChangesByCollectionRef(collection) {\n const entitiesMap = new Map();\n return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {\n if (new Set(['added', 'modified']).has(type)) {\n entitiesMap.set(doc.id, this.converter.fromFirestore(doc));\n }\n else if (type === 'removed') {\n entitiesMap.delete(doc.id);\n }\n })), map(() => [...entitiesMap.values()]));\n }\n switchCollectionRef(paramMap) {\n const collection = this.getCollection(paramMap);\n this.switchCollection(collection);\n }\n switchCollection(collection) {\n this.collection$.next(collection);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLnF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9xdWVyeS9maXJlc3RvcmUucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBYyxhQUFhLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUl0QyxNQUFNLE9BQU8sY0FHWCxTQUFRLFlBQW1DO0lBRy9CO0lBQ0E7SUFIWixZQUNFLE9BQXlCLEVBQ2YsU0FBc0MsRUFDdEMsV0FBeUM7UUFFbkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUE2QjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7UUFHbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVrQixXQUFXLEdBQUcsSUFBSSxhQUFhLENBQWdDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDOUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUN4RSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDN0MsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFBO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxRQUEwQixFQUFFLFVBQThCLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztRQUNsRixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDeEUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBMEI7UUFDdEMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN0QixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDakUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFzQixFQUFFLEVBQUMsS0FBSyxLQUFzQixFQUFFO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUN4RyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLEdBQUc7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO1lBQ3hDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDOUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2xCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSTtRQUNuQixxQkFBcUI7UUFDckIsOENBQThDO1FBQzlDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBNEIsQ0FBQyxDQUFDLENBQUM7WUFDdEYsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLEVBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFDLEVBQUUsRUFBa0I7UUFDM0IsSUFBSSxDQUFDLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDMUQsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBdUI7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFhLENBQUMsQ0FBQztRQUN2QyxPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQy9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUUsR0FBVyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQWlDO1FBQ3RDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDM0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxRQUEwQjtRQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRVMsMEJBQTBCLENBQ2xDLFVBQStFO1FBRS9FLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFFLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLEVBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVTLG1CQUFtQixDQUFDLFFBQTBCO1FBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUErQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgbGFzdFZhbHVlRnJvbSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9iYXNlJztcbmltcG9ydCB7IElGaXJlc3RvcmVDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb252ZXJ0ZXInO1xuaW1wb3J0IHsgRmlyZXN0b3JlREFPIH0gZnJvbSAnLi4vZGFvJztcbmltcG9ydCB7IEZpcmVzdG9yZVBhdGhCdWlsZGVyIH0gZnJvbSAnLi4vcGF0aC1idWlsZGVyJztcbmltcG9ydCB7IERvY3VtZW50U25hcHNob3QsIENvbGxlY3Rpb25SZWZlcmVuY2UsICBDb2xsZWN0aW9uR3JvdXAsIFRvRmlyZXN0b3JlRGF0YSwgQ29sbGVjdGlvbkxpa2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIEZpcmVzdG9yZVF1ZXJ5PFxuICBFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30gPSBhbnksIFxuICBGaXJlc3RvcmVEYXRhID0gVG9GaXJlc3RvcmVEYXRhPEVudGl0eSwgZGF5anMuRGF5anM+LFxuPiBleHRlbmRzIEZpcmVzdG9yZURBTzxFbnRpdHksIEZpcmVzdG9yZURhdGE+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlcjogRmlyZXN0b3JlQWRhcHRlcixcbiAgICBwcm90ZWN0ZWQgY29udmVydGVyOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT4sXG4gICAgcHJvdGVjdGVkIHBhdGhCdWlsZGVyOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHk+XG4gICkge1xuICAgIHN1cGVyKGFkYXB0ZXIsIHBhdGhCdWlsZGVyKTtcbiAgICB0aGlzLnN3aXRjaENvbGxlY3Rpb25SZWYoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb2xsZWN0aW9uJCA9IG5ldyBSZXBsYXlTdWJqZWN0PENvbGxlY3Rpb25MaWtlPEZpcmVzdG9yZURhdGE+PigxKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpc3QkID0gdGhpcy5jb2xsZWN0aW9uJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbikgPT4gdGhpcy5saXN0Q2hhbmdlc0J5Q29sbGVjdGlvblJlZihjb2xsZWN0aW9uKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKSksXG4gICAgKSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gIClcblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgbGlzdENoYW5nZXMocGFyYW1NYXA/OiBQYXJ0aWFsPEVudGl0eT4sIG9wdGlvbnM6IHtzd2l0Y2g/OiBib29sZWFufSA9IHtzd2l0Y2g6IHRydWV9KTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiBvZihwYXJhbU1hcCkucGlwZShcbiAgICAgIHRhcCgocGFyYW1NYXApID0+IG9wdGlvbnM/LnN3aXRjaCAmJiB0aGlzLnN3aXRjaENvbGxlY3Rpb25SZWYocGFyYW1NYXApKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxpc3QkKSxcbiAgICApO1xuICB9XG5cbiAgbGlzdENoYW5nZXNWMihwYXJhbU1hcD86IFBhcnRpYWw8RW50aXR5Pik6IE9ic2VydmFibGU8RW50aXR5W10+IHtcbiAgICByZXR1cm4gb2YocGFyYW1NYXApLnBpcGUoXG4gICAgICB0YXAoKHBhcmFtTWFwKSA9PiBwYXJhbU1hcCAmJiB0aGlzLnN3aXRjaENvbGxlY3Rpb25SZWYocGFyYW1NYXApKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxpc3QkKSxcbiAgICApO1xuICB9XG5cbiAgbGlzdENoYW5nZXNBZnRlcih1cGRhdGVkQXQ6IGRheWpzLkRheWpzLCB7bGltaXR9OiB7bGltaXQ/OiBudW1iZXJ9ID0ge30pIHtcbiAgICBjb25zdCBlbnRpdGllc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHk+KCk7XG4gICAgY29uc3QgX3VwZGF0ZWRBdCA9IGRheWpzLmlzRGF5anModXBkYXRlZEF0KSA/IHRoaXMuYWRhcHRlci5jb252ZXJ0RGF0ZVRvVGltZXN0YW1wKHVwZGF0ZWRBdCkgOiB1cGRhdGVkQXRcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnF1ZXJ5KFxuICAgICAgdGhpcy5jb2xsZWN0aW9uKCksXG4gICAgICAuLi5bXG4gICAgICAgIHRoaXMuYWRhcHRlci53aGVyZSgndXBkYXRlZEF0JywgJz4nLCBfdXBkYXRlZEF0KSxcbiAgICAgICAgdGhpcy5hZGFwdGVyLm9yZGVyQnkoJ3VwZGF0ZWRBdCcsICdhc2MnKSxcbiAgICAgICAgbGltaXQgPyB0aGlzLmFkYXB0ZXIubGltaXQobGltaXQpIDogdW5kZWZpbmVkLFxuICAgICAgXS5maWx0ZXIoQm9vbGVhbiksXG4gICAgKS5zdGF0ZUNoYW5nZXMoKS5waXBlKFxuICAgICAgLy8gYnVmZmVyVGltZSgxXzAwMCksXG4gICAgICAvLyBtYXAoemlwcGVkQWN0aW9ucyA9PiB6aXBwZWRBY3Rpb25zLmZsYXQoKSksXG4gICAgICB0YXAoYWN0aW9ucyA9PiBhY3Rpb25zLmZvckVhY2goKHt0eXBlLCBwYXlsb2FkOiB7ZG9jfX0pID0+IHtcbiAgICAgICAgaWYgKG5ldyBTZXQoWydhZGRlZCcsICdtb2RpZmllZCddKS5oYXModHlwZSkpIHtcbiAgICAgICAgICBlbnRpdGllc01hcC5zZXQoZG9jLmlkLCB0aGlzLmNvbnZlcnRlci5mcm9tRmlyZXN0b3JlKGRvYyBhcyBEb2N1bWVudFNuYXBzaG90PGFueT4pKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncmVtb3ZlZCcpIHtcbiAgICAgICAgICBlbnRpdGllc01hcC5kZWxldGUoZG9jLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSkpLFxuICAgICAgbWFwKCgpID0+IFsuLi5lbnRpdGllc01hcC52YWx1ZXMoKV0pLFxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VzKHtpZH06IFBhcnRpYWw8RW50aXR5Pikge1xuICAgIGlmICghaWQpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJZC4gaXQgbXVzdCBiZSBUcnV0aHlgKTtcbiAgICByZXR1cm4gdGhpcy5saXN0JC5waXBlKFxuICAgICAgbWFwKGVudGl0aWVzID0+IGVudGl0aWVzLmZpbmQoZW50aXR5ID0+IGVudGl0eS5pZCA9PT0gaWQpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmUsIGN1cikgPT4gSlNPTi5zdHJpbmdpZnkocHJlKSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VyKSksXG4gICAgKTtcbiAgfVxuXG4gIGNoYW5nZXNWMihwYXJhbXM6IFBhcnRpYWw8RW50aXR5Pik6IE9ic2VydmFibGU8RW50aXR5PiB7XG4gICAgY29uc3QgZG9jUmVmID0gdGhpcy5kb2MocGFyYW1zIGFzIGFueSk7XG4gICAgcmV0dXJuIGRvY1JlZi5zdGF0ZUNoYW5nZXMoKS5waXBlKFxuICAgICAgbWFwKChkb2MpID0+IHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoKGRvYyBhcyBhbnkpKSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCh7aWR9OiBQYXJ0aWFsPEVudGl0eT4gJiB7aWQ6IHN0cmluZ30pIHtcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLmxpc3QkLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKGVudGl0aWVzID0+IGVudGl0aWVzLmZpbmQoZW50aXR5ID0+IGVudGl0eS5pZCA9PT0gaWQpKSxcbiAgICApKTtcbiAgfVxuXG4gIGxpc3QocGFyYW1NYXA/OiBQYXJ0aWFsPEVudGl0eT4pIHtcbiAgICB0aGlzLnN3aXRjaENvbGxlY3Rpb25SZWYocGFyYW1NYXApO1xuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMubGlzdCQucGlwZSh0YWtlKDEpKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGlzdENoYW5nZXNCeUNvbGxlY3Rpb25SZWYoXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvblJlZmVyZW5jZTxGaXJlc3RvcmVEYXRhPiB8IENvbGxlY3Rpb25Hcm91cDxGaXJlc3RvcmVEYXRhPlxuICApOiBPYnNlcnZhYmxlPEVudGl0eVtdPiB7XG4gICAgY29uc3QgZW50aXRpZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIHJldHVybiBjb2xsZWN0aW9uLnN0YXRlQ2hhbmdlcygpLnBpcGUoXG4gICAgICB0YXAoYWN0aW9ucyA9PiBhY3Rpb25zLmZvckVhY2goKHt0eXBlLCBwYXlsb2FkOiB7ZG9jfX0pID0+IHtcbiAgICAgICAgaWYgKG5ldyBTZXQoWydhZGRlZCcsICdtb2RpZmllZCddKS5oYXModHlwZSkpIHtcbiAgICAgICAgICBlbnRpdGllc01hcC5zZXQoZG9jLmlkLCB0aGlzLmNvbnZlcnRlci5mcm9tRmlyZXN0b3JlKChkb2MgYXMgYW55KSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW1vdmVkJykge1xuICAgICAgICAgIGVudGl0aWVzTWFwLmRlbGV0ZShkb2MuaWQpO1xuICAgICAgICB9XG4gICAgICB9KSksXG4gICAgICBtYXAoKCkgPT4gWy4uLmVudGl0aWVzTWFwLnZhbHVlcygpXSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzd2l0Y2hDb2xsZWN0aW9uUmVmKHBhcmFtTWFwPzogUGFydGlhbDxFbnRpdHk+KSB7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZ2V0Q29sbGVjdGlvbihwYXJhbU1hcCk7XG4gICAgdGhpcy5zd2l0Y2hDb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICB9XG5cbiAgc3dpdGNoQ29sbGVjdGlvbihjb2xsZWN0aW9uOiBDb2xsZWN0aW9uTGlrZTxhbnk+KSB7XG4gICAgdGhpcy5jb2xsZWN0aW9uJC5uZXh0KGNvbGxlY3Rpb24pO1xuICB9XG59XG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { FirestoreAdapter } from '../../adapters';\nimport { getConverter } from '../../converter';\nimport { FirestoreDAO } from '../../dao';\nimport { getCollection } from '../../decorators';\nimport { pathBuilderFactory } from '../../path-builder';\nimport { catchError, lastValueFrom, map, NEVER, of, switchMap, take, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class BaseFirestoreQuery {\n count(paramMap) {\n return this.dao.getCollection(paramMap).count();\n }\n changes(params) {\n const docRef = this.dao.doc(params);\n return docRef.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));\n }\n get(paramMap) {\n return lastValueFrom(this.changes(paramMap).pipe(take(1)));\n }\n list(paramMap) {\n return lastValueFrom(this.listChanges(paramMap).pipe(take(1)));\n }\n listChanges(paramMap) {\n return of(paramMap).pipe(map((paramMap) => this.dao.getCollection(paramMap)), switchMap((collection) => {\n return this.getListChanges$ByCollectionLike(collection);\n }));\n }\n getChanges$ByDocument(doc) {\n return doc.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)), catchError((error) => {\n console.error(error);\n return NEVER;\n }));\n }\n getListChanges$ByCollectionLike(collection) {\n const entitiesMap = new Map();\n return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {\n if (new Set(['added', 'modified']).has(type)) {\n entitiesMap.set(doc.id, this.converter.fromFirestore(doc));\n }\n else if (type === 'removed') {\n entitiesMap.delete(doc.id);\n }\n })), map(() => [...entitiesMap.values()]), catchError((error) => {\n console.error(error);\n return NEVER;\n }));\n }\n}\nexport class FirestoreQuery extends BaseFirestoreQuery {\n adapter = inject(FirestoreAdapter);\n get pathBuilder() {\n return pathBuilderFactory(this.collectionPath);\n }\n get dao() {\n return new FirestoreDAO(this.adapter, this.pathBuilder);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreQuery });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreQuery, decorators: [{\n type: Injectable\n }] });\nexport function getFirestoreQuery(entity, adapter = inject(FirestoreAdapter)) {\n class FirestoreQuery extends BaseFirestoreQuery {\n converter;\n collectionPath;\n pathBuilder;\n adapter;\n dao;\n constructor(converter, collectionPath, pathBuilder, adapter, dao) {\n super();\n this.converter = converter;\n this.collectionPath = collectionPath;\n this.pathBuilder = pathBuilder;\n this.adapter = adapter;\n this.dao = dao;\n }\n }\n return new FirestoreQuery(getConverter(entity, adapter), getCollection(entity), pathBuilderFactory(getCollection(entity)), adapter, new FirestoreDAO(adapter, pathBuilderFactory(getCollection(entity))));\n}\nexport function injectFirestoreQuery(entity) {\n return getFirestoreQuery(entity, inject(FirestoreAdapter));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2ZpcmVzdG9yZS9zcmMvbGliL3F1ZXJ5L3YyL3F1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUF1QyxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtuRyxNQUFNLE9BQWdCLGtCQUFrQjtJQU90QyxLQUFLLENBQUMsUUFBeUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFlLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQXNCO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQWEsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDL0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBRSxHQUFXLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FB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QUFDO0lBQ2xFLENBQUM7dUdBWG1CLGNBQWM7MkdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEbkMsVUFBVTs7QUFnQlgsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixNQUF5QixFQUN6QixVQUE0QixNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFHcEQsTUFBTSxjQUFlLFNBQVEsa0JBQTBCO1FBRWhDO1FBQ0g7UUFDVDtRQUNZO1FBQ0E7UUFMckIsWUFDcUIsU0FBc0MsRUFDekMsY0FBc0IsRUFDL0IsV0FBOEMsRUFDbEMsT0FBeUIsRUFDekIsR0FBeUI7WUFDMUMsS0FBSyxFQUFFLENBQUM7WUFMUyxjQUFTLEdBQVQsU0FBUyxDQUE2QjtZQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtZQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUM7WUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7WUFDekIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDakMsQ0FBQztLQUNmO0lBRUQsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFDN0IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUNyQixrQkFBa0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekMsT0FBTyxFQUNQLElBQUksWUFBWSxDQUFTLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUM3RSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBOEIsTUFBeUI7SUFDekYsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMnO1xuaW1wb3J0IHsgZ2V0Q29udmVydGVyLCBJRmlyZXN0b3JlQ29udmVydGVyIH0gZnJvbSAnLi4vLi4vY29udmVydGVyJztcbmltcG9ydCB7IEZpcmVzdG9yZURBTyB9IGZyb20gJy4uLy4uL2Rhbyc7XG5pbXBvcnQgeyBnZXRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uTGlrZSwgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEV4dHJhY3RQYXJhbXMsIEZpcmVzdG9yZVBhdGhCdWlsZGVyLCBwYXRoQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi9wYXRoLWJ1aWxkZXInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbGFzdFZhbHVlRnJvbSwgbWFwLCBORVZFUiwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgQ29sUGFyYW08VCBleHRlbmRzIEJhc2VGaXJlc3RvcmVRdWVyeTxhbnk+PiA9IE9taXQ8RXh0cmFjdFBhcmFtczxUWydjb2xsZWN0aW9uUGF0aCddPiwgJ2lkJz47XG50eXBlIERvY1BhcmFtPFQgZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUXVlcnk8YW55Pj4gPSBDb2xQYXJhbTxUPiAmIHtpZDogc3RyaW5nfTsgXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlyZXN0b3JlUXVlcnk8RW50aXR5IGV4dGVuZHMge2lkOiBzdHJpbmd9ID0gYW55PiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgY29udmVydGVyOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT47XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYXRoQnVpbGRlcjogRmlyZXN0b3JlUGF0aEJ1aWxkZXI8RW50aXR5LCB0eXBlb2YgdGhpcy5jb2xsZWN0aW9uUGF0aD47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkYW86IEZpcmVzdG9yZURBTzxFbnRpdHk+O1xuXG4gIGNvdW50KHBhcmFtTWFwPzogQ29sUGFyYW08dGhpcz4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmRhby5nZXRDb2xsZWN0aW9uKHBhcmFtTWFwIGFzIGFueSkuY291bnQoKTtcbiAgfVxuXG4gIGNoYW5nZXMocGFyYW1zOiBEb2NQYXJhbTx0aGlzPik6IE9ic2VydmFibGU8RW50aXR5PiB7XG4gICAgY29uc3QgZG9jUmVmID0gdGhpcy5kYW8uZG9jKHBhcmFtcyBhcyBhbnkpO1xuICAgIHJldHVybiBkb2NSZWYuc3RhdGVDaGFuZ2VzKCkucGlwZShcbiAgICAgIG1hcCgoZG9jKSA9PiB0aGlzLmNvbnZlcnRlci5mcm9tRmlyZXN0b3JlKChkb2MgYXMgYW55KSkpLFxuICAgICk7XG4gIH1cblxuICBnZXQocGFyYW1NYXA6IERvY1BhcmFtPHRoaXM+KTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLmNoYW5nZXMocGFyYW1NYXApLnBpcGUodGFrZSgxKSkpO1xuICB9XG5cbiAgbGlzdChwYXJhbU1hcD86IENvbFBhcmFtPHRoaXM+KTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMubGlzdENoYW5nZXMocGFyYW1NYXAgYXMgYW55KS5waXBlKHRha2UoMSkpKTtcbiAgfVxuXG4gIGxpc3RDaGFuZ2VzKHBhcmFtTWFwPzogQ29sUGFyYW08dGhpcz4pOiBPYnNlcnZhYmxlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIG9mKHBhcmFtTWFwKS5waXBlKFxuICAgICAgbWFwKChwYXJhbU1hcCkgPT4gdGhpcy5kYW8uZ2V0Q29sbGVjdGlvbihwYXJhbU1hcCBhcyBhbnkpKSxcbiAgICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0Q2hhbmdlcyRCeUNvbGxlY3Rpb25MaWtlKGNvbGxlY3Rpb24pXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENoYW5nZXMkQnlEb2N1bWVudChcbiAgICBkb2M6IERvY3VtZW50UmVmZXJlbmNlXG4gICk6IE9ic2VydmFibGU8RW50aXR5PiB7XG4gICAgcmV0dXJuIGRvYy5zdGF0ZUNoYW5nZXMoKS5waXBlKFxuICAgICAgbWFwKChkb2MpID0+IHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoZG9jKSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMaXN0Q2hhbmdlcyRCeUNvbGxlY3Rpb25MaWtlKFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb25MaWtlXG4gICk6IE9ic2VydmFibGU8RW50aXR5W10+IHtcbiAgICBjb25zdCBlbnRpdGllc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uc3RhdGVDaGFuZ2VzKCkucGlwZShcbiAgICAgIHRhcChhY3Rpb25zID0+IGFjdGlvbnMuZm9yRWFjaCgoe3R5cGUsIHBheWxvYWQ6IHtkb2N9fSkgPT4ge1xuICAgICAgICBpZiAobmV3IFNldChbJ2FkZGVkJywgJ21vZGlmaWVkJ10pLmhhcyh0eXBlKSkge1xuICAgICAgICAgIGVudGl0aWVzTWFwLnNldChkb2MuaWQsIHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoKGRvYyBhcyBhbnkpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JlbW92ZWQnKSB7XG4gICAgICAgICAgZW50aXRpZXNNYXAuZGVsZXRlKGRvYy5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pKSxcbiAgICAgIG1hcCgoKSA9PiBbLi4uZW50aXRpZXNNYXAudmFsdWVzKCldKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaXJlc3RvcmVRdWVyeTxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30gPSBhbnk+IGV4dGVuZHMgQmFzZUZpcmVzdG9yZVF1ZXJ5PEVudGl0eT4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlciA9IGluamVjdChGaXJlc3RvcmVBZGFwdGVyKTtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29sbGVjdGlvblBhdGg6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGNvbnZlcnRlcjogSUZpcmVzdG9yZUNvbnZlcnRlcjxFbnRpdHk+O1xuXG4gIGdldCBwYXRoQnVpbGRlcigpOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHksIHR5cGVvZiB0aGlzLmNvbGxlY3Rpb25QYXRoPiB7XG4gICAgcmV0dXJuIHBhdGhCdWlsZGVyRmFjdG9yeSh0aGlzLmNvbGxlY3Rpb25QYXRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZGFvKCkge1xuICAgIHJldHVybiBuZXcgRmlyZXN0b3JlREFPPEVudGl0eT4odGhpcy5hZGFwdGVyLCB0aGlzLnBhdGhCdWlsZGVyKTtcbiAgfSAgXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcmVzdG9yZVF1ZXJ5PEVudGl0eSBleHRlbmRzIHtpZDogc3RyaW5nfT4oXG4gIGVudGl0eTogeyBuZXcoKTogRW50aXR5IH0sXG4gIGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIgPSBpbmplY3QoRmlyZXN0b3JlQWRhcHRlciksXG4pOiBCYXNlRmlyZXN0b3JlUXVlcnk8RW50aXR5PiB7XG5cbiAgY2xhc3MgRmlyZXN0b3JlUXVlcnkgZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUXVlcnk8RW50aXR5PiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udmVydGVyOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT4sXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29sbGVjdGlvblBhdGg6IHN0cmluZyxcbiAgICAgIHB1YmxpYyBwYXRoQnVpbGRlcjogRmlyZXN0b3JlUGF0aEJ1aWxkZXI8RW50aXR5LCBhbnk+LFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIsXG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGFvOiBGaXJlc3RvcmVEQU88RW50aXR5PixcbiAgICApIHsgc3VwZXIoKTsgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBGaXJlc3RvcmVRdWVyeShcbiAgICBnZXRDb252ZXJ0ZXIoZW50aXR5LCBhZGFwdGVyKSxcbiAgICBnZXRDb2xsZWN0aW9uKGVudGl0eSksXG4gICAgcGF0aEJ1aWxkZXJGYWN0b3J5KGdldENvbGxlY3Rpb24oZW50aXR5KSksXG4gICAgYWRhcHRlcixcbiAgICBuZXcgRmlyZXN0b3JlREFPPEVudGl0eT4oYWRhcHRlciwgcGF0aEJ1aWxkZXJGYWN0b3J5KGdldENvbGxlY3Rpb24oZW50aXR5KSkpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RmlyZXN0b3JlUXVlcnk8RW50aXR5IGV4dGVuZHMge2lkOiBzdHJpbmd9PihlbnRpdHk6IHsgbmV3KCk6IEVudGl0eSB9KTogQmFzZUZpcmVzdG9yZVF1ZXJ5PEVudGl0eT4ge1xuICByZXR1cm4gZ2V0RmlyZXN0b3JlUXVlcnkoZW50aXR5LCBpbmplY3QoRmlyZXN0b3JlQWRhcHRlcikpO1xufVxuIl19","import { Injectable } from \"@angular/core\";\nimport { FirestoreQuery } from \"./query\";\nimport Dexie, { liveQuery } from 'dexie';\nimport { catchError, combineLatest, distinctUntilChanged, map, NEVER, Observable, of, retry, switchMap, tap, throttleTime } from 'rxjs';\nimport dayjs from \"dayjs\";\nimport * as i0 from \"@angular/core\";\nfunction fromDexie(observable) {\n return new Observable(subscriber => observable.subscribe(subscriber));\n}\nclass DexieAdapter extends Dexie {\n entities;\n constructor() {\n super('@nx-ddd/firestore/cached-query');\n this.version(3).stores({ entities: '++id' });\n }\n count$() {\n return fromDexie(liveQuery(() => this.entities.count()));\n }\n getLastUpdatedAt$(collectionPath) {\n return of(null).pipe(switchMap((() => fromDexie(liveQuery(() => this.entities.toArray())))), map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)), map(entities => entities.sort((a, b) => {\n if (!a?.updatedAt)\n return -1;\n if (!b?.updatedAt)\n return 1;\n return dayjs(a?.updatedAt).diff(dayjs(b?.updatedAt));\n }).at(-1)), map(entity => entity?.updatedAt ? dayjs(entity?.updatedAt) : dayjs('1970-01-01')), distinctUntilChanged((pre, cur) => pre.isSame(cur)));\n }\n async bulkPut(collectionPath, entities) {\n return this.entities.bulkPut(entities.map(entity => {\n const key = `${entity.id}`;\n return {\n id: key,\n collectionPath,\n value: JSON.stringify(entity),\n updatedAt: entity.updatedAt.toISOString(),\n };\n }));\n }\n listChanges(collectionPath) {\n return of(null).pipe(switchMap(() => fromDexie(liveQuery(() => this.entities.toArray()))), map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)), map((entities) => entities.map(entity => JSON.parse(entity.value))));\n }\n}\nclass FirestoreIndexedDbCached {\n collectionPath;\n constructor(collectionPath) {\n this.collectionPath = collectionPath;\n }\n adapter = new DexieAdapter();\n getLastUpdatedAt$() {\n return this.adapter.getLastUpdatedAt$(this.collectionPath);\n }\n async setMany(entities) {\n return this.adapter.bulkPut(this.collectionPath, entities);\n }\n listChanges() {\n return this.adapter.listChanges(this.collectionPath);\n }\n}\nexport class CachedFirestoreQuery extends FirestoreQuery {\n _cached;\n get cached() {\n return this._cached ??= new FirestoreIndexedDbCached(this.collectionPath);\n }\n config = {\n throttleTime: 5_000,\n loadChunkSize: 1_000,\n };\n listChanges(paramMap) {\n const collection = this.dao.getCollection(paramMap);\n return this.cached.getLastUpdatedAt$().pipe(switchMap((lastUpdatedAt) => this._listChangesAfter(collection, lastUpdatedAt, {\n limit: this.config.loadChunkSize,\n }).pipe(retry(3), tap((updated) => this.cached.setMany(updated)), tap((updated) => console.log('updated:', updated)), catchError((error) => (console.error(error), NEVER)))), switchMap(() => this.cached.listChanges()), map((entities) => entities.map(entity => this.converter.fromObject(entity))), throttleTime(this.config.throttleTime));\n }\n _listChange(paramMap) {\n return of(paramMap).pipe(map((paramMap) => this.dao.getCollection(paramMap)), map((collection) => this.adapter.query(collection, this.adapter.limit(10))), switchMap((collection) => this.getListChanges$ByCollectionLike(collection)));\n }\n _listChangesAfter(collection, updatedAt, { limit } = {}) {\n const updatedAtTs = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt;\n const query = this.adapter.query(collection, ...[\n this.adapter.where('updatedAt', '>', updatedAtTs),\n this.adapter.orderBy('updatedAt', 'asc'),\n limit ? this.adapter.limit(limit) : undefined,\n ].filter(Boolean));\n return this.getListChanges$ByCollectionLike(query);\n }\n progressChanges() {\n return combineLatest({\n cloud: this.count(),\n local: this.listChanges().pipe(map(items => items.length)),\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CachedFirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CachedFirestoreQuery });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CachedFirestoreQuery, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLXF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9xdWVyeS92Mi9jYWNoZWQtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpDLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFpQyxNQUFNLE9BQU8sQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hJLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFNMUIsU0FBUyxTQUFTLENBQUksVUFBOEI7SUFDbEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBU0QsTUFBTSxZQUE2RCxTQUFRLEtBQUs7SUFDOUUsUUFBUSxDQUFtQztJQUUzQztRQUNFLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGlC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NUcsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ3pHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUM5QixVQUFVLEVBQ1YsR0FBRztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUM7WUFDeEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUM5QyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDbEIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxhQUFhLENBQUM7WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNELENBQUMsQ0FBQztJQUNMLENBQUM7dUdBdERtQixvQkFBb0I7MkdBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmlyZXN0b3JlUXVlcnkgfSBmcm9tIFwiLi9xdWVyeVwiO1xuaW1wb3J0IHsgRXh0cmFjdFBhcmFtcyB9IGZyb20gXCIuLi8uLi9wYXRoLWJ1aWxkZXJcIjtcbmltcG9ydCBEZXhpZSwgeyBsaXZlUXVlcnksIE9ic2VydmFibGUgYXMgRGV4aWVPYnNlcnZhYmxlIH0gZnJvbSAnZGV4aWUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgTkVWRVIsIE9ic2VydmFibGUsIG9mLCByZXRyeSwgc3dpdGNoTWFwLCB0YXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkxpa2UgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xuXG50eXBlIENvbFBhcmFtPFQgZXh0ZW5kcyB7cmVhZG9ubHkgY29sbGVjdGlvblBhdGg6IHN0cmluZ30+ID0gT21pdDxFeHRyYWN0UGFyYW1zPFRbJ2NvbGxlY3Rpb25QYXRoJ10+LCAnaWQnPjtcbnR5cGUgRG9jUGFyYW08VCBleHRlbmRzIHtyZWFkb25seSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nfT4gPSBDb2xQYXJhbTxUPiAmIHtpZDogc3RyaW5nfTsgXG5cbmZ1bmN0aW9uIGZyb21EZXhpZTxUPihvYnNlcnZhYmxlOiBEZXhpZU9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZXIgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xufVxuXG5pbnRlcmZhY2UgRW50aXR5RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG5jbGFzcyBEZXhpZUFkYXB0ZXI8RSBleHRlbmRzIHtpZDogc3RyaW5nLCB1cGRhdGVkQXQ6IGRheWpzLkRheWpzfT4gZXh0ZW5kcyBEZXhpZSB7XG4gIGVudGl0aWVzITogRGV4aWUuVGFibGU8RW50aXR5RGF0YSwgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignQG54LWRkZC9maXJlc3RvcmUvY2FjaGVkLXF1ZXJ5Jyk7XG4gICAgdGhpcy52ZXJzaW9uKDMpLnN0b3Jlcyh7IGVudGl0aWVzOiAnKytpZCcgfSk7XG4gIH1cblxuICBjb3VudCQoKSB7XG4gICAgcmV0dXJuIGZyb21EZXhpZShsaXZlUXVlcnkoKCkgPT4gdGhpcy5lbnRpdGllcy5jb3VudCgpKSk7XG4gIH1cblxuICBnZXRMYXN0VXBkYXRlZEF0JChjb2xsZWN0aW9uUGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG9mKG51bGwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCgpID0+IGZyb21EZXhpZShsaXZlUXVlcnkoKCkgPT4gdGhpcy5lbnRpdGllcy50b0FycmF5KCkpKSkpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXMuZmlsdGVyKGVudGl0eSA9PiBlbnRpdHkuY29sbGVjdGlvblBhdGggPT09IGNvbGxlY3Rpb25QYXRoKSksXG4gICAgICBtYXAoZW50aXRpZXMgPT4gZW50aXRpZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoIWE/LnVwZGF0ZWRBdCkgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoIWI/LnVwZGF0ZWRBdCkgcmV0dXJuIDE7XG4gICAgICAgIHJldHVybiBkYXlqcyhhPy51cGRhdGVkQXQpLmRpZmYoZGF5anMoYj8udXBkYXRlZEF0KSk7XG4gICAgICB9KS5hdCgtMSkpLFxuICAgICAgbWFwKGVudGl0eSA9PiBlbnRpdHk/LnVwZGF0ZWRBdCA/IGRheWpzKGVudGl0eT8udXBkYXRlZEF0KSA6IGRheWpzKCcxOTcwLTAxLTAxJykpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZSwgY3VyKSA9PiBwcmUuaXNTYW1lKGN1cikpLFxuICAgICk7XG4gIH1cblxuICBhc3luYyBidWxrUHV0KGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsIGVudGl0aWVzOiBFW10pIHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcy5idWxrUHV0KGVudGl0aWVzLm1hcChlbnRpdHkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gYCR7ZW50aXR5LmlkfWA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDoga2V5LFxuICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGVudGl0eSksXG4gICAgICAgIHVwZGF0ZWRBdDogZW50aXR5LnVwZGF0ZWRBdC50b0lTT1N0cmluZygpLFxuICAgICAgfTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0Q2hhbmdlcyhjb2xsZWN0aW9uUGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFW10+IHtcbiAgICByZXR1cm4gb2YobnVsbCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBmcm9tRGV4aWUobGl2ZVF1ZXJ5KCgpID0+IHRoaXMuZW50aXRpZXMudG9BcnJheSgpKSkpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXMuZmlsdGVyKGVudGl0eSA9PiBlbnRpdHkuY29sbGVjdGlvblBhdGggPT09IGNvbGxlY3Rpb25QYXRoKSksXG4gICAgICBtYXAoKGVudGl0aWVzKSA9PiBlbnRpdGllcy5tYXAoZW50aXR5ID0+IEpTT04ucGFyc2UoZW50aXR5LnZhbHVlKSBhcyBFKSksXG4gICAgKTtcbiAgfVxufVxuXG5jbGFzcyBGaXJlc3RvcmVJbmRleGVkRGJDYWNoZWQ8RSBleHRlbmRzIHtpZDogc3RyaW5nLCB1cGRhdGVkQXQ6IGRheWpzLkRheWpzfT4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29sbGVjdGlvblBhdGg6IHN0cmluZykgeyB9XG5cbiAgcmVhZG9ubHkgYWRhcHRlciA9IG5ldyBEZXhpZUFkYXB0ZXI8RT4oKTtcblxuICBnZXRMYXN0VXBkYXRlZEF0JCgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldExhc3RVcGRhdGVkQXQkKHRoaXMuY29sbGVjdGlvblBhdGgpO1xuICB9XG5cbiAgYXN5bmMgc2V0TWFueShlbnRpdGllczogRVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5idWxrUHV0KHRoaXMuY29sbGVjdGlvblBhdGgsIGVudGl0aWVzKTtcbiAgfVxuXG4gIGxpc3RDaGFuZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIubGlzdENoYW5nZXModGhpcy5jb2xsZWN0aW9uUGF0aCk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhY2hlZEZpcmVzdG9yZVF1ZXJ5PEUgZXh0ZW5kcyB7aWQ6IHN0cmluZywgdXBkYXRlZEF0OiBkYXlqcy5EYXlqc30gPSBhbnk+IGV4dGVuZHMgRmlyZXN0b3JlUXVlcnk8RT4ge1xuICBwcm90ZWN0ZWQgX2NhY2hlZDogRmlyZXN0b3JlSW5kZXhlZERiQ2FjaGVkPEU+O1xuICBwcm90ZWN0ZWQgZ2V0IGNhY2hlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVkID8/PSBuZXcgRmlyZXN0b3JlSW5kZXhlZERiQ2FjaGVkPEU+KHRoaXMuY29sbGVjdGlvblBhdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IHtcbiAgICB0aHJvdHRsZVRpbWU6IDVfMDAwLFxuICAgIGxvYWRDaHVua1NpemU6IDFfMDAwLFxuICB9O1xuXG4gIG92ZXJyaWRlIGxpc3RDaGFuZ2VzKHBhcmFtTWFwPzogQ29sUGFyYW08dGhpcz4pOiBPYnNlcnZhYmxlPEVbXT4ge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRhby5nZXRDb2xsZWN0aW9uKHBhcmFtTWFwIGFzIGFueSk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkLmdldExhc3RVcGRhdGVkQXQkKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobGFzdFVwZGF0ZWRBdCkgPT4gdGhpcy5fbGlzdENoYW5nZXNBZnRlcihjb2xsZWN0aW9uLCBsYXN0VXBkYXRlZEF0LCB7XG4gICAgICAgIGxpbWl0OiB0aGlzLmNvbmZpZy5sb2FkQ2h1bmtTaXplLFxuICAgICAgfSkucGlwZShcbiAgICAgICAgcmV0cnkoMyksXG4gICAgICAgIHRhcCgodXBkYXRlZCkgPT4gdGhpcy5jYWNoZWQuc2V0TWFueSh1cGRhdGVkKSksXG4gICAgICAgIHRhcCgodXBkYXRlZCkgPT4gY29uc29sZS5sb2coJ3VwZGF0ZWQ6JywgdXBkYXRlZCkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gKGNvbnNvbGUuZXJyb3IoZXJyb3IpLCBORVZFUikpLFxuICAgICAgKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jYWNoZWQubGlzdENoYW5nZXMoKSksXG4gICAgICBtYXAoKGVudGl0aWVzKSA9PiBlbnRpdGllcy5tYXAoZW50aXR5ID0+IHRoaXMuY29udmVydGVyLmZyb21PYmplY3QoZW50aXR5KSkpLFxuICAgICAgdGhyb3R0bGVUaW1lKHRoaXMuY29uZmlnLnRocm90dGxlVGltZSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbGlzdENoYW5nZShwYXJhbU1hcD86IENvbFBhcmFtPHRoaXM+KTogT2JzZXJ2YWJsZTxFW10+IHtcbiAgICByZXR1cm4gb2YocGFyYW1NYXApLnBpcGUoXG4gICAgICBtYXAoKHBhcmFtTWFwKSA9PiB0aGlzLmRhby5nZXRDb2xsZWN0aW9uKHBhcmFtTWFwIGFzIGFueSkpLFxuICAgICAgbWFwKChjb2xsZWN0aW9uKSA9PiB0aGlzLmFkYXB0ZXIucXVlcnkoY29sbGVjdGlvbiwgdGhpcy5hZGFwdGVyLmxpbWl0KDEwKSkpLFxuICAgICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uKSA9PiB0aGlzLmdldExpc3RDaGFuZ2VzJEJ5Q29sbGVjdGlvbkxpa2UoY29sbGVjdGlvbikpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2xpc3RDaGFuZ2VzQWZ0ZXIoY29sbGVjdGlvbjogQ29sbGVjdGlvbkxpa2UsIHVwZGF0ZWRBdDogZGF5anMuRGF5anMsIHtsaW1pdH06IHtsaW1pdD86IG51bWJlcn0gPSB7fSkge1xuICAgIGNvbnN0IHVwZGF0ZWRBdFRzID0gZGF5anMuaXNEYXlqcyh1cGRhdGVkQXQpID8gdGhpcy5hZGFwdGVyLmNvbnZlcnREYXRlVG9UaW1lc3RhbXAodXBkYXRlZEF0KSA6IHVwZGF0ZWRBdFxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5hZGFwdGVyLnF1ZXJ5KFxuICAgICAgY29sbGVjdGlvbixcbiAgICAgIC4uLltcbiAgICAgICAgdGhpcy5hZGFwdGVyLndoZXJlKCd1cGRhdGVkQXQnLCAnPicsIHVwZGF0ZWRBdFRzKSxcbiAgICAgICAgdGhpcy5hZGFwdGVyLm9yZGVyQnkoJ3VwZGF0ZWRBdCcsICdhc2MnKSxcbiAgICAgICAgbGltaXQgPyB0aGlzLmFkYXB0ZXIubGltaXQobGltaXQpIDogdW5kZWZpbmVkLFxuICAgICAgXS5maWx0ZXIoQm9vbGVhbiksXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0Q2hhbmdlcyRCeUNvbGxlY3Rpb25MaWtlKHF1ZXJ5KTtcbiAgfVxuXG4gIHByb2dyZXNzQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICBjbG91ZDogdGhpcy5jb3VudCgpLFxuICAgICAgbG9jYWw6IHRoaXMubGlzdENoYW5nZXMoKS5waXBlKG1hcChpdGVtcyA9PiBpdGVtcy5sZW5ndGgpKSxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { inject, Injectable } from '@angular/core';\nimport { Repository } from '@nx-ddd/common/domain';\nimport { toObject } from '@nx-ddd/common';\nimport { generateId } from '@nx-ddd/common';\nimport { FirestoreAdapter } from '../adapters/base';\nimport { getConverter } from '../converter';\nimport { pathBuilderFactory } from '../path-builder';\nimport { getCollection } from '../decorators/decorators';\nimport * as i0 from \"@angular/core\";\nconst toPromise = callback => new Promise((resolve, reject) => {\n try {\n resolve(callback());\n }\n catch (error) {\n reject(error);\n }\n});\nfunction doesExist(doc) {\n if (typeof doc.exists === 'function') {\n return doc.exists();\n }\n return doc.exists;\n}\nexport class BaseFirestoreRepository extends Repository {\n async list(paramMap, query = q => q) {\n const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();\n return this._list(query(collection));\n }\n listChanges() {\n throw new Error('Method not implemented.');\n }\n async count(paramMap) {\n return this.collection(paramMap).count();\n }\n async get(paramMap) {\n return this._get(this.doc(paramMap));\n }\n async save(entity) {\n const docRef = this.doc({ ...entity, id: entity?.id || this.genId() });\n return this._save(docRef, entity);\n }\n async saveMany(entities) {\n return this.bulkWrite(entities);\n }\n async create(entity) {\n const obj = toObject(entity);\n const id = obj?.id || this.genId();\n return toPromise(() => this.doc({ ...obj, id })).then(doc => this._create(doc, entity));\n }\n async createMany(entities) {\n return Promise.all(entities.map(entity => this.create(entity)));\n }\n async update(entity) {\n return this.doc(entity).update(this.adapter.flattenForUpdate({\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['updatedAt']),\n })).then(() => { });\n }\n async updateMany(data) {\n return this.bulkUpdate(data);\n }\n delete(paramMap) {\n return this.doc(paramMap).delete();\n }\n async deleteMany(params) {\n return params.reduce((batch, param) => {\n const doc = this.doc(param).__ref;\n return batch.delete(doc);\n }, this.adapter.batch()).commit().then(() => params.length);\n }\n async deleteAll() {\n throw new Error('Method not implemented.');\n }\n async bulkWrite(entities, timestamps = []) {\n return entities.reduce((batch, entity) => {\n const doc = this.doc(entity).__ref;\n return batch.set(doc, {\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(timestamps),\n });\n }, this.adapter.batch()).commit();\n }\n async bulkCreate(entities) {\n // TODO(nontangent): add maximum 500 record validation\n return entities.reduce((batch, entity) => {\n const doc = this.doc(entity).__ref;\n return batch.create(doc, {\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['createdAt', 'updatedAt']),\n });\n }, this.adapter.batch()).commit();\n }\n async bulkUpdate(entities) {\n // TODO(nontangent): add maximum 500 record validation\n return entities.reduce((batch, entity) => {\n const doc = this.doc(entity).__ref;\n return batch.update(doc, {\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['updatedAt']),\n });\n }, this.adapter.batch()).commit();\n }\n async bulkDelete(paramMaps) {\n // MEMO(@nontangent): 500件以上の削除は未対応\n return paramMaps.reduce((batch, paramMap) => {\n const doc = this.doc(paramMap).__ref;\n return batch.delete(doc);\n }, this.adapter.batch()).commit();\n }\n collection(paramMap) {\n const path = this.pathBuilder.collection(paramMap);\n return this.adapter.collection(path);\n }\n collectionGroup() {\n const path = this.pathBuilder.collectionGroup();\n return this.adapter.collectionGroup(path);\n }\n doc(paramMap) {\n const path = this.pathBuilder.doc(paramMap);\n return this.adapter.doc(path);\n }\n genId = () => generateId();\n _list(collection) {\n return collection.get().then(({ docs }) => docs.map(doc => {\n if (!doesExist(doc))\n return null;\n return this.converter.fromFirestore(doc);\n }));\n }\n _get(doc) {\n return doc.get().then((doc => {\n if (!doc.data())\n return null;\n return this.converter.fromFirestore(doc);\n }));\n }\n async _save(doc, entity) {\n const exists = await doc.exists();\n if (exists) {\n return this._set(doc, entity).then(doc => [this.converter.fromFirestore(doc), false]);\n }\n else {\n return this._create(doc, entity).then(entity => [entity, true]);\n }\n }\n async _create(doc, entity) {\n const exists = await doc.exists().catch((error) => {\n // MEMO(@nontangent): bunで実行するときだけこのエラーがでるかもしれない。\n if (`${error}`.startsWith('Error: Did not receive document for'))\n return false;\n throw error;\n });\n if (exists)\n throw new Error('Document already exists');\n return doc.set({\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['createdAt', 'updatedAt']),\n }).then(() => doc.get()).then(doc => this.converter.fromFirestore(doc));\n }\n _set(doc, entity, isUpdate = true) {\n const data = this.converter.toFirestore(entity);\n return doc.set({\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(isUpdate ? ['updatedAt'] : []),\n }, { merge: isUpdate }).then(() => doc.get());\n }\n buildServerTimestampObject(keys = ['createdAt', 'updatedAt']) {\n return keys.reduce((m, k) => ({ ...m, [k]: this.adapter.FieldValue.serverTimestamp() }), {});\n }\n}\nexport class FirestoreRepository extends BaseFirestoreRepository {\n adapter = inject(FirestoreAdapter);\n get pathBuilder() {\n return pathBuilderFactory(this.collectionPath);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreRepository, decorators: [{\n type: Injectable\n }] });\nexport function getFirestoreRepository(entity, adapter = inject(FirestoreAdapter)) {\n class FirestoreRepository extends BaseFirestoreRepository {\n converter;\n collectionPath;\n pathBuilder;\n adapter;\n constructor(converter, collectionPath, pathBuilder, adapter) {\n super();\n this.converter = converter;\n this.collectionPath = collectionPath;\n this.pathBuilder = pathBuilder;\n this.adapter = adapter;\n }\n }\n return new FirestoreRepository(getConverter(entity, adapter), getCollection(entity), pathBuilderFactory(getCollection(entity)), adapter);\n}\nexport function injectFirestoreRepository(entity) {\n return getFirestoreRepository(entity, inject(FirestoreAdapter));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvcmVwb3NpdG9yeS9yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBdUMsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcxRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRXpELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQThCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBQ3pGLElBQUksQ0FBQztRQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxTQUFTLENBQUMsR0FBcUI7SUFDdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDckMsT0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFD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QUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFtRCxNQUF5QjtJQUNuSCxPQUFPLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9kb21haW4nO1xuaW1wb3J0IHsgdG9PYmplY3QgfSBmcm9tICdAbngtZGRkL2NvbW1vbic7XG5pbXBvcnQgeyBnZW5lcmF0ZUlkIH0gZnJvbSAnQG54LWRkZC9jb21tb24nO1xuaW1wb3J0IHsgRmlyZXN0b3JlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL2Jhc2UnO1xuaW1wb3J0IHsgZ2V0Q29udmVydGVyLCBJRmlyZXN0b3JlQ29udmVydGVyIH0gZnJvbSAnLi4vY29udmVydGVyJztcbmltcG9ydCB7IEV4dHJhY3RQYXJhbXMsIEZpcmVzdG9yZVBhdGhCdWlsZGVyLCBwYXRoQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9wYXRoLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29sbGVjdGlvblJlZmVyZW5jZSwgQ29sbGVjdGlvbkdyb3VwLCBEb2N1bWVudFJlZmVyZW5jZSwgRG9jdW1lbnRTbmFwc2hvdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0Q29sbGVjdGlvbiB9IGZyb20gJy4uL2RlY29yYXRvcnMvZGVjb3JhdG9ycyc7XG5cbmNvbnN0IHRvUHJvbWlzZSA9IGNhbGxiYWNrID0+IG5ldyBQcm9taXNlPFJldHVyblR5cGU8dHlwZW9mIGNhbGxiYWNrPj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICB0cnkgeyByZXNvbHZlKGNhbGxiYWNrKCkpOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyB9XG59KTtcblxuZnVuY3Rpb24gZG9lc0V4aXN0KGRvYzogRG9jdW1lbnRTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGRvYy5leGlzdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZG9jLmV4aXN0cygpO1xuICB9XG4gIHJldHVybiBkb2MuZXhpc3RzO1xufVxuXG4vLyBGaXJlc3RvcmVSZXBvc2l0b3J544GL44KJRW5yaXJ544KS5Y+W5b6X44GZ44KLaW5mZXJcbmV4cG9ydCB0eXBlIEV4dHJhY3RFbnRpdHk8VCBleHRlbmRzIEJhc2VGaXJlc3RvcmVSZXBvc2l0b3J5PGFueSwgYW55Pj4gPSBUIGV4dGVuZHMgQmFzZUZpcmVzdG9yZVJlcG9zaXRvcnk8aW5mZXIgRW50aXR5LCBhbnk+ID8gRW50aXR5IDogbmV2ZXI7XG50eXBlIENvbFBhcmFtPFQgZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxhbnksIGFueT4+ID0gT21pdDxFeHRyYWN0UGFyYW1zPFRbJ2NvbGxlY3Rpb25QYXRoJ10+LCAnaWQnPjtcbnR5cGUgRG9jUGFyYW08VCBleHRlbmRzIEJhc2VGaXJlc3RvcmVSZXBvc2l0b3J5PGFueSwgYW55PiwgVEV4dHJhID0ge30+ID0gQ29sUGFyYW08VD4gJiB7IGlkOiBzdHJpbmcgfSAmIFRFeHRyYTsgXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgVEV4dHJhUGFyYW1zID0ge30+IGV4dGVuZHMgUmVwb3NpdG9yeTxFbnRpdHk+IHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29sbGVjdGlvblBhdGg6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXI7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb252ZXJ0ZXI6IElGaXJlc3RvcmVDb252ZXJ0ZXI8RW50aXR5PjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgcGF0aEJ1aWxkZXI6IEZpcmVzdG9yZVBhdGhCdWlsZGVyPEVudGl0eSwgdHlwZW9mIHRoaXMuY29sbGVjdGlvblBhdGg+O1xuXG4gIGFzeW5jIGxpc3QocGFyYW1NYXA/OiBDb2xQYXJhbTx0aGlzPiwgcXVlcnk6IGFueSA9IHEgPT4gcSk6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gcGFyYW1NYXAgPyB0aGlzLmNvbGxlY3Rpb24ocGFyYW1NYXApIDogdGhpcy5jb2xsZWN0aW9uR3JvdXAoKTtcbiAgICByZXR1cm4gdGhpcy5fbGlzdChxdWVyeShjb2xsZWN0aW9uKSk7XG4gIH1cblxuICBsaXN0Q2hhbmdlcygpOiBPYnNlcnZhYmxlPEVudGl0eVtdPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgYXN5bmMgY291bnQocGFyYW1NYXA/OiBDb2xQYXJhbTx0aGlzPik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbihwYXJhbU1hcCkuY291bnQoKTtcbiAgfVxuXG4gIGFzeW5jIGdldChwYXJhbU1hcD86IERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4pIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0KHRoaXMuZG9jKHBhcmFtTWFwIGFzIGFueSkpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZShlbnRpdHk6IERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBFbnRpdHkpOiBQcm9taXNlPFtFbnRpdHksIGJvb2xlYW5dPiB7XG4gICAgY29uc3QgZG9jUmVmID0gdGhpcy5kb2Moey4uLmVudGl0eSwgaWQ6IGVudGl0eT8uaWQgfHwgdGhpcy5nZW5JZCgpfSk7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmUoZG9jUmVmLCBlbnRpdHkpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZU1hbnkoZW50aXRpZXM6IEVudGl0eVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa1dyaXRlKGVudGl0aWVzIGFzIGFueSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoZW50aXR5OiBEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+ICYgRW50aXR5KTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICBjb25zdCBvYmogPSB0b09iamVjdChlbnRpdHkpIGFzIERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBFbnRpdHk7XG4gICAgY29uc3QgaWQgPSBvYmo/LmlkIHx8IHRoaXMuZ2VuSWQoKTtcbiAgICByZXR1cm4gdG9Qcm9taXNlKCgpID0+IHRoaXMuZG9jKHsuLi5vYmosIGlkfSkpLnRoZW4oZG9jID0+IHRoaXMuX2NyZWF0ZShkb2MsIGVudGl0eSkpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlTWFueShlbnRpdGllczogKERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBFbnRpdHkpW10pOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGVudGl0aWVzLm1hcChlbnRpdHkgPT4gdGhpcy5jcmVhdGUoZW50aXR5KSkpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGVudGl0eTogRG9jUGFyYW08dGhpcywgVEV4dHJhUGFyYW1zPiAmIFBhcnRpYWw8RW50aXR5Pik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmRvYyhlbnRpdHkpLnVwZGF0ZSh0aGlzLmFkYXB0ZXIuZmxhdHRlbkZvclVwZGF0ZSh7XG4gICAgICAuLi50aGlzLmNvbnZlcnRlci50b0ZpcmVzdG9yZShlbnRpdHkpLFxuICAgICAgLi4udGhpcy5idWlsZFNlcnZlclRpbWVzdGFtcE9iamVjdChbJ3VwZGF0ZWRBdCddKSxcbiAgICB9KSkudGhlbigoKSA9PiB7fSk7IFxuICB9XG5cbiAgYXN5bmMgdXBkYXRlTWFueShkYXRhOiBQYXJ0aWFsPEVudGl0eT5bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtVcGRhdGUoZGF0YSBhcyBhbnkpO1xuICB9XG5cbiAgZGVsZXRlKHBhcmFtTWFwOiBEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jKHBhcmFtTWFwIGFzIGFueSkuZGVsZXRlKCk7XG4gIH1cblxuICBhc3luYyBkZWxldGVNYW55KHBhcmFtczogeyBpZDogc3RyaW5nOyB9W10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBwYXJhbXMucmVkdWNlKChiYXRjaCwgcGFyYW0pID0+IHtcbiAgICAgIGNvbnN0IGRvYyA9IHRoaXMuZG9jKHBhcmFtIGFzIGFueSkuX19yZWY7XG4gICAgICByZXR1cm4gYmF0Y2guZGVsZXRlKGRvYyk7XG4gICAgfSwgdGhpcy5hZGFwdGVyLmJhdGNoKCkpLmNvbW1pdCgpLnRoZW4oKCkgPT4gcGFyYW1zLmxlbmd0aCk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgYXN5bmMgYnVsa1dyaXRlKGVudGl0aWVzOiAoRG9jUGFyYW08dGhpcywgVEV4dHJhUGFyYW1zPiAmIEVudGl0eSlbXSwgdGltZXN0YW1wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBlbnRpdGllcy5yZWR1Y2UoKGJhdGNoLCBlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IGRvYyA9IHRoaXMuZG9jKGVudGl0eSkuX19yZWY7XG4gICAgICByZXR1cm4gYmF0Y2guc2V0KGRvYywge1xuICAgICAgICAuLi50aGlzLmNvbnZlcnRlci50b0ZpcmVzdG9yZShlbnRpdHkpLFxuICAgICAgICAuLi50aGlzLmJ1aWxkU2VydmVyVGltZXN0YW1wT2JqZWN0KHRpbWVzdGFtcHMpLFxuICAgICAgfSk7XG4gICAgfSwgdGhpcy5hZGFwdGVyLmJhdGNoKCkpLmNvbW1pdCgpO1xuICB9XG5cbiAgYXN5bmMgYnVsa0NyZWF0ZShlbnRpdGllczogKERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBFbnRpdHkpW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUT0RPKG5vbnRhbmdlbnQpOiBhZGQgbWF4aW11bSA1MDAgcmVjb3JkIHZhbGlkYXRpb25cbiAgICByZXR1cm4gZW50aXRpZXMucmVkdWNlKChiYXRjaCwgZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBkb2MgPSB0aGlzLmRvYyhlbnRpdHkpLl9fcmVmO1xuICAgICAgcmV0dXJuIGJhdGNoLmNyZWF0ZShkb2MsIHtcbiAgICAgICAgLi4udGhpcy5jb252ZXJ0ZXIudG9GaXJlc3RvcmUoZW50aXR5KSxcbiAgICAgICAgLi4udGhpcy5idWlsZFNlcnZlclRpbWVzdGFtcE9iamVjdChbJ2NyZWF0ZWRBdCcsICd1cGRhdGVkQXQnXSksXG4gICAgICB9KTtcbiAgICB9LCB0aGlzLmFkYXB0ZXIuYmF0Y2goKSkuY29tbWl0KCk7XG4gIH1cblxuICBhc3luYyBidWxrVXBkYXRlKGVudGl0aWVzOiAoRG9jUGFyYW08dGhpcywgVEV4dHJhUGFyYW1zPiAmIFBhcnRpYWw8RW50aXR5PilbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRPRE8obm9udGFuZ2VudCk6IGFkZCBtYXhpbXVtIDUwMCByZWNvcmQgdmFsaWRhdGlvblxuICAgIHJldHVybiBlbnRpdGllcy5yZWR1Y2UoKGJhdGNoLCBlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IGRvYyA9IHRoaXMuZG9jKGVudGl0eSkuX19yZWY7XG4gICAgICByZXR1cm4gYmF0Y2gudXBkYXRlKGRvYywge1xuICAgICAgICAuLi50aGlzLmNvbnZlcnRlci50b0ZpcmVzdG9yZShlbnRpdHkpLFxuICAgICAgICAuLi50aGlzLmJ1aWxkU2VydmVyVGltZXN0YW1wT2JqZWN0KFsndXBkYXRlZEF0J10pLFxuICAgICAgfSk7XG4gICAgfSwgdGhpcy5hZGFwdGVyLmJhdGNoKCkpLmNvbW1pdCgpO1xuICB9XG5cbiAgYXN5bmMgYnVsa0RlbGV0ZShwYXJhbU1hcHM6IERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz5bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE1FTU8oQG5vbnRhbmdlbnQpOiA1MDDku7bku6XkuIrjga7liYrpmaTjga/mnKrlr77lv5xcbiAgICByZXR1cm4gcGFyYW1NYXBzLnJlZHVjZSgoYmF0Y2gsIHBhcmFtTWFwKSA9PiB7XG4gICAgICBjb25zdCBkb2MgPSB0aGlzLmRvYyhwYXJhbU1hcCBhcyBhbnkpLl9fcmVmO1xuICAgICAgcmV0dXJuIGJhdGNoLmRlbGV0ZShkb2MpO1xuICAgIH0sIHRoaXMuYWRhcHRlci5iYXRjaCgpKS5jb21taXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb2xsZWN0aW9uKHBhcmFtTWFwPzogT21pdDxFeHRyYWN0UGFyYW1zPHR5cGVvZiB0aGlzLmNvbGxlY3Rpb25QYXRoPiwgJ2lkJz4pOiBDb2xsZWN0aW9uUmVmZXJlbmNlPG9iamVjdD4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnBhdGhCdWlsZGVyLmNvbGxlY3Rpb24ocGFyYW1NYXApXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5jb2xsZWN0aW9uPG9iamVjdD4ocGF0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29sbGVjdGlvbkdyb3VwKCk6IENvbGxlY3Rpb25Hcm91cDxvYmplY3Q+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5jb2xsZWN0aW9uR3JvdXAoKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmNvbGxlY3Rpb25Hcm91cDxvYmplY3Q+KHBhdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRvYyhwYXJhbU1hcDogRG9jUGFyYW08dGhpcywgVEV4dHJhUGFyYW1zPik6IERvY3VtZW50UmVmZXJlbmNlPG9iamVjdD4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnBhdGhCdWlsZGVyLmRvYyhwYXJhbU1hcCBhcyBhbnkpO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZG9jPG9iamVjdD4ocGF0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuSWQgPSAoKTogc3RyaW5nID0+IGdlbmVyYXRlSWQoKTtcblxuICBwcm90ZWN0ZWQgX2xpc3QoY29sbGVjdGlvbjogQ29sbGVjdGlvblJlZmVyZW5jZTxvYmplY3Q+KSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0KCkudGhlbigoe2RvY3N9KSA9PiBkb2NzLm1hcChkb2MgPT4ge1xuICAgICAgaWYgKCFkb2VzRXhpc3QoZG9jKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0ZXIuZnJvbUZpcmVzdG9yZShkb2MpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0KGRvYzogRG9jdW1lbnRSZWZlcmVuY2U8b2JqZWN0Pikge1xuICAgIHJldHVybiBkb2MuZ2V0KCkudGhlbigoZG9jID0+IHtcbiAgICAgIGlmICghZG9jLmRhdGEoKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0ZXIuZnJvbUZpcmVzdG9yZShkb2MpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIF9zYXZlKGRvYzogRG9jdW1lbnRSZWZlcmVuY2U8b2JqZWN0PiwgZW50aXR5OiBFbnRpdHkpOiBQcm9taXNlPFtFbnRpdHksIGJvb2xlYW5dPiB7XG4gICAgY29uc3QgZXhpc3RzID0gYXdhaXQgZG9jLmV4aXN0cygpO1xuICAgIGlmIChleGlzdHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXQoZG9jLCBlbnRpdHkpLnRoZW4oZG9jID0+IFt0aGlzLmNvbnZlcnRlci5mcm9tRmlyZXN0b3JlKGRvYyksIGZhbHNlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGUoZG9jLCBlbnRpdHkpLnRoZW4oZW50aXR5ID0+IFtlbnRpdHksIHRydWVdKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgX2NyZWF0ZShkb2M6IERvY3VtZW50UmVmZXJlbmNlPG9iamVjdD4sIGVudGl0eTogRW50aXR5KTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICBjb25zdCBleGlzdHMgPSBhd2FpdCBkb2MuZXhpc3RzKCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAvLyBNRU1PKEBub250YW5nZW50KTogYnVu44Gn5a6f6KGM44GZ44KL44Go44GN44Gg44GR44GT44Gu44Ko44Op44O844GM44Gn44KL44GL44KC44GX44KM44Gq44GE44CCXG4gICAgICBpZiAoYCR7ZXJyb3J9YC5zdGFydHNXaXRoKCdFcnJvcjogRGlkIG5vdCByZWNlaXZlIGRvY3VtZW50IGZvcicpKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbiAgICBpZiAoZXhpc3RzKSB0aHJvdyBuZXcgRXJyb3IoJ0RvY3VtZW50IGFscmVhZHkgZXhpc3RzJyk7XG4gICAgcmV0dXJuIGRvYy5zZXQoe1xuICAgICAgLi4udGhpcy5jb252ZXJ0ZXIudG9GaXJlc3RvcmUoZW50aXR5KSxcbiAgICAgIC4uLnRoaXMuYnVpbGRTZXJ2ZXJUaW1lc3RhbXBPYmplY3QoWydjcmVhdGVkQXQnLCAndXBkYXRlZEF0J10pLFxuICAgIH0gYXMgYW55KS50aGVuKCgpID0+IGRvYy5nZXQoKSkudGhlbihkb2MgPT4gdGhpcy5jb252ZXJ0ZXIuZnJvbUZpcmVzdG9yZShkb2MpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0KGRvYzogRG9jdW1lbnRSZWZlcmVuY2U8b2JqZWN0PiwgZW50aXR5OiBQYXJ0aWFsPEVudGl0eT4sIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmNvbnZlcnRlci50b0ZpcmVzdG9yZShlbnRpdHkpO1xuICAgIHJldHVybiBkb2Muc2V0KHtcbiAgICAgIC4uLnRoaXMuY29udmVydGVyLnRvRmlyZXN0b3JlKGVudGl0eSksXG4gICAgICAuLi50aGlzLmJ1aWxkU2VydmVyVGltZXN0YW1wT2JqZWN0KGlzVXBkYXRlID8gWyd1cGRhdGVkQXQnXSA6IFtdKSxcbiAgICB9IGFzIGFueSwge21lcmdlOiBpc1VwZGF0ZX0pLnRoZW4oKCkgPT4gZG9jLmdldCgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFNlcnZlclRpbWVzdGFtcE9iamVjdChrZXlzOiBzdHJpbmdbXSA9IFsnY3JlYXRlZEF0JywgJ3VwZGF0ZWRBdCddKSB7XG4gICAgcmV0dXJuIGtleXMucmVkdWNlKChtLCBrKSA9PiAoey4uLm0sIFtrXTogdGhpcy5hZGFwdGVyLkZpZWxkVmFsdWUuc2VydmVyVGltZXN0YW1wKCl9KSwge30pO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaXJlc3RvcmVSZXBvc2l0b3J5PEVudGl0eSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LCBURXh0cmFQYXJhbXMgPSB7fT4gZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHksIFRFeHRyYVBhcmFtcz4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlciA9IGluamVjdChGaXJlc3RvcmVBZGFwdGVyKTtcbiAgZ2V0IHBhdGhCdWlsZGVyKCk6IEZpcmVzdG9yZVBhdGhCdWlsZGVyPEVudGl0eSwgdHlwZW9mIHRoaXMuY29sbGVjdGlvblBhdGg+IHtcbiAgICByZXR1cm4gcGF0aEJ1aWxkZXJGYWN0b3J5KHRoaXMuY29sbGVjdGlvblBhdGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJlc3RvcmVSZXBvc2l0b3J5PEVudGl0eSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LCBURXh0cmFQYXJhbXMgPSB7fT4oXG4gIGVudGl0eTogeyBuZXcoKTogRW50aXR5IH0sXG4gIGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIgPSBpbmplY3QoRmlyZXN0b3JlQWRhcHRlciksXG4pOiBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHksIFRFeHRyYVBhcmFtcz4ge1xuICBjbGFzcyBGaXJlc3RvcmVSZXBvc2l0b3J5IGV4dGVuZHMgQmFzZUZpcmVzdG9yZVJlcG9zaXRvcnk8RW50aXR5LCBURXh0cmFQYXJhbXM+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBjb252ZXJ0ZXI6IElGaXJlc3RvcmVDb252ZXJ0ZXI8RW50aXR5PixcbiAgICAgIHB1YmxpYyByZWFkb25seSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgICAgcHVibGljIHBhdGhCdWlsZGVyOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHksIGFueT4sXG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlcjogRmlyZXN0b3JlQWRhcHRlcixcbiAgICApIHsgc3VwZXIoKTsgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBGaXJlc3RvcmVSZXBvc2l0b3J5KFxuICAgIGdldENvbnZlcnRlcihlbnRpdHksIGFkYXB0ZXIpLFxuICAgIGdldENvbGxlY3Rpb24oZW50aXR5KSxcbiAgICBwYXRoQnVpbGRlckZhY3RvcnkoZ2V0Q29sbGVjdGlvbihlbnRpdHkpKSxcbiAgICBhZGFwdGVyXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RGaXJlc3RvcmVSZXBvc2l0b3J5PEVudGl0eSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LCBURXh0cmFQYXJhbXMgPSB7fT4oZW50aXR5OiB7IG5ldygpOiBFbnRpdHkgfSk6IEJhc2VGaXJlc3RvcmVSZXBvc2l0b3J5PEVudGl0eSwgVEV4dHJhUGFyYW1zPiB7XG4gIHJldHVybiBnZXRGaXJlc3RvcmVSZXBvc2l0b3J5KGVudGl0eSwgaW5qZWN0KEZpcmVzdG9yZUFkYXB0ZXIpKTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtZGRkLWZpcmVzdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvbngtZGRkLWZpcmVzdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["String","Boolean","Number","Map","Array","map","take","switchMap","catchError","tap","distinctUntilChanged"],"mappings":"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"}
1
+ {"version":3,"file":"nx-ddd-firestore.mjs","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/decorators.ts","../../../../../packages/@nx-ddd/firestore/src/lib/adapters/dayjs/dayjs.adatper.ts","../../../../../packages/@nx-ddd/firestore/src/lib/adapters/base/base.adapter.ts","../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts","../../../../../packages/@nx-ddd/firestore/src/lib/dao/firestore.dao.ts","../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts","../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts","../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts","../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/cached-query.ts","../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts","../../../../../packages/@nx-ddd/firestore/src/lib/nx-ddd-firestore.ts"],"sourcesContent":["import { makeDecoratorFactories } from '@nx-ddd/core';\n\nexport const FIRESTORE_ANNOTATIONS = 'firestore_annotations';\nexport type FirestoreFieldType = 'id' | 'boolean' | 'number' \n | 'timestamp' | 'string' | 'geopoint' | 'null' \n | 'map' | 'array' | 'reference';\nexport interface FirestoreAnnotation {\n type: FirestoreFieldType;\n fieldName: string;\n propName: string;\n childType: any;\n}\n\nexport const {\n createDecorator,\n createPropsDecorator,\n createClassDecorator,\n getAnnotations,\n} = makeDecoratorFactories<\n FirestoreFieldType,\n FirestoreAnnotation,\n {childType?: any}\n>(\n (type, fieldName, propName, options) => ({type, fieldName, propName, childType: options.childType}),\n FIRESTORE_ANNOTATIONS\n);\n\n/** @deprecated use getAnnotations */\nexport function getFirestoreAnnotations(target: any): FirestoreAnnotation[] {\n return getAnnotations(target);\n}\n\nexport const ID = createDecorator('id');\nexport const String = createDecorator('string');\nexport const Null = createDecorator('null');\nexport const Geopoint = createDecorator('geopoint');\nexport const Boolean = createDecorator('boolean');\nexport const Timestamp = createDecorator('timestamp');\nexport const Number = createDecorator('number');\nexport const Map = (childType?: () => any, props?: {name?: string}) => createDecorator('map', {childType})(props);\nexport const Array = (childType?: () => any, props?: {name?: string}) => createDecorator('array', {childType})(props);\nexport const Reference = createDecorator('reference');\n\nexport function getCollection(target: any): string {\n const annotations = getAnnotations(target);\n const annotation = annotations.find((annotation: any) => annotation.type === 'collection');\n return (annotation as any).name;\n}\n\nexport const Firestore = {\n Collection: createClassDecorator<{ name: string }>('collection'),\n ID: ID,\n String: String,\n Null: Null,\n Geopoint: Geopoint,\n Boolean: Boolean,\n Timestamp: Timestamp,\n Number: Number,\n Map: Map,\n Array: Array,\n Reference: Reference,\n};\n","import { Injectable } from '@angular/core';\nimport dayjs from 'dayjs';\n\n@Injectable({ providedIn: 'root' })\nexport class DateAdapter {\n isDate<D>(value: any): value is D {\n return value instanceof Date || dayjs.isDayjs(value);\n }\n\n isValid(value: any): boolean {\n return this.isDate<Date>(value) && !isNaN(value.getTime());\n }\n\n getJsDate<D>(value: any): D {\n return value as D;\n }\n\n convertToDate<D>(value: Date): D {\n return value as D;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DayjsAdapter {\n constructor(private readonly dateAdapter: DateAdapter) {}\n\n isDayjs(value: any): value is dayjs.Dayjs {\n return dayjs.isDayjs(value);\n }\n\n isValid(value: any): boolean {\n return this.isDayjs(value) && value.isValid();\n }\n\n getJsDate(value: dayjs.Dayjs): Date {\n return value.toDate();\n }\n\n convertToDayjs<D>(value: any): D {\n return dayjs(value) as D;\n }\n}\n","import { inject } from '@angular/core';\nimport { getFirestoreAnnotations } from '../../decorators/decorators';\nimport { walkObj } from '@nx-ddd/core';\nimport { get } from 'lodash-es';\nimport type {\n CollectionReference,\n CollectionGroup,\n DocumentReference,\n ToFirestoreData,\n Timestamp,\n Query,\n FieldValue,\n DocumentData\n} from '../../interfaces';\nimport { DateAdapter } from '../dayjs';\n\nexport type QueryFn<AppModelType, DbModelType, R> = (\n collection?: any\n) => R;\nexport type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';\n\n\nexport abstract class FirestoreAdapter<Date = any> {\n protected dateAdapter = inject(DateAdapter);\n\n protected abstract isTimestamp(v: any): v is Timestamp;\n protected abstract isFieldValue(v: any): v is FieldValue;\n\n abstract get Timestamp(): any\n abstract get FieldValue(): any\n abstract get FieldPath(): any\n\n abstract doc<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): DocumentReference<AppModelType>;\n\n abstract collection<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): CollectionReference<AppModelType, DbModelType>;\n\n abstract collectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(collectionId: string): CollectionGroup<AppModelType, DbModelType>;\n\n abstract query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(\n collection: CollectionReference<AppModelType, DbModelType>,\n ...queryFnArray: QueryFn<AppModelType, DbModelType, any>[]\n ): Query<AppModelType, DbModelType>;\n\n abstract where<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<AppModelType, DbModelType, any>;\n\n abstract orderBy<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(key: string, order: 'asc' | 'desc'): QueryFn<AppModelType, DbModelType, any>;\n\n abstract limit<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(n: number): QueryFn<AppModelType, DbModelType, any>;\n\n abstract runTransaction(fn: any): any;\n abstract batch(): any;\n\n //** @deprecated */\n toFirestoreData<Entity>(entity: Entity): ToFirestoreData<Entity, Date> {\n return Object.entries(entity).reduce((pre, [k, v]) => ({\n ...pre, [k]: this.dateAdapter.isDate<Date>(v) ? this.convertDateToTimestamp(v) : v,\n }), {} as ToFirestoreData<Entity, Date>);\n }\n\n //** @deprecated */\n fromFirestoreData<Entity>(data: ToFirestoreData<Entity, Date>): Entity {\n return Object.entries(data).reduce((pre, [k, v]) => ({\n ...pre, [k]: this.isTimestamp(v) ? this.convertTimestampToDate(v) : v,\n }), {} as Entity);\n }\n\n toFirestore<T>(obj: object, Entity: new () => T): object {\n const newObj = {};\n for (const annotation of getFirestoreAnnotations(Entity)) {\n const _value = get(obj, annotation.propName);\n if (_value === null) {\n newObj[annotation.fieldName] = null;\n continue;\n }\n switch(annotation.type) {\n case 'id':\n case 'string':\n case 'number': \n case 'boolean': {\n if (typeof _value === 'undefined') break;\n newObj[annotation.fieldName] = _value;\n break;\n }\n case 'timestamp': {\n if (typeof _value === 'undefined') break;\n if (!this.dateAdapter.isDate<Date>(_value)) {\n console.error('[FirestoreAdapter] _value:', _value);\n throw new Error(`Invalid Date Type: ${_value}`);\n }\n newObj[annotation.fieldName] = this.convertDateToTimestamp(_value);\n break;\n }\n case 'array': {\n if (typeof annotation?.childType === 'undefined') {\n if (_value) newObj[annotation.fieldName] = _value;\n } else {\n const Type = (annotation as any).childType();\n if (typeof _value === 'undefined') break;\n if (!Array.isArray(_value)) {\n newObj[annotation.fieldName] = [];\n break;\n }\n const value = (_value ?? []).map(v => {\n switch (Type) {\n case String:\n case Number:\n return v\n default: \n return this.toFirestore(v, Type);\n }\n });\n if (value) newObj[annotation.fieldName] = value\n }\n break;\n }\n case 'map': {\n if (typeof _value === 'undefined') break;\n if (typeof (annotation as any)?.childType === 'undefined') {\n if (_value) newObj[annotation.fieldName] = _value;\n } else {\n const Type = (annotation as any).childType();\n const value = this.toFirestore(_value, Type);\n if (value) newObj[annotation.fieldName] = value;\n }\n break;\n }\n }\n }\n return newObj;\n }\n \n fromFirestore<T = any>(data: any, Entity: new() => T): T {\n const newObj = {};\n for (const annotation of getFirestoreAnnotations(Entity)) {\n const _value = data[annotation.fieldName];\n if (typeof _value === 'undefined') continue;\n if (_value === null) {\n newObj[annotation.propName] = null;\n continue;\n }\n\n switch(annotation.type) {\n case 'id':\n case 'string':\n case 'number':\n case 'boolean': {\n newObj[annotation.propName] = _value;\n break;\n }\n case 'timestamp': {\n try {\n newObj[annotation.propName] = this.convertTimestampToDate(_value);\n } catch (e) {\n newObj[annotation.propName] = _value;\n }\n break;\n }\n case 'array': {\n if (typeof annotation?.childType === 'undefined') {\n newObj[annotation.propName] = _value;\n } else {\n const Type = (annotation as any).childType();\n const value = _value.map(v => {\n switch (Type) {\n case String:\n case Number:\n return v\n default:\n return this.fromFirestore(v, Type);\n }\n });\n if (value) newObj[annotation.propName] = value\n }\n break;\n }\n case 'map': {\n if (typeof annotation?.childType === 'undefined') {\n newObj[annotation.propName] = _value;\n } else {\n const Type = (annotation as any).childType();\n const value = this.fromFirestore(_value, Type);\n if (value) newObj[annotation.propName] = value;\n }\n break;\n }\n }\n }\n return newObj as T;\n }\n\n /**\n * @description FirestoreのUpdateは通常のオブジェクトでは孫以下のプロパティが既存データとマージされないので、パスに変換する必要がある。\n */\n flattenForUpdate(obj: any): any {\n const newObj = {};\n walkObj(obj, {\n callback: (paths, value) => newObj[paths.join('.')] = value,\n overwrite: (_, value) => {\n if (Array.isArray(value)) return [true, value];\n if (this.isTimestamp(value)) return [true, value as any];\n if (this.isFieldValue(value)) return [true, value];\n return [false]\n }\n });\n return newObj;\n }\n\n convertDateToTimestamp(date: Date): Timestamp {\n return this.Timestamp.fromDate(date);\n }\n\n convertTimestampToDate(timestamp: Timestamp): Date {\n return this.dateAdapter.convertToDate(timestamp.toDate())\n }\n \n}\n\nexport function provideFirestoreAdapter(useClass: new () => FirestoreAdapter) {\n return { provide: FirestoreAdapter, useClass };\n}\n","import { inject } from '@angular/core';\nimport { plainToInstanceWithValid } from '@nx-ddd/core';\nimport { FirestoreAdapter } from '../adapters/base';\nimport { DocumentSnapshot } from '../interfaces';\n\nexport interface IFirestoreConverter<E extends {id: string}> {\n fromFirestore(doc: DocumentSnapshot<object>): E;\n fromFirestoreMany(docs: DocumentSnapshot<object>[]): E[];\n toFirestore(entity: Partial<E>): object;\n fromObject?(obj: object): E;\n toObject?(entity: E): object;\n}\n\nclass FirestoreHelper {\n static fromFirestore<E extends {id: string}>(doc: DocumentSnapshot<object>, Entity: new () => E, adapter: FirestoreAdapter): E {\n const data = adapter.fromFirestore({...doc.data(), id: doc.id}, Entity);\n return plainToInstanceWithValid(Entity, data);\n }\n}\n\nclass BasicConverter<E extends {id: string}> {\n constructor(\n protected readonly Entity: new () => E,\n protected readonly adapter: FirestoreAdapter,\n ) { }\n\n fromFirestore(doc: DocumentSnapshot<any>): E {\n return this.adapter.fromFirestore({\n ...doc.data(),\n id: doc.id\n }, this.Entity);\n }\n\n fromFirestoreMany(docs: DocumentSnapshot<any>[]): E[] {\n return docs.map(doc => this.fromFirestore(doc));\n }\n\n toFirestore(entity: E): object {\n return this.adapter.toFirestore(entity, this.Entity);\n }\n}\n\nexport function getConverter<Entity extends {id: string}>(\n Entity: new () => Entity,\n adapter: FirestoreAdapter = inject(FirestoreAdapter),\n): IFirestoreConverter<Entity> {\n return new BasicConverter(Entity, adapter);\n}\n\nexport function injectConverter<Entity extends {id: string}>(Entity: new () => Entity): IFirestoreConverter<Entity> {\n return getConverter(Entity, inject(FirestoreAdapter));\n}\n","import dayjs from 'dayjs';\nimport { FirestoreAdapter } from '../adapters/base';\nimport { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData, CollectionLike } from '../interfaces';\nimport { FirestorePathBuilder } from '../path-builder';\n\n\nexport class FirestoreDAO<\n Entity extends {id: string}, \n FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>,\n> {\n\n constructor(\n protected adapter: FirestoreAdapter,\n protected pathBuilder: FirestorePathBuilder<Entity>,\n ) { }\n\n collection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData> {\n const path = this.pathBuilder.collection(paramMap)\n return this.adapter.collection<FirestoreData>(path);\n }\n\n collectionGroup():CollectionGroup<FirestoreData> {\n const path = this.pathBuilder.collectionGroup();\n return this.adapter.collectionGroup<FirestoreData>(path);\n }\n\n doc(paramMap: Partial<Entity> & {id: string}): DocumentReference<FirestoreData> {\n const path = this.pathBuilder.doc(paramMap);\n return this.adapter.doc<FirestoreData>(path);\n }\n\n getCollection(paramMap?: Partial<Entity>): CollectionLike {\n return paramMap ? this.collection(paramMap) : this.collectionGroup();\n }\n}\n","type CollectionParamMap<Entity extends {id: string}> = Partial<Entity>;\ntype DocParamMap<Entity extends {id: string}> = CollectionParamMap<Entity> & Pick<Entity, 'id'>;\n\nexport type ExtractParams<T extends string> = \n T extends `${infer _Start}:${infer Param}/${infer Rest}`\n ? { [K in Param | keyof ExtractParams<Rest>]: string }\n : T extends `${infer _Start}:${infer Param}`\n ? { [K in Param]: string }\n : {};\n\ntype Params = ExtractParams<'users/:userId/images/:id'>;\n\nexport type ColParam<T extends {readonly collectionPath: string}> = Omit<ExtractParams<T['collectionPath']>, 'id'>;\nexport type DocParam<T extends {readonly collectionPath: string}> = ColParam<T> & {id: string}; \n\nexport class FirestorePathBuilder<\n Entity extends { id: string },\n Path extends string = string,\n> {\n doc(param: DocParamMap<Entity>) {\n return resolvePaths(param, this.paths);\n }\n\n collection(param: Omit<ExtractParams<Path>, 'id'> | {} = {}) {\n return resolvePaths(param, this.paths.slice(0, -1));\n }\n\n collectionGroup() {\n return this.paths[this.paths.length-2];\n }\n\n constructor(private paths: string[]) { }\n}\n\nexport function pathBuilderFactory<\n E extends { id: string },\n Path extends string = string\n>(\n path: Path\n): FirestorePathBuilder<E, Path> {\n const paths = parsePath<Path>(path);\n return new FirestorePathBuilder(paths);\n}\n\nexport function parsePath<Path extends string = string>(path: Path): string[] {\n const paths = path.split('/').filter(p => p.length);\n if (!paths[paths.length-1].startsWith(':')) paths.push(':id');\n return paths;\n}\n\nexport const resolvePaths = (obj: object, paths: string[]): string => {\n return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');\n}\n\nconst resolvePath = (obj: object, key: string) => {\n if (!obj?.[key]) throw new Error(`Invalid key is detected in resolving paths, key: \\`${key}\\`, obj: \\`${JSON.stringify(obj)}\\``);\n return obj?.[key];\n}\n","import dayjs from 'dayjs';\nimport { Observable, ReplaySubject, lastValueFrom, of, throwError } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { FirestoreAdapter } from '../adapters/base';\nimport { IFirestoreConverter } from '../converter';\nimport { FirestoreDAO } from '../dao';\nimport { FirestorePathBuilder } from '../path-builder';\nimport { DocumentSnapshot, CollectionReference, CollectionGroup, ToFirestoreData, CollectionLike } from '../interfaces';\n\nexport class FirestoreQuery<\n Entity extends {id: string} = any, \n FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>,\n> extends FirestoreDAO<Entity, FirestoreData> {\n constructor(\n adapter: FirestoreAdapter,\n protected converter: IFirestoreConverter<Entity>,\n protected pathBuilder: FirestorePathBuilder<Entity>\n ) {\n super(adapter, pathBuilder);\n this.switchCollectionRef();\n }\n\n protected readonly collection$ = new ReplaySubject<CollectionLike<FirestoreData>>(1);\n protected readonly list$ = this.collection$.pipe(\n switchMap((collection) => this.listChangesByCollectionRef(collection).pipe(\n catchError(error => throwError(() => error)),\n )),\n shareReplay(1),\n )\n\n /** @deprecated */\n listChanges(paramMap?: Partial<Entity>, options: {switch?: boolean} = {switch: true}): Observable<Entity[]> {\n return of(paramMap).pipe(\n tap((paramMap) => options?.switch && this.switchCollectionRef(paramMap)),\n switchMap(() => this.list$),\n );\n }\n\n listChangesV2(paramMap?: Partial<Entity>): Observable<Entity[]> {\n return of(paramMap).pipe(\n tap((paramMap) => paramMap && this.switchCollectionRef(paramMap)),\n switchMap(() => this.list$),\n );\n }\n\n listChangesAfter(updatedAt: dayjs.Dayjs, {limit}: {limit?: number} = {}) {\n const entitiesMap = new Map<string, Entity>();\n const _updatedAt = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt\n return this.adapter.query(\n this.collection(),\n ...[\n this.adapter.where('updatedAt', '>', _updatedAt),\n this.adapter.orderBy('updatedAt', 'asc'),\n limit ? this.adapter.limit(limit) : undefined,\n ].filter(Boolean),\n ).stateChanges().pipe(\n // bufferTime(1_000),\n // map(zippedActions => zippedActions.flat()),\n tap(actions => actions.forEach(({type, payload: {doc}}) => {\n if (new Set(['added', 'modified']).has(type)) {\n entitiesMap.set(doc.id, this.converter.fromFirestore(doc as DocumentSnapshot<any>));\n } else if (type === 'removed') {\n entitiesMap.delete(doc.id);\n }\n })),\n map(() => [...entitiesMap.values()]),\n );\n }\n\n changes({id}: Partial<Entity>) {\n if (!id) throw new Error(`Invalid Id. it must be Truthy`);\n return this.list$.pipe(\n map(entities => entities.find(entity => entity.id === id)),\n distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)),\n );\n }\n\n changesV2(params: Partial<Entity>): Observable<Entity> {\n const docRef = this.doc(params as any);\n return docRef.stateChanges().pipe(\n map((doc) => this.converter.fromFirestore((doc as any))),\n );\n }\n\n get({id}: Partial<Entity> & {id: string}) {\n return lastValueFrom(this.list$.pipe(\n take(1),\n map(entities => entities.find(entity => entity.id === id)),\n ));\n }\n\n list(paramMap?: Partial<Entity>) {\n this.switchCollectionRef(paramMap);\n return lastValueFrom(this.list$.pipe(take(1)));\n }\n\n protected listChangesByCollectionRef(\n collection: CollectionReference<FirestoreData> | CollectionGroup<FirestoreData>\n ): Observable<Entity[]> {\n const entitiesMap = new Map<string, any>();\n return collection.stateChanges().pipe(\n tap(actions => actions.forEach(({type, payload: {doc}}) => {\n if (new Set(['added', 'modified']).has(type)) {\n entitiesMap.set(doc.id, this.converter.fromFirestore((doc as any)));\n } else if (type === 'removed') {\n entitiesMap.delete(doc.id);\n }\n })),\n map(() => [...entitiesMap.values()]),\n );\n }\n\n protected switchCollectionRef(paramMap?: Partial<Entity>) {\n const collection = this.getCollection(paramMap);\n this.switchCollection(collection);\n }\n\n switchCollection(collection: CollectionLike<any>) {\n this.collection$.next(collection);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FirestoreAdapter } from '../../adapters';\nimport { getConverter, IFirestoreConverter } from '../../converter';\nimport { FirestoreDAO } from '../../dao';\nimport { getCollection } from '../../decorators';\nimport { CollectionLike, DocumentReference } from '../../interfaces';\nimport { ExtractParams, FirestorePathBuilder, pathBuilderFactory } from '../../path-builder';\nimport { catchError, lastValueFrom, map, NEVER, Observable, of, switchMap, take, tap } from 'rxjs';\n\ntype ColParam<T extends BaseFirestoreQuery<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;\ntype DocParam<T extends BaseFirestoreQuery<any>> = ColParam<T> & {id: string}; \n\nexport abstract class BaseFirestoreQuery<Entity extends {id: string} = any> {\n protected abstract readonly adapter: FirestoreAdapter;\n protected abstract readonly converter: IFirestoreConverter<Entity>;\n abstract readonly collectionPath: string;\n protected abstract pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;\n protected abstract dao: FirestoreDAO<Entity>;\n\n count(paramMap?: ColParam<this>): Promise<number> {\n return this.dao.getCollection(paramMap as any).count();\n }\n\n changes(params: DocParam<this>): Observable<Entity> {\n const docRef = this.dao.doc(params as any);\n return docRef.stateChanges().pipe(\n map((doc) => this.converter.fromFirestore((doc as any))),\n );\n }\n\n get(paramMap: DocParam<this>): Promise<Entity> {\n return lastValueFrom(this.changes(paramMap).pipe(take(1)));\n }\n\n list(paramMap?: ColParam<this>): Promise<Entity[]> {\n return lastValueFrom(this.listChanges(paramMap as any).pipe(take(1)));\n }\n\n listChanges(paramMap?: ColParam<this>): Observable<Entity[]> {\n return of(paramMap).pipe(\n map((paramMap) => this.dao.getCollection(paramMap as any)),\n switchMap((collection) => {\n return this.getListChanges$ByCollectionLike(collection)\n }),\n );\n }\n\n protected getChanges$ByDocument(\n doc: DocumentReference\n ): Observable<Entity> {\n return doc.stateChanges().pipe(\n map((doc) => this.converter.fromFirestore(doc)),\n catchError((error) => {\n console.error(error);\n return NEVER;\n }),\n );\n }\n\n protected getListChanges$ByCollectionLike(\n collection: CollectionLike\n ): Observable<Entity[]> {\n const entitiesMap = new Map<string, any>();\n return collection.stateChanges().pipe(\n tap(actions => actions.forEach(({type, payload: {doc}}) => {\n if (new Set(['added', 'modified']).has(type)) {\n entitiesMap.set(doc.id, this.converter.fromFirestore((doc as any)));\n } else if (type === 'removed') {\n entitiesMap.delete(doc.id);\n }\n })),\n map(() => [...entitiesMap.values()]),\n catchError((error) => {\n console.error(error);\n return NEVER;\n }),\n );\n }\n}\n\n@Injectable()\nexport abstract class FirestoreQuery<Entity extends {id: string} = any> extends BaseFirestoreQuery<Entity> {\n protected readonly adapter = inject(FirestoreAdapter);\n abstract readonly collectionPath: string;\n protected abstract readonly converter: IFirestoreConverter<Entity>;\n\n get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath> {\n return pathBuilderFactory(this.collectionPath);\n }\n\n protected get dao() {\n return new FirestoreDAO<Entity>(this.adapter, this.pathBuilder);\n } \n}\n\n\nexport function getFirestoreQuery<Entity extends {id: string}>(\n entity: { new(): Entity },\n adapter: FirestoreAdapter = inject(FirestoreAdapter),\n): BaseFirestoreQuery<Entity> {\n\n class FirestoreQuery extends BaseFirestoreQuery<Entity> {\n constructor(\n protected readonly converter: IFirestoreConverter<Entity>,\n public readonly collectionPath: string,\n public pathBuilder: FirestorePathBuilder<Entity, any>,\n protected readonly adapter: FirestoreAdapter,\n protected readonly dao: FirestoreDAO<Entity>,\n ) { super(); }\n }\n\n return new FirestoreQuery(\n getConverter(entity, adapter),\n getCollection(entity),\n pathBuilderFactory(getCollection(entity)),\n adapter,\n new FirestoreDAO<Entity>(adapter, pathBuilderFactory(getCollection(entity))),\n );\n}\n\nexport function injectFirestoreQuery<Entity extends {id: string}>(entity: { new(): Entity }): BaseFirestoreQuery<Entity> {\n return getFirestoreQuery(entity, inject(FirestoreAdapter));\n}\n","import { Injectable } from \"@angular/core\";\nimport { FirestoreQuery } from \"./query\";\nimport { ExtractParams } from \"../../path-builder\";\nimport Dexie, { liveQuery, Observable as DexieObservable } from 'dexie';\nimport { catchError, combineLatest, distinctUntilChanged, map, NEVER, Observable, of, retry, switchMap, tap, throttleTime } from 'rxjs';\nimport dayjs from \"dayjs\";\nimport { CollectionLike } from \"../../interfaces\";\n\ntype ColParam<T extends {readonly collectionPath: string}> = Omit<ExtractParams<T['collectionPath']>, 'id'>;\ntype DocParam<T extends {readonly collectionPath: string}> = ColParam<T> & {id: string}; \n\nfunction fromDexie<T>(observable: DexieObservable<T>): Observable<T> {\n return new Observable(subscriber => observable.subscribe(subscriber));\n}\n\ninterface EntityData {\n id: string;\n value: string;\n collectionPath: string;\n updatedAt: string;\n}\n\nclass DexieAdapter<E extends {id: string, updatedAt: dayjs.Dayjs}> extends Dexie {\n entities!: Dexie.Table<EntityData, string>;\n\n constructor() {\n super('@nx-ddd/firestore/cached-query');\n this.version(3).stores({ entities: '++id' });\n }\n\n count$() {\n return fromDexie(liveQuery(() => this.entities.count()));\n }\n\n getLastUpdatedAt$(collectionPath: string) {\n return of(null).pipe(\n switchMap((() => fromDexie(liveQuery(() => this.entities.toArray())))),\n map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)),\n map(entities => entities.sort((a, b) => {\n if (!a?.updatedAt) return -1;\n if (!b?.updatedAt) return 1;\n return dayjs(a?.updatedAt).diff(dayjs(b?.updatedAt));\n }).at(-1)),\n map(entity => entity?.updatedAt ? dayjs(entity?.updatedAt) : dayjs('1970-01-01')),\n distinctUntilChanged((pre, cur) => pre.isSame(cur)),\n );\n }\n\n async bulkPut(collectionPath: string, entities: E[]) {\n return this.entities.bulkPut(entities.map(entity => {\n const key = `${entity.id}`;\n return {\n id: key,\n collectionPath,\n value: JSON.stringify(entity),\n updatedAt: entity.updatedAt.toISOString(),\n };\n }));\n }\n\n listChanges(collectionPath: string): Observable<E[]> {\n return of(null).pipe(\n switchMap(() => fromDexie(liveQuery(() => this.entities.toArray()))),\n map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)),\n map((entities) => entities.map(entity => JSON.parse(entity.value) as E)),\n );\n }\n}\n\nclass FirestoreIndexedDbCached<E extends {id: string, updatedAt: dayjs.Dayjs}> {\n constructor(protected collectionPath: string) { }\n\n readonly adapter = new DexieAdapter<E>();\n\n getLastUpdatedAt$() {\n return this.adapter.getLastUpdatedAt$(this.collectionPath);\n }\n\n async setMany(entities: E[]) {\n return this.adapter.bulkPut(this.collectionPath, entities);\n }\n\n listChanges() {\n return this.adapter.listChanges(this.collectionPath);\n }\n}\n\n@Injectable()\nexport abstract class CachedFirestoreQuery<E extends {id: string, updatedAt: dayjs.Dayjs} = any> extends FirestoreQuery<E> {\n protected _cached: FirestoreIndexedDbCached<E>;\n protected get cached() {\n return this._cached ??= new FirestoreIndexedDbCached<E>(this.collectionPath);\n }\n\n protected readonly config = {\n throttleTime: 5_000,\n loadChunkSize: 1_000,\n };\n\n override listChanges(paramMap?: ColParam<this>): Observable<E[]> {\n const collection = this.dao.getCollection(paramMap as any);\n return this.cached.getLastUpdatedAt$().pipe(\n switchMap((lastUpdatedAt) => this._listChangesAfter(collection, lastUpdatedAt, {\n limit: this.config.loadChunkSize,\n }).pipe(\n retry(3),\n tap((updated) => this.cached.setMany(updated)),\n tap((updated) => console.log('updated:', updated)),\n catchError((error) => (console.error(error), NEVER)),\n )),\n switchMap(() => this.cached.listChanges()),\n map((entities) => entities.map(entity => this.converter.fromObject(entity))),\n throttleTime(this.config.throttleTime),\n );\n }\n\n protected _listChange(paramMap?: ColParam<this>): Observable<E[]> {\n return of(paramMap).pipe(\n map((paramMap) => this.dao.getCollection(paramMap as any)),\n map((collection) => this.adapter.query(collection, this.adapter.limit(10))),\n switchMap((collection) => this.getListChanges$ByCollectionLike(collection)),\n );\n }\n\n protected _listChangesAfter(collection: CollectionLike, updatedAt: dayjs.Dayjs, {limit}: {limit?: number} = {}) {\n const updatedAtTs = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt\n const query = this.adapter.query(\n collection,\n ...[\n this.adapter.where('updatedAt', '>', updatedAtTs),\n this.adapter.orderBy('updatedAt', 'asc'),\n limit ? this.adapter.limit(limit) : undefined,\n ].filter(Boolean),\n );\n return this.getListChanges$ByCollectionLike(query);\n }\n\n progressChanges() {\n return combineLatest({\n cloud: this.count(),\n local: this.listChanges().pipe(map(items => items.length)),\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Repository } from '@nx-ddd/common/domain';\nimport { toObject } from '@nx-ddd/common';\nimport { generateId } from '@nx-ddd/common';\nimport { FirestoreAdapter } from '../adapters/base';\nimport { getConverter, IFirestoreConverter } from '../converter';\nimport { ExtractParams, FirestorePathBuilder, pathBuilderFactory } from '../path-builder';\nimport { CollectionReference, CollectionGroup, DocumentReference, DocumentSnapshot } from '../interfaces';\nimport { Observable } from 'rxjs';\nimport { getCollection } from '../decorators/decorators';\n\nconst toPromise = callback => new Promise<ReturnType<typeof callback>>((resolve, reject) => {\n try { resolve(callback()); } catch (error) { reject(error); }\n});\n\nfunction doesExist(doc: DocumentSnapshot): boolean {\n if (typeof doc.exists === 'function') {\n return doc.exists();\n }\n return doc.exists;\n}\n\n// FirestoreRepositoryからEnriryを取得するinfer\nexport type ExtractEntity<T extends BaseFirestoreRepository<any, any>> = T extends BaseFirestoreRepository<infer Entity, any> ? Entity : never;\ntype ColParam<T extends BaseFirestoreRepository<any, any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;\ntype DocParam<T extends BaseFirestoreRepository<any, any>, TExtra = {}> = ColParam<T> & { id: string } & TExtra; \n\nexport abstract class BaseFirestoreRepository<Entity extends { id: string }, TExtraParams = {}> extends Repository<Entity> {\n abstract readonly collectionPath: string;\n protected abstract readonly adapter: FirestoreAdapter;\n protected abstract converter: IFirestoreConverter<Entity>;\n abstract readonly pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;\n\n async list(paramMap?: ColParam<this>, query: any = q => q): Promise<Entity[]> {\n const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();\n return this._list(query(collection));\n }\n\n listChanges(): Observable<Entity[]> {\n throw new Error('Method not implemented.');\n }\n\n async count(paramMap?: ColParam<this>): Promise<number> {\n return this.collection(paramMap).count();\n }\n\n async get(paramMap?: DocParam<this, TExtraParams>) {\n return this._get(this.doc(paramMap as any));\n }\n\n async save(entity: DocParam<this, TExtraParams> & Entity): Promise<[Entity, boolean]> {\n const docRef = this.doc({...entity, id: entity?.id || this.genId()});\n return this._save(docRef, entity);\n }\n\n async saveMany(entities: Entity[]): Promise<void> {\n return this.bulkWrite(entities as any);\n }\n\n async create(entity: DocParam<this, TExtraParams> & Entity): Promise<Entity> {\n const obj = toObject(entity) as DocParam<this, TExtraParams> & Entity;\n const id = obj?.id || this.genId();\n return toPromise(() => this.doc({...obj, id})).then(doc => this._create(doc, entity));\n }\n\n async createMany(entities: (DocParam<this, TExtraParams> & Entity)[]): Promise<Entity[]> {\n return Promise.all(entities.map(entity => this.create(entity)));\n }\n\n async update(entity: DocParam<this, TExtraParams> & Partial<Entity>): Promise<void> {\n return this.doc(entity).update(this.adapter.flattenForUpdate({\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['updatedAt']),\n })).then(() => {}); \n }\n\n async updateMany(data: Partial<Entity>[]): Promise<void> {\n return this.bulkUpdate(data as any);\n }\n\n delete(paramMap: DocParam<this, TExtraParams>): Promise<void> {\n return this.doc(paramMap as any).delete();\n }\n\n async deleteMany(params: { id: string; }[]): Promise<number> {\n return params.reduce((batch, param) => {\n const doc = this.doc(param as any).__ref;\n return batch.delete(doc);\n }, this.adapter.batch()).commit().then(() => params.length);\n }\n\n async deleteAll(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async bulkWrite(entities: (DocParam<this, TExtraParams> & Entity)[], timestamps: string[] = []): Promise<void> {\n return entities.reduce((batch, entity) => {\n const doc = this.doc(entity).__ref;\n return batch.set(doc, {\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(timestamps),\n });\n }, this.adapter.batch()).commit();\n }\n\n async bulkCreate(entities: (DocParam<this, TExtraParams> & Entity)[]): Promise<void> {\n // TODO(nontangent): add maximum 500 record validation\n return entities.reduce((batch, entity) => {\n const doc = this.doc(entity).__ref;\n return batch.create(doc, {\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['createdAt', 'updatedAt']),\n });\n }, this.adapter.batch()).commit();\n }\n\n async bulkUpdate(entities: (DocParam<this, TExtraParams> & Partial<Entity>)[]): Promise<void> {\n // TODO(nontangent): add maximum 500 record validation\n return entities.reduce((batch, entity) => {\n const doc = this.doc(entity).__ref;\n return batch.update(doc, {\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['updatedAt']),\n });\n }, this.adapter.batch()).commit();\n }\n\n async bulkDelete(paramMaps: DocParam<this, TExtraParams>[]): Promise<void> {\n // MEMO(@nontangent): 500件以上の削除は未対応\n return paramMaps.reduce((batch, paramMap) => {\n const doc = this.doc(paramMap as any).__ref;\n return batch.delete(doc);\n }, this.adapter.batch()).commit();\n }\n\n protected collection(paramMap?: Omit<ExtractParams<typeof this.collectionPath>, 'id'>): CollectionReference<object> {\n const path = this.pathBuilder.collection(paramMap)\n return this.adapter.collection<object>(path);\n }\n\n protected collectionGroup(): CollectionGroup<object> {\n const path = this.pathBuilder.collectionGroup();\n return this.adapter.collectionGroup<object>(path);\n }\n\n protected doc(paramMap: DocParam<this, TExtraParams>): DocumentReference<object> {\n const path = this.pathBuilder.doc(paramMap as any);\n return this.adapter.doc<object>(path);\n }\n\n protected genId = (): string => generateId();\n\n protected _list(collection: CollectionReference<object>) {\n return collection.get().then(({docs}) => docs.map(doc => {\n if (!doesExist(doc)) return null;\n return this.converter.fromFirestore(doc);\n }));\n }\n\n protected _get(doc: DocumentReference<object>) {\n return doc.get().then((doc => {\n if (!doc.data()) return null;\n return this.converter.fromFirestore(doc)\n }));\n }\n\n protected async _save(doc: DocumentReference<object>, entity: Entity): Promise<[Entity, boolean]> {\n const exists = await doc.exists();\n if (exists) {\n return this._set(doc, entity).then(doc => [this.converter.fromFirestore(doc), false]);\n } else {\n return this._create(doc, entity).then(entity => [entity, true]);\n }\n }\n\n protected async _create(doc: DocumentReference<object>, entity: Entity): Promise<Entity> {\n const exists = await doc.exists().catch((error) => {\n // MEMO(@nontangent): bunで実行するときだけこのエラーがでるかもしれない。\n if (`${error}`.startsWith('Error: Did not receive document for')) return false;\n throw error;\n });\n if (exists) throw new Error('Document already exists');\n return doc.set({\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(['createdAt', 'updatedAt']),\n } as any).then(() => doc.get()).then(doc => this.converter.fromFirestore(doc));\n }\n\n protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate = true) {\n const data = this.converter.toFirestore(entity);\n return doc.set({\n ...this.converter.toFirestore(entity),\n ...this.buildServerTimestampObject(isUpdate ? ['updatedAt'] : []),\n } as any, {merge: isUpdate}).then(() => doc.get());\n }\n\n protected buildServerTimestampObject(keys: string[] = ['createdAt', 'updatedAt']) {\n return keys.reduce((m, k) => ({...m, [k]: this.adapter.FieldValue.serverTimestamp()}), {});\n }\n}\n\n@Injectable()\nexport abstract class FirestoreRepository<Entity extends { id: string }, TExtraParams = {}> extends BaseFirestoreRepository<Entity, TExtraParams> {\n protected readonly adapter = inject(FirestoreAdapter);\n get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath> {\n return pathBuilderFactory(this.collectionPath);\n }\n}\n\nexport function getFirestoreRepository<Entity extends { id: string }, TExtraParams = {}>(\n entity: { new(): Entity },\n adapter: FirestoreAdapter = inject(FirestoreAdapter),\n): BaseFirestoreRepository<Entity, TExtraParams> {\n class FirestoreRepository extends BaseFirestoreRepository<Entity, TExtraParams> {\n constructor(\n protected readonly converter: IFirestoreConverter<Entity>,\n public readonly collectionPath: string,\n public pathBuilder: FirestorePathBuilder<Entity, any>,\n protected readonly adapter: FirestoreAdapter,\n ) { super(); }\n }\n\n return new FirestoreRepository(\n getConverter(entity, adapter),\n getCollection(entity),\n pathBuilderFactory(getCollection(entity)),\n adapter\n );\n}\n\nexport function injectFirestoreRepository<Entity extends { id: string }, TExtraParams = {}>(entity: { new(): Entity }): BaseFirestoreRepository<Entity, TExtraParams> {\n return getFirestoreRepository(entity, inject(FirestoreAdapter));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["String","Boolean","Number","Map","Array","map","take","switchMap","catchError","tap","distinctUntilChanged"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/firestore",
3
- "version": "19.25.0",
3
+ "version": "19.26.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/firestore",
@@ -9,28 +9,28 @@
9
9
  "url": "https://github.com/xx-machina/plaform.git"
10
10
  },
11
11
  "peerDependencies": {
12
- "@nx-ddd/common": "19.25.0",
13
- "@nx-ddd/core": "19.25.0"
12
+ "@nx-ddd/common": "19.26.0",
13
+ "@nx-ddd/core": "19.26.0"
14
14
  },
15
15
  "dependencies": {
16
16
  "tslib": "^2.3.0"
17
17
  },
18
18
  "module": "fesm2022/nx-ddd-firestore.mjs",
19
- "typings": "index.d.ts",
19
+ "typings": "types/nx-ddd-firestore.d.ts",
20
20
  "exports": {
21
21
  "./package.json": {
22
22
  "default": "./package.json"
23
23
  },
24
24
  ".": {
25
- "types": "./index.d.ts",
25
+ "types": "./types/nx-ddd-firestore.d.ts",
26
26
  "default": "./fesm2022/nx-ddd-firestore.mjs"
27
27
  },
28
28
  "./adapters/admin": {
29
- "types": "./adapters/admin/index.d.ts",
29
+ "types": "./types/nx-ddd-firestore-adapters-admin.d.ts",
30
30
  "default": "./fesm2022/nx-ddd-firestore-adapters-admin.mjs"
31
31
  },
32
32
  "./adapters/firebase": {
33
- "types": "./adapters/firebase/index.d.ts",
33
+ "types": "./types/nx-ddd-firestore-adapters-firebase.d.ts",
34
34
  "default": "./fesm2022/nx-ddd-firestore-adapters-firebase.mjs"
35
35
  }
36
36
  },
@@ -3,6 +3,7 @@ import { Observable, ReplaySubject } from 'rxjs';
3
3
  import * as i0 from '@angular/core';
4
4
  import * as dayjs from 'dayjs';
5
5
  import dayjs__default from 'dayjs';
6
+ import * as _nx_ddd_firestore from '@nx-ddd/firestore';
6
7
  import Dexie from 'dexie';
7
8
  import { Repository } from '@nx-ddd/common/domain';
8
9
 
@@ -290,7 +291,7 @@ declare abstract class FirestoreQuery<Entity extends {
290
291
  abstract readonly collectionPath: string;
291
292
  protected abstract readonly converter: IFirestoreConverter<Entity>;
292
293
  get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
293
- protected get dao(): FirestoreDAO<Entity, ToFirestoreData<Entity, dayjs.Dayjs>>;
294
+ protected get dao(): FirestoreDAO<Entity, _nx_ddd_firestore.ToFirestoreData<Entity, dayjs.Dayjs>>;
294
295
  static ɵfac: i0.ɵɵFactoryDeclaration<FirestoreQuery<any>, never>;
295
296
  static ɵprov: i0.ɵɵInjectableDeclaration<FirestoreQuery<any>>;
296
297
  }
@@ -398,7 +399,7 @@ declare abstract class BaseFirestoreRepository<Entity extends {
398
399
  protected _get(doc: DocumentReference<object>): Promise<Entity>;
399
400
  protected _save(doc: DocumentReference<object>, entity: Entity): Promise<[Entity, boolean]>;
400
401
  protected _create(doc: DocumentReference<object>, entity: Entity): Promise<Entity>;
401
- protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, DocumentData>>;
402
+ protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, _nx_ddd_firestore.DocumentData>>;
402
403
  protected buildServerTimestampObject(keys?: string[]): {};
403
404
  }
404
405
  declare abstract class FirestoreRepository<Entity extends {