{"version":3,"file":"imng-ngrx-utils.mjs","sources":["../../../../libs/imng-ngrx-utils/src/lib/create-payload-action.ts","../../../../libs/imng-ngrx-utils/src/lib/create-modal-action.ts","../../../../libs/imng-ngrx-utils/src/lib/isTruthy.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-modify.ts","../../../../libs/imng-ngrx-utils/src/lib/find-and-merge.ts","../../../../libs/imng-ngrx-utils/src/lib/match-and-spread.ts","../../../../libs/imng-ngrx-utils/src/lib/remove-by-id.ts","../../../../libs/imng-ngrx-utils/src/lib/subscriptions.ts","../../../../libs/imng-ngrx-utils/src/lib/error-handlers.ts","../../../../libs/imng-ngrx-utils/src/lib/get-by-id.ts","../../../../libs/imng-ngrx-utils/src/lib/sleep.ts","../../../../libs/imng-ngrx-utils/src/lib/use-cache-if-exists.ts","../../../../libs/imng-ngrx-utils/src/imng-ngrx-utils.ts"],"sourcesContent":["import { createAction } from '@ngrx/store';\n\nexport interface Payload<T> {\n  payload: T;\n}\n\n// tslint:disable-next-line: typedef , doing otherwise would involve having deep imports on the @ngrx library\nexport function createPayloadAction<T>(\n  actionType: string,\n) {\n  return createAction(actionType, (payload: T) => ({ payload }));\n}\n","import { createAction } from '@ngrx/store';\n\nexport interface ModalPayload<T> {\n  modalState: string;\n  entity: T;\n}\n\n// tslint:disable-next-line: typedef , doing otherwise would involve having deep imports on the @ngrx library\nexport function createModalAction<T>(actionType: string) {\n  return createAction(actionType, (payload: ModalPayload<T>) => ({ payload }));\n}\n","export function isTruthy(value: unknown): boolean {\n  return !!value;\n}\n\nexport function isFalsy(value: unknown): boolean {\n  return !value;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndModify<ENTITY extends { id?: IdType | null; }>(\n  data: ENTITY[],\n  lookupId: IdType | undefined,\n  modificationLogic: (matchingRecord: ENTITY) => void,\n): ENTITY[] {\n  return [...data.map((m) => (m.id === lookupId ? applyChanges(m, modificationLogic) : m))];\n}\n\nfunction applyChanges<ENTITY>(record: ENTITY, modificationLogic: (matchingRecord: ENTITY) => void): ENTITY {\n  const spreadRecord = { ...record };\n  modificationLogic(spreadRecord);\n  return spreadRecord;\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function findAndMerge<ENTITY extends { id?: IdType }, COLLECTION_ENTITY extends { id?: IdType }>(\n  record: ENTITY,\n  data: COLLECTION_ENTITY[],\n): ENTITY {\n  return {\n    ...data.find((f) => f.id === record.id),\n    ...record,\n  };\n}\n","import { findAndMerge } from './find-and-merge';\nimport { IdType } from 'imng-nrsrx-client-utils';\n/**\n * Spreads the objects in the dataset1, with a matching id object from the dataset2.\n * @param dataset1 The original dataset, these are the records you can expect to get back.\n * @param dataset2 This dataset will be used to augment the individuals records in dataSet1, records will be matched based on 'id'.\n * @returns dataset1\n */\nexport function matchAndSpread<ENTITY1 extends { id?: IdType }, ENTITY2 extends { id?: IdType }>(\n  dataset1: ENTITY1[],\n  dataset2: ENTITY2[],\n): ENTITY1[] {\n  return dataset1.map((d1) => findAndMerge(d1, dataset2));\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function removeById<T extends { id?: IdType; }>(\n  source: { data: T[]; total: number; } | Array<T>,\n  id?: IdType,\n): { data: T[]; total: number; } | Array<T> | null {\n  if (Array.isArray(source)) {\n    const result = source;\n    return result?.filter((f) => f.id !== id);\n  } else if (source) {\n    const data = source.data?.filter((f) => f.id !== id);\n    return {\n      total: source.total + (data?.length - source.data?.length) || 0,\n      data,\n    };\n  }\n  return null;\n}\n","import { Subscription } from 'rxjs';\n\nexport class Subscriptions {\n  private readonly _subscriptions: (Subscription | undefined)[];\n\n  public constructor(...items: Subscription[]) {\n    this._subscriptions = items;\n  }\n  public get length(): number {\n    return this._subscriptions.length;\n  }\n\n  public push(...items: (Subscription | undefined)[]): void {\n    this._subscriptions.push(...items.filter((t) => t));\n  }\n  public forEach(\n    callbackfn: (\n      value: Subscription,\n      index: number,\n      array: Subscription[]\n    ) => void,\n    thisArg?: unknown\n  ): void {\n    this._subscriptions\n      .map((t) => t as Subscription)\n      .forEach(callbackfn, thisArg);\n  }\n\n  public unsubscribeAll(): void {\n    while (this._subscriptions.length > 0) {\n      const val = this._subscriptions.pop();\n      val?.unsubscribe();\n    }\n  }\n}\n","import { Action } from '@ngrx/store';\nimport { catchError, of, OperatorFunction } from 'rxjs';\nimport { createPayloadAction } from './create-payload-action';\n\nexport const imngEffectError = createPayloadAction<{\n  action: Action;\n  error: Error;\n}>('[IMNG] Error Occurred');\n\n/**\n *  Will handle effect error and dispatch an imngEffectError action\n * @param action\n * @returns\n */\nexport function handleEffectError(\n  action: Action,\n): OperatorFunction<Action, Action> {\n  return catchError((error) => of(imngEffectError({ action, error })));\n}\n\nexport function imngEffectErrorReducer<\n  T extends { loading: boolean; error: unknown },\n>(state: T, effectError: { payload: { error: Error } }): T {\n  return {\n    ...state,\n    loading: false,\n    error: effectError.payload.error,\n  };\n}\n","import { IdType } from 'imng-nrsrx-client-utils';\n\nexport function getById<T extends { id?: IdType | null; }>(\n  source: { data: T[]; total: number; } | Array<T>,\n  id?: IdType,\n): T | undefined {\n  if (Array.isArray(source)) {\n    return source.find((f) => f.id === id);\n  }\n  return source.data?.find((f) => f.id === id);\n}\n","export function sleep(milliSeconds: number): Promise<void> {\n  return new Promise(resolve => setTimeout(resolve, milliSeconds));\n}\n","import { concatLatestFrom } from '@ngrx/operators';\nimport { MemoizedSelector, Store } from '@ngrx/store';\nimport { filter, map, Observable } from 'rxjs';\n\nexport function useCacheIfExists<T_COLLECTION_TYPE>(\n  store: Store,\n  selector: MemoizedSelector<\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Record<string, any>,\n    T_COLLECTION_TYPE[] | undefined,\n    (featureState: never) => T_COLLECTION_TYPE[] | undefined\n  >,\n) {\n  return function <T>(source: Observable<T>): Observable<T> {\n    return source.pipe(\n      concatLatestFrom(() => store.select(selector)),\n      filter(([, cache]) => !cache || cache.length === 0),\n      map(([action]) => action),\n    );\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}