{"ast":null,"code":"// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = {\n pages: [],\n pageParams: []\n };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = object => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(queryFnContext);\n const {\n maxPages\n } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(fetchFn, {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n }, query);\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, {\n pages,\n pageParams\n}) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(pages[lastIndex], pages, pageParams[lastIndex], pageParams) : void 0;\n}\nfunction getPreviousPageParam(options, {\n pages,\n pageParams\n}) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport { hasNextPage, hasPreviousPage, infiniteQueryBehavior };","map":{"version":3,"names":["addToEnd","addToStart","ensureQueryFn","infiniteQueryBehavior","pages","onFetch","context","query","options","direction","fetchOptions","meta","fetchMore","oldPages","state","data","oldPageParams","pageParams","result","currentPage","fetchFn","cancelled","addSignalProperty","object","Object","defineProperty","enumerable","get","signal","aborted","addEventListener","queryFn","fetchPage","param","previous","Promise","reject","length","resolve","queryFnContext","queryKey","pageParam","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","initialPageParam","persister","lastIndex","hasNextPage","hasPreviousPage"],"sources":["/Users/shoofle/Projects/the-forest/client/node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts"],"sourcesContent":["import { addToEnd, addToStart, ensureQueryFn } from './utils'\nimport type { QueryBehavior } from './query'\nimport type {\n InfiniteData,\n InfiniteQueryPageParamsOptions,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n} from './types'\n\nexport function infiniteQueryBehavior(\n pages?: number,\n): QueryBehavior> {\n return {\n onFetch: (context, query) => {\n const options = context.options as InfiniteQueryPageParamsOptions\n const direction = context.fetchOptions?.meta?.fetchMore?.direction\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n let result: InfiniteData = { pages: [], pageParams: [] }\n let currentPage = 0\n\n const fetchFn = async () => {\n let cancelled = false\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true\n } else {\n context.signal.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n const queryFn = ensureQueryFn(context.options, context.fetchOptions)\n\n // Create function to fetch a page\n const fetchPage = async (\n data: InfiniteData,\n param: unknown,\n previous?: boolean,\n ): Promise> => {\n if (cancelled) {\n return Promise.reject()\n }\n\n if (param == null && data.pages.length) {\n return Promise.resolve(data)\n }\n\n const queryFnContext: OmitKeyof<\n QueryFunctionContext,\n 'signal'\n > = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? 'backward' : 'forward',\n meta: context.options.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const page = await queryFn(\n queryFnContext as QueryFunctionContext,\n )\n\n const { maxPages } = context.options\n const addTo = previous ? addToStart : addToEnd\n\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages),\n }\n }\n\n // fetch next / previous page?\n if (direction && oldPages.length) {\n const previous = direction === 'backward'\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams,\n }\n const param = pageParamFn(options, oldData)\n\n result = await fetchPage(oldData, param, previous)\n } else {\n const remainingPages = pages ?? oldPages.length\n\n // Fetch all pages\n do {\n const param =\n currentPage === 0\n ? (oldPageParams[0] ?? options.initialPageParam)\n : getNextPageParam(options, result)\n if (currentPage > 0 && param == null) {\n break\n }\n result = await fetchPage(result, param)\n currentPage++\n } while (currentPage < remainingPages)\n }\n\n return result\n }\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn as any,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal,\n },\n query,\n )\n }\n } else {\n context.fetchFn = fetchFn\n }\n },\n }\n}\n\nfunction getNextPageParam(\n options: InfiniteQueryPageParamsOptions,\n { pages, pageParams }: InfiniteData,\n): unknown | undefined {\n const lastIndex = pages.length - 1\n return pages.length > 0\n ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams,\n )\n : undefined\n}\n\nfunction getPreviousPageParam(\n options: InfiniteQueryPageParamsOptions,\n { pages, pageParams }: InfiniteData,\n): unknown | undefined {\n return pages.length > 0\n ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams)\n : undefined\n}\n\n/**\n * Checks if there is a next page.\n */\nexport function hasNextPage(\n options: InfiniteQueryPageParamsOptions,\n data?: InfiniteData,\n): boolean {\n if (!data) return false\n return getNextPageParam(options, data) != null\n}\n\n/**\n * Checks if there is a previous page.\n */\nexport function hasPreviousPage(\n options: InfiniteQueryPageParamsOptions,\n data?: InfiniteData,\n): boolean {\n if (!data || !options.getPreviousPageParam) return false\n return getPreviousPageParam(options, data) != null\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}