{"version":3,"file":"tomtomb-ngrx-toolkit.mjs","sources":["../../../projects/ngrx-toolkit/src/lib/helpers/selector.helpers.ts","../../../projects/ngrx-toolkit/src/lib/helpers/action.helpers.ts","../../../projects/ngrx-toolkit/src/lib/helpers/constants.ts","../../../projects/ngrx-toolkit/src/lib/helpers/status.helpers.ts","../../../projects/ngrx-toolkit/src/lib/helpers/util.ts","../../../projects/ngrx-toolkit/src/lib/helpers/reducer.helpers.ts","../../../projects/ngrx-toolkit/src/lib/helpers/error.helpers.ts","../../../projects/ngrx-toolkit/src/lib/helpers/facade.base.ts","../../../projects/ngrx-toolkit/src/lib/qs/formats.ts","../../../projects/ngrx-toolkit/src/lib/qs/utils.ts","../../../projects/ngrx-toolkit/src/lib/qs/side-channel.ts","../../../projects/ngrx-toolkit/src/lib/qs/stringify.ts","../../../projects/ngrx-toolkit/src/lib/helpers/service.base.ts","../../../projects/ngrx-toolkit/src/lib/helpers/effect.base.ts","../../../projects/ngrx-toolkit/src/lib/helpers/testing.ts","../../../projects/ngrx-toolkit/src/lib/components/store-debug/store-debug.component.ts","../../../projects/ngrx-toolkit/src/lib/components/store-debug/store-debug.component.html","../../../projects/ngrx-toolkit/src/lib/pipes/suspense.pipe.ts","../../../projects/ngrx-toolkit/src/lib/pipes/suspense-multi.pipe.ts","../../../projects/ngrx-toolkit/src/lib/ngrx-toolkit.module.ts","../../../projects/ngrx-toolkit/src/public-api.ts","../../../projects/ngrx-toolkit/src/tomtomb-ngrx-toolkit.ts"],"sourcesContent":["import { createSelector, MemoizedSelector } from '@ngrx/store';\r\nimport { CallState, EntityReducerMap } from '../types';\r\n\r\nexport const createEntitySelectors = <\r\n  GetState extends MemoizedSelector<any, any>,\r\n  Reducers extends EntityReducerMap<any>\r\n>({\r\n  getState,\r\n  reducerAdapters,\r\n}: {\r\n  getState: GetState;\r\n  reducerAdapters: Reducers;\r\n}) => {\r\n  const getAdapterEntities = (state: any, adapterId: keyof Reducers) => {\r\n    const adapter = reducerAdapters[adapterId];\r\n\r\n    if (!adapter) {\r\n      console.error(\r\n        '[NGRXT:001] Missing reducer adapter. Did you forget to add the action to the ACTIONS constant?',\r\n        { adapterId, state, reducerAdapters }\r\n      );\r\n      return null;\r\n    }\r\n\r\n    const { selectEntities } = adapter.getSelectors();\r\n\r\n    return selectEntities(state[adapterId]);\r\n  };\r\n\r\n  const getStoreSliceAdapterEntities = (adapterId: keyof Reducers) =>\r\n    createSelector(getState, (s) => getAdapterEntities(s, adapterId));\r\n\r\n  const getCallStateById = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getStoreSliceAdapterEntities(adapterId),\r\n      (s) => s?.[actionId] || null\r\n    );\r\n\r\n  const getIsInit = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.callState === CallState.INIT ?? null\r\n    );\r\n\r\n  const getIsLoading = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.callState === CallState.LOADING ?? null\r\n    );\r\n\r\n  const getIsSuccess = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.callState === CallState.SUCCESS ?? null\r\n    );\r\n\r\n  const getIsError = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.callState === CallState.ERROR ?? null\r\n    );\r\n\r\n  const getTimestamp = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.timestamp ?? null\r\n    );\r\n\r\n  const getArgs = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.action.args ?? null\r\n    );\r\n\r\n  const getResponse = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.action.response ?? null\r\n    );\r\n\r\n  const getType = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.action.type ?? null\r\n    );\r\n\r\n  const getError = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(\r\n      getCallStateById(adapterId, actionId),\r\n      (s) => s?.action.error ?? null\r\n    );\r\n\r\n  const getEntityId = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(getCallStateById(adapterId, actionId), (s) =>\r\n      s ? actionId : null\r\n    );\r\n\r\n  const getCallState = (adapterId: keyof Reducers, actionId: number) =>\r\n    createSelector(getCallStateById(adapterId, actionId), (s) =>\r\n      s ? s.callState : null\r\n    );\r\n\r\n  return {\r\n    getCallStateById,\r\n    getCallState,\r\n    getIsInit,\r\n    getIsLoading,\r\n    getIsSuccess,\r\n    getIsError,\r\n    getTimestamp,\r\n    getArgs,\r\n    getResponse,\r\n    getType,\r\n    getError,\r\n    getEntityId,\r\n  };\r\n};\r\n\r\nexport type EntitySelectors = ReturnType<typeof createEntitySelectors>;\r\n","import {\r\n  Args,\r\n  Response,\r\n  ErrorAction,\r\n  TypedActionObject,\r\n  ArgumentsBase,\r\n} from '../types';\r\nimport { createAction, props } from '@ngrx/store';\r\n\r\nexport const defineArgTypes = <\r\n  T extends {\r\n    args?: ArgumentsBase | null;\r\n    response?: any;\r\n    errorResponse?: any;\r\n  }\r\n>() => null as any as T;\r\n\r\nexport const createActionGroup = <\r\n  Scope extends string,\r\n  Name extends string,\r\n  ArgTypes extends ReturnType<typeof defineArgTypes> = ReturnType<\r\n    typeof defineArgTypes\r\n  >,\r\n  Arguments = ArgTypes['args'],\r\n  ResponseData = ArgTypes['response'],\r\n  ErrorResponse = ArgTypes['errorResponse']\r\n>({\r\n  scope,\r\n  name,\r\n  isUnique,\r\n}: {\r\n  scope: Scope;\r\n  name: Name;\r\n  isUnique?: boolean;\r\n  argsTypes: ArgTypes;\r\n}): TypedActionObject<\r\n  Arguments,\r\n  ResponseData,\r\n  ErrorResponse,\r\n  `[${Scope}] ${Name}`\r\n> => {\r\n  const baseName: `[${Scope}] ${Name}` = `[${scope}] ${name}`;\r\n\r\n  return {\r\n    isUnique: !!isUnique,\r\n    entityId: baseName,\r\n    call: createAction(baseName, props<Args<Arguments>>()),\r\n    success: createAction(\r\n      `${baseName} Success`,\r\n      props<Response<ResponseData> & Args<Arguments>>()\r\n    ),\r\n    failure: createAction(\r\n      `${baseName} Failure`,\r\n      props<ErrorAction<ErrorResponse> & Args<Arguments>>()\r\n    ),\r\n  };\r\n};\r\n\r\nexport const createHttpActionGroup = <\r\n  Method extends\r\n    | 'GET'\r\n    | 'POST'\r\n    | 'PUT'\r\n    | 'PATCH'\r\n    | 'DELETE'\r\n    | 'HEAD'\r\n    | 'OPTIONS'\r\n    | 'CONNECT'\r\n    | 'TRACE',\r\n  Scope extends string,\r\n  Name extends string,\r\n  ArgTypes extends ReturnType<typeof defineArgTypes> = ReturnType<\r\n    typeof defineArgTypes\r\n  >,\r\n  Arguments = ArgTypes['args'],\r\n  ResponseData = ArgTypes['response'],\r\n  ErrorResponse = ArgTypes['errorResponse']\r\n>({\r\n  method,\r\n  scope,\r\n  name,\r\n  isUnique,\r\n}: {\r\n  method: Method;\r\n  scope: Scope;\r\n  name: Name;\r\n  isUnique?: boolean;\r\n  argsTypes: ArgTypes;\r\n}): TypedActionObject<\r\n  Arguments,\r\n  ResponseData,\r\n  ErrorResponse,\r\n  `[${Scope}] [${Method}] ${Name}`\r\n> => {\r\n  const baseName: `[${Scope}] [${Method}] ${Name}` = `[${scope}] [${method}] ${name}`;\r\n\r\n  return {\r\n    isUnique: !!isUnique,\r\n    entityId: baseName,\r\n    call: createAction(baseName, props<Args<Arguments>>()),\r\n    success: createAction(\r\n      `${baseName} Success`,\r\n      props<Response<ResponseData> & Args<Arguments>>()\r\n    ),\r\n    failure: createAction(\r\n      `${baseName} Failure`,\r\n      props<ErrorAction<ErrorResponse> & Args<Arguments>>()\r\n    ),\r\n  };\r\n};\r\n\r\nexport const resetFeatureStore = createAction(\r\n  '[NgRx Toolkit] Reset Feature Store',\r\n  props<{ featureName?: string }>()\r\n);\r\n\r\nexport const removeCallState = createAction(\r\n  '[NgRx Toolkit] Remove Call State',\r\n  props<{ adapterId: string; actionId: number }>()\r\n);\r\n","export const UNIQUE = '[UNIQUE]';\nexport const HIDDEN = '[HIDDEN]';\n","import { Error } from '../types';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const uniformActionType = (type: string) =>\n  type.replace(/^\\s*|\\s*$|(Success)|(Failure)/g, '');\n\nexport const joinLoading = (observables: Observable<boolean | null>[]) => {\n  const copy = observables.filter((o) => !!o);\n\n  return combineLatest(copy).pipe(\n    map((o) => {\n      for (const e of o) {\n        if (e) {\n          return true;\n        }\n      }\n      return false;\n    })\n  );\n};\n\nexport const joinErrors = (\n  observables: Observable<Error<unknown> | null>[]\n) => {\n  const copy = observables.filter((o) => !!o);\n\n  return combineLatest(copy).pipe(\n    map((values) => {\n      const errors: Error<unknown>[] = [];\n\n      values.forEach((v) => {\n        if (v) {\n          errors.push(v);\n        }\n      });\n\n      return errors.length ? errors : null;\n    })\n  );\n};\n","import { Action, ActionCreator } from '@ngrx/store';\r\nimport { TypedApiAction } from '../types';\r\nimport { UNIQUE } from './constants';\r\nimport { uniformActionType } from './status.helpers';\r\nimport iMurMurHash from 'imurmurhash';\r\n\r\nexport const hashCode = (str: string) => {\r\n  return iMurMurHash(str, 42069).result();\r\n};\r\n\r\nexport const isAction = <T extends ActionCreator>(\r\n  actionToBe: T,\r\n  action: Action\r\n  // @ts-ignore\r\n): action is ReturnType<T> => action.type === actionToBe.type;\r\n\r\nexport const generateEntityId = (opts: any) => {\r\n  if (opts) {\r\n    return hashCode(JSON.stringify(opts));\r\n  }\r\n\r\n  return hashCode('NO_ARG');\r\n};\r\n\r\nexport const sortObject = (sourceObj: Record<any, any>) => {\r\n  return Object.keys(sourceObj)\r\n    .sort()\r\n    .reduce((obj, key) => {\r\n      let val = sourceObj[key];\r\n\r\n      if (typeof val === 'object' && val !== null && val !== undefined) {\r\n        val = sortObject(val);\r\n      }\r\n\r\n      obj[key] = val;\r\n      return obj;\r\n    }, {} as Record<string, any>);\r\n};\r\n\r\nexport const UNIQUE_ID = generateEntityId(UNIQUE);\r\n\r\nconst UNIQUE_LIST = new Set();\r\n\r\nexport const createActionId = (\r\n  action: TypedApiAction<any, any>,\r\n  isUnique?: boolean\r\n) => {\r\n  const uniformedActionType = uniformActionType(action.type);\r\n\r\n  if (isUnique) {\r\n    if (!UNIQUE_LIST.has(uniformedActionType)) {\r\n      UNIQUE_LIST.add(uniformedActionType);\r\n    }\r\n\r\n    return UNIQUE_ID;\r\n  }\r\n\r\n  if (UNIQUE_LIST.has(uniformedActionType)) {\r\n    return UNIQUE_ID;\r\n  }\r\n\r\n  const args = action.args;\r\n\r\n  if (args) {\r\n    const orderedArgs = sortObject(args);\r\n    return generateEntityId(orderedArgs);\r\n  }\r\n\r\n  return generateEntityId(null);\r\n};\r\n","import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { ActionCreator, createReducer, on, ReducerTypes } from '@ngrx/store';\r\nimport {\r\n  ActionCallArgs,\r\n  ActionInitialState,\r\n  ActionSuccessResponse,\r\n  CallCreator,\r\n  CallState,\r\n  EntityReducerMap,\r\n  EntityStatus,\r\n  FailureCreator,\r\n  SuccessCreator,\r\n  TypedAction,\r\n  TypedActionObject,\r\n} from '../types';\r\nimport { removeCallState, resetFeatureStore } from './action.helpers';\r\nimport { HIDDEN } from './constants';\r\nimport { uniformActionType } from './status.helpers';\r\nimport { createActionId } from './util';\r\n\r\nexport const createCallState = (\r\n  action: TypedAction,\r\n  type: CallState\r\n): EntityStatus => {\r\n  const newObj: EntityStatus = {\r\n    action: {\r\n      ...action,\r\n      type: uniformActionType(action.type),\r\n    },\r\n    callState: type,\r\n    timestamp: new Date().getTime(),\r\n  };\r\n\r\n  const anyAction = JSON.parse(JSON.stringify(newObj.action));\r\n\r\n  if (anyAction.args?.body?.password) {\r\n    anyAction.args.body.password = HIDDEN;\r\n  }\r\n\r\n  if (anyAction.args?.body?.plainPassword) {\r\n    anyAction.args.body.plainPassword = HIDDEN;\r\n  }\r\n\r\n  newObj.action = anyAction;\r\n\r\n  return newObj;\r\n};\r\n\r\nexport const createOn = <\r\n  Adapter extends EntityAdapter<EntityStatus>,\r\n  Action extends CallCreator | SuccessCreator | FailureCreator,\r\n  AdapterId extends string,\r\n  CallStateType extends CallState\r\n>(\r\n  adapter: Adapter,\r\n  actionCreator: Action,\r\n  adapterId: AdapterId,\r\n  callState: CallStateType\r\n) => {\r\n  return on<Record<string, EntityState<EntityStatus<any, any>>>, Action[]>(\r\n    actionCreator,\r\n    (state, action) => ({\r\n      ...state,\r\n      [adapterId]: adapter.setOne(\r\n        createCallState(action, callState),\r\n        state[adapterId]\r\n      ),\r\n    })\r\n  );\r\n};\r\n\r\nexport const createReducerSlice = <\r\n  Actions extends Record<string, TypedActionObject>,\r\n  Key extends string,\r\n  InitialStateExtra extends Record<any, any>\r\n>(\r\n  {\r\n    actions,\r\n    key,\r\n    initialStateExtra,\r\n  }: {\r\n    actions: Actions;\r\n    key: Key;\r\n    initialStateExtra: InitialStateExtra;\r\n  },\r\n  ...additionalOns: ReducerTypes<\r\n    ActionInitialState<Actions> & InitialStateExtra,\r\n    ActionCreator[]\r\n  >[]\r\n) => {\r\n  const initialState: ActionInitialState<Actions> & InitialStateExtra =\r\n    JSON.parse(JSON.stringify(initialStateExtra));\r\n\r\n  const ons: ReducerTypes<\r\n    any,\r\n    CallCreator[] | SuccessCreator[] | FailureCreator[]\r\n  >[] = [];\r\n  const adapters: EntityReducerMap<Actions> = {} as any;\r\n\r\n  for (const action of Object.values(actions)) {\r\n    const entityId = action.entityId;\r\n\r\n    const entityAdapter = createEntityAdapter<\r\n      EntityStatus<\r\n        ActionCallArgs<typeof action>,\r\n        ActionSuccessResponse<typeof action>\r\n      >\r\n    >({\r\n      selectId: (\r\n        model: EntityStatus<\r\n          ActionCallArgs<typeof action>,\r\n          ActionSuccessResponse<typeof action>\r\n        >\r\n      ) => createActionId(model.action),\r\n    });\r\n\r\n    const adapterInitialState = entityAdapter.getInitialState();\r\n    (initialState as any)[action.entityId] = adapterInitialState;\r\n\r\n    (adapters as any)[action.entityId] = entityAdapter;\r\n\r\n    ons.push(createOn(entityAdapter, action.call, entityId, CallState.LOADING));\r\n    ons.push(\r\n      createOn(entityAdapter, action.success, entityId, CallState.SUCCESS)\r\n    );\r\n    ons.push(\r\n      createOn(entityAdapter, action.failure, entityId, CallState.ERROR)\r\n    );\r\n  }\r\n\r\n  const reducerSlice = createReducer(\r\n    initialState,\r\n    ...ons,\r\n    ...(additionalOns ? additionalOns : []),\r\n    on(resetFeatureStore, (state, { featureName }) =>\r\n      featureName === key || !featureName\r\n        ? {\r\n            ...initialState,\r\n          }\r\n        : state\r\n    ),\r\n    on(removeCallState, (state, { actionId, adapterId }) => {\r\n      const adapter = (adapters as any)[adapterId];\r\n\r\n      if (!adapter) {\r\n        return state;\r\n      }\r\n\r\n      return {\r\n        ...state,\r\n        [adapterId]: adapter.removeOne(actionId, state[adapterId]),\r\n      };\r\n    })\r\n  );\r\n\r\n  return {\r\n    reducerSlice,\r\n    reducerAdapters: adapters,\r\n    initialState,\r\n  };\r\n};\r\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Error, FirebaseError } from '../types';\n\nexport const isFirebaseError = (\n  err: HttpErrorResponse | FirebaseError\n): err is FirebaseError => !!(err as any).code;\n\nexport const buildErrorFromHttpError = <T, J>({\n  error,\n  args,\n  extras,\n}: {\n  error: HttpErrorResponse | FirebaseError;\n  args: T;\n  extras?: {\n    message?: string;\n  };\n}) => {\n  if (isFirebaseError(error)) {\n    const err: Error<J> = {\n      message: extras?.message || error.message,\n      status: error.code,\n      data: null,\n    };\n    return { error: err, args };\n  }\n\n  const errorObj: Error<J> = {\n    status: error.status,\n    message: extras?.message || error.message,\n    data: error.error,\n  };\n\n  return { error: errorObj, args };\n};\n","import { MappedEntityState, TypedActionObject } from '../types';\r\nimport { Actions, ofType } from '@ngrx/effects';\r\nimport { Action, ActionCreator, Store } from '@ngrx/store';\r\nimport {\r\n  Observable,\r\n  Subject,\r\n  interval,\r\n  BehaviorSubject,\r\n  Subscription,\r\n} from 'rxjs';\r\nimport { filter, take, takeUntil, tap } from 'rxjs/operators';\r\nimport { EntitySelectors } from './selector.helpers';\r\nimport { removeCallState } from './action.helpers';\r\nimport { createActionId } from './util';\r\n\r\nexport class FacadeBase {\r\n  private _cache: Record<string, MappedEntityState<any>> = {};\r\n\r\n  constructor(\r\n    private __store: Store<Record<any,any>>,\r\n    private __actions: Actions,\r\n    private _entitySelectors: EntitySelectors\r\n  ) {}\r\n\r\n  /**\r\n   * Listen to actions provided by this store\r\n   * @param actions The actions to listen on\r\n   * @example\r\n   * const getAllKittens = createAction(\r\n   *  'Get all kittens'\r\n   * );\r\n   *\r\n   * const getAllDogs = createAction(\r\n   *  'Get all dogs'\r\n   * );\r\n   *\r\n   * // Pass in the action\r\n   * on([getAllKittens, getAllDogs]);\r\n   * // OR\r\n   * on(getAllKittens);\r\n   */\r\n  on<J extends ActionCreator>(actions: J): Observable<ReturnType<J>>;\r\n  on<J extends ActionCreator[]>(actions: J): Observable<ReturnType<J[number]>>;\r\n  on(actions: any): Observable<any> | undefined {\r\n    if (Array.isArray(actions)) {\r\n      const _actions = actions as ActionCreator[];\r\n      return this.__actions.pipe(ofType(..._actions.map((a) => a.type)));\r\n    }\r\n    if (typeof actions === 'function') {\r\n      const _action = actions as ActionCreator;\r\n      return this.__actions.pipe(ofType(_action.type));\r\n    }\r\n    return;\r\n  }\r\n\r\n  /**\r\n   * Listen to actions provided by this store once\r\n   * @param actions The actions to listen on\r\n   * @example\r\n   * const getAllKittens = createAction(\r\n   *  'Get all kittens'\r\n   * );\r\n   *\r\n   * const getAllDogs = createAction(\r\n   *  'Get all dogs'\r\n   * );\r\n   *\r\n   * // Pass in the action\r\n   * once([getAllKittens, getAllDogs]);\r\n   * // OR\r\n   * once(getAllKittens);\r\n   */\r\n  once<J extends ActionCreator>(actions: J): Observable<ReturnType<J>>;\r\n  once<J extends ActionCreator[]>(\r\n    actions: J\r\n  ): Observable<ReturnType<J[number]>>;\r\n  once(actions: any): Observable<any> | undefined {\r\n    return this.on(actions).pipe(take(1));\r\n  }\r\n\r\n  /**\r\n   * Returns all states associated to a action object\r\n   * Also includes useful helper methods\r\n   */\r\n  select<J extends TypedActionObject>(\r\n    selector: J,\r\n    actionId: number\r\n  ): MappedEntityState<J> {\r\n    const cacheId = `${selector.call.type}_${actionId}`;\r\n    if (this._cache[cacheId]) {\r\n      return this._cache[cacheId];\r\n    }\r\n\r\n    const response$ = this.selectResponse<J>(selector, actionId);\r\n    const cachedResponse$ = this.selectCachedResponse<J>(selector, actionId);\r\n\r\n    const error$ = this.selectError<J>(selector, actionId);\r\n    const args$ = this.selectArgs<J>(selector, actionId);\r\n\r\n    const isInit$ = this.selectIsInit(selector, actionId);\r\n    const isLoading$ = this.selectIsLoading(selector, actionId);\r\n    const isSuccess$ = this.selectIsSuccess(selector, actionId);\r\n    const isError$ = this.selectIsError(selector, actionId);\r\n\r\n    const type$ = this.selectType(selector, actionId);\r\n    const timestamp$ = this.selectTimestamp(selector, actionId);\r\n    const entityId$ = this.selectEntityId(selector, actionId);\r\n    const callState$ = this.selectCallState(selector, actionId);\r\n\r\n    const isPolling$ = new BehaviorSubject<boolean>(false);\r\n\r\n    const refresh = () =>\r\n      args$\r\n        .pipe(\r\n          take(1),\r\n          tap((args) => this._dispatch(selector.call({ args })))\r\n        )\r\n        .subscribe();\r\n\r\n    const remove = () => {\r\n      stopPolling();\r\n      this.remove(selector, actionId);\r\n    };\r\n\r\n    let killSwitchSub = Subscription.EMPTY;\r\n    let pollSub = Subscription.EMPTY;\r\n\r\n    const startPolling = ({\r\n      intervalDuration,\r\n      killSwitch,\r\n    }: {\r\n      intervalDuration: number;\r\n      killSwitch: Subject<boolean>;\r\n    }) => {\r\n      if (isPolling$.value) {\r\n        return;\r\n      }\r\n\r\n      killSwitchSub = killSwitch\r\n        .pipe(\r\n          take(1),\r\n          tap(() => isPolling$.next(false))\r\n        )\r\n        .subscribe();\r\n\r\n      isPolling$.next(true);\r\n\r\n      pollSub = interval(intervalDuration)\r\n        .pipe(\r\n          tap(() => refresh()),\r\n          takeUntil(killSwitch)\r\n        )\r\n        .subscribe();\r\n    };\r\n\r\n    const stopPolling = () => {\r\n      killSwitchSub?.unsubscribe();\r\n      pollSub?.unsubscribe();\r\n      isPolling$.next(false);\r\n    };\r\n\r\n    const mappedEntityState = {\r\n      response$,\r\n      cachedResponse$,\r\n      error$,\r\n      args$,\r\n      isInit$,\r\n      isLoading$,\r\n      isSuccess$,\r\n      isError$,\r\n      isPolling$,\r\n      type$,\r\n      timestamp$,\r\n      entityId$,\r\n      callState$,\r\n      refresh,\r\n      remove,\r\n      startPolling,\r\n      stopPolling,\r\n    };\r\n\r\n    this._cache[cacheId] = mappedEntityState;\r\n\r\n    return mappedEntityState;\r\n  }\r\n\r\n  selectIsInit<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getIsInit(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectIsLoading<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getIsLoading(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectIsSuccess<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getIsSuccess(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectIsError<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getIsError(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectResponse<J extends TypedActionObject>(\r\n    selector: J,\r\n    actionId: number\r\n  ): Observable<ReturnType<J['success']>['response'] | null> {\r\n    return this.__store.select(\r\n      this._entitySelectors.getResponse(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectCachedResponse<J extends TypedActionObject>(\r\n    selector: J,\r\n    actionId: number\r\n  ): Observable<ReturnType<J['success']>['response']> {\r\n    return this.__store\r\n      .select(this._entitySelectors.getResponse(selector.entityId, actionId))\r\n      .pipe(filter((v): v is ReturnType<J['success']>['response'] => !!v));\r\n  }\r\n\r\n  selectError<J extends TypedActionObject>(\r\n    selector: J,\r\n    actionId: number\r\n  ): Observable<ReturnType<J['failure']>['error'] | null> {\r\n    return this.__store.select(\r\n      this._entitySelectors.getError(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectArgs<J extends TypedActionObject>(\r\n    selector: J,\r\n    actionId: number\r\n  ): Observable<ReturnType<J['call']>['args']> {\r\n    return this.__store.select(\r\n      this._entitySelectors.getArgs(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectEntityId<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getEntityId(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectTimestamp<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getTimestamp(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectType<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getType(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  selectCallState<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    return this.__store.select(\r\n      this._entitySelectors.getCallState(selector.entityId, actionId)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Remove an item from the store\r\n   * @param selector The store item key. This should be an action\r\n   * @example\r\n   * const getAllKittens = createAction(\r\n   *  'Get all kittens'\r\n   * );\r\n   *\r\n   * // Pass in the action\r\n   * remove(getAllKittens);\r\n   */\r\n  remove<J extends TypedActionObject>(selector: J, actionId: number) {\r\n    this._dispatch(\r\n      removeCallState({\r\n        adapterId: selector.entityId,\r\n        actionId: actionId,\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Dispatch a call action to the store\r\n   * @param actionGroup The group to dispatch the call action of\r\n   * @param args The call action args\r\n   * @returns A mapped entity state\r\n   */\r\n  call<J extends TypedActionObject>(\r\n    actionGroup: J,\r\n    args: ReturnType<J['call']>['args']\r\n  ) {\r\n    return this.select(\r\n      actionGroup,\r\n      this._dispatch(actionGroup.call({ args }), actionGroup.isUnique)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * @param action The action to dispatch\r\n   */\r\n  private _dispatch(action: Action, isUnique?: boolean) {\r\n    const id = createActionId(action, isUnique);\r\n    this.__store.dispatch(action);\r\n    return id;\r\n  }\r\n}\r\n","// @ts-nocheck\n/* eslint-disable */\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n  RFC1738: 'RFC1738',\n  RFC3986: 'RFC3986',\n};\n\nexport default {\n  default: Format.RFC3986,\n  formatters: {\n    RFC1738: function (value) {\n      return replace.call(value, percentTwenties, '+');\n    },\n    RFC3986: function (value) {\n      return String(value);\n    },\n  },\n  RFC1738: Format.RFC1738,\n  RFC3986: Format.RFC3986,\n};\n","// @ts-nocheck\n/* eslint-disable */\n\nimport formats from './formats';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n  var array = [];\n  for (var i = 0; i < 256; ++i) {\n    array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n  }\n\n  return array;\n})();\n\nvar compactQueue = function compactQueue(queue) {\n  while (queue.length > 1) {\n    var item = queue.pop();\n    var obj = item.obj[item.prop];\n\n    if (isArray(obj)) {\n      var compacted = [];\n\n      for (var j = 0; j < obj.length; ++j) {\n        if (typeof obj[j] !== 'undefined') {\n          compacted.push(obj[j]);\n        }\n      }\n\n      item.obj[item.prop] = compacted;\n    }\n  }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n  var obj = options && options.plainObjects ? Object.create(null) : {};\n  for (var i = 0; i < source.length; ++i) {\n    if (typeof source[i] !== 'undefined') {\n      obj[i] = source[i];\n    }\n  }\n\n  return obj;\n};\n\nvar merge = function merge(target, source, options) {\n  /* eslint no-param-reassign: 0 */\n  if (!source) {\n    return target;\n  }\n\n  if (typeof source !== 'object') {\n    if (isArray(target)) {\n      target.push(source);\n    } else if (target && typeof target === 'object') {\n      if (\n        (options && (options.plainObjects || options.allowPrototypes)) ||\n        !has.call(Object.prototype, source)\n      ) {\n        target[source] = true;\n      }\n    } else {\n      return [target, source];\n    }\n\n    return target;\n  }\n\n  if (!target || typeof target !== 'object') {\n    return [target].concat(source);\n  }\n\n  var mergeTarget = target;\n  if (isArray(target) && !isArray(source)) {\n    mergeTarget = arrayToObject(target, options);\n  }\n\n  if (isArray(target) && isArray(source)) {\n    source.forEach(function (item, i) {\n      if (has.call(target, i)) {\n        var targetItem = target[i];\n        if (\n          targetItem &&\n          typeof targetItem === 'object' &&\n          item &&\n          typeof item === 'object'\n        ) {\n          target[i] = merge(targetItem, item, options);\n        } else {\n          target.push(item);\n        }\n      } else {\n        target[i] = item;\n      }\n    });\n    return target;\n  }\n\n  return Object.keys(source).reduce(function (acc, key) {\n    var value = source[key];\n\n    if (has.call(acc, key)) {\n      acc[key] = merge(acc[key], value, options);\n    } else {\n      acc[key] = value;\n    }\n    return acc;\n  }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n  return Object.keys(source).reduce(function (acc, key) {\n    acc[key] = source[key];\n    return acc;\n  }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n  var strWithoutPlus = str.replace(/\\+/g, ' ');\n  if (charset === 'iso-8859-1') {\n    // unescape never throws, no try...catch needed:\n    return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n  }\n  // utf-8\n  try {\n    return decodeURIComponent(strWithoutPlus);\n  } catch (e) {\n    return strWithoutPlus;\n  }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n  // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n  // It has been adapted here for stricter adherence to RFC 3986\n  if (str.length === 0) {\n    return str;\n  }\n\n  var string = str;\n  if (typeof str === 'symbol') {\n    string = Symbol.prototype.toString.call(str);\n  } else if (typeof str !== 'string') {\n    string = String(str);\n  }\n\n  if (charset === 'iso-8859-1') {\n    return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n      return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n    });\n  }\n\n  var out = '';\n  for (var i = 0; i < string.length; ++i) {\n    var c = string.charCodeAt(i);\n\n    if (\n      c === 0x2d || // -\n      c === 0x2e || // .\n      c === 0x5f || // _\n      c === 0x7e || // ~\n      (c >= 0x30 && c <= 0x39) || // 0-9\n      (c >= 0x41 && c <= 0x5a) || // a-z\n      (c >= 0x61 && c <= 0x7a) || // A-Z\n      (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n    ) {\n      out += string.charAt(i);\n      continue;\n    }\n\n    if (c < 0x80) {\n      out = out + hexTable[c];\n      continue;\n    }\n\n    if (c < 0x800) {\n      out = out + (hexTable[0xc0 | (c >> 6)] + hexTable[0x80 | (c & 0x3f)]);\n      continue;\n    }\n\n    if (c < 0xd800 || c >= 0xe000) {\n      out =\n        out +\n        (hexTable[0xe0 | (c >> 12)] +\n          hexTable[0x80 | ((c >> 6) & 0x3f)] +\n          hexTable[0x80 | (c & 0x3f)]);\n      continue;\n    }\n\n    i += 1;\n    c = 0x10000 + (((c & 0x3ff) << 10) | (string.charCodeAt(i) & 0x3ff));\n    /* eslint operator-linebreak: [2, \"before\"] */\n    out +=\n      hexTable[0xf0 | (c >> 18)] +\n      hexTable[0x80 | ((c >> 12) & 0x3f)] +\n      hexTable[0x80 | ((c >> 6) & 0x3f)] +\n      hexTable[0x80 | (c & 0x3f)];\n  }\n\n  return out;\n};\n\nvar compact = function compact(value) {\n  var queue = [{ obj: { o: value }, prop: 'o' }];\n  var refs = [];\n\n  for (var i = 0; i < queue.length; ++i) {\n    var item = queue[i];\n    var obj = item.obj[item.prop];\n\n    var keys = Object.keys(obj);\n    for (var j = 0; j < keys.length; ++j) {\n      var key = keys[j];\n      var val = obj[key];\n      if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n        queue.push({ obj: obj, prop: key });\n        refs.push(val);\n      }\n    }\n  }\n\n  compactQueue(queue);\n\n  return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n  return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n  if (!obj || typeof obj !== 'object') {\n    return false;\n  }\n\n  return !!(\n    obj.constructor &&\n    obj.constructor.isBuffer &&\n    obj.constructor.isBuffer(obj)\n  );\n};\n\nvar combine = function combine(a, b) {\n  return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n  if (isArray(val)) {\n    var mapped = [];\n    for (var i = 0; i < val.length; i += 1) {\n      mapped.push(fn(val[i]));\n    }\n    return mapped;\n  }\n  return fn(val);\n};\n\nexport default {\n  arrayToObject: arrayToObject,\n  assign: assign,\n  combine: combine,\n  compact: compact,\n  decode: decode,\n  encode: encode,\n  isBuffer: isBuffer,\n  isRegExp: isRegExp,\n  maybeMap: maybeMap,\n  merge: merge,\n};\n","export const getSideChannel = () => {\r\n  const map = new WeakMap();\r\n\r\n  const channel = {\r\n    get: (key: Record<string, unknown> | Function) => {\r\n      return map.get(key);\r\n    },\r\n    set: (key: Record<string, unknown> | Function, value: unknown) => {\r\n      map.set(key, value);\r\n    },\r\n    has: (key: Record<string, unknown> | Function) => {\r\n      return map.has(key);\r\n    },\r\n  };\r\n\r\n  return channel;\r\n};\r\n","// @ts-nocheck\n/* eslint-disable */\n\nimport utils from './utils';\nimport formats from './formats';\nimport { getSideChannel } from './side-channel';\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n  brackets: function brackets(prefix) {\n    return prefix + '[]';\n  },\n  comma: 'comma',\n  indices: function indices(prefix, key) {\n    return prefix + '[' + key + ']';\n  },\n  repeat: function repeat(prefix) {\n    return prefix;\n  },\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n  push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n  addQueryPrefix: false,\n  allowDots: false,\n  charset: 'utf-8',\n  charsetSentinel: false,\n  delimiter: '&',\n  encode: true,\n  encoder: utils.encode,\n  encodeValuesOnly: false,\n  format: defaultFormat,\n  formatter: formats.formatters[defaultFormat],\n  // deprecated\n  indices: false,\n  serializeDate: function serializeDate(date) {\n    return toISO.call(date);\n  },\n  skipNulls: false,\n  strictNullHandling: false,\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n  return (\n    typeof v === 'string' ||\n    typeof v === 'number' ||\n    typeof v === 'boolean' ||\n    typeof v === 'symbol' ||\n    typeof v === 'bigint'\n  );\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n  object,\n  prefix,\n  generateArrayPrefix,\n  strictNullHandling,\n  skipNulls,\n  encoder,\n  filter,\n  sort,\n  allowDots,\n  serializeDate,\n  format,\n  formatter,\n  encodeValuesOnly,\n  charset,\n  sideChannel\n) {\n  var obj = object;\n\n  var tmpSc = sideChannel;\n  var step = 0;\n  var findFlag = false;\n  while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n    // Where object last appeared in the ref tree\n    var pos = tmpSc.get(object);\n    step += 1;\n    if (typeof pos !== 'undefined') {\n      if (pos === step) {\n        throw new RangeError('Cyclic object value');\n      } else {\n        findFlag = true; // Break while\n      }\n    }\n    if (typeof tmpSc.get(sentinel) === 'undefined') {\n      step = 0;\n    }\n  }\n\n  if (typeof filter === 'function') {\n    obj = filter(prefix, obj);\n  } else if (obj instanceof Date) {\n    obj = serializeDate(obj);\n  } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n    obj = utils.maybeMap(obj, function (value) {\n      if (value instanceof Date) {\n        return serializeDate(value);\n      }\n      return value;\n    });\n  }\n\n  if (obj === null) {\n    if (strictNullHandling) {\n      return encoder && !encodeValuesOnly\n        ? encoder(prefix, defaults.encoder, charset, 'key', format)\n        : prefix;\n    }\n\n    obj = '';\n  }\n\n  if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n    if (encoder) {\n      var keyValue = encodeValuesOnly\n        ? prefix\n        : encoder(prefix, defaults.encoder, charset, 'key', format);\n      if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n        var valuesArray = split.call(String(obj), ',');\n        var valuesJoined = '';\n        for (var i = 0; i < valuesArray.length; ++i) {\n          valuesJoined +=\n            (i === 0 ? '' : ',') +\n            formatter(\n              encoder(\n                valuesArray[i],\n                defaults.encoder,\n                charset,\n                'value',\n                format\n              )\n            );\n        }\n        return [formatter(keyValue) + '=' + valuesJoined];\n      }\n      return [\n        formatter(keyValue) +\n          '=' +\n          formatter(encoder(obj, defaults.encoder, charset, 'value', format)),\n      ];\n    }\n    return [formatter(prefix) + '=' + formatter(String(obj))];\n  }\n\n  var values = [];\n\n  if (typeof obj === 'undefined') {\n    return values;\n  }\n\n  var objKeys;\n  if (generateArrayPrefix === 'comma' && isArray(obj)) {\n    // we need to join elements in\n    objKeys = [\n      { value: obj.length > 0 ? obj.join(',') || null : void undefined },\n    ];\n  } else if (isArray(filter)) {\n    objKeys = filter;\n  } else {\n    var keys = Object.keys(obj);\n    objKeys = sort ? keys.sort(sort) : keys;\n  }\n\n  for (var j = 0; j < objKeys.length; ++j) {\n    var key = objKeys[j];\n    var value =\n      typeof key === 'object' && typeof key.value !== 'undefined'\n        ? key.value\n        : obj[key];\n\n    if (skipNulls && value === null) {\n      continue;\n    }\n\n    var keyPrefix = isArray(obj)\n      ? typeof generateArrayPrefix === 'function'\n        ? generateArrayPrefix(prefix, key)\n        : prefix\n      : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n    sideChannel.set(object, step);\n    var valueSideChannel = getSideChannel();\n    valueSideChannel.set(sentinel, sideChannel);\n    pushToArray(\n      values,\n      stringify(\n        value,\n        keyPrefix,\n        generateArrayPrefix,\n        strictNullHandling,\n        skipNulls,\n        encoder,\n        filter,\n        sort,\n        allowDots,\n        serializeDate,\n        format,\n        formatter,\n        encodeValuesOnly,\n        charset,\n        valueSideChannel\n      )\n    );\n  }\n\n  return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n  if (!opts) {\n    return defaults;\n  }\n\n  if (\n    opts.encoder !== null &&\n    typeof opts.encoder !== 'undefined' &&\n    typeof opts.encoder !== 'function'\n  ) {\n    throw new TypeError('Encoder has to be a function.');\n  }\n\n  var charset = opts.charset || defaults.charset;\n  if (\n    typeof opts.charset !== 'undefined' &&\n    opts.charset !== 'utf-8' &&\n    opts.charset !== 'iso-8859-1'\n  ) {\n    throw new TypeError(\n      'The charset option must be either utf-8, iso-8859-1, or undefined'\n    );\n  }\n\n  var format = formats['default'];\n  if (typeof opts.format !== 'undefined') {\n    if (!has.call(formats.formatters, opts.format)) {\n      throw new TypeError('Unknown format option provided.');\n    }\n    format = opts.format;\n  }\n  var formatter = formats.formatters[format];\n\n  var filter = defaults.filter;\n  if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n    filter = opts.filter;\n  }\n\n  return {\n    addQueryPrefix:\n      typeof opts.addQueryPrefix === 'boolean'\n        ? opts.addQueryPrefix\n        : defaults.addQueryPrefix,\n    allowDots:\n      typeof opts.allowDots === 'undefined'\n        ? defaults.allowDots\n        : !!opts.allowDots,\n    charset: charset,\n    charsetSentinel:\n      typeof opts.charsetSentinel === 'boolean'\n        ? opts.charsetSentinel\n        : defaults.charsetSentinel,\n    delimiter:\n      typeof opts.delimiter === 'undefined'\n        ? defaults.delimiter\n        : opts.delimiter,\n    encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n    encoder:\n      typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n    encodeValuesOnly:\n      typeof opts.encodeValuesOnly === 'boolean'\n        ? opts.encodeValuesOnly\n        : defaults.encodeValuesOnly,\n    filter: filter,\n    format: format,\n    formatter: formatter,\n    serializeDate:\n      typeof opts.serializeDate === 'function'\n        ? opts.serializeDate\n        : defaults.serializeDate,\n    skipNulls:\n      typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n    sort: typeof opts.sort === 'function' ? opts.sort : null,\n    strictNullHandling:\n      typeof opts.strictNullHandling === 'boolean'\n        ? opts.strictNullHandling\n        : defaults.strictNullHandling,\n  };\n};\n\nexport default (object, opts) => {\n  var obj = object;\n  var options = normalizeStringifyOptions(opts);\n\n  var objKeys;\n  var filter;\n\n  if (typeof options.filter === 'function') {\n    filter = options.filter;\n    obj = filter('', obj);\n  } else if (isArray(options.filter)) {\n    filter = options.filter;\n    objKeys = filter;\n  }\n\n  var keys = [];\n\n  if (typeof obj !== 'object' || obj === null) {\n    return '';\n  }\n\n  var arrayFormat;\n  if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n    arrayFormat = opts.arrayFormat;\n  } else if (opts && 'indices' in opts) {\n    arrayFormat = opts.indices ? 'indices' : 'repeat';\n  } else {\n    arrayFormat = 'indices';\n  }\n\n  var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n  if (!objKeys) {\n    objKeys = Object.keys(obj);\n  }\n\n  if (options.sort) {\n    objKeys.sort(options.sort);\n  }\n\n  var sideChannel = getSideChannel();\n  for (var i = 0; i < objKeys.length; ++i) {\n    var key = objKeys[i];\n\n    if (options.skipNulls && obj[key] === null) {\n      continue;\n    }\n    pushToArray(\n      keys,\n      stringify(\n        obj[key],\n        key,\n        generateArrayPrefix,\n        options.strictNullHandling,\n        options.skipNulls,\n        options.encode ? options.encoder : null,\n        options.filter,\n        options.sort,\n        options.allowDots,\n        options.serializeDate,\n        options.format,\n        options.formatter,\n        options.encodeValuesOnly,\n        options.charset,\n        sideChannel\n      )\n    );\n  }\n\n  var joined = keys.join(options.delimiter);\n  var prefix = options.addQueryPrefix === true ? '?' : '';\n\n  if (options.charsetSentinel) {\n    if (options.charset === 'iso-8859-1') {\n      // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n      prefix += 'utf8=%26%2310003%3B&';\n    } else {\n      // encodeURIComponent('✓')\n      prefix += 'utf8=%E2%9C%93&';\n    }\n  }\n\n  return joined.length > 0 ? prefix + joined : '';\n};\n","import { HttpClient } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport {\r\n  HttpCallOptions,\r\n  HttpDeleteOptions,\r\n  HttpGetOptions,\r\n  HttpPatchOptions,\r\n  HttpPostOptions,\r\n  HttpPutOptions,\r\n} from '../types';\r\nimport { generateEntityId } from './util';\r\nimport { type IStringifyOptions, stringify } from '../qs';\r\n\r\ninterface CacheItem {\r\n  validUntil: number;\r\n  data: any;\r\n}\r\n\r\nexport const defineResponseType = <T extends any>() => null as any as T;\r\n\r\n// TODO (TRB): Add _baseConfig strategy (fallback or merge), default = fallback\r\nexport class ServiceBase {\r\n  private _cache: Record<number, CacheItem> = {};\r\n\r\n  constructor(\r\n    private __http: HttpClient,\r\n    private _apiBase: string,\r\n    private _baseConfig?: HttpCallOptions\r\n  ) {}\r\n\r\n  get<\r\n    HttpOpts extends HttpGetOptions,\r\n    ResponseType extends ReturnType<typeof defineResponseType> = ReturnType<\r\n      typeof defineResponseType\r\n    >\r\n  >({\r\n    apiRoute,\r\n    httpOpts,\r\n    extras,\r\n  }: {\r\n    apiRoute: HttpOpts['queryParams'] extends object\r\n      ? (queryParams: HttpOpts['queryParams']) => string\r\n      : string;\r\n    responseType: ResponseType;\r\n    httpOpts?: HttpOpts;\r\n    extras?: {\r\n      apiBaseOverride?: string;\r\n      paramsArrayFormat?: IStringifyOptions['arrayFormat'];\r\n      cacheExpiresIn?: number;\r\n      skipCache?: boolean;\r\n    };\r\n  }) {\r\n    const route =\r\n      typeof apiRoute === 'string' ? apiRoute : apiRoute(httpOpts?.queryParams);\r\n\r\n    let cacheIdParams = 'NO_ARG' + JSON.stringify({ httpOpts, route, extras });\r\n\r\n    const { apiBase, headers, responseType, queryString } = this._getCallConfig(\r\n      httpOpts,\r\n      extras\r\n    );\r\n\r\n    const cacheId = generateEntityId(cacheIdParams);\r\n    const cacheItem = this._cache[cacheId];\r\n\r\n    if (cacheItem) {\r\n      if (\r\n        new Date().getTime() < cacheItem.validUntil &&\r\n        !extras?.skipCache &&\r\n        !httpOpts?.actionOptions?.extras?.skipCache\r\n      ) {\r\n        return of(cacheItem.data) as Observable<ResponseType>;\r\n      } else {\r\n        delete this._cache[cacheId];\r\n      }\r\n    }\r\n\r\n    return this.__http\r\n      .get<ResponseType>(\r\n        `${apiBase}${route}${queryString ? '?' + queryString : ''}`,\r\n        {\r\n          headers: headers,\r\n          observe: 'response',\r\n          responseType: responseType as any,\r\n        }\r\n      )\r\n      .pipe(\r\n        tap((r) => {\r\n          if (extras?.skipCache || httpOpts?.actionOptions?.extras?.skipCache) {\r\n            return;\r\n          }\r\n\r\n          const sMaxAgeMatch = r.headers\r\n            .get('Cache-Control')\r\n            ?.match(/s-maxage=(\\d+)/);\r\n          const maxAgeMatch = r.headers\r\n            .get('Cache-Control')\r\n            ?.match(/max-age=(\\d+)/);\r\n\r\n          if (\r\n            (!sMaxAgeMatch || !sMaxAgeMatch[1]) &&\r\n            (!maxAgeMatch || !maxAgeMatch[1]) &&\r\n            !extras?.cacheExpiresIn\r\n          ) {\r\n            return;\r\n          }\r\n\r\n          const cacheTime =\r\n            extras?.cacheExpiresIn ??\r\n            (sMaxAgeMatch && sMaxAgeMatch[1]) ??\r\n            (maxAgeMatch && maxAgeMatch[1]);\r\n\r\n          if (!cacheTime) {\r\n            return;\r\n          }\r\n\r\n          const newCacheItem: CacheItem = {\r\n            data: responseType === 'arraybuffer' ? { file: r.body } : r.body,\r\n            validUntil: new Date().getTime() + +cacheTime * 1000,\r\n          };\r\n\r\n          this._cache[cacheId] = newCacheItem;\r\n        }),\r\n        map((r) => {\r\n          if (responseType === 'arraybuffer') {\r\n            return { file: r.body } as any as ResponseType;\r\n          }\r\n          return r.body as ResponseType;\r\n        })\r\n      );\r\n  }\r\n\r\n  post<\r\n    HttpOpts extends HttpPostOptions,\r\n    ResponseType extends ReturnType<typeof defineResponseType> = ReturnType<\r\n      typeof defineResponseType\r\n    >\r\n  >({\r\n    apiRoute,\r\n    httpOpts,\r\n    extras,\r\n  }: {\r\n    apiRoute: HttpOpts['queryParams'] extends object\r\n      ? (queryParams: HttpOpts['queryParams']) => string\r\n      : string;\r\n    responseType: ResponseType;\r\n    httpOpts?: HttpOpts;\r\n    extras?: {\r\n      apiBaseOverride?: string;\r\n      paramsArrayFormat?: IStringifyOptions['arrayFormat'];\r\n    };\r\n  }) {\r\n    const route =\r\n      typeof apiRoute === 'string' ? apiRoute : apiRoute(httpOpts?.queryParams);\r\n\r\n    const { apiBase, headers, responseType, queryString } = this._getCallConfig(\r\n      httpOpts,\r\n      extras\r\n    );\r\n\r\n    return this.__http\r\n      .post<ResponseType>(\r\n        `${apiBase}${route}${queryString ? '?' + queryString : ''}`,\r\n        httpOpts?.body,\r\n        {\r\n          headers: headers,\r\n\r\n          responseType: responseType as any,\r\n        }\r\n      )\r\n      .pipe(\r\n        map((r) => {\r\n          if (responseType === 'arraybuffer') {\r\n            return { file: r } as any as ResponseType;\r\n          }\r\n          return r;\r\n        })\r\n      );\r\n  }\r\n\r\n  put<\r\n    HttpOpts extends HttpPutOptions,\r\n    ResponseType extends ReturnType<typeof defineResponseType> = ReturnType<\r\n      typeof defineResponseType\r\n    >\r\n  >({\r\n    apiRoute,\r\n    httpOpts,\r\n    extras,\r\n  }: {\r\n    apiRoute: HttpOpts['queryParams'] extends object\r\n      ? (queryParams: HttpOpts['queryParams']) => string\r\n      : string;\r\n    responseType: ResponseType;\r\n    httpOpts?: HttpOpts;\r\n    extras?: {\r\n      apiBaseOverride?: string;\r\n      paramsArrayFormat?: IStringifyOptions['arrayFormat'];\r\n    };\r\n  }) {\r\n    const route =\r\n      typeof apiRoute === 'string' ? apiRoute : apiRoute(httpOpts?.queryParams);\r\n\r\n    const { apiBase, headers, params, responseType, queryString } =\r\n      this._getCallConfig(httpOpts, extras);\r\n\r\n    return this.__http\r\n      .put<ResponseType>(\r\n        `${apiBase}${route}${queryString ? '?' + queryString : ''}`,\r\n        httpOpts?.body,\r\n        {\r\n          headers: headers,\r\n          responseType: responseType as any,\r\n        }\r\n      )\r\n      .pipe(\r\n        map((r) => {\r\n          if (responseType === 'arraybuffer') {\r\n            return { file: r } as any as ResponseType;\r\n          }\r\n          return r;\r\n        })\r\n      );\r\n  }\r\n\r\n  patch<\r\n    HttpOpts extends HttpPatchOptions,\r\n    ResponseType extends ReturnType<typeof defineResponseType> = ReturnType<\r\n      typeof defineResponseType\r\n    >\r\n  >({\r\n    apiRoute,\r\n    httpOpts,\r\n    extras,\r\n  }: {\r\n    apiRoute: HttpOpts['queryParams'] extends object\r\n      ? (queryParams: HttpOpts['queryParams']) => string\r\n      : string;\r\n    responseType: ResponseType;\r\n    httpOpts?: HttpOpts;\r\n    extras?: {\r\n      apiBaseOverride?: string;\r\n      paramsArrayFormat?: IStringifyOptions['arrayFormat'];\r\n    };\r\n  }) {\r\n    const route =\r\n      typeof apiRoute === 'string' ? apiRoute : apiRoute(httpOpts?.queryParams);\r\n\r\n    const { apiBase, headers, responseType, queryString } = this._getCallConfig(\r\n      httpOpts,\r\n      extras\r\n    );\r\n\r\n    return this.__http\r\n      .patch<ResponseType>(\r\n        `${apiBase}${route}${queryString ? '?' + queryString : ''}`,\r\n        httpOpts?.body,\r\n        {\r\n          headers: headers,\r\n          responseType: responseType as any,\r\n        }\r\n      )\r\n      .pipe(\r\n        map((r) => {\r\n          if (responseType === 'arraybuffer') {\r\n            return { file: r } as any as ResponseType;\r\n          }\r\n          return r;\r\n        })\r\n      );\r\n  }\r\n\r\n  delete<\r\n    HttpOpts extends HttpDeleteOptions,\r\n    ResponseType extends ReturnType<typeof defineResponseType> = ReturnType<\r\n      typeof defineResponseType\r\n    >\r\n  >({\r\n    apiRoute,\r\n    httpOpts,\r\n    extras,\r\n  }: {\r\n    apiRoute: HttpOpts['queryParams'] extends object\r\n      ? (queryParams: HttpOpts['queryParams']) => string\r\n      : string;\r\n    responseType: ResponseType;\r\n    httpOpts?: HttpOpts;\r\n    extras?: {\r\n      apiBaseOverride?: string;\r\n      paramsArrayFormat?: IStringifyOptions['arrayFormat'];\r\n    };\r\n  }) {\r\n    const route =\r\n      typeof apiRoute === 'string' ? apiRoute : apiRoute(httpOpts?.queryParams);\r\n\r\n    const { apiBase, headers, responseType, queryString } = this._getCallConfig(\r\n      httpOpts,\r\n      extras\r\n    );\r\n\r\n    return this.__http\r\n      .delete<ResponseType>(\r\n        `${apiBase}${route}${queryString ? '?' + queryString : ''}`,\r\n        {\r\n          headers: headers,\r\n          responseType: responseType as any,\r\n        }\r\n      )\r\n      .pipe(\r\n        map((r) => {\r\n          if (responseType === 'arraybuffer') {\r\n            return { file: r } as any as ResponseType;\r\n          }\r\n          return r;\r\n        })\r\n      );\r\n  }\r\n\r\n  clearCache() {\r\n    this._cache = {};\r\n  }\r\n\r\n  private _getCallConfig(\r\n    httpOpts?: HttpCallOptions,\r\n    extras?: {\r\n      apiBaseOverride?: string;\r\n      paramsArrayFormat?: IStringifyOptions['arrayFormat'];\r\n    }\r\n  ) {\r\n    const apiBase = extras?.apiBaseOverride || this._apiBase || '';\r\n    const headers =\r\n      httpOpts?.actionOptions?.headers ||\r\n      httpOpts?.headers ||\r\n      this._baseConfig?.headers;\r\n    const params = httpOpts?.params || this._baseConfig?.params;\r\n    const queryParams = httpOpts?.queryParams || this._baseConfig?.queryParams;\r\n    const responseType =\r\n      httpOpts?.responseType || this._baseConfig?.responseType || 'json';\r\n\r\n    const queryString = stringify(params, {\r\n      arrayFormat: extras?.paramsArrayFormat ?? 'brackets',\r\n    });\r\n\r\n    return { apiBase, headers, params, queryParams, responseType, queryString };\r\n  }\r\n}\r\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Observable, of } from 'rxjs';\r\nimport {\r\n  catchError,\r\n  concatMap,\r\n  exhaustMap,\r\n  map,\r\n  mergeMap,\r\n  switchMap,\r\n} from 'rxjs/operators';\r\nimport {\r\n  SuccessCreator,\r\n  ActionCallArgs,\r\n  ActionCallSideUpdates,\r\n  ActionSuccessResponse,\r\n  TypedActionObject,\r\n} from '../types';\r\nimport { buildErrorFromHttpError } from './error.helpers';\r\nimport { Action } from '@ngrx/store';\r\n\r\ntype SideUpdateObject<\r\n  SuccessArgs = any,\r\n  SuccessResponse = any,\r\n  OriginSuccessResponse = any\r\n> = {\r\n  action: SuccessCreator<SuccessArgs, SuccessResponse>;\r\n  mapFn?: (x: OriginSuccessResponse) => SuccessResponse;\r\n};\r\n\r\ntype SideUpdates<\r\n  SideUpdateArgs,\r\n  MapFnArg,\r\n  UpdateConfig extends SideUpdates<SideUpdateArgs, MapFnArg, UpdateConfig>\r\n> = {\r\n  [Property in keyof SideUpdateArgs]: MapFnArg extends ReturnType<\r\n    UpdateConfig[Property]['action']\r\n  >['response']\r\n    ? SideUpdateObject<\r\n        SideUpdateArgs[Property],\r\n        ReturnType<UpdateConfig[Property]['action']>['response'],\r\n        MapFnArg\r\n      >\r\n    : Required<\r\n        SideUpdateObject<\r\n          SideUpdateArgs[Property],\r\n          ReturnType<UpdateConfig[Property]['action']>['response'],\r\n          MapFnArg\r\n        >\r\n      >;\r\n};\r\n\r\ntype OnActionArgs<\r\n  T extends TypedActionObject,\r\n  J extends SideUpdates<ActionCallSideUpdates<T>, ActionSuccessResponse<T>, J>\r\n> = ActionCallSideUpdates<T> extends Record<string, any>\r\n  ? {\r\n      action: T;\r\n      serviceCall: (\r\n        args: ActionCallArgs<T>\r\n      ) => Observable<ActionSuccessResponse<T>>;\r\n      sideUpdates: J;\r\n    }\r\n  : {\r\n      action: T;\r\n      serviceCall: (\r\n        args: ActionCallArgs<T>\r\n      ) => Observable<ActionSuccessResponse<T>>;\r\n      sideUpdates?: never;\r\n    };\r\n\r\nexport class EffectBase {\r\n  constructor(private __actions$: Actions, private __featureService: any) {}\r\n\r\n  onActionSwitchMap<\r\n    TAO extends TypedActionObject,\r\n    SU extends SideUpdates<\r\n      ActionCallSideUpdates<TAO>,\r\n      ActionSuccessResponse<TAO>,\r\n      SU\r\n    >\r\n  >({ action, serviceCall, sideUpdates }: OnActionArgs<TAO, SU>) {\r\n    return createEffect(() =>\r\n      this.__actions$.pipe(\r\n        ofType(action.call),\r\n        switchMap(({ args }: { args: ReturnType<TAO['call']>['args'] }) =>\r\n          this._serviceCall(action, args, serviceCall, sideUpdates)\r\n        )\r\n      )\r\n    );\r\n  }\r\n\r\n  onActionMergeMap<\r\n    TAO extends TypedActionObject,\r\n    SU extends SideUpdates<\r\n      ActionCallSideUpdates<TAO>,\r\n      ActionSuccessResponse<TAO>,\r\n      SU\r\n    >\r\n  >({ action, serviceCall, sideUpdates }: OnActionArgs<TAO, SU>) {\r\n    return createEffect(() =>\r\n      this.__actions$.pipe(\r\n        ofType(action.call),\r\n        mergeMap(({ args }: { args: ReturnType<TAO['call']>['args'] }) =>\r\n          this._serviceCall(action, args, serviceCall, sideUpdates)\r\n        )\r\n      )\r\n    );\r\n  }\r\n\r\n  onActionExhaustMap<\r\n    TAO extends TypedActionObject,\r\n    SU extends SideUpdates<\r\n      ActionCallSideUpdates<TAO>,\r\n      ActionSuccessResponse<TAO>,\r\n      SU\r\n    >\r\n  >({ action, serviceCall, sideUpdates }: OnActionArgs<TAO, SU>) {\r\n    return createEffect(() =>\r\n      this.__actions$.pipe(\r\n        ofType(action.call),\r\n        exhaustMap(({ args }: { args: ReturnType<TAO['call']>['args'] }) =>\r\n          this._serviceCall(action, args, serviceCall, sideUpdates)\r\n        )\r\n      )\r\n    );\r\n  }\r\n\r\n  onActionConcatMap<\r\n    TAO extends TypedActionObject,\r\n    SU extends SideUpdates<\r\n      ActionCallSideUpdates<TAO>,\r\n      ActionSuccessResponse<TAO>,\r\n      SU\r\n    >\r\n  >({ action, serviceCall, sideUpdates }: OnActionArgs<TAO, SU>) {\r\n    return createEffect(() =>\r\n      this.__actions$.pipe(\r\n        ofType(action.call),\r\n        concatMap(({ args }: { args: ReturnType<TAO['call']>['args'] }) =>\r\n          this._serviceCall(action, args, serviceCall, sideUpdates)\r\n        )\r\n      )\r\n    );\r\n  }\r\n\r\n  private _serviceCall<\r\n    TAO extends TypedActionObject,\r\n    SU extends SideUpdates<\r\n      ActionCallSideUpdates<TAO>,\r\n      ActionSuccessResponse<TAO>,\r\n      SU\r\n    >,\r\n    ACA extends ActionCallArgs<TAO>\r\n  >(\r\n    action: TAO,\r\n    args: ACA,\r\n    serviceCall: (args: ACA) => Observable<ActionSuccessResponse<TAO>>,\r\n    sideUpdates?: SU\r\n  ) {\r\n    return serviceCall\r\n      .bind(this.__featureService)(args)\r\n      .pipe(\r\n        map((response) => {\r\n          const actionDefault: Action[] = [action.success({ response, args })];\r\n\r\n          if (sideUpdates) {\r\n            for (const updateKey of Object.keys(sideUpdates)) {\r\n              const update = sideUpdates[updateKey] as SideUpdateObject;\r\n\r\n              actionDefault.push(\r\n                update.action({\r\n                  args: args['sideUpdates'][updateKey],\r\n                  response: update.mapFn ? update.mapFn(response) : response,\r\n                })\r\n              );\r\n            }\r\n          }\r\n\r\n          return actionDefault;\r\n        }),\r\n        switchMap((a) => a),\r\n        catchError((error) =>\r\n          of(action.failure(buildErrorFromHttpError({ error, args })))\r\n        )\r\n      );\r\n  }\r\n}\r\n","import { Action } from '@ngrx/store';\nimport { CallState } from '../types';\nimport { createCallState } from './reducer.helpers';\nimport { uniformActionType } from './status.helpers';\nimport { createActionId } from './util';\n\nexport const createTestingState = <\n  ActionToCall extends Action,\n  Reducer extends (a: InitialState, b: ActionToCall) => any,\n  InitialState,\n  CS extends CallState\n>({\n  action,\n  reducer,\n  initialState,\n  callState,\n}: {\n  action: ActionToCall;\n  reducer: Reducer;\n  initialState: InitialState;\n  callState: CS;\n}) => {\n  const actionId = createActionId(action);\n  const actionKey = uniformActionType(action.type);\n  const state = reducer(initialState, action);\n  const callStateEntity = createCallState(action, callState);\n\n  state[actionKey].entities[actionId].timestamp = callStateEntity.timestamp;\n\n  const expectedState = {\n    ...initialState,\n    [actionKey]: { ids: [actionId], entities: { [actionId]: callStateEntity } },\n  };\n\n  return { state, expectedState };\n};\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  Input,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { MappedEntityState } from '../../types/types';\nimport { UNIQUE_ID } from '../../helpers';\nimport { Subject } from 'rxjs';\n\ntype UiState = 'overview' | 'args' | 'error' | 'response' | 'cached-response';\n\n@Component({\n  selector: 'ngrxt-store-debug',\n  templateUrl: './store-debug.component.html',\n  styles: [\n    `\n      :host {\n        display: grid;\n        grid-template-columns: auto 1fr;\n        font-family: Arial, Helvetica, sans-serif;\n        background: rgb(48, 48, 48);\n        border-radius: 6px;\n        color: #fff;\n        margin-bottom: 1rem;\n      }\n\n      .store-debug {\n        padding: 1rem 1rem 2rem;\n        height: 390px;\n        overflow: auto;\n        color: #fff;\n        border-left: 1px solid rgb(151, 151, 151);\n      }\n\n      ul {\n        list-style-type: none;\n        margin: 0;\n        padding: 0;\n      }\n\n      .head {\n        padding: 12px 18px 6px 12px;\n        font-size: 12px;\n        text-align: left;\n      }\n\n      ul button {\n        all: unset;\n        width: calc(100% - 24px);\n        text-align: left;\n        padding: 4px 12px;\n        cursor: pointer;\n      }\n\n      ul button:hover,\n      ul button:focus-visible {\n        background-color: rgb(102, 102, 102);\n      }\n\n      ul button:disabled {\n        cursor: default;\n        pointer-events: none;\n        color: rgb(128, 128, 128);\n        background-color: transparent !important;\n        font-weight: 400 !important;\n      }\n\n      ul button.active {\n        background-color: rgb(153, 153, 153);\n        font-weight: 700;\n      }\n\n      .error {\n        height: 100%;\n        margin: 0;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        font-size: 24px;\n      }\n\n      .computed-head {\n        font-weight: 700;\n      }\n\n      .detail-head {\n        border-bottom: 1px solid rgb(151, 151, 151);\n        position: sticky;\n        top: 0;\n        margin: 0;\n        padding: 0 1rem 8px;\n        width: 100%;\n        margin-left: -1rem;\n        background: rgb(48, 48, 48);\n        display: flex;\n        justify-content: space-between;\n      }\n\n      .detail-head p {\n        margin: 0;\n      }\n\n      .detail-head button {\n        all: unset;\n        text-decoration: underline;\n        cursor: pointer;\n      }\n\n      .detail-head button + button {\n        margin-left: 10px;\n      }\n\n      th {\n        text-align-last: left;\n        padding-right: 1rem;\n        font-weight: 400;\n      }\n\n      table {\n        border-collapse: collapse;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.ShadowDom,\n})\nexport class StoreDebugComponent implements OnDestroy {\n  @Input()\n  store?: MappedEntityState<any>;\n\n  uiState: UiState = 'overview';\n\n  uniqueId = UNIQUE_ID;\n\n  private _destroy$ = new Subject<boolean>();\n\n  ngOnDestroy(): void {\n    this._destroy$.next(true);\n    this._destroy$.unsubscribe();\n  }\n\n  setUiState(newUiState: UiState) {\n    this.uiState = newUiState;\n  }\n\n  formatBytes(bytes: number | undefined, decimals = 2) {\n    if (bytes === undefined) {\n      return null;\n    }\n\n    if (bytes === 0) return '0 Bytes';\n\n    const k = 1024;\n    const dm = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n    return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n  }\n\n  startPolling() {\n    this.store?.startPolling({\n      intervalDuration: 2500,\n      killSwitch: this._destroy$,\n    });\n  }\n\n  stopPolling() {\n    this.store?.stopPolling();\n  }\n}\n","<nav>\n  <ul>\n    <li class=\"head\">\n      <h1>Store Debugger</h1>\n    </li>\n    <li>\n      <button\n        [disabled]=\"!store || (store.type$ | async) === null\"\n        (click)=\"setUiState('overview')\"\n        [ngClass]=\"{ active: uiState === 'overview' }\"\n      >\n        Overview\n      </button>\n    </li>\n    <li>\n      <button\n        [disabled]=\"!store || (store.type$ | async) === null\"\n        (click)=\"setUiState('args')\"\n        [ngClass]=\"{ active: uiState === 'args' }\"\n      >\n        Args\n      </button>\n    </li>\n    <li>\n      <button\n        [disabled]=\"\n          !store ||\n          (store.isError$ | async) === false ||\n          (store.type$ | async) === null\n        \"\n        (click)=\"setUiState('error')\"\n        [ngClass]=\"{ active: uiState === 'error' }\"\n      >\n        Error\n      </button>\n    </li>\n    <li>\n      <button\n        [disabled]=\"\n          !store ||\n          (store.isError$ | async) === true ||\n          (store.type$ | async) === null\n        \"\n        (click)=\"setUiState('response')\"\n        [ngClass]=\"{ active: uiState === 'response' }\"\n      >\n        Response\n      </button>\n    </li>\n    <li>\n      <button\n        [disabled]=\"\n          !store ||\n          (store.isError$ | async) === true ||\n          (store.type$ | async) === null\n        \"\n        (click)=\"setUiState('cached-response')\"\n        [ngClass]=\"{ active: uiState === 'cached-response' }\"\n      >\n        Cached Response\n      </button>\n    </li>\n  </ul>\n</nav>\n\n<div class=\"store-debug\">\n  <p class=\"error\" *ngIf=\"!store\">No store attached, please bind one!</p>\n\n  <p class=\"error\" *ngIf=\"store && (store!.type$ | async) === null\">\n    Attached store has been removed!\n  </p>\n\n  <div class=\"detail-head\" *ngIf=\"store?.type$ | async as type\">\n    <p>{{ type }}</p>\n    <div>\n      <button (click)=\"store!.refresh()\">Refresh</button>\n      <button\n        *ngIf=\"(store!.isPolling$ | async) === false\"\n        (click)=\"startPolling()\"\n      >\n        Start polling\n      </button>\n      <button\n        *ngIf=\"(store!.isPolling$ | async) === true\"\n        (click)=\"stopPolling()\"\n      >\n        Stop polling\n      </button>\n      <button (click)=\"store!.remove()\">Remove</button>\n    </div>\n  </div>\n\n  <ng-container *ngIf=\"store && (store?.type$ | async)\">\n    <ng-container [ngSwitch]=\"uiState\">\n      <ng-container *ngSwitchCase=\"'overview'\">\n        <p class=\"computed-head\">General</p>\n\n        <table>\n          <tr>\n            <th>isInit</th>\n            <td>{{ store?.isInit$ | async }}</td>\n          </tr>\n          <tr>\n            <th>isLoading</th>\n            <td>{{ store?.isLoading$ | async }}</td>\n          </tr>\n          <tr>\n            <th>isSuccess</th>\n            <td>{{ store?.isSuccess$ | async }}</td>\n          </tr>\n          <tr>\n            <th>isError</th>\n            <td>{{ store?.isError$ | async }}</td>\n          </tr>\n          <tr>\n            <th>entityId</th>\n            <td>{{ store?.entityId$ | async }}</td>\n          </tr>\n          <tr>\n            <th>type</th>\n            <td>{{ store?.type$ | async }}</td>\n          </tr>\n          <tr>\n            <th>callState</th>\n            <td>{{ store?.callState$ | async }}</td>\n          </tr>\n          <tr>\n            <th>timestamp</th>\n            <td>{{ store?.timestamp$ | async }}</td>\n          </tr>\n        </table>\n\n        <p class=\"computed-head\">Computed</p>\n\n        <table>\n          <tr>\n            <th>Args size</th>\n            <td>{{ formatBytes((store?.args$ | async | json)?.length) }}</td>\n          </tr>\n          <tr>\n            <th>Response size</th>\n            <td *ngIf=\"(store.isError$ | async) === false\">\n              {{ formatBytes((store?.response$ | async | json)?.length) }}\n            </td>\n            <td *ngIf=\"(store.isError$ | async) === true\">null</td>\n          </tr>\n          <tr>\n            <th>Error size</th>\n            <td *ngIf=\"(store.isError$ | async) === true\">\n              {{ formatBytes((store?.error$ | async | json)?.length) }}\n            </td>\n            <td *ngIf=\"(store.isError$ | async) === false\">null</td>\n          </tr>\n          <tr>\n            <th>Is unique</th>\n            <td>{{ (store?.entityId$ | async) === uniqueId }}</td>\n          </tr>\n          <tr>\n            <th>Timestamp</th>\n            <td>{{ store?.timestamp$ | async | date: 'full' }}</td>\n          </tr>\n        </table>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'args'\">\n        <pre\n          >{{ store?.args$ | async | json }}\n        </pre>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'error'\">\n        <pre\n          >{{ store?.error$ | async | json }}\n        </pre>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'response'\">\n        <pre\n          >{{ store?.response$ | async | json }}\n        </pre>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'cached-response'\">\n        <pre\n          >{{ store?.cachedResponse$ | async | json }}\n        </pre>\n      </ng-container>\n    </ng-container>\n  </ng-container>\n</div>\n","import {\n  ChangeDetectorRef,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { combineLatest, Subscription } from 'rxjs';\nimport { startWith, tap } from 'rxjs/operators';\nimport { MappedEntityState, TypedActionObject } from '../types';\nimport { State } from './types';\n\nconst DEFAULT_STATE: State<MappedEntityState<TypedActionObject>> = {\n  args: null,\n  cachedResponse: null,\n  callState: null,\n  entityId: null,\n  error: null,\n  isError: false,\n  isInit: false,\n  isLoading: false,\n  isPolling: false,\n  isSuccess: false,\n  refresh: () => {},\n  remove: () => {},\n  startPolling: () => {},\n  stopPolling: () => {},\n  response: null,\n  timestamp: null,\n  type: null,\n} as const;\n\n@Pipe({ name: 'suspense', pure: false })\nexport class SuspensePipe implements PipeTransform, OnDestroy {\n  private _subscription: Subscription | null = null;\n  private _currentMappedEntityState:\n    | MappedEntityState<TypedActionObject>\n    | undefined\n    | null = null;\n\n  private _state: State<MappedEntityState<TypedActionObject>> | null =\n    DEFAULT_STATE;\n\n  constructor(private _cdr: ChangeDetectorRef) {}\n\n  ngOnDestroy(): void {\n    this._dispose();\n  }\n\n  transform<T extends MappedEntityState<TypedActionObject>>(\n    value: T | null | undefined\n  ): State<T> {\n    if (!this._currentMappedEntityState) {\n      if (value) {\n        this._subscribe(value);\n      }\n    }\n\n    if (this._currentMappedEntityState !== value) {\n      this._dispose();\n\n      if (value) {\n        this._subscribe(value);\n      }\n    }\n\n    return this._state as any as State<T>;\n  }\n\n  private _subscribe(obj: MappedEntityState<TypedActionObject>) {\n    this._currentMappedEntityState = obj;\n\n    this._subscription = combineLatest([\n      this._currentMappedEntityState.args$,\n      this._currentMappedEntityState.cachedResponse$.pipe(startWith(null)),\n      this._currentMappedEntityState.callState$,\n      this._currentMappedEntityState.entityId$,\n      this._currentMappedEntityState.error$,\n      this._currentMappedEntityState.isError$,\n      this._currentMappedEntityState.isInit$,\n      this._currentMappedEntityState.isLoading$,\n      this._currentMappedEntityState.isPolling$,\n      this._currentMappedEntityState.isSuccess$,\n      this._currentMappedEntityState.response$,\n      this._currentMappedEntityState.timestamp$,\n      this._currentMappedEntityState.type$,\n    ])\n      .pipe(\n        tap(\n          ([\n            args,\n            cachedResponse,\n            callState,\n            entityId,\n            error,\n            isError,\n            isInit,\n            isLoading,\n            isPolling,\n            isSuccess,\n            response,\n            timestamp,\n            type,\n          ]) => {\n            this._state = {\n              args,\n              cachedResponse,\n              callState,\n              entityId,\n              error,\n              isError,\n              isInit,\n              isLoading,\n              isPolling,\n              isSuccess,\n              response,\n              timestamp,\n              type,\n              refresh:\n                this._currentMappedEntityState?.refresh ??\n                DEFAULT_STATE.refresh,\n              remove:\n                this._currentMappedEntityState?.remove ?? DEFAULT_STATE.remove,\n              startPolling:\n                this._currentMappedEntityState?.startPolling ??\n                DEFAULT_STATE.startPolling,\n              stopPolling:\n                this._currentMappedEntityState?.stopPolling ??\n                DEFAULT_STATE.stopPolling,\n            };\n            this._cdr.markForCheck();\n          }\n        )\n      )\n      .subscribe();\n  }\n\n  private _dispose() {\n    this._subscription?.unsubscribe();\n    this._currentMappedEntityState = null;\n    this._state = null;\n  }\n}\n","import {\n  ChangeDetectorRef,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { map, startWith, tap } from 'rxjs/operators';\nimport { MappedEntityState, TypedActionObject } from '../types';\nimport { State } from './types';\n\n@Pipe({ name: 'suspenseMulti', pure: false })\nexport class SuspenseMultiPipe implements PipeTransform, OnDestroy {\n  private _subscription: Subscription | null = null;\n  private _currentMappedEntityState:\n    | Record<string, MappedEntityState<TypedActionObject> | null | undefined>\n    | undefined\n    | null = null;\n\n  private _state: Record<string, State<any>> = {};\n\n  constructor(private _cdr: ChangeDetectorRef) {}\n\n  ngOnDestroy(): void {\n    this._dispose();\n  }\n\n  transform<\n    T extends Record<\n      string,\n      MappedEntityState<TypedActionObject> | null | undefined\n    >\n  >(\n    value: T | null | undefined\n  ):\n    | {\n        [Property in keyof T]: State<T[Property]>;\n      } {\n    if (!this._currentMappedEntityState) {\n      if (value) {\n        this._subscribe(value);\n      }\n    }\n\n    if (this._currentMappedEntityState !== value) {\n      this._dispose();\n\n      if (value) {\n        this._subscribe(value);\n      }\n    }\n\n    return this._state as any as {\n      [Property in keyof T]: State<T[Property]>;\n    };\n  }\n\n  private _subscribe(\n    obj: Record<string, MappedEntityState<TypedActionObject> | null | undefined>\n  ) {\n    this._currentMappedEntityState = obj;\n\n    const obs: Observable<any>[] = [];\n\n    for (const key of Object.keys(obj)) {\n      const s = obj[key];\n\n      if (s) {\n        const newObs = combineLatest([\n          s.args$,\n          s.callState$,\n          s.cachedResponse$.pipe(startWith(null)),\n          s.entityId$,\n          s.error$,\n          s.isError$,\n          s.isInit$,\n          s.isLoading$,\n          s.isPolling$,\n          s.isSuccess$,\n          s.response$,\n          s.timestamp$,\n          s.type$,\n        ]).pipe(\n          map(\n            ([\n              args,\n              callState,\n              cachedResponse,\n              entityId,\n              error,\n              isError,\n              isInit,\n              isLoading,\n              isPolling,\n              isSuccess,\n              response,\n              timestamp,\n              type,\n            ]) => {\n              return {\n                key,\n                args,\n                callState,\n                cachedResponse,\n                entityId,\n                error,\n                isError,\n                isInit,\n                isLoading,\n                isPolling,\n                isSuccess,\n                response,\n                timestamp,\n                type,\n                refresh: s.refresh,\n                remove: s.remove,\n              };\n            }\n          )\n        );\n\n        obs.push(newObs);\n      }\n    }\n\n    const sub = combineLatest(obs)\n      .pipe(\n        tap((valueMap) => {\n          const newObj: Record<string, any> = {};\n\n          for (const val of valueMap) {\n            newObj[val.key] = val;\n          }\n\n          this._state = newObj;\n\n          this._cdr.markForCheck();\n        })\n      )\n      .subscribe();\n\n    this._subscription = sub;\n  }\n\n  private _dispose() {\n    this._subscription?.unsubscribe();\n    this._subscription = null;\n    this._currentMappedEntityState = null;\n    this._state = {};\n  }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreDebugComponent } from './components/store-debug/store-debug.component';\r\nimport { SuspensePipe } from './pipes/suspense.pipe';\r\nimport { SuspenseMultiPipe } from './pipes/suspense-multi.pipe';\r\n\r\n@NgModule({\r\n  declarations: [StoreDebugComponent, SuspensePipe, SuspenseMultiPipe],\r\n  imports: [CommonModule],\r\n  exports: [StoreDebugComponent, SuspensePipe, SuspenseMultiPipe],\r\n})\r\nexport class NgRxToolkitModule {}\r\n","/*\r\n * Public API Surface of ngrx-toolkit\r\n */\r\n\r\nexport * from './lib/ngrx-toolkit.module';\r\nexport * from './lib/components/store-debug/store-debug.component';\r\nexport * from './lib/pipes/suspense.pipe';\r\nexport * from './lib/pipes/suspense-multi.pipe';\r\nexport * from './lib/helpers';\r\nexport * from './lib/types/types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["has","isArray","stringify"],"mappings":"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"}