UNPKG

ngrx-rtk-query

Version:
44 lines (40 loc) 1.76 kB
import { inject, Injector, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER } from '@angular/core'; import { Store, createSelectorFactory, defaultMemoize, provideState } from '@ngrx/store'; import { setupListeners } from '@reduxjs/toolkit/query'; import { shallowEqual } from 'ngrx-rtk-query/core'; const createStoreApi = (api, { injector = inject(Injector) } = {}) => { return () => { const store = injector.get(Store, undefined, { optional: true }); if (!store) { throw new Error(`Provide the Store is necessary to use the queries. Did you forget to provide the store?`); } const dispatch = (action) => { store.dispatch(action); return action; }; const getState = store.selectSignal((state) => state); const useSelector = (mapFn, options) => store.selectSignal(mapFn, options); const hooks = { dispatch: dispatch, getState, useSelector }; const createSelector = createSelectorFactory((projector) => defaultMemoize(projector, shallowEqual, shallowEqual)); const getInjector = () => injector; return { hooks, createSelector, getInjector }; }; }; function provideStoreApi(api, { setupListeners: setupListeners$1 } = {}) { setupListeners$1 === false ? undefined : setupListeners(api.dispatch, setupListeners$1); return makeEnvironmentProviders([ { provide: ENVIRONMENT_INITIALIZER, multi: true, useValue() { api.initApiStore(createStoreApi(api)); }, }, provideState(api.reducerPath, api.reducer), ]); } /** * Generated bundle index. Do not edit. */ export { provideStoreApi }; //# sourceMappingURL=ngrx-rtk-query-store.mjs.map