1 | var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
2 | for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
3 | to[j] = from[i];
|
4 | return to;
|
5 | };
|
6 | var __defProp = Object.defineProperty;
|
7 | var __defProps = Object.defineProperties;
|
8 | var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
9 | var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
10 | var __hasOwnProp = Object.prototype.hasOwnProperty;
|
11 | var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
12 | var __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };
|
13 | var __spreadValues = function (a, b) {
|
14 | for (var prop in b || (b = {}))
|
15 | if (__hasOwnProp.call(b, prop))
|
16 | __defNormalProp(a, prop, b[prop]);
|
17 | if (__getOwnPropSymbols)
|
18 | for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {
|
19 | var prop = _c[_i];
|
20 | if (__propIsEnum.call(b, prop))
|
21 | __defNormalProp(a, prop, b[prop]);
|
22 | }
|
23 | return a;
|
24 | };
|
25 | var __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };
|
26 |
|
27 | import { coreModule, buildCreateApi } from "@reduxjs/toolkit/query";
|
28 |
|
29 | import { createSelector } from "@reduxjs/toolkit";
|
30 | import { useCallback, useEffect as useEffect2, useLayoutEffect, useMemo, useRef as useRef2, useState } from "react";
|
31 | import { QueryStatus, skipToken } from "@reduxjs/toolkit/query";
|
32 | import { shallowEqual as shallowEqual2 } from "react-redux";
|
33 |
|
34 | import { useEffect, useRef } from "react";
|
35 | import { shallowEqual } from "react-redux";
|
36 | function useShallowStableValue(value) {
|
37 | var cache = useRef(value);
|
38 | useEffect(function () {
|
39 | if (!shallowEqual(cache.current, value)) {
|
40 | cache.current = value;
|
41 | }
|
42 | }, [value]);
|
43 | return shallowEqual(cache.current, value) ? cache.current : value;
|
44 | }
|
45 |
|
46 | var UNINITIALIZED_VALUE = Symbol();
|
47 |
|
48 | var useIsomorphicLayoutEffect = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined" ? useLayoutEffect : useEffect2;
|
49 | var defaultQueryStateSelector = function (x) { return x; };
|
50 | var defaultMutationStateSelector = function (x) { return x; };
|
51 | var queryStatePreSelector = function (currentState, lastResult) {
|
52 | var data = currentState.isSuccess ? currentState.data : lastResult == null ? void 0 : lastResult.data;
|
53 | if (data === void 0)
|
54 | data = currentState.data;
|
55 | var hasData = data !== void 0;
|
56 | var isFetching = currentState.isLoading;
|
57 | var isLoading = !hasData && isFetching;
|
58 | var isSuccess = currentState.isSuccess || isFetching && hasData;
|
59 | return __spreadProps(__spreadValues({}, currentState), {
|
60 | data: data,
|
61 | isFetching: isFetching,
|
62 | isLoading: isLoading,
|
63 | isSuccess: isSuccess
|
64 | });
|
65 | };
|
66 | var noPendingQueryStateSelector = function (selected) {
|
67 | if (selected.isUninitialized) {
|
68 | return __spreadProps(__spreadValues({}, selected), {
|
69 | isUninitialized: false,
|
70 | isFetching: true,
|
71 | isLoading: selected.data !== void 0 ? false : true,
|
72 | status: QueryStatus.pending
|
73 | });
|
74 | }
|
75 | return selected;
|
76 | };
|
77 | function buildHooks(_c) {
|
78 | var api = _c.api, _d = _c.moduleOptions, batch = _d.batch, useDispatch = _d.useDispatch, useSelector = _d.useSelector, useStore = _d.useStore;
|
79 | return { buildQueryHooks: buildQueryHooks, buildMutationHook: buildMutationHook, usePrefetch: usePrefetch };
|
80 | function usePrefetch(endpointName, defaultOptions) {
|
81 | var dispatch = useDispatch();
|
82 | var stableDefaultOptions = useShallowStableValue(defaultOptions);
|
83 | return useCallback(function (arg, options) { return dispatch(api.util.prefetch(endpointName, arg, __spreadValues(__spreadValues({}, stableDefaultOptions), options))); }, [endpointName, dispatch, stableDefaultOptions]);
|
84 | }
|
85 | function buildQueryHooks(name) {
|
86 | var useQuerySubscription = function (arg, _c) {
|
87 | var _d = _c === void 0 ? {} : _c, refetchOnReconnect = _d.refetchOnReconnect, refetchOnFocus = _d.refetchOnFocus, refetchOnMountOrArgChange = _d.refetchOnMountOrArgChange, _e = _d.skip, skip = _e === void 0 ? false : _e, _f = _d.pollingInterval, pollingInterval = _f === void 0 ? 0 : _f;
|
88 | var initiate = api.endpoints[name].initiate;
|
89 | var dispatch = useDispatch();
|
90 | var stableArg = useShallowStableValue(skip ? skipToken : arg);
|
91 | var stableSubscriptionOptions = useShallowStableValue({
|
92 | refetchOnReconnect: refetchOnReconnect,
|
93 | refetchOnFocus: refetchOnFocus,
|
94 | pollingInterval: pollingInterval
|
95 | });
|
96 | var promiseRef = useRef2();
|
97 | useEffect2(function () {
|
98 | var _a;
|
99 | var lastPromise = promiseRef.current;
|
100 | if (stableArg === skipToken) {
|
101 | lastPromise == null ? void 0 : lastPromise.unsubscribe();
|
102 | promiseRef.current = void 0;
|
103 | return;
|
104 | }
|
105 | var lastSubscriptionOptions = (_a = promiseRef.current) == null ? void 0 : _a.subscriptionOptions;
|
106 | if (!lastPromise || lastPromise.arg !== stableArg) {
|
107 | lastPromise == null ? void 0 : lastPromise.unsubscribe();
|
108 | var promise = dispatch(initiate(stableArg, {
|
109 | subscriptionOptions: stableSubscriptionOptions,
|
110 | forceRefetch: refetchOnMountOrArgChange
|
111 | }));
|
112 | promiseRef.current = promise;
|
113 | }
|
114 | else if (stableSubscriptionOptions !== lastSubscriptionOptions) {
|
115 | lastPromise.updateSubscriptionOptions(stableSubscriptionOptions);
|
116 | }
|
117 | }, [
|
118 | dispatch,
|
119 | initiate,
|
120 | refetchOnMountOrArgChange,
|
121 | stableArg,
|
122 | stableSubscriptionOptions
|
123 | ]);
|
124 | useEffect2(function () {
|
125 | return function () {
|
126 | var _a;
|
127 | (_a = promiseRef.current) == null ? void 0 : _a.unsubscribe();
|
128 | promiseRef.current = void 0;
|
129 | };
|
130 | }, []);
|
131 | return useMemo(function () { return ({
|
132 | refetch: function () {
|
133 | var _a;
|
134 | return void ((_a = promiseRef.current) == null ? void 0 : _a.refetch());
|
135 | }
|
136 | }); }, []);
|
137 | };
|
138 | var useLazyQuerySubscription = function (_c) {
|
139 | var _d = _c === void 0 ? {} : _c, refetchOnReconnect = _d.refetchOnReconnect, refetchOnFocus = _d.refetchOnFocus, _e = _d.pollingInterval, pollingInterval = _e === void 0 ? 0 : _e;
|
140 | var initiate = api.endpoints[name].initiate;
|
141 | var dispatch = useDispatch();
|
142 | var _f = useState(UNINITIALIZED_VALUE), arg = _f[0], setArg = _f[1];
|
143 | var promiseRef = useRef2();
|
144 | var stableSubscriptionOptions = useShallowStableValue({
|
145 | refetchOnReconnect: refetchOnReconnect,
|
146 | refetchOnFocus: refetchOnFocus,
|
147 | pollingInterval: pollingInterval
|
148 | });
|
149 | useEffect2(function () {
|
150 | var _a, _b;
|
151 | var lastSubscriptionOptions = (_a = promiseRef.current) == null ? void 0 : _a.subscriptionOptions;
|
152 | if (stableSubscriptionOptions !== lastSubscriptionOptions) {
|
153 | (_b = promiseRef.current) == null ? void 0 : _b.updateSubscriptionOptions(stableSubscriptionOptions);
|
154 | }
|
155 | }, [stableSubscriptionOptions]);
|
156 | var subscriptionOptionsRef = useRef2(stableSubscriptionOptions);
|
157 | useEffect2(function () {
|
158 | subscriptionOptionsRef.current = stableSubscriptionOptions;
|
159 | }, [stableSubscriptionOptions]);
|
160 | var trigger = useCallback(function (arg2, preferCacheValue) {
|
161 | if (preferCacheValue === void 0) { preferCacheValue = false; }
|
162 | batch(function () {
|
163 | var _a;
|
164 | (_a = promiseRef.current) == null ? void 0 : _a.unsubscribe();
|
165 | promiseRef.current = dispatch(initiate(arg2, {
|
166 | subscriptionOptions: subscriptionOptionsRef.current,
|
167 | forceRefetch: !preferCacheValue
|
168 | }));
|
169 | setArg(arg2);
|
170 | });
|
171 | }, [dispatch, initiate]);
|
172 | useEffect2(function () {
|
173 | return function () {
|
174 | var _a;
|
175 | (_a = promiseRef == null ? void 0 : promiseRef.current) == null ? void 0 : _a.unsubscribe();
|
176 | };
|
177 | }, []);
|
178 | useEffect2(function () {
|
179 | if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {
|
180 | trigger(arg, true);
|
181 | }
|
182 | }, [arg, trigger]);
|
183 | return useMemo(function () { return [trigger, arg]; }, [trigger, arg]);
|
184 | };
|
185 | var useQueryState = function (arg, _c) {
|
186 | var _d = _c === void 0 ? {} : _c, _e = _d.skip, skip = _e === void 0 ? false : _e, _f = _d.selectFromResult, selectFromResult = _f === void 0 ? defaultQueryStateSelector : _f;
|
187 | var select = api.endpoints[name].select;
|
188 | var stableArg = useShallowStableValue(skip ? skipToken : arg);
|
189 | var lastValue = useRef2();
|
190 | var selectDefaultResult = useMemo(function () { return createSelector([select(stableArg), function (_, lastResult) { return lastResult; }], queryStatePreSelector); }, [select, stableArg]);
|
191 | var querySelector = useMemo(function () { return createSelector([selectDefaultResult], selectFromResult); }, [selectDefaultResult, selectFromResult]);
|
192 | var currentState = useSelector(function (state) { return querySelector(state, lastValue.current); }, shallowEqual2);
|
193 | var store = useStore();
|
194 | var newLastValue = selectDefaultResult(store.getState(), lastValue.current);
|
195 | useIsomorphicLayoutEffect(function () {
|
196 | lastValue.current = newLastValue;
|
197 | }, [newLastValue]);
|
198 | return currentState;
|
199 | };
|
200 | return {
|
201 | useQueryState: useQueryState,
|
202 | useQuerySubscription: useQuerySubscription,
|
203 | useLazyQuerySubscription: useLazyQuerySubscription,
|
204 | useLazyQuery: function (options) {
|
205 | var _c = useLazyQuerySubscription(options), trigger = _c[0], arg = _c[1];
|
206 | var queryStateResults = useQueryState(arg, __spreadProps(__spreadValues({}, options), {
|
207 | skip: arg === UNINITIALIZED_VALUE
|
208 | }));
|
209 | var info = useMemo(function () { return ({ lastArg: arg }); }, [arg]);
|
210 | return useMemo(function () { return [trigger, queryStateResults, info]; }, [trigger, queryStateResults, info]);
|
211 | },
|
212 | useQuery: function (arg, options) {
|
213 | var querySubscriptionResults = useQuerySubscription(arg, options);
|
214 | var queryStateResults = useQueryState(arg, __spreadValues({
|
215 | selectFromResult: arg === skipToken || (options == null ? void 0 : options.skip) ? void 0 : noPendingQueryStateSelector
|
216 | }, options));
|
217 | return useMemo(function () { return __spreadValues(__spreadValues({}, queryStateResults), querySubscriptionResults); }, [queryStateResults, querySubscriptionResults]);
|
218 | }
|
219 | };
|
220 | }
|
221 | function buildMutationHook(name) {
|
222 | return function (_c) {
|
223 | var _d = _c === void 0 ? {} : _c, _e = _d.selectFromResult, selectFromResult = _e === void 0 ? defaultMutationStateSelector : _e;
|
224 | var _a;
|
225 | var _f = api.endpoints[name], select = _f.select, initiate = _f.initiate;
|
226 | var dispatch = useDispatch();
|
227 | var _g = useState(), requestId = _g[0], setRequestId = _g[1];
|
228 | var promiseRef = useRef2();
|
229 | useEffect2(function () {
|
230 | return function () {
|
231 | var _a2;
|
232 | (_a2 = promiseRef.current) == null ? void 0 : _a2.unsubscribe();
|
233 | promiseRef.current = void 0;
|
234 | };
|
235 | }, []);
|
236 | var triggerMutation = useCallback(function (arg) {
|
237 | var promise;
|
238 | batch(function () {
|
239 | var _a2;
|
240 | (_a2 = promiseRef == null ? void 0 : promiseRef.current) == null ? void 0 : _a2.unsubscribe();
|
241 | promise = dispatch(initiate(arg));
|
242 | promiseRef.current = promise;
|
243 | setRequestId(promise.requestId);
|
244 | });
|
245 | return promise;
|
246 | }, [dispatch, initiate]);
|
247 | var mutationSelector = useMemo(function () { return createSelector([select(requestId || skipToken)], function (subState) { return selectFromResult(subState); }); }, [select, requestId, selectFromResult]);
|
248 | var currentState = useSelector(mutationSelector, shallowEqual2);
|
249 | var originalArgs = (_a = promiseRef.current) == null ? void 0 : _a.arg.originalArgs;
|
250 | var finalState = useMemo(function () { return __spreadProps(__spreadValues({}, currentState), {
|
251 | originalArgs: originalArgs
|
252 | }); }, [currentState, originalArgs]);
|
253 | return useMemo(function () { return [triggerMutation, finalState]; }, [triggerMutation, finalState]);
|
254 | };
|
255 | }
|
256 | }
|
257 |
|
258 | var DefinitionType;
|
259 | (function (DefinitionType2) {
|
260 | DefinitionType2["query"] = "query";
|
261 | DefinitionType2["mutation"] = "mutation";
|
262 | })(DefinitionType || (DefinitionType = {}));
|
263 | function isQueryDefinition(e) {
|
264 | return e.type === DefinitionType.query;
|
265 | }
|
266 | function isMutationDefinition(e) {
|
267 | return e.type === DefinitionType.mutation;
|
268 | }
|
269 |
|
270 | function capitalize(str) {
|
271 | return str.replace(str[0], str[0].toUpperCase());
|
272 | }
|
273 |
|
274 | function safeAssign(target) {
|
275 | var args = [];
|
276 | for (var _i = 1; _i < arguments.length; _i++) {
|
277 | args[_i - 1] = arguments[_i];
|
278 | }
|
279 | Object.assign.apply(Object, __spreadArray([target], args));
|
280 | }
|
281 |
|
282 | import { useDispatch as rrUseDispatch, useSelector as rrUseSelector, useStore as rrUseStore, batch as rrBatch } from "react-redux";
|
283 | var reactHooksModuleName = Symbol();
|
284 | var reactHooksModule = function (_c) {
|
285 | var _d = _c === void 0 ? {} : _c, _e = _d.batch, batch = _e === void 0 ? rrBatch : _e, _f = _d.useDispatch, useDispatch = _f === void 0 ? rrUseDispatch : _f, _g = _d.useSelector, useSelector = _g === void 0 ? rrUseSelector : _g, _h = _d.useStore, useStore = _h === void 0 ? rrUseStore : _h;
|
286 | return ({
|
287 | name: reactHooksModuleName,
|
288 | init: function (api, options, context) {
|
289 | var anyApi = api;
|
290 | var _c = buildHooks({
|
291 | api: api,
|
292 | moduleOptions: { batch: batch, useDispatch: useDispatch, useSelector: useSelector, useStore: useStore }
|
293 | }), buildQueryHooks = _c.buildQueryHooks, buildMutationHook = _c.buildMutationHook, usePrefetch = _c.usePrefetch;
|
294 | safeAssign(anyApi, { usePrefetch: usePrefetch });
|
295 | safeAssign(context, { batch: batch });
|
296 | return {
|
297 | injectEndpoint: function (endpointName, definition) {
|
298 | if (isQueryDefinition(definition)) {
|
299 | var _c = buildQueryHooks(endpointName), useQuery = _c.useQuery, useLazyQuery = _c.useLazyQuery, useLazyQuerySubscription = _c.useLazyQuerySubscription, useQueryState = _c.useQueryState, useQuerySubscription = _c.useQuerySubscription;
|
300 | safeAssign(anyApi.endpoints[endpointName], {
|
301 | useQuery: useQuery,
|
302 | useLazyQuery: useLazyQuery,
|
303 | useLazyQuerySubscription: useLazyQuerySubscription,
|
304 | useQueryState: useQueryState,
|
305 | useQuerySubscription: useQuerySubscription
|
306 | });
|
307 | api["use" + capitalize(endpointName) + "Query"] = useQuery;
|
308 | api["useLazy" + capitalize(endpointName) + "Query"] = useLazyQuery;
|
309 | }
|
310 | else if (isMutationDefinition(definition)) {
|
311 | var useMutation = buildMutationHook(endpointName);
|
312 | safeAssign(anyApi.endpoints[endpointName], {
|
313 | useMutation: useMutation
|
314 | });
|
315 | api["use" + capitalize(endpointName) + "Mutation"] = useMutation;
|
316 | }
|
317 | }
|
318 | };
|
319 | }
|
320 | });
|
321 | };
|
322 |
|
323 | export * from "@reduxjs/toolkit/query";
|
324 |
|
325 | import { configureStore } from "@reduxjs/toolkit";
|
326 | import React from "react";
|
327 | import { Provider } from "react-redux";
|
328 | import { setupListeners } from "@reduxjs/toolkit/query";
|
329 | function ApiProvider(props) {
|
330 | var store = React.useState(function () {
|
331 | var _c;
|
332 | return configureStore({
|
333 | reducer: (_c = {},
|
334 | _c[props.api.reducerPath] = props.api.reducer,
|
335 | _c),
|
336 | middleware: function (gDM) { return gDM().concat(props.api.middleware); }
|
337 | });
|
338 | })[0];
|
339 | setupListeners(store.dispatch, props.setupListeners);
|
340 | return React.createElement(Provider, {
|
341 | store: store,
|
342 | context: props.context
|
343 | }, props.children);
|
344 | }
|
345 |
|
346 | var createApi = buildCreateApi(coreModule(), reactHooksModule());
|
347 | export { ApiProvider, createApi, reactHooksModule };
|
348 |
|
\ | No newline at end of file |