@ainias42/tanstack-ids 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"useQueriesStore.js","sourceRoot":"","sources":["../../src/QueryContext/useQueriesStore.ts"],"names":[],"mappings":"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","sourcesContent":["import { ObjectHelper } from '@ainias42/js-helper';\nimport { create } from 'zustand';\nimport { immer } from 'zustand/middleware/immer';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport type { QueryClient } from '@tanstack/react-query';\nimport type { URecord } from '@ainias42/js-helper';\n\ntype QueryItem = {\n keys: string[];\n isFetching: boolean;\n error: any;\n};\n\nfunction initialState() {\n return {\n lastContextId: 0,\n contexts: {} as URecord<\n number,\n {\n lastId: number;\n items: URecord<number, QueryItem>;\n }\n >,\n subContexts: {} as URecord<number, number[]>,\n };\n}\n\nexport type QueriesStoreState = ReturnType<typeof actionsGenerator> & ReturnType<typeof initialState>;\ntype SetState = (\n newState: Partial<QueriesStoreState> | QueriesStoreState | ((state: QueriesStoreState) => QueriesStoreState | void),\n replace?: boolean,\n) => void;\ntype GetState = () => Readonly<QueriesStoreState>;\nconst actionsGenerator = (set: SetState, get: GetState) => ({\n get,\n clear() {\n set({ ...initialState(), ...actionsGenerator(set, get) }, true);\n },\n generateContextId() {\n let id = 0;\n set((state) => {\n state.lastContextId++;\n state.contexts[state.lastContextId] = {\n lastId: 0,\n items: {},\n };\n id = state.lastContextId;\n });\n return id;\n },\n setItem(contextId: number, itemId: number | undefined, item: QueryItem) {\n let id = itemId;\n set((state) => {\n const contextData = state.contexts[contextId];\n if (!contextData) {\n return;\n }\n\n if (!id) {\n contextData.lastId++;\n id = contextData.lastId;\n }\n contextData.items[id] = item;\n });\n return id;\n },\n removeItem(contextId: number, itemId: number | undefined) {\n if (!itemId) {\n return;\n }\n set((state) => {\n delete state.contexts[contextId]?.items[itemId];\n });\n },\n isFetching(contextId: number): boolean {\n const state = get();\n return (\n ObjectHelper.values(state.contexts[contextId]?.items ?? {}).some((item) => item.isFetching) ||\n (state.subContexts[contextId]?.some((id) => state.isFetching(id)) ?? false)\n );\n },\n isFetchingByScope(contextId: number, scope: { global: boolean; subContexts: boolean }): boolean {\n const state = get();\n return (\n ((scope.global &&\n ObjectHelper.values(state.contexts[contextId]?.items ?? {}).some((item) => item.isFetching)) ||\n (scope.subContexts && state.subContexts[contextId]?.some((id) => state.isFetching(id)))) ??\n false\n );\n },\n getError(contextId: number): any {\n const state = get();\n\n const error = ObjectHelper.values(state.contexts[contextId]?.items ?? {}).find((item) => item.error)?.error;\n if (error) {\n return error;\n }\n const subContextWithError = state.subContexts[contextId]?.find((childId) => state.getError(childId));\n if (subContextWithError) {\n return state.getError(subContextWithError);\n }\n return undefined;\n },\n getAllKeys(contextId: number): Set<string> {\n const state = get();\n\n const keys = new Set(ObjectHelper.values(state.contexts[contextId]?.items ?? {}).flatMap((item) => item.keys));\n\n const subContext = state.subContexts[contextId];\n if (subContext) {\n for (const childId of subContext) {\n const subKeys = state.getAllKeys(childId);\n for (const key of subKeys) {\n keys.add(key);\n }\n }\n }\n\n return keys;\n },\n reload(queryClient: QueryClient, contextId: number) {\n const state = get();\n\n const keys = state.getAllKeys(contextId);\n return queryClient.refetchQueries({\n predicate: (query) => keys.has(query.queryHash),\n });\n },\n addSubContext(parent: number, child: number) {\n set((state) => {\n const newChildren = state.subContexts[parent] ?? [];\n newChildren.push(child);\n state.subContexts[parent] = newChildren;\n });\n },\n removeSubContext(parent: number, child: number) {\n set((state) => {\n state.subContexts[parent] = state.subContexts[parent]?.filter((id) => id !== child);\n });\n },\n});\n\nexport const useQueriesStore = create<QueriesStoreState>()(\n subscribeWithSelector(\n immer((set, get) => ({\n ...initialState(),\n ...actionsGenerator(set, get),\n })),\n ),\n);\n"]}
1
+ {"version":3,"file":"useQueriesStore.js","sourceRoot":"","sources":["../../src/QueryContext/useQueriesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,SAAS,YAAY;IACjB,OAAO;QACH,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,EAMT;QACD,WAAW,EAAE,EAA+B;KAC/C,CAAC;AACN,CAAC;AASD,MAAM,gBAAgB,GAAG,CAAC,GAAa,EAAE,GAAa,EAAE,EAAE,CAAC,CAAC;IACxD,GAAG;IACH,KAAK;QACD,GAAG,iCAAM,YAAY,EAAE,GAAK,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAI,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,iBAAiB;QACb,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACV,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;gBAClC,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,EAAE;aACZ,CAAC;YAEF,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;IACd,CAAC;IACD,OAAO,CAAC,SAAiB,EAAE,MAA0B,EAAE,IAAe;QAClE,IAAI,EAAE,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACV,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,OAAO;YACX,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrB,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;YAC5B,CAAC;YAED,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;IACd,CAAC;IACD,UAAU,CAAC,SAAiB,EAAE,MAA0B;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;;YACH,MAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,+CAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IACD,UAAU,CAAC,SAAiB;;QACxB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QACpB,OAAO,CACH,YAAY,CAAC,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3F,CAAC,MAAA,MAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,0CAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,mCAAI,KAAK,CAAC,CAC9E,CAAC;IACN,CAAC;IACD,iBAAiB,CAAC,SAAiB,EAAE,KAAgD;;QACjF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QACpB,OAAO,CACH,MAAA,CAAC,CAAC,KAAK,CAAC,MAAM;YACV,YAAY,CAAC,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5F,CAAC,KAAK,CAAC,WAAW,KAAI,MAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,0CAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,mCAC5F,KAAK,CACR,CAAC;IACN,CAAC;IACD,QAAQ,CAAC,SAAiB;;QACtB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QAEpB,MAAM,KAAK,GAAG,MAAA,YAAY,CAAC,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,0CAAE,KAAK,CAAC;QAC5G,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,0CAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACrG,IAAI,mBAAmB,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,UAAU,CAAC,SAAiB;;QACxB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QAEpB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/G,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,WAAwB,EAAE,SAAiB;QAC9C,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QAEpB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,WAAW,CAAC,cAAc,CAAC;YAC9B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;SAClD,CAAC,CAAC;IACP,CAAC;IACD,aAAa,CAAC,MAAc,EAAE,KAAa;QACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;;YACV,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,gBAAgB,CAAC,MAAc,EAAE,KAAa;QAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;;YACV,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,0CAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,EAAqB,CACtD,qBAAqB,CACjB,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,iCACb,YAAY,EAAE,GACd,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/B,CAAC,CACN,CACJ,CAAC","sourcesContent":["import { ObjectHelper } from '@ainias42/js-helper';\nimport { create } from 'zustand';\nimport { immer } from 'zustand/middleware/immer';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport type { QueryClient } from '@tanstack/react-query';\nimport type { URecord } from '@ainias42/js-helper';\n\ntype QueryItem = {\n keys: string[];\n isFetching: boolean;\n error: any;\n};\n\nfunction initialState() {\n return {\n lastContextId: 0,\n contexts: {} as URecord<\n number,\n {\n lastId: number;\n items: URecord<number, QueryItem>;\n }\n >,\n subContexts: {} as URecord<number, number[]>,\n };\n}\n\nexport type QueriesStoreState = ReturnType<typeof actionsGenerator> & ReturnType<typeof initialState>;\ntype SetState = (\n newState: Partial<QueriesStoreState> | QueriesStoreState | ((state: QueriesStoreState) => QueriesStoreState | void),\n replace?: boolean,\n) => void;\n\ntype GetState = () => Readonly<QueriesStoreState>;\nconst actionsGenerator = (set: SetState, get: GetState) => ({\n get,\n clear() {\n set({ ...initialState(), ...actionsGenerator(set, get) }, true);\n },\n generateContextId() {\n let id = 0;\n set((state) => {\n state.lastContextId++;\n state.contexts[state.lastContextId] = {\n lastId: 0,\n items: {},\n };\n\n id = state.lastContextId;\n });\n\n return id;\n },\n setItem(contextId: number, itemId: number | undefined, item: QueryItem) {\n let id = itemId;\n set((state) => {\n const contextData = state.contexts[contextId];\n if (!contextData) {\n return;\n }\n\n if (!id) {\n contextData.lastId++;\n id = contextData.lastId;\n }\n\n contextData.items[id] = item;\n });\n\n return id;\n },\n removeItem(contextId: number, itemId: number | undefined) {\n if (!itemId) {\n return;\n }\n\n set((state) => {\n delete state.contexts[contextId]?.items[itemId];\n });\n },\n isFetching(contextId: number): boolean {\n const state = get();\n return (\n ObjectHelper.values(state.contexts[contextId]?.items ?? {}).some((item) => item.isFetching) ||\n (state.subContexts[contextId]?.some((id) => state.isFetching(id)) ?? false)\n );\n },\n isFetchingByScope(contextId: number, scope: { global: boolean; subContexts: boolean }): boolean {\n const state = get();\n return (\n ((scope.global &&\n ObjectHelper.values(state.contexts[contextId]?.items ?? {}).some((item) => item.isFetching)) ||\n (scope.subContexts && state.subContexts[contextId]?.some((id) => state.isFetching(id)))) ??\n false\n );\n },\n getError(contextId: number): any {\n const state = get();\n\n const error = ObjectHelper.values(state.contexts[contextId]?.items ?? {}).find((item) => item.error)?.error;\n if (error) {\n return error;\n }\n\n const subContextWithError = state.subContexts[contextId]?.find((childId) => state.getError(childId));\n if (subContextWithError) {\n return state.getError(subContextWithError);\n }\n\n return undefined;\n },\n getAllKeys(contextId: number): Set<string> {\n const state = get();\n\n const keys = new Set(ObjectHelper.values(state.contexts[contextId]?.items ?? {}).flatMap((item) => item.keys));\n\n const subContext = state.subContexts[contextId];\n if (subContext) {\n for (const childId of subContext) {\n const subKeys = state.getAllKeys(childId);\n for (const key of subKeys) {\n keys.add(key);\n }\n }\n }\n\n return keys;\n },\n reload(queryClient: QueryClient, contextId: number) {\n const state = get();\n\n const keys = state.getAllKeys(contextId);\n return queryClient.refetchQueries({\n predicate: (query) => keys.has(query.queryHash),\n });\n },\n addSubContext(parent: number, child: number) {\n set((state) => {\n const newChildren = state.subContexts[parent] ?? [];\n newChildren.push(child);\n state.subContexts[parent] = newChildren;\n });\n },\n removeSubContext(parent: number, child: number) {\n set((state) => {\n state.subContexts[parent] = state.subContexts[parent]?.filter((id) => id !== child);\n });\n },\n});\n\nexport const useQueriesStore = create<QueriesStoreState>()(\n subscribeWithSelector(\n immer((set, get) => ({\n ...initialState(),\n ...actionsGenerator(set, get),\n })),\n ),\n);\n"]}
@@ -19,7 +19,7 @@ export declare function generateIdsQuery<IdType extends number | string | symbol
19
19
  generateFilter: <Func extends (...args: any[]) => Promise<Type[]> | Type[], FuncArguments extends Parameters<Func>["length"] extends 0 ? void : Parameters<Func> = Parameters<Func>["length"] extends 0 ? void : Parameters<Func>, ResultAsArray extends boolean = false>(filterFunc: Func, additionalOptions?: Omit<CreateQueryOptions<IdType[], [FuncArguments]>, "queryKey" | "fetcher"> & {
20
20
  resultAsArray?: ResultAsArray;
21
21
  subKey?: string;
22
- }) => (import("react-query-kit").ExposeMethods<IdType[], void | (void & [filter: FuncArguments]), Error, never> & (<Args extends FuncArguments extends void ? [] : FuncArguments>(args: Args, filterQueryOptions?: Omit<CreateQueryOptions<Type[], [FuncArguments]>, "queryKey" | "fetcher" | "variables">) => {
22
+ }) => (import("react-query-kit").ExposeMethods<IdType[], void | (void & [filter: FuncArguments]), Error, never> & (<Args extends FuncArguments extends void ? [] : FuncArguments>(...[args, filterQueryOptions]: (FuncArguments extends void ? [] : FuncArguments) extends [] ? [args?: Args, filterQueryOptions?: Omit<CreateQueryOptions<Type[], [FuncArguments], Error>, "queryKey" | "fetcher" | "variables">] : [args: Args, filterQueryOptions?: Omit<CreateQueryOptions<Type[], [FuncArguments], Error>, "queryKey" | "fetcher" | "variables">]) => {
23
23
  result: ResultAsArray extends true ? UseQueryResult<Type, Error>[] : Partial<Record<IdType, UseQueryResult<Type, Error> | undefined>>;
24
24
  isFetching: boolean;
25
25
  })) & {
@@ -94,8 +94,9 @@ export function generateIdsQuery(key, fetcher, additionalQueryOptions) {
94
94
  };
95
95
  },
96
96
  ] }));
97
- function useFilter(args, filterQueryOptions = {}) {
97
+ function useFilter(...[args, filterQueryOptions = {}]) {
98
98
  var _a, _b;
99
+ const filterArgs = args !== null && args !== void 0 ? args : [];
99
100
  const { initialData } = filterQueryOptions, otherParams = __rest(filterQueryOptions, ["initialData"]);
100
101
  let initialDataIds = [];
101
102
  if (initialData !== undefined) {
@@ -115,13 +116,13 @@ export function generateIdsQuery(key, fetcher, additionalQueryOptions) {
115
116
  return item.id;
116
117
  })) !== null && _b !== void 0 ? _b : [];
117
118
  }
118
- const queryOptions = Object.assign(Object.assign({ variables: args }, otherParams), (initialData === undefined
119
+ const queryOptions = Object.assign(Object.assign({ variables: filterArgs }, otherParams), (initialData === undefined
119
120
  ? {}
120
121
  : {
121
122
  initialData: initialDataIds,
122
123
  }));
123
124
  const result = queryHook(queryOptions);
124
- useQueriesSubscribeToReload([hashKey(queryHook.getKey(args))], result.isFetching, result.error);
125
+ useQueriesSubscribeToReload([hashKey(queryHook.getKey(filterArgs))], result.isFetching, result.error);
125
126
  // When staleTime is same as filterStaleTime, then the queries will run at the same time as the filter
126
127
  // Because of this, use staleTime: Inifinity to prevent the queries from running again. The result of the
127
128
  // filter will be saved inside the queryClient, so the queries will be updated with the new data.
@@ -1 +1 @@
1
- {"version":3,"file":"generateIdsQuery.js","sourceRoot":"","sources":["../src/generateIdsQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArrayHelper, JsonHelper } from '@ainias42/js-helper';\nimport { NotFoundError } from './NotFoundError';\nimport { create, windowScheduler } from '@yornaath/batshit';\nimport { createInfiniteQuery, createQuery } from 'react-query-kit';\nimport { generateQuery } from './generateQuery';\nimport { hashKey, useQueries, useQueryClient } from '@tanstack/react-query';\nimport { hoistReactQueryKitAttributes } from './hoistReactQueryKitAttributes';\nimport { useIndexedData } from './hooks/useIndexedData';\nimport { useMemo, useRef } from 'react';\nimport { useQueriesSubscribeToReload } from './QueryContext/useQuerySubscribeToReload';\nimport type { Awaitable, Override, URecord } from '@ainias42/js-helper';\nimport type { CreateInfiniteQueryOptions, CreateQueryOptions, QueryHookOptions } from 'react-query-kit';\nimport type { QueryClient, QueryFunctionContext, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\n\nexport type Unpacked<T> = T extends (infer U)[] ? U : T;\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>;\n }\n : T;\n\nexport function generateIdsQuery<\n IdType extends number | string | symbol,\n Type extends {\n id: IdType;\n },\n>(\n key: string,\n fetcher: (ids: IdType[]) => Promise<Type[]> | Type[],\n additionalQueryOptions?: Omit<CreateQueryOptions<Type, [IdType]>, 'queryKey' | 'fetcher'> & {\n schedulerTime?: number;\n },\n) {\n const batch = create<URecord<IdType, Type>[], IdType, Type>({\n fetcher: async (ids) => {\n return [ArrayHelper.arrayToObject(await fetcher(ids), (value) => value.id)];\n },\n resolver: ([items], id) => {\n const item = items?.[id];\n if (item === undefined) {\n throw new NotFoundError(id);\n }\n return item;\n },\n scheduler: windowScheduler(additionalQueryOptions?.schedulerTime ?? 15),\n });\n\n const useQueryHook = createQuery<Type, [IdType]>({\n queryKey: [key],\n fetcher: (identifier) => batch.fetch(identifier[0]),\n ...additionalQueryOptions,\n });\n\n function useManyHook(\n ids: IdType[],\n otherAdditionalQueryOptions: Omit<\n UseQueryOptions<Type, unknown, Type, [string, [IdType]]>,\n 'context' | 'fetcher' | 'queryKey'\n > & { reloadWithContext?: boolean } = {},\n ) {\n const queries = ids.map((id) => ({\n ...useQueryHook.getOptions([id]),\n ...otherAdditionalQueryOptions,\n }));\n\n const results = useQueries({\n queries: queries as any,\n }) as UseQueryResult<Type, Error>[];\n\n const oldData = useRef<typeof results>([]);\n const isSame = JsonHelper.deepEqual(oldData.current, results, 1);\n\n const returnData = useRef({} as URecord<IdType, Unpacked<typeof results>>);\n if (!isSame) {\n oldData.current = results;\n returnData.current = {} as URecord<IdType, Unpacked<typeof results>>;\n for (const [index, val] of results.entries()) {\n const id = ids[index] as IdType;\n returnData.current[id] = val;\n }\n }\n\n const shouldReload = otherAdditionalQueryOptions.reloadWithContext ?? true;\n const keys = shouldReload ? ids.map((id) => hashKey(useQueryHook.getKey([id as DeepPartial<IdType>]))) : [];\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const isFetching = useMemo(() => oldData.current.some((item) => item.isFetching), [oldData.current]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const error = useMemo(() => oldData.current.find((item) => item.error)?.error, [oldData.current]);\n\n useQueriesSubscribeToReload(keys, isFetching, error);\n\n return returnData.current;\n }\n\n function useOneHook(\n identifier: IdType,\n otherAdditionalQueryOptions: Omit<\n QueryHookOptions<Type, unknown, Type, [IdType]>,\n 'context' | 'fetcher' | 'queryKey' | 'variables'\n > & { reloadWithContext?: boolean } = {},\n ) {\n const result = useQueryHook({ ...otherAdditionalQueryOptions, variables: [identifier] });\n\n const shouldReload = otherAdditionalQueryOptions.reloadWithContext ?? true;\n useQueriesSubscribeToReload(\n shouldReload ? [hashKey(useQueryHook.getKey([identifier as DeepPartial<IdType>]))] : [],\n result.isFetching,\n result.error,\n );\n return result;\n }\n\n function generateFilter<\n Func extends (...args: any[]) => Promise<Type[]> | Type[],\n FuncArguments extends Parameters<Func>['length'] extends 0 ? void : Parameters<Func> =\n Parameters<Func>['length'] extends 0 ? void : Parameters<Func>,\n ResultAsArray extends boolean = false,\n >(\n filterFunc: Func,\n additionalOptions?: Omit<CreateQueryOptions<IdType[], [FuncArguments]>, 'queryKey' | 'fetcher'> & {\n resultAsArray?: ResultAsArray;\n subKey?: string;\n },\n ) {\n let queryClient: QueryClient | undefined;\n\n function getQueryClient() {\n if (!queryClient) {\n throw new Error('QueryClient not set');\n }\n return queryClient;\n }\n\n const queryHook = generateQuery(\n `${key}-filter${additionalOptions?.subKey ? `-${additionalOptions.subKey}` : ''}`,\n async (filter: FuncArguments) => {\n const result = await filterFunc(filter);\n return result.map((item) => {\n getQueryClient().setQueryData(useQueryHook.getKey([item.id as DeepPartial<IdType>]), item);\n return item.id;\n });\n },\n {\n initialDataUpdatedAt: 0,\n ...additionalOptions,\n ...(additionalOptions?.initialData === undefined\n ? {}\n : {\n initialData: additionalOptions.initialData as IdType[],\n }),\n use: [\n function myTestMiddleware(useQueryNext) {\n return (options2, currentQueryClient) => {\n queryClient = useQueryClient(currentQueryClient);\n return useQueryNext(options2, queryClient);\n };\n },\n ],\n },\n );\n\n type QueryHookArgument = Parameters<typeof queryHook>[0];\n type HookArgs = FuncArguments extends void ? [] : FuncArguments;\n type FilterKeyArguments = DeepPartial<HookArgs> | DeepPartial<[FuncArguments]>;\n type FilterGetKey = (variables?: FilterKeyArguments) => readonly unknown[];\n type FilterResult = ResultAsArray extends true\n ? UseQueryResult<Type, Error>[]\n : URecord<IdType, UseQueryResult<Type, Error>>;\n type FilterReturn = {\n result: FilterResult;\n isFetching: boolean;\n };\n\n function useFilter<Args extends HookArgs>(\n args: Args,\n filterQueryOptions: Omit<\n CreateQueryOptions<Type[], [FuncArguments]>,\n 'queryKey' | 'fetcher' | 'variables'\n > = {},\n ): FilterReturn {\n const { initialData, ...otherParams } = filterQueryOptions;\n\n let initialDataIds: IdType[] = [];\n if (initialData !== undefined) {\n const updatedAt =\n (typeof otherParams.initialDataUpdatedAt === 'function'\n ? otherParams.initialDataUpdatedAt()\n : otherParams.initialDataUpdatedAt) ?? 0;\n const initialDataArray = Array.isArray(initialData) ? initialData : initialData();\n initialDataIds =\n initialDataArray?.map((item) => {\n const itemKey = useOne.getKey([item.id as DeepPartial<IdType>]);\n const state = queryClient?.getQueryState(itemKey);\n if (!state || state.dataUpdatedAt < updatedAt) {\n queryClient?.setQueryData(itemKey, item, {\n updatedAt,\n });\n }\n return item.id;\n }) ?? [];\n }\n\n const queryOptions = {\n variables: args,\n ...otherParams,\n ...(initialData === undefined\n ? {}\n : {\n initialData: initialDataIds,\n }),\n };\n const result = queryHook(queryOptions as QueryHookArgument);\n\n useQueriesSubscribeToReload(\n [hashKey(queryHook.getKey(args as Parameters<(typeof queryHook)['getKey']>[0]))],\n result.isFetching,\n result.error,\n );\n\n // When staleTime is same as filterStaleTime, then the queries will run at the same time as the filter\n // Because of this, use staleTime: Inifinity to prevent the queries from running again. The result of the\n // filter will be saved inside the queryClient, so the queries will be updated with the new data.\n // Same goes for reloading with context.\n // Other usages of useManyHook are not affected by this.\n const filteredIds = useMemo(() => (result.data ?? []) as IdType[], [result.data]);\n const indexedResult = useManyHook(filteredIds, { staleTime: Infinity, reloadWithContext: false });\n const arrayResult: UseQueryResult<Type, Error>[] = useMemo(\n () => ArrayHelper.noUndefined(filteredIds?.map((id) => indexedResult[id])),\n [filteredIds, indexedResult],\n );\n\n if (additionalOptions?.resultAsArray) {\n return {\n result: arrayResult as FilterResult,\n isFetching: result.isFetching,\n };\n }\n return {\n result: indexedResult as FilterResult,\n isFetching: result.isFetching,\n };\n }\n\n const filterHook = hoistReactQueryKitAttributes(queryHook, useFilter);\n const getFilterKey: FilterGetKey = (variables) => {\n return queryHook.getKey(variables as Parameters<(typeof queryHook)['getKey']>[0]);\n };\n\n return Object.assign(filterHook, {\n getKey: getFilterKey,\n }) as typeof filterHook & {\n getKey: FilterGetKey;\n };\n }\n\n function generateInfiniteQuery<PageParams, Meta, FuncArguments extends any[] = []>({\n queryFn,\n ...options\n }: Omit<\n CreateInfiniteQueryOptions<{ data: IdType[]; meta: Meta }, FuncArguments, Error, PageParams>,\n 'getNextPageParam' | 'getPreviousPageParam' | 'queryKey' | 'fetcher'\n > & {\n queryFn: (\n pageParams: PageParams,\n args: FuncArguments,\n context: QueryFunctionContext<[string, FuncArguments], PageParams>,\n ) => Awaitable<{ data: Type[]; meta: Meta }>;\n getNextPageParam: (options: {\n getLastPage: () => Type[];\n getAllPages: () => Type[][];\n lastPageParam: PageParams;\n allPageParams: PageParams[];\n lastPageLength: number;\n lastPageMeta: Meta;\n }) => PageParams | undefined;\n getPreviousPageParam?: (options: {\n getFirstPage: () => Type[];\n getAllPages: () => Type[][];\n firstPageParam: PageParams;\n allPageParams: PageParams[];\n firstPageLength: number;\n firstPageMeta: Meta;\n }) => PageParams | undefined;\n }) {\n let queryClient: QueryClient | undefined;\n\n function getQueryClient() {\n if (!queryClient) {\n throw new Error('QueryClient not set');\n }\n return queryClient;\n }\n\n function findEntity(id: IdType) {\n return getQueryClient().getQueryData(useQueryHook.getKey([id as DeepPartial<IdType>])) as Type | undefined;\n }\n\n const { getPreviousPageParam } = options;\n const infiniteQueryHook = createInfiniteQuery<\n {\n data: IdType[];\n meta: Meta;\n },\n FuncArguments,\n Error,\n PageParams\n >({\n ...options,\n use: [\n function myTestMiddleware(useQueryNext) {\n return (options2, currentQueryClient) => {\n queryClient = useQueryClient(currentQueryClient);\n return useQueryNext(options2, queryClient);\n };\n },\n ],\n queryKey: [`${key}-infinite-query`],\n fetcher: async (_, ctx) => {\n const context = ctx as typeof ctx & { pageParam: PageParams };\n const result = await queryFn(\n context.pageParam,\n context.queryKey[1] as FuncArguments,\n context as QueryFunctionContext<[string, FuncArguments], PageParams>,\n );\n return {\n meta: result.meta,\n data: result.data.map((item) => {\n getQueryClient().setQueryData(useQueryHook.getKey([item.id as DeepPartial<IdType>]), item);\n return item.id;\n }),\n };\n },\n getNextPageParam: (\n lastPage: { meta: Meta; data: IdType[] },\n allPages: {\n meta: Meta;\n data: IdType[];\n }[],\n lastPageParam,\n allPageParams,\n ) => {\n return options.getNextPageParam({\n lastPageMeta: lastPage.meta,\n getLastPage: () => ArrayHelper.noUndefined(lastPage.data.map(findEntity)),\n getAllPages: () => allPages.map((page) => ArrayHelper.noUndefined(page.data.map(findEntity))),\n lastPageParam,\n allPageParams,\n lastPageLength: lastPage.data.length,\n });\n },\n getPreviousPageParam: !getPreviousPageParam\n ? undefined\n : (firstPage, allPages, firstPageParam, allPageParams) => {\n return getPreviousPageParam({\n firstPageMeta: firstPage.meta,\n getFirstPage: () => ArrayHelper.noUndefined(firstPage.data.map(findEntity)),\n getAllPages: () => allPages.map((page) => ArrayHelper.noUndefined(page.data.map(findEntity))),\n firstPageParam,\n allPageParams,\n firstPageLength: firstPage.data.length,\n });\n },\n });\n\n type HookOptions = Override<\n Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n },\n {\n initialData?: {\n pages: { data: Type[]; meta: Meta }[];\n pageParams: PageParams[];\n };\n }\n >;\n\n type InfiniteQueryArgs = FuncArguments extends\n | {\n length: 0;\n }\n | symbol\n | undefined\n ? [HookOptions] | []\n : [HookOptions];\n\n function useInfiniteQuery(...args: InfiniteQueryArgs) {\n const infiniteQueryClient = useQueryClient();\n\n let infiniteOptions: Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n };\n if (args.length === 1 && 'initialData' in args[0] && args[0].initialData) {\n const { initialData } = args[0];\n infiniteOptions = {\n ...args[0],\n initialData: {\n pages: initialData.pages.map((page) => ({\n ...page,\n data: page.data.map((item) => {\n infiniteQueryClient.setQueryData(\n useQueryHook.getKey([item.id as DeepPartial<IdType>]),\n item,\n );\n return item.id;\n }),\n })),\n pageParams: initialData.pageParams,\n },\n } as Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n };\n } else {\n infiniteOptions =\n (args[0] as Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n }) ?? {};\n }\n const result = infiniteQueryHook(infiniteOptions);\n useQueriesSubscribeToReload(\n [\n hashKey(\n infiniteQueryHook.getKey(\n infiniteOptions.variables as Parameters<(typeof infiniteQueryHook)['getKey']>[0],\n ),\n ),\n ],\n result.isFetching,\n result.error,\n );\n const ids = useMemo(() => result.data?.pages.flatMap((page) => page.data) ?? [], [result.data?.pages]);\n\n // When staleTime is same as filterStaleTime, then the queries will run at the same time as the filter\n // Because of this, use staleTime: Inifinity to prevent the queries from running again. The result of the\n // filter will be saved inside the queryClient, so the queries will be updated with the new data.\n // Same goes for reloading with context.\n // Other usages of useManyHook are not affected by this.\n const manyData = useManyHook(ids, { staleTime: Infinity, reloadWithContext: false });\n const indexedData = useIndexedData(manyData);\n\n const pages = useMemo(() => {\n return result.data\n ? result.data.pages.map((page) => ArrayHelper.noUndefined(page.data.map((id) => indexedData[id])))\n : [];\n }, [indexedData, result.data]);\n\n const data = !result.data ? undefined : { ...result.data, pages };\n type TransformedResult = Omit<typeof result, 'data'> & {\n data: typeof data;\n };\n\n return new Proxy(result, {\n get(target, property, receiver) {\n if (property === 'data') {\n return data;\n }\n\n return Reflect.get(target, property, receiver);\n },\n }) as TransformedResult;\n }\n\n return hoistReactQueryKitAttributes(infiniteQueryHook, useInfiniteQuery);\n }\n\n const useMany = hoistReactQueryKitAttributes(useQueryHook, useManyHook);\n const useOne = hoistReactQueryKitAttributes(useQueryHook, useOneHook);\n return { useMany, useOne, generateFilter, generateInfiniteQuery };\n}\n"]}
1
+ {"version":3,"file":"generateIdsQuery.js","sourceRoot":"","sources":["../src/generateIdsQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArrayHelper, JsonHelper } from '@ainias42/js-helper';\nimport { NotFoundError } from './NotFoundError';\nimport { create, windowScheduler } from '@yornaath/batshit';\nimport { createInfiniteQuery, createQuery } from 'react-query-kit';\nimport { generateQuery } from './generateQuery';\nimport { hashKey, useQueries, useQueryClient } from '@tanstack/react-query';\nimport { hoistReactQueryKitAttributes } from './hoistReactQueryKitAttributes';\nimport { useIndexedData } from './hooks/useIndexedData';\nimport { useMemo, useRef } from 'react';\nimport { useQueriesSubscribeToReload } from './QueryContext/useQuerySubscribeToReload';\nimport type { Awaitable, Override, URecord } from '@ainias42/js-helper';\nimport type { CreateInfiniteQueryOptions, CreateQueryOptions, QueryHookOptions } from 'react-query-kit';\nimport type { QueryClient, QueryFunctionContext, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\n\nexport type Unpacked<T> = T extends (infer U)[] ? U : T;\n\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>;\n }\n : T;\n\nexport function generateIdsQuery<\n IdType extends number | string | symbol,\n Type extends {\n id: IdType;\n },\n>(\n key: string,\n fetcher: (ids: IdType[]) => Promise<Type[]> | Type[],\n additionalQueryOptions?: Omit<CreateQueryOptions<Type, [IdType]>, 'queryKey' | 'fetcher'> & {\n schedulerTime?: number;\n },\n) {\n const batch = create<URecord<IdType, Type>[], IdType, Type>({\n fetcher: async (ids) => {\n return [ArrayHelper.arrayToObject(await fetcher(ids), (value) => value.id)];\n },\n resolver: ([items], id) => {\n const item = items?.[id];\n if (item === undefined) {\n throw new NotFoundError(id);\n }\n\n return item;\n },\n scheduler: windowScheduler(additionalQueryOptions?.schedulerTime ?? 15),\n });\n\n const useQueryHook = createQuery<Type, [IdType]>({\n queryKey: [key],\n fetcher: (identifier) => batch.fetch(identifier[0]),\n ...additionalQueryOptions,\n });\n\n function useManyHook(\n ids: IdType[],\n otherAdditionalQueryOptions: Omit<\n UseQueryOptions<Type, unknown, Type, [string, [IdType]]>,\n 'context' | 'fetcher' | 'queryKey'\n > & { reloadWithContext?: boolean } = {},\n ) {\n const queries = ids.map((id) => ({\n ...useQueryHook.getOptions([id]),\n ...otherAdditionalQueryOptions,\n }));\n\n const results = useQueries({\n queries: queries as any,\n }) as UseQueryResult<Type, Error>[];\n\n const oldData = useRef<typeof results>([]);\n const isSame = JsonHelper.deepEqual(oldData.current, results, 1);\n\n const returnData = useRef({} as URecord<IdType, Unpacked<typeof results>>);\n if (!isSame) {\n oldData.current = results;\n returnData.current = {} as URecord<IdType, Unpacked<typeof results>>;\n for (const [index, val] of results.entries()) {\n const id = ids[index] as IdType;\n returnData.current[id] = val;\n }\n }\n\n const shouldReload = otherAdditionalQueryOptions.reloadWithContext ?? true;\n const keys = shouldReload ? ids.map((id) => hashKey(useQueryHook.getKey([id as DeepPartial<IdType>]))) : [];\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const isFetching = useMemo(() => oldData.current.some((item) => item.isFetching), [oldData.current]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const error = useMemo(() => oldData.current.find((item) => item.error)?.error, [oldData.current]);\n\n useQueriesSubscribeToReload(keys, isFetching, error);\n\n return returnData.current;\n }\n\n function useOneHook(\n identifier: IdType,\n otherAdditionalQueryOptions: Omit<\n QueryHookOptions<Type, unknown, Type, [IdType]>,\n 'context' | 'fetcher' | 'queryKey' | 'variables'\n > & { reloadWithContext?: boolean } = {},\n ) {\n const result = useQueryHook({ ...otherAdditionalQueryOptions, variables: [identifier] });\n\n const shouldReload = otherAdditionalQueryOptions.reloadWithContext ?? true;\n useQueriesSubscribeToReload(\n shouldReload ? [hashKey(useQueryHook.getKey([identifier as DeepPartial<IdType>]))] : [],\n result.isFetching,\n result.error,\n );\n\n return result;\n }\n\n function generateFilter<\n Func extends (...args: any[]) => Promise<Type[]> | Type[],\n FuncArguments extends Parameters<Func>['length'] extends 0 ? void : Parameters<Func> =\n Parameters<Func>['length'] extends 0 ? void : Parameters<Func>,\n ResultAsArray extends boolean = false,\n >(\n filterFunc: Func,\n additionalOptions?: Omit<CreateQueryOptions<IdType[], [FuncArguments]>, 'queryKey' | 'fetcher'> & {\n resultAsArray?: ResultAsArray;\n subKey?: string;\n },\n ) {\n let queryClient: QueryClient | undefined;\n\n function getQueryClient() {\n if (!queryClient) {\n throw new Error('QueryClient not set');\n }\n\n return queryClient;\n }\n\n const queryHook = generateQuery(\n `${key}-filter${additionalOptions?.subKey ? `-${additionalOptions.subKey}` : ''}`,\n async (filter: FuncArguments) => {\n const result = await filterFunc(filter);\n return result.map((item) => {\n getQueryClient().setQueryData(useQueryHook.getKey([item.id as DeepPartial<IdType>]), item);\n return item.id;\n });\n },\n {\n initialDataUpdatedAt: 0,\n ...additionalOptions,\n ...(additionalOptions?.initialData === undefined\n ? {}\n : {\n initialData: additionalOptions.initialData as IdType[],\n }),\n use: [\n function myTestMiddleware(useQueryNext) {\n return (options2, currentQueryClient) => {\n queryClient = useQueryClient(currentQueryClient);\n return useQueryNext(options2, queryClient);\n };\n },\n ],\n },\n );\n\n type QueryHookArgument = Parameters<typeof queryHook>[0];\n type HookArgs = FuncArguments extends void ? [] : FuncArguments;\n type FilterKeyArguments = DeepPartial<HookArgs> | DeepPartial<[FuncArguments]>;\n type FilterGetKey = (variables?: FilterKeyArguments) => readonly unknown[];\n type FilterResult = ResultAsArray extends true\n ? UseQueryResult<Type, Error>[]\n : URecord<IdType, UseQueryResult<Type, Error>>;\n\n type FilterReturn = {\n result: FilterResult;\n isFetching: boolean;\n };\n\n type FilterQueryOptions = Omit<CreateQueryOptions<Type[], [FuncArguments]>, 'queryKey' | 'fetcher' | 'variables'>;\n\n function useFilter<Args extends HookArgs>(\n ...[args, filterQueryOptions = {}]: HookArgs extends []\n ? [args?: Args, filterQueryOptions?: FilterQueryOptions]\n : [args: Args, filterQueryOptions?: FilterQueryOptions]\n ): FilterReturn {\n const filterArgs = args ?? [];\n const { initialData, ...otherParams } = filterQueryOptions;\n\n let initialDataIds: IdType[] = [];\n if (initialData !== undefined) {\n const updatedAt =\n (typeof otherParams.initialDataUpdatedAt === 'function'\n ? otherParams.initialDataUpdatedAt()\n : otherParams.initialDataUpdatedAt) ?? 0;\n\n const initialDataArray = Array.isArray(initialData) ? initialData : initialData();\n initialDataIds =\n initialDataArray?.map((item) => {\n const itemKey = useOne.getKey([item.id as DeepPartial<IdType>]);\n const state = queryClient?.getQueryState(itemKey);\n if (!state || state.dataUpdatedAt < updatedAt) {\n queryClient?.setQueryData(itemKey, item, {\n updatedAt,\n });\n }\n\n return item.id;\n }) ?? [];\n }\n\n const queryOptions = {\n variables: filterArgs,\n ...otherParams,\n ...(initialData === undefined\n ? {}\n : {\n initialData: initialDataIds,\n }),\n };\n\n const result = queryHook(queryOptions as QueryHookArgument);\n\n useQueriesSubscribeToReload(\n [hashKey(queryHook.getKey(filterArgs as Parameters<(typeof queryHook)['getKey']>[0]))],\n result.isFetching,\n result.error,\n );\n\n // When staleTime is same as filterStaleTime, then the queries will run at the same time as the filter\n // Because of this, use staleTime: Inifinity to prevent the queries from running again. The result of the\n // filter will be saved inside the queryClient, so the queries will be updated with the new data.\n // Same goes for reloading with context.\n // Other usages of useManyHook are not affected by this.\n const filteredIds = useMemo(() => (result.data ?? []) as IdType[], [result.data]);\n const indexedResult = useManyHook(filteredIds, { staleTime: Infinity, reloadWithContext: false });\n const arrayResult: UseQueryResult<Type, Error>[] = useMemo(\n () => ArrayHelper.noUndefined(filteredIds?.map((id) => indexedResult[id])),\n [filteredIds, indexedResult],\n );\n\n if (additionalOptions?.resultAsArray) {\n return {\n result: arrayResult as FilterResult,\n isFetching: result.isFetching,\n };\n }\n\n return {\n result: indexedResult as FilterResult,\n isFetching: result.isFetching,\n };\n }\n\n const filterHook = hoistReactQueryKitAttributes(queryHook, useFilter);\n const getFilterKey: FilterGetKey = (variables) => {\n return queryHook.getKey(variables as Parameters<(typeof queryHook)['getKey']>[0]);\n };\n\n return Object.assign(filterHook, {\n getKey: getFilterKey,\n }) as typeof filterHook & {\n getKey: FilterGetKey;\n };\n }\n\n function generateInfiniteQuery<PageParams, Meta, FuncArguments extends any[] = []>({\n queryFn,\n ...options\n }: Omit<\n CreateInfiniteQueryOptions<{ data: IdType[]; meta: Meta }, FuncArguments, Error, PageParams>,\n 'getNextPageParam' | 'getPreviousPageParam' | 'queryKey' | 'fetcher'\n > & {\n queryFn: (\n pageParams: PageParams,\n args: FuncArguments,\n context: QueryFunctionContext<[string, FuncArguments], PageParams>,\n ) => Awaitable<{ data: Type[]; meta: Meta }>;\n getNextPageParam: (options: {\n getLastPage: () => Type[];\n getAllPages: () => Type[][];\n lastPageParam: PageParams;\n allPageParams: PageParams[];\n lastPageLength: number;\n lastPageMeta: Meta;\n }) => PageParams | undefined;\n getPreviousPageParam?: (options: {\n getFirstPage: () => Type[];\n getAllPages: () => Type[][];\n firstPageParam: PageParams;\n allPageParams: PageParams[];\n firstPageLength: number;\n firstPageMeta: Meta;\n }) => PageParams | undefined;\n }) {\n let queryClient: QueryClient | undefined;\n\n function getQueryClient() {\n if (!queryClient) {\n throw new Error('QueryClient not set');\n }\n\n return queryClient;\n }\n\n function findEntity(id: IdType) {\n return getQueryClient().getQueryData(useQueryHook.getKey([id as DeepPartial<IdType>])) as Type | undefined;\n }\n\n const { getPreviousPageParam } = options;\n const infiniteQueryHook = createInfiniteQuery<\n {\n data: IdType[];\n meta: Meta;\n },\n FuncArguments,\n Error,\n PageParams\n >({\n ...options,\n use: [\n function myTestMiddleware(useQueryNext) {\n return (options2, currentQueryClient) => {\n queryClient = useQueryClient(currentQueryClient);\n return useQueryNext(options2, queryClient);\n };\n },\n ],\n queryKey: [`${key}-infinite-query`],\n fetcher: async (_, ctx) => {\n const context = ctx as typeof ctx & { pageParam: PageParams };\n const result = await queryFn(\n context.pageParam,\n context.queryKey[1] as FuncArguments,\n context as QueryFunctionContext<[string, FuncArguments], PageParams>,\n );\n\n return {\n meta: result.meta,\n data: result.data.map((item) => {\n getQueryClient().setQueryData(useQueryHook.getKey([item.id as DeepPartial<IdType>]), item);\n return item.id;\n }),\n };\n },\n getNextPageParam: (\n lastPage: { meta: Meta; data: IdType[] },\n allPages: {\n meta: Meta;\n data: IdType[];\n }[],\n lastPageParam,\n allPageParams,\n ) => {\n return options.getNextPageParam({\n lastPageMeta: lastPage.meta,\n getLastPage: () => ArrayHelper.noUndefined(lastPage.data.map(findEntity)),\n getAllPages: () => allPages.map((page) => ArrayHelper.noUndefined(page.data.map(findEntity))),\n lastPageParam,\n allPageParams,\n lastPageLength: lastPage.data.length,\n });\n },\n getPreviousPageParam: !getPreviousPageParam\n ? undefined\n : (firstPage, allPages, firstPageParam, allPageParams) => {\n return getPreviousPageParam({\n firstPageMeta: firstPage.meta,\n getFirstPage: () => ArrayHelper.noUndefined(firstPage.data.map(findEntity)),\n getAllPages: () => allPages.map((page) => ArrayHelper.noUndefined(page.data.map(findEntity))),\n firstPageParam,\n allPageParams,\n firstPageLength: firstPage.data.length,\n });\n },\n });\n\n type HookOptions = Override<\n Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n },\n {\n initialData?: {\n pages: { data: Type[]; meta: Meta }[];\n pageParams: PageParams[];\n };\n }\n >;\n\n type InfiniteQueryArgs = FuncArguments extends\n | {\n length: 0;\n }\n | symbol\n | undefined\n ? [HookOptions] | []\n : [HookOptions];\n\n function useInfiniteQuery(...args: InfiniteQueryArgs) {\n const infiniteQueryClient = useQueryClient();\n\n let infiniteOptions: Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n };\n\n if (args.length === 1 && 'initialData' in args[0] && args[0].initialData) {\n const { initialData } = args[0];\n infiniteOptions = {\n ...args[0],\n initialData: {\n pages: initialData.pages.map((page) => ({\n ...page,\n data: page.data.map((item) => {\n infiniteQueryClient.setQueryData(\n useQueryHook.getKey([item.id as DeepPartial<IdType>]),\n item,\n );\n\n return item.id;\n }),\n })),\n pageParams: initialData.pageParams,\n },\n } as Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n };\n } else {\n infiniteOptions =\n (args[0] as Parameters<typeof infiniteQueryHook>[0] & {\n select?: undefined;\n }) ?? {};\n }\n\n const result = infiniteQueryHook(infiniteOptions);\n useQueriesSubscribeToReload(\n [\n hashKey(\n infiniteQueryHook.getKey(\n infiniteOptions.variables as Parameters<(typeof infiniteQueryHook)['getKey']>[0],\n ),\n ),\n ],\n result.isFetching,\n result.error,\n );\n\n const ids = useMemo(() => result.data?.pages.flatMap((page) => page.data) ?? [], [result.data?.pages]);\n\n // When staleTime is same as filterStaleTime, then the queries will run at the same time as the filter\n // Because of this, use staleTime: Inifinity to prevent the queries from running again. The result of the\n // filter will be saved inside the queryClient, so the queries will be updated with the new data.\n // Same goes for reloading with context.\n // Other usages of useManyHook are not affected by this.\n const manyData = useManyHook(ids, { staleTime: Infinity, reloadWithContext: false });\n const indexedData = useIndexedData(manyData);\n\n const pages = useMemo(() => {\n return result.data\n ? result.data.pages.map((page) => ArrayHelper.noUndefined(page.data.map((id) => indexedData[id])))\n : [];\n }, [indexedData, result.data]);\n\n const data = !result.data ? undefined : { ...result.data, pages };\n type TransformedResult = Omit<typeof result, 'data'> & {\n data: typeof data;\n };\n\n return new Proxy(result, {\n get(target, property, receiver) {\n if (property === 'data') {\n return data;\n }\n\n return Reflect.get(target, property, receiver);\n },\n }) as TransformedResult;\n }\n\n return hoistReactQueryKitAttributes(infiniteQueryHook, useInfiniteQuery);\n }\n\n const useMany = hoistReactQueryKitAttributes(useQueryHook, useManyHook);\n const useOne = hoistReactQueryKitAttributes(useQueryHook, useOneHook);\n return { useMany, useOne, generateFilter, generateInfiniteQuery };\n}\n"]}
@@ -12,7 +12,7 @@ export declare function generateNestedIdQuery<IdType extends number | string | s
12
12
  generateFilter: <Func extends (...args: any[]) => Type[] | Promise<Type[]>, FuncArguments extends Parameters<Func>["length"] extends 0 ? void : Parameters<Func> = Parameters<Func>["length"] extends 0 ? void : Parameters<Func>, ResultAsArray extends boolean = false>(filterFunc: Func, additionalOptions?: (Omit<import("react-query-kit").CreateQueryOptions<IdType[], [FuncArguments], Error>, "queryKey" | "fetcher"> & {
13
13
  resultAsArray?: ResultAsArray | undefined;
14
14
  subKey?: string;
15
- }) | undefined) => import("react-query-kit").ExposeMethods<IdType[], void | (void & [filter: FuncArguments]), Error, never> & (<Args_1 extends FuncArguments extends void ? [] : FuncArguments>(args: Args_1, filterQueryOptions?: Omit<import("react-query-kit").CreateQueryOptions<Type[], [FuncArguments], Error>, "queryKey" | "fetcher" | "variables">) => {
15
+ }) | undefined) => import("react-query-kit").ExposeMethods<IdType[], void | (void & [filter: FuncArguments]), Error, never> & (<Args_1 extends FuncArguments extends void ? [] : FuncArguments>(...[args, filterQueryOptions]: (FuncArguments extends void ? [] : FuncArguments) extends [] ? [args?: Args_1 | undefined, filterQueryOptions?: Omit<import("react-query-kit").CreateQueryOptions<Type[], [FuncArguments], Error>, "queryKey" | "fetcher" | "variables"> | undefined] : [args: Args_1, filterQueryOptions?: Omit<import("react-query-kit").CreateQueryOptions<Type[], [FuncArguments], Error>, "queryKey" | "fetcher" | "variables"> | undefined]) => {
16
16
  result: ResultAsArray extends true ? import("@tanstack/react-query").UseQueryResult<Type, Error>[] : Partial<Record<IdType, import("@tanstack/react-query").UseQueryResult<Type, Error> | undefined>>;
17
17
  isFetching: boolean;
18
18
  }) & {
@@ -1 +1 @@
1
- {"version":3,"file":"generateQuery.js","sourceRoot":"","sources":["../src/generateQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAGvF,MAAM,UAAU,aAAa,CAU3B,UAAkB,EAAE,OAAa,EAAE,iBAAyC;IAC1E,MAAM,SAAS,GAAG,WAAW,iBACzB,QAAQ,EAAE,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,OAAO,EAAE,CAAC;QACrB,CAAC,EACD,oBAAoB,EAAE,CAAC,IACpB,iBAAiB,EACtB,CAAC;IAKH,SAAS,OAAO,CAAuB,GAAG,OAAY;;QAWlD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAsB,CAAC,CAAC;QAC1D,2BAA2B,CACvB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,SAAwD,CAAC,CAAC,CAAC,EACjG,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,KAAK,CACf,CAAC;QAGF,OAAO,MAEN,CAAC;IACN,CAAC;IAED,OAAO,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC","sourcesContent":["import { createQuery } from 'react-query-kit';\nimport { hashKey } from '@tanstack/react-query';\nimport { hoistReactQueryKitAttributes } from './hoistReactQueryKitAttributes';\nimport { useQueriesSubscribeToReload } from './QueryContext/useQuerySubscribeToReload';\nimport type { CreateQueryOptions, QueryHookResult } from 'react-query-kit';\n\nexport function generateQuery<\n Func extends (...args: any[]) => Promise<any> | any,\n FuncArguments extends Parameters<Func>['length'] extends 0\n ? void\n : Parameters<Func> = Parameters<Func>['length'] extends 0 ? void : Parameters<Func>,\n FuncReturnType extends Awaited<ReturnType<Func>> = Awaited<ReturnType<Func>>,\n AdditionalOptionsType extends Omit<\n CreateQueryOptions<FuncReturnType, FuncArguments>,\n 'queryKey' | 'fetcher'\n > = Omit<CreateQueryOptions<FuncReturnType, FuncArguments>, 'queryKey' | 'fetcher'>,\n>(primaryKey: string, queryFn: Func, additionalOptions?: AdditionalOptionsType) {\n const queryHook = createQuery<FuncReturnType, FuncArguments>({\n queryKey: [primaryKey],\n fetcher: (variables) => {\n if (Array.isArray(variables)) {\n return queryFn(...variables);\n }\n return queryFn();\n },\n initialDataUpdatedAt: 0,\n ...additionalOptions,\n });\n\n type QueryHookArgument = Parameters<typeof queryHook>[0];\n type HookArgs = FuncArguments extends void ? [] | [QueryHookArgument] : [QueryHookArgument];\n\n function useHook<Arg extends HookArgs>(...options: Arg) {\n type DataReturnType = Arg extends [\n {\n initialData: FuncReturnType | (() => FuncReturnType);\n },\n ]\n ? FuncReturnType\n : AdditionalOptionsType extends { initialData: FuncReturnType | (() => FuncReturnType) }\n ? FuncReturnType\n : FuncReturnType | undefined;\n\n const result = queryHook(options[0] as QueryHookArgument);\n useQueriesSubscribeToReload(\n [hashKey(queryHook.getKey(options[0]?.variables as Parameters<(typeof queryHook)['getKey']>[0]))],\n result.isFetching,\n result.error,\n );\n\n type Return = Arg extends [{ select: (...arg: any[]) => any }] ? ReturnType<Arg[0]['select']> : DataReturnType;\n return result as QueryHookResult<Return, Error> & {\n data: Return;\n };\n }\n\n return hoistReactQueryKitAttributes(queryHook, useHook);\n}\n"]}
1
+ {"version":3,"file":"generateQuery.js","sourceRoot":"","sources":["../src/generateQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAGvF,MAAM,UAAU,aAAa,CAU3B,UAAkB,EAAE,OAAa,EAAE,iBAAyC;IAC1E,MAAM,SAAS,GAAG,WAAW,iBACzB,QAAQ,EAAE,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;YACjC,CAAC;YAED,OAAO,OAAO,EAAE,CAAC;QACrB,CAAC,EACD,oBAAoB,EAAE,CAAC,IACpB,iBAAiB,EACtB,CAAC;IAKH,SAAS,OAAO,CAAuB,GAAG,OAAY;;QAWlD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAsB,CAAC,CAAC;QAC1D,2BAA2B,CACvB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,SAAwD,CAAC,CAAC,CAAC,EACjG,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,KAAK,CACf,CAAC;QAGF,OAAO,MAEN,CAAC;IACN,CAAC;IAED,OAAO,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC","sourcesContent":["import { createQuery } from 'react-query-kit';\nimport { hashKey } from '@tanstack/react-query';\nimport { hoistReactQueryKitAttributes } from './hoistReactQueryKitAttributes';\nimport { useQueriesSubscribeToReload } from './QueryContext/useQuerySubscribeToReload';\nimport type { CreateQueryOptions, QueryHookResult } from 'react-query-kit';\n\nexport function generateQuery<\n Func extends (...args: any[]) => Promise<any> | any,\n FuncArguments extends Parameters<Func>['length'] extends 0\n ? void\n : Parameters<Func> = Parameters<Func>['length'] extends 0 ? void : Parameters<Func>,\n FuncReturnType extends Awaited<ReturnType<Func>> = Awaited<ReturnType<Func>>,\n AdditionalOptionsType extends Omit<\n CreateQueryOptions<FuncReturnType, FuncArguments>,\n 'queryKey' | 'fetcher'\n > = Omit<CreateQueryOptions<FuncReturnType, FuncArguments>, 'queryKey' | 'fetcher'>,\n>(primaryKey: string, queryFn: Func, additionalOptions?: AdditionalOptionsType) {\n const queryHook = createQuery<FuncReturnType, FuncArguments>({\n queryKey: [primaryKey],\n fetcher: (variables) => {\n if (Array.isArray(variables)) {\n return queryFn(...variables);\n }\n\n return queryFn();\n },\n initialDataUpdatedAt: 0,\n ...additionalOptions,\n });\n\n type QueryHookArgument = Parameters<typeof queryHook>[0];\n type HookArgs = FuncArguments extends void ? [] | [QueryHookArgument] : [QueryHookArgument];\n\n function useHook<Arg extends HookArgs>(...options: Arg) {\n type DataReturnType = Arg extends [\n {\n initialData: FuncReturnType | (() => FuncReturnType);\n },\n ]\n ? FuncReturnType\n : AdditionalOptionsType extends { initialData: FuncReturnType | (() => FuncReturnType) }\n ? FuncReturnType\n : FuncReturnType | undefined;\n\n const result = queryHook(options[0] as QueryHookArgument);\n useQueriesSubscribeToReload(\n [hashKey(queryHook.getKey(options[0]?.variables as Parameters<(typeof queryHook)['getKey']>[0]))],\n result.isFetching,\n result.error,\n );\n\n type Return = Arg extends [{ select: (...arg: any[]) => any }] ? ReturnType<Arg[0]['select']> : DataReturnType;\n return result as QueryHookResult<Return, Error> & {\n data: Return;\n };\n }\n\n return hoistReactQueryKitAttributes(queryHook, useHook);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"formatInitialPage.js","sourceRoot":"","sources":["../../src/hooks/formatInitialPage.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAO,IAAW,EAAE,YAAiB,CAAC;IACnE,IAAI,IAAI,EAAE,CAAC;QACP,OAAO;YACH,WAAW,EAAE;gBACT,KAAK,EAAE,CAAC,IAAI,CAAC;gBACb,UAAU,EAAE,CAAC,SAAS,CAAC;aAC1B;YACD,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE;SACnC,CAAC;IACN,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC","sourcesContent":["export function formatInitialPage<Type>(data?: Type, pageParam: any = 1) {\n if (data) {\n return {\n initialData: {\n pages: [data],\n pageParams: [pageParam],\n },\n initialDataUpdatedAt: Date.now(),\n };\n }\n return {};\n}\n"]}
1
+ {"version":3,"file":"formatInitialPage.js","sourceRoot":"","sources":["../../src/hooks/formatInitialPage.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAO,IAAW,EAAE,YAAiB,CAAC;IACnE,IAAI,IAAI,EAAE,CAAC;QACP,OAAO;YACH,WAAW,EAAE;gBACT,KAAK,EAAE,CAAC,IAAI,CAAC;gBACb,UAAU,EAAE,CAAC,SAAS,CAAC;aAC1B;YACD,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE;SACnC,CAAC;IACN,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC","sourcesContent":["export function formatInitialPage<Type>(data?: Type, pageParam: any = 1) {\n if (data) {\n return {\n initialData: {\n pages: [data],\n pageParams: [pageParam],\n },\n initialDataUpdatedAt: Date.now(),\n };\n }\n\n return {};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useInfiniteScrolling.js","sourceRoot":"","sources":["../../src/hooks/useInfiniteScrolling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,YAA8C;IACjG,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;;QACX,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,SAAS,CAAA,IAAI,cAAc,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,GAAG,IAAI,oBAAoB,CACvC,CAAC,OAAO,EAAE,EAAE;gBACR,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;oBAC5B,YAAY,EAAE,CAAC;gBACnB,CAAC;YACL,CAAC,EACD;gBACI,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,OAAO,CAAC,OAAO;aACxB,CACJ,CAAC;QACN,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAoB,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE;;YACR,MAAA,QAAQ,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;QACnC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7B,OAAO,OAAO,CAAC;AACnB,CAAC","sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function useInfiniteScrolling(numItems: number, loadNextPage: () => unknown | Promise<unknown>) {\n const htmlRef = useRef<HTMLElement>(null);\n const observer = useRef<IntersectionObserver>(null);\n const loadedNumItems = useRef(0);\n\n useEffect(() => {\n if (!htmlRef.current?.lastChild || loadedNumItems.current === numItems) {\n return undefined;\n }\n\n loadedNumItems.current = numItems;\n if (!observer.current) {\n observer.current = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n loadNextPage();\n }\n },\n {\n threshold: 0,\n rootMargin: '100px',\n root: htmlRef.current,\n },\n );\n }\n observer.current.observe(htmlRef.current.lastChild as Element);\n return () => {\n observer.current?.disconnect();\n };\n }, [loadNextPage, numItems]);\n\n return htmlRef;\n}\n"]}
1
+ {"version":3,"file":"useInfiniteScrolling.js","sourceRoot":"","sources":["../../src/hooks/useInfiniteScrolling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,YAA8C;IACjG,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;;QACX,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,SAAS,CAAA,IAAI,cAAc,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,GAAG,IAAI,oBAAoB,CACvC,CAAC,OAAO,EAAE,EAAE;gBACR,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;oBAC5B,YAAY,EAAE,CAAC;gBACnB,CAAC;YACL,CAAC,EACD;gBACI,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,OAAO,CAAC,OAAO;aACxB,CACJ,CAAC;QACN,CAAC;QAED,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAoB,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE;;YACR,MAAA,QAAQ,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;QACnC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7B,OAAO,OAAO,CAAC;AACnB,CAAC","sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function useInfiniteScrolling(numItems: number, loadNextPage: () => unknown | Promise<unknown>) {\n const htmlRef = useRef<HTMLElement>(null);\n const observer = useRef<IntersectionObserver>(null);\n const loadedNumItems = useRef(0);\n\n useEffect(() => {\n if (!htmlRef.current?.lastChild || loadedNumItems.current === numItems) {\n return undefined;\n }\n\n loadedNumItems.current = numItems;\n if (!observer.current) {\n observer.current = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n loadNextPage();\n }\n },\n {\n threshold: 0,\n rootMargin: '100px',\n root: htmlRef.current,\n },\n );\n }\n\n observer.current.observe(htmlRef.current.lastChild as Element);\n return () => {\n observer.current?.disconnect();\n };\n }, [loadNextPage, numItems]);\n\n return htmlRef;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useInitialData.js","sourceRoot":"","sources":["../../src/hooks/useInitialData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,UAAU,cAAc,CAAO,IAAsB;IACvD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,IAAI,IAAI,EAAE,CAAC;QACP,OAAO;YACH,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,GAAG;SAC5B,CAAC;IACN,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC","sourcesContent":["import { DateHelper } from '@ainias42/js-helper';\nimport { useState } from 'react';\n\nexport function useInitialData<Type>(data: Type | undefined) {\n const [now] = useState(() => DateHelper.now());\n if (data) {\n return {\n initialData: data,\n initialDataUpdatedAt: now,\n };\n }\n return {};\n}\n"]}
1
+ {"version":3,"file":"useInitialData.js","sourceRoot":"","sources":["../../src/hooks/useInitialData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,UAAU,cAAc,CAAO,IAAsB;IACvD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,IAAI,IAAI,EAAE,CAAC;QACP,OAAO;YACH,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,GAAG;SAC5B,CAAC;IACN,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC","sourcesContent":["import { DateHelper } from '@ainias42/js-helper';\nimport { useState } from 'react';\n\nexport function useInitialData<Type>(data: Type | undefined) {\n const [now] = useState(() => DateHelper.now());\n if (data) {\n return {\n initialData: data,\n initialDataUpdatedAt: now,\n };\n }\n\n return {};\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainias42/tanstack-ids",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -33,8 +33,8 @@
33
33
  "url": "gitea@git.silas.link:Ainias/libraries.git"
34
34
  },
35
35
  "dependencies": {
36
- "@ainias42/react-bootstrap-mobile": "1.2.5",
37
- "@ainias42/config": "1.2.1",
36
+ "@ainias42/react-bootstrap-mobile": "^1.2.9",
37
+ "@ainias42/config": "^1.2.3",
38
38
  "@ainias42/js-helper": ">=0.9.0",
39
39
  "@tanstack/react-query": "^5.101.0",
40
40
  "@yornaath/batshit": "^0.14.0",