ngrx-rtk-query
Version:
Angular RTK Query
39 lines • 6.57 kB
JavaScript
import { buildCreateApi, coreModule, } from '@reduxjs/toolkit/query';
import { angularHooksModule, } from './module';
export const createApi = (options) => {
const next = (action) => {
if (typeof action === 'function') {
return action(dispatch, getState, { injector: getInjector() });
}
return store.hooks.dispatch(action);
};
const dispatch = (action) => {
if (!store) {
const reducerPath = options.reducerPath;
throw new Error(`Provide the API (${reducerPath}) is necessary to use the queries. Did you forget to provide the queries api?`);
}
return middleware(next)(action);
};
const getState = () => store.hooks.getState();
const useSelector = (mapFn, options) => store?.hooks.useSelector(mapFn, options);
const createSelector = (...input) => store.createSelector(...input);
const getInjector = () => store.getInjector();
const createApi = /* @__PURE__ */ buildCreateApi(coreModule(), angularHooksModule({
hooks: {
dispatch: dispatch,
getState,
useSelector,
},
createSelector,
getInjector,
}));
const api = createApi(options);
let store;
const initApiStore = (setupFn) => {
store = setupFn();
};
Object.assign(api, { initApiStore });
const middleware = api.middleware({ dispatch, getState });
return api;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25ncngtcnRrLXF1ZXJ5L2NvcmUvc3JjL2NyZWF0ZS1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlMLGNBQWMsRUFDZCxVQUFVLEdBRVgsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBSUwsa0JBQWtCLEdBRW5CLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBcUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUNyRyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQWUsRUFBVyxFQUFFO1FBQ3hDLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDakMsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBZSxFQUFXLEVBQUU7UUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUNiLG9CQUFvQixXQUFXLCtFQUErRSxDQUMvRyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFtRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlGLE1BQU0sV0FBVyxHQUFzRCxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUN4RixLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsTUFBTSxjQUFjLEdBQWdELENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBNkMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXhGLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQzlDLFVBQVUsRUFBRSxFQUNaLGtCQUFrQixDQUFDO1FBQ2pCLEtBQUssRUFBRTtZQUNMLFFBQVEsRUFBRSxRQUFvQjtZQUM5QixRQUFRO1lBQ1IsV0FBVztTQUNaO1FBQ0QsY0FBYztRQUNkLFdBQVc7S0FDWixDQUFDLENBQ0gsQ0FBQztJQUNGLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQixJQUFJLEtBQWdDLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUF3QyxFQUFFLEVBQUU7UUFDaEUsS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUVyQyxNQUFNLFVBQVUsR0FDZCxHQUNELENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFckMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEFjdGlvbiB9IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuaW1wb3J0IHtcbiAgdHlwZSBBcGksXG4gIHR5cGUgQ29yZU1vZHVsZSxcbiAgdHlwZSBDcmVhdGVBcGksXG4gIGJ1aWxkQ3JlYXRlQXBpLFxuICBjb3JlTW9kdWxlLFxuICB0eXBlIGNvcmVNb2R1bGVOYW1lLFxufSBmcm9tICdAcmVkdXhqcy90b29sa2l0L3F1ZXJ5JztcblxuaW1wb3J0IHtcbiAgdHlwZSBBbmd1bGFySG9va3NNb2R1bGUsXG4gIHR5cGUgQW5ndWxhckhvb2tzTW9kdWxlT3B0aW9ucyxcbiAgdHlwZSBEaXNwYXRjaCxcbiAgYW5ndWxhckhvb2tzTW9kdWxlLFxuICB0eXBlIGFuZ3VsYXJIb29rc01vZHVsZU5hbWUsXG59IGZyb20gJy4vbW9kdWxlJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFwaTogQ3JlYXRlQXBpPHR5cGVvZiBjb3JlTW9kdWxlTmFtZSB8IHR5cGVvZiBhbmd1bGFySG9va3NNb2R1bGVOYW1lPiA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG5leHQgPSAoYWN0aW9uOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb24oZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGluamVjdG9yOiBnZXRJbmplY3RvcigpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RvcmUuaG9va3MuZGlzcGF0Y2goYWN0aW9uIGFzIEFjdGlvbik7XG4gIH07XG4gIGNvbnN0IGRpc3BhdGNoID0gKGFjdGlvbjogdW5rbm93bik6IHVua25vd24gPT4ge1xuICAgIGlmICghc3RvcmUpIHtcbiAgICAgIGNvbnN0IHJlZHVjZXJQYXRoID0gb3B0aW9ucy5yZWR1Y2VyUGF0aDtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFByb3ZpZGUgdGhlIEFQSSAoJHtyZWR1Y2VyUGF0aH0pIGlzIG5lY2Vzc2FyeSB0byB1c2UgdGhlIHF1ZXJpZXMuIERpZCB5b3UgZm9yZ2V0IHRvIHByb3ZpZGUgdGhlIHF1ZXJpZXMgYXBpP2AsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbWlkZGxld2FyZShuZXh0KShhY3Rpb24pO1xuICB9O1xuXG4gIGNvbnN0IGdldFN0YXRlOiBBbmd1bGFySG9va3NNb2R1bGVPcHRpb25zWydob29rcyddWydnZXRTdGF0ZSddID0gKCkgPT4gc3RvcmUuaG9va3MuZ2V0U3RhdGUoKTtcbiAgY29uc3QgdXNlU2VsZWN0b3I6IEFuZ3VsYXJIb29rc01vZHVsZU9wdGlvbnNbJ2hvb2tzJ11bJ3VzZVNlbGVjdG9yJ10gPSAobWFwRm4sIG9wdGlvbnMpID0+XG4gICAgc3RvcmU/Lmhvb2tzLnVzZVNlbGVjdG9yKG1hcEZuLCBvcHRpb25zKTtcbiAgY29uc3QgY3JlYXRlU2VsZWN0b3I6IEFuZ3VsYXJIb29rc01vZHVsZU9wdGlvbnNbJ2NyZWF0ZVNlbGVjdG9yJ10gPSAoLi4uaW5wdXQpID0+IHN0b3JlLmNyZWF0ZVNlbGVjdG9yKC4uLmlucHV0KTtcbiAgY29uc3QgZ2V0SW5qZWN0b3I6IEFuZ3VsYXJIb29rc01vZHVsZU9wdGlvbnNbJ2dldEluamVjdG9yJ10gPSAoKSA9PiBzdG9yZS5nZXRJbmplY3RvcigpO1xuXG4gIGNvbnN0IGNyZWF0ZUFwaSA9IC8qIEBfX1BVUkVfXyAqLyBidWlsZENyZWF0ZUFwaShcbiAgICBjb3JlTW9kdWxlKCksXG4gICAgYW5ndWxhckhvb2tzTW9kdWxlKHtcbiAgICAgIGhvb2tzOiB7XG4gICAgICAgIGRpc3BhdGNoOiBkaXNwYXRjaCBhcyBEaXNwYXRjaCxcbiAgICAgICAgZ2V0U3RhdGUsXG4gICAgICAgIHVzZVNlbGVjdG9yLFxuICAgICAgfSxcbiAgICAgIGNyZWF0ZVNlbGVjdG9yLFxuICAgICAgZ2V0SW5qZWN0b3IsXG4gICAgfSksXG4gICk7XG4gIGNvbnN0IGFwaSA9IGNyZWF0ZUFwaShvcHRpb25zKTtcblxuICBsZXQgc3RvcmU6IEFuZ3VsYXJIb29rc01vZHVsZU9wdGlvbnM7XG4gIGNvbnN0IGluaXRBcGlTdG9yZSA9IChzZXR1cEZuOiAoKSA9PiBBbmd1bGFySG9va3NNb2R1bGVPcHRpb25zKSA9PiB7XG4gICAgc3RvcmUgPSBzZXR1cEZuKCk7XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oYXBpLCB7IGluaXRBcGlTdG9yZSB9KTtcblxuICBjb25zdCBtaWRkbGV3YXJlID0gKFxuICAgIGFwaSBhcyB1bmtub3duIGFzIEFwaTxhbnksIFJlY29yZDxzdHJpbmcsIGFueT4sIHN0cmluZywgc3RyaW5nLCBBbmd1bGFySG9va3NNb2R1bGUgfCBDb3JlTW9kdWxlPlxuICApLm1pZGRsZXdhcmUoeyBkaXNwYXRjaCwgZ2V0U3RhdGUgfSk7XG5cbiAgcmV0dXJuIGFwaTtcbn07XG4iXX0=