UNPKG

ngrx-rtk-query

Version:
60 lines (56 loc) 2.67 kB
import * as i0 from '@angular/core'; import { signal, computed, Injectable, inject, Injector, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER } from '@angular/core'; import { setupListeners } from '@reduxjs/toolkit/query'; class ApiStore { constructor() { this.state = signal({}); this.selectSignal = (mapFn, options) => computed(() => mapFn(this.state()), options); this.dispatch = (action, { reducerPath, reducer }) => { const nextState = reducer(this.state()[reducerPath], action); this.state.update((state) => ({ ...state, [reducerPath]: nextState })); }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiStore }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiStore, decorators: [{ type: Injectable }] }); const createNoopStoreApi = (api, { injector = inject(Injector) } = {}) => { return () => { const store = injector.get(ApiStore); const reducerPath = api.reducerPath; const reducer = api.reducer; // Initialize the store with the initial state store.state.update((state) => ({ ...state, [reducerPath]: {} })); const dispatch = (action) => { store.dispatch(action, { reducerPath, reducer }); return action; }; const getState = store.selectSignal((state) => state); const useSelector = (mapFn, options) => store.selectSignal(mapFn, options); const hooks = { dispatch: dispatch, getState, useSelector }; const createSelector = (...input) => (state) => input.reduce((acc, selector) => selector(acc), state); const getInjector = () => injector; return { hooks, createSelector, getInjector }; }; }; function provideNoopStoreApi(api, { setupListeners: setupListeners$1 } = {}) { setupListeners$1 === false ? undefined : setupListeners(api.dispatch, setupListeners$1); return makeEnvironmentProviders([ ApiStore, { provide: ENVIRONMENT_INITIALIZER, multi: true, useValue() { api.initApiStore(createNoopStoreApi(api)); api.dispatch(api.util.resetApiState()); }, }, ]); } /** * Generated bundle index. Do not edit. */ export { ApiStore, provideNoopStoreApi }; //# sourceMappingURL=ngrx-rtk-query-noop-store.mjs.map