{"version":3,"file":"index.es-Q_4OmYRu.js","sources":["../../node_modules/vue-request/dist/index.es.js"],"sourcesContent":["import { isRef, ref, computed, watchEffect, watch, shallowRef, inject, onUnmounted, provide } from 'vue-demi';\n\nconst GLOBAL_OPTIONS = {};\nconst GLOBAL_OPTIONS_PROVIDE_KEY = Symbol('GLOBAL_OPTIONS_PROVIDE_KEY');\nconst setGlobalOptions = config => {\n Object.keys(config).forEach(key => {\n GLOBAL_OPTIONS[key] = config[key];\n });\n};\nconst getGlobalOptions = () => {\n return GLOBAL_OPTIONS;\n};\n\nconst definePlugin = options => {\n return options;\n};\n\nconst objectToString = Object.prototype.toString;\nconst toTypeString = val => objectToString.call(val);\nconst isPlainObject = val => toTypeString(val) === '[object Object]';\nconst isArray = val => Array.isArray(val);\nconst isObject = val => val !== null && typeof val === 'object';\nconst isFunction = fn => fn instanceof Function;\nconst isNil = val => val === null || val === undefined;\nconst isServer = typeof window === 'undefined';\nconst isDocumentVisibility = () => {\n var _window$document;\n if (isServer || isNil((_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.visibilityState)) return true;\n return window.document.visibilityState === 'visible';\n};\nconst isOnline = () => {\n var _ref, _window$navigator;\n return (_ref = !isServer && ((_window$navigator = window.navigator) === null || _window$navigator === void 0 ? void 0 : _window$navigator.onLine)) !== null && _ref !== void 0 ? _ref : true;\n};\nconst resolvedPromise = () => new Promise(() => {});\nconst get = function (source, path) {\n let defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n // a[3].b -> a.3.b\n const paths = path.replace(/\\[(\\d+)\\]/g, '.$1').split('.');\n let result = source;\n for (const p of paths) {\n result = Object(result)[p];\n if (result === undefined) {\n return defaultValue;\n }\n }\n return result;\n};\nfunction omit(object, keys) {\n const result = Object.assign({}, object);\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\nconst warning = function (message) {\n let throwError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const msg = `Warning: [vue-request] ${message}`;\n if (throwError) {\n return new Error(msg);\n } else {\n console.error(msg);\n }\n};\nconst refToRaw = value => {\n return isRef(value) ? value.value : value;\n};\nconst shallowCopy = value => {\n if (isObject(value)) {\n return Object.assign(isArray(value) ? [] : {}, value);\n } else {\n return value;\n }\n};\n\nconst CACHE_MAP = new Map();\nconst getCache = cacheKey => {\n if (isNil(cacheKey)) return;\n const data = CACHE_MAP.get(cacheKey);\n return data;\n};\nconst setCache = (cacheKey, cacheTime, data) => {\n const oldCache = CACHE_MAP.get(cacheKey);\n if (oldCache !== null && oldCache !== void 0 && oldCache.timer) {\n clearTimeout(oldCache.timer);\n }\n const timer = setTimeout(() => CACHE_MAP.delete(cacheKey), cacheTime);\n CACHE_MAP.set(cacheKey, {\n ...data,\n timer\n });\n};\nconst clearCache = cacheKey => {\n if (cacheKey) {\n var _CACHE_MAP$get;\n const timer = (_CACHE_MAP$get = CACHE_MAP.get(cacheKey)) === null || _CACHE_MAP$get === void 0 ? void 0 : _CACHE_MAP$get.timer;\n timer && clearTimeout(timer);\n CACHE_MAP.delete(cacheKey);\n } else {\n // clear timer\n CACHE_MAP.forEach(i => i.timer && clearTimeout(i.timer));\n CACHE_MAP.clear();\n }\n};\n\n/**\r\n * source by `lodash`\r\n * https://github.com/lodash/lodash.git\r\n */\nfunction debounce(func, wait, options) {\n let lastArgs, lastThis, maxWait, result, timerId, lastCallTime;\n let lastInvokeTime = 0;\n let leading = false;\n let maxing = false;\n let trailing = true;\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n const useRAF = !wait && wait !== 0 && typeof window.requestAnimationFrame === 'function';\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n wait = +wait || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n const args = lastArgs;\n const thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function startTimer(pendingFunc, wait) {\n if (useRAF) {\n window.cancelAnimationFrame(timerId);\n return window.requestAnimationFrame(pendingFunc);\n }\n return setTimeout(pendingFunc, wait);\n }\n function cancelTimer(id) {\n if (useRAF) {\n return window.cancelAnimationFrame(id);\n }\n clearTimeout(id);\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n const timeSinceLastCall = time - lastCallTime;\n const timeSinceLastInvoke = time - lastInvokeTime;\n const timeWaiting = wait - timeSinceLastCall;\n return maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n const timeSinceLastCall = time - lastCallTime;\n const timeSinceLastInvoke = time - lastInvokeTime;\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = startTimer(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n cancelTimer(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now());\n }\n function pending() {\n return timerId !== undefined;\n }\n function debounced() {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n lastArgs = args;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = startTimer(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n debounced.pending = pending;\n return debounced;\n}\n\nfunction baseMerge(origin, target) {\n for (const key in target) {\n if (target[key] === undefined) {\n continue;\n }\n if (!isObject(target[key]) ||\n // `target[key]` is not an object\n !isObject(origin[key]) ||\n // `target[key]` is not an object\n !(key in origin) // `key` is not in the origin object\n ) {\n origin[key] = target[key];\n continue;\n }\n if (isPlainObject(target[key]) || isArray(target[key])) {\n baseMerge(origin[key], target[key]);\n }\n }\n}\nfunction merge(origin) {\n const result = Object.assign({}, origin);\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n if (!others.length) return result;\n for (const item of others) {\n baseMerge(result, item);\n }\n return result;\n}\n\n/**\r\n * source by `lodash`\r\n * https://github.com/lodash/lodash.git\r\n */\nfunction throttle(func, wait, options) {\n let leading = true;\n let trailing = true;\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n leading,\n trailing,\n maxWait: wait\n });\n}\n\nvar useDebouncePlugin = definePlugin((queryInstance, _ref) => {\n let {\n debounceInterval,\n debounceOptions,\n manual\n } = _ref;\n const initialAutoRunFlag = ref(false);\n const debouncedRun = ref();\n const debounceOptionsRef = computed(() => debounceOptions);\n const debounceIntervalRef = computed(() => refToRaw(debounceInterval));\n const originRunRef = ref(queryInstance.context.runAsync);\n if (!manual) {\n initialAutoRunFlag.value = true;\n }\n watchEffect(onInvalidate => {\n if (isNil(debounceIntervalRef.value)) return;\n debouncedRun.value = debounce(callback => callback(), debounceIntervalRef.value, debounceOptionsRef.value);\n queryInstance.context.runAsync = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise((resolve, reject) => {\n if (initialAutoRunFlag.value) {\n initialAutoRunFlag.value = false;\n originRunRef.value(...args).then(resolve).catch(reject);\n } else {\n debouncedRun.value(() => {\n originRunRef.value(...args).then(resolve).catch(reject);\n });\n }\n });\n };\n onInvalidate(() => {\n var _debouncedRun$value;\n (_debouncedRun$value = debouncedRun.value) === null || _debouncedRun$value === void 0 ? void 0 : _debouncedRun$value.cancel();\n queryInstance.context.runAsync = originRunRef.value;\n });\n });\n return {\n onCancel() {\n var _debouncedRun$value2;\n (_debouncedRun$value2 = debouncedRun.value) === null || _debouncedRun$value2 === void 0 ? void 0 : _debouncedRun$value2.cancel();\n }\n };\n});\n\nvar useErrorRetryPlugin = definePlugin((queryInstance, _ref) => {\n let {\n errorRetryCount = 0,\n errorRetryInterval = 0\n } = _ref;\n const retryTimer = ref();\n const retriedCount = ref(0);\n const errorRetryCountRef = computed(() => refToRaw(errorRetryCount));\n const errorRetryIntervalRef = computed(() => refToRaw(errorRetryInterval));\n let isRetrying = false;\n // reset retried count\n const resetRetriedCount = () => {\n retriedCount.value = 0;\n };\n const actualErrorRetryInterval = computed(() => {\n if (errorRetryIntervalRef.value) return errorRetryIntervalRef.value;\n const baseTime = 1000;\n const minCoefficient = 1;\n const maxCoefficient = 9;\n // When retrying for the first time, in order to avoid the coefficient being 0\n // so replace 0 with 2, the coefficient range will become 1 - 2\n const coefficient = Math.floor(Math.random() * 2 ** Math.min(retriedCount.value, maxCoefficient) + minCoefficient);\n return baseTime * coefficient;\n });\n const errorRetryHooks = () => {\n let timerId;\n const isInfiniteRetry = errorRetryCountRef.value === -1;\n const hasRetryCount = retriedCount.value < errorRetryCountRef.value;\n // if errorRetryCount is -1, it will retry the request until it success\n if (isInfiniteRetry || hasRetryCount) {\n if (!isInfiniteRetry) retriedCount.value += 1;\n timerId = setTimeout(() => {\n isRetrying = true;\n queryInstance.context.refresh();\n }, actualErrorRetryInterval.value);\n }\n return () => timerId && clearTimeout(timerId);\n };\n // clear retryTimer\n const clearTimer = () => {\n if (retryTimer.value) {\n retryTimer.value();\n }\n };\n return {\n onBefore() {\n if (!isRetrying) {\n resetRetriedCount();\n }\n isRetrying = false;\n clearTimer();\n },\n onSuccess() {\n resetRetriedCount();\n },\n onError() {\n retryTimer.value = errorRetryHooks();\n },\n onCancel() {\n // TODO: Whether to reset the count when `onCancel`\n resetRetriedCount();\n clearTimer();\n }\n };\n});\n\nvar useReadyPlugin = definePlugin((queryInstance, _ref) => {\n let {\n ready = ref(true),\n manual,\n defaultParams = []\n } = _ref;\n // watch ready\n watch(ready, val => {\n if (!manual && val) {\n queryInstance.context.run(...defaultParams);\n }\n }, {\n flush: 'sync'\n });\n return {\n onBefore() {\n const readyFlag = isFunction(ready) ? ready() : ready.value;\n if (!readyFlag) {\n queryInstance.loading.value = false;\n return {\n isBreak: true\n };\n }\n }\n };\n});\n\nvar useRefreshDepsPlugin = definePlugin((queryInstance, _ref) => {\n let {\n refreshDeps,\n refreshDepsAction,\n manual\n } = _ref;\n if (refreshDeps === undefined || isArray(refreshDeps) && refreshDeps.length === 0) return {};\n const deps = isArray(refreshDeps) ? refreshDeps : [refreshDeps];\n // watch refreshDeps\n watch(deps, () => {\n if (refreshDepsAction) {\n refreshDepsAction();\n } else {\n !manual && queryInstance.context.refresh();\n }\n });\n return {};\n});\n\nvar useThrottlePlugin = definePlugin((queryInstance, _ref) => {\n let {\n throttleInterval,\n throttleOptions\n } = _ref;\n const throttledRun = ref();\n const throttleIntervalRef = computed(() => refToRaw(throttleInterval));\n const throttleOptionsRef = computed(() => throttleOptions);\n const originRunRef = ref(queryInstance.context.runAsync);\n watchEffect(onInvalidate => {\n if (isNil(throttleInterval)) return {};\n throttledRun.value = throttle(callback => callback(), throttleIntervalRef.value, throttleOptionsRef.value);\n queryInstance.context.runAsync = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise((resolve, reject) => {\n throttledRun.value(() => {\n originRunRef.value(...args).then(resolve).catch(reject);\n });\n });\n };\n onInvalidate(() => {\n var _throttledRun$value;\n (_throttledRun$value = throttledRun.value) === null || _throttledRun$value === void 0 ? void 0 : _throttledRun$value.cancel();\n queryInstance.context.runAsync = originRunRef.value;\n });\n });\n return {\n onCancel() {\n var _throttledRun$value2;\n (_throttledRun$value2 = throttledRun.value) === null || _throttledRun$value2 === void 0 ? void 0 : _throttledRun$value2.cancel();\n }\n };\n});\n\nconst setStateBind = (oldState, publicCb) => {\n return newState => {\n Object.keys(newState).forEach(key => {\n oldState[key].value = newState[key];\n });\n publicCb.forEach(fun => fun(oldState));\n };\n};\nconst composeMiddleware = (middleArray, hook) => {\n return () => {\n let next = hook;\n for (let i = middleArray.length; i-- > 0;) {\n next = middleArray[i](next);\n }\n return next();\n };\n};\nconst createQuery = (service, config, initialState) => {\n var _initialState$loading, _initialState$data;\n const {\n initialData,\n onSuccess,\n onError,\n onBefore,\n onAfter\n } = config;\n const loading = ref((_initialState$loading = initialState === null || initialState === void 0 ? void 0 : initialState.loading) !== null && _initialState$loading !== void 0 ? _initialState$loading : false);\n const data = shallowRef((_initialState$data = initialState === null || initialState === void 0 ? void 0 : initialState.data) !== null && _initialState$data !== void 0 ? _initialState$data : initialData);\n const error = shallowRef(initialState === null || initialState === void 0 ? void 0 : initialState.error);\n const params = ref(initialState === null || initialState === void 0 ? void 0 : initialState.params);\n const plugins = ref([]);\n const status = shallowRef('pending');\n const context = {};\n const setState = setStateBind({\n status,\n loading,\n data,\n error,\n params\n }, []);\n const emit = function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (event === 'onQuery') {\n const queryFn = plugins.value.map(i => i.onQuery).filter(Boolean);\n return {\n servicePromise: composeMiddleware(queryFn, args[0])()\n };\n } else {\n // @ts-ignore\n const res = plugins.value.map(i => {\n var _i$event;\n return (_i$event = i[event]) === null || _i$event === void 0 ? void 0 : _i$event.call(i, ...args);\n });\n return Object.assign({}, ...res);\n }\n };\n const count = ref(0);\n context.runAsync = async function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n setState({\n loading: true,\n params: args,\n status: 'pending'\n });\n count.value += 1;\n const currentCount = count.value;\n const {\n isBreak,\n breakResult = resolvedPromise()\n } = emit('onBefore', args);\n if (isBreak) {\n setState({\n status: 'settled'\n });\n return breakResult;\n }\n onBefore === null || onBefore === void 0 ? void 0 : onBefore(args);\n try {\n const serviceWrapper = () => new Promise(resolve => resolve(service(...params.value)));\n let {\n servicePromise\n } = emit('onQuery', serviceWrapper);\n /* istanbul ignore next */\n if (!servicePromise) {\n servicePromise = serviceWrapper();\n }\n const res = await servicePromise;\n if (currentCount !== count.value) return resolvedPromise();\n setState({\n data: res,\n loading: false,\n error: undefined,\n status: 'settled'\n });\n emit('onSuccess', res, args);\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(res, args);\n if (currentCount === count.value) {\n emit('onAfter', args, res, undefined);\n }\n onAfter === null || onAfter === void 0 ? void 0 : onAfter(args);\n return res;\n } catch (error) {\n if (currentCount !== count.value) return resolvedPromise();\n setState({\n loading: false,\n error: error,\n status: 'settled'\n });\n emit('onError', error, args);\n onError === null || onError === void 0 ? void 0 : onError(error, args);\n if (currentCount === count.value) {\n emit('onAfter', args, undefined, error);\n }\n onAfter === null || onAfter === void 0 ? void 0 : onAfter(args);\n throw error;\n }\n };\n context.run = function () {\n context.runAsync(...arguments).catch(error => {\n if (!onError) {\n console.error(error);\n }\n });\n };\n context.cancel = () => {\n count.value += 1;\n setState({\n loading: false\n });\n emit('onCancel');\n };\n context.refresh = () => {\n context.run(...(params.value || []));\n };\n context.refreshAsync = () => {\n return context.runAsync(...(params.value || []));\n };\n context.mutate = x => {\n const mutateData = isFunction(x) ? x(data.value) : x;\n const _mutateData = shallowCopy(mutateData);\n setState({\n data: _mutateData\n });\n emit('onMutate', _mutateData);\n };\n return {\n status,\n loading,\n data,\n error,\n params,\n plugins,\n context\n };\n};\n\nfunction useQuery(service) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let plugins = arguments.length > 2 ? arguments[2] : undefined;\n const injectedGlobalOptions = inject(GLOBAL_OPTIONS_PROVIDE_KEY, {});\n const config = {\n ...getGlobalOptions(),\n ...injectedGlobalOptions,\n ...options\n };\n const {\n manual = false,\n defaultParams = []\n } = config;\n const queryInstance = createQuery(service, config);\n queryInstance.plugins.value = plugins.map(i => i(queryInstance, config));\n // initial run\n if (!manual) {\n const params = queryInstance.params.value || defaultParams;\n queryInstance.context.run(...params);\n }\n onUnmounted(() => {\n queryInstance.context.cancel();\n });\n return {\n loading: queryInstance.loading,\n data: queryInstance.data,\n error: queryInstance.error,\n params: queryInstance.params,\n cancel: queryInstance.context.cancel,\n refresh: queryInstance.context.refresh,\n refreshAsync: queryInstance.context.refreshAsync,\n mutate: queryInstance.context.mutate,\n run: queryInstance.context.run,\n runAsync: queryInstance.context.runAsync\n };\n}\n\nfunction useLoadMore(service, options) {\n const {\n isNoMore,\n ...restOptions\n } = options !== null && options !== void 0 ? options : {};\n const data = shallowRef();\n const dataList = computed(() => {\n var _data$value;\n return ((_data$value = data.value) === null || _data$value === void 0 ? void 0 : _data$value.list) || [];\n });\n const loadingMore = ref(false);\n const isTriggerByLoadMore = ref(false);\n const count = ref(0);\n const {\n runAsync,\n run,\n cancel: _cancel,\n ...rest\n } = useQuery(async lastData => {\n const currentCount = count.value;\n const currentData = await service(lastData);\n if (currentCount === count.value) {\n if (lastData) {\n data.value = {\n ...currentData,\n list: [...lastData.list, ...currentData.list]\n };\n } else {\n data.value = currentData;\n }\n }\n return currentData;\n }, {\n ...restOptions,\n defaultParams: [],\n refreshDepsAction: () => {\n if (restOptions !== null && restOptions !== void 0 && restOptions.refreshDepsAction) {\n restOptions.refreshDepsAction();\n } else {\n refresh();\n }\n },\n onError: error => {\n var _restOptions$onError;\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onError = restOptions.onError) === null || _restOptions$onError === void 0 ? void 0 : _restOptions$onError.call(restOptions, error);\n },\n onSuccess: data => {\n var _restOptions$onSucces;\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onSucces = restOptions.onSuccess) === null || _restOptions$onSucces === void 0 ? void 0 : _restOptions$onSucces.call(restOptions, data);\n },\n onBefore: () => {\n var _restOptions$onBefore;\n count.value += 1;\n if (isTriggerByLoadMore.value) {\n isTriggerByLoadMore.value = false;\n loadingMore.value = true;\n }\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onBefore = restOptions.onBefore) === null || _restOptions$onBefore === void 0 ? void 0 : _restOptions$onBefore.call(restOptions);\n },\n onAfter: () => {\n var _restOptions$onAfter;\n loadingMore.value = false;\n isTriggerByLoadMore.value = false;\n restOptions === null || restOptions === void 0 ? void 0 : (_restOptions$onAfter = restOptions.onAfter) === null || _restOptions$onAfter === void 0 ? void 0 : _restOptions$onAfter.call(restOptions);\n }\n }, [useErrorRetryPlugin, useDebouncePlugin, useThrottlePlugin, useRefreshDepsPlugin, useReadyPlugin]);\n const noMore = computed(() => {\n return isNoMore && isFunction(isNoMore) ? isNoMore(data.value) : false;\n });\n const loadMore = () => {\n loadMoreAsync().catch(() => {});\n };\n const loadMoreAsync = () => {\n if (noMore.value) {\n return Promise.reject(warning('No more data. You need to ignore this error by checking if `noMore` is false before calling `loadMoreAsync`', true));\n }\n isTriggerByLoadMore.value = true;\n return runAsync(data.value);\n };\n const refresh = () => run();\n const refreshAsync = () => runAsync();\n const cancel = () => {\n count.value += 1;\n _cancel();\n loadingMore.value = false;\n };\n const mutate = x => {\n const mutateData = isFunction(x) ? x(data.value) : x;\n const _mutateData = shallowCopy(mutateData);\n data.value = _mutateData;\n };\n return {\n data,\n dataList,\n loadingMore,\n noMore,\n cancel,\n mutate,\n refresh,\n refreshAsync,\n loadMore,\n loadMoreAsync,\n ...omit(rest, ['refresh', 'refreshAsync', 'mutate', 'params', 'data'])\n };\n}\n\nconst cacheQuery = new Map();\nconst setCacheQuery = (cacheKey, query) => {\n cacheQuery.set(cacheKey, query);\n query.then(res => {\n cacheQuery.delete(cacheKey);\n return res;\n }).catch(() => {\n cacheQuery.delete(cacheKey);\n });\n};\nconst getCacheQuery = cacheKey => {\n return cacheQuery.get(cacheKey);\n};\n\nconst listeners = new Map();\nconst trigger = (key, data) => {\n if (listeners.has(key)) {\n listeners.get(key).forEach(item => item(data));\n }\n};\nconst subscribe = (key, listener) => {\n if (!listeners.has(key)) {\n listeners.set(key, [listener]);\n } else {\n listeners.get(key).push(listener);\n }\n return () => {\n const index = listeners.get(key).indexOf(listener);\n listeners.get(key).splice(index, 1);\n };\n};\n\nvar useCachePlugin = definePlugin((queryInstance, _ref) => {\n let {\n cacheKey: customCacheKey,\n cacheTime = 600000,\n staleTime = 0,\n getCache: customGetCache,\n setCache: customSetCache\n } = _ref;\n if (!customCacheKey) return {};\n const cacheKey = isFunction(customCacheKey) ? customCacheKey : () => customCacheKey;\n const unSubscribe = ref(() => {});\n let currentQuery;\n const _getCache = key => {\n if (customGetCache) {\n return customGetCache(key);\n } else {\n return getCache(key);\n }\n };\n const _setCache = (key, time, cacheData) => {\n if (customSetCache) {\n customSetCache(key, cacheData);\n } else {\n setCache(key, time, cacheData);\n }\n trigger(key, cacheData.data);\n };\n const isFresh = time => staleTime === -1 || time + staleTime > new Date().getTime();\n // Returns a boolean indicating whether the object has the specified property as its own property\n // (as opposed to inheriting it)\n const hasProp = (object, prop) => Object.prototype.hasOwnProperty.call(object, prop);\n const subscribeCache = params => {\n const _cacheKey = cacheKey(params);\n return subscribe(_cacheKey, data => {\n queryInstance.data.value = data;\n });\n };\n // When initializing, restore if there is a cache\n const _cacheKey = cacheKey();\n const cache = _getCache(_cacheKey);\n if (cache && hasProp(cache, 'data')) {\n queryInstance.data.value = cache.data;\n queryInstance.params.value = cache.params;\n }\n if (_cacheKey) {\n unSubscribe.value = subscribeCache();\n }\n onUnmounted(() => {\n unSubscribe.value();\n });\n return {\n onBefore(params) {\n const _cacheKey = cacheKey(params);\n const cache = _getCache(_cacheKey);\n if (!cache || !hasProp(cache, 'data')) {\n return {};\n }\n // If it's fresh, stop the request\n if (isFresh(cache.time)) {\n queryInstance.data.value = cache.data;\n queryInstance.loading.value = false;\n return {\n isBreak: true,\n breakResult: cache.data\n };\n } else {\n // If it is not fresh, set data and request\n queryInstance.data.value = cache.data;\n }\n },\n onQuery(service) {\n const params = queryInstance.params.value;\n const _cacheKey = cacheKey(params);\n let servicePromise = getCacheQuery(_cacheKey);\n if (servicePromise && servicePromise !== currentQuery) {\n return () => servicePromise;\n }\n servicePromise = service();\n currentQuery = servicePromise;\n setCacheQuery(_cacheKey, servicePromise);\n return () => servicePromise;\n },\n onSuccess(data, params) {\n const _cacheKey = cacheKey(params);\n if (_cacheKey) {\n unSubscribe.value();\n _setCache(_cacheKey, cacheTime, {\n data,\n params,\n time: new Date().getTime()\n });\n unSubscribe.value = subscribeCache(params);\n }\n },\n onMutate(data) {\n const _cacheKey = cacheKey(queryInstance.params.value);\n if (_cacheKey) {\n unSubscribe.value();\n _setCache(_cacheKey, cacheTime, {\n data,\n params: queryInstance.params.value,\n time: new Date().getTime()\n });\n unSubscribe.value = subscribeCache(queryInstance.params.value);\n }\n }\n };\n});\n\nfunction setTimeoutPromise(duration) {\n let timerId, stop;\n class Timer extends Promise {\n constructor(fn) {\n super(fn);\n this.cancel = () => {\n stop();\n clearTimeout(timerId);\n };\n }\n }\n return new Timer(resolve => {\n stop = resolve;\n timerId = setTimeout(stop, duration);\n });\n}\nfunction getCurrentTime() {\n return new Date().getTime();\n}\nvar useLoadingDelayPlugin = definePlugin((queryInstance, _ref) => {\n let {\n loadingDelay = 0,\n loadingKeep = 0\n } = _ref;\n const delayLoadingTimer = ref(() => {});\n const loadingDelayRef = computed(() => refToRaw(loadingDelay));\n const loadingKeepRef = computed(() => refToRaw(loadingKeep));\n let startTime = 0;\n let timeoutPromise = {};\n const delayLoading = () => {\n let timerId;\n if (loadingDelayRef.value) {\n timerId = setTimeout(() => {\n if (queryInstance.status.value === 'pending') {\n queryInstance.loading.value = true;\n }\n }, loadingDelayRef.value);\n }\n return () => timerId && clearTimeout(timerId);\n };\n return {\n onBefore() {\n queryInstance.loading.value = !loadingDelayRef.value;\n delayLoadingTimer.value();\n delayLoadingTimer.value = delayLoading();\n startTime = getCurrentTime();\n },\n onQuery(service) {\n if (!loadingKeepRef.value) return () => service();\n timeoutPromise = setTimeoutPromise(loadingKeepRef.value + loadingDelayRef.value);\n const _service = async () => {\n try {\n const res = await service();\n if (getCurrentTime() - startTime <= loadingDelayRef.value) {\n timeoutPromise.cancel();\n }\n return Promise.resolve(res);\n } catch (error) {\n if (getCurrentTime() - startTime <= loadingDelayRef.value) {\n timeoutPromise.cancel();\n }\n return Promise.reject(error);\n }\n };\n const servicePromise = Promise.allSettled([_service(), timeoutPromise]).then(res => {\n const result = res[0];\n if (result.status === 'fulfilled') {\n return result.value;\n } else {\n return Promise.reject(result.reason);\n }\n });\n return () => servicePromise;\n },\n onCancel() {\n delayLoadingTimer.value();\n },\n onAfter() {\n delayLoadingTimer.value();\n }\n };\n});\n\nvar _window;\nconst FOCUS_LISTENER = new Set();\nconst VISIBLE_LISTENER = new Set();\nconst RECONNECT_LISTENER = new Set();\nconst subscriber = (listenerType, event) => {\n let listeners;\n switch (listenerType) {\n case 'FOCUS_LISTENER':\n listeners = FOCUS_LISTENER;\n break;\n case 'RECONNECT_LISTENER':\n listeners = RECONNECT_LISTENER;\n break;\n case 'VISIBLE_LISTENER':\n listeners = VISIBLE_LISTENER;\n break;\n }\n if (listeners.has(event)) return;\n listeners.add(event);\n return () => {\n listeners.delete(event);\n };\n};\nconst observer = listeners => {\n listeners.forEach(event => {\n event();\n });\n};\n/* istanbul ignore else */\nif (!isServer && (_window = window) !== null && _window !== void 0 && _window.addEventListener) {\n window.addEventListener('visibilitychange', () => {\n /* istanbul ignore else */\n if (isDocumentVisibility()) {\n observer(VISIBLE_LISTENER);\n }\n }, false);\n window.addEventListener('focus', () => observer(FOCUS_LISTENER), false);\n window.addEventListener('online', () => observer(RECONNECT_LISTENER), false);\n}\n\nvar usePollingPlugin = definePlugin((queryInstance, _ref) => {\n let {\n pollingInterval,\n pollingWhenHidden = false,\n pollingWhenOffline = false,\n errorRetryCount = 0\n } = _ref;\n const pollingTimer = ref();\n const stopPollingWhenHiddenOrOffline = ref(false);\n const pollingIntervalRef = computed(() => refToRaw(pollingInterval));\n const errorRetryCountRef = computed(() => refToRaw(errorRetryCount));\n const unsubscribeList = [];\n const addUnsubscribeList = event => {\n event && unsubscribeList.push(event);\n };\n const isKeepPolling = () => {\n return (\n // pollingWhenHidden = true or pollingWhenHidden = false and document is visibility\n (pollingWhenHidden || isDocumentVisibility()) && (\n // pollingWhenOffline = true or pollingWhenOffline = false and is online\n pollingWhenOffline || isOnline())\n );\n };\n const polling = pollingFunc => {\n // if errorRetry is enabled, then skip this method\n if (queryInstance.error.value && errorRetryCountRef.value !== 0) return;\n let timerId;\n if (!isNil(pollingIntervalRef.value) && pollingIntervalRef.value >= 0) {\n if (isKeepPolling()) {\n timerId = setTimeout(pollingFunc, pollingIntervalRef.value);\n } else {\n // stop polling\n stopPollingWhenHiddenOrOffline.value = true;\n return;\n }\n }\n return () => timerId && clearTimeout(timerId);\n };\n const rePolling = () => {\n if (stopPollingWhenHiddenOrOffline.value && isKeepPolling()) {\n queryInstance.context.refresh();\n stopPollingWhenHiddenOrOffline.value = false;\n }\n };\n watch(pollingIntervalRef, () => {\n if (pollingTimer.value) {\n pollingTimer.value();\n pollingTimer.value = polling(() => queryInstance.context.refresh());\n }\n });\n // subscribe polling\n if (!pollingWhenHidden) {\n addUnsubscribeList(subscriber('VISIBLE_LISTENER', rePolling));\n }\n // subscribe online when pollingWhenOffline is false\n if (!pollingWhenOffline) {\n addUnsubscribeList(subscriber('RECONNECT_LISTENER', rePolling));\n }\n onUnmounted(() => {\n unsubscribeList.forEach(unsubscribe => unsubscribe());\n });\n return {\n onBefore() {\n var _pollingTimer$value;\n (_pollingTimer$value = pollingTimer.value) === null || _pollingTimer$value === void 0 ? void 0 : _pollingTimer$value.call(pollingTimer);\n },\n onCancel() {\n var _pollingTimer$value2;\n (_pollingTimer$value2 = pollingTimer.value) === null || _pollingTimer$value2 === void 0 ? void 0 : _pollingTimer$value2.call(pollingTimer);\n },\n onAfter() {\n pollingTimer.value = polling(() => queryInstance.context.refresh());\n }\n };\n});\n\nconst limitTrigger = (fn, timeInterval) => {\n let running = false;\n return function () {\n if (running) return;\n running = true;\n fn(...arguments);\n setTimeout(() => {\n running = false;\n }, timeInterval);\n };\n};\n\nvar useRefreshOnWindowFocus = definePlugin((queryInstance, _ref) => {\n let {\n refreshOnWindowFocus = false,\n refocusTimespan = 5000\n } = _ref;\n const refreshOnWindowFocusRef = computed(() => refToRaw(refreshOnWindowFocus));\n const refocusTimespanRef = computed(() => refToRaw(refocusTimespan));\n const unsubscribeList = [];\n const addUnsubscribeList = event => {\n event && unsubscribeList.push(event);\n };\n const unsubscribe = () => {\n unsubscribeList.forEach(fn => fn());\n };\n watchEffect(() => {\n unsubscribe();\n if (refreshOnWindowFocusRef.value) {\n const limitRefresh = limitTrigger(queryInstance.context.refresh, refocusTimespanRef.value);\n addUnsubscribeList(subscriber('VISIBLE_LISTENER', limitRefresh));\n addUnsubscribeList(subscriber('FOCUS_LISTENER', limitRefresh));\n }\n });\n onUnmounted(() => {\n unsubscribe();\n });\n return {};\n});\n\nfunction useRequest(service, options, plugins) {\n return useQuery(service, options, [...(plugins || []), useLoadingDelayPlugin, useErrorRetryPlugin, useDebouncePlugin, usePollingPlugin, useThrottlePlugin, useRefreshOnWindowFocus, useRefreshDepsPlugin, useReadyPlugin, useCachePlugin]);\n}\n\nfunction usePagination(service) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const defaultPaginationOptions = {\n currentKey: 'current',\n pageSizeKey: 'pageSize',\n totalKey: 'total',\n totalPageKey: 'totalPage'\n };\n const injectedGlobalOptions = inject(GLOBAL_OPTIONS_PROVIDE_KEY, {});\n const {\n pagination,\n ...restOptions\n } = options;\n const {\n currentKey,\n pageSizeKey,\n totalKey,\n totalPageKey\n } = merge(defaultPaginationOptions, getGlobalOptions().pagination || {}, injectedGlobalOptions.pagination || {}, pagination || {});\n const finallyOptions = merge({\n defaultParams: [{\n [currentKey]: 1,\n [pageSizeKey]: 10\n }]\n }, restOptions);\n const {\n data,\n params,\n run,\n ...rest\n } = useRequest(service, finallyOptions);\n const paging = paginationParams => {\n const [oldPaginationParams, ...restParams] = params.value || [];\n const newPaginationParams = {\n ...oldPaginationParams,\n ...paginationParams\n };\n const mergerParams = [newPaginationParams, ...restParams];\n run(...mergerParams);\n };\n // changeCurrent\tchange current page\t(current: number) => void\n const changeCurrent = current => {\n paging({\n [currentKey]: current\n });\n };\n // changePageSize\tchange pageSize\t(pageSize: number) => void\n const changePageSize = pageSize => {\n paging({\n [pageSizeKey]: pageSize\n });\n };\n // changePagination\tchange current and pageSize\t(current: number, pageSize: number) => void\n const changePagination = (current, pageSize) => {\n paging({\n [currentKey]: current,\n [pageSizeKey]: pageSize\n });\n };\n const total = computed(() => get(data.value, totalKey, 0));\n const current = computed({\n get: () => {\n var _params$value$0$curre, _params$value, _params$value$;\n return (// @ts-ignore\n (_params$value$0$curre = (_params$value = params.value) === null || _params$value === void 0 ? void 0 : (_params$value$ = _params$value[0]) === null || _params$value$ === void 0 ? void 0 : _params$value$[currentKey]) !== null && _params$value$0$curre !== void 0 ? _params$value$0$curre : finallyOptions.defaultParams[0][currentKey]\n );\n },\n set: val => {\n changeCurrent(val);\n }\n });\n const pageSize = computed({\n get: () => {\n var _params$value$0$pageS, _params$value2, _params$value2$;\n return (// @ts-ignore\n (_params$value$0$pageS = (_params$value2 = params.value) === null || _params$value2 === void 0 ? void 0 : (_params$value2$ = _params$value2[0]) === null || _params$value2$ === void 0 ? void 0 : _params$value2$[pageSizeKey]) !== null && _params$value$0$pageS !== void 0 ? _params$value$0$pageS : finallyOptions.defaultParams[0][pageSizeKey]\n );\n },\n set: val => {\n changePageSize(val);\n }\n });\n const totalPage = computed(() => get(data.value, totalPageKey, Math.ceil(total.value / pageSize.value)));\n return {\n data,\n params,\n current,\n pageSize,\n total,\n totalPage,\n run,\n changeCurrent,\n changePageSize,\n changePagination,\n ...rest\n };\n}\n\nvar useRequestProvider = (config => {\n provide(GLOBAL_OPTIONS_PROVIDE_KEY, config);\n});\n\nexport { clearCache, definePlugin, setGlobalOptions, useLoadMore, usePagination, useRequest, useRequestProvider };\n"],"names":["GLOBAL_OPTIONS","GLOBAL_OPTIONS_PROVIDE_KEY","Symbol","isArray","val","Array","isObject","isFunction","fn","Function","isNil","isServer","window","isDocumentVisibility","_window$document","document","visibilityState","resolvedPromise","Promise","refToRaw","value","isRef","CACHE_MAP","Map","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","useRAF","requestAnimationFrame","TypeError","invokeFunc","time","args","thisArg","apply","startTimer","pendingFunc","cancelAnimationFrame","setTimeout","shouldInvoke","timeSinceLastCall","timerExpired","Date","now","trailingEdge","timeSinceLastInvoke","timeWaiting","Math","min","remainingWait","debounced","isInvoking","_len","arguments","length","_key","this","leadingEdge","max","cancel","id","clearTimeout","cancelTimer","flush","pending","useDebouncePlugin","queryInstance","_ref","debounceInterval","debounceOptions","manual","initialAutoRunFlag","ref","debouncedRun","debounceOptionsRef","computed","debounceIntervalRef","originRunRef","context","runAsync","watchEffect","onInvalidate","callback","resolve","reject","then","catch","_debouncedRun$value","onCancel","_debouncedRun$value2","useErrorRetryPlugin","errorRetryCount","errorRetryInterval","retryTimer","retriedCount","errorRetryCountRef","errorRetryIntervalRef","isRetrying","resetRetriedCount","actualErrorRetryInterval","floor","random","clearTimer","onBefore","onSuccess","onError","isInfiniteRetry","hasRetryCount","refresh","errorRetryHooks","useReadyPlugin","ready","defaultParams","watch","run","loading","isBreak","useRefreshDepsPlugin","refreshDeps","refreshDepsAction","deps","useThrottlePlugin","throttleInterval","throttleOptions","throttledRun","throttleIntervalRef","throttleOptionsRef","throttle","_throttledRun$value","_throttledRun$value2","createQuery","service","config","initialState","initialData","onAfter","data","shallowRef","error","params","plugins","status","setState","oldState","publicCb","newState","Object","keys","forEach","key","fun","emit","event","queryFn","map","i","onQuery","filter","Boolean","servicePromise","middleArray","hook","next","res","_i$event","call","assign","count","async","_len2","_key2","currentCount","breakResult","serviceWrapper","refreshAsync","mutate","x","mutateData","_mutateData","cacheQuery","listeners","useCachePlugin","cacheKey","customCacheKey","cacheTime","staleTime","getCache","customGetCache","setCache","customSetCache","unSubscribe","currentQuery","_getCache","get","_setCache","cacheData","oldCache","timer","delete","set","has","item","trigger","hasProp","object","prop","prototype","hasOwnProperty","subscribeCache","_cacheKey","listener","push","index","indexOf","splice","cache","onUnmounted","getTime","getCacheQuery","query","setCacheQuery","onMutate","getCurrentTime","_window","useLoadingDelayPlugin","loadingDelay","loadingKeep","delayLoadingTimer","loadingDelayRef","loadingKeepRef","startTime","timeoutPromise","delayLoading","duration","stop","constructor","super","setTimeoutPromise","allSettled","_service","reason","FOCUS_LISTENER","Set","VISIBLE_LISTENER","RECONNECT_LISTENER","subscriber","listenerType","add","observer","addEventListener","usePollingPlugin","pollingInterval","pollingWhenHidden","pollingWhenOffline","pollingTimer","stopPollingWhenHiddenOrOffline","pollingIntervalRef","unsubscribeList","addUnsubscribeList","isKeepPolling","_window$navigator","navigator","onLine","isOnline","polling","pollingFunc","rePolling","unsubscribe","_pollingTimer$value","_pollingTimer$value2","useRefreshOnWindowFocus","refreshOnWindowFocus","refocusTimespan","refreshOnWindowFocusRef","refocusTimespanRef","limitRefresh","timeInterval","running","limitTrigger","useRequest","injectedGlobalOptions","inject","useQuery"],"mappings":"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","x_google_ignoreList":[0]}