{"version":3,"file":"ngrx-rtk-query-noop-store.mjs","sources":["../../../../packages/ngrx-rtk-query/noop-store/src/provide-noop-store-api.ts","../../../../packages/ngrx-rtk-query/noop-store/ngrx-rtk-query-noop-store.ts"],"sourcesContent":["import {\n  type CreateComputedOptions,\n  ENVIRONMENT_INITIALIZER,\n  type EnvironmentProviders,\n  Injectable,\n  Injector,\n  type Signal,\n  computed,\n  inject,\n  makeEnvironmentProviders,\n  signal,\n} from '@angular/core';\nimport { type Reducer, type Selector, type UnknownAction } from '@reduxjs/toolkit';\nimport { type Api, setupListeners as setupListenersFn } from '@reduxjs/toolkit/query';\n\nimport { type AngularHooksModuleOptions, type Dispatch, type StoreQueryConfig } from 'ngrx-rtk-query/core';\n\n@Injectable()\nexport class ApiStore {\n  readonly state = signal<Record<string, any>>({});\n\n  selectSignal = <K>(mapFn: (state: any) => K, options?: CreateComputedOptions<K>): Signal<K> =>\n    computed(() => mapFn(this.state()), options);\n\n  dispatch = (action: UnknownAction, { reducerPath, reducer }: { reducerPath: string; reducer: Reducer<any> }) => {\n    const nextState = reducer(this.state()[reducerPath], action as UnknownAction);\n    this.state.update((state) => ({ ...state, [reducerPath]: nextState }));\n  };\n}\n\nconst createNoopStoreApi = (\n  api: Api<any, Record<string, any>, string, string, any>,\n  { injector = inject(Injector) }: { injector?: Injector } = {},\n) => {\n  return (): AngularHooksModuleOptions => {\n    const store = injector.get(ApiStore);\n    const reducerPath = api.reducerPath;\n    const reducer = api.reducer as Reducer<any>;\n\n    // Initialize the store with the initial state\n    store.state.update((state) => ({ ...state, [reducerPath]: {} }));\n\n    const dispatch = (action: UnknownAction) => {\n      store.dispatch(action, { reducerPath, reducer });\n      return action;\n    };\n    const getState = store.selectSignal((state) => state);\n    const useSelector = <K>(mapFn: (state: any) => K, options?: CreateComputedOptions<K>): Signal<K> =>\n      store.selectSignal(mapFn, options);\n\n    const hooks = { dispatch: dispatch as Dispatch, getState, useSelector };\n    const createSelector =\n      <T = any, V = any>(...input: any[]): Selector<T, V> =>\n      (state) =>\n        input.reduce((acc, selector) => selector(acc), state);\n    const getInjector = () => injector;\n\n    return { hooks, createSelector, getInjector };\n  };\n};\n\nexport function provideNoopStoreApi(\n  api: Api<any, Record<string, any>, string, string, any>,\n  { setupListeners }: StoreQueryConfig = {},\n): EnvironmentProviders {\n  setupListeners === false ? undefined : setupListenersFn(api.dispatch, setupListeners);\n\n  return makeEnvironmentProviders([\n    ApiStore,\n    {\n      provide: ENVIRONMENT_INITIALIZER,\n      multi: true,\n      useValue() {\n        api.initApiStore(createNoopStoreApi(api));\n        api.dispatch(api.util.resetApiState());\n      },\n    },\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["setupListeners","setupListenersFn"],"mappings":"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"}