UNPKG

145 kBSource Map (JSON)View Raw
1{"version":3,"file":"akita-ng-fire.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/akita-ng-fire/src/lib/utils/id-or-path.ts","../../../projects/akita-ng-fire/src/lib/utils/sync-from-action.ts","../../../projects/akita-ng-fire/src/lib/utils/store-options.ts","../../../projects/akita-ng-fire/src/lib/utils/path-with-params.ts","../../../projects/akita-ng-fire/src/lib/utils/has-path-getter.ts","../../../projects/akita-ng-fire/src/lib/collection/collection.service.ts","../../../projects/akita-ng-fire/src/lib/collection/collection.config.ts","../../../projects/akita-ng-fire/src/lib/auth/auth.model.ts","../../../projects/akita-ng-fire/src/lib/auth/auth.service.ts","../../../projects/akita-ng-fire/src/lib/collection/collection.guard.ts","../../../projects/akita-ng-fire/src/lib/collection-group/collection-group.service.ts","../../../projects/akita-ng-fire/src/lib/utils/roles.ts","../../../projects/akita-ng-fire/src/lib/utils/cancellation.ts","../../../projects/akita-ng-fire/src/lib/utils/redirect-if-empty.ts","../../../projects/akita-ng-fire/src/lib/utils/sync-with-router.ts","../../../projects/akita-ng-fire/src/lib/utils/query/utils.ts","../../../projects/akita-ng-fire/src/lib/utils/query/sync-query.ts","../../../projects/akita-ng-fire/src/lib/utils/query/await-sync-query.ts","../../../projects/akita-ng-fire/src/lib/utils/httpsCallable.ts","../../../projects/akita-ng-fire/src/public-api.ts","../../../projects/akita-ng-fire/src/akita-ng-fire.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { DocOptions } from '../collection/collection.service';\n\n// Helper to retrieve the id and path of a document in the collection\nexport function getIdAndPath(options: DocOptions, collectionPath?: string): { id: string, path: string } {\n let path = '';\n let id = '';\n if (options['id']) {\n if (!collectionPath) {\n throw new Error('You should provide the colletion path with the id');\n }\n id = options['id'];\n path = `${collectionPath}/${id}`;\n } else if (options['path']) {\n path = options['path'];\n const part = path.split('/');\n if (part.length % 2 !== 0) {\n throw new Error(`Path ${path} doesn't look like a Firestore's document path`);\n }\n id = part[part.length - 1];\n } else {\n throw new Error(`You should provide either an \"id\" OR a \"path\".`);\n }\n return { id, path };\n}\n","import { DocumentChangeAction, DocumentSnapshot, Action } from '@angular/fire/firestore';\nimport {\n getEntityType,\n StoreAction,\n runEntityStoreAction,\n EntityStoreAction,\n runStoreAction,\n applyTransaction\n} from '@datorama/akita';\n\n/** Set the loading parameter of a specific store */\nexport function setLoading(storeName: string, loading: boolean) {\n runStoreAction(storeName, StoreAction.Update, update => update({ loading }))\n};\n\n/** Reset the store to an empty array */\nexport function resetStore(storeName: string) {\n runStoreAction(storeName, StoreAction.Update, update => update([]))\n};\n\n/** Set a entity as active */\nexport function setActive(storeName: string, active: string | string[]) {\n runStoreAction(storeName, StoreAction.Update, update => update({ active }))\n};\n\n/** Create or update one or several entities in the store */\nexport function upsertStoreEntity(storeName: string, data: any, id: string | string[]) {\n runEntityStoreAction(storeName, EntityStoreAction.UpsertEntities, upsert => upsert(id, data));\n}\n\n/** Remove one or several entities in the store */\nexport function removeStoreEntity(storeName: string, entityIds: string | string[]) {\n runEntityStoreAction(storeName, EntityStoreAction.RemoveEntities, remove => remove(entityIds));\n}\n\n/** Update one or several entities in the store */\nexport function updateStoreEntity(removeAndAdd: boolean, storeName: string, entityIds: string | string[], data: any) {\n if (removeAndAdd) {\n applyTransaction(() => {\n removeStoreEntity(storeName, entityIds);\n upsertStoreEntity(storeName, data, entityIds)\n })\n } else {\n runEntityStoreAction(storeName, EntityStoreAction.UpdateEntities, update => update(entityIds, data))\n }\n}\n\n/** Sync a specific store with actions from Firestore */\nexport function syncStoreFromDocAction<S>(\n storeName: string,\n actions: DocumentChangeAction<getEntityType<S>>[],\n idKey = 'id',\n removeAndAdd: boolean,\n formatFromFirestore: Function\n) {\n setLoading(storeName, false);\n if (actions.length === 0) {\n return;\n }\n for (const action of actions) {\n const id = action.payload.doc.id;\n const entity = formatFromFirestore(action.payload.doc.data());\n switch (action.type) {\n case 'added': {\n upsertStoreEntity(storeName, { [idKey]: id, ...(entity as object) }, id);\n break;\n }\n case 'removed': {\n removeStoreEntity(storeName, id);\n break;\n }\n case 'modified': {\n updateStoreEntity(removeAndAdd, storeName, id, entity);\n break;\n }\n }\n }\n}\n\n/** Sync a specific store with actions from Firestore */\nexport function syncStoreFromDocActionSnapshot<S>(\n storeName: string,\n action: Action<DocumentSnapshot<getEntityType<S>>>,\n idKey = 'id',\n formatFromFirestore: Function\n) {\n setLoading(storeName, false);\n const id = action.payload.id;\n const entity = formatFromFirestore(action.payload.data());\n if (!action.payload.exists) {\n removeStoreEntity(storeName, id);\n } else {\n upsertStoreEntity(storeName, { [idKey]: id, ...(entity as object) }, id);\n }\n}\n","import { EntityStore } from '@datorama/akita';\nimport { SyncOptions } from './types';\n\n/**\n * Get the store name of a store to be synced\n */\nexport function getStoreName(store: EntityStore, storeOptions: Partial<SyncOptions> = {}) {\n if (!store && !storeOptions.storeName) {\n throw new Error('You should either provide a store name or inject a store instance in constructor');\n }\n return storeOptions.storeName || store.storeName;\n}\n","import { HashMap } from '@datorama/akita';\n\n/** Get the params from a path */\nexport function getPathParams(path: string) {\n return path.split('/')\n .filter(segment => segment.charAt(0) === ':')\n .map(segment => segment.substr(1));\n}\n\n/**\n * Transform a path based on the params\n * @param path The path with params starting with \"/:\"\n * @param params A map of id params\n * @example pathWithParams('movies/:movieId/stakeholder/:shId', { movieId, shId })\n */\nexport function pathWithParams(path: string, params: HashMap<string>): string {\n return path.split('/').map(segment => {\n if (segment.charAt(0) === ':') {\n const key = segment.substr(1);\n if (!params[key]) {\n throw new Error(`Required parameter ${key} from ${path} doesn't exist in params ${JSON.stringify(params)}`);\n }\n return params[key];\n } else {\n return segment;\n }\n }).join('/');\n}\n","/**\n * Same as Object.getOwnPropertyDescriptor, but recursively checks prototype chain excluding passed currentClass\n * @param instance Instance to check on\n * @param params Property name to check\n * @param currentClass Checks prototype chain until this class\n * @example getPropertyDescriptor(this, 'path', CollectionService)\n */\nexport function getPropertyDescriptor(instance: any, property: string, currentClass: any = Object): PropertyDescriptor {\n const prototype = Object.getPrototypeOf(instance);\n if (!prototype || !(prototype instanceof currentClass)) return;\n return Object.getOwnPropertyDescriptor(prototype, property) || getPropertyDescriptor(prototype, property, currentClass);\n}\n\n/**\n * Check prototype chain for a specific getter function, excluding parent class\n * @param instance Instance of the class to check on\n * @param parentClass Parent class of the instance\n * @param property Property name to check\n * @example hasChildGetter(this, CollectionService, 'path')\n */\nexport function hasChildGetter(instance: any, parentClass: any, property: string): boolean {\n const descriptor = getPropertyDescriptor(instance, property, parentClass);\n return descriptor && descriptor.get && true;\n}\n","import { inject } from '@angular/core';\nimport {\n AngularFirestoreCollection,\n AngularFirestore,\n DocumentChangeAction,\n QueryFn,\n QueryGroupFn\n} from '@angular/fire/firestore';\nimport {\n EntityStore,\n withTransaction,\n EntityState,\n ActiveState,\n getEntityType,\n} from '@datorama/akita';\nimport firebase from 'firebase/app';\nimport { getIdAndPath } from '../utils/id-or-path';\nimport {\n syncStoreFromDocAction,\n syncStoreFromDocActionSnapshot,\n setLoading,\n upsertStoreEntity,\n removeStoreEntity,\n setActive,\n resetStore\n} from '../utils/sync-from-action';\nimport { WriteOptions, SyncOptions, PathParams, UpdateCallback, AtomicWrite } from '../utils/types';\nimport { Observable, isObservable, of, combineLatest } from 'rxjs';\nimport { tap, map, switchMap } from 'rxjs/operators';\nimport { getStoreName } from '../utils/store-options';\nimport { pathWithParams } from '../utils/path-with-params';\nimport { hasChildGetter } from '../utils/has-path-getter';\n\nexport type CollectionState<E = any> = EntityState<E, string> & ActiveState<string>;\n\nexport type DocOptions = { path: string } | { id: string };\n\nexport type GetRefs<idOrQuery> =\n idOrQuery extends (infer I)[] ? firebase.firestore.DocumentReference[]\n : idOrQuery extends string ? firebase.firestore.DocumentReference\n : firebase.firestore.CollectionReference;\n\nfunction isArray<E>(entityOrArray: E | E[]): entityOrArray is E[] {\n return Array.isArray(entityOrArray);\n}\n\n/** check is an Atomic write is a transaction */\nexport function isTransaction(write: AtomicWrite): write is firebase.firestore.Transaction {\n return write && !!write['get'];\n}\n\nexport class CollectionService<S extends EntityState<EntityType, string>, EntityType = getEntityType<S>> {\n // keep memory of the current ids to listen to (for syncManyDocs)\n private idsToListen: Record<string, string[]> = {};\n protected db: AngularFirestore;\n\n protected onCreate?(entity: EntityType, options: WriteOptions): any;\n protected onUpdate?(entity: Partial<EntityType>, options: WriteOptions): any;\n protected onDelete?(id: string, options: WriteOptions): any;\n\n constructor(\n protected store?: EntityStore<S>,\n private collectionPath?: string,\n db?: AngularFirestore\n ) {\n if (!hasChildGetter(this, CollectionService, 'path') && !this.constructor['path'] && !this.collectionPath) {\n throw new Error('You should provide a path to the collection');\n }\n try {\n this.db = db || inject(AngularFirestore);\n } catch (err) {\n throw new Error('CollectionService requires AngularFirestore.');\n }\n }\n\n protected getPath(options: PathParams) {\n return (options && options.params)\n ? pathWithParams(this.path, options.params)\n : this.currentPath;\n }\n\n get idKey() {\n return this.constructor['idKey']\n || this.store ? this.store.idKey : 'id';\n }\n\n /** The path to the collection in Firestore */\n get path(): string {\n return this.constructor['path'] || this.collectionPath;\n }\n\n /** A snapshot of the path */\n get currentPath(): string {\n if (isObservable(this.path)) {\n throw new Error('Cannot get a snapshot of the path if it is an Observable');\n }\n return this.path;\n }\n\n get resetOnUpdate(): boolean {\n return this.constructor['resetOnUpdate'] || false;\n }\n\n /**\n * The Angular Fire collection\n * @notice If path is an observable, it becomes an observable.\n */\n get collection(): AngularFirestoreCollection<EntityType> {\n return this.db.collection<EntityType>(this.currentPath);\n }\n\n /**\n * Function triggered when adding/updating data to firestore\n * @note should be overridden\n */\n public formatToFirestore(entity: Partial<EntityType>): any {\n return entity;\n }\n\n /**\n * Function triggered when getting data from firestore\n * @note should be overridden\n */\n public formatFromFirestore(entity: any): EntityType {\n return entity;\n }\n\n /**\n * Sync a store with a collection query of Firestore\n * @param path Path of the collection in Firestore\n * @param queryFn A query function to filter document of the collection\n * @param syncOptions Options about the store to sync with Firestore\n * @example\n * service.syncCollection({ storeName: 'movies-latest', loading: false }).subscribe();\n */\n syncCollection(\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n /**\n * @example\n * service.syncCollection(activePath$).subscribe();\n */\n syncCollection(\n path: string,\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n /**\n * @example\n * service.syncCollection(ref => ref.limit(10), { storeName: 'movie-latest'}).subscribe();\n */\n syncCollection(\n // tslint:disable-next-line: unified-signatures\n query: QueryFn,\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n /**\n * @example\n * service.syncCollection('movies', ref => ref.limit(10), { loading: false }).subscribe();\n */\n syncCollection(\n path: string,\n queryFn?: QueryFn,\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n syncCollection(\n pathOrQuery: string | QueryFn | Partial<SyncOptions> = this.currentPath,\n queryOrOptions?: QueryFn | Partial<SyncOptions>,\n syncOptions: Partial<SyncOptions> = { loading: true }\n ): Observable<DocumentChangeAction<EntityType>[]> {\n\n let path: string;\n let queryFn: QueryFn;\n // check type of pathOrQuery\n if (typeof pathOrQuery === 'function') {\n queryFn = pathOrQuery;\n path = this.getPath(queryOrOptions as Partial<SyncOptions>);\n } else if (typeof pathOrQuery === 'object') {\n syncOptions = pathOrQuery;\n path = this.getPath(syncOptions);\n } else if (typeof pathOrQuery === 'string') {\n path = pathOrQuery;\n } else {\n path = this.getPath(syncOptions);\n }\n\n // check type of queryOrOptions\n if (typeof queryOrOptions === 'function') {\n queryFn = queryOrOptions;\n } else if (typeof queryOrOptions === 'object') {\n syncOptions = queryOrOptions;\n }\n\n const storeName = getStoreName(this.store, syncOptions);\n\n // reset has to happen before setLoading, otherwise it will also reset the loading state\n if (syncOptions.reset) {\n resetStore(storeName);\n }\n\n if (syncOptions.loading) {\n setLoading(storeName, true);\n }\n // Start Listening\n return this.db.collection<EntityType>(path, queryFn).stateChanges().pipe(\n withTransaction(actions => syncStoreFromDocAction(storeName, actions, this.idKey, this.resetOnUpdate, (entity) => this.formatFromFirestore(entity)))\n );\n }\n\n /**\n * Sync a store with a collection group\n * @param collectionId An id of\n * @param queryFn A query function to filter document of the collection\n * @param syncOptions Options about the store to sync with Firestore\n */\n syncCollectionGroup(\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n syncCollectionGroup(\n // tslint:disable-next-line: unified-signatures\n queryGroupFn?: QueryGroupFn\n ): Observable<DocumentChangeAction<EntityType>[]>;\n syncCollectionGroup(\n collectionId: string,\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n syncCollectionGroup(\n collectionId: string,\n queryGroupFn?: QueryGroupFn,\n syncOptions?: Partial<SyncOptions>\n ): Observable<DocumentChangeAction<EntityType>[]>;\n syncCollectionGroup(\n idOrQuery: string | QueryGroupFn | Partial<SyncOptions> = this.currentPath,\n queryOrOption?: QueryGroupFn | Partial<SyncOptions>,\n syncOptions: Partial<SyncOptions> = { loading: true }\n ): Observable<DocumentChangeAction<EntityType>[]> {\n let path: string;\n let query: QueryFn;\n if (typeof idOrQuery === 'string') {\n path = idOrQuery;\n } else if (typeof idOrQuery === 'function') {\n path = this.currentPath;\n query = idOrQuery;\n } else if (typeof idOrQuery === 'object') {\n path = this.currentPath;\n syncOptions = idOrQuery;\n } else {\n throw new Error('1ier parameter if either a string, a queryFn or a StoreOption');\n }\n\n if (typeof queryOrOption === 'function') {\n query = queryOrOption;\n } else if (typeof queryOrOption === 'object') {\n syncOptions = queryOrOption;\n }\n\n const storeName = getStoreName(this.store, syncOptions);\n\n // reset has to happen before setLoading, otherwise it will also reset the loading state\n if (syncOptions.reset) {\n resetStore(storeName);\n }\n\n if (syncOptions.loading) {\n setLoading(storeName, true);\n }\n\n const collectionId = path.split('/').pop();\n return this.db.collectionGroup<EntityType>(collectionId, query).stateChanges().pipe(\n withTransaction(actions => syncStoreFromDocAction(storeName, actions, this.idKey, this.resetOnUpdate, (entity) => this.formatFromFirestore(entity)))\n );\n }\n\n /**\n * Sync the store with several documents\n * @param ids An array of ids or an observable of ids\n * @param syncOptions Options on the store to sync to\n */\n syncManyDocs(ids: string[], syncOptions?: Partial<SyncOptions>);\n /** @deprecated Use syncManyDocs inside a switchMap instead of passing an observable */\n // tslint:disable-next-line: unified-signatures\n syncManyDocs(ids$: Observable<string[]>, syncOptions?: Partial<SyncOptions>);\n syncManyDocs(\n ids$: string[] | Observable<string[]>,\n syncOptions: Partial<SyncOptions> = { loading: true }\n ) {\n if (!isObservable(ids$)) {\n ids$ = of(ids$);\n }\n const storeName = getStoreName(this.store, syncOptions);\n\n // reset has to happen before setLoading, otherwise it will also reset the loading state\n if (syncOptions.reset) {\n resetStore(storeName);\n }\n\n if (syncOptions.loading) {\n setLoading(storeName, true);\n }\n return ids$.pipe(\n switchMap((ids => {\n // Remove previous ids that have changed\n const previousIds = this.idsToListen[storeName];\n if (previousIds) {\n const idsToRemove = previousIds.filter(id => !ids.includes(id));\n removeStoreEntity(storeName, idsToRemove);\n }\n this.idsToListen[storeName] = ids;\n // Return empty array if no ids are provided\n if (!ids.length) {\n return of([]);\n }\n // Sync all docs\n const syncs = ids.map(id => {\n const path = `${this.getPath(syncOptions)}/${id}`;\n return this.db.doc<EntityType>(path).snapshotChanges();\n });\n return combineLatest(syncs).pipe(\n tap((actions) => actions.map(action => {\n syncStoreFromDocActionSnapshot(storeName, action, this.idKey, (entity) => this.formatFromFirestore(entity));\n }))\n );\n }))\n );\n }\n\n /**\n * Stay in sync with one document\n * @param docOptions An object with EITHER `id` OR `path`.\n * @note We need to use id and path because there is no way to differentiate them.\n * @param syncOptions Options on the store to sync to\n */\n syncDoc(\n docOptions: DocOptions,\n syncOptions: Partial<SyncOptions> = { loading: false }\n ) {\n const storeName = getStoreName(this.store, syncOptions);\n const collectionPath = this.getPath(syncOptions);\n const { id, path } = getIdAndPath(docOptions, collectionPath);\n\n // reset has to happen before setLoading, otherwise it will also reset the loading state\n if (syncOptions.reset) {\n resetStore(storeName);\n }\n\n if (syncOptions.loading) {\n setLoading(storeName, true);\n }\n return this.db.doc<EntityType>(path).valueChanges().pipe(\n map(entity => {\n if (!entity) {\n setLoading(storeName, false);\n // note: We don't removeEntity as it would result in weird behavior\n return undefined;\n }\n const data = this.formatFromFirestore({ [this.idKey]: id, ...entity });\n upsertStoreEntity(storeName, data, id);\n setLoading(storeName, false);\n return data;\n })\n );\n }\n\n /**\n * Stay in sync with the active entity and set it active in the store\n * @param options A list of ids or An object with EITHER `id` OR `path`.\n * @note We need to use id and path because there is no way to differentiate them.\n * @param syncOptions Options on the store to sync to\n */\n syncActive(\n options: S['active'] extends any[] ? string[] : DocOptions,\n syncOptions?: Partial<SyncOptions>\n ): S['active'] extends any[] ? Observable<EntityType[]> : Observable<EntityType>;\n syncActive(\n options: string[] | DocOptions,\n syncOptions?: Partial<SyncOptions>\n ): Observable<EntityType[] | EntityType> {\n const storeName = getStoreName(this.store, syncOptions);\n if (Array.isArray(options)) {\n return this.syncManyDocs(options, syncOptions).pipe(\n tap(_ => setActive(storeName, options))\n );\n } else {\n return this.syncDoc(options, syncOptions).pipe(\n tap(entity => entity ? setActive(storeName, entity[this.idKey]) : null)\n );\n }\n }\n\n ////////////////\n // SNAPSHOTS //\n ///////////////\n\n /** Return the reference of the document(s) or collection */\n public getRef(options?: Partial<SyncOptions>): firebase.firestore.CollectionReference;\n public getRef(ids?: string[], options?: Partial<SyncOptions>): firebase.firestore.DocumentReference[];\n public getRef(id?: string, options?: Partial<SyncOptions>): firebase.firestore.DocumentReference;\n public getRef(\n idOrQuery?: string | string[] | Partial<SyncOptions>,\n options: Partial<SyncOptions> = {}\n ): GetRefs<(typeof idOrQuery)> {\n const path = this.getPath(options);\n // If path targets a collection ( odd number of segments after the split )\n if (typeof idOrQuery === 'string') {\n return this.db.doc<EntityType>(`${path}/${idOrQuery}`).ref;\n }\n if (Array.isArray(idOrQuery)) {\n return idOrQuery.map(id => this.db.doc<EntityType>(`${path}/${id}`).ref);\n } else if (typeof idOrQuery === 'object') {\n const subpath = this.getPath(idOrQuery);\n return this.db.collection<EntityType>(subpath).ref;\n } else {\n return this.db.collection<EntityType>(path, idOrQuery).ref;\n }\n }\n\n\n /** Return the current value of the path from Firestore */\n public async getValue(options?: Partial<SyncOptions>): Promise<EntityType[]>;\n public async getValue(ids?: string[], options?: Partial<SyncOptions>): Promise<EntityType[]>;\n // tslint:disable-next-line: unified-signatures\n public async getValue(query?: QueryFn, options?: Partial<SyncOptions>): Promise<EntityType[]>;\n public async getValue(id: string, options?: Partial<SyncOptions>): Promise<EntityType>;\n public async getValue(\n idOrQuery?: string | string[] | QueryFn | Partial<SyncOptions>,\n options: Partial<SyncOptions> = {}\n ): Promise<EntityType | EntityType[]> {\n const path = this.getPath(options);\n // If path targets a collection ( odd number of segments after the split )\n if (typeof idOrQuery === 'string') {\n const snapshot = await this.db.doc<EntityType>(`${path}/${idOrQuery}`).ref.get();\n return snapshot.exists\n ? this.formatFromFirestore({ ...snapshot.data(), [this.idKey]: snapshot.id })\n : null;\n }\n let docs: firebase.firestore.QueryDocumentSnapshot[];\n if (Array.isArray(idOrQuery)) {\n docs = await Promise.all(idOrQuery.map(id => {\n return this.db.doc<EntityType>(`${path}/${id}`).ref.get();\n }));\n } else if (typeof idOrQuery === 'function') {\n const { ref } = this.db.collection(path);\n const snaphot = await idOrQuery(ref).get();\n docs = snaphot.docs;\n } else if (typeof idOrQuery === 'object') {\n const subpath = this.getPath(idOrQuery);\n const snapshot = await this.db.collection(subpath).ref.get();\n docs = snapshot.docs;\n } else {\n const snapshot = await this.db.collection(path, idOrQuery).ref.get();\n docs = snapshot.docs;\n }\n return docs.filter(doc => doc.exists)\n .map(doc => {\n return { ...doc.data(), [this.idKey]: doc.id };\n })\n .map(doc => this.formatFromFirestore(doc));\n }\n\n\n /** Listen to the change of values of the path from Firestore */\n public valueChanges(options?: Partial<PathParams>): Observable<EntityType[]>;\n public valueChanges(ids?: string[], options?: Partial<PathParams>): Observable<EntityType[]>;\n // tslint:disable-next-line: unified-signatures\n public valueChanges(query?: QueryFn, options?: Partial<PathParams>): Observable<EntityType[]>;\n public valueChanges(id: string, options?: Partial<PathParams>): Observable<EntityType>;\n public valueChanges(\n idOrQuery?: string | string[] | QueryFn | Partial<PathParams>,\n options: Partial<PathParams> = {}\n ): Observable<EntityType | EntityType[]> {\n const path = this.getPath(options);\n // If path targets a collection ( odd number of segments after the split )\n if (typeof idOrQuery === 'string') {\n return this.db.doc<EntityType>(`${path}/${idOrQuery}`).valueChanges().pipe(\n map(doc => this.formatFromFirestore(doc))\n );\n }\n let docs$: Observable<EntityType[]>;\n if (Array.isArray(idOrQuery)) {\n docs$ = idOrQuery.length\n ? combineLatest(idOrQuery.map(id => this.db.doc<EntityType>(`${path}/${id}`).valueChanges()))\n : of([]);\n } else if (typeof idOrQuery === 'function') {\n docs$ = this.db.collection<EntityType>(path, idOrQuery).valueChanges();\n } else if (typeof idOrQuery === 'object') {\n const subpath = this.getPath(idOrQuery);\n docs$ = this.db.collection<EntityType>(subpath).valueChanges();\n } else {\n docs$ = this.db.collection<EntityType>(path, idOrQuery).valueChanges();\n }\n return docs$.pipe(\n map(docs => docs.map(doc => this.formatFromFirestore(doc)))\n );\n }\n\n ///////////\n // WRITE //\n ///////////\n\n /**\n * Create a batch object.\n * @note alias for `angularFirestore.firestore.batch()`\n */\n batch() {\n return this.db.firestore.batch();\n }\n\n /**\n * Run a transaction\n * @note alias for `angularFirestore.firestore.runTransaction()`\n */\n runTransaction(cb: Parameters<firebase.firestore.Firestore['runTransaction']>[0]) {\n return this.db.firestore.runTransaction(tx => cb(tx));\n }\n\n /**\n * Create or update documents\n * @param documents One or many documents\n * @param options options to write the document on firestore\n */\n async upsert<D extends (Partial<EntityType> | Partial<EntityType>[])>(\n documents: D,\n options: WriteOptions = {}\n ): Promise<D extends (infer I)[] ? string[] : string> {\n const doesExist = async (doc: Partial<EntityType>) => {\n const ref = this.getRef(doc[this.idKey] as string);\n const { exists } = await (isTransaction(options.write) ? options.write.get(ref) : ref.get());\n return exists;\n };\n if (!isArray(documents)) {\n return (await doesExist(documents as Partial<EntityType>))\n ? this.update(documents, options).then(_ => documents[this.idKey])\n : this.add(documents, options);\n }\n\n const toAdd = [];\n const toUpdate = [];\n for (const doc of documents) {\n (await doesExist(doc))\n ? toUpdate.push(doc)\n : toAdd.push(doc);\n }\n return Promise.all([\n this.add(toAdd, options),\n this.update(toUpdate, options).then(_ => toUpdate.map(doc => doc[this.idKey] as string))\n ]).then(([added, updated]) => added.concat(updated) as any);\n }\n\n /**\n * Add a document or a list of document to Firestore\n * @param docs A document or a list of document\n * @param options options to write the document on firestore\n */\n async add<D extends (Partial<EntityType> | Partial<EntityType>[])>(\n documents: D,\n options: WriteOptions = {}\n ): Promise<D extends (infer I)[] ? string[] : string> {\n const docs: Partial<EntityType>[] = (Array.isArray(documents) ? documents : [documents]) as any;\n const { write = this.batch(), ctx } = options;\n const path = this.getPath(options);\n const operations = docs.map(async doc => {\n const id = doc[this.idKey] || this.db.createId();\n const data = this.formatToFirestore({ ...doc, [this.idKey]: id });\n const { ref } = this.db.doc(`${path}/${id}`);\n (write as firebase.firestore.WriteBatch).set(ref, (data));\n if (this.onCreate) {\n await this.onCreate(data, { write, ctx });\n }\n return id;\n });\n const ids = await Promise.all(operations);\n // If there is no atomic write provided\n if (!options.write) {\n await (write as firebase.firestore.WriteBatch).commit();\n }\n return Array.isArray(documents) ? ids : ids[0];\n }\n\n /**\n * Remove one or several document from Firestore\n * @param id A unique or list of id representing the document\n * @param options options to write the document on firestore\n */\n async remove(id: string | string[], options: WriteOptions = {}) {\n const { write = this.batch(), ctx } = options;\n const path = this.getPath(options);\n const ids: string[] = Array.isArray(id) ? id : [id];\n\n const operations = ids.map(async docId => {\n const { ref } = this.db.doc(`${path}/${docId}`);\n write.delete(ref);\n if (this.onDelete) {\n await this.onDelete(docId, { write, ctx });\n }\n });\n await Promise.all(operations);\n // If there is no atomic write provided\n if (!options.write) {\n return (write as firebase.firestore.WriteBatch).commit();\n }\n }\n\n /** Remove all document of the collection */\n async removeAll(options: WriteOptions = {}) {\n const path = this.getPath(options);\n const snapshot = await this.db.collection(path).ref.get();\n const ids = snapshot.docs.map(doc => doc.id);\n return this.remove(ids, options);\n }\n\n /**\n * Update one or several document in Firestore\n */\n update(entity: Partial<EntityType> | Partial<EntityType>[], options?: WriteOptions): Promise<void>;\n update(id: string | string[], entityChanges: Partial<EntityType>, options?: WriteOptions): Promise<void>;\n update(ids: string | string[], stateFunction: UpdateCallback<EntityType>, options?: WriteOptions): Promise<firebase.firestore.Transaction[]>;\n async update(\n idsOrEntity: Partial<EntityType> | Partial<EntityType>[] | string | string[],\n stateFnOrWrite?: UpdateCallback<EntityType> | Partial<EntityType> | WriteOptions,\n options: WriteOptions = {}\n ): Promise<void | firebase.firestore.Transaction[]> {\n\n let ids: string[] = [];\n let stateFunction: UpdateCallback<EntityType>;\n let getData: (docId: string) => Partial<EntityType>;\n\n const isEntity = (value): value is Partial<EntityType> => {\n return typeof value === 'object' && value[this.idKey];\n };\n const isEntityArray = (values): values is Partial<EntityType>[] => {\n return Array.isArray(values) && values.every(value => isEntity(value));\n };\n\n if (isEntity(idsOrEntity)) {\n ids = [idsOrEntity[this.idKey]];\n getData = () => idsOrEntity;\n options = stateFnOrWrite as WriteOptions || {};\n } else if (isEntityArray(idsOrEntity)) {\n const entityMap = new Map(idsOrEntity.map(entity => [entity[this.idKey] as string, entity]));\n ids = Array.from(entityMap.keys());\n getData = docId => entityMap.get(docId);\n options = stateFnOrWrite as WriteOptions || {};\n } else if (typeof stateFnOrWrite === 'function') {\n ids = Array.isArray(idsOrEntity) ? idsOrEntity : [idsOrEntity];\n stateFunction = stateFnOrWrite as UpdateCallback<EntityType>;\n } else if (typeof stateFnOrWrite === 'object') {\n ids = Array.isArray(idsOrEntity) ? idsOrEntity : [idsOrEntity];\n getData = () => stateFnOrWrite as Partial<EntityType>;\n } else {\n throw new Error('Passed parameters match none of the function signatures.');\n }\n\n const { ctx } = options;\n const path = this.getPath(options);\n\n if (!Array.isArray(ids) || !ids.length) {\n return;\n }\n\n // If update depends on the entity, use transaction\n if (stateFunction) {\n return this.db.firestore.runTransaction(async tx => {\n const operations = ids.map(async id => {\n const { ref } = this.db.doc(`${path}/${id}`);\n const snapshot = await tx.get(ref);\n const doc = Object.freeze({ ...snapshot.data(), [this.idKey]: id } as EntityType);\n const data = stateFunction(doc, tx);\n tx.update(ref, this.formatToFirestore(data));\n if (this.onUpdate) {\n await this.onUpdate(data, { write: tx, ctx });\n }\n return tx;\n });\n return Promise.all(operations);\n });\n } else {\n const { write = this.batch() } = options;\n const operations = ids.map(async docId => {\n const doc = Object.freeze(getData(docId));\n if (!docId) {\n throw new Error(`Document should have an unique id to be updated, but none was found in ${doc}`);\n }\n const { ref } = this.db.doc(`${path}/${docId}`);\n write.update(ref, this.formatToFirestore(doc));\n if (this.onUpdate) {\n await this.onUpdate(doc, { write, ctx });\n }\n });\n await Promise.all(operations);\n // If there is no atomic write provided\n if (!options.write) {\n return (write as firebase.firestore.WriteBatch).commit();\n }\n return;\n }\n }\n}\n","\nexport interface CollectionOptions {\n /** The path of the collection in Firestore */\n path: string;\n /** The key to use as an id for the document in Firestore. Default is store.idKey */\n idKey?: string;\n /** \n * If true we will remove the entity from the store \n * and add a new one in other to make sure\n * to get the rid of the any old keys that maybe still persist.\n */\n resetOnUpdate: boolean;\n}\n\n/** Set the configuration for the collection service */\nexport function CollectionConfig(options: Partial<CollectionOptions> = {}) {\n return (constructor) => {\n Object.keys(options).forEach(key => constructor[key] = options[key]);\n };\n}\n","export interface FireAuthState<P = any> {\n uid: string;\n emailVerified: boolean;\n profile: P;\n loading: boolean;\n [key: string]: any;\n}\n\nexport interface RoleState<R = Record<string, any>> {\n roles: R;\n}\n\nexport const initialAuthState: FireAuthState = {\n uid: null,\n emailVerified: undefined,\n profile: null,\n loading: false\n};\n","import { inject } from '@angular/core';\nimport { AngularFireAuth } from '@angular/fire/auth';\nimport { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore';\nimport firebase from 'firebase/app';\nimport { switchMap, tap, map } from 'rxjs/operators';\nimport { Observable, of, combineLatest } from 'rxjs';\nimport { Store } from '@datorama/akita';\nimport { FireAuthState, initialAuthState } from './auth.model';\nimport { WriteOptions, UpdateCallback } from '../utils/types';\n\nexport const authProviders = ['github', 'google', 'microsoft', 'facebook', 'twitter', 'email', 'apple'] as const;\n\nexport type FireProvider = (typeof authProviders)[number];\ntype UserCredential = firebase.auth.UserCredential;\ntype AuthProvider = firebase.auth.AuthProvider;\n\n/** Verify if provider is part of the list of Authentication provider provided by Firebase Auth */\nexport function isFireAuthProvider(provider: any): provider is FireProvider {\n return typeof provider === 'string' && authProviders.includes(provider as any);\n}\n\n/**\n * Get the custom claims of a user. If no key is provided, return the whole claims object\n * @param user The user object returned by Firebase Auth\n * @param roles Keys of the custom claims inside the claim objet\n */\nexport async function getCustomClaims(user: firebase.User, roles?: string | string[]): Promise<Record<string, any>> {\n const { claims } = await user.getIdTokenResult();\n if (!roles) {\n return claims;\n }\n const keys = Array.isArray(roles) ? roles : [roles];\n return Object.keys(claims)\n .filter(key => keys.includes(key))\n .reduce((acc, key) => {\n acc[key] = claims[key];\n return acc;\n }, {});\n}\n\n/**\n * Get the Authentication Provider based on its name\n * @param provider string literal representing the name of the provider\n */\nexport function getAuthProvider(provider: FireProvider) {\n switch (provider) {\n case 'email': return new firebase.auth.EmailAuthProvider();\n case 'facebook': return new firebase.auth.FacebookAuthProvider();\n case 'github': return new firebase.auth.GithubAuthProvider();\n case 'google': return new firebase.auth.GoogleAuthProvider();\n case 'microsoft': return new firebase.auth.OAuthProvider('microsoft.com');\n case 'twitter': return new firebase.auth.TwitterAuthProvider();\n case 'apple': return new firebase.auth.OAuthProvider('apple');\n }\n}\n\nexport class FireAuthService<S extends FireAuthState> {\n\n private collection: AngularFirestoreCollection<S['profile']>;\n protected collectionPath = 'users';\n protected db: AngularFirestore;\n public auth: AngularFireAuth;\n /** Triggered when the profile has been created */\n protected onCreate?(profile: S['profile'], options: WriteOptions): any;\n /** Triggered when the profile has been updated */\n protected onUpdate?(profile: S['profile'], options: WriteOptions): any;\n /** Triggered when the profile has been deleted */\n protected onDelete?(options: WriteOptions): any;\n /** Triggered when user signin for the first time or signup with email & password */\n protected onSignup?(user: UserCredential, options: WriteOptions): any;\n /** Triggered when a user signin, except for the first time @see onSignup */\n protected onSignin?(user: UserCredential): any;\n /** Triggered when a user signout */\n protected onSignout?(): any;\n\n constructor(\n protected store: Store<S>,\n db?: AngularFirestore,\n auth?: AngularFireAuth\n ) {\n this.db = db || inject(AngularFirestore);\n this.auth = auth || inject(AngularFireAuth);\n this.collection = this.db.collection(this.path);\n }\n\n /**\n * Select the profile in the Firestore\n * @note can be override to point to a different place\n */\n protected selectProfile(user: firebase.User): Observable<S['profile']> {\n return this.collection.doc<S['profile']>(user.uid).valueChanges();\n }\n\n /**\n * Select the roles for this user. Can be in custom claims or in a Firestore collection\n * @param user The user given by FireAuth\n * @see getCustomClaims to get the custom claims out of the user\n * @note Can be overwritten\n */\n protected selectRoles(user: firebase.User): Promise<S['roles']> | Observable<S['roles']> {\n return of(null);\n }\n\n /**\n * Function triggered when getting data from firestore\n * @note should be overwritten\n */\n protected formatFromFirestore(user: any): S['profile'] {\n return user;\n }\n\n /**\n * Function triggered when adding/updating data to firestore\n * @note should be overwritten\n */\n protected formatToFirestore(user: S['profile']): any {\n return user;\n }\n\n /**\n * Function triggered when transforming a user into a profile\n * @param user The user object from FireAuth\n * @param ctx The context given on signup\n * @note Should be override\n */\n protected createProfile(user: firebase.User, ctx?: any): Promise<Partial<S['profile']>> | Partial<S['profile']> {\n return {\n photoURL: user.photoURL,\n displayName: user.displayName,\n } as any;\n }\n\n /**\n * The current sign-in user (or null)\n * @returns a Promise in v6.*.* & a snapshot in v5.*.*\n */\n get user() {\n return this.auth.currentUser;\n }\n\n get idKey() {\n return this.constructor['idKey'] || 'id';\n }\n\n /** The path to the profile in firestore */\n get path() {\n return this.constructor['path'] || this.collectionPath;\n }\n\n\n /** Start listening on User */\n sync() {\n return this.auth.authState.pipe(\n switchMap((user) => user ? combineLatest([\n of(user),\n this.selectProfile(user),\n this.selectRoles(user),\n ]) : of([undefined, undefined, undefined])),\n tap(([user = {}, userProfile, roles]) => {\n const profile = this.formatFromFirestore(userProfile);\n const { uid, emailVerified } = user;\n this.store.update({ uid, emailVerified, profile, roles } as any);\n }),\n map(([user, userProfile, roles]) => user ? [user, this.formatFromFirestore(userProfile), roles] : null),\n );\n }\n\n /**\n * @description Delete user from authentication service and database\n * WARNING This is security sensitive operation\n */\n async delete(options: WriteOptions = {}) {\n const user = await this.user;\n if (!user) {\n throw new Error('No user connected');\n }\n const { write = this.db.firestore.batch(), ctx } = options;\n const { ref } = this.collection.doc(user.uid);\n write.delete(ref);\n if (this.onDelete) {\n await this.onDelete({ write, ctx });\n }\n if (!options.write) {\n await (write as firebase.firestore.WriteBatch).commit();\n }\n return user.delete();\n }\n\n /** Update the current profile of the authenticated user */\n async update(\n profile: Partial<S['profile']> | UpdateCallback<S['profile']>,\n options: WriteOptions = {}\n ) {\n const user = await this.user;\n if (!user.uid) {\n throw new Error('No user connected.');\n }\n const { ref } = this.collection.doc(user.uid);\n if (typeof profile === 'function') {\n return this.db.firestore.runTransaction(async tx => {\n const snapshot = await tx.get(ref);\n const doc = Object.freeze({ ...snapshot.data(), [this.idKey]: snapshot.id });\n const data = (profile as UpdateCallback<S['profile']>)(this.formatToFirestore(doc), tx);\n tx.update(ref, data);\n if (this.onUpdate) {\n await this.onUpdate(data, { write: tx, ctx: options.ctx });\n }\n return tx;\n });\n } else if (typeof profile === 'object') {\n const { write = this.db.firestore.batch(), ctx } = options;\n write.update(ref, this.formatToFirestore(profile));\n if (this.onUpdate) {\n await this.onUpdate(profile, { write, ctx });\n }\n // If there is no atomic write provided\n if (!options.write) {\n return (write as firebase.firestore.WriteBatch).commit();\n }\n }\n }\n\n /** Create a user based on email and password */\n async signup(email: string, password: string, options: WriteOptions = {}): Promise<UserCredential> {\n const cred = await this.auth.createUserWithEmailAndPassword(email, password);\n const { write = this.db.firestore.batch(), ctx } = options;\n if (this.onSignup) {\n await this.onSignup(cred, { write, ctx });\n }\n const profile = await this.createProfile(cred.user, ctx);\n const { ref } = this.collection.doc(cred.user.uid);\n (write as firebase.firestore.WriteBatch).set(ref, this.formatToFirestore(profile));\n if (this.onCreate) {\n await this.onCreate(profile, { write, ctx });\n }\n if (!options.write) {\n await (write as firebase.firestore.WriteBatch).commit();\n }\n return cred;\n }\n\n /** Signin with email & password, provider name, provider objet or custom token */\n // tslint:disable-next-line: unified-signatures\n signin(email: string, password: string, options?: WriteOptions): Promise<UserCredential>;\n signin(authProvider: AuthProvider, options?: WriteOptions): Promise<UserCredential>;\n signin(provider?: FireProvider, options?: WriteOptions): Promise<UserCredential>;\n // tslint:disable-next-line: unified-signatures\n signin(token: string, options?: WriteOptions): Promise<UserCredential>;\n async signin(provider?: FireProvider | AuthProvider | string, passwordOrOptions?: string | WriteOptions): Promise<UserCredential> {\n this.store.setLoading(true);\n let profile;\n try {\n let cred: UserCredential;\n const write = this.db.firestore.batch();\n if (!provider) {\n cred = await this.auth.signInAnonymously();\n } else if (passwordOrOptions && typeof provider === 'string' && typeof passwordOrOptions === 'string') {\n cred = await this.auth.signInWithEmailAndPassword(provider, passwordOrOptions);\n } else if (typeof provider === 'object') {\n cred = await this.auth.signInWithPopup(provider);\n } else if (isFireAuthProvider(provider)) {\n const authProvider = getAuthProvider(provider);\n cred = await this.auth.signInWithPopup(authProvider);\n } else {\n cred = await this.auth.signInWithCustomToken(provider);\n }\n if (cred.additionalUserInfo.isNewUser) {\n if (this.onSignup) {\n await this.onSignup(cred, {});\n }\n profile = await this.createProfile(cred.user);\n this.store.update({ profile } as S['profile']);\n const { ref } = this.collection.doc(cred.user.uid);\n write.set(ref, this.formatToFirestore(profile));\n if (this.onCreate) {\n if (typeof passwordOrOptions === 'object') {\n await this.onCreate(profile, { write, ctx: passwordOrOptions.ctx });\n } else {\n await this.onCreate(profile, { write, ctx: {} });\n }\n }\n await write.commit();\n } else {\n try {\n const collection = this.collection.doc(cred.user.uid);\n const document = await collection.get().toPromise();\n const { uid, emailVerified } = cred.user;\n if (document.exists) {\n profile = this.formatFromFirestore(document.data());\n } else {\n profile = await this.createProfile(cred.user);\n write.set(collection.ref, this.formatToFirestore(profile));\n write.commit();\n }\n this.store.update({ profile, uid, emailVerified } as any);\n } catch (error) {\n console.error(error);\n }\n }\n if (this.onSignin) {\n await this.onSignin(cred);\n }\n this.store.setLoading(false);\n return cred;\n } catch (err) {\n this.store.setLoading(false);\n if (err.code === 'auth/operation-not-allowed') {\n console.warn('You tried to connect with a disabled auth provider. Enable it in Firebase console');\n }\n throw err;\n }\n }\n\n /** Signs out the current user and clear the store */\n async signOut() {\n await this.auth.signOut();\n this.store.update(initialAuthState as Partial<S>);\n if (this.onSignout) {\n await this.onSignout();\n }\n }\n}\n","import { inject } from '@angular/core';\nimport {\n CanActivate,\n CanDeactivate,\n Router,\n UrlTree,\n ActivatedRouteSnapshot,\n RouterStateSnapshot\n} from '@angular/router';\nimport { Subscription, Observable, Subject } from 'rxjs';\nimport { CollectionService } from './collection.service';\nimport { FireAuthService } from '../auth/auth.service';\nimport { QueryFn } from '@angular/fire/firestore';\nimport { EntityState } from '@datorama/akita';\nimport { takeUntil } from 'rxjs/operators';\nimport { FireAuthState } from '../auth/auth.model';\n\nexport interface CollectionRouteData {\n queryFn: QueryFn;\n redirect: string;\n awaitSync: boolean;\n}\n\nexport function CollectionGuardConfig(data: Partial<CollectionRouteData>) {\n return constructor => {\n Object.keys(data).forEach(key => (constructor[key] = data[key]));\n };\n}\n\ntype GuardService<S extends EntityState<any> | FireAuthState> = S extends FireAuthState\n ? FireAuthService<S> : S extends EntityState\n ? CollectionService<S> : never;\n\nexport class CollectionGuard<S extends EntityState<any> | FireAuthState = any>\n implements CanActivate, CanDeactivate<any> {\n private subscription: Subscription;\n protected router: Router;\n\n constructor(protected service: GuardService<S>) {\n try {\n this.router = inject(Router);\n } catch (err) {\n throw new Error('CollectionGuard requires RouterModule to be imported');\n }\n }\n\n // Can be override by the extended class\n /** Should the guard wait for connection to Firestore to complete */\n protected get awaitSync(): boolean {\n return this.constructor['awaitSync'] || false;\n }\n\n // Can be override by the extended class\n /** A queryFn to execute for sync */\n protected get queryFn(): QueryFn {\n return this.constructor['queryFn'];\n }\n // Can be override by the extended class\n /** The route to redirect to if you sync failed */\n protected get redirect(): string {\n return this.constructor['redirect'];\n }\n\n // Can be override by the extended class\n /** The method to subscribe to while route is active */\n protected sync(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {\n const { queryFn = this.queryFn } = next.data as CollectionRouteData;\n if (this.service instanceof FireAuthService) {\n return this.service.sync();\n } else if (this.service instanceof CollectionService) {\n return this.service.syncCollection(queryFn);\n }\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const {\n redirect = this.redirect,\n awaitSync = this.awaitSync\n } = next.data as CollectionRouteData;\n return new Promise((res, rej) => {\n if (awaitSync) {\n const unsubscribe = new Subject();\n this.subscription = this.sync(next, state).pipe(\n takeUntil(unsubscribe),\n ).subscribe({\n next: (result) => {\n if (result instanceof UrlTree) {\n return res(result);\n }\n switch (typeof result) {\n case 'string':\n unsubscribe.next();\n unsubscribe.complete();\n return res(this.router.parseUrl(result));\n case 'boolean':\n return res(result);\n default:\n return res(true);\n }\n },\n error: (err) => {\n res(this.router.parseUrl(redirect || ''));\n throw new Error(err);\n }\n });\n } else {\n this.subscription = this.sync(next, state).subscribe();\n res(true);\n }\n });\n }\n\n canDeactivate(): boolean {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n return true;\n }\n}\n","import { inject } from '@angular/core';\nimport { EntityStore, EntityState, withTransaction, getEntityType } from '@datorama/akita';\nimport { AngularFirestore, QueryGroupFn } from '@angular/fire/firestore';\nimport { setLoading, syncStoreFromDocAction, resetStore } from '../utils/sync-from-action';\nimport { getStoreName } from '../utils/store-options';\nimport { Observable } from 'rxjs';\nimport { SyncOptions } from '../utils/types';\n\n/** @deprecated Use CollectionService instead */\nexport abstract class CollectionGroupService<S extends EntityState> {\n protected db: AngularFirestore;\n abstract collectionId: string;\n\n constructor(protected store?: EntityStore<S>) {\n try {\n this.db = inject(AngularFirestore);\n } catch (err) {\n throw new Error('CollectionGroupService requires AngularFirestore.');\n }\n }\n\n /**\n * Function triggered when getting data from firestore\n * @note should be overrided\n */\n protected formatFromFirestore(entity: any): getEntityType<S> {\n return entity;\n }\n\n get idKey() {\n if (this.store) {\n return this.store.idKey;\n }\n }\n\n get resetOnUpdate(): boolean {\n return this.constructor['resetOnUpdate'] || false;\n }\n\n /** Sync the collection group with the store */\n public syncCollection(queryGroupFn?: QueryGroupFn | Partial<SyncOptions>);\n public syncCollection(queryGroupFn: QueryGroupFn, storeOptions?: Partial<SyncOptions>);\n public syncCollection(\n queryOrOptions?: QueryGroupFn | Partial<SyncOptions>,\n storeOptions: Partial<SyncOptions> = { loading: true }\n ): Observable<any> {\n let query: QueryGroupFn;\n if (typeof queryOrOptions === 'function') {\n query = queryOrOptions;\n } else if (typeof queryOrOptions === 'object') {\n storeOptions = queryOrOptions;\n }\n\n const storeName = getStoreName(this.store, storeOptions);\n\n // reset has to happen before setLoading, otherwise it will also reset the loading state\n if (storeOptions.reset) {\n resetStore(storeName);\n }\n\n if (storeOptions.loading) {\n setLoading(storeName, true);\n }\n\n return this.db.collectionGroup(this.collectionId, query).stateChanges().pipe(\n withTransaction(actions => syncStoreFromDocAction(storeName, actions, this.idKey, this.resetOnUpdate, (entity) => this.formatFromFirestore(entity)))\n );\n }\n\n /** Return a snapshot of the collection group */\n public async getValue(queryGroupFn?: QueryGroupFn): Promise<getEntityType<S>[]> {\n const snapshot = await this.db.collectionGroup(this.collectionId, queryGroupFn).get().toPromise();\n return snapshot.docs.map(doc => {\n const entity = doc.data() as getEntityType<S>;\n return this.formatFromFirestore(entity);\n })\n }\n}\n","export type Role = 'read' | 'get' | 'list' | 'write' | 'create' | 'update' | 'delete';\nexport type RolesState = Record<string, Role[]>;\n\nexport function canWrite(write: 'create' | 'update' | 'delete', roles: Role[]) {\n return roles.some(role => role === write || role === 'write');\n}\nexport function canRead(read: 'get' | 'list', roles: Role[]) {\n return roles.some(role => role === read || role === 'write');\n}\n\n\nexport function hasRole(role: Role, roles: Role[]) {\n switch (role) {\n case 'write': return roles.includes('write');\n case 'create': return canWrite('create', roles);\n case 'delete': return canWrite('delete', roles);\n case 'update': return canWrite('update', roles);\n case 'read': return roles.includes('read');\n case 'get': return canRead('get', roles);\n case 'list': return canRead('list', roles);\n default: return false;\n }\n}\n","import { Observable, race } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface ShouldCancelOptions {\n validate: Observable<any>;\n cancel: Observable<any>;\n}\n\nexport interface WaitForCancelOptions {\n startWith: () => void;\n endWith: (cancelled: boolean) => void;\n shouldValidate: Observable<any>;\n shouldCancel: Observable<any>;\n}\n\nexport function shouldCancel({ validate, cancel }: ShouldCancelOptions) {\n return race([validate.pipe(map(_ => false)), cancel.pipe(map(_ => true))]);\n}\n\nexport async function waitForCancel({\n startWith,\n endWith,\n shouldValidate,\n shouldCancel\n}: WaitForCancelOptions) {\n startWith();\n const cancelled = await race([\n shouldValidate.pipe(map(_ => false)),\n shouldCancel.pipe(map(_ => true))\n ]).toPromise();\n endWith(cancelled);\n}\n","import { map } from 'rxjs/operators';\nimport { DocumentChangeAction } from '@angular/fire/firestore';\n\n/**\n * @description Custom RxJs operator\n * @param redirectTo Route path to redirecto if collection is empty\n */\nexport function redirectIfEmpty<E = any>(redirectTo: string) {\n return map((actions: DocumentChangeAction<E>[]) => actions.length === 0 ? redirectTo : true);\n}\n","import { getPathParams } from './path-with-params';\nimport { CollectionService, CollectionState } from '../collection/collection.service';\nimport { distinctUntilChanged, filter, switchMap, share } from 'rxjs/operators';\nimport { RouterQuery } from '@datorama/akita-ng-router-store';\nimport { Observable } from 'rxjs';\nimport { DocumentChangeAction } from '@angular/fire/firestore';\n\nexport function syncWithRouter<Service extends CollectionService<CollectionState<E>>, E>(\n this: Service,\n routerQuery: RouterQuery\n): Observable<DocumentChangeAction<E>[]> {\n if (!this['store'].resettable) {\n throw new Error(`Store ${this['store'].storeName} is required to be resettable for syncWithRouter to work.`);\n }\n\n const pathParams = getPathParams(this.path);\n return routerQuery.selectParams<string>().pipe(\n // Don't trigger change if params needed (and only them) haven't changed\n distinctUntilChanged((old, next) => {\n const paramsHaveChanged = !!pathParams.find(param => old[param] !== next[param]);\n // reset store on every parameter change\n if (paramsHaveChanged) {\n this['store'].reset();\n }\n return !paramsHaveChanged;\n }),\n // Need to filter because changes in params comes before canDeactivate\n filter(params => pathParams.every(param => !!params[param])),\n switchMap(params => this.syncCollection({ params })),\n share()\n );\n}\n","import { SubQueries, Query } from './types';\nimport { QueryFn } from '@angular/fire/firestore';\n\nexport const queryKeys = ['path', 'queryFn'];\n\nexport function getSubQueryKeys(query: Query<any>) {\n const keys = Object.keys(query);\n return keys.filter(key => !queryKeys.includes(key));\n}\n\nexport function hasSubQueries(query: Query<any>) {\n return getSubQueryKeys(query).length > 0;\n}\n\nexport function getSubQuery<E, K extends keyof E>(query: SubQueries<E>[K], parent: E): SubQueries<E>[K] {\n if (typeof query !== 'function') {\n return query;\n }\n return query(parent);\n}\n\n\nexport function isDocPath(path: string) {\n return path.split('/').length % 2 === 0;\n}\n\n/** Transform a path into a collection Query */\nexport function collection<T = any>(path: string, queryFn?: QueryFn): Query<T[]> {\n return { path, queryFn } as Query<T[]>;\n}\n\n/** Transform a path into a doc query */\nexport function doc<T = any>(path: string): Query<T> {\n return { path } as Query<T>;\n}\n\n/** Check if a value is a query */\nexport function isQuery<T>(query: any): query is Query<T> {\n if (typeof query === 'object' && query !== null) {\n return !!query['path'];\n }\n return false;\n}\n","import { DocumentChangeAction } from '@angular/fire/firestore';\nimport { arrayUpdate, arrayAdd, arrayRemove, withTransaction, arrayUpsert } from '@datorama/akita';\nimport { CollectionService, CollectionState } from '../../collection/collection.service';\nimport { getIdAndPath } from '../id-or-path';\nimport { Query, SubQueries, CollectionChild, SubscriptionMap } from './types';\nimport { isDocPath, isQuery, getSubQuery } from './utils';\nimport { Observable, combineLatest, Subscription, of } from 'rxjs';\nimport { tap, finalize } from 'rxjs/operators';\n\n\n\n\n/**\n * Sync the collection\n * @param this Uses this function with bind on a Collection Service\n * @param query The query to trigger\n */\nexport function syncQuery<E>(\n this: CollectionService<CollectionState<E>>,\n query: Query<E>\n): Observable<any> {\n\n // If single query\n if (typeof query === 'string') {\n return isDocPath(query)\n ? this.syncDoc({ path: query })\n : this.syncCollection(query);\n }\n\n if (Array.isArray(query)) {\n return combineLatest(query.map(oneQuery => syncQuery.call(this, oneQuery)));\n }\n\n if (!isQuery(query)) {\n throw new Error('Query should be either a path, a Query object or an array of Queries');\n }\n\n\n ////////////////\n // SUBQUERIES //\n ////////////////\n\n /** Listen on Child actions */\n const fromChildAction = (actions: DocumentChangeAction<any>[], child: CollectionChild<E>) => {\n const idKey = 'id'; // TODO: Improve how to\n const { parentId, key } = child;\n for (const action of actions) {\n const id = action.payload.doc.id;\n const data = action.payload.doc.data();\n\n switch (action.type) {\n case 'added': {\n this['store'].update(parentId as any, (entity) => ({\n [key]: arrayUpsert(entity[key] as any || [], id, data, idKey)\n }) as any);\n break;\n }\n case 'removed': {\n this['store'].update(parentId as any, (entity) => ({\n [key]: arrayRemove(entity[key] as any, id, idKey)\n }) as any);\n break;\n }\n case 'modified': {\n this['store'].update(parentId as any, (entity) => ({\n [key]: arrayUpdate(entity[key] as any, id, data, idKey)\n }) as any);\n }\n }\n }\n };\n\n /**\n * Stay in sync a subquery of the collection\n * @param subQuery The sub query based on the entity\n * @param child An object that describe the parent\n */\n const syncSubQuery = <K extends keyof E>(\n subQuery: SubQueries<E>[K],\n child: CollectionChild<E>\n ): Observable<unknown> => {\n const { parentId, key } = child;\n // If it's a static value\n // TODO : Check if subQuery is a string ???\n if (!isQuery(subQuery)) {\n const update = this['store'].update(parentId as any, {[key]: subQuery} as any);\n return of(update);\n }\n\n if (Array.isArray(subQuery)) {\n const syncQueries = subQuery.map(oneQuery => {\n if (isQuery(subQuery)) {\n const id = getIdAndPath({ path: subQuery.path });\n return this['db'].doc<E[K]>(subQuery.path).valueChanges().pipe(\n tap((childDoc: E[K]) => {\n this['store'].update(parentId as any, (entity) => ({\n [key]: arrayAdd(entity[key] as any, id, childDoc)\n }) as any);\n })\n );\n }\n return syncSubQuery(oneQuery, child);\n });\n return combineLatest(syncQueries);\n }\n\n if (typeof subQuery !== 'object') {\n throw new Error('Query should be either a path, a Query object or an array of Queries');\n }\n\n // Sync subquery\n if (isDocPath(subQuery.path)) {\n return this['db'].doc<E[K]>(subQuery.path).valueChanges().pipe(\n tap((children: E[K]) => this['store'].update(parentId as any, { [key]: children } as any))\n );\n } else {\n return this['db'].collection<E>(subQuery.path, subQuery.queryFn)\n .stateChanges()\n .pipe(\n withTransaction(actions => fromChildAction(actions as DocumentChangeAction<E>[], child))\n ) as Observable<void>;\n }\n };\n\n\n /**\n * Get in sync with all the subqueries\n * @param subQueries A map of all the subqueries\n * @param parent The parent entity to attach the children to\n */\n const syncAllSubQueries = (subQueries: SubQueries<E>, parent: E) => {\n const obs = Object.keys(subQueries)\n .filter(key => key !== 'path' && key !== 'queryFn')\n .map((key: Extract<keyof SubQueries<E>, string>) => {\n const queryLike = getSubQuery<E, typeof key>(subQueries[key], parent);\n const child = { key, parentId: parent[this.idKey] };\n return syncSubQuery(queryLike, child);\n });\n return combineLatest(obs);\n };\n\n\n ////////////////\n // MAIN QUERY //\n ////////////////\n\n /** Listen on action with child queries */\n const fromActionWithChild = (\n actions: DocumentChangeAction<E>[],\n mainQuery: Query<E>,\n subscriptions: SubscriptionMap) => {\n\n for (const action of actions) {\n const id = action.payload.doc.id;\n const data = action.payload.doc.data();\n\n switch (action.type) {\n case 'added': {\n const entity = this.formatFromFirestore({ [this.idKey]: id, ...data });\n this['store'].upsert(id, entity);\n subscriptions[id] = syncAllSubQueries(mainQuery as SubQueries<E>, entity).subscribe();\n break;\n }\n case 'removed': {\n this['store'].remove(id);\n subscriptions[id].unsubscribe();\n delete subscriptions[id];\n break;\n }\n case 'modified': {\n this['store'].update(id, data);\n }\n }\n }\n };\n\n const { path, queryFn } = query;\n if (isDocPath(path)) {\n const { id } = getIdAndPath({path});\n let subscription: Subscription;\n return this['db'].doc<E>(path).valueChanges().pipe(\n tap(entity => {\n this['store'].upsert(id, this.formatFromFirestore({id, ...entity}));\n if (!subscription) { // Subscribe only the first time\n subscription = syncAllSubQueries(query as SubQueries<E>, entity).subscribe();\n }\n }),\n // Stop subscription\n finalize(() => subscription.unsubscribe())\n );\n } else {\n const subscriptions: SubscriptionMap = {};\n return this['db'].collection<E>(path, queryFn)\n .stateChanges()\n .pipe(\n withTransaction(actions => fromActionWithChild(actions, query, subscriptions)),\n // Stop all subscriptions\n finalize(() => Object.keys(subscriptions).forEach(id => {\n subscriptions[id].unsubscribe();\n delete subscriptions[id];\n }))\n ) as Observable<void>;\n }\n}\n","import { isDocPath, getSubQueryKeys } from './utils';\nimport { CollectionService, CollectionState } from '../../collection/collection.service';\nimport { getIdAndPath } from '../id-or-path';\nimport { Observable, combineLatest, throwError, of } from 'rxjs';\nimport { Query } from './types';\nimport { isQuery, hasSubQueries } from './utils';\nimport { switchMap, map, tap } from 'rxjs/operators';\n\nexport function awaitSyncQuery<Service extends CollectionService<CollectionState<E>>, E>(\n this: Service,\n query: Query<E>\n): Observable<any> {\n return queryChanges.call(this, query).pipe(\n tap((entities: E | E[]) => {\n Array.isArray(entities)\n ? this['store'].upsertMany(entities)\n : this['store'].upsert(entities[this.idKey], entities);\n })\n );\n}\n\n/**\n * Listen on the changes of the documents in the query\n * @param query A query object to listen to\n */\nexport function queryChanges<Service extends CollectionService<CollectionState<E>>, E>(\n this: Service,\n query: Query<E>\n): Observable<any> {\n return awaitQuery.call(this, query).pipe(\n map((entities: E | E[]) => {\n return Array.isArray(entities)\n ? entities.map(e => this.formatFromFirestore(e))\n : this.formatFromFirestore(entities);\n })\n );\n}\n\nexport function awaitQuery<Service extends CollectionService<CollectionState<E>>, E>(\n this: Service,\n query: Query<E>\n): Observable<any> {\n\n // If single query\n if (typeof query === 'string') {\n return isDocPath(query)\n ? this['db'].doc(query).valueChanges()\n : this['db'].collection(query).valueChanges({ idField: this.idKey });\n }\n\n if (Array.isArray(query)) {\n return !!query.length\n ? combineLatest(query.map(oneQuery => awaitSyncQuery.call(this, oneQuery)))\n : of(query);\n }\n\n if (!isQuery(query)) {\n return of(query);\n }\n\n\n /**\n * Get the entity of one subquery\n * @param subQuery The subquery function or value\n * @param entity The parent entity\n */\n const syncSubQuery = <T>(subQueryFn: ((e: T) => Query<T>) | any, entity: T): Observable<T> => {\n if (!subQueryFn) {\n return throwError(`Query failed`);\n }\n if (typeof subQueryFn !== 'function') {\n return of(subQueryFn);\n }\n return awaitQuery.call(this, subQueryFn(entity));\n };\n\n /**\n * Get all the Entities of all subqueries\n * @param parentQuery The parent Query\n * @param entity The parent Entity\n */\n const getAllSubQueries = <T>(parentQuery: Query<T>, entity: T): Observable<T> => {\n if (!entity) {\n return throwError(`Nothing found at path : ${parentQuery.path}`);\n }\n // There is no subqueries return the entity\n if (!hasSubQueries(parentQuery)) {\n return of(entity);\n }\n // Get all subquery keys\n const subQueryKeys = getSubQueryKeys(query);\n // For each key get the subquery\n const subQueries$ = subQueryKeys.map(key => {\n return syncSubQuery(parentQuery[key], entity).pipe(tap(subentity => entity[key] = subentity));\n });\n return !!subQueries$.length\n ? combineLatest(subQueries$).pipe(map(() => entity))\n : of(entity);\n };\n\n\n // IF DOCUMENT\n const { path, queryFn } = query;\n if (isDocPath(path)) {\n const { id } = getIdAndPath({ path });\n return this['db'].doc<E>(path).valueChanges().pipe(\n switchMap(entity => getAllSubQueries(query, entity)),\n map(entity => ({ id, ...entity }))\n );\n }\n // IF COLLECTION\n return this['db'].collection<E>(path, queryFn)\n .valueChanges({ idField: this.idKey })\n .pipe(\n switchMap(entities => {\n const entities$ = entities.map(entity => getAllSubQueries(query, entity));\n return entities$.length ? combineLatest(entities$) : of([]);\n }),\n );\n}\n","import { AngularFireFunctions } from '@angular/fire/functions';\n/**\n * @description calls cloud function\n * @param functions you want to make callable\n * @param name of the cloud function\n * @param params you want to set\n */\nexport async function callFunction<C extends Record<string, (...args: any) => any>,\n N extends Extract<keyof C, string>>(\n functions: AngularFireFunctions,\n name: N,\n params?: Parameters<C[N]>\n ): Promise<ReturnType<C[N]>> {\n const callable = functions.httpsCallable(name);\n return callable(params).toPromise();\n}\n","/*\n * Public API Surface of akita-ng-fire\n */\n\nexport * from './lib/collection/collection.service';\nexport * from './lib/collection/collection.config';\nexport * from './lib/collection/collection.guard';\n\nexport * from './lib/collection-group/collection-group.service';\n\nexport * from './lib/auth/auth.service';\nexport * from './lib/auth/auth.model';\n\nexport * from './lib/utils/roles';\nexport * from './lib/utils/cancellation';\nexport * from './lib/utils/id-or-path';\nexport * from './lib/utils/path-with-params';\nexport * from './lib/utils/redirect-if-empty';\nexport * from './lib/utils/sync-from-action';\nexport * from './lib/utils/sync-with-router';\nexport * from './lib/utils/types';\n\nexport * from './lib/utils/query/sync-query';\nexport * from './lib/utils/query/await-sync-query';\nexport * from './lib/utils/query/types';\nexport * from './lib/utils/query/utils';\nexport * from './lib/utils/httpsCallable';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["runStoreAction","StoreAction","runEntityStoreAction","EntityStoreAction","applyTransaction","inject","AngularFirestore","isObservable","withTransaction","of","switchMap","combineLatest","tap","map","auth","AngularFireAuth","Router","Subject","takeUntil","UrlTree","race","distinctUntilChanged","filter","share","arrayUpsert","arrayRemove","arrayUpdate","arrayAdd","finalize","throwError"],"mappings":"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"}
\No newline at end of file