@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.
- package/.eslintrc.cjs +2 -1
- package/.prettierrc +1 -1
- package/dist/QueryContext/QueriesContextProvider.d.ts +1 -1
- package/dist/QueryContext/QueriesContextProvider.js +1 -1
- package/dist/QueryContext/QueriesContextProvider.js.map +1 -1
- package/dist/QueryContext/SubQueriesContext.d.ts +1 -1
- package/dist/QueryContext/SubQueriesContext.js +5 -5
- package/dist/QueryContext/SubQueriesContext.js.map +1 -1
- package/dist/QueryContext/useGenerateQueriesContextId.js +1 -1
- package/dist/QueryContext/useGenerateQueriesContextId.js.map +1 -1
- package/dist/QueryContext/useQueriesError.js +1 -1
- package/dist/QueryContext/useQueriesError.js.map +1 -1
- package/dist/QueryContext/useQueriesIsFetching.js +1 -1
- package/dist/QueryContext/useQueriesIsFetching.js.map +1 -1
- package/dist/QueryContext/useQueriesReload.js +1 -1
- package/dist/QueryContext/useQueriesReload.js.map +1 -1
- package/dist/QueryContext/useQueriesStore.js +17 -17
- package/dist/QueryContext/useQueriesStore.js.map +1 -1
- package/dist/QueryContext/useQuerySubscribeToReload.js +7 -6
- package/dist/QueryContext/useQuerySubscribeToReload.js.map +1 -1
- package/dist/QueryContext/useScopedQueriesIsFetching.js +1 -1
- package/dist/QueryContext/useScopedQueriesIsFetching.js.map +1 -1
- package/dist/generateIdsQuery.d.ts +129 -23
- package/dist/generateIdsQuery.js +89 -36
- package/dist/generateIdsQuery.js.map +1 -1
- package/dist/generateNestedIdQuery.d.ts +126 -21
- package/dist/generateNestedIdQuery.js +2 -2
- package/dist/generateNestedIdQuery.js.map +1 -1
- package/dist/generateQuery.js +1 -1
- package/dist/generateQuery.js.map +1 -1
- package/dist/hooks/formatInitialPage.d.ts +10 -0
- package/dist/hooks/formatInitialPage.js +13 -0
- package/dist/hooks/formatInitialPage.js.map +1 -0
- package/dist/hooks/useArrayData.js +1 -1
- package/dist/hooks/useArrayData.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -2
- package/src/QueryContext/QueriesContextProvider.tsx +2 -2
- package/src/QueryContext/SubQueriesContext.tsx +7 -7
- package/src/QueryContext/useGenerateQueriesContextId.ts +1 -1
- package/src/QueryContext/useQueriesError.ts +1 -1
- package/src/QueryContext/useQueriesIsFetching.ts +1 -1
- package/src/QueryContext/useQueriesReload.ts +1 -1
- package/src/QueryContext/useQueriesStore.ts +21 -21
- package/src/QueryContext/useQuerySubscribeToReload.ts +7 -6
- package/src/QueryContext/useScopedQueriesIsFetching.ts +1 -1
- package/src/generateIdsQuery.ts +213 -95
- package/src/generateNestedIdQuery.ts +4 -4
- package/src/generateQuery.ts +12 -13
- package/src/hoistReactQueryKitAttributes.ts +1 -1
- package/src/hooks/formatInitialPage.ts +12 -0
- package/src/hooks/useArrayData.ts +3 -3
- package/src/hooks/useIndexedData.ts +3 -3
- package/src/index.ts +1 -0
- 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(
|
|
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);
|
package/src/generateQuery.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
{
|
|
36
|
+
initialData: FuncReturnType | (() => FuncReturnType);
|
|
37
|
+
},
|
|
38
|
+
]
|
|
40
39
|
? FuncReturnType
|
|
41
40
|
: AdditionalOptionsType extends { initialData: FuncReturnType | (() => FuncReturnType) }
|
|
42
|
-
|
|
43
|
-
|
|
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;
|
|
@@ -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/
|
|
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
|
}
|