@nx-ddd/firestore 19.9.0 → 19.12.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.
@@ -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 { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵ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 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 { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: DayjsAdapter, deps: [{ token: DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵ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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMuYWRhdHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvYWRhcHRlcnMvZGF5anMvZGF5anMuYWRhdHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFHMUIsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFJLEtBQVU7UUFDbEIsT0FBTyxLQUFLLFlBQVksSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsU0FBUyxDQUFJLEtBQVU7UUFDckIsT0FBTyxLQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWEsQ0FBSSxLQUFXO1FBQzFCLE9BQU8sS0FBVSxDQUFDO0lBQ3BCLENBQUM7OEdBZlUsV0FBVztrSEFBWCxXQUFXLGNBREUsTUFBTTs7MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQW9CbEMsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBNkIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRXpELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWtCO1FBQzFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUksS0FBVTtRQUMxQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQU0sQ0FBQztJQUMzQixDQUFDOzhHQWpCVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERhdGVBZGFwdGVyIHtcbiAgaXNEYXRlPEQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IGRheWpzLmlzRGF5anModmFsdWUpO1xuICB9XG5cbiAgaXNWYWxpZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEYXRlPERhdGU+KHZhbHVlKSAmJiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIGdldEpzRGF0ZTxEPih2YWx1ZTogYW55KTogRCB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIEQ7XG4gIH1cblxuICBjb252ZXJ0VG9EYXRlPEQ+KHZhbHVlOiBEYXRlKTogRCB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIEQ7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEYXlqc0FkYXB0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcikge31cblxuICBpc0RheWpzKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBkYXlqcy5EYXlqcyB7XG4gICAgcmV0dXJuIGRheWpzLmlzRGF5anModmFsdWUpO1xuICB9XG5cbiAgaXNWYWxpZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEYXlqcyh2YWx1ZSkgJiYgdmFsdWUuaXNWYWxpZCgpO1xuICB9XG5cbiAgZ2V0SnNEYXRlKHZhbHVlOiBkYXlqcy5EYXlqcyk6IERhdGUge1xuICAgIHJldHVybiB2YWx1ZS50b0RhdGUoKTtcbiAgfVxuXG4gIGNvbnZlcnRUb0RheWpzPEQ+KHZhbHVlOiBhbnkpOiBEIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUpIGFzIEQ7XG4gIH1cbn1cbiJdfQ==","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 constructor() {\n this.dateAdapter = inject(DateAdapter);\n }\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9hZGFwdGVycy9iYXNlL2Jhc2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVdoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBUXZDLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQXRDO1FBQ1ksZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFxTjlDLENBQUM7SUFuS0MsbUJBQW1CO0lBQ25CLGVBQWUsQ0FBUyxNQUFjO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckQsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BGLENBQUMsRUFBRSxFQUFtQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixpQkFBaUIsQ0FBUyxJQUFtQztRQUMzRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFD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LE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBWSxDQUFDLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2hCLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxTQUFvQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQzNELENBQUM7Q0FFRjtBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFvQztJQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldEZpcmVzdG9yZUFubm90YXRpb25zIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IHdhbGtPYmogfSBmcm9tICdAbngtZGRkL2NvcmUnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29sbGVjdGlvblJlZmVyZW5jZSxcbiAgQ29sbGVjdGlvbkdyb3VwLFxuICBEb2N1bWVudFJlZmVyZW5jZSxcbiAgVG9GaXJlc3RvcmVEYXRhLFxuICBUaW1lc3RhbXAsXG4gIFF1ZXJ5LFxuICBGaWVsZFZhbHVlLFxuICBEb2N1bWVudERhdGFcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4uL2RheWpzJztcblxuZXhwb3J0IHR5cGUgUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBSPiA9IChcbiAgY29sbGVjdGlvbj86IGFueVxuKSA9PiBSO1xuZXhwb3J0IHR5cGUgV2hlcmVGaWx0ZXJPcCA9ICc8JyB8ICc8PScgfCAnPT0nIHwgJyE9JyB8ICc+PScgfCAnPicgfCAnYXJyYXktY29udGFpbnMnIHwgJ2luJyB8ICdhcnJheS1jb250YWlucy1hbnknIHwgJ25vdC1pbic7XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpcmVzdG9yZUFkYXB0ZXI8RGF0ZSA9IGFueT4ge1xuICBwcm90ZWN0ZWQgZGF0ZUFkYXB0ZXIgPSBpbmplY3QoRGF0ZUFkYXB0ZXIpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc1RpbWVzdGFtcCh2OiBhbnkpOiB2IGlzIFRpbWVzdGFtcDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlzRmllbGRWYWx1ZSh2OiBhbnkpOiB2IGlzIEZpZWxkVmFsdWU7XG5cbiAgYWJzdHJhY3QgZ2V0IFRpbWVzdGFtcCgpOiBhbnlcbiAgYWJzdHJhY3QgZ2V0IEZpZWxkVmFsdWUoKTogYW55XG4gIGFic3RyYWN0IGdldCBGaWVsZFBhdGgoKTogYW55XG5cbiAgYWJzdHJhY3QgZG9jPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihwYXRoOiBzdHJpbmcpOiBEb2N1bWVudFJlZmVyZW5jZTxBcHBNb2RlbFR5cGU+O1xuXG4gIGFic3RyYWN0IGNvbGxlY3Rpb248XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KHBhdGg6IHN0cmluZyk6IENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG5cbiAgYWJzdHJhY3QgY29sbGVjdGlvbkdyb3VwPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihjb2xsZWN0aW9uSWQ6IHN0cmluZyk6IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcblxuICBhYnN0cmFjdCBxdWVyeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPixcbiAgICAuLi5xdWVyeUZuQXJyYXk6IFF1ZXJ5Rm48QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgYW55PltdXG4gICk6IFF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuXG4gIGFic3RyYWN0IHdoZXJlPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihrZXk6IHN0cmluZywgZXZhbHVhdGlvbjogV2hlcmVGaWx0ZXJPcCwgdmFsdWU6IHVua25vd24pOiBRdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGUsIGFueT47XG5cbiAgYWJzdHJhY3Qgb3JkZXJCeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oa2V5OiBzdHJpbmcsIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyk6IFF1ZXJ5Rm48QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgYW55PjtcblxuICBhYnN0cmFjdCBsaW1pdDxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4objogbnVtYmVyKTogUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBhbnk+O1xuXG4gIGFic3RyYWN0IHJ1blRyYW5zYWN0aW9uKGZuOiBhbnkpOiBhbnk7XG4gIGFic3RyYWN0IGJhdGNoKCk6IGFueTtcblxuICAvLyoqIEBkZXByZWNhdGVkICovXG4gIHRvRmlyZXN0b3JlRGF0YTxFbnRpdHk+KGVudGl0eTogRW50aXR5KTogVG9GaXJlc3RvcmVEYXRhPEVudGl0eSwgRGF0ZT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhlbnRpdHkpLnJlZHVjZSgocHJlLCBbaywgdl0pID0+ICh7XG4gICAgICAuLi5wcmUsIFtrXTogdGhpcy5kYXRlQWRhcHRlci5pc0RhdGU8RGF0ZT4odikgPyAgdGhpcy5jb252ZXJ0RGF0ZVRvVGltZXN0YW1wKHYpIDogdixcbiAgICB9KSwge30gYXMgVG9GaXJlc3RvcmVEYXRhPEVudGl0eSwgRGF0ZT4pO1xuICB9XG5cbiAgLy8qKiBAZGVwcmVjYXRlZCAqL1xuICBmcm9tRmlyZXN0b3JlRGF0YTxFbnRpdHk+KGRhdGE6IFRvRmlyZXN0b3JlRGF0YTxFbnRpdHksIERhdGU+KTogRW50aXR5IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChwcmUsIFtrLCB2XSkgPT4gKHtcbiAgICAgIC4uLnByZSwgW2tdOiB0aGlzLmlzVGltZXN0YW1wKHYpID8gdGhpcy5jb252ZXJ0VGltZXN0YW1wVG9EYXRlKHYpIDogdixcbiAgICB9KSwge30gYXMgRW50aXR5KTtcbiAgfVxuXG4gIHRvRmlyZXN0b3JlPFQ+KG9iajogb2JqZWN0LCBFbnRpdHk6IG5ldyAoKSA9PiBUKTogb2JqZWN0IHtcbiAgICBjb25zdCBuZXdPYmogPSB7fTtcbiAgICBmb3IgKGNvbnN0IGFubm90YXRpb24gb2YgZ2V0RmlyZXN0b3JlQW5ub3RhdGlvbnMoRW50aXR5KSkge1xuICAgICAgY29uc3QgX3ZhbHVlID0gZ2V0KG9iaiwgYW5ub3RhdGlvbi5wcm9wTmFtZSk7XG4gICAgICBpZiAoX3ZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaChhbm5vdGF0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnaWQnOlxuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBjYXNlICdudW1iZXInOiBcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6IHtcbiAgICAgICAgICBpZiAodHlwZW9mIF92YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIGJyZWFrO1xuICAgICAgICAgIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSBfdmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAndGltZXN0YW1wJzoge1xuICAgICAgICAgIGlmICh0eXBlb2YgX3ZhbHVlID09PSAndW5kZWZpbmVkJykgYnJlYWs7XG4gICAgICAgICAgaWYgKCF0aGlzLmRhdGVBZGFwdGVyLmlzRGF0ZTxEYXRlPihfdmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbRmlyZXN0b3JlQWRhcHRlcl0gX3ZhbHVlOicsIF92YWx1ZSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgRGF0ZSBUeXBlOiAke192YWx1ZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24uZmllbGROYW1lXSA9IHRoaXMuY29udmVydERhdGVUb1RpbWVzdGFtcChfdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgIGlmICh0eXBlb2YgYW5ub3RhdGlvbj8uY2hpbGRUeXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKF92YWx1ZSkgbmV3T2JqW2Fubm90YXRpb24uZmllbGROYW1lXSA9IF92YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgVHlwZSA9IChhbm5vdGF0aW9uIGFzIGFueSkuY2hpbGRUeXBlKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIF92YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIGJyZWFrO1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KF92YWx1ZSkpIHtcbiAgICAgICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24uZmllbGROYW1lXSA9IFtdO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKF92YWx1ZSA/PyBbXSkubWFwKHYgPT4ge1xuICAgICAgICAgICAgICBzd2l0Y2ggKFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFN0cmluZzpcbiAgICAgICAgICAgICAgICBjYXNlIE51bWJlcjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0ZpcmVzdG9yZSh2LCBUeXBlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSB2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdtYXAnOiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBfdmFsdWUgPT09ICd1bmRlZmluZWQnKSBicmVhaztcbiAgICAgICAgICBpZiAodHlwZW9mIChhbm5vdGF0aW9uIGFzIGFueSk/LmNoaWxkVHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChfdmFsdWUpIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSBfdmFsdWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFR5cGUgPSAoYW5ub3RhdGlvbiBhcyBhbnkpLmNoaWxkVHlwZSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnRvRmlyZXN0b3JlKF92YWx1ZSwgVHlwZSk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIG5ld09ialthbm5vdGF0aW9uLmZpZWxkTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbiAgfVxuICBcbiAgZnJvbUZpcmVzdG9yZTxUID0gYW55PihkYXRhOiBhbnksIEVudGl0eTogbmV3KCkgPT4gVCk6IFQge1xuICAgIGNvbnN0IG5ld09iaiA9IHt9O1xuICAgIGZvciAoY29uc3QgYW5ub3RhdGlvbiBvZiBnZXRGaXJlc3RvcmVBbm5vdGF0aW9ucyhFbnRpdHkpKSB7XG4gICAgICBjb25zdCBfdmFsdWUgPSBkYXRhW2Fubm90YXRpb24uZmllbGROYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgX3ZhbHVlID09PSAndW5kZWZpbmVkJykgY29udGludWU7XG4gICAgICBpZiAoX3ZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIG5ld09ialthbm5vdGF0aW9uLnByb3BOYW1lXSA9IG51bGw7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2goYW5ub3RhdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2lkJzpcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6IHtcbiAgICAgICAgICBuZXdPYmpbYW5ub3RhdGlvbi5wcm9wTmFtZV0gPSBfdmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAndGltZXN0YW1wJzoge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXdPYmpbYW5ub3RhdGlvbi5wcm9wTmFtZV0gPSB0aGlzLmNvbnZlcnRUaW1lc3RhbXBUb0RhdGUoX3ZhbHVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBuZXdPYmpbYW5ub3RhdGlvbi5wcm9wTmFtZV0gPSBfdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgIGlmICh0eXBlb2YgYW5ub3RhdGlvbj8uY2hpbGRUeXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24ucHJvcE5hbWVdID0gX3ZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBUeXBlID0gKGFubm90YXRpb24gYXMgYW55KS5jaGlsZFR5cGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gX3ZhbHVlLm1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgc3dpdGNoIChUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBTdHJpbmc6XG4gICAgICAgICAgICAgICAgY2FzZSBOdW1iZXI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdlxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mcm9tRmlyZXN0b3JlKHYsIFR5cGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkgbmV3T2JqW2Fubm90YXRpb24ucHJvcE5hbWVdID0gdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbWFwJzoge1xuICAgICAgICAgIGlmICh0eXBlb2YgYW5ub3RhdGlvbj8uY2hpbGRUeXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbmV3T2JqW2Fubm90YXRpb24ucHJvcE5hbWVdID0gX3ZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBUeXBlID0gKGFubm90YXRpb24gYXMgYW55KS5jaGlsZFR5cGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mcm9tRmlyZXN0b3JlKF92YWx1ZSwgVHlwZSk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIG5ld09ialthbm5vdGF0aW9uLnByb3BOYW1lXSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqIGFzIFQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpcmVzdG9yZeOBrlVwZGF0ZeOBr+mAmuW4uOOBruOCquODluOCuOOCp+OCr+ODiOOBp+OBr+Wtq+S7peS4i+OBruODl+ODreODkeODhuOCo+OBjOaXouWtmOODh+ODvOOCv+OBqOODnuODvOOCuOOBleOCjOOBquOBhOOBruOBp+OAgeODkeOCueOBq+WkieaPm+OBmeOCi+W/heimgeOBjOOBguOCi+OAglxuICAgKi9cbiAgZmxhdHRlbkZvclVwZGF0ZShvYmo6IGFueSk6IGFueSB7XG4gICAgY29uc3QgbmV3T2JqID0ge307XG4gICAgd2Fsa09iaihvYmosIHtcbiAgICAgIGNhbGxiYWNrOiAocGF0aHMsIHZhbHVlKSA9PiBuZXdPYmpbcGF0aHMuam9pbignLicpXSA9IHZhbHVlLFxuICAgICAgb3ZlcndyaXRlOiAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gW3RydWUsIHZhbHVlXTtcbiAgICAgICAgaWYgKHRoaXMuaXNUaW1lc3RhbXAodmFsdWUpKSByZXR1cm4gW3RydWUsIHZhbHVlIGFzIGFueV07XG4gICAgICAgIGlmICh0aGlzLmlzRmllbGRWYWx1ZSh2YWx1ZSkpIHJldHVybiBbdHJ1ZSwgdmFsdWVdO1xuICAgICAgICByZXR1cm4gW2ZhbHNlXVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXdPYmo7XG4gIH1cblxuICBjb252ZXJ0RGF0ZVRvVGltZXN0YW1wKGRhdGU6IERhdGUpOiBUaW1lc3RhbXAge1xuICAgIHJldHVybiB0aGlzLlRpbWVzdGFtcC5mcm9tRGF0ZShkYXRlKTtcbiAgfVxuXG4gIGNvbnZlcnRUaW1lc3RhbXBUb0RhdGUodGltZXN0YW1wOiBUaW1lc3RhbXApOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlQWRhcHRlci5jb252ZXJ0VG9EYXRlKHRpbWVzdGFtcC50b0RhdGUoKSlcbiAgfVxuICBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGaXJlc3RvcmVBZGFwdGVyKHVzZUNsYXNzOiBuZXcgKCkgPT4gRmlyZXN0b3JlQWRhcHRlcikge1xuICByZXR1cm4geyBwcm92aWRlOiBGaXJlc3RvcmVBZGFwdGVyLCB1c2VDbGFzcyB9O1xufVxuIl19","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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9jb252ZXJ0ZXIvY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBV3BELE1BQU0sZUFBZTtJQUNuQixNQUFNLENBQUMsYUFBYSxDQUF5QixHQUE2QixFQUFFLE1BQW1CLEVBQUUsT0FBeUI7UUFDeEgsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEUsT0FBTyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBRUQsTUFBTSxjQUFjO0lBQ2xCLFlBQ3FCLE1BQW1CLEVBQ25CLE9BQXlCO1FBRHpCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFDMUMsQ0FBQztJQUVMLGFBQWEsQ0FBQyxHQUEwQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ2hDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNiLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtTQUNYLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUE2QjtRQUM3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUF3QixFQUN4QixVQUE0QixNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFFcEQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQThCLE1BQXdCO0lBQ25GLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBsYWluVG9JbnN0YW5jZVdpdGhWYWxpZCB9IGZyb20gJ0BueC1kZGQvY29yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvYmFzZSc7XG5pbXBvcnQgeyBEb2N1bWVudFNuYXBzaG90IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZpcmVzdG9yZUNvbnZlcnRlcjxFIGV4dGVuZHMge2lkOiBzdHJpbmd9PiB7XG4gIGZyb21GaXJlc3RvcmUoZG9jOiBEb2N1bWVudFNuYXBzaG90PG9iamVjdD4pOiBFO1xuICBmcm9tRmlyZXN0b3JlTWFueShkb2NzOiBEb2N1bWVudFNuYXBzaG90PG9iamVjdD5bXSk6IEVbXTtcbiAgdG9GaXJlc3RvcmUoZW50aXR5OiBQYXJ0aWFsPEU+KTogb2JqZWN0O1xuICBmcm9tT2JqZWN0PyhvYmo6IG9iamVjdCk6IEU7XG4gIHRvT2JqZWN0PyhlbnRpdHk6IEUpOiBvYmplY3Q7XG59XG5cbmNsYXNzIEZpcmVzdG9yZUhlbHBlciB7XG4gIHN0YXRpYyBmcm9tRmlyZXN0b3JlPEUgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KGRvYzogRG9jdW1lbnRTbmFwc2hvdDxvYmplY3Q+LCBFbnRpdHk6IG5ldyAoKSA9PiBFLCBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyKTogRSB7XG4gICAgY29uc3QgZGF0YSA9IGFkYXB0ZXIuZnJvbUZpcmVzdG9yZSh7Li4uZG9jLmRhdGEoKSwgaWQ6IGRvYy5pZH0sIEVudGl0eSk7XG4gICAgcmV0dXJuIHBsYWluVG9JbnN0YW5jZVdpdGhWYWxpZChFbnRpdHksIGRhdGEpO1xuICB9XG59XG5cbmNsYXNzIEJhc2ljQ29udmVydGVyPEUgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IEVudGl0eTogbmV3ICgpID0+IEUsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIsXG4gICkgeyB9XG5cbiAgZnJvbUZpcmVzdG9yZShkb2M6IERvY3VtZW50U25hcHNob3Q8YW55Pik6IEUge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZnJvbUZpcmVzdG9yZSh7XG4gICAgICAuLi5kb2MuZGF0YSgpLFxuICAgICAgaWQ6IGRvYy5pZFxuICAgIH0sIHRoaXMuRW50aXR5KTtcbiAgfVxuXG4gIGZyb21GaXJlc3RvcmVNYW55KGRvY3M6IERvY3VtZW50U25hcHNob3Q8YW55PltdKTogRVtdIHtcbiAgICByZXR1cm4gZG9jcy5tYXAoZG9jID0+IHRoaXMuZnJvbUZpcmVzdG9yZShkb2MpKTtcbiAgfVxuXG4gIHRvRmlyZXN0b3JlKGVudGl0eTogRSk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci50b0ZpcmVzdG9yZShlbnRpdHksIHRoaXMuRW50aXR5KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udmVydGVyPEVudGl0eSBleHRlbmRzIHtpZDogc3RyaW5nfT4oXG4gIEVudGl0eTogbmV3ICgpID0+IEVudGl0eSxcbiAgYWRhcHRlcjogRmlyZXN0b3JlQWRhcHRlciA9IGluamVjdChGaXJlc3RvcmVBZGFwdGVyKSxcbik6IElGaXJlc3RvcmVDb252ZXJ0ZXI8RW50aXR5PiB7XG4gIHJldHVybiBuZXcgQmFzaWNDb252ZXJ0ZXIoRW50aXR5LCBhZGFwdGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvbnZlcnRlcjxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KEVudGl0eTogbmV3ICgpID0+IEVudGl0eSk6IElGaXJlc3RvcmVDb252ZXJ0ZXI8RW50aXR5PiB7XG4gIHJldHVybiBnZXRDb252ZXJ0ZXIoRW50aXR5LCBpbmplY3QoRmlyZXN0b3JlQWRhcHRlcikpO1xufVxuIl19","export class FirestoreDAO {\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLmRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlL3NyYy9saWIvZGFvL2ZpcmVzdG9yZS5kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLFlBQVk7SUFLdkIsWUFDWSxPQUF5QixFQUN6QixXQUF5QztRQUR6QyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7SUFDakQsQ0FBQztJQUVMLFVBQVUsQ0FBQyxRQUEwQjtRQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELEdBQUcsQ0FBQyxRQUF3QztRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQTBCO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IEZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9iYXNlJztcbmltcG9ydCB7IENvbGxlY3Rpb25SZWZlcmVuY2UsIENvbGxlY3Rpb25Hcm91cCwgRG9jdW1lbnRSZWZlcmVuY2UsIFRvRmlyZXN0b3JlRGF0YSwgQ29sbGVjdGlvbkxpa2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZpcmVzdG9yZVBhdGhCdWlsZGVyIH0gZnJvbSAnLi4vcGF0aC1idWlsZGVyJztcblxuXG5leHBvcnQgY2xhc3MgRmlyZXN0b3JlREFPPFxuICBFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30sIFxuICBGaXJlc3RvcmVEYXRhID0gVG9GaXJlc3RvcmVEYXRhPEVudGl0eSwgZGF5anMuRGF5anM+LFxuPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIsXG4gICAgcHJvdGVjdGVkIHBhdGhCdWlsZGVyOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHk+LFxuICApIHsgfVxuXG4gIGNvbGxlY3Rpb24ocGFyYW1NYXA/OiBQYXJ0aWFsPEVudGl0eT4pOiBDb2xsZWN0aW9uUmVmZXJlbmNlPEZpcmVzdG9yZURhdGE+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5jb2xsZWN0aW9uKHBhcmFtTWFwKVxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuY29sbGVjdGlvbjxGaXJlc3RvcmVEYXRhPihwYXRoKTtcbiAgfVxuXG4gIGNvbGxlY3Rpb25Hcm91cCgpOkNvbGxlY3Rpb25Hcm91cDxGaXJlc3RvcmVEYXRhPiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMucGF0aEJ1aWxkZXIuY29sbGVjdGlvbkdyb3VwKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5jb2xsZWN0aW9uR3JvdXA8RmlyZXN0b3JlRGF0YT4ocGF0aCk7XG4gIH1cblxuICBkb2MocGFyYW1NYXA6IFBhcnRpYWw8RW50aXR5PiAmIHtpZDogc3RyaW5nfSk6IERvY3VtZW50UmVmZXJlbmNlPEZpcmVzdG9yZURhdGE+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5kb2MocGFyYW1NYXApO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZG9jPEZpcmVzdG9yZURhdGE+KHBhdGgpO1xuICB9XG5cbiAgZ2V0Q29sbGVjdGlvbihwYXJhbU1hcD86IFBhcnRpYWw8RW50aXR5Pik6IENvbGxlY3Rpb25MaWtlIHtcbiAgICByZXR1cm4gcGFyYW1NYXAgPyB0aGlzLmNvbGxlY3Rpb24ocGFyYW1NYXApIDogdGhpcy5jb2xsZWN0aW9uR3JvdXAoKTtcbiAgfVxufVxuIl19","export class FirestorePathBuilder {\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9wYXRoLWJ1aWxkZXIvcGF0aC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsR0FBRyxDQUFDLEtBQTBCO1FBQzVCLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUE4QyxFQUFFO1FBQ3pELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFvQixLQUFlO1FBQWYsVUFBSyxHQUFMLEtBQUssQ0FBVTtJQUFJLENBQUM7Q0FDekM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBSWhDLElBQVU7SUFFVixNQUFNLEtBQUssR0FBRyxTQUFTLENBQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsT0FBTyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUErQixJQUFVO0lBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBZSxFQUFVLEVBQUU7SUFDbkUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RHLENBQUMsQ0FBQTtBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQy9DLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxHQUFHLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakksT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIENvbGxlY3Rpb25QYXJhbU1hcDxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+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 constructor(adapter, converter, pathBuilder) {\n super(adapter, pathBuilder);\n this.converter = converter;\n this.pathBuilder = pathBuilder;\n this.collection$ = new ReplaySubject(1);\n this.list$ = this.collection$.pipe(switchMap((collection) => this.listChangesByCollectionRef(collection).pipe(catchError(error => throwError(() => error)))), shareReplay(1));\n this.switchCollectionRef();\n }\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLnF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9xdWVyeS9maXJlc3RvcmUucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBYyxhQUFhLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUl0QyxNQUFNLE9BQU8sY0FHWCxTQUFRLFlBQW1DO0lBQzNDLFlBQ0UsT0FBeUIsRUFDZixTQUFzQyxFQUN0QyxXQUF5QztRQUVuRCxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSGxCLGNBQVMsR0FBVCxTQUFTLENBQTZCO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUE4QjtRQU1sQyxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFnQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxVQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDeEUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzdDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQTtRQVRDLElBQUksQ0FBQyxtQkFB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SUFBSSxHQUFHLEVBQWUsQ0FBQztRQUMzQyxPQUFPLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUUsR0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO2lCQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsRUFDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRVMsbUJBQW1CLENBQUMsUUFBMEI7UUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQStCO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBsYXN0VmFsdWVGcm9tLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL2Jhc2UnO1xuaW1wb3J0IHsgSUZpcmVzdG9yZUNvbnZlcnRlciB9IGZyb20gJy4uL2NvbnZlcnRlcic7XG5pbXBvcnQgeyBGaXJlc3RvcmVEQU8gfSBmcm9tICcuLi9kYW8nO1xuaW1wb3J0IHsgRmlyZXN0b3JlUGF0aEJ1aWxkZXIgfSBmcm9tICcuLi9wYXRoLWJ1aWxkZXInO1xuaW1wb3J0IHsgRG9jdW1lbnRTbmFwc2hvdCwgQ29sbGVjdGlvblJlZmVyZW5jZSwgIENvbGxlY3Rpb25Hcm91cCwgVG9GaXJlc3RvcmVEYXRhLCBDb2xsZWN0aW9uTGlrZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgRmlyZXN0b3JlUXVlcnk8XG4gIEVudGl0eSBleHRlbmRzIHtpZDogc3RyaW5nfSA9IGFueSwgXG4gIEZpcmVzdG9yZURhdGEgPSBUb0ZpcmVzdG9yZURhdGE8RW50aXR5LCBkYXlqcy5EYXlqcz4sXG4+IGV4dGVuZHMgRmlyZXN0b3JlREFPPEVudGl0eSwgRmlyZXN0b3JlRGF0YT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyLFxuICAgIHByb3RlY3RlZCBjb252ZXJ0ZXI6IElGaXJlc3RvcmVDb252ZXJ0ZXI8RW50aXR5PixcbiAgICBwcm90ZWN0ZWQgcGF0aEJ1aWxkZXI6IEZpcmVzdG9yZVBhdGhCdWlsZGVyPEVudGl0eT5cbiAgKSB7XG4gICAgc3VwZXIoYWRhcHRlciwgcGF0aEJ1aWxkZXIpO1xuICAgIHRoaXMuc3dpdGNoQ29sbGVjdGlvblJlZigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbGxlY3Rpb24kID0gbmV3IFJlcGxheVN1YmplY3Q8Q29sbGVjdGlvbkxpa2U8RmlyZXN0b3JlRGF0YT4+KDEpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlzdCQgPSB0aGlzLmNvbGxlY3Rpb24kLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uKSA9PiB0aGlzLmxpc3RDaGFuZ2VzQnlDb2xsZWN0aW9uUmVmKGNvbGxlY3Rpb24pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRocm93RXJyb3IoKCkgPT4gZXJyb3IpKSxcbiAgICApKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKVxuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBsaXN0Q2hhbmdlcyhwYXJhbU1hcD86IFBhcnRpYWw8RW50aXR5Piwgb3B0aW9uczoge3N3aXRjaD86IGJvb2xlYW59ID0ge3N3aXRjaDogdHJ1ZX0pOiBPYnNlcnZhYmxlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIG9mKHBhcmFtTWFwKS5waXBlKFxuICAgICAgdGFwKChwYXJhbU1hcCkgPT4gb3B0aW9ucz8uc3dpdGNoICYmIHRoaXMuc3dpdGNoQ29sbGVjdGlvblJlZihwYXJhbU1hcCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubGlzdCQpLFxuICAgICk7XG4gIH1cblxuICBsaXN0Q2hhbmdlc1YyKHBhcmFtTWFwPzogUGFydGlhbDxFbnRpdHk+KTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiBvZihwYXJhbU1hcCkucGlwZShcbiAgICAgIHRhcCgocGFyYW1NYXApID0+IHBhcmFtTWFwICYmIHRoaXMuc3dpdGNoQ29sbGVjdGlvblJlZihwYXJhbU1hcCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubGlzdCQpLFxuICAgICk7XG4gIH1cblxuICBsaXN0Q2hhbmdlc0FmdGVyKHVwZGF0ZWRBdDogZGF5anMuRGF5anMsIHtsaW1pdH06IHtsaW1pdD86IG51bWJlcn0gPSB7fSkge1xuICAgIGNvbnN0IGVudGl0aWVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEVudGl0eT4oKTtcbiAgICBjb25zdCBfdXBkYXRlZEF0ID0gZGF5anMuaXNEYXlqcyh1cGRhdGVkQXQpID8gdGhpcy5hZGFwdGVyLmNvbnZlcnREYXRlVG9UaW1lc3RhbXAodXBkYXRlZEF0KSA6IHVwZGF0ZWRBdFxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucXVlcnkoXG4gICAgICB0aGlzLmNvbGxlY3Rpb24oKSxcbiAgICAgIC4uLltcbiAgICAgICAgdGhpcy5hZGFwdGVyLndoZXJlKCd1cGRhdGVkQXQnLCAnPicsIF91cGRhdGVkQXQpLFxuICAgICAgICB0aGlzLmFkYXB0ZXIub3JkZXJCeSgndXBkYXRlZEF0JywgJ2FzYycpLFxuICAgICAgICBsaW1pdCA/IHRoaXMuYWRhcHRlci5saW1pdChsaW1pdCkgOiB1bmRlZmluZWQsXG4gICAgICBdLmZpbHRlcihCb29sZWFuKSxcbiAgICApLnN0YXRlQ2hhbmdlcygpLnBpcGUoXG4gICAgICAvLyBidWZmZXJUaW1lKDFfMDAwKSxcbiAgICAgIC8vIG1hcCh6aXBwZWRBY3Rpb25zID0+IHppcHBlZEFjdGlvbnMuZmxhdCgpKSxcbiAgICAgIHRhcChhY3Rpb25zID0+IGFjdGlvbnMuZm9yRWFjaCgoe3R5cGUsIHBheWxvYWQ6IHtkb2N9fSkgPT4ge1xuICAgICAgICBpZiAobmV3IFNldChbJ2FkZGVkJywgJ21vZGlmaWVkJ10pLmhhcyh0eXBlKSkge1xuICAgICAgICAgIGVudGl0aWVzTWFwLnNldChkb2MuaWQsIHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoZG9jIGFzIERvY3VtZW50U25hcHNob3Q8YW55PikpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW1vdmVkJykge1xuICAgICAgICAgIGVudGl0aWVzTWFwLmRlbGV0ZShkb2MuaWQpO1xuICAgICAgICB9XG4gICAgICB9KSksXG4gICAgICBtYXAoKCkgPT4gWy4uLmVudGl0aWVzTWFwLnZhbHVlcygpXSksXG4gICAgKTtcbiAgfVxuXG4gIGNoYW5nZXMoe2lkfTogUGFydGlhbDxFbnRpdHk+KSB7XG4gICAgaWYgKCFpZCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIElkLiBpdCBtdXN0IGJlIFRydXRoeWApO1xuICAgIHJldHVybiB0aGlzLmxpc3QkLnBpcGUoXG4gICAgICBtYXAoZW50aXRpZXMgPT4gZW50aXRpZXMuZmluZChlbnRpdHkgPT4gZW50aXR5LmlkID09PSBpZCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZSwgY3VyKSA9PiBKU09OLnN0cmluZ2lmeShwcmUpID09PSBKU09OLnN0cmluZ2lmeShjdXIpKSxcbiAgICApO1xuICB9XG5cbiAgY2hhbmdlc1YyKHBhcmFtczogUGFydGlhbDxFbnRpdHk+KTogT2JzZXJ2YWJsZTxFbnRpdHk+IHtcbiAgICBjb25zdCBkb2NSZWYgPSB0aGlzLmRvYyhwYXJhbXMgYXMgYW55KTtcbiAgICByZXR1cm4gZG9jUmVmLnN0YXRlQ2hhbmdlcygpLnBpcGUoXG4gICAgICBtYXAoKGRvYykgPT4gdGhpcy5jb252ZXJ0ZXIuZnJvbUZpcmVzdG9yZSgoZG9jIGFzIGFueSkpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0KHtpZH06IFBhcnRpYWw8RW50aXR5PiAmIHtpZDogc3RyaW5nfSkge1xuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMubGlzdCQucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAoZW50aXRpZXMgPT4gZW50aXRpZXMuZmluZChlbnRpdHkgPT4gZW50aXR5LmlkID09PSBpZCkpLFxuICAgICkpO1xuICB9XG5cbiAgbGlzdChwYXJhbU1hcD86IFBhcnRpYWw8RW50aXR5Pikge1xuICAgIHRoaXMuc3dpdGNoQ29sbGVjdGlvblJlZihwYXJhbU1hcCk7XG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5saXN0JC5waXBlKHRha2UoMSkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsaXN0Q2hhbmdlc0J5Q29sbGVjdGlvblJlZihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uUmVmZXJlbmNlPEZpcmVzdG9yZURhdGE+IHwgQ29sbGVjdGlvbkdyb3VwPEZpcmVzdG9yZURhdGE+XG4gICk6IE9ic2VydmFibGU8RW50aXR5W10+IHtcbiAgICBjb25zdCBlbnRpdGllc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uc3RhdGVDaGFuZ2VzKCkucGlwZShcbiAgICAgIHRhcChhY3Rpb25zID0+IGFjdGlvbnMuZm9yRWFjaCgoe3R5cGUsIHBheWxvYWQ6IHtkb2N9fSkgPT4ge1xuICAgICAgICBpZiAobmV3IFNldChbJ2FkZGVkJywgJ21vZGlmaWVkJ10pLmhhcyh0eXBlKSkge1xuICAgICAgICAgIGVudGl0aWVzTWFwLnNldChkb2MuaWQsIHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoKGRvYyBhcyBhbnkpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JlbW92ZWQnKSB7XG4gICAgICAgICAgZW50aXRpZXNNYXAuZGVsZXRlKGRvYy5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pKSxcbiAgICAgIG1hcCgoKSA9PiBbLi4uZW50aXRpZXNNYXAudmFsdWVzKCldKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN3aXRjaENvbGxlY3Rpb25SZWYocGFyYW1NYXA/OiBQYXJ0aWFsPEVudGl0eT4pIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5nZXRDb2xsZWN0aW9uKHBhcmFtTWFwKTtcbiAgICB0aGlzLnN3aXRjaENvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gIH1cblxuICBzd2l0Y2hDb2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbGxlY3Rpb25MaWtlPGFueT4pIHtcbiAgICB0aGlzLmNvbGxlY3Rpb24kLm5leHQoY29sbGVjdGlvbik7XG4gIH1cbn1cbiJdfQ==","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 constructor() {\n super(...arguments);\n this.adapter = inject(FirestoreAdapter);\n }\n get pathBuilder() {\n return pathBuilderFactory(this.collectionPath);\n }\n get dao() {\n return new FirestoreDAO(this.adapter, this.pathBuilder);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵ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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbngtZGRkL2ZpcmVzdG9yZS9zcmMvbGliL3F1ZXJ5L3YyL3F1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUF1QyxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtuRyxNQUFNLE9BQWdCLGtCQUFrQjtJQU90QyxLQUFLLENBQUMsUUFBeUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFlLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQXNCO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQWEsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDL0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBRSxHQUFXLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUcsQ0FBQyxRQUF3QjtRQUMxQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLENBQUMsUUFBeUI7UUFDNUIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQXlCO1FBQ25DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFlLENBQUMsQ0FBQyxFQUMxRCxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN6RCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVTLHFCQUFxQixDQUM3QixHQUFzQjtRQUV0QixPQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0MsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRVMsK0JBQStCLENBQ3ZDLFVBQTBCO1FBRTFCLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFFLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLEVBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUNwQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBZ0IsY0FBa0QsU0FBUSxrQkFBMEI7SUFEMUc7O1FBRXFCLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQVd2RDtJQVBDLElBQUksV0FBVztRQUNiLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFjLEdBQUc7UUFDZixPQUFPLElBQUksWUFBWSxDQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OEdBWG1CLGNBQWM7a0hBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEbkMsVUFBVTs7QUFnQlgsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixNQUF5QixFQUN6QixVQUE0QixNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFHcEQsTUFBTSxjQUFlLFNBQVEsa0JBQTBCO1FBQ3JELFlBQ3FCLFNBQXNDLEVBQ3pDLGNBQXNCLEVBQy9CLFdBQThDLEVBQ2xDLE9BQXlCLEVBQ3pCLEdBQXlCO1lBQzFDLEtBQUssRUFBRSxDQUFDO1lBTFMsY0FBUyxHQUFULFNBQVMsQ0FBNkI7WUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQVE7WUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW1DO1lBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQWtCO1lBQ3pCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBQ2pDLENBQUM7S0FDZjtJQUVELE9BQU8sSUFBSSxjQUFjLENBQ3ZCLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQzdCLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFDckIsa0JBQWtCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3pDLE9BQU8sRUFDUCxJQUFJLFlBQVksQ0FBUyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQThCLE1BQXlCO0lBQ3pGLE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzJztcbmltcG9ydCB7IGdldENvbnZlcnRlciwgSUZpcmVzdG9yZUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL2NvbnZlcnRlcic7XG5pbXBvcnQgeyBGaXJlc3RvcmVEQU8gfSBmcm9tICcuLi8uLi9kYW8nO1xuaW1wb3J0IHsgZ2V0Q29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkxpa2UsIERvY3VtZW50UmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFeHRyYWN0UGFyYW1zLCBGaXJlc3RvcmVQYXRoQnVpbGRlciwgcGF0aEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vcGF0aC1idWlsZGVyJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGxhc3RWYWx1ZUZyb20sIG1hcCwgTkVWRVIsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG50eXBlIENvbFBhcmFtPFQgZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUXVlcnk8YW55Pj4gPSBPbWl0PEV4dHJhY3RQYXJhbXM8VFsnY29sbGVjdGlvblBhdGgnXT4sICdpZCc+O1xudHlwZSBEb2NQYXJhbTxUIGV4dGVuZHMgQmFzZUZpcmVzdG9yZVF1ZXJ5PGFueT4+ID0gQ29sUGFyYW08VD4gJiB7aWQ6IHN0cmluZ307IFxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpcmVzdG9yZVF1ZXJ5PEVudGl0eSBleHRlbmRzIHtpZDogc3RyaW5nfSA9IGFueT4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgYWRhcHRlcjogRmlyZXN0b3JlQWRhcHRlcjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGNvbnZlcnRlcjogSUZpcmVzdG9yZUNvbnZlcnRlcjxFbnRpdHk+O1xuICBhYnN0cmFjdCByZWFkb25seSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGF0aEJ1aWxkZXI6IEZpcmVzdG9yZVBhdGhCdWlsZGVyPEVudGl0eSwgdHlwZW9mIHRoaXMuY29sbGVjdGlvblBhdGg+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGFvOiBGaXJlc3RvcmVEQU88RW50aXR5PjtcblxuICBjb3VudChwYXJhbU1hcD86IENvbFBhcmFtPHRoaXM+KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5kYW8uZ2V0Q29sbGVjdGlvbihwYXJhbU1hcCBhcyBhbnkpLmNvdW50KCk7XG4gIH1cblxuICBjaGFuZ2VzKHBhcmFtczogRG9jUGFyYW08dGhpcz4pOiBPYnNlcnZhYmxlPEVudGl0eT4ge1xuICAgIGNvbnN0IGRvY1JlZiA9IHRoaXMuZGFvLmRvYyhwYXJhbXMgYXMgYW55KTtcbiAgICByZXR1cm4gZG9jUmVmLnN0YXRlQ2hhbmdlcygpLnBpcGUoXG4gICAgICBtYXAoKGRvYykgPT4gdGhpcy5jb252ZXJ0ZXIuZnJvbUZpcmVzdG9yZSgoZG9jIGFzIGFueSkpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0KHBhcmFtTWFwOiBEb2NQYXJhbTx0aGlzPik6IFByb21pc2U8RW50aXR5PiB7XG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5jaGFuZ2VzKHBhcmFtTWFwKS5waXBlKHRha2UoMSkpKTtcbiAgfVxuXG4gIGxpc3QocGFyYW1NYXA/OiBDb2xQYXJhbTx0aGlzPik6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLmxpc3RDaGFuZ2VzKHBhcmFtTWFwIGFzIGFueSkucGlwZSh0YWtlKDEpKSk7XG4gIH1cblxuICBsaXN0Q2hhbmdlcyhwYXJhbU1hcD86IENvbFBhcmFtPHRoaXM+KTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiBvZihwYXJhbU1hcCkucGlwZShcbiAgICAgIG1hcCgocGFyYW1NYXApID0+IHRoaXMuZGFvLmdldENvbGxlY3Rpb24ocGFyYW1NYXAgYXMgYW55KSksXG4gICAgICBzd2l0Y2hNYXAoKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdENoYW5nZXMkQnlDb2xsZWN0aW9uTGlrZShjb2xsZWN0aW9uKVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaGFuZ2VzJEJ5RG9jdW1lbnQoXG4gICAgZG9jOiBEb2N1bWVudFJlZmVyZW5jZVxuICApOiBPYnNlcnZhYmxlPEVudGl0eT4ge1xuICAgIHJldHVybiBkb2Muc3RhdGVDaGFuZ2VzKCkucGlwZShcbiAgICAgIG1hcCgoZG9jKSA9PiB0aGlzLmNvbnZlcnRlci5mcm9tRmlyZXN0b3JlKGRvYykpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGlzdENoYW5nZXMkQnlDb2xsZWN0aW9uTGlrZShcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uTGlrZVxuICApOiBPYnNlcnZhYmxlPEVudGl0eVtdPiB7XG4gICAgY29uc3QgZW50aXRpZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIHJldHVybiBjb2xsZWN0aW9uLnN0YXRlQ2hhbmdlcygpLnBpcGUoXG4gICAgICB0YXAoYWN0aW9ucyA9PiBhY3Rpb25zLmZvckVhY2goKHt0eXBlLCBwYXlsb2FkOiB7ZG9jfX0pID0+IHtcbiAgICAgICAgaWYgKG5ldyBTZXQoWydhZGRlZCcsICdtb2RpZmllZCddKS5oYXModHlwZSkpIHtcbiAgICAgICAgICBlbnRpdGllc01hcC5zZXQoZG9jLmlkLCB0aGlzLmNvbnZlcnRlci5mcm9tRmlyZXN0b3JlKChkb2MgYXMgYW55KSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW1vdmVkJykge1xuICAgICAgICAgIGVudGl0aWVzTWFwLmRlbGV0ZShkb2MuaWQpO1xuICAgICAgICB9XG4gICAgICB9KSksXG4gICAgICBtYXAoKCkgPT4gWy4uLmVudGl0aWVzTWFwLnZhbHVlcygpXSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlyZXN0b3JlUXVlcnk8RW50aXR5IGV4dGVuZHMge2lkOiBzdHJpbmd9ID0gYW55PiBleHRlbmRzIEJhc2VGaXJlc3RvcmVRdWVyeTxFbnRpdHk+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXIgPSBpbmplY3QoRmlyZXN0b3JlQWRhcHRlcik7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBjb252ZXJ0ZXI6IElGaXJlc3RvcmVDb252ZXJ0ZXI8RW50aXR5PjtcblxuICBnZXQgcGF0aEJ1aWxkZXIoKTogRmlyZXN0b3JlUGF0aEJ1aWxkZXI8RW50aXR5LCB0eXBlb2YgdGhpcy5jb2xsZWN0aW9uUGF0aD4ge1xuICAgIHJldHVybiBwYXRoQnVpbGRlckZhY3RvcnkodGhpcy5jb2xsZWN0aW9uUGF0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRhbygpIHtcbiAgICByZXR1cm4gbmV3IEZpcmVzdG9yZURBTzxFbnRpdHk+KHRoaXMuYWRhcHRlciwgdGhpcy5wYXRoQnVpbGRlcik7XG4gIH0gIFxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJlc3RvcmVRdWVyeTxFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KFxuICBlbnRpdHk6IHsgbmV3KCk6IEVudGl0eSB9LFxuICBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyID0gaW5qZWN0KEZpcmVzdG9yZUFkYXB0ZXIpLFxuKTogQmFzZUZpcmVzdG9yZVF1ZXJ5PEVudGl0eT4ge1xuXG4gIGNsYXNzIEZpcmVzdG9yZVF1ZXJ5IGV4dGVuZHMgQmFzZUZpcmVzdG9yZVF1ZXJ5PEVudGl0eT4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnZlcnRlcjogSUZpcmVzdG9yZUNvbnZlcnRlcjxFbnRpdHk+LFxuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsXG4gICAgICBwdWJsaWMgcGF0aEJ1aWxkZXI6IEZpcmVzdG9yZVBhdGhCdWlsZGVyPEVudGl0eSwgYW55PixcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyLFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhbzogRmlyZXN0b3JlREFPPEVudGl0eT4sXG4gICAgKSB7IHN1cGVyKCk7IH1cbiAgfVxuXG4gIHJldHVybiBuZXcgRmlyZXN0b3JlUXVlcnkoXG4gICAgZ2V0Q29udmVydGVyKGVudGl0eSwgYWRhcHRlciksXG4gICAgZ2V0Q29sbGVjdGlvbihlbnRpdHkpLFxuICAgIHBhdGhCdWlsZGVyRmFjdG9yeShnZXRDb2xsZWN0aW9uKGVudGl0eSkpLFxuICAgIGFkYXB0ZXIsXG4gICAgbmV3IEZpcmVzdG9yZURBTzxFbnRpdHk+KGFkYXB0ZXIsIHBhdGhCdWlsZGVyRmFjdG9yeShnZXRDb2xsZWN0aW9uKGVudGl0eSkpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZpcmVzdG9yZVF1ZXJ5PEVudGl0eSBleHRlbmRzIHtpZDogc3RyaW5nfT4oZW50aXR5OiB7IG5ldygpOiBFbnRpdHkgfSk6IEJhc2VGaXJlc3RvcmVRdWVyeTxFbnRpdHk+IHtcbiAgcmV0dXJuIGdldEZpcmVzdG9yZVF1ZXJ5KGVudGl0eSwgaW5qZWN0KEZpcmVzdG9yZUFkYXB0ZXIpKTtcbn1cbiJdfQ==","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 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 constructor(collectionPath) {\n this.collectionPath = collectionPath;\n this.adapter = new DexieAdapter();\n }\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 constructor() {\n super(...arguments);\n this.config = {\n throttleTime: 5_000,\n loadChunkSize: 1_000,\n };\n }\n get cached() {\n return this._cached ??= new FirestoreIndexedDbCached(this.collectionPath);\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 { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CachedFirestoreQuery, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵ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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLXF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9xdWVyeS92Mi9jYWNoZWQtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpDLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFpQyxNQUFNLE9BQU8sQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hJLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFNMUIsU0FBUyxTQUFTLENBQUksVUFBOEI7SUFDbEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBU0QsTUFBTSxZQUE2RCxTQUFRLEtBQUs7SUFHOUU7UUFDRSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFzQjtR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QyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUN6RyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDOUIsVUFBVSxFQUNWLEdBQUc7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQztZQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO1lBQ3hDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDOUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2xCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sYUFBYSxDQUFDO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzRCxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXREbUIsb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZpcmVzdG9yZVF1ZXJ5IH0gZnJvbSBcIi4vcXVlcnlcIjtcbmltcG9ydCB7IEV4dHJhY3RQYXJhbXMgfSBmcm9tIFwiLi4vLi4vcGF0aC1idWlsZGVyXCI7XG5pbXBvcnQgRGV4aWUsIHsgbGl2ZVF1ZXJ5LCBPYnNlcnZhYmxlIGFzIERleGllT2JzZXJ2YWJsZSB9IGZyb20gJ2RleGllJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE5FVkVSLCBPYnNlcnZhYmxlLCBvZiwgcmV0cnksIHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IENvbGxlY3Rpb25MaWtlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcblxudHlwZSBDb2xQYXJhbTxUIGV4dGVuZHMge3JlYWRvbmx5IGNvbGxlY3Rpb25QYXRoOiBzdHJpbmd9PiA9IE9taXQ8RXh0cmFjdFBhcmFtczxUWydjb2xsZWN0aW9uUGF0aCddPiwgJ2lkJz47XG50eXBlIERvY1BhcmFtPFQgZXh0ZW5kcyB7cmVhZG9ubHkgY29sbGVjdGlvblBhdGg6IHN0cmluZ30+ID0gQ29sUGFyYW08VD4gJiB7aWQ6IHN0cmluZ307IFxuXG5mdW5jdGlvbiBmcm9tRGV4aWU8VD4ob2JzZXJ2YWJsZTogRGV4aWVPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IG9ic2VydmFibGUuc3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbn1cblxuaW50ZXJmYWNlIEVudGl0eURhdGEge1xuICBpZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuY2xhc3MgRGV4aWVBZGFwdGVyPEUgZXh0ZW5kcyB7aWQ6IHN0cmluZywgdXBkYXRlZEF0OiBkYXlqcy5EYXlqc30+IGV4dGVuZHMgRGV4aWUge1xuICBlbnRpdGllcyE6IERleGllLlRhYmxlPEVudGl0eURhdGEsIHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ0BueC1kZGQvZmlyZXN0b3JlL2NhY2hlZC1xdWVyeScpO1xuICAgIHRoaXMudmVyc2lvbigzKS5zdG9yZXMoeyBlbnRpdGllczogJysraWQnIH0pO1xuICB9XG5cbiAgY291bnQkKCkge1xuICAgIHJldHVybiBmcm9tRGV4aWUobGl2ZVF1ZXJ5KCgpID0+IHRoaXMuZW50aXRpZXMuY291bnQoKSkpO1xuICB9XG5cbiAgZ2V0TGFzdFVwZGF0ZWRBdCQoY29sbGVjdGlvblBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBvZihudWxsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgoKSA9PiBmcm9tRGV4aWUobGl2ZVF1ZXJ5KCgpID0+IHRoaXMuZW50aXRpZXMudG9BcnJheSgpKSkpKSxcbiAgICAgIG1hcCgoZW50aXRpZXMpID0+IGVudGl0aWVzLmZpbHRlcihlbnRpdHkgPT4gZW50aXR5LmNvbGxlY3Rpb25QYXRoID09PSBjb2xsZWN0aW9uUGF0aCkpLFxuICAgICAgbWFwKGVudGl0aWVzID0+IGVudGl0aWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKCFhPy51cGRhdGVkQXQpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKCFiPy51cGRhdGVkQXQpIHJldHVybiAxO1xuICAgICAgICByZXR1cm4gZGF5anMoYT8udXBkYXRlZEF0KS5kaWZmKGRheWpzKGI/LnVwZGF0ZWRBdCkpO1xuICAgICAgfSkuYXQoLTEpKSxcbiAgICAgIG1hcChlbnRpdHkgPT4gZW50aXR5Py51cGRhdGVkQXQgPyBkYXlqcyhlbnRpdHk/LnVwZGF0ZWRBdCkgOiBkYXlqcygnMTk3MC0wMS0wMScpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmUsIGN1cikgPT4gcHJlLmlzU2FtZShjdXIpKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgYnVsa1B1dChjb2xsZWN0aW9uUGF0aDogc3RyaW5nLCBlbnRpdGllczogRVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXRpZXMuYnVsa1B1dChlbnRpdGllcy5tYXAoZW50aXR5ID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke2VudGl0eS5pZH1gO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGtleSxcbiAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShlbnRpdHkpLFxuICAgICAgICB1cGRhdGVkQXQ6IGVudGl0eS51cGRhdGVkQXQudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdENoYW5nZXMoY29sbGVjdGlvblBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8RVtdPiB7XG4gICAgcmV0dXJuIG9mKG51bGwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gZnJvbURleGllKGxpdmVRdWVyeSgoKSA9PiB0aGlzLmVudGl0aWVzLnRvQXJyYXkoKSkpKSxcbiAgICAgIG1hcCgoZW50aXRpZXMpID0+IGVudGl0aWVzLmZpbHRlcihlbnRpdHkgPT4gZW50aXR5LmNvbGxlY3Rpb25QYXRoID09PSBjb2xsZWN0aW9uUGF0aCkpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXMubWFwKGVudGl0eSA9PiBKU09OLnBhcnNlKGVudGl0eS52YWx1ZSkgYXMgRSkpLFxuICAgICk7XG4gIH1cbn1cblxuY2xhc3MgRmlyZXN0b3JlSW5kZXhlZERiQ2FjaGVkPEUgZXh0ZW5kcyB7aWQ6IHN0cmluZywgdXBkYXRlZEF0OiBkYXlqcy5EYXlqc30+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcpIHsgfVxuXG4gIHJlYWRvbmx5IGFkYXB0ZXIgPSBuZXcgRGV4aWVBZGFwdGVyPEU+KCk7XG5cbiAgZ2V0TGFzdFVwZGF0ZWRBdCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRMYXN0VXBkYXRlZEF0JCh0aGlzLmNvbGxlY3Rpb25QYXRoKTtcbiAgfVxuXG4gIGFzeW5jIHNldE1hbnkoZW50aXRpZXM6IEVbXSkge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuYnVsa1B1dCh0aGlzLmNvbGxlY3Rpb25QYXRoLCBlbnRpdGllcyk7XG4gIH1cblxuICBsaXN0Q2hhbmdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmxpc3RDaGFuZ2VzKHRoaXMuY29sbGVjdGlvblBhdGgpO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYWNoZWRGaXJlc3RvcmVRdWVyeTxFIGV4dGVuZHMge2lkOiBzdHJpbmcsIHVwZGF0ZWRBdDogZGF5anMuRGF5anN9ID0gYW55PiBleHRlbmRzIEZpcmVzdG9yZVF1ZXJ5PEU+IHtcbiAgcHJvdGVjdGVkIF9jYWNoZWQ6IEZpcmVzdG9yZUluZGV4ZWREYkNhY2hlZDxFPjtcbiAgcHJvdGVjdGVkIGdldCBjYWNoZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlZCA/Pz0gbmV3IEZpcmVzdG9yZUluZGV4ZWREYkNhY2hlZDxFPih0aGlzLmNvbGxlY3Rpb25QYXRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSB7XG4gICAgdGhyb3R0bGVUaW1lOiA1XzAwMCxcbiAgICBsb2FkQ2h1bmtTaXplOiAxXzAwMCxcbiAgfTtcblxuICBvdmVycmlkZSBsaXN0Q2hhbmdlcyhwYXJhbU1hcD86IENvbFBhcmFtPHRoaXM+KTogT2JzZXJ2YWJsZTxFW10+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5kYW8uZ2V0Q29sbGVjdGlvbihwYXJhbU1hcCBhcyBhbnkpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlZC5nZXRMYXN0VXBkYXRlZEF0JCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGxhc3RVcGRhdGVkQXQpID0+IHRoaXMuX2xpc3RDaGFuZ2VzQWZ0ZXIoY29sbGVjdGlvbiwgbGFzdFVwZGF0ZWRBdCwge1xuICAgICAgICBsaW1pdDogdGhpcy5jb25maWcubG9hZENodW5rU2l6ZSxcbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIHJldHJ5KDMpLFxuICAgICAgICB0YXAoKHVwZGF0ZWQpID0+IHRoaXMuY2FjaGVkLnNldE1hbnkodXBkYXRlZCkpLFxuICAgICAgICB0YXAoKHVwZGF0ZWQpID0+IGNvbnNvbGUubG9nKCd1cGRhdGVkOicsIHVwZGF0ZWQpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IChjb25zb2xlLmVycm9yKGVycm9yKSwgTkVWRVIpKSxcbiAgICAgICkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2FjaGVkLmxpc3RDaGFuZ2VzKCkpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXMubWFwKGVudGl0eSA9PiB0aGlzLmNvbnZlcnRlci5mcm9tT2JqZWN0KGVudGl0eSkpKSxcbiAgICAgIHRocm90dGxlVGltZSh0aGlzLmNvbmZpZy50aHJvdHRsZVRpbWUpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2xpc3RDaGFuZ2UocGFyYW1NYXA/OiBDb2xQYXJhbTx0aGlzPik6IE9ic2VydmFibGU8RVtdPiB7XG4gICAgcmV0dXJuIG9mKHBhcmFtTWFwKS5waXBlKFxuICAgICAgbWFwKChwYXJhbU1hcCkgPT4gdGhpcy5kYW8uZ2V0Q29sbGVjdGlvbihwYXJhbU1hcCBhcyBhbnkpKSxcbiAgICAgIG1hcCgoY29sbGVjdGlvbikgPT4gdGhpcy5hZGFwdGVyLnF1ZXJ5KGNvbGxlY3Rpb24sIHRoaXMuYWRhcHRlci5saW1pdCgxMCkpKSxcbiAgICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbikgPT4gdGhpcy5nZXRMaXN0Q2hhbmdlcyRCeUNvbGxlY3Rpb25MaWtlKGNvbGxlY3Rpb24pKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9saXN0Q2hhbmdlc0FmdGVyKGNvbGxlY3Rpb246IENvbGxlY3Rpb25MaWtlLCB1cGRhdGVkQXQ6IGRheWpzLkRheWpzLCB7bGltaXR9OiB7bGltaXQ/OiBudW1iZXJ9ID0ge30pIHtcbiAgICBjb25zdCB1cGRhdGVkQXRUcyA9IGRheWpzLmlzRGF5anModXBkYXRlZEF0KSA/IHRoaXMuYWRhcHRlci5jb252ZXJ0RGF0ZVRvVGltZXN0YW1wKHVwZGF0ZWRBdCkgOiB1cGRhdGVkQXRcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuYWRhcHRlci5xdWVyeShcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAuLi5bXG4gICAgICAgIHRoaXMuYWRhcHRlci53aGVyZSgndXBkYXRlZEF0JywgJz4nLCB1cGRhdGVkQXRUcyksXG4gICAgICAgIHRoaXMuYWRhcHRlci5vcmRlckJ5KCd1cGRhdGVkQXQnLCAnYXNjJyksXG4gICAgICAgIGxpbWl0ID8gdGhpcy5hZGFwdGVyLmxpbWl0KGxpbWl0KSA6IHVuZGVmaW5lZCxcbiAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdENoYW5nZXMkQnlDb2xsZWN0aW9uTGlrZShxdWVyeSk7XG4gIH1cblxuICBwcm9ncmVzc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgY2xvdWQ6IHRoaXMuY291bnQoKSxcbiAgICAgIGxvY2FsOiB0aGlzLmxpc3RDaGFuZ2VzKCkucGlwZShtYXAoaXRlbXMgPT4gaXRlbXMubGVuZ3RoKSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","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 constructor() {\n super(...arguments);\n this.genId = () => generateId();\n }\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 _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 constructor() {\n super(...arguments);\n this.adapter = inject(FirestoreAdapter);\n }\n get pathBuilder() {\n return pathBuilderFactory(this.collectionPath);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: FirestoreRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵ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 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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QU8sQ0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBbUQsTUFBeUI7SUFDbkgsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSAnQG54LWRkZC9jb21tb24vZG9tYWluJztcbmltcG9ydCB7IHRvT2JqZWN0IH0gZnJvbSAnQG54LWRkZC9jb21tb24nO1xuaW1wb3J0IHsgZ2VuZXJhdGVJZCB9IGZyb20gJ0BueC1kZGQvY29tbW9uJztcbmltcG9ydCB7IEZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9iYXNlJztcbmltcG9ydCB7IGdldENvbnZlcnRlciwgSUZpcmVzdG9yZUNvbnZlcnRlciB9IGZyb20gJy4uL2NvbnZlcnRlcic7XG5pbXBvcnQgeyBFeHRyYWN0UGFyYW1zLCBGaXJlc3RvcmVQYXRoQnVpbGRlciwgcGF0aEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vcGF0aC1idWlsZGVyJztcbmltcG9ydCB7IENvbGxlY3Rpb25SZWZlcmVuY2UsIENvbGxlY3Rpb25Hcm91cCwgRG9jdW1lbnRSZWZlcmVuY2UsIERvY3VtZW50U25hcHNob3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldENvbGxlY3Rpb24gfSBmcm9tICcuLi9kZWNvcmF0b3JzL2RlY29yYXRvcnMnO1xuXG5jb25zdCB0b1Byb21pc2UgPSBjYWxsYmFjayA9PiBuZXcgUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiBjYWxsYmFjaz4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgdHJ5IHsgcmVzb2x2ZShjYWxsYmFjaygpKTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgfVxufSk7XG5cbmZ1bmN0aW9uIGRvZXNFeGlzdChkb2M6IERvY3VtZW50U25hcHNob3QpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBkb2MuZXhpc3RzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRvYy5leGlzdHMoKTtcbiAgfVxuICByZXR1cm4gZG9jLmV4aXN0cztcbn1cblxuLy8gRmlyZXN0b3JlUmVwb3NpdG9yeeOBi+OCiUVucmlyeeOCkuWPluW+l+OBmeOCi2luZmVyXG5leHBvcnQgdHlwZSBFeHRyYWN0RW50aXR5PFQgZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxhbnksIGFueT4+ID0gVCBleHRlbmRzIEJhc2VGaXJlc3RvcmVSZXBvc2l0b3J5PGluZmVyIEVudGl0eSwgYW55PiA/IEVudGl0eSA6IG5ldmVyO1xudHlwZSBDb2xQYXJhbTxUIGV4dGVuZHMgQmFzZUZpcmVzdG9yZVJlcG9zaXRvcnk8YW55LCBhbnk+PiA9IE9taXQ8RXh0cmFjdFBhcmFtczxUWydjb2xsZWN0aW9uUGF0aCddPiwgJ2lkJz47XG50eXBlIERvY1BhcmFtPFQgZXh0ZW5kcyBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxhbnksIGFueT4sIFRFeHRyYSA9IHt9PiA9IENvbFBhcmFtPFQ+ICYgeyBpZDogc3RyaW5nIH0gJiBURXh0cmE7IFxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpcmVzdG9yZVJlcG9zaXRvcnk8RW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nIH0sIFRFeHRyYVBhcmFtcyA9IHt9PiBleHRlbmRzIFJlcG9zaXRvcnk8RW50aXR5PiB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29udmVydGVyOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT47XG4gIGFic3RyYWN0IHJlYWRvbmx5IHBhdGhCdWlsZGVyOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHksIHR5cGVvZiB0aGlzLmNvbGxlY3Rpb25QYXRoPjtcblxuICBhc3luYyBsaXN0KHBhcmFtTWFwPzogQ29sUGFyYW08dGhpcz4sIHF1ZXJ5OiBhbnkgPSBxID0+IHEpOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHBhcmFtTWFwID8gdGhpcy5jb2xsZWN0aW9uKHBhcmFtTWFwKSA6IHRoaXMuY29sbGVjdGlvbkdyb3VwKCk7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3QocXVlcnkoY29sbGVjdGlvbikpO1xuICB9XG5cbiAgbGlzdENoYW5nZXMoKTogT2JzZXJ2YWJsZTxFbnRpdHlbXT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGFzeW5jIGNvdW50KHBhcmFtTWFwPzogQ29sUGFyYW08dGhpcz4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24ocGFyYW1NYXApLmNvdW50KCk7XG4gIH1cblxuICBhc3luYyBnZXQocGFyYW1NYXA/OiBEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+KSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldCh0aGlzLmRvYyhwYXJhbU1hcCBhcyBhbnkpKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoZW50aXR5OiBEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+ICYgRW50aXR5KTogUHJvbWlzZTxbRW50aXR5LCBib29sZWFuXT4ge1xuICAgIGNvbnN0IGRvY1JlZiA9IHRoaXMuZG9jKHsuLi5lbnRpdHksIGlkOiBlbnRpdHk/LmlkIHx8IHRoaXMuZ2VuSWQoKX0pO1xuICAgIHJldHVybiB0aGlzLl9zYXZlKGRvY1JlZiwgZW50aXR5KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVNYW55KGVudGl0aWVzOiBFbnRpdHlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtXcml0ZShlbnRpdGllcyBhcyBhbnkpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlKGVudGl0eTogRG9jUGFyYW08dGhpcywgVEV4dHJhUGFyYW1zPiAmIEVudGl0eSk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgY29uc3Qgb2JqID0gdG9PYmplY3QoZW50aXR5KSBhcyBEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+ICYgRW50aXR5O1xuICAgIGNvbnN0IGlkID0gb2JqPy5pZCB8fCB0aGlzLmdlbklkKCk7XG4gICAgcmV0dXJuIHRvUHJvbWlzZSgoKSA9PiB0aGlzLmRvYyh7Li4ub2JqLCBpZH0pKS50aGVuKGRvYyA9PiB0aGlzLl9jcmVhdGUoZG9jLCBlbnRpdHkpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU1hbnkoZW50aXRpZXM6IChEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+ICYgRW50aXR5KVtdKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChlbnRpdGllcy5tYXAoZW50aXR5ID0+IHRoaXMuY3JlYXRlKGVudGl0eSkpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShlbnRpdHk6IERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBQYXJ0aWFsPEVudGl0eT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5kb2MoZW50aXR5KS51cGRhdGUodGhpcy5hZGFwdGVyLmZsYXR0ZW5Gb3JVcGRhdGUoe1xuICAgICAgLi4udGhpcy5jb252ZXJ0ZXIudG9GaXJlc3RvcmUoZW50aXR5KSxcbiAgICAgIC4uLnRoaXMuYnVpbGRTZXJ2ZXJUaW1lc3RhbXBPYmplY3QoWyd1cGRhdGVkQXQnXSksXG4gICAgfSkpLnRoZW4oKCkgPT4ge30pOyBcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU1hbnkoZGF0YTogUGFydGlhbDxFbnRpdHk+W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5idWxrVXBkYXRlKGRhdGEgYXMgYW55KTtcbiAgfVxuXG4gIGRlbGV0ZShwYXJhbU1hcDogRG9jUGFyYW08dGhpcywgVEV4dHJhUGFyYW1zPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmRvYyhwYXJhbU1hcCBhcyBhbnkpLmRlbGV0ZSgpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWFueShwYXJhbXM6IHsgaWQ6IHN0cmluZzsgfVtdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gcGFyYW1zLnJlZHVjZSgoYmF0Y2gsIHBhcmFtKSA9PiB7XG4gICAgICBjb25zdCBkb2MgPSB0aGlzLmRvYyhwYXJhbSBhcyBhbnkpLl9fcmVmO1xuICAgICAgcmV0dXJuIGJhdGNoLmRlbGV0ZShkb2MpO1xuICAgIH0sIHRoaXMuYWRhcHRlci5iYXRjaCgpKS5jb21taXQoKS50aGVuKCgpID0+IHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGFzeW5jIGJ1bGtXcml0ZShlbnRpdGllczogKERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBFbnRpdHkpW10sIHRpbWVzdGFtcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gZW50aXRpZXMucmVkdWNlKChiYXRjaCwgZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBkb2MgPSB0aGlzLmRvYyhlbnRpdHkpLl9fcmVmO1xuICAgICAgcmV0dXJuIGJhdGNoLnNldChkb2MsIHtcbiAgICAgICAgLi4udGhpcy5jb252ZXJ0ZXIudG9GaXJlc3RvcmUoZW50aXR5KSxcbiAgICAgICAgLi4udGhpcy5idWlsZFNlcnZlclRpbWVzdGFtcE9iamVjdCh0aW1lc3RhbXBzKSxcbiAgICAgIH0pO1xuICAgIH0sIHRoaXMuYWRhcHRlci5iYXRjaCgpKS5jb21taXQoKTtcbiAgfVxuXG4gIGFzeW5jIGJ1bGtDcmVhdGUoZW50aXRpZXM6IChEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+ICYgRW50aXR5KVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVE9ETyhub250YW5nZW50KTogYWRkIG1heGltdW0gNTAwIHJlY29yZCB2YWxpZGF0aW9uXG4gICAgcmV0dXJuIGVudGl0aWVzLnJlZHVjZSgoYmF0Y2gsIGVudGl0eSkgPT4ge1xuICAgICAgY29uc3QgZG9jID0gdGhpcy5kb2MoZW50aXR5KS5fX3JlZjtcbiAgICAgIHJldHVybiBiYXRjaC5jcmVhdGUoZG9jLCB7XG4gICAgICAgIC4uLnRoaXMuY29udmVydGVyLnRvRmlyZXN0b3JlKGVudGl0eSksXG4gICAgICAgIC4uLnRoaXMuYnVpbGRTZXJ2ZXJUaW1lc3RhbXBPYmplY3QoWydjcmVhdGVkQXQnLCAndXBkYXRlZEF0J10pLFxuICAgICAgfSk7XG4gICAgfSwgdGhpcy5hZGFwdGVyLmJhdGNoKCkpLmNvbW1pdCgpO1xuICB9XG5cbiAgYXN5bmMgYnVsa1VwZGF0ZShlbnRpdGllczogKERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4gJiBQYXJ0aWFsPEVudGl0eT4pW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUT0RPKG5vbnRhbmdlbnQpOiBhZGQgbWF4aW11bSA1MDAgcmVjb3JkIHZhbGlkYXRpb25cbiAgICByZXR1cm4gZW50aXRpZXMucmVkdWNlKChiYXRjaCwgZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBkb2MgPSB0aGlzLmRvYyhlbnRpdHkpLl9fcmVmO1xuICAgICAgcmV0dXJuIGJhdGNoLnVwZGF0ZShkb2MsIHtcbiAgICAgICAgLi4udGhpcy5jb252ZXJ0ZXIudG9GaXJlc3RvcmUoZW50aXR5KSxcbiAgICAgICAgLi4udGhpcy5idWlsZFNlcnZlclRpbWVzdGFtcE9iamVjdChbJ3VwZGF0ZWRBdCddKSxcbiAgICAgIH0pO1xuICAgIH0sIHRoaXMuYWRhcHRlci5iYXRjaCgpKS5jb21taXQoKTtcbiAgfVxuXG4gIGFzeW5jIGJ1bGtEZWxldGUocGFyYW1NYXBzOiBEb2NQYXJhbTx0aGlzLCBURXh0cmFQYXJhbXM+W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBNRU1PKEBub250YW5nZW50KTogNTAw5Lu25Lul5LiK44Gu5YmK6Zmk44Gv5pyq5a++5b+cXG4gICAgcmV0dXJuIHBhcmFtTWFwcy5yZWR1Y2UoKGJhdGNoLCBwYXJhbU1hcCkgPT4ge1xuICAgICAgY29uc3QgZG9jID0gdGhpcy5kb2MocGFyYW1NYXAgYXMgYW55KS5fX3JlZjtcbiAgICAgIHJldHVybiBiYXRjaC5kZWxldGUoZG9jKTtcbiAgICB9LCB0aGlzLmFkYXB0ZXIuYmF0Y2goKSkuY29tbWl0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29sbGVjdGlvbihwYXJhbU1hcD86IE9taXQ8RXh0cmFjdFBhcmFtczx0eXBlb2YgdGhpcy5jb2xsZWN0aW9uUGF0aD4sICdpZCc+KTogQ29sbGVjdGlvblJlZmVyZW5jZTxvYmplY3Q+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5jb2xsZWN0aW9uKHBhcmFtTWFwKVxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuY29sbGVjdGlvbjxvYmplY3Q+KHBhdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbGxlY3Rpb25Hcm91cCgpOiBDb2xsZWN0aW9uR3JvdXA8b2JqZWN0PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMucGF0aEJ1aWxkZXIuY29sbGVjdGlvbkdyb3VwKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5jb2xsZWN0aW9uR3JvdXA8b2JqZWN0PihwYXRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkb2MocGFyYW1NYXA6IERvY1BhcmFtPHRoaXMsIFRFeHRyYVBhcmFtcz4pOiBEb2N1bWVudFJlZmVyZW5jZTxvYmplY3Q+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoQnVpbGRlci5kb2MocGFyYW1NYXAgYXMgYW55KTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRvYzxvYmplY3Q+KHBhdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdlbklkID0gKCk6IHN0cmluZyA9PiBnZW5lcmF0ZUlkKCk7XG5cbiAgcHJvdGVjdGVkIF9saXN0KGNvbGxlY3Rpb246IENvbGxlY3Rpb25SZWZlcmVuY2U8b2JqZWN0Pikge1xuICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpLnRoZW4oKHtkb2NzfSkgPT4gZG9jcy5tYXAoZG9jID0+IHtcbiAgICAgIGlmICghZG9lc0V4aXN0KGRvYykpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoZG9jKTtcbiAgICB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldChkb2M6IERvY3VtZW50UmVmZXJlbmNlPG9iamVjdD4pIHtcbiAgICByZXR1cm4gZG9jLmdldCgpLnRoZW4oKGRvYyA9PiB7XG4gICAgICBpZiAoIWRvYy5kYXRhKCkpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoZG9jKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBfc2F2ZShkb2M6IERvY3VtZW50UmVmZXJlbmNlPG9iamVjdD4sIGVudGl0eTogRW50aXR5KTogUHJvbWlzZTxbRW50aXR5LCBib29sZWFuXT4ge1xuICAgIGNvbnN0IGV4aXN0cyA9IGF3YWl0IGRvYy5leGlzdHMoKTtcbiAgICBpZiAoZXhpc3RzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0KGRvYywgZW50aXR5KS50aGVuKGRvYyA9PiBbdGhpcy5jb252ZXJ0ZXIuZnJvbUZpcmVzdG9yZShkb2MpLCBmYWxzZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlKGRvYywgZW50aXR5KS50aGVuKGVudGl0eSA9PiBbZW50aXR5LCB0cnVlXSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIF9jcmVhdGUoZG9jOiBEb2N1bWVudFJlZmVyZW5jZTxvYmplY3Q+LCBlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgY29uc3QgZXhpc3RzID0gYXdhaXQgZG9jLmV4aXN0cygpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgLy8gTUVNTyhAbm9udGFuZ2VudCk6IGJ1buOBp+Wun+ihjOOBmeOCi+OBqOOBjeOBoOOBkeOBk+OBruOCqOODqeODvOOBjOOBp+OCi+OBi+OCguOBl+OCjOOBquOBhOOAglxuICAgICAgaWYgKGAke2Vycm9yfWAuc3RhcnRzV2l0aCgnRXJyb3I6IERpZCBub3QgcmVjZWl2ZSBkb2N1bWVudCBmb3InKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gICAgaWYgKGV4aXN0cykgdGhyb3cgbmV3IEVycm9yKCdEb2N1bWVudCBhbHJlYWR5IGV4aXN0cycpO1xuICAgIHJldHVybiBkb2Muc2V0KHtcbiAgICAgIC4uLnRoaXMuY29udmVydGVyLnRvRmlyZXN0b3JlKGVudGl0eSksXG4gICAgICAuLi50aGlzLmJ1aWxkU2VydmVyVGltZXN0YW1wT2JqZWN0KFsnY3JlYXRlZEF0JywgJ3VwZGF0ZWRBdCddKSxcbiAgICB9IGFzIGFueSkudGhlbigoKSA9PiBkb2MuZ2V0KCkpLnRoZW4oZG9jID0+IHRoaXMuY29udmVydGVyLmZyb21GaXJlc3RvcmUoZG9jKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NldChkb2M6IERvY3VtZW50UmVmZXJlbmNlPG9iamVjdD4sIGVudGl0eTogUGFydGlhbDxFbnRpdHk+LCBpc1VwZGF0ZSA9IHRydWUpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5jb252ZXJ0ZXIudG9GaXJlc3RvcmUoZW50aXR5KTtcbiAgICByZXR1cm4gZG9jLnNldCh7XG4gICAgICAuLi50aGlzLmNvbnZlcnRlci50b0ZpcmVzdG9yZShlbnRpdHkpLFxuICAgICAgLi4udGhpcy5idWlsZFNlcnZlclRpbWVzdGFtcE9iamVjdChpc1VwZGF0ZSA/IFsndXBkYXRlZEF0J10gOiBbXSksXG4gICAgfSBhcyBhbnksIHttZXJnZTogaXNVcGRhdGV9KS50aGVuKCgpID0+IGRvYy5nZXQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRTZXJ2ZXJUaW1lc3RhbXBPYmplY3Qoa2V5czogc3RyaW5nW10gPSBbJ2NyZWF0ZWRBdCcsICd1cGRhdGVkQXQnXSkge1xuICAgIHJldHVybiBrZXlzLnJlZHVjZSgobSwgaykgPT4gKHsuLi5tLCBba106IHRoaXMuYWRhcHRlci5GaWVsZFZhbHVlLnNlcnZlclRpbWVzdGFtcCgpfSksIHt9KTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgVEV4dHJhUGFyYW1zID0ge30+IGV4dGVuZHMgQmFzZUZpcmVzdG9yZVJlcG9zaXRvcnk8RW50aXR5LCBURXh0cmFQYXJhbXM+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXIgPSBpbmplY3QoRmlyZXN0b3JlQWRhcHRlcik7XG4gIGdldCBwYXRoQnVpbGRlcigpOiBGaXJlc3RvcmVQYXRoQnVpbGRlcjxFbnRpdHksIHR5cGVvZiB0aGlzLmNvbGxlY3Rpb25QYXRoPiB7XG4gICAgcmV0dXJuIHBhdGhCdWlsZGVyRmFjdG9yeSh0aGlzLmNvbGxlY3Rpb25QYXRoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgVEV4dHJhUGFyYW1zID0ge30+KFxuICBlbnRpdHk6IHsgbmV3KCk6IEVudGl0eSB9LFxuICBhZGFwdGVyOiBGaXJlc3RvcmVBZGFwdGVyID0gaW5qZWN0KEZpcmVzdG9yZUFkYXB0ZXIpLFxuKTogQmFzZUZpcmVzdG9yZVJlcG9zaXRvcnk8RW50aXR5LCBURXh0cmFQYXJhbXM+IHtcbiAgY2xhc3MgRmlyZXN0b3JlUmVwb3NpdG9yeSBleHRlbmRzIEJhc2VGaXJlc3RvcmVSZXBvc2l0b3J5PEVudGl0eSwgVEV4dHJhUGFyYW1zPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udmVydGVyOiBJRmlyZXN0b3JlQ29udmVydGVyPEVudGl0eT4sXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29sbGVjdGlvblBhdGg6IHN0cmluZyxcbiAgICAgIHB1YmxpYyBwYXRoQnVpbGRlcjogRmlyZXN0b3JlUGF0aEJ1aWxkZXI8RW50aXR5LCBhbnk+LFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXI6IEZpcmVzdG9yZUFkYXB0ZXIsXG4gICAgKSB7IHN1cGVyKCk7IH1cbiAgfVxuXG4gIHJldHVybiBuZXcgRmlyZXN0b3JlUmVwb3NpdG9yeShcbiAgICBnZXRDb252ZXJ0ZXIoZW50aXR5LCBhZGFwdGVyKSxcbiAgICBnZXRDb2xsZWN0aW9uKGVudGl0eSksXG4gICAgcGF0aEJ1aWxkZXJGYWN0b3J5KGdldENvbGxlY3Rpb24oZW50aXR5KSksXG4gICAgYWRhcHRlclxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgVEV4dHJhUGFyYW1zID0ge30+KGVudGl0eTogeyBuZXcoKTogRW50aXR5IH0pOiBCYXNlRmlyZXN0b3JlUmVwb3NpdG9yeTxFbnRpdHksIFRFeHRyYVBhcmFtcz4ge1xuICByZXR1cm4gZ2V0RmlyZXN0b3JlUmVwb3NpdG9yeShlbnRpdHksIGluamVjdChGaXJlc3RvcmVBZGFwdGVyKSk7XG59XG4iXX0=","/**\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":["../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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLnF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG54LWRkZC9maXJlc3RvcmUvc3JjL2xpYi9xdWVyeS9maXJlc3RvcmUucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBYyxhQUFhLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUl0QyxNQUFNLE9BQU8sY0FHWCxTQUFRLFlBQW1DO0lBRy9CO0lBQ0E7SUFIWixZQUNFLE9BQXlCLEVBQ2YsU0FBc0MsRUFDdEMsV0FBeUM7UUFFbkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUE2QjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7UUFHbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVrQixXQUFXLEdBQUcsSUFBSSxhQUFhLENBQWdDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDOUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUN4RSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDN0MsQ0FBQyxF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V0FBVyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFFLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLEVBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVTLG1CQUFtQixDQUFDLFFBQTBCO1FBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUErQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgbGFzdFZhbHVlRnJvbSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpcmVzdG9yZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9iYXNlJztcbmltcG9ydCB7IElGaXJlc3RvcmVDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb252ZXJ0ZXInO1xuaW1wb3J0IHsgRmlyZXN0b3JlREFPIH0gZnJvbSAnLi4vZGFvJztcbmltcG9ydCB7IEZpcmVzdG9yZVBhdGhCdWlsZGVyIH0gZnJvbSAnLi4vcGF0aC1idWlsZGVyJztcbmltcG9ydCB7IERvY3VtZW50U25hcHNob3QsIENvbGxlY3Rpb25SZWZlcmVuY2UsICBDb2xsZWN0aW9uR3JvdXAsIFRvRmlyZXN0b3JlRGF0YSwgQ29sbGVjdGlvbkxpa2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIEZpcmVzdG9yZVF1ZXJ5PFxuICBFbnRpdHkgZXh0ZW5kcyB7aWQ6IHN0cmluZ30gPSBhbnksIFxuICBGaXJlc3RvcmVEYXRhID0gVG9GaXJlc3RvcmVEYXRhPEVudGl0eSwgZGF5anMuRGF5anM+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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"}