UNPKG

@redux-devtools/rtk-query-monitor

Version:
152 lines (151 loc) 6.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.computeSelectorSource = computeSelectorSource; exports.createInspectorSelectors = createInspectorSelectors; var _toolkit = require("@reduxjs/toolkit"); var _types = require("./types"); var _comparators = require("./utils/comparators"); var _filters = require("./utils/filters"); var _object = require("./utils/object"); var _regexp = require("./utils/regexp"); var _rtkQuery = require("./utils/rtk-query"); function computeSelectorSource(props) { let previous = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; const { computedStates, currentStateIndex, monitorState, actionsById } = props; const userState = computedStates.length > 0 ? computedStates[currentStateIndex].state : null; if (!previous || previous.userState !== userState || previous.monitorState !== monitorState || previous.actionsById !== actionsById) { return { userState, monitorState, currentStateIndex, actionsById }; } return previous; } function createInspectorSelectors() { const selectQueryComparator = _ref => { let { monitorState } = _ref; return _comparators.queryComparators[monitorState.queryForm.values.queryComparator]; }; const selectQueryListFilter = _ref2 => { let { monitorState } = _ref2; return _filters.queryListFilters[monitorState.queryForm.values.queryFilter]; }; const selectActionsById = _ref3 => { let { actionsById } = _ref3; return actionsById; }; const selectApiStates = (0, _toolkit.createSelector)(_ref4 => { let { userState } = _ref4; return userState; }, _rtkQuery.getApiStatesOf); const selectAllQueries = (0, _toolkit.createSelector)(selectApiStates, _rtkQuery.extractAllApiQueries); const selectAllMutations = (0, _toolkit.createSelector)(selectApiStates, _rtkQuery.extractAllApiMutations); const selectSearchQueryRegex = (0, _toolkit.createSelector)(_ref5 => { let { monitorState } = _ref5; return monitorState.queryForm.values.searchValue; }, _ref6 => { let { monitorState } = _ref6; return monitorState.queryForm.values.isRegexSearch; }, (searchValue, isRegexSearch) => { if (searchValue) { try { const regexPattern = isRegexSearch ? searchValue : (0, _regexp.escapeRegExpSpecialCharacter)(searchValue); return new RegExp(regexPattern, 'i'); } catch (err) { // We notify that the search regex provided is not valid } } return null; }); const selectComparatorOrder = _ref7 => { let { monitorState } = _ref7; return monitorState.queryForm.values.isAscendingQueryComparatorOrder; }; const selectAllVisbileQueries = (0, _toolkit.createSelector)([selectQueryComparator, selectQueryListFilter, selectAllQueries, selectAllMutations, selectComparatorOrder, selectSearchQueryRegex], (comparator, queryListFilter, queryList, mutationsList, isAscending, searchRegex) => { const filteredList = queryListFilter(searchRegex, queryList.concat(mutationsList)); const computedComparator = isAscending ? comparator : (0, _rtkQuery.flipComparator)(comparator); return filteredList.slice().sort(computedComparator); }); const selectCurrentQueryInfo = (0, _toolkit.createSelector)(selectAllQueries, selectAllMutations, _ref8 => { let { monitorState } = _ref8; return monitorState.selectedQueryKey; }, (allQueries, allMutations, selectedQueryKey) => { if (!selectedQueryKey) { return null; } let currentQueryInfo = allQueries.find(query => query.queryKey === selectedQueryKey.queryKey && selectedQueryKey.reducerPath === query.reducerPath) || null; if (!currentQueryInfo) { currentQueryInfo = allMutations.find(mutation => mutation.queryKey === selectedQueryKey.queryKey && selectedQueryKey.reducerPath === mutation.reducerPath) || null; } return currentQueryInfo; }); const selectApiOfCurrentQuery = selectorsSource => { const apiStates = selectApiStates(selectorsSource); const currentQueryInfo = selectCurrentQueryInfo(selectorsSource); if (!apiStates || !currentQueryInfo) { return null; } return apiStates[currentQueryInfo.reducerPath] ?? null; }; const selectProvidedOfCurrentQuery = selectorsSource => { return selectApiOfCurrentQuery(selectorsSource)?.provided ?? null; }; const selectSubscriptionsOfCurrentQuery = (0, _toolkit.createSelector)([selectApiOfCurrentQuery, selectCurrentQueryInfo], (apiState, queryInfo) => { if (!queryInfo || !apiState) { return _object.emptyRecord; } return apiState.subscriptions[queryInfo.queryKey]; }); const selectCurrentQueryTags = (0, _toolkit.createSelector)([selectCurrentQueryInfo, selectProvidedOfCurrentQuery], _rtkQuery.getQueryTagsOf); const selectApiStatsOfCurrentQuery = (0, _toolkit.createSelector)(selectApiOfCurrentQuery, selectorsSource => selectorsSource.actionsById, selectorsSource => selectorsSource.currentStateIndex, _rtkQuery.generateApiStatsOfCurrentQuery); const selectActionsOfCurrentQuery = (0, _toolkit.createSelector)(selectCurrentQueryInfo, selectActionsById, _rtkQuery.getActionsOfCurrentQuery); const selectTabCounters = (0, _toolkit.createSelector)([selectSubscriptionsOfCurrentQuery, selectActionsOfCurrentQuery, selectCurrentQueryTags], (subscriptions, actions, tags) => { return { [_types.QueryPreviewTabs.data]: 0, [_types.QueryPreviewTabs.queryTags]: tags.length, [_types.QueryPreviewTabs.querySubscriptions]: Object.keys(subscriptions ?? {}).length, [_types.QueryPreviewTabs.apiConfig]: 0, [_types.QueryPreviewTabs.queryinfo]: 0, [_types.QueryPreviewTabs.actions]: actions.length }; }); return { selectQueryComparator, selectApiStates, selectAllQueries, selectAllVisbileQueries, selectSearchQueryRegex, selectCurrentQueryInfo, selectCurrentQueryTags, selectApiStatsOfCurrentQuery, selectSubscriptionsOfCurrentQuery, selectApiOfCurrentQuery, selectTabCounters, selectActionsOfCurrentQuery }; }