{"version":3,"sources":["webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/index.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/cache.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/limit.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/usePersistFn.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/useUpdateEffect.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/windowFocus.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/utils/windowVisible.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/useAsync.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/useLoadMore.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/usePaginated.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/configContext.js","webpack://epower-open/./node_modules/@ahooksjs/use-request/es/index.js","webpack://epower-open/./node_modules/lodash.debounce/index.js","webpack://epower-open/./node_modules/lodash.throttle/index.js","webpack://epower-open/./node_modules/swr/esm/libs/deep-equal.js","webpack://epower-open/./node_modules/swr/esm/libs/hash.js","webpack://epower-open/./node_modules/swr/esm/cache.js","webpack://epower-open/./node_modules/swr/esm/libs/web-preset.js","webpack://epower-open/./node_modules/swr/esm/config.js","webpack://epower-open/./node_modules/swr/esm/env.js","webpack://epower-open/./node_modules/swr/esm/swr-config-context.js","webpack://epower-open/./node_modules/swr/esm/use-swr.js","webpack://epower-open/./node_modules/swr/esm/index.js"],"names":["isDocumentVisible","document","visibilityState","cache","Map","getCache","key","currentCache","get","data","startTime","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","fn","ref","useRef","Error","current","persist","useCallback","args","_i","refFn","apply","effect","deps","isMounted","useEffect","listeners","eventsBinded","window","addEventListener","revalidate","navigator","onLine","listener","index","indexOf","splice","__assign","Object","assign","t","s","p","prototype","hasOwnProperty","this","DEFAULT_KEY","Fetch","service","config","subscribe","initState","timespan","pending","count","pollingWhenVisibleFlag","pollingTimer","undefined","loadingDelayTimer","unsubscribe","that","state","loading","params","run","bind","mutate","refresh","cancel","unmount","debounceRun","debounceInterval","_run","throttleRun","throttleInterval","limitRefresh","focusTimespan","setTimeout","pollingInterval","rePolling","refreshOnWindowFocus","setState","_this","clearTimeout","currentCount","loadingDelay","then","res","Promise","formattedResult","formatResult","onSuccess","onError","throwOnError","console","reject","pollingWhenHidden","resolve","forEach","options","_options","_a","refreshDeps","_b","manual","_c","_d","_e","defaultLoading","_f","_g","_h","defaultParams","_j","_k","fetchKey","cacheKey","_l","cacheTime","_m","staleTime","initialData","_o","ready","_p","newstFetchKey","servicePersist","onSuccessPersist","onErrorPersist","fetchKeyPersist","setFetches","_q","useState","cacheData_1","newFetches_1","keys","fetches","cacheFetch","newFetch","fetchesRef","readyMemoryParams","currentFetchKey","currentFetch","runRef","timer","set","Date","getTime","setCache","hasTriggeredByReady","cacheStartTime","values","f","reset","notExecutedWarning","name","warn","__rest","getOwnPropertySymbols","propertyIsEnumerable","isNoMore","threshold","restOptions","loadingMore","setLoadingMore","result","d","list","reload","restParams","slice","reloadRef","dataGroup","useMemo","listGroup","lastNoLoadingData","h","noMore","loadMore","scrollMethod","scrollHeight","scrollTop","clientHeight","scrollMethodRef","scrollTrigger","removeEventListener","paginated","defaultPageSize","pageSize","rest","sorter","filters","runChangePaination","paginationParams","oldPaginationParams","total","totalPage","Math","ceil","onChange","c","toCurrent","toPageSize","tempTotalPage","changeCurrent","changePageSize","changeCurrentRef","changeTable","pagination","tableProps","dataSource","ConfigContext","displayName","contextConfig","useContext","finalOptions","requestMethod","paginatedRef","loadMoreRef","promiseService","fetchProxy","fetch","ok","json","statusText","finalRequestMethod","url_1","url","rest_1","url_2","rest_2","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","freeSelf","self","root","Function","objectToString","toString","nativeMax","max","nativeMin","min","now","isObject","type","toNumber","isObjectLike","isSymbol","other","valueOf","replace","isBinary","test","module","exports","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","flush","FUNC_ERROR_TEXT","debounce","has","table","WeakMap","counter","Cache","entries","subs","_key","serializeKey","notify","Array","from","clear","delete","err","isArray","_hash","String","hash","isSubscribed","online","isOnline","fetcher","registerOnFocus","cb","registerOnReconnect","slowConnection","effectiveType","onLoadingSlow","onErrorRetry","_","__","opts","errorRetryCount","retryCount","timeout","random","errorRetryInterval","focusThrottleInterval","dedupingInterval","loadingTimeout","refreshInterval","revalidateOnFocus","revalidateOnReconnect","refreshWhenHidden","refreshWhenOffline","shouldRetryOnError","suspense","compare","deepEqual","foo","bar","ctor","len","constructor","RegExp","isPaused","IS_SERVER","Deno","version","deno","rAF","useLayoutEffect","createContext","ts","__awaiter","_arguments","P","generator","fulfilled","step","rejected","__generator","body","y","label","sent","trys","ops","verb","v","op","pop","CONCURRENT_PROMISES","CONCURRENT_PROMISES_TS","FOCUS_REVALIDATORS","RECONNECT_REVALIDATORS","CACHE_REVALIDATORS","MUTATION_TS","MUTATION_END_TS","revalidate_1","revalidators","trigger","shouldRevalidate","keyErr","keyValidating","updaters","currentData","currentError","currentIsValidating","promises","all","broadcastState","isValidating","defineProperty","SWRConfig","fnArgs","configRef","willRevalidateOnMount","revalidateOnMount","resolveData","cachedData","initialError","initialIsValidating","stateDependencies","stateRef","useDebugValue","latestData","latestError","rerender","dispatch","payload","shouldUpdateState","k","unmountedRef","initialMountedRef","keyRef","eventsCallback","event","boundMutate","_data","beforeMutationTs","beforeConcurrentPromisesTs","isAsyncMutation","err_1","shouldAbort","addRevalidator","callback","keyedRevalidators","revalidateOpts","dedupe","shouldDeduping","newData","startAt","newState","err_2","isUpdating","currentHookData","latestKeyedData","softRevalidate","unsubFocus","unsubReconnect","unsubUpdate","updatedData","updatedError","updatedIsValidating","needUpdate","tick","defineProperties","enumerable"],"mappings":"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","file":"396.e846c45c.js","sourcesContent":["export function isDocumentVisible() {\n if (typeof document !== 'undefined' && typeof document.visibilityState !== 'undefined') {\n return document.visibilityState !== 'hidden';\n }\n\n return true;\n}\nexport function isOnline() {\n if (typeof navigator.onLine !== 'undefined') {\n return navigator.onLine;\n }\n\n return true;\n}","var cache = new Map();\n\nvar setCache = function setCache(key, cacheTime, data) {\n var currentCache = cache.get(key);\n\n if (currentCache === null || currentCache === void 0 ? void 0 : currentCache.timer) {\n clearTimeout(currentCache.timer);\n }\n\n var timer = undefined;\n\n if (cacheTime > -1) {\n // 数据在不活跃 cacheTime 后,删除掉\n timer = setTimeout(function () {\n cache[\"delete\"](key);\n }, cacheTime);\n }\n\n cache.set(key, {\n data: data,\n timer: timer,\n startTime: new Date().getTime()\n });\n};\n\nvar getCache = function getCache(key) {\n var currentCache = cache.get(key);\n return {\n data: currentCache === null || currentCache === void 0 ? void 0 : currentCache.data,\n startTime: currentCache === null || currentCache === void 0 ? void 0 : currentCache.startTime\n };\n};\n\nexport { getCache, setCache };","var __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nexport default function limit(fn, timespan) {\n var pending = false;\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (pending) return;\n pending = true;\n fn.apply(void 0, __spread(args));\n setTimeout(function () {\n pending = false;\n }, timespan);\n };\n}","var __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport { useCallback, useRef } from 'react';\n\nfunction usePersistFn(fn) {\n var ref = useRef(function () {\n throw new Error('Cannot call an event handler while rendering.');\n });\n ref.current = fn;\n var persist = useCallback(function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var refFn = ref.current;\n\n if (refFn) {\n return refFn.apply(void 0, __spread(args));\n }\n }, [ref]);\n\n if (typeof fn === 'function') {\n return persist;\n }\n\n return undefined;\n}\n\nexport default usePersistFn;","import { useEffect, useRef } from 'react';\n\nvar useUpdateEffect = function useUpdateEffect(effect, deps) {\n var isMounted = useRef(false);\n useEffect(function () {\n return function () {\n isMounted.current = false;\n };\n }, []);\n useEffect(function () {\n if (!isMounted.current) {\n isMounted.current = true;\n } else {\n return effect();\n }\n }, deps);\n};\n\nexport default useUpdateEffect;","// from swr\nimport { isDocumentVisible, isOnline } from './index';\nvar listeners = [];\n\nfunction subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n}\n\nvar eventsBinded = false;\n\nif (typeof window !== 'undefined' && window.addEventListener && !eventsBinded) {\n var revalidate = function revalidate() {\n if (!isDocumentVisible() || !isOnline()) return;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n };\n\n window.addEventListener('visibilitychange', revalidate, false);\n window.addEventListener('focus', revalidate, false); // only bind the events once\n\n eventsBinded = true;\n}\n\nexport default subscribe;","// from swr\nimport { isDocumentVisible } from './index';\nvar listeners = [];\n\nfunction subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n}\n\nvar eventsBinded = false;\n\nif (typeof window !== 'undefined' && window.addEventListener && !eventsBinded) {\n var revalidate = function revalidate() {\n if (!isDocumentVisible()) return;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n };\n\n window.addEventListener('visibilitychange', revalidate, false); // only bind the events once\n\n eventsBinded = true;\n}\n\nexport default subscribe;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport debounce from 'lodash.debounce';\nimport throttle from 'lodash.throttle';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { isDocumentVisible } from './utils';\nimport { getCache, setCache } from './utils/cache';\nimport limit from './utils/limit';\nimport usePersistFn from './utils/usePersistFn';\nimport useUpdateEffect from './utils/useUpdateEffect';\nimport subscribeFocus from './utils/windowFocus';\nimport subscribeVisible from './utils/windowVisible';\nvar DEFAULT_KEY = 'AHOOKS_USE_REQUEST_DEFAULT_KEY';\n\nvar Fetch =\n/** @class */\nfunction () {\n function Fetch(service, config, subscribe, initState) {\n // 请求时序\n this.count = 0; // visible 后,是否继续轮询\n\n this.pollingWhenVisibleFlag = false;\n this.pollingTimer = undefined;\n this.loadingDelayTimer = undefined;\n this.unsubscribe = [];\n this.that = this;\n this.state = {\n loading: false,\n params: [],\n data: undefined,\n error: undefined,\n run: this.run.bind(this.that),\n mutate: this.mutate.bind(this.that),\n refresh: this.refresh.bind(this.that),\n cancel: this.cancel.bind(this.that),\n unmount: this.unmount.bind(this.that)\n };\n this.service = service;\n this.config = config;\n this.subscribe = subscribe;\n\n if (initState) {\n this.state = __assign(__assign({}, this.state), initState);\n }\n\n this.debounceRun = this.config.debounceInterval ? debounce(this._run, this.config.debounceInterval) : undefined;\n this.throttleRun = this.config.throttleInterval ? throttle(this._run, this.config.throttleInterval) : undefined;\n this.limitRefresh = limit(this.refresh.bind(this), this.config.focusTimespan);\n\n if (this.config.pollingInterval) {\n this.unsubscribe.push(subscribeVisible(this.rePolling.bind(this)));\n }\n\n if (this.config.refreshOnWindowFocus) {\n this.unsubscribe.push(subscribeFocus(this.limitRefresh.bind(this)));\n }\n }\n\n Fetch.prototype.setState = function (s) {\n if (s === void 0) {\n s = {};\n }\n\n this.state = __assign(__assign({}, this.state), s);\n this.subscribe(this.state);\n };\n\n Fetch.prototype._run = function () {\n var _this = this;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // 取消已有定时器\n\n\n if (this.pollingTimer) {\n clearTimeout(this.pollingTimer);\n } // 取消 loadingDelayTimer\n\n\n if (this.loadingDelayTimer) {\n clearTimeout(this.loadingDelayTimer);\n }\n\n this.count += 1; // 闭包存储当次请求的 count\n\n var currentCount = this.count;\n this.setState({\n loading: !this.config.loadingDelay,\n params: args\n });\n\n if (this.config.loadingDelay) {\n this.loadingDelayTimer = setTimeout(function () {\n _this.setState({\n loading: true\n });\n }, this.config.loadingDelay);\n }\n\n return this.service.apply(this, __spread(args)).then(function (res) {\n if (currentCount !== _this.count) {\n // prevent run.then when request is canceled\n return new Promise(function () {});\n }\n\n if (_this.loadingDelayTimer) {\n clearTimeout(_this.loadingDelayTimer);\n }\n\n var formattedResult = _this.config.formatResult ? _this.config.formatResult(res) : res;\n\n _this.setState({\n data: formattedResult,\n error: undefined,\n loading: false\n });\n\n if (_this.config.onSuccess) {\n _this.config.onSuccess(formattedResult, args);\n }\n\n return formattedResult;\n })[\"catch\"](function (error) {\n if (currentCount !== _this.count) {\n // prevent run.then when request is canceled\n return new Promise(function () {});\n }\n\n if (_this.loadingDelayTimer) {\n clearTimeout(_this.loadingDelayTimer);\n }\n\n _this.setState({\n data: undefined,\n error: error,\n loading: false\n });\n\n if (_this.config.onError) {\n _this.config.onError(error, args);\n } // If throwOnError, user should catch the error self,\n // or the page will crash\n\n\n if (_this.config.throwOnError) {\n throw error;\n }\n\n console.error(error); // eslint-disable-next-line prefer-promise-reject-errors\n\n return Promise.reject('useRequest has caught the exception, if you need to handle the exception yourself, you can set options.throwOnError to true.');\n })[\"finally\"](function () {\n if (currentCount === _this.count) {\n if (_this.config.pollingInterval) {\n // 如果屏幕隐藏,并且 !pollingWhenHidden, 则停止轮询,并记录 flag,等 visible 时,继续轮询\n if (!isDocumentVisible() && !_this.config.pollingWhenHidden) {\n _this.pollingWhenVisibleFlag = true;\n return;\n }\n\n _this.pollingTimer = setTimeout(function () {\n _this._run.apply(_this, __spread(args));\n }, _this.config.pollingInterval);\n }\n }\n });\n };\n\n Fetch.prototype.run = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this.debounceRun) {\n this.debounceRun.apply(this, __spread(args)); // TODO 如果 options 存在 debounceInterval,或 throttleInterval,则 run 和 refresh 不会返回 Promise。 带类型需要修复后,此处变成 return;。\n\n return Promise.resolve(null);\n }\n\n if (this.throttleRun) {\n this.throttleRun.apply(this, __spread(args));\n return Promise.resolve(null);\n }\n\n return this._run.apply(this, __spread(args));\n };\n\n Fetch.prototype.cancel = function () {\n if (this.debounceRun) {\n this.debounceRun.cancel();\n }\n\n if (this.throttleRun) {\n this.throttleRun.cancel();\n }\n\n if (this.loadingDelayTimer) {\n clearTimeout(this.loadingDelayTimer);\n }\n\n if (this.pollingTimer) {\n clearTimeout(this.pollingTimer);\n }\n\n this.pollingWhenVisibleFlag = false;\n this.count += 1;\n this.setState({\n loading: false\n });\n };\n\n Fetch.prototype.refresh = function () {\n return this.run.apply(this, __spread(this.state.params));\n };\n\n Fetch.prototype.rePolling = function () {\n if (this.pollingWhenVisibleFlag) {\n this.pollingWhenVisibleFlag = false;\n this.refresh();\n }\n };\n\n Fetch.prototype.mutate = function (data) {\n if (typeof data === 'function') {\n this.setState({\n // eslint-disable-next-line react/no-access-state-in-setstate\n data: data(this.state.data) || {}\n });\n } else {\n this.setState({\n data: data\n });\n }\n };\n\n Fetch.prototype.unmount = function () {\n this.cancel();\n this.unsubscribe.forEach(function (s) {\n s();\n });\n };\n\n return Fetch;\n}();\n\nfunction useAsync(service, options) {\n var _options = options || {};\n\n var _a = _options.refreshDeps,\n refreshDeps = _a === void 0 ? [] : _a,\n _b = _options.manual,\n manual = _b === void 0 ? false : _b,\n _c = _options.onSuccess,\n onSuccess = _c === void 0 ? function () {} : _c,\n _d = _options.onError,\n onError = _d === void 0 ? function () {} : _d,\n _e = _options.defaultLoading,\n defaultLoading = _e === void 0 ? false : _e,\n loadingDelay = _options.loadingDelay,\n _f = _options.pollingInterval,\n pollingInterval = _f === void 0 ? 0 : _f,\n _g = _options.pollingWhenHidden,\n pollingWhenHidden = _g === void 0 ? true : _g,\n _h = _options.defaultParams,\n defaultParams = _h === void 0 ? [] : _h,\n _j = _options.refreshOnWindowFocus,\n refreshOnWindowFocus = _j === void 0 ? false : _j,\n _k = _options.focusTimespan,\n focusTimespan = _k === void 0 ? 5000 : _k,\n fetchKey = _options.fetchKey,\n cacheKey = _options.cacheKey,\n _l = _options.cacheTime,\n cacheTime = _l === void 0 ? 5 * 60 * 1000 : _l,\n _m = _options.staleTime,\n staleTime = _m === void 0 ? 0 : _m,\n debounceInterval = _options.debounceInterval,\n throttleInterval = _options.throttleInterval,\n initialData = _options.initialData,\n _o = _options.ready,\n ready = _o === void 0 ? true : _o,\n _p = _options.throwOnError,\n throwOnError = _p === void 0 ? false : _p;\n var newstFetchKey = useRef(DEFAULT_KEY); // 持久化一些函数\n\n var servicePersist = usePersistFn(service);\n var onSuccessPersist = usePersistFn(onSuccess);\n var onErrorPersist = usePersistFn(onError);\n var fetchKeyPersist = usePersistFn(fetchKey);\n var formatResult;\n\n if ('formatResult' in _options) {\n // eslint-disable-next-line prefer-destructuring\n formatResult = _options.formatResult;\n }\n\n var formatResultPersist = usePersistFn(formatResult);\n var config = {\n formatResult: formatResultPersist,\n onSuccess: onSuccessPersist,\n onError: onErrorPersist,\n loadingDelay: loadingDelay,\n pollingInterval: pollingInterval,\n pollingWhenHidden: pollingWhenHidden,\n // refreshOnWindowFocus should not work on manual mode\n refreshOnWindowFocus: !manual && refreshOnWindowFocus,\n focusTimespan: focusTimespan,\n debounceInterval: debounceInterval,\n throttleInterval: throttleInterval,\n throwOnError: throwOnError\n };\n var subscribe = usePersistFn(function (key, data) {\n setFetches(function (s) {\n // eslint-disable-next-line no-param-reassign\n s[key] = data;\n return __assign({}, s);\n });\n });\n\n var _q = __read(useState(function () {\n var _a; // 如果有 缓存,则从缓存中读数据\n\n\n if (cacheKey) {\n var cacheData_1 = (_a = getCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;\n\n if (cacheData_1) {\n newstFetchKey.current = cacheData_1.newstFetchKey;\n /* 使用 initState, 重新 new Fetch */\n\n var newFetches_1 = {};\n Object.keys(cacheData_1.fetches).forEach(function (key) {\n var cacheFetch = cacheData_1.fetches[key];\n var newFetch = new Fetch(servicePersist, config, subscribe.bind(null, key), {\n loading: cacheFetch.loading,\n params: cacheFetch.params,\n data: cacheFetch.data,\n error: cacheFetch.error\n });\n newFetches_1[key] = newFetch.state;\n });\n return newFetches_1;\n }\n }\n\n return {};\n }), 2),\n fetches = _q[0],\n setFetches = _q[1];\n\n var fetchesRef = useRef(fetches);\n fetchesRef.current = fetches;\n var readyMemoryParams = useRef();\n var run = useCallback(function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (!ready) {\n // 没有 ready, 记录请求参数,等 ready 后,发起请求用\n readyMemoryParams.current = args;\n return;\n }\n\n if (fetchKeyPersist) {\n var key = fetchKeyPersist.apply(void 0, __spread(args));\n newstFetchKey.current = key === undefined ? DEFAULT_KEY : key;\n }\n\n var currentFetchKey = newstFetchKey.current; // 这里必须用 fetchsRef,而不能用 fetches。\n // 否则在 reset 完,立即 run 的时候,这里拿到的 fetches 是旧的。\n\n var currentFetch = fetchesRef.current[currentFetchKey];\n\n if (!currentFetch) {\n var newFetch = new Fetch(servicePersist, config, subscribe.bind(null, currentFetchKey), {\n data: initialData\n });\n currentFetch = newFetch.state;\n setFetches(function (s) {\n // eslint-disable-next-line no-param-reassign\n s[currentFetchKey] = currentFetch;\n return __assign({}, s);\n });\n }\n\n return currentFetch.run.apply(currentFetch, __spread(args));\n }, [fetchKey, subscribe, ready]);\n var runRef = useRef(run);\n runRef.current = run; // cache\n\n useUpdateEffect(function () {\n if (cacheKey) {\n setCache(cacheKey, cacheTime, {\n fetches: fetches,\n newstFetchKey: newstFetchKey.current\n });\n }\n }, [cacheKey, fetches]); // for ready\n\n var hasTriggeredByReady = useRef(false);\n useUpdateEffect(function () {\n if (ready) {\n if (!hasTriggeredByReady.current && readyMemoryParams.current) {\n runRef.current.apply(runRef, __spread(readyMemoryParams.current));\n }\n\n hasTriggeredByReady.current = true;\n }\n }, [ready]); // 第一次默认执行\n\n useEffect(function () {\n var _a;\n\n if (!manual) {\n // 如果有缓存,则重新请求\n if (Object.keys(fetches).length > 0) {\n // 如果 staleTime 是 -1,则 cache 永不过期\n // 如果 statleTime 超期了,则重新请求\n var cacheStartTime = cacheKey && ((_a = getCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.startTime) || 0;\n\n if (!(staleTime === -1 || new Date().getTime() - cacheStartTime <= staleTime)) {\n /* 重新执行所有的 cache */\n Object.values(fetches).forEach(function (f) {\n f.refresh();\n });\n }\n } else {\n // 第一次默认执行,可以通过 defaultParams 设置参数\n runRef.current.apply(runRef, __spread(defaultParams));\n }\n }\n }, []); // 重置 fetches\n\n var reset = useCallback(function () {\n Object.values(fetchesRef.current).forEach(function (f) {\n f.unmount();\n });\n newstFetchKey.current = DEFAULT_KEY;\n setFetches({}); // 不写会有问题。如果不写,此时立即 run,会是老的数据\n\n fetchesRef.current = {};\n }, [setFetches]); // refreshDeps 变化,重新执行所有请求\n\n useUpdateEffect(function () {\n if (!manual) {\n /* 全部重新执行 */\n Object.values(fetchesRef.current).forEach(function (f) {\n f.refresh();\n });\n }\n }, __spread(refreshDeps)); // 卸载组件触发\n\n useEffect(function () {\n return function () {\n Object.values(fetchesRef.current).forEach(function (f) {\n f.unmount();\n });\n };\n }, []);\n var notExecutedWarning = useCallback(function (name) {\n return function () {\n console.warn(\"You should't call \" + name + \" when service not executed once.\");\n };\n }, []);\n return __assign(__assign({\n loading: ready && !manual || defaultLoading,\n data: initialData,\n error: undefined,\n params: [],\n cancel: notExecutedWarning('cancel'),\n refresh: notExecutedWarning('refresh'),\n mutate: notExecutedWarning('mutate')\n }, fetches[newstFetchKey.current] || {}), {\n run: run,\n fetches: fetches,\n reset: reset\n });\n}\n\nexport default useAsync;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport { useRef, useCallback, useMemo, useEffect, useState } from 'react';\nimport useAsync from './useAsync';\nimport useUpdateEffect from './utils/useUpdateEffect';\n\nfunction useLoadMore(service, options) {\n var _a = options.refreshDeps,\n refreshDeps = _a === void 0 ? [] : _a,\n ref = options.ref,\n isNoMore = options.isNoMore,\n _b = options.threshold,\n threshold = _b === void 0 ? 100 : _b,\n fetchKey = options.fetchKey,\n restOptions = __rest(options, [\"refreshDeps\", \"ref\", \"isNoMore\", \"threshold\", \"fetchKey\"]);\n\n var _c = __read(useState(false), 2),\n loadingMore = _c[0],\n setLoadingMore = _c[1];\n\n useEffect(function () {\n if (options.fetchKey) {\n console.warn(\"useRequest loadMore mode don't need fetchKey!\");\n }\n }, []);\n var result = useAsync(service, __assign(__assign({}, restOptions), {\n fetchKey: function fetchKey(d) {\n var _a;\n\n return ((_a = d === null || d === void 0 ? void 0 : d.list) === null || _a === void 0 ? void 0 : _a.length) || 0;\n },\n onSuccess: function onSuccess() {\n var params = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n\n setLoadingMore(false);\n\n if (options.onSuccess) {\n options.onSuccess.apply(options, __spread(params));\n }\n }\n }));\n var data = result.data,\n run = result.run,\n params = result.params,\n reset = result.reset,\n loading = result.loading,\n fetches = result.fetches;\n var reload = useCallback(function () {\n reset();\n\n var _a = __read(params),\n restParams = _a.slice(1);\n\n run.apply(void 0, __spread([undefined], restParams));\n }, [run, reset, params]);\n var reloadRef = useRef(reload);\n reloadRef.current = reload;\n /* loadMore 场景下,如果 refreshDeps 变化,重置到第一页 */\n\n useUpdateEffect(function () {\n /* 只有自动执行的场景, refreshDeps 才有效 */\n if (!options.manual) {\n reloadRef.current();\n }\n }, __spread(refreshDeps));\n var dataGroup = useMemo(function () {\n var listGroup = []; // 在 loadMore 时,不希望清空上一次的 data。需要把最后一个 非 loading 的请求 data,放回去。\n\n var lastNoLoadingData = data;\n Object.values(fetches).forEach(function (h) {\n var _a, _b;\n\n if ((_a = h.data) === null || _a === void 0 ? void 0 : _a.list) {\n listGroup = listGroup.concat((_b = h.data) === null || _b === void 0 ? void 0 : _b.list);\n }\n\n if (!h.loading) {\n lastNoLoadingData = h.data;\n }\n });\n return __assign(__assign({}, lastNoLoadingData), {\n list: listGroup\n });\n }, [fetches, data]);\n var noMore = isNoMore ? !loading && !loadingMore && isNoMore(dataGroup) : false;\n var loadMore = useCallback(function () {\n if (noMore) {\n return;\n }\n\n setLoadingMore(true);\n\n var _a = __read(params),\n restParams = _a.slice(1);\n\n run.apply(void 0, __spread([dataGroup], restParams));\n }, [noMore, run, dataGroup, params]);\n /* 上拉加载的方法 */\n\n var scrollMethod = function scrollMethod() {\n if (loading || loadingMore || !ref || !ref.current) {\n return;\n }\n\n if (ref.current.scrollHeight - ref.current.scrollTop <= ref.current.clientHeight + threshold) {\n loadMore();\n }\n }; // 如果不用 ref,而用之前的 useCallbak,在某些情况下会出问题,造成拿到的 loading 不是最新的。\n // fix https://github.com/alibaba/hooks/issues/630\n\n\n var scrollMethodRef = useRef(scrollMethod);\n scrollMethodRef.current = scrollMethod;\n /* 如果有 ref,则会上拉加载更多 */\n\n useEffect(function () {\n if (!ref || !ref.current) {\n return function () {};\n }\n\n var scrollTrigger = function scrollTrigger() {\n return scrollMethodRef.current();\n };\n\n ref.current.addEventListener('scroll', scrollTrigger);\n return function () {\n if (ref && ref.current) {\n ref.current.removeEventListener('scroll', scrollTrigger);\n }\n };\n }, [scrollMethodRef]);\n return __assign(__assign({}, result), {\n data: dataGroup,\n reload: reload,\n loading: loading && dataGroup.list.length === 0,\n loadMore: loadMore,\n loadingMore: loadingMore,\n noMore: noMore\n });\n}\n\nexport default useLoadMore;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport useAsync from './useAsync';\nimport useUpdateEffect from './utils/useUpdateEffect';\n\nfunction usePaginated(service, options) {\n var paginated = options.paginated,\n _a = options.defaultPageSize,\n defaultPageSize = _a === void 0 ? 10 : _a,\n _b = options.refreshDeps,\n refreshDeps = _b === void 0 ? [] : _b,\n fetchKey = options.fetchKey,\n restOptions = __rest(options, [\"paginated\", \"defaultPageSize\", \"refreshDeps\", \"fetchKey\"]);\n\n useEffect(function () {\n if (fetchKey) {\n console.error(\"useRequest pagination's fetchKey will not work!\");\n }\n }, []);\n\n var _c = useAsync(service, __assign({\n defaultParams: [{\n current: 1,\n pageSize: defaultPageSize\n }]\n }, restOptions)),\n data = _c.data,\n params = _c.params,\n run = _c.run,\n loading = _c.loading,\n rest = __rest(_c, [\"data\", \"params\", \"run\", \"loading\"]);\n\n var _d = params && params[0] ? params[0] : {},\n _e = _d.current,\n current = _e === void 0 ? 1 : _e,\n _f = _d.pageSize,\n pageSize = _f === void 0 ? defaultPageSize : _f,\n _g = _d.sorter,\n sorter = _g === void 0 ? {} : _g,\n _h = _d.filters,\n filters = _h === void 0 ? {} : _h; // 只改变 pagination,其他参数原样传递\n\n\n var runChangePaination = useCallback(function (paginationParams) {\n var _a = __read(params),\n oldPaginationParams = _a[0],\n restParams = _a.slice(1);\n\n run.apply(void 0, __spread([__assign(__assign({}, oldPaginationParams), paginationParams)], restParams));\n }, [run, params]);\n var total = (data === null || data === void 0 ? void 0 : data.total) || 0;\n var totalPage = useMemo(function () {\n return Math.ceil(total / pageSize);\n }, [pageSize, total]);\n var onChange = useCallback(function (c, p) {\n var toCurrent = c <= 0 ? 1 : c;\n var toPageSize = p <= 0 ? 1 : p;\n var tempTotalPage = Math.ceil(total / toPageSize);\n\n if (toCurrent > tempTotalPage) {\n toCurrent = tempTotalPage;\n }\n\n runChangePaination({\n current: c,\n pageSize: p\n });\n }, [total, runChangePaination]);\n var changeCurrent = useCallback(function (c) {\n onChange(c, pageSize);\n }, [onChange, pageSize]);\n var changePageSize = useCallback(function (p) {\n onChange(current, p);\n }, [onChange, current]);\n var changeCurrentRef = useRef(changeCurrent);\n changeCurrentRef.current = changeCurrent;\n /* 分页场景下,如果 refreshDeps 变化,重置分页 */\n\n useUpdateEffect(function () {\n /* 只有自动执行的场景, refreshDeps 才有效 */\n if (!options.manual) {\n changeCurrentRef.current(1);\n }\n }, __spread(refreshDeps)); // 表格翻页 排序 筛选等\n\n var changeTable = useCallback(function (p, f, s) {\n runChangePaination({\n current: p.current,\n pageSize: p.pageSize || defaultPageSize,\n filters: f,\n sorter: s\n });\n }, [filters, sorter, runChangePaination]);\n return __assign({\n loading: loading,\n data: data,\n params: params,\n run: run,\n pagination: {\n current: current,\n pageSize: pageSize,\n total: total,\n totalPage: totalPage,\n onChange: onChange,\n changeCurrent: changeCurrent,\n changePageSize: changePageSize\n },\n tableProps: {\n dataSource: (data === null || data === void 0 ? void 0 : data.list) || [],\n loading: loading,\n onChange: changeTable,\n pagination: {\n current: current,\n pageSize: pageSize,\n total: total\n }\n },\n sorter: sorter,\n filters: filters\n }, rest);\n}\n\nexport default usePaginated;","import React from 'react';\nvar ConfigContext = /*#__PURE__*/React.createContext({});\nConfigContext.displayName = 'UseRequestConfigContext';\nexport default ConfigContext;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n/* eslint-disable react-hooks/rules-of-hooks */\n\n\nimport { useRef, useContext } from 'react';\nimport useAsync from './useAsync';\nimport useLoadMore from './useLoadMore';\nimport usePaginated from './usePaginated';\nimport ConfigContext from './configContext';\n\nfunction useRequest(service, options) {\n if (options === void 0) {\n options = {};\n }\n\n var contextConfig = useContext(ConfigContext);\n\n var finalOptions = __assign(__assign({}, contextConfig), options);\n\n var paginated = finalOptions.paginated,\n loadMore = finalOptions.loadMore,\n requestMethod = finalOptions.requestMethod;\n var paginatedRef = useRef(paginated);\n var loadMoreRef = useRef(loadMore);\n\n if (paginatedRef.current !== paginated) {\n throw Error('You should not modify the paginated of options');\n }\n\n if (loadMoreRef.current !== loadMore) {\n throw Error('You should not modify the loadMore of options');\n }\n\n paginatedRef.current = paginated;\n loadMoreRef.current = loadMore; // @ts-ignore\n\n var fetchProxy = function fetchProxy() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // @ts-ignore\n\n\n return fetch.apply(void 0, __spread(args)).then(function (res) {\n if (res.ok) {\n return res.json();\n }\n\n throw new Error(res.statusText);\n });\n };\n\n var finalRequestMethod = requestMethod || fetchProxy;\n var promiseService;\n\n switch (typeof service) {\n case 'string':\n promiseService = function promiseService() {\n return finalRequestMethod(service);\n };\n\n break;\n\n case 'object':\n var url_1 = service.url,\n rest_1 = __rest(service, [\"url\"]);\n\n promiseService = function promiseService() {\n return requestMethod ? requestMethod(service) : fetchProxy(url_1, rest_1);\n };\n\n break;\n\n default:\n promiseService = function promiseService() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return new Promise(function (resolve, reject) {\n var s = service.apply(void 0, __spread(args));\n var fn = s;\n\n if (!s.then) {\n switch (typeof s) {\n case 'string':\n fn = finalRequestMethod(s);\n break;\n\n case 'object':\n var url_2 = s.url,\n rest_2 = __rest(s, [\"url\"]);\n\n fn = requestMethod ? requestMethod(s) : fetchProxy(url_2, rest_2);\n break;\n }\n }\n\n fn.then(resolve)[\"catch\"](reject);\n });\n };\n\n }\n\n if (loadMore) {\n return useLoadMore(promiseService, finalOptions);\n }\n\n if (paginated) {\n return usePaginated(promiseService, finalOptions);\n }\n\n return useAsync(promiseService, finalOptions);\n}\n\nvar UseRequestProvider = ConfigContext.Provider; // UseAPIProvider 已经废弃,此处为了兼容 umijs 插件 plugin-request\n\nvar UseAPIProvider = UseRequestProvider;\nexport { useAsync, usePaginated, useLoadMore, UseRequestProvider, UseAPIProvider };\nexport default useRequest;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\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) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\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\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\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) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\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\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\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': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/**\n * deep equal lite version from dequal\n * https://github.com/lukeed/dequal/blob/master/license\n */\nvar has = Object.prototype.hasOwnProperty;\nexport default function deepEqual(foo, bar) {\n var ctor, len;\n if (foo === bar)\n return true;\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date)\n return foo.getTime() === bar.getTime();\n if (ctor === RegExp)\n return foo.toString() === bar.toString();\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && deepEqual(foo[len], bar[len]))\n ;\n }\n return len === -1;\n }\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor))\n return false;\n if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor]))\n return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n return foo !== foo && bar !== bar;\n}\n","// use WeakMap to store the object->key mapping\n// so the objects can be garbage collected.\n// WeakMap uses a hashtable under the hood, so the lookup\n// complexity is almost O(1).\nvar table = new WeakMap();\n// counter of the key\nvar counter = 0;\n// hashes an array of objects and returns a string\nexport default function hash(args) {\n if (!args.length)\n return '';\n var key = 'arg';\n for (var i = 0; i < args.length; ++i) {\n if (args[i] === null) {\n key += '@null';\n continue;\n }\n var _hash = void 0;\n if (typeof args[i] !== 'object' && typeof args[i] !== 'function') {\n // need to consider the case that args[i] is a string:\n // args[i] _hash\n // \"undefined\" -> '\"undefined\"'\n // undefined -> 'undefined'\n // 123 -> '123'\n // \"null\" -> '\"null\"'\n if (typeof args[i] === 'string') {\n _hash = '\"' + args[i] + '\"';\n }\n else {\n _hash = String(args[i]);\n }\n }\n else {\n if (!table.has(args[i])) {\n _hash = counter;\n table.set(args[i], counter++);\n }\n else {\n _hash = table.get(args[i]);\n }\n }\n key += '@' + _hash;\n }\n return key;\n}\n","import hash from './libs/hash';\nvar Cache = /** @class */ (function () {\n function Cache(initialData) {\n if (initialData === void 0) { initialData = {}; }\n this.cache = new Map(Object.entries(initialData));\n this.subs = [];\n }\n Cache.prototype.get = function (key) {\n var _key = this.serializeKey(key)[0];\n return this.cache.get(_key);\n };\n Cache.prototype.set = function (key, value) {\n var _key = this.serializeKey(key)[0];\n this.cache.set(_key, value);\n this.notify();\n };\n Cache.prototype.keys = function () {\n return Array.from(this.cache.keys());\n };\n Cache.prototype.has = function (key) {\n var _key = this.serializeKey(key)[0];\n return this.cache.has(_key);\n };\n Cache.prototype.clear = function () {\n this.cache.clear();\n this.notify();\n };\n Cache.prototype.delete = function (key) {\n var _key = this.serializeKey(key)[0];\n this.cache.delete(_key);\n this.notify();\n };\n // TODO: introduce namespace for the cache\n Cache.prototype.serializeKey = function (key) {\n var args = null;\n if (typeof key === 'function') {\n try {\n key = key();\n }\n catch (err) {\n // dependencies not ready\n key = '';\n }\n }\n if (Array.isArray(key)) {\n // args array\n args = key;\n key = hash(key);\n }\n else {\n // convert null to ''\n key = String(key || '');\n }\n var errorKey = key ? 'err@' + key : '';\n var isValidatingKey = key ? 'validating@' + key : '';\n return [key, args, errorKey, isValidatingKey];\n };\n Cache.prototype.subscribe = function (listener) {\n var _this = this;\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n var isSubscribed = true;\n this.subs.push(listener);\n return function () {\n if (!isSubscribed)\n return;\n isSubscribed = false;\n var index = _this.subs.indexOf(listener);\n if (index > -1) {\n _this.subs[index] = _this.subs[_this.subs.length - 1];\n _this.subs.length--;\n }\n };\n };\n // Notify Cache subscribers about a change in the cache\n Cache.prototype.notify = function () {\n for (var _i = 0, _a = this.subs; _i < _a.length; _i++) {\n var listener = _a[_i];\n listener();\n }\n };\n return Cache;\n}());\nexport default Cache;\n","/**\n * Due to bug https://bugs.chromium.org/p/chromium/issues/detail?id=678075,\n * it's not reliable to detect if the browser is currently online or offline\n * based on `navigator.onLine`.\n * As a work around, we always assume it's online on first load, and change\n * the status upon `online` or `offline` events.\n */\nvar online = true;\nvar isOnline = function () { return online; };\nvar isDocumentVisible = function () {\n if (typeof document !== 'undefined' &&\n document.visibilityState !== undefined) {\n return document.visibilityState !== 'hidden';\n }\n // always assume it's visible\n return true;\n};\nvar fetcher = function (url) { return fetch(url).then(function (res) { return res.json(); }); };\nvar registerOnFocus = function (cb) {\n if (typeof window !== 'undefined' &&\n window.addEventListener !== undefined &&\n typeof document !== 'undefined' &&\n document.addEventListener !== undefined) {\n // focus revalidate\n document.addEventListener('visibilitychange', function () { return cb(); }, false);\n window.addEventListener('focus', function () { return cb(); }, false);\n }\n};\nvar registerOnReconnect = function (cb) {\n if (typeof window !== 'undefined' && window.addEventListener !== undefined) {\n // reconnect revalidate\n window.addEventListener('online', function () {\n online = true;\n cb();\n }, false);\n // nothing to revalidate, just update the status\n window.addEventListener('offline', function () { return (online = false); }, false);\n }\n};\nexport default {\n isOnline: isOnline,\n isDocumentVisible: isDocumentVisible,\n fetcher: fetcher,\n registerOnFocus: registerOnFocus,\n registerOnReconnect: registerOnReconnect\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport deepEqual from './libs/deep-equal';\nimport Cache from './cache';\nimport webPreset from './libs/web-preset';\n// cache\nvar cache = new Cache();\n// error retry\nfunction onErrorRetry(_, __, config, revalidate, opts) {\n if (!config.isDocumentVisible()) {\n // if it's hidden, stop\n // it will auto revalidate when focus\n return;\n }\n if (typeof config.errorRetryCount === 'number' &&\n opts.retryCount > config.errorRetryCount) {\n return;\n }\n // exponential backoff\n var count = Math.min(opts.retryCount, 8);\n var timeout = ~~((Math.random() + 0.5) * (1 << count)) * config.errorRetryInterval;\n setTimeout(revalidate, timeout, opts);\n}\n// client side: need to adjust the config\n// based on the browser status\n// slow connection (<= 70Kbps)\nvar slowConnection = typeof window !== 'undefined' &&\n // @ts-ignore\n navigator['connection'] &&\n // @ts-ignore\n ['slow-2g', '2g'].indexOf(navigator['connection'].effectiveType) !== -1;\n// config\nvar defaultConfig = __assign({ \n // events\n onLoadingSlow: function () { }, onSuccess: function () { }, onError: function () { }, onErrorRetry: onErrorRetry, errorRetryInterval: (slowConnection ? 10 : 5) * 1000, focusThrottleInterval: 5 * 1000, dedupingInterval: 2 * 1000, loadingTimeout: (slowConnection ? 5 : 3) * 1000, refreshInterval: 0, revalidateOnFocus: true, revalidateOnReconnect: true, refreshWhenHidden: false, refreshWhenOffline: false, shouldRetryOnError: true, suspense: false, compare: deepEqual, isPaused: function () { return false; } }, webPreset);\nexport { cache };\nexport default defaultConfig;\n","import { useEffect, useLayoutEffect } from 'react';\nexport var IS_SERVER = typeof window === 'undefined' ||\n // @ts-ignore\n !!(typeof Deno !== 'undefined' && Deno && Deno.version && Deno.version.deno);\n// polyfill for requestAnimationFrame\nexport var rAF = IS_SERVER\n ? null\n : window['requestAnimationFrame']\n ? function (f) { return window['requestAnimationFrame'](f); }\n : function (f) { return setTimeout(f, 1); };\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport var useIsomorphicLayoutEffect = IS_SERVER ? useEffect : useLayoutEffect;\n","import { createContext } from 'react';\nvar SWRConfigContext = createContext({});\nSWRConfigContext.displayName = 'SWRConfigContext';\nexport default SWRConfigContext;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n// TODO: use @ts-expect-error\nimport { useCallback, useContext, useState, useRef, useMemo, useDebugValue } from 'react';\nimport defaultConfig, { cache } from './config';\nimport { IS_SERVER, rAF, useIsomorphicLayoutEffect } from './env';\nimport SWRConfigContext from './swr-config-context';\n// global state managers\nvar CONCURRENT_PROMISES = {};\nvar CONCURRENT_PROMISES_TS = {};\nvar FOCUS_REVALIDATORS = {};\nvar RECONNECT_REVALIDATORS = {};\nvar CACHE_REVALIDATORS = {};\nvar MUTATION_TS = {};\nvar MUTATION_END_TS = {};\n// generate strictly increasing timestamps\nvar now = (function () {\n var ts = 0;\n return function () { return ++ts; };\n})();\n// setup DOM events listeners for `focus` and `reconnect` actions\nif (!IS_SERVER) {\n var revalidate_1 = function (revalidators) {\n if (!defaultConfig.isDocumentVisible() || !defaultConfig.isOnline())\n return;\n for (var key in revalidators) {\n if (revalidators[key][0])\n revalidators[key][0]();\n }\n };\n if (typeof defaultConfig.registerOnFocus === 'function') {\n defaultConfig.registerOnFocus(function () { return revalidate_1(FOCUS_REVALIDATORS); });\n }\n if (typeof defaultConfig.registerOnReconnect === 'function') {\n defaultConfig.registerOnReconnect(function () { return revalidate_1(RECONNECT_REVALIDATORS); });\n }\n}\nvar trigger = function (_key, shouldRevalidate) {\n if (shouldRevalidate === void 0) { shouldRevalidate = true; }\n // we are ignoring the second argument which correspond to the arguments\n // the fetcher will receive when key is an array\n var _a = cache.serializeKey(_key), key = _a[0], keyErr = _a[2], keyValidating = _a[3];\n if (!key)\n return Promise.resolve();\n var updaters = CACHE_REVALIDATORS[key];\n if (key && updaters) {\n var currentData = cache.get(key);\n var currentError = cache.get(keyErr);\n var currentIsValidating = cache.get(keyValidating);\n var promises = [];\n for (var i = 0; i < updaters.length; ++i) {\n promises.push(updaters[i](shouldRevalidate, currentData, currentError, currentIsValidating, i > 0));\n }\n // return new updated value\n return Promise.all(promises).then(function () { return cache.get(key); });\n }\n return Promise.resolve(cache.get(key));\n};\nvar broadcastState = function (key, data, error, isValidating) {\n var updaters = CACHE_REVALIDATORS[key];\n if (key && updaters) {\n for (var i = 0; i < updaters.length; ++i) {\n updaters[i](false, data, error, isValidating);\n }\n }\n};\nvar mutate = function (_key, _data, shouldRevalidate) {\n if (shouldRevalidate === void 0) { shouldRevalidate = true; }\n return __awaiter(void 0, void 0, void 0, function () {\n var _a, key, keyErr, beforeMutationTs, beforeConcurrentPromisesTs, data, error, isAsyncMutation, err_1, shouldAbort, updaters, promises, i;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = cache.serializeKey(_key), key = _a[0], keyErr = _a[2];\n if (!key)\n return [2 /*return*/];\n // if there is no new data to update, let's just revalidate the key\n if (typeof _data === 'undefined')\n return [2 /*return*/, trigger(_key, shouldRevalidate)\n // update global timestamps\n ];\n // update global timestamps\n MUTATION_TS[key] = now() - 1;\n MUTATION_END_TS[key] = 0;\n beforeMutationTs = MUTATION_TS[key];\n beforeConcurrentPromisesTs = CONCURRENT_PROMISES_TS[key];\n isAsyncMutation = false;\n if (_data && typeof _data === 'function') {\n // `_data` is a function, call it passing current cache value\n try {\n _data = _data(cache.get(key));\n }\n catch (err) {\n // if `_data` function throws an error synchronously, it shouldn't be cached\n _data = undefined;\n error = err;\n }\n }\n if (!(_data && typeof _data.then === 'function')) return [3 /*break*/, 5];\n // `_data` is a promise\n isAsyncMutation = true;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, _data];\n case 2:\n data = _b.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _b.sent();\n error = err_1;\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n data = _data;\n _b.label = 6;\n case 6:\n shouldAbort = function () {\n // check if other mutations have occurred since we've started this mutation\n if (beforeMutationTs !== MUTATION_TS[key] ||\n beforeConcurrentPromisesTs !== CONCURRENT_PROMISES_TS[key]) {\n if (error)\n throw error;\n return true;\n }\n };\n // if there's a race we don't update cache or broadcast change, just return the data\n if (shouldAbort())\n return [2 /*return*/, data];\n if (typeof data !== 'undefined') {\n // update cached data\n cache.set(key, data);\n }\n // always update or reset the error\n cache.set(keyErr, error);\n // reset the timestamp to mark the mutation has ended\n MUTATION_END_TS[key] = now() - 1;\n if (!isAsyncMutation) {\n // we skip broadcasting if there's another mutation happened synchronously\n if (shouldAbort())\n return [2 /*return*/, data];\n }\n updaters = CACHE_REVALIDATORS[key];\n if (updaters) {\n promises = [];\n for (i = 0; i < updaters.length; ++i) {\n promises.push(updaters[i](!!shouldRevalidate, data, error, undefined, i > 0));\n }\n // return new updated value\n return [2 /*return*/, Promise.all(promises).then(function () {\n if (error)\n throw error;\n return cache.get(key);\n })];\n }\n // throw error or return data to be used by caller of mutate\n if (error)\n throw error;\n return [2 /*return*/, data];\n }\n });\n });\n};\nfunction useSWR() {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _key = args[0];\n var config = Object.assign({}, defaultConfig, useContext(SWRConfigContext), args.length > 2\n ? args[2]\n : args.length === 2 && typeof args[1] === 'object'\n ? args[1]\n : {});\n // in typescript args.length > 2 is not same as args.lenth === 3\n // we do a safe type assertion here\n // args.length === 3\n var fn = (args.length > 2\n ? args[1]\n : args.length === 2 && typeof args[1] === 'function'\n ? args[1]\n : /**\n pass fn as null will disable revalidate\n https://paco.sh/blog/shared-hook-state-with-swr\n */\n args[1] === null\n ? args[1]\n : config.fetcher);\n // we assume `key` as the identifier of the request\n // `key` can change but `fn` shouldn't\n // (because `revalidate` only depends on `key`)\n // `keyErr` is the cache key for error objects\n var _a = cache.serializeKey(_key), key = _a[0], fnArgs = _a[1], keyErr = _a[2], keyValidating = _a[3];\n var configRef = useRef(config);\n useIsomorphicLayoutEffect(function () {\n configRef.current = config;\n });\n var willRevalidateOnMount = function () {\n return (config.revalidateOnMount ||\n (!config.initialData && config.revalidateOnMount === undefined));\n };\n var resolveData = function () {\n var cachedData = cache.get(key);\n return typeof cachedData === 'undefined' ? config.initialData : cachedData;\n };\n var resolveIsValidating = function () {\n return !!cache.get(keyValidating) || (key && willRevalidateOnMount());\n };\n var initialData = resolveData();\n var initialError = cache.get(keyErr);\n var initialIsValidating = resolveIsValidating();\n // if a state is accessed (data, error or isValidating),\n // we add the state to dependencies so if the state is\n // updated in the future, we can trigger a rerender\n var stateDependencies = useRef({\n data: false,\n error: false,\n isValidating: false\n });\n var stateRef = useRef({\n data: initialData,\n error: initialError,\n isValidating: initialIsValidating\n });\n // display the data label in the React DevTools next to SWR hooks\n useDebugValue(stateRef.current.data);\n var rerender = useState({})[1];\n var dispatch = useCallback(function (payload) {\n var shouldUpdateState = false;\n for (var k in payload) {\n // @ts-ignore\n if (stateRef.current[k] === payload[k]) {\n continue;\n }\n // @ts-ignore\n stateRef.current[k] = payload[k];\n // @ts-ignore\n if (stateDependencies.current[k]) {\n shouldUpdateState = true;\n }\n }\n if (shouldUpdateState) {\n // if component is unmounted, should skip rerender\n // if component is not mounted, should skip rerender\n if (unmountedRef.current || !initialMountedRef.current)\n return;\n rerender({});\n }\n }, \n // config.suspense isn't allowed to change during the lifecycle\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // error ref inside revalidate (is last request errored?)\n var unmountedRef = useRef(false);\n var keyRef = useRef(key);\n // check if component is mounted in suspense mode\n var initialMountedRef = useRef(false);\n // do unmount check for callbacks\n var eventsCallback = useCallback(function (event) {\n var _a;\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n if (unmountedRef.current)\n return;\n if (!initialMountedRef.current)\n return;\n if (key !== keyRef.current)\n return;\n // @ts-ignore\n (_a = configRef.current)[event].apply(_a, params);\n }, [key]);\n var boundMutate = useCallback(function (data, shouldRevalidate) {\n return mutate(keyRef.current, data, shouldRevalidate);\n }, []);\n var addRevalidator = function (revalidators, callback) {\n if (!revalidators[key]) {\n revalidators[key] = [callback];\n }\n else {\n revalidators[key].push(callback);\n }\n return function () {\n var keyedRevalidators = revalidators[key];\n var index = keyedRevalidators.indexOf(callback);\n if (index >= 0) {\n // O(1): faster than splice\n keyedRevalidators[index] =\n keyedRevalidators[keyedRevalidators.length - 1];\n keyedRevalidators.pop();\n }\n };\n };\n // start a revalidation\n var revalidate = useCallback(function (revalidateOpts) {\n if (revalidateOpts === void 0) { revalidateOpts = {}; }\n return __awaiter(_this, void 0, void 0, function () {\n var _a, retryCount, _b, dedupe, loading, shouldDeduping, newData, startAt, newState, err_2;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!key || !fn)\n return [2 /*return*/, false];\n if (unmountedRef.current)\n return [2 /*return*/, false];\n if (configRef.current.isPaused())\n return [2 /*return*/, false];\n _a = revalidateOpts.retryCount, retryCount = _a === void 0 ? 0 : _a, _b = revalidateOpts.dedupe, dedupe = _b === void 0 ? false : _b;\n loading = true;\n shouldDeduping = typeof CONCURRENT_PROMISES[key] !== 'undefined' && dedupe;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6, , 7]);\n dispatch({\n isValidating: true\n });\n cache.set(keyValidating, true);\n if (!shouldDeduping) {\n // also update other hooks\n broadcastState(key, stateRef.current.data, stateRef.current.error, true);\n }\n newData = void 0;\n startAt = void 0;\n if (!shouldDeduping) return [3 /*break*/, 3];\n // there's already an ongoing request,\n // this one needs to be deduplicated.\n startAt = CONCURRENT_PROMISES_TS[key];\n return [4 /*yield*/, CONCURRENT_PROMISES[key]];\n case 2:\n newData = _c.sent();\n return [3 /*break*/, 5];\n case 3:\n // if no cache being rendered currently (it shows a blank page),\n // we trigger the loading slow event.\n if (config.loadingTimeout && !cache.get(key)) {\n setTimeout(function () {\n if (loading)\n eventsCallback('onLoadingSlow', key, config);\n }, config.loadingTimeout);\n }\n if (fnArgs !== null) {\n CONCURRENT_PROMISES[key] = fn.apply(void 0, fnArgs);\n }\n else {\n CONCURRENT_PROMISES[key] = fn(key);\n }\n CONCURRENT_PROMISES_TS[key] = startAt = now();\n return [4 /*yield*/, CONCURRENT_PROMISES[key]];\n case 4:\n newData = _c.sent();\n setTimeout(function () {\n delete CONCURRENT_PROMISES[key];\n delete CONCURRENT_PROMISES_TS[key];\n }, config.dedupingInterval);\n // trigger the success event,\n // only do this for the original request.\n eventsCallback('onSuccess', newData, key, config);\n _c.label = 5;\n case 5:\n // if there're other ongoing request(s), started after the current one,\n // we need to ignore the current one to avoid possible race conditions:\n // req1------------------>res1 (current one)\n // req2---------------->res2\n // the request that fired later will always be kept.\n if (CONCURRENT_PROMISES_TS[key] > startAt) {\n return [2 /*return*/, false];\n }\n // if there're other mutations(s), overlapped with the current revalidation:\n // case 1:\n // req------------------>res\n // mutate------>end\n // case 2:\n // req------------>res\n // mutate------>end\n // case 3:\n // req------------------>res\n // mutate-------...---------->\n // we have to ignore the revalidation result (res) because it's no longer fresh.\n // meanwhile, a new revalidation should be triggered when the mutation ends.\n if (MUTATION_TS[key] &&\n // case 1\n (startAt <= MUTATION_TS[key] ||\n // case 2\n startAt <= MUTATION_END_TS[key] ||\n // case 3\n MUTATION_END_TS[key] === 0)) {\n dispatch({ isValidating: false });\n return [2 /*return*/, false];\n }\n cache.set(keyErr, undefined);\n cache.set(keyValidating, false);\n newState = {\n isValidating: false\n };\n if (typeof stateRef.current.error !== 'undefined') {\n // we don't have an error\n newState.error = undefined;\n }\n if (!config.compare(stateRef.current.data, newData)) {\n // deep compare to avoid extra re-render\n // data changed\n newState.data = newData;\n cache.set(key, newData);\n }\n // merge the new state\n dispatch(newState);\n if (!shouldDeduping) {\n // also update other hooks\n broadcastState(key, newData, newState.error, false);\n }\n return [3 /*break*/, 7];\n case 6:\n err_2 = _c.sent();\n delete CONCURRENT_PROMISES[key];\n delete CONCURRENT_PROMISES_TS[key];\n if (configRef.current.isPaused()) {\n dispatch({\n isValidating: false\n });\n return [2 /*return*/, false];\n }\n cache.set(keyErr, err_2);\n // get a new error\n // don't use deep equal for errors\n if (stateRef.current.error !== err_2) {\n // we keep the stale data\n dispatch({\n isValidating: false,\n error: err_2\n });\n if (!shouldDeduping) {\n // also broadcast to update other hooks\n broadcastState(key, undefined, err_2, false);\n }\n }\n // events and retry\n eventsCallback('onError', err_2, key, config);\n if (config.shouldRetryOnError) {\n // when retrying, we always enable deduping\n eventsCallback('onErrorRetry', err_2, key, config, revalidate, {\n retryCount: retryCount + 1,\n dedupe: true\n });\n }\n return [3 /*break*/, 7];\n case 7:\n loading = false;\n return [2 /*return*/, true];\n }\n });\n });\n }, \n // dispatch is immutable, and `eventsCallback`, `fnArgs`, `keyErr`, and `keyValidating` are based on `key`,\n // so we can them from the deps array.\n //\n // FIXME:\n // `fn` and `config` might be changed during the lifecycle,\n // but they might be changed every render like this.\n // useSWR('key', () => fetch('/api/'), { suspense: true })\n // So we omit the values from the deps array\n // even though it might cause unexpected behaviors.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [key]);\n // mounted (client side rendering)\n useIsomorphicLayoutEffect(function () {\n if (!key)\n return undefined;\n // after `key` updates, we need to mark it as mounted\n unmountedRef.current = false;\n var isUpdating = initialMountedRef.current;\n initialMountedRef.current = true;\n // after the component is mounted (hydrated),\n // we need to update the data from the cache\n // and trigger a revalidation\n var currentHookData = stateRef.current.data;\n var latestKeyedData = resolveData();\n // update the state if the key changed (not the inital render) or cache updated\n keyRef.current = key;\n if (!config.compare(currentHookData, latestKeyedData)) {\n dispatch({ data: latestKeyedData });\n }\n // revalidate with deduping\n var softRevalidate = function () { return revalidate({ dedupe: true }); };\n // trigger a revalidation\n if (isUpdating || willRevalidateOnMount()) {\n if (typeof latestKeyedData !== 'undefined' && !IS_SERVER) {\n // delay revalidate if there's cache\n // to not block the rendering\n // @ts-ignore it's safe to use requestAnimationFrame in browser\n rAF(softRevalidate);\n }\n else {\n softRevalidate();\n }\n }\n var pending = false;\n var onFocus = function () {\n if (pending || !configRef.current.revalidateOnFocus)\n return;\n pending = true;\n softRevalidate();\n setTimeout(function () { return (pending = false); }, configRef.current.focusThrottleInterval);\n };\n var onReconnect = function () {\n if (configRef.current.revalidateOnReconnect) {\n softRevalidate();\n }\n };\n // register global cache update listener\n var onUpdate = function (shouldRevalidate, updatedData, updatedError, updatedIsValidating, dedupe) {\n if (shouldRevalidate === void 0) { shouldRevalidate = true; }\n if (dedupe === void 0) { dedupe = true; }\n // update hook state\n var newState = {};\n var needUpdate = false;\n if (typeof updatedData !== 'undefined' &&\n !config.compare(stateRef.current.data, updatedData)) {\n newState.data = updatedData;\n needUpdate = true;\n }\n // always update error\n // because it can be `undefined`\n if (stateRef.current.error !== updatedError) {\n newState.error = updatedError;\n needUpdate = true;\n }\n if (typeof updatedIsValidating !== 'undefined' &&\n stateRef.current.isValidating !== updatedIsValidating) {\n newState.isValidating = updatedIsValidating;\n needUpdate = true;\n }\n if (needUpdate) {\n dispatch(newState);\n }\n if (shouldRevalidate) {\n if (dedupe) {\n return softRevalidate();\n }\n else {\n return revalidate();\n }\n }\n return false;\n };\n var unsubFocus = addRevalidator(FOCUS_REVALIDATORS, onFocus);\n var unsubReconnect = addRevalidator(RECONNECT_REVALIDATORS, onReconnect);\n var unsubUpdate = addRevalidator(CACHE_REVALIDATORS, onUpdate);\n return function () {\n // cleanup\n dispatch = function () { return null; };\n // mark it as unmounted\n unmountedRef.current = true;\n unsubFocus();\n unsubReconnect();\n unsubUpdate();\n };\n }, [key, revalidate]);\n useIsomorphicLayoutEffect(function () {\n var timer = null;\n var tick = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!stateRef.current.error &&\n (configRef.current.refreshWhenHidden ||\n configRef.current.isDocumentVisible()) &&\n (configRef.current.refreshWhenOffline || configRef.current.isOnline()))) return [3 /*break*/, 2];\n // only revalidate when the page is visible\n // if API request errored, we stop polling in this round\n // and let the error retry function handle it\n return [4 /*yield*/, revalidate({ dedupe: true })];\n case 1:\n // only revalidate when the page is visible\n // if API request errored, we stop polling in this round\n // and let the error retry function handle it\n _a.sent();\n _a.label = 2;\n case 2:\n // Read the latest refreshInterval\n if (configRef.current.refreshInterval && timer) {\n timer = setTimeout(tick, configRef.current.refreshInterval);\n }\n return [2 /*return*/];\n }\n });\n }); };\n if (configRef.current.refreshInterval) {\n timer = setTimeout(tick, configRef.current.refreshInterval);\n }\n return function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n }, [\n config.refreshInterval,\n config.refreshWhenHidden,\n config.refreshWhenOffline,\n revalidate\n ]);\n // suspense\n var latestData;\n var latestError;\n if (config.suspense) {\n // in suspense mode, we can't return empty state\n // (it should be suspended)\n // try to get data and error from cache\n latestData = cache.get(key);\n latestError = cache.get(keyErr);\n if (typeof latestData === 'undefined') {\n latestData = initialData;\n }\n if (typeof latestError === 'undefined') {\n latestError = initialError;\n }\n if (typeof latestData === 'undefined' &&\n typeof latestError === 'undefined') {\n // need to start the request if it hasn't\n if (!CONCURRENT_PROMISES[key]) {\n // trigger revalidate immediately\n // to get the promise\n // in this revalidate, should not rerender\n revalidate();\n }\n if (CONCURRENT_PROMISES[key] &&\n typeof CONCURRENT_PROMISES[key].then === 'function') {\n // if it is a promise\n throw CONCURRENT_PROMISES[key];\n }\n // it's a value, return it directly (override)\n latestData = CONCURRENT_PROMISES[key];\n }\n if (typeof latestData === 'undefined' && latestError) {\n // in suspense mode, throw error if there's no content\n throw latestError;\n }\n }\n // define returned state\n // can be memorized since the state is a ref\n var memoizedState = useMemo(function () {\n // revalidate will be deprecated in the 1.x release\n // because mutate() covers the same use case of revalidate().\n // This remains only for backward compatibility\n var state = { revalidate: revalidate, mutate: boundMutate };\n Object.defineProperties(state, {\n error: {\n // `key` might be changed in the upcoming hook re-render,\n // but the previous state will stay\n // so we need to match the latest key and data (fallback to `initialData`)\n get: function () {\n stateDependencies.current.error = true;\n if (config.suspense) {\n return latestError;\n }\n return keyRef.current === key ? stateRef.current.error : initialError;\n },\n enumerable: true\n },\n data: {\n get: function () {\n stateDependencies.current.data = true;\n if (config.suspense) {\n return latestData;\n }\n return keyRef.current === key ? stateRef.current.data : initialData;\n },\n enumerable: true\n },\n isValidating: {\n get: function () {\n stateDependencies.current.isValidating = true;\n return key ? stateRef.current.isValidating : false;\n },\n enumerable: true\n }\n });\n return state;\n // `config.suspense` isn't allowed to change during the lifecycle.\n // `boundMutate` is immutable, and the immutability of `revalidate` depends on `key`\n // so we can omit them from the deps array,\n // but we put it to enable react-hooks/exhaustive-deps rule.\n // `initialData` and `initialError` are not initial values\n // because they are changed during the lifecycle\n // so we should add them in the deps array.\n }, [\n revalidate,\n initialData,\n initialError,\n boundMutate,\n key,\n config.suspense,\n latestError,\n latestData\n ]);\n return memoizedState;\n}\nObject.defineProperty(SWRConfigContext.Provider, 'default', {\n value: defaultConfig\n});\nvar SWRConfig = SWRConfigContext.Provider;\nexport { trigger, mutate, SWRConfig };\nexport default useSWR;\n","// `useSWR` and related APIs\nimport { default as useSWR } from './use-swr';\nexport default useSWR;\nexport * from './use-swr';\n// `useSWRInfinite`\nexport { useSWRInfinite } from './use-swr-infinite';\n// Cache related, to be replaced by the new APIs\nexport { cache } from './config';\n"],"sourceRoot":""}