ngrx-rtk-query
Version:
Angular RTK Query
52 lines • 9.54 kB
JavaScript
import { ENVIRONMENT_INITIALIZER, Injectable, Injector, computed, inject, makeEnvironmentProviders, signal, } from '@angular/core';
import { setupListeners as setupListenersFn } from '@reduxjs/toolkit/query';
import * as i0 from "@angular/core";
export 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 };
};
};
export function provideNoopStoreApi(api, { setupListeners } = {}) {
setupListeners === false ? undefined : setupListenersFn(api.dispatch, setupListeners);
return makeEnvironmentProviders([
ApiStore,
{
provide: ENVIRONMENT_INITIALIZER,
multi: true,
useValue() {
api.initApiStore(createNoopStoreApi(api));
api.dispatch(api.util.resetApiState());
},
},
]);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1ub29wLXN0b3JlLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25ncngtcnRrLXF1ZXJ5L25vb3Atc3RvcmUvc3JjL3Byb3ZpZGUtbm9vcC1zdG9yZS1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixVQUFVLEVBQ1YsUUFBUSxFQUVSLFFBQVEsRUFDUixNQUFNLEVBQ04sd0JBQXdCLEVBQ3hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQVksY0FBYyxJQUFJLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS3RGLE1BQU0sT0FBTyxRQUFRO0lBRHJCO1FBRVcsVUFBSyxHQUFHLE1BQU0sQ0FBc0IsRUFBRSxDQUFDLENBQUM7UUFFakQsaUJBQVksR0FBRyxDQUFJLEtBQXdCLEVBQUUsT0FBa0MsRUFBYSxFQUFFLENBQzVGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFL0MsYUFBUSxHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQWtELEVBQUUsRUFBRTtZQUM3RyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQXVCLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQztLQUNIOytHQVZZLFFBQVE7bUhBQVIsUUFBUTs7NEZBQVIsUUFBUTtrQkFEcEIsVUFBVTs7QUFhWCxNQUFNLGtCQUFrQixHQUFHLENBQ3pCLEdBQXVELEVBQ3ZELEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBOEIsRUFBRSxFQUM3RCxFQUFFO0lBQ0YsT0FBTyxHQUE4QixFQUFFO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBdUIsQ0FBQztRQUU1Qyw4Q0FBOEM7UUFDOUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtZQUN6QyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sV0FBVyxHQUFHLENBQUksS0FBd0IsRUFBRSxPQUFrQyxFQUFhLEVBQUUsQ0FDakcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFckMsTUFBTSxLQUFLLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBb0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDeEUsTUFBTSxjQUFjLEdBQ2xCLENBQW1CLEdBQUcsS0FBWSxFQUFrQixFQUFFLENBQ3RELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUVuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLEdBQXVELEVBQ3ZELEVBQUUsY0FBYyxLQUF1QixFQUFFO0lBRXpDLGNBQWMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUV0RixPQUFPLHdCQUF3QixDQUFDO1FBQzlCLFFBQVE7UUFDUjtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRO2dCQUNOLEdBQUcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zLFxuICBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgdHlwZSBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIHR5cGUgU2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIFJlZHVjZXIsIHR5cGUgU2VsZWN0b3IsIHR5cGUgVW5rbm93bkFjdGlvbiB9IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuaW1wb3J0IHsgdHlwZSBBcGksIHNldHVwTGlzdGVuZXJzIGFzIHNldHVwTGlzdGVuZXJzRm4gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0L3F1ZXJ5JztcblxuaW1wb3J0IHsgdHlwZSBBbmd1bGFySG9va3NNb2R1bGVPcHRpb25zLCB0eXBlIERpc3BhdGNoLCB0eXBlIFN0b3JlUXVlcnlDb25maWcgfSBmcm9tICduZ3J4LXJ0ay1xdWVyeS9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFwaVN0b3JlIHtcbiAgcmVhZG9ubHkgc3RhdGUgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgYW55Pj4oe30pO1xuXG4gIHNlbGVjdFNpZ25hbCA9IDxLPihtYXBGbjogKHN0YXRlOiBhbnkpID0+IEssIG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8Sz4pOiBTaWduYWw8Sz4gPT5cbiAgICBjb21wdXRlZCgoKSA9PiBtYXBGbih0aGlzLnN0YXRlKCkpLCBvcHRpb25zKTtcblxuICBkaXNwYXRjaCA9IChhY3Rpb246IFVua25vd25BY3Rpb24sIHsgcmVkdWNlclBhdGgsIHJlZHVjZXIgfTogeyByZWR1Y2VyUGF0aDogc3RyaW5nOyByZWR1Y2VyOiBSZWR1Y2VyPGFueT4gfSkgPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHJlZHVjZXIodGhpcy5zdGF0ZSgpW3JlZHVjZXJQYXRoXSwgYWN0aW9uIGFzIFVua25vd25BY3Rpb24pO1xuICAgIHRoaXMuc3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIFtyZWR1Y2VyUGF0aF06IG5leHRTdGF0ZSB9KSk7XG4gIH07XG59XG5cbmNvbnN0IGNyZWF0ZU5vb3BTdG9yZUFwaSA9IChcbiAgYXBpOiBBcGk8YW55LCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzdHJpbmcsIHN0cmluZywgYW55PixcbiAgeyBpbmplY3RvciA9IGluamVjdChJbmplY3RvcikgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikgPT4ge1xuICByZXR1cm4gKCk6IEFuZ3VsYXJIb29rc01vZHVsZU9wdGlvbnMgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0b3IuZ2V0KEFwaVN0b3JlKTtcbiAgICBjb25zdCByZWR1Y2VyUGF0aCA9IGFwaS5yZWR1Y2VyUGF0aDtcbiAgICBjb25zdCByZWR1Y2VyID0gYXBpLnJlZHVjZXIgYXMgUmVkdWNlcjxhbnk+O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RvcmUgd2l0aCB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgIHN0b3JlLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBbcmVkdWNlclBhdGhdOiB7fSB9KSk7XG5cbiAgICBjb25zdCBkaXNwYXRjaCA9IChhY3Rpb246IFVua25vd25BY3Rpb24pID0+IHtcbiAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbiwgeyByZWR1Y2VyUGF0aCwgcmVkdWNlciB9KTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfTtcbiAgICBjb25zdCBnZXRTdGF0ZSA9IHN0b3JlLnNlbGVjdFNpZ25hbCgoc3RhdGUpID0+IHN0YXRlKTtcbiAgICBjb25zdCB1c2VTZWxlY3RvciA9IDxLPihtYXBGbjogKHN0YXRlOiBhbnkpID0+IEssIG9wdGlvbnM/OiBDcmVhdGVDb21wdXRlZE9wdGlvbnM8Sz4pOiBTaWduYWw8Sz4gPT5cbiAgICAgIHN0b3JlLnNlbGVjdFNpZ25hbChtYXBGbiwgb3B0aW9ucyk7XG5cbiAgICBjb25zdCBob29rcyA9IHsgZGlzcGF0Y2g6IGRpc3BhdGNoIGFzIERpc3BhdGNoLCBnZXRTdGF0ZSwgdXNlU2VsZWN0b3IgfTtcbiAgICBjb25zdCBjcmVhdGVTZWxlY3RvciA9XG4gICAgICA8VCA9IGFueSwgViA9IGFueT4oLi4uaW5wdXQ6IGFueVtdKTogU2VsZWN0b3I8VCwgVj4gPT5cbiAgICAgIChzdGF0ZSkgPT5cbiAgICAgICAgaW5wdXQucmVkdWNlKChhY2MsIHNlbGVjdG9yKSA9PiBzZWxlY3RvcihhY2MpLCBzdGF0ZSk7XG4gICAgY29uc3QgZ2V0SW5qZWN0b3IgPSAoKSA9PiBpbmplY3RvcjtcblxuICAgIHJldHVybiB7IGhvb2tzLCBjcmVhdGVTZWxlY3RvciwgZ2V0SW5qZWN0b3IgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTm9vcFN0b3JlQXBpKFxuICBhcGk6IEFwaTxhbnksIFJlY29yZDxzdHJpbmcsIGFueT4sIHN0cmluZywgc3RyaW5nLCBhbnk+LFxuICB7IHNldHVwTGlzdGVuZXJzIH06IFN0b3JlUXVlcnlDb25maWcgPSB7fSxcbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgc2V0dXBMaXN0ZW5lcnMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogc2V0dXBMaXN0ZW5lcnNGbihhcGkuZGlzcGF0Y2gsIHNldHVwTGlzdGVuZXJzKTtcblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBBcGlTdG9yZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWUoKSB7XG4gICAgICAgIGFwaS5pbml0QXBpU3RvcmUoY3JlYXRlTm9vcFN0b3JlQXBpKGFwaSkpO1xuICAgICAgICBhcGkuZGlzcGF0Y2goYXBpLnV0aWwucmVzZXRBcGlTdGF0ZSgpKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=