{"version":3,"file":"ngxs-labs-firestore-plugin-compat.mjs","sources":["../../../packages/firestore-plugin/src/lib/tokens.ts","../../../packages/firestore-plugin/compat/src/lib/ngxs-firestore-compat.adapter.ts","../../../packages/firestore-plugin/compat/src/lib/ngxs-firestore-compat.service.ts","../../../packages/firestore-plugin/src/lib/actions.ts","../../../packages/firestore-plugin/src/lib/attach-action.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore-connect.actions.ts","../../../packages/firestore-plugin/src/lib/ngxs-firestore.state.ts","../../../packages/firestore-plugin/compat/src/lib/ngxs-firestore-page-compat.service.ts","../../../packages/firestore-plugin/compat/src/public-api.ts","../../../packages/firestore-plugin/compat-public-api.ts","../../../packages/firestore-plugin/ngxs-labs-firestore-plugin-compat.ts"],"sourcesContent":["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 { AngularFirestore } from '@angular/fire/compat/firestore';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { NgxsFirestoreModuleOptions, NGXS_FIRESTORE_MODULE_OPTIONS } from '../../../src/lib/tokens';\nimport { Store } from '@ngxs/store';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsFirestoreAdapter {\n  constructor(\n    @Inject(AngularFirestore) public firestore: AngularFirestore,\n    @Inject(Store) public store: Store,\n    @Optional() @Inject(NGXS_FIRESTORE_MODULE_OPTIONS) public options: NgxsFirestoreModuleOptions\n  ) {}\n}\n","import {\n  QueryFn,\n  QueryDocumentSnapshot,\n  Action,\n  DocumentSnapshot,\n  DocumentChangeAction,\n  DocumentData,\n  DocumentReference,\n  QueryGroupFn\n} from '@angular/fire/compat/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-compat.adapter';\nimport firebase from 'firebase/compat/app';\nimport 'firebase/compat/firestore';\n\n@Injectable()\nexport abstract class NgxsFirestore<T> {\n  constructor(@Inject(NgxsFirestoreAdapter) protected adapter: NgxsFirestoreAdapter) {}\n\n  protected abstract path: string;\n  protected idField: string = 'id';\n  protected metadataField: string | false = false;\n  protected timeoutWriteOperations: number | false = false;\n  protected optimisticUpdates: boolean = false;\n  protected converter: firebase.firestore.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 this.adapter.firestore.createId();\n  }\n\n  public doc$(id: string): Observable<T | undefined> {\n    return this.adapter.firestore\n      .doc<T>(this.docRef(id) as any)\n      .snapshotChanges()\n      .pipe(\n        map((docSnapshot: Action<DocumentSnapshot<T>>) => {\n          if (docSnapshot.payload.exists) {\n            return this.getDataWithId(docSnapshot.payload);\n          } else {\n            return undefined;\n          }\n        })\n      );\n  }\n\n  public docOnce$(\n    id: string,\n    getOptions: firebase.firestore.GetOptions = { source: 'default' }\n  ): Observable<T | undefined> {\n    return this.adapter.firestore\n      .doc<T>(this.docRef(id) as any)\n      .get(getOptions)\n      .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 = (ref) => ref): Observable<T[]> {\n    return this.adapter.firestore\n      .collection<T>(this.path, (ref) => {\n        return queryFn(ref.withConverter(this.converter as any));\n      })\n      .snapshotChanges()\n      .pipe(\n        map((docSnapshots: DocumentChangeAction<T>[]) =>\n          docSnapshots.map((docSnapshot) => {\n            return this.getDataWithId(docSnapshot.payload.doc);\n          })\n        )\n      );\n  }\n\n  public collectionOnce$(\n    queryFn: QueryFn = (ref) => ref,\n    getOptions: firebase.firestore.GetOptions = { source: 'default' }\n  ): Observable<T[]> {\n    return this.adapter.firestore\n      .collection<T>(this.path, (ref) => {\n        return queryFn(ref.withConverter(this.converter as any));\n      })\n      .get(getOptions)\n      .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 collectionGroup$(queryFn: QueryGroupFn = (ref) => ref): Observable<T[]> {\n    return this.adapter.firestore\n      .collectionGroup<T>(this.path, (ref) => {\n        return queryFn(ref.withConverter(this.converter) as any) as any;\n      })\n      .snapshotChanges()\n      .pipe(\n        map((docSnapshots: DocumentChangeAction<T>[]) =>\n          docSnapshots.map((docSnapshot) => {\n            const doc = docSnapshot.payload.doc;\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 } as unknown) as T;\n            } else {\n              return ({ ...data, [this.idField]: id } as unknown) as T;\n            }\n          })\n        )\n      );\n  }\n\n  public update$(id: string, value: Partial<T>, setOptions: firebase.firestore.SetOptions = { merge: true }) {\n    return this.docSet(id, value, setOptions);\n  }\n\n  public delete$(id: string) {\n    return from(this.doc(id).delete()).pipe();\n  }\n\n  public create$(value: Partial<T>): Observable<string> {\n    return this.upsert$(value);\n  }\n\n  public upsert$(value: Partial<T>, setOptions: firebase.firestore.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: firebase.firestore.QueryDocumentSnapshot<TData> | QueryDocumentSnapshot<TData>): T {\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 } as unknown) as T;\n    } else {\n      return ({ ...data, [this.idField]: id } as unknown) as T;\n    }\n  }\n\n  private doc(id: string) {\n    return this.adapter.firestore.doc(this.docRef(id) as DocumentReference);\n  }\n\n  private docSet(id: string, value: any, setOptions: firebase.firestore.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      this.doc(id).set(value, setOptions);\n      return of(id);\n    }\n\n    const timeoutWriteOperations = this.adapter.options?.timeoutWriteOperations || this.timeoutWriteOperations;\n    if (timeoutWriteOperations) {\n      return from(this.doc(id).set(value, setOptions)).pipe(timeoutWith(timeoutWriteOperations, of(id)), mapTo(id));\n    } else {\n      return from(this.doc(id).set(value, setOptions)).pipe(mapTo(id));\n    }\n  }\n\n  private docRef(id: string) {\n    return this.adapter.firestore.doc(`${this.path}/${id}`).ref.withConverter(this.converter as any);\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","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 { 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 '../../../src/lib/actions';\nimport { AngularFirestore, QueryFn, FieldPath } from '@angular/fire/compat/firestore';\nimport { FirestorePage } from '../../../src/lib/internal-types';\nimport { attachAction } from '../../../src/lib/attach-action';\nimport { NgxsFirestoreState } from '../../../src/lib/ngxs-firestore.state';\n\ntype OrderBy = { fieldPath: string | FieldPath; directionStr?: 'desc' | 'asc' };\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsFirestorePageIdService {\n  constructor(private firestore: AngularFirestore) {}\n\n  createId() {\n    return this.firestore.createId();\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: OrderBy[]\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\n              .reduce((prev: any, curr) => {\n                return prev.orderBy(curr.fieldPath, curr.directionStr || 'asc');\n              }, ref)\n              .limit(limit);\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","/**\n * The public api for consumers of @ngxs-labs/package\n */\nexport * from './lib/ngxs-firestore-compat.adapter';\nexport * from './lib/ngxs-firestore-compat.service';\nexport * from './lib/ngxs-firestore-page-compat.service';\n","/**\n * The public api for consumers of @ngxs-labs/package\n */\nexport * from './compat/src/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './compat-public-api';\n"],"names":[],"mappings":"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"}