UNPKG

ngrx-rtk-query

Version:
36 lines 6.83 kB
import { ENVIRONMENT_INITIALIZER, Injector, inject, makeEnvironmentProviders, } from '@angular/core'; import { Store, createSelectorFactory, defaultMemoize, provideState } from '@ngrx/store'; import { setupListeners as setupListenersFn } 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 }; }; }; export function provideStoreApi(api, { setupListeners } = {}) { setupListeners === false ? undefined : setupListenersFn(api.dispatch, setupListeners); return makeEnvironmentProviders([ { provide: ENVIRONMENT_INITIALIZER, multi: true, useValue() { api.initApiStore(createStoreApi(api)); }, }, provideState(api.reducerPath, api.reducer), ]); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1zdG9yZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZ3J4LXJ0ay1xdWVyeS9zdG9yZS9zcmMvcHJvdmlkZS1zdG9yZS1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixRQUFRLEVBRVIsTUFBTSxFQUNOLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEcsT0FBTyxFQUFZLGNBQWMsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRGLE9BQU8sRUFJTCxZQUFZLEdBQ2IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLGNBQWMsR0FBRyxDQUNyQixHQUF1RCxFQUN2RCxFQUFFLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQThCLEVBQUUsRUFDN0QsRUFBRTtJQUNGLE9BQU8sR0FBOEIsRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHlGQUF5RixDQUFDLENBQUM7UUFDN0csQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FBRyxDQUFJLEtBQXdCLEVBQUUsT0FBZ0MsRUFBYSxFQUFFLENBQy9GLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXJDLE1BQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQW9CLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ25ILE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUVuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsZUFBZSxDQUM3QixHQUF1RCxFQUN2RCxFQUFFLGNBQWMsS0FBdUIsRUFBRTtJQUV6QyxjQUFjLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFdEYsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRO2dCQUNOLEdBQUcsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEMsQ0FBQztTQUNGO1FBQ0QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQztLQUMzQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gIHR5cGUgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIEluamVjdG9yLFxuICB0eXBlIFNpZ25hbCxcbiAgaW5qZWN0LFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBBY3Rpb24sIFN0b3JlLCBjcmVhdGVTZWxlY3RvckZhY3RvcnksIGRlZmF1bHRNZW1vaXplLCBwcm92aWRlU3RhdGUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyB0eXBlIFNlbGVjdFNpZ25hbE9wdGlvbnMgfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcbmltcG9ydCB7IHR5cGUgQXBpLCBzZXR1cExpc3RlbmVycyBhcyBzZXR1cExpc3RlbmVyc0ZuIH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdC9xdWVyeSc7XG5cbmltcG9ydCB7XG4gIHR5cGUgQW5ndWxhckhvb2tzTW9kdWxlT3B0aW9ucyxcbiAgdHlwZSBEaXNwYXRjaCxcbiAgdHlwZSBTdG9yZVF1ZXJ5Q29uZmlnLFxuICBzaGFsbG93RXF1YWwsXG59IGZyb20gJ25ncngtcnRrLXF1ZXJ5L2NvcmUnO1xuXG5jb25zdCBjcmVhdGVTdG9yZUFwaSA9IChcbiAgYXBpOiBBcGk8YW55LCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzdHJpbmcsIHN0cmluZywgYW55PixcbiAgeyBpbmplY3RvciA9IGluamVjdChJbmplY3RvcikgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikgPT4ge1xuICByZXR1cm4gKCk6IEFuZ3VsYXJIb29rc01vZHVsZU9wdGlvbnMgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0b3IuZ2V0KFN0b3JlLCB1bmRlZmluZWQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlIHRoZSBTdG9yZSBpcyBuZWNlc3NhcnkgdG8gdXNlIHRoZSBxdWVyaWVzLiBEaWQgeW91IGZvcmdldCB0byBwcm92aWRlIHRoZSBzdG9yZT9gKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNwYXRjaCA9IChhY3Rpb246IEFjdGlvbikgPT4ge1xuICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfTtcbiAgICBjb25zdCBnZXRTdGF0ZSA9IHN0b3JlLnNlbGVjdFNpZ25hbCgoc3RhdGUpID0+IHN0YXRlKTtcbiAgICBjb25zdCB1c2VTZWxlY3RvciA9IDxLPihtYXBGbjogKHN0YXRlOiBhbnkpID0+IEssIG9wdGlvbnM/OiBTZWxlY3RTaWduYWxPcHRpb25zPEs+KTogU2lnbmFsPEs+ID0+XG4gICAgICBzdG9yZS5zZWxlY3RTaWduYWwobWFwRm4sIG9wdGlvbnMpO1xuXG4gICAgY29uc3QgaG9va3MgPSB7IGRpc3BhdGNoOiBkaXNwYXRjaCBhcyBEaXNwYXRjaCwgZ2V0U3RhdGUsIHVzZVNlbGVjdG9yIH07XG4gICAgY29uc3QgY3JlYXRlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvckZhY3RvcnkoKHByb2plY3RvcikgPT4gZGVmYXVsdE1lbW9pemUocHJvamVjdG9yLCBzaGFsbG93RXF1YWwsIHNoYWxsb3dFcXVhbCkpO1xuICAgIGNvbnN0IGdldEluamVjdG9yID0gKCkgPT4gaW5qZWN0b3I7XG5cbiAgICByZXR1cm4geyBob29rcywgY3JlYXRlU2VsZWN0b3IsIGdldEluamVjdG9yIH07XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVN0b3JlQXBpKFxuICBhcGk6IEFwaTxhbnksIFJlY29yZDxzdHJpbmcsIGFueT4sIHN0cmluZywgc3RyaW5nLCBhbnk+LFxuICB7IHNldHVwTGlzdGVuZXJzIH06IFN0b3JlUXVlcnlDb25maWcgPSB7fSxcbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgc2V0dXBMaXN0ZW5lcnMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogc2V0dXBMaXN0ZW5lcnNGbihhcGkuZGlzcGF0Y2gsIHNldHVwTGlzdGVuZXJzKTtcblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWUoKSB7XG4gICAgICAgIGFwaS5pbml0QXBpU3RvcmUoY3JlYXRlU3RvcmVBcGkoYXBpKSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgcHJvdmlkZVN0YXRlKGFwaS5yZWR1Y2VyUGF0aCwgYXBpLnJlZHVjZXIpLFxuICBdKTtcbn1cbiJdfQ==