{"version":3,"file":"ngxs-labs-firestore-plugin.mjs","sources":["../../../packages/firestore-plugin/src/lib/ngxs-firestore-connect.actions.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore.state.ts","../../../packages/firestore-plugin/src/lib/tokens.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore.module.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore.standalone.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore.adapter.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore.service.ts","../../../packages/firestore-plugin/src/lib/actions.ts","../../../packages/firestore-plugin/src/lib/attach-action.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore-page.service.ts","../../../packages/firestore-plugin/src/lib/action-decorator-helpers.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore-connect.service.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore-connections.selector.ts","../../../packages/firestore-plugin/src/ngxs-labs-firestore-plugin.ts"],"sourcesContent":["namespace NgxsFirestoreDebugPayloads {\n  export interface StreamEmitted {\n    id: string;\n    items: any;\n  }\n}\n\nexport namespace NgxsFirestoreConnectActions {\n  export class StreamConnected {\n    static readonly type = '[NgxsFirestore] Connected';\n    constructor(public payload: string) {}\n  }\n  export class StreamEmitted {\n    static readonly type = '[NgxsFirestore] Emitted';\n    constructor(public payload: NgxsFirestoreDebugPayloads.StreamEmitted) {}\n  }\n  export class StreamDisconnected {\n    static readonly type = '[NgxsFirestore] Disconnected';\n    constructor(public payload: string) {}\n  }\n}\n","import { State, StateContext, NgxsOnInit, Action, StateToken } from '@ngxs/store';\nimport { NgxsFirestoreConnectActions } from './ngxs-firestore-connect.actions';\nimport { patch, insertItem, removeItem, updateItem } from '@ngxs/store/operators';\nimport { Injectable } from '@angular/core';\n\nexport const NGXS_FIRESTORE_STATE_TOKEN = new StateToken<string[]>('ngxs_firestore');\n\nexport interface FirestoreConnection {\n  id: string;\n  connectedAt: Date;\n  emmitedAt: Date[];\n}\n\nexport interface NgxsFirestoreStateModel {\n  connections: FirestoreConnection[];\n}\n\n@State<NgxsFirestoreStateModel>({\n  name: NGXS_FIRESTORE_STATE_TOKEN,\n  defaults: {\n    connections: []\n  }\n})\n@Injectable()\nexport class NgxsFirestoreState implements NgxsOnInit {\n  ngxsOnInit(_ctx: StateContext<NgxsFirestoreStateModel>) {}\n\n  @Action([NgxsFirestoreConnectActions.StreamConnected])\n  streamConnected(\n    { setState }: StateContext<NgxsFirestoreStateModel>,\n    { payload }: NgxsFirestoreConnectActions.StreamConnected\n  ) {\n    const conn = {\n      connectedAt: new Date(),\n      id: payload\n    } as FirestoreConnection;\n    setState(patch({ connections: insertItem(conn) }));\n  }\n\n  @Action([NgxsFirestoreConnectActions.StreamEmitted])\n  streamEmitted(\n    { setState }: StateContext<NgxsFirestoreStateModel>,\n    { payload }: NgxsFirestoreConnectActions.StreamEmitted\n  ) {\n    const { id } = payload;\n    setState(\n      patch<NgxsFirestoreStateModel>({\n        connections: updateItem((x) => x.id === id, patch({ emmitedAt: insertItem(new Date()) }))\n      })\n    );\n  }\n\n  @Action([NgxsFirestoreConnectActions.StreamDisconnected])\n  streamDisconnected(\n    { setState, getState }: StateContext<NgxsFirestoreStateModel>,\n    { payload }: NgxsFirestoreConnectActions.StreamDisconnected\n  ) {\n    setState(\n      patch<NgxsFirestoreStateModel>({ connections: removeItem((x) => x.id === payload) })\n    );\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NgxsFirestoreModuleOptions {\n  timeoutWriteOperations: number | false;\n  developmentMode?: boolean;\n  optimisticUpdates?: boolean;\n}\n\nexport const NGXS_FIRESTORE_MODULE_OPTIONS = new InjectionToken<NgxsFirestoreModuleOptions>(\n  'NGXS_FIRESTORE_MODULE_OPTIONS'\n);\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxsModule } from '@ngxs/store';\nimport { NgxsFirestoreState } from './ngxs-firestore.state';\nimport { NgxsFirestoreModuleOptions, NGXS_FIRESTORE_MODULE_OPTIONS } from './tokens';\n\n@NgModule({\n  imports: [CommonModule, NgxsModule.forFeature([NgxsFirestoreState])]\n})\nexport class NgxsFirestoreModule {\n  public static forRoot(options?: Partial<NgxsFirestoreModuleOptions>): ModuleWithProviders<NgxsFirestoreModule> {\n    return {\n      ngModule: NgxsFirestoreModule,\n      providers: [\n        {\n          provide: NGXS_FIRESTORE_MODULE_OPTIONS,\n          useValue: { timeoutWriteOperations: false, developmentMode: false, ...options }\n        }\n      ]\n    };\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { NGXS_FIRESTORE_MODULE_OPTIONS, NgxsFirestoreModuleOptions } from './tokens';\n\nexport function provideNgxsFirestore(options?: Partial<NgxsFirestoreModuleOptions>): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: NGXS_FIRESTORE_MODULE_OPTIONS,\n      useValue: { timeoutWriteOperations: false, developmentMode: false, ...options }\n    }\n  ]);\n}\n","import { Firestore } from '@angular/fire/firestore';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { NgxsFirestoreModuleOptions, NGXS_FIRESTORE_MODULE_OPTIONS } from './tokens';\nimport { Store } from '@ngxs/store';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsFirestoreAdapter {\n  constructor(\n    @Inject(Firestore) public firestore: Firestore,\n    @Inject(Store) public store: Store,\n    @Optional() @Inject(NGXS_FIRESTORE_MODULE_OPTIONS) public options: NgxsFirestoreModuleOptions\n  ) {}\n}\n","import {\n  collection,\n  collectionSnapshots,\n  collectionGroup,\n  deleteDoc,\n  doc,\n  docSnapshots,\n  FirestoreDataConverter,\n  getDoc,\n  getDocFromCache,\n  getDocFromServer,\n  getDocs,\n  getDocsFromCache,\n  getDocsFromServer,\n  QueryDocumentSnapshot,\n  setDoc,\n  SetOptions,\n  Firestore,\n  DocumentData\n} from '@angular/fire/firestore';\nimport { Observable, from, of } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { map, mapTo, timeoutWith } from 'rxjs/operators';\nimport { NgxsFirestoreAdapter } from './ngxs-firestore.adapter';\nimport { QueryFn } from './utils';\n\ninterface GetOptions {\n  source: 'default' | 'server' | 'cache';\n}\n\nexport function createId(firestore: Firestore) {\n  // https://github.com/angular/angularfire/discussions/2900#discussioncomment-1343797\n  return doc(collection(firestore, '_')).id;\n}\n\n@Injectable()\nexport abstract class NgxsFirestore<T> {\n  constructor(@Inject(NgxsFirestoreAdapter) protected adapter: NgxsFirestoreAdapter) {}\n\n  protected abstract path: string;\n  protected idField = 'id';\n  protected metadataField: string | false = false;\n  protected timeoutWriteOperations: number | false = false;\n  protected optimisticUpdates: boolean = false;\n  protected converter: FirestoreDataConverter<T> = {\n    toFirestore: (value) => {\n      return value as DocumentData;\n    },\n    fromFirestore: (snapshot, options) => {\n      return { ...(<T>snapshot.data(options)) };\n    }\n  };\n\n  public createId() {\n    return createId(this.adapter.firestore);\n  }\n\n  public doc$(id: string): Observable<T | undefined> {\n    return docSnapshots(this.docRef(id)).pipe(\n      map((docSnapshot) => {\n        if (docSnapshot.exists()) {\n          return this.getDataWithId(docSnapshot);\n        } else {\n          return undefined;\n        }\n      })\n    );\n  }\n\n  public docOnce$(id: string, { source }: GetOptions = { source: 'default' }): Observable<T | undefined> {\n    const getDocFn = source === 'cache' ? getDocFromCache : source === 'server' ? getDocFromServer : getDoc;\n    return from(getDocFn(this.docRef(id))).pipe(\n      map((docSnapshot) => {\n        if (docSnapshot.exists()) {\n          return this.getDataWithId(docSnapshot);\n        } else {\n          return undefined;\n        }\n      })\n    );\n  }\n\n  public collection$(queryFn: QueryFn<T> = (ref) => ref): Observable<T[]> {\n    return collectionSnapshots<T>(queryFn(this.collectionRef())).pipe(\n      map((queryDocumentSnapshots) =>\n        queryDocumentSnapshots.map((queryDocumentSnapshot) => this.getDataWithId(queryDocumentSnapshot))\n      )\n    );\n  }\n\n  public collectionGroup$(queryFn: QueryFn<T> = (ref) => ref): Observable<T[]> {\n    const collectionGroupQuery = queryFn(collectionGroup(this.adapter.firestore, this.path) as any);\n    return from(getDocs(collectionGroupQuery)).pipe(\n      map((querySnapshot) => {\n        const docSnapshots = querySnapshot.docs;\n        const items = docSnapshots.map((docSnapshot) => {\n          return this.getDataWithId(docSnapshot) as T;\n        });\n        return items;\n      })\n    );\n  }\n\n  public collectionOnce$(\n    queryFn: QueryFn<T> = (ref) => ref,\n    { source }: GetOptions = { source: 'default' }\n  ): Observable<T[]> {\n    const getDocsFn = source === 'cache' ? getDocsFromCache : source === 'server' ? getDocsFromServer : getDocs;\n    return from(getDocsFn(queryFn(collection(this.adapter.firestore, this.path).withConverter(this.converter)))).pipe(\n      map((querySnapshot) => {\n        const docSnapshots = querySnapshot.docs;\n        const items = docSnapshots.map((docSnapshot) => {\n          return this.getDataWithId(docSnapshot);\n        });\n        return items;\n      })\n    );\n  }\n\n  public update$(id: string, value: Partial<T>, setOptions: SetOptions = { merge: true }): Observable<string> {\n    return this.docSet(id, value, setOptions);\n  }\n\n  public delete$(id: string): Observable<void> {\n    return from(deleteDoc(this.docRef(id)));\n  }\n\n  public create$(value: Partial<T>): Observable<string> {\n    return this.upsert$(value);\n  }\n\n  public upsert$(value: Partial<T>, setOptions: SetOptions = { merge: true }): Observable<string> {\n    let id;\n    let newValue;\n\n    if (Object.keys(value).includes(this.idField) && !!(<any>value)[this.idField]) {\n      id = (<any>value)[this.idField];\n      newValue = Object.assign({}, value);\n    } else {\n      id = this.createId();\n      newValue = Object.assign({}, value, { [this.idField]: id });\n    }\n\n    return this.docSet(id, newValue, setOptions);\n  }\n\n  private getDataWithId<TData>(doc: QueryDocumentSnapshot<TData>) {\n    const data = doc.data();\n    const id = (data && (<any>data)[this.idField]) || doc.id;\n    if (this.metadataField) {\n      return { ...data, [this.idField]: id, [this.metadataField]: doc.metadata };\n    } else {\n      return { ...data, [this.idField]: id };\n    }\n  }\n\n  private docSet(id: string, value: any, setOptions: SetOptions = { merge: true }) {\n    if (this.metadataField) {\n      delete value[this.metadataField];\n    }\n\n    const optimisticUpdates = this.adapter.options?.optimisticUpdates || this.optimisticUpdates;\n    if (this.isOffline() || optimisticUpdates) {\n      setDoc(this.docRef(id), value, {});\n      return of(id);\n    }\n\n    const timeoutWriteOperations = this.adapter.options?.timeoutWriteOperations || this.timeoutWriteOperations;\n    if (timeoutWriteOperations) {\n      return from(setDoc(this.docRef(id), value, setOptions)).pipe(\n        timeoutWith(timeoutWriteOperations, of(id)),\n        mapTo(id)\n      );\n    } else {\n      return from(setDoc(this.docRef(id), value, setOptions)).pipe(mapTo(id));\n    }\n  }\n\n  private docRef(id: string) {\n    return doc(this.adapter.firestore, `${this.path}/${id}`).withConverter(this.converter);\n  }\n\n  private collectionRef() {\n    return collection(this.adapter.firestore, `${this.path}`).withConverter(this.converter);\n  }\n\n  private isOffline() {\n    return navigator.onLine !== undefined && !navigator.onLine;\n  }\n}\n","export class DisconnectAll {\n  static readonly type = '[NgxsFirestore] DisconnectAll';\n}\n\nexport class Disconnect {\n  static readonly type = '[NgxsFirestore] Disconnect';\n  constructor(public payload: any) {}\n}\n\nexport class GetNextPage {\n  static readonly type = 'GetNextPage';\n  constructor(public payload: string) {}\n}\n\nexport class GetLastPage {\n  static readonly type = 'GetLastPage';\n  constructor(public payload: string) {}\n}\n","import { Action, ActionOptions, ActionType, StateContext } from '@ngxs/store';\n\n/**\n * This key is used to retrieve static metadatas on state classes.\n * This constant is taken from the core codebase\n */\nconst META_OPTIONS_KEY = 'NGXS_OPTIONS_META';\n\nexport function attachAction<S, A>(\n  storeClass: any,\n  action: ActionType,\n  fn: (ctx: StateContext<S>, action: A) => any,\n  options?: ActionOptions\n): void {\n  if (!storeClass[META_OPTIONS_KEY]) {\n    throw new Error('storeClass is not a valid NGXS Store');\n  }\n\n  const methodName = getActionMethodName(action);\n\n  storeClass.prototype[methodName] = function(_state: any, _action: any): any {\n    return fn(_state, _action);\n  };\n\n  Action(action, options)({ constructor: storeClass }, methodName, null as any);\n}\n\nconst getActionMethodName = (action: ActionType) => {\n  const actionName = action.type.replace(/[^a-zA-Z0-9]+/g, '');\n  return `${actionName}`;\n};\n","import { Injectable } from '@angular/core';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { filter, map, startWith, switchMap, tap, take } from 'rxjs/operators';\nimport { Actions, getActionTypeFromInstance, ofActionDispatched } from '@ngxs/store';\nimport { GetNextPage, GetLastPage } from './actions';\nimport { FieldPath, Firestore, limit as limitFn, orderBy as orderByFn, query } from '@angular/fire/firestore';\nimport { createId } from './ngxs-firestore.service';\nimport { QueryFn } from './utils';\nimport { FirestorePage } from './internal-types';\nimport { attachAction } from './attach-action';\nimport { NgxsFirestoreState } from './ngxs-firestore.state';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsFirestorePageIdService {\n  constructor(private firestore: Firestore) {}\n\n  createId() {\n    return createId(this.firestore);\n  }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsFirestorePageService {\n  constructor(private actions$: Actions, private pageId: NgxsFirestorePageIdService) {\n    this.handlePageActions();\n  }\n\n  private actionCompletedHandlerSubjects: { [key: string]: Subject<unknown> } = {};\n  private attached = false;\n\n  private handlePageActions() {\n    if (!this.attached) {\n      attachAction(NgxsFirestoreState, GetNextPage, (_stateContext, action: any) => {\n        const pageId = action.payload;\n        const actionCompletedHandlerSubject = this.actionCompletedHandlerSubjects[pageId];\n        return actionCompletedHandlerSubject?.asObservable().pipe(take(1));\n      });\n\n      attachAction(NgxsFirestoreState, GetLastPage, (_stateContext, action: any) => {\n        const pageId = action.payload;\n        const actionCompletedHandlerSubject = this.actionCompletedHandlerSubjects[pageId];\n        return actionCompletedHandlerSubject?.asObservable().pipe(take(1));\n      });\n      this.attached = true;\n    }\n  }\n\n  create<T>(\n    queryFn: (pageFn: QueryFn<any>) => Observable<T>,\n    size: number,\n    orderBy: { fieldPath: string | FieldPath; directionStr?: 'desc' | 'asc' }[]\n  ): Observable<{ results: T; pageId: string }> {\n    return defer(() => {\n      const pages: FirestorePage[] = [];\n\n      return this.actions$.pipe(\n        ofActionDispatched(GetNextPage, GetLastPage),\n        startWith('INIT' as 'INIT'),\n        map((action: 'INIT' | GetNextPage | GetLastPage) => {\n          const actionType = <'GetNextPage' | 'GetLastPage'>getActionTypeFromInstance(action);\n          const payload = action === 'INIT' ? this.pageId.createId() : action.payload;\n          return { payload, actionType: actionType || 'GetNextPage' };\n        }),\n        filter(({ payload, actionType }) => {\n          return pages.length === 0 || !!pages.find((page) => page.id === payload);\n        }),\n        map(({ payload, actionType }) => {\n          const thePage = pages.find((page) => page.id === payload);\n          let limit = thePage?.limit || 0;\n\n          if (actionType === 'GetNextPage') {\n            limit += size;\n          } else if (limit - size > 0) {\n            limit -= size;\n          }\n\n          // firestore max linit is 10000\n          const skip = thePage?.limit === limit || limit > 10000;\n\n          if (thePage) {\n            thePage.limit = limit;\n          } else {\n            pages.push({ id: payload, limit });\n          }\n\n          return { pageId: payload, limit, skip };\n        }),\n        filter(({ skip }) => {\n          return !skip;\n        }),\n        switchMap(({ pageId, limit }) => {\n          if (!this.actionCompletedHandlerSubjects[pageId]) {\n            this.actionCompletedHandlerSubjects[pageId] = new Subject();\n          }\n\n          return queryFn((ref) => {\n            return orderBy.reduce(\n              (prev, curr) => query(prev, orderByFn(curr.fieldPath, curr.directionStr || 'asc'), limitFn(limit)),\n              ref\n            );\n          }).pipe(\n            tap(() => {\n              this.actionCompletedHandlerSubjects[pageId].next(true);\n            }),\n            map((results) => {\n              return { results, pageId, pageSize: limit };\n            })\n          );\n        })\n      );\n    });\n  }\n}\n","import { ActionType } from '@ngxs/store';\n\nexport function StreamConnected(actionType: ActionType) {\n  return class {\n    static readonly type = `${actionType.type} Connected`;\n    constructor(public action: any) {}\n  };\n}\n\nexport function StreamEmitted(actionType: ActionType) {\n  return class {\n    static readonly type = `${actionType.type} Emitted`;\n    constructor(public action: any, public payload: any) {}\n  };\n}\n\nexport function StreamDisconnected(actionType: ActionType) {\n  return class {\n    static readonly type = `${actionType.type} Disconnected`;\n    constructor(public action: any) {}\n  };\n}\n\nexport function StreamErrored(actionType: ActionType) {\n  return class {\n    static readonly type = `${actionType.type} Errored`;\n    constructor(public action: any, public error: any) {}\n  };\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Store, ActionType, Actions, ofActionDispatched, ActionDirector } from '@ngxs/store';\nimport { tap, catchError, mergeMap, takeUntil, finalize, filter, take, share } from 'rxjs/operators';\nimport { Observable, race, Subject, defer, of } from 'rxjs';\nimport { StreamConnected, StreamEmitted, StreamDisconnected, StreamErrored } from './action-decorator-helpers';\nimport { NgxsFirestoreConnectActions } from './ngxs-firestore-connect.actions';\nimport { DisconnectAll, Disconnect } from './actions';\nimport { NGXS_FIRESTORE_STATE_TOKEN } from './ngxs-firestore.state';\nimport { NgxsFirestoreModuleOptions, NGXS_FIRESTORE_MODULE_OPTIONS } from './tokens';\n\ninterface ActionTypeDef<T> {\n  type: string;\n  new (...args: any): T;\n}\n\nfunction defaultTrackBy(action: any) {\n  return '';\n}\n\nfunction streamId(opts: { actionType: ActionType; action: any; trackBy: (action: any) => string }) {\n  let id = `${opts.actionType.type}`;\n  if (opts.trackBy(opts.action)) {\n    id = id.concat(` (${opts.trackBy(opts.action)})`);\n  }\n  return id;\n}\n\nfunction tapOnce<T>(fn: (value: any) => void) {\n  return (source: Observable<any>) =>\n    defer(() => {\n      let first = true;\n      return source.pipe(\n        tap<T>((payload) => {\n          if (first) {\n            fn(payload);\n          }\n          first = false;\n        })\n      );\n    }).pipe(share());\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsFirestoreConnect {\n  private activeFirestoreConnections: string[] = [];\n  private actionsPending: string[] = [];\n\n  constructor(\n    private store: Store,\n    private actions: Actions,\n    private actionDirector: ActionDirector,\n    @Optional() @Inject(NGXS_FIRESTORE_MODULE_OPTIONS) private options: NgxsFirestoreModuleOptions\n  ) {}\n\n  /**\n   * Connect a query that will dispatch a `StreamEmitted` action on each emission.\n   *\n   * @param actionType Action to connect with\n   * @param opts.to Firestore Query to connect with\n   * @param opts.trackBy used to allow multiple connections for a same action, and Disconnect them individually\n   * @param opts.connectedActionFinishesOn complete connected action on first emit or stream completed\n   * @param opts.cancelPrevious cancel previous connected action,\n   * - false: will NOT cancel connected action, and subsequent dispatches will be skipped\n   * - true : will cancel previous connected action, if used combined with trackBy will cancel stream with same id\n   * - 'cancel-if-track-by-changed': will cancel previous connected action only when trackBy changed\n   */\n  connect<T>(\n    actionType: ActionTypeDef<T>,\n    opts: {\n      to: (action: T) => Observable<any>;\n      trackBy?: (action: T) => string;\n      connectedActionFinishesOn?: 'FirstEmit' | 'StreamCompleted';\n      cancelPrevious?: boolean | 'cancel-if-track-by-changed';\n    }\n  ) {\n    const connectedActionFinishesOn = opts.connectedActionFinishesOn || 'FirstEmit';\n    const trackBy = opts.trackBy || defaultTrackBy;\n    const cancelPrevious = opts.cancelPrevious || false;\n\n    interface CompletedHandler {\n      actionCompletedHandlerSubject: Subject<T>;\n    }\n\n    const subjects: { [key: string]: CompletedHandler } = {};\n    function getSubjects(id: string): CompletedHandler {\n      if (!subjects[id]) {\n        const actionCompletedHandlerSubject = new Subject<T>();\n        subjects[id] = {\n          actionCompletedHandlerSubject\n        };\n      }\n\n      return subjects[id];\n    }\n\n    this.actionDirector.attachAction(NGXS_FIRESTORE_STATE_TOKEN, actionType, (ctx, action) => {\n      const { actionCompletedHandlerSubject } = getSubjects(streamId({ actionType, action, trackBy }));\n\n      const completed$: any = actionCompletedHandlerSubject.asObservable().pipe(take(1));\n\n      if (cancelPrevious === true) {\n        return completed$;\n      }\n\n      if (this.activeFirestoreConnections.includes(streamId({ actionType, action, trackBy }))) {\n        return;\n      }\n\n      if (this.actionsPending.includes(streamId({ actionType, action, trackBy }))) {\n        return completed$;\n      }\n\n      return completed$;\n    });\n\n    const actionDispatched$ = this.actions.pipe(\n      ofActionDispatched(actionType),\n      // filter actions not connected already\n      // or cancelPrevious\n      filter((action) => {\n        return (\n          cancelPrevious === true ||\n          !this.activeFirestoreConnections.includes(streamId({ actionType, action, trackBy }))\n        );\n      }),\n      // filter actions dispatched on same tick\n      filter((action) => {\n        return cancelPrevious === true || !this.actionsPending.includes(streamId({ actionType, action, trackBy }));\n      }),\n      tap((action) => {\n        this.actionsPending.push(streamId({ actionType, action, trackBy }));\n      })\n    );\n\n    const firestoreStreamHandler$ = (action: T) => {\n      const streamFn = opts.to;\n      return streamFn(action).pipe(\n        // connected\n        tapOnce((_) => {\n          const StreamConnectedClass = StreamConnected(actionType);\n          this.store.dispatch(new StreamConnectedClass(action));\n          this.activeFirestoreConnections.push(streamId({ actionType, action, trackBy }));\n          // remove from actionsPending once connected\n          this.actionsPending.splice(this.actionsPending.indexOf(streamId({ actionType, action, trackBy })), 1);\n\n          if (this.options?.developmentMode) {\n            this.store.dispatch(\n              new NgxsFirestoreConnectActions.StreamConnected(streamId({ actionType, action, trackBy }))\n            );\n          }\n        }),\n        // emmited\n        tap((payload) => {\n          const StreamEmittedClass = StreamEmitted(actionType);\n          this.store.dispatch(new StreamEmittedClass(action, payload));\n\n          if (this.options?.developmentMode) {\n            this.store.dispatch(\n              new NgxsFirestoreConnectActions.StreamEmitted({\n                id: streamId({ actionType, action, trackBy }),\n                items: payload\n              })\n            );\n          }\n        }),\n        // completed if FirstEmit\n        tapOnce(() => {\n          if (connectedActionFinishesOn === 'FirstEmit') {\n            const { actionCompletedHandlerSubject } = getSubjects(streamId({ actionType, action, trackBy }));\n            actionCompletedHandlerSubject.next(action);\n          }\n        }),\n        // disconnect on Disconnect\n        takeUntil(\n          race(\n            this.actions.pipe(ofActionDispatched(DisconnectAll)),\n            this.actions.pipe(ofActionDispatched(Disconnect)).pipe(\n              filter((disconnectAction) => {\n                const { payload } = disconnectAction;\n                if (!payload) {\n                  return false;\n                }\n                const disconnectActionStreamId = streamId({\n                  actionType: payload.constructor?.type ? payload.constructor : payload,\n                  action: disconnectAction.payload,\n                  trackBy\n                });\n                const connectedActionStreamId = streamId({ actionType, action, trackBy });\n                if (\n                  disconnectActionStreamId === connectedActionStreamId ||\n                  // will disconnect all matching actions\n                  // valid when we want to disconnect multiple actions that were\n                  // dispatched with a payload\n                  connectedActionStreamId.startsWith(disconnectActionStreamId)\n                ) {\n                  return true;\n                }\n\n                return false;\n              })\n            )\n          )\n        ),\n        // disconnect on action re-dispatched\n        takeUntil(\n          this.actions.pipe(\n            ofActionDispatched(actionType),\n            filter((dispatchedAction) => {\n              if (cancelPrevious === false) {\n                return false;\n              }\n              //SELF\n              if (dispatchedAction === action) {\n                return false;\n              }\n              const dispatchedActionStreamId = streamId({\n                actionType,\n                action: dispatchedAction,\n                trackBy\n              });\n\n              if (cancelPrevious === true) {\n                return dispatchedActionStreamId === streamId({ actionType, action, trackBy });\n              } else if (cancelPrevious === 'cancel-if-track-by-changed') {\n                return dispatchedActionStreamId !== streamId({ actionType, action, trackBy });\n              } else {\n                return false;\n              }\n            })\n          )\n        ),\n        finalize(() => {\n          const StreamDisconnectedClass = StreamDisconnected(actionType);\n          this.store.dispatch(new StreamDisconnectedClass(action));\n\n          if (this.options?.developmentMode) {\n            this.store.dispatch(\n              new NgxsFirestoreConnectActions.StreamDisconnected(streamId({ actionType, action, trackBy }))\n            );\n          }\n\n          this.activeFirestoreConnections.splice(\n            this.activeFirestoreConnections.indexOf(streamId({ actionType, action, trackBy })),\n            1\n          );\n\n          // completed if StreamCompleted\n          if (connectedActionFinishesOn === 'StreamCompleted') {\n            const { actionCompletedHandlerSubject } = getSubjects(streamId({ actionType, action, trackBy }));\n            actionCompletedHandlerSubject.next(action);\n          }\n        }),\n        catchError((err) => {\n          const { actionCompletedHandlerSubject } = getSubjects(streamId({ actionType, action, trackBy }));\n          actionCompletedHandlerSubject.error(err);\n\n          const StreamErroredClass = StreamErrored(actionType);\n          this.store.dispatch(new StreamErroredClass(action, err));\n\n          return of({});\n        })\n      );\n    };\n\n    actionDispatched$.pipe(mergeMap(firestoreStreamHandler$)).subscribe();\n  }\n}\n","import { createSelector } from '@ngxs/store';\nimport { NgxsFirestoreState, NgxsFirestoreStateModel } from './ngxs-firestore.state';\n\nexport const ngxsFirestoreConnections = createSelector([NgxsFirestoreState], (state: NgxsFirestoreStateModel) => {\n  return state.connections;\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","orderBy","limit","orderByFn","limitFn","i2"],"mappings":"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"}