@ainias42/tanstack-ids 0.0.1 → 0.0.3

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.
Files changed (58) hide show
  1. package/.eslintrc.cjs +2 -1
  2. package/.prettierrc +1 -1
  3. package/dist/QueryContext/QueriesContextProvider.d.ts +1 -1
  4. package/dist/QueryContext/QueriesContextProvider.js +1 -1
  5. package/dist/QueryContext/QueriesContextProvider.js.map +1 -1
  6. package/dist/QueryContext/SubQueriesContext.d.ts +1 -1
  7. package/dist/QueryContext/SubQueriesContext.js +5 -5
  8. package/dist/QueryContext/SubQueriesContext.js.map +1 -1
  9. package/dist/QueryContext/useGenerateQueriesContextId.js +1 -1
  10. package/dist/QueryContext/useGenerateQueriesContextId.js.map +1 -1
  11. package/dist/QueryContext/useQueriesError.js +1 -1
  12. package/dist/QueryContext/useQueriesError.js.map +1 -1
  13. package/dist/QueryContext/useQueriesIsFetching.js +1 -1
  14. package/dist/QueryContext/useQueriesIsFetching.js.map +1 -1
  15. package/dist/QueryContext/useQueriesReload.js +1 -1
  16. package/dist/QueryContext/useQueriesReload.js.map +1 -1
  17. package/dist/QueryContext/useQueriesStore.js +17 -17
  18. package/dist/QueryContext/useQueriesStore.js.map +1 -1
  19. package/dist/QueryContext/useQuerySubscribeToReload.js +7 -6
  20. package/dist/QueryContext/useQuerySubscribeToReload.js.map +1 -1
  21. package/dist/QueryContext/useScopedQueriesIsFetching.js +1 -1
  22. package/dist/QueryContext/useScopedQueriesIsFetching.js.map +1 -1
  23. package/dist/generateIdsQuery.d.ts +129 -23
  24. package/dist/generateIdsQuery.js +89 -36
  25. package/dist/generateIdsQuery.js.map +1 -1
  26. package/dist/generateNestedIdQuery.d.ts +126 -21
  27. package/dist/generateNestedIdQuery.js +2 -2
  28. package/dist/generateNestedIdQuery.js.map +1 -1
  29. package/dist/generateQuery.js +1 -1
  30. package/dist/generateQuery.js.map +1 -1
  31. package/dist/hooks/formatInitialPage.d.ts +10 -0
  32. package/dist/hooks/formatInitialPage.js +13 -0
  33. package/dist/hooks/formatInitialPage.js.map +1 -0
  34. package/dist/hooks/useArrayData.js +1 -1
  35. package/dist/hooks/useArrayData.js.map +1 -1
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +6 -2
  41. package/src/QueryContext/QueriesContextProvider.tsx +2 -2
  42. package/src/QueryContext/SubQueriesContext.tsx +7 -7
  43. package/src/QueryContext/useGenerateQueriesContextId.ts +1 -1
  44. package/src/QueryContext/useQueriesError.ts +1 -1
  45. package/src/QueryContext/useQueriesIsFetching.ts +1 -1
  46. package/src/QueryContext/useQueriesReload.ts +1 -1
  47. package/src/QueryContext/useQueriesStore.ts +21 -21
  48. package/src/QueryContext/useQuerySubscribeToReload.ts +7 -6
  49. package/src/QueryContext/useScopedQueriesIsFetching.ts +1 -1
  50. package/src/generateIdsQuery.ts +213 -95
  51. package/src/generateNestedIdQuery.ts +4 -4
  52. package/src/generateQuery.ts +12 -13
  53. package/src/hoistReactQueryKitAttributes.ts +1 -1
  54. package/src/hooks/formatInitialPage.ts +12 -0
  55. package/src/hooks/useArrayData.ts +3 -3
  56. package/src/hooks/useIndexedData.ts +3 -3
  57. package/src/index.ts +1 -0
  58. package/tsconfig.json +3 -12
@@ -1,5 +1,5 @@
1
- import { type QueryClient, hashKey } from '@tanstack/react-query';
2
1
  import { generateIdsQuery } from '@/generateIdsQuery';
2
+ import { hashKey } from '@tanstack/react-query';
3
3
  import { noop } from '@/noop';
4
4
  import { useMemo } from 'react';
5
5
  import type { DeepPartial } from '@/types/DeepPartial';
@@ -9,7 +9,7 @@ export function generateNestedIdQuery<
9
9
  Type extends {
10
10
  id: IdType;
11
11
  },
12
- Args extends any[]
12
+ Args extends any[],
13
13
  >(key: string, fetcherFactory: (...args: Args) => (ids: IdType[]) => Promise<Type[]> | Type[]) {
14
14
  const factory = (...args: Args) => {
15
15
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -22,13 +22,13 @@ export function generateNestedIdQuery<
22
22
  factory.getFilterKey = (args: Args, variables?: any[]) => {
23
23
  const keyWithArgs = `${key}-${hashKey(args)}`;
24
24
  return generateIdsQuery(keyWithArgs, fetcherFactory(...args))
25
- .generateFilter(undefined as unknown as QueryClient, noop as (..._: any[]) => Type[])
25
+ .generateFilter(noop as (..._: any[]) => Type[])
26
26
  .getKey([variables]);
27
27
  };
28
28
 
29
29
  factory.getKey = <Variables extends [(DeepPartial<IdType> | undefined)?] | undefined = undefined>(
30
30
  args: Args,
31
- variables?: Variables
31
+ variables?: Variables,
32
32
  ) => {
33
33
  const keyWithArgs = `${key}-${hashKey(args)}`;
34
34
  return generateIdsQuery(keyWithArgs, fetcherFactory(...args)).useOne.getKey(variables);
@@ -13,19 +13,18 @@ export function generateQuery<
13
13
  AdditionalOptionsType extends Omit<
14
14
  CreateQueryOptions<FuncReturnType, FuncArguments>,
15
15
  'queryKey' | 'fetcher'
16
- > = Omit<CreateQueryOptions<FuncReturnType, FuncArguments>, 'queryKey' | 'fetcher'>
16
+ > = Omit<CreateQueryOptions<FuncReturnType, FuncArguments>, 'queryKey' | 'fetcher'>,
17
17
  >(primaryKey: string, queryFn: Func, additionalOptions?: AdditionalOptionsType) {
18
18
  const queryHook = createQuery<FuncReturnType, FuncArguments>({
19
19
  queryKey: [primaryKey],
20
- fetcher: variables => {
20
+ fetcher: (variables) => {
21
21
  if (Array.isArray(variables)) {
22
22
  return queryFn(...variables);
23
- }
24
- return queryFn();
25
-
23
+ }
24
+ return queryFn();
26
25
  },
27
26
  initialDataUpdatedAt: 0,
28
- ...additionalOptions
27
+ ...additionalOptions,
29
28
  });
30
29
 
31
30
  type QueryHookArgument = Parameters<typeof queryHook>[0];
@@ -33,20 +32,20 @@ export function generateQuery<
33
32
 
34
33
  function useHook<Arg extends HookArgs>(...options: Arg) {
35
34
  type DataReturnType = Arg extends [
36
- {
37
- initialData: FuncReturnType | (() => FuncReturnType);
38
- }
39
- ]
35
+ {
36
+ initialData: FuncReturnType | (() => FuncReturnType);
37
+ },
38
+ ]
40
39
  ? FuncReturnType
41
40
  : AdditionalOptionsType extends { initialData: FuncReturnType | (() => FuncReturnType) }
42
- ? FuncReturnType
43
- : FuncReturnType | undefined;
41
+ ? FuncReturnType
42
+ : FuncReturnType | undefined;
44
43
 
45
44
  const result = queryHook(options[0] as QueryHookArgument);
46
45
  useQueriesSubscribeToReload(
47
46
  [hashKey(queryHook.getKey(options[0]?.variables as Parameters<(typeof queryHook)['getKey']>[0]))],
48
47
  result.isFetching,
49
- result.error
48
+ result.error,
50
49
  );
51
50
 
52
51
  type Return = Arg extends [{ select: (...arg: any[]) => any }] ? ReturnType<Arg[0]['select']> : DataReturnType;
@@ -2,7 +2,7 @@ import type { ExposeMethods } from 'react-query-kit/build/lib/types';
2
2
 
3
3
  export function hoistReactQueryKitAttributes<ReturnType, HookArgs, ToFunc extends (...args: any) => any, Error>(
4
4
  from: ExposeMethods<ReturnType, HookArgs, Error>,
5
- to: ToFunc
5
+ to: ToFunc,
6
6
  ) {
7
7
  const partialHook: Partial<ExposeMethods<ReturnType, HookArgs, Error>> & ToFunc = to;
8
8
  const hoistedOptions = ['fetcher', 'getKey', 'queryKeyHashFn', 'getOptions'] as const;
@@ -0,0 +1,12 @@
1
+ export function formatInitialPage<Type>(data?: Type, pageParam: any = 1) {
2
+ if (data) {
3
+ return {
4
+ initialData: {
5
+ pages: [data],
6
+ pageParams: [pageParam],
7
+ },
8
+ initialDataUpdatedAt: Date.now(),
9
+ };
10
+ }
11
+ return {};
12
+ }
@@ -7,13 +7,13 @@ export function useArrayData<DataType>(
7
7
  | {
8
8
  data: DataType;
9
9
  }[]
10
- | URecord<any, { data: DataType | undefined }>
10
+ | URecord<any, { data: DataType | undefined }>,
11
11
  ): Exclude<DataType, undefined>[] {
12
12
  return useMemo(
13
13
  () =>
14
14
  ArrayHelper.noUndefined(
15
- (Array.isArray(result) ? result : ObjectHelper.values(result)).map(data => data.data)
15
+ (Array.isArray(result) ? result : ObjectHelper.values(result)).map((data) => data.data),
16
16
  ),
17
- [result]
17
+ [result],
18
18
  );
19
19
  }
@@ -8,7 +8,7 @@ export function useIndexedData<DataType, IndexType extends number | string | sym
8
8
  {
9
9
  data: DataType | undefined;
10
10
  }
11
- >
11
+ >,
12
12
  ) {
13
13
  return useMemo(
14
14
  () =>
@@ -17,8 +17,8 @@ export function useIndexedData<DataType, IndexType extends number | string | sym
17
17
  acc[key] = data.data;
18
18
  return acc;
19
19
  },
20
- {} as URecord<IndexType, DataType>
20
+ {} as URecord<IndexType, DataType>,
21
21
  ),
22
- [result]
22
+ [result],
23
23
  );
24
24
  }
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ export * from './generateQuery';
4
4
  export * from './hoistReactQueryKitAttributes';
5
5
  export * from './noop';
6
6
  export * from './NotFoundError';
7
+ export * from './hooks/formatInitialPage';
7
8
  export * from './hooks/useArrayData';
8
9
  export * from './hooks/useIndexedData';
9
10
  export * from './QueryContext/QueriesContext';
package/tsconfig.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "@ainias42/typescript-config",
2
+ "extends": "@ainias42/config/tsconfig.json",
3
3
  "compilerOptions": {
4
4
  "jsx": "react",
5
5
  "outDir": "./dist",
@@ -21,15 +21,6 @@
21
21
  ],
22
22
  "include": [
23
23
  "src/**/*.tsx",
24
- "src/**/*.ts",
25
- ],
26
- "tsc-alias": {
27
- "resolveFullPaths": true,
28
- "replacers": {
29
- "scssReplacer": {
30
- "enabled": true,
31
- "file": "../tscReplacers/scssReplacer.cjs"
32
- }
33
- }
34
- }
24
+ "src/**/*.ts"
25
+ ]
35
26
  }