@alistt69/create-api 0.1.0

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/createApi.d.ts +23 -0
  8. package/dist/lib/createApi.d.ts.map +1 -0
  9. package/dist/lib/createApi.js +38 -0
  10. package/dist/lib/createApi.js.map +1 -0
  11. package/dist/lib/createApi.test.d.ts +2 -0
  12. package/dist/lib/createApi.test.d.ts.map +1 -0
  13. package/dist/lib/createApi.test.js +231 -0
  14. package/dist/lib/createApi.test.js.map +1 -0
  15. package/dist/lib/getHookName.d.ts +3 -0
  16. package/dist/lib/getHookName.d.ts.map +1 -0
  17. package/dist/lib/getHookName.js +5 -0
  18. package/dist/lib/getHookName.js.map +1 -0
  19. package/dist/lib/makeLazyQueryHook.d.ts +10 -0
  20. package/dist/lib/makeLazyQueryHook.d.ts.map +1 -0
  21. package/dist/lib/makeLazyQueryHook.js +161 -0
  22. package/dist/lib/makeLazyQueryHook.js.map +1 -0
  23. package/dist/lib/makeMutationHook.d.ts +9 -0
  24. package/dist/lib/makeMutationHook.d.ts.map +1 -0
  25. package/dist/lib/makeMutationHook.js +82 -0
  26. package/dist/lib/makeMutationHook.js.map +1 -0
  27. package/dist/lib/makeQueryHook.d.ts +11 -0
  28. package/dist/lib/makeQueryHook.d.ts.map +1 -0
  29. package/dist/lib/makeQueryHook.js +117 -0
  30. package/dist/lib/makeQueryHook.js.map +1 -0
  31. package/dist/lib/typedCapitalize.d.ts +2 -0
  32. package/dist/lib/typedCapitalize.d.ts.map +1 -0
  33. package/dist/lib/typedCapitalize.js +4 -0
  34. package/dist/lib/typedCapitalize.js.map +1 -0
  35. package/dist/lib/typedObjectKeys.d.ts +2 -0
  36. package/dist/lib/typedObjectKeys.d.ts.map +1 -0
  37. package/dist/lib/typedObjectKeys.js +10 -0
  38. package/dist/lib/typedObjectKeys.js.map +1 -0
  39. package/dist/model/mutation.d.ts +5 -0
  40. package/dist/model/mutation.d.ts.map +1 -0
  41. package/dist/model/mutation.js +11 -0
  42. package/dist/model/mutation.js.map +1 -0
  43. package/dist/model/query.d.ts +5 -0
  44. package/dist/model/query.d.ts.map +1 -0
  45. package/dist/model/query.js +13 -0
  46. package/dist/model/query.js.map +1 -0
  47. package/dist/model/queryStore.d.ts +53 -0
  48. package/dist/model/queryStore.d.ts.map +1 -0
  49. package/dist/model/queryStore.js +276 -0
  50. package/dist/model/queryStore.js.map +1 -0
  51. package/dist/model/types.d.ts +187 -0
  52. package/dist/model/types.d.ts.map +1 -0
  53. package/dist/model/types.js +2 -0
  54. package/dist/model/types.js.map +1 -0
  55. package/package.json +53 -0
@@ -0,0 +1,161 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { useSyncExternalStore } from 'use-sync-external-store/shim';
3
+ import { clearInFlightQuery, clearQueryAbortController, clearQueryRunner, getInFlightQuery, initQueryState, registerQueryKey, scheduleCleanupIfUnused, setInFlightQuery, setQueryAbortController, setQueryRunner, setTagsForQueryKey, subscribeToQuery, unregisterQueryKey, updateQueryState, } from '../model/queryStore.js';
4
+ export function makeLazyQueryHook(endpointName, query, baseQuery, serializeArgs, providesTags, transformResponse, transformErrorResponse, keepUnusedDataFor = 0) {
5
+ return function useGeneratedLazyQuery() {
6
+ const [currentArg, setCurrentArg] = useState(undefined);
7
+ const currentKey = useMemo(() => {
8
+ if (currentArg === undefined) {
9
+ return null;
10
+ }
11
+ const serializedArg = serializeArgs
12
+ ? serializeArgs(currentArg)
13
+ : JSON.stringify(currentArg);
14
+ return `${endpointName}::${serializedArg}`;
15
+ }, [currentArg, endpointName, serializeArgs]);
16
+ const argRef = useRef(currentArg);
17
+ argRef.current = currentArg;
18
+ const ownedKeyRef = useRef(null);
19
+ const emptyState = {
20
+ data: undefined,
21
+ isLoading: false,
22
+ isFetching: false,
23
+ error: undefined,
24
+ fulfilledAt: undefined,
25
+ };
26
+ const state = useSyncExternalStore((onStoreChange) => {
27
+ if (!currentKey) {
28
+ return () => undefined;
29
+ }
30
+ return subscribeToQuery(currentKey, onStoreChange, keepUnusedDataFor);
31
+ }, () => {
32
+ if (!currentKey) {
33
+ return emptyState;
34
+ }
35
+ return initQueryState(currentKey);
36
+ }, () => {
37
+ if (!currentKey) {
38
+ return emptyState;
39
+ }
40
+ return initQueryState(currentKey);
41
+ });
42
+ const run = useCallback((arg) => {
43
+ const serializedArg = serializeArgs
44
+ ? serializeArgs(arg)
45
+ : JSON.stringify(arg);
46
+ const key = `${endpointName}::${serializedArg}`;
47
+ const existingPromise = getInFlightQuery(key);
48
+ if (existingPromise) {
49
+ return existingPromise;
50
+ }
51
+ const controller = new AbortController();
52
+ setQueryAbortController(key, controller);
53
+ let promise;
54
+ // eslint-disable-next-line prefer-const
55
+ promise = (async () => {
56
+ updateQueryState(key, (prevState) => ({
57
+ ...prevState,
58
+ error: undefined,
59
+ ...(prevState.data !== undefined
60
+ ? { isFetching: true, isLoading: false }
61
+ : { isLoading: true, isFetching: false }),
62
+ }));
63
+ try {
64
+ const request = query(arg);
65
+ const raw = await baseQuery({
66
+ ...request,
67
+ signal: controller.signal,
68
+ });
69
+ const data = transformResponse
70
+ ? transformResponse(raw, arg)
71
+ : raw;
72
+ if (!controller.signal.aborted) {
73
+ updateQueryState(key, (prevState) => ({
74
+ ...prevState,
75
+ data,
76
+ error: undefined,
77
+ fulfilledAt: Date.now(),
78
+ }));
79
+ if (providesTags) {
80
+ setTagsForQueryKey(key, providesTags(data, arg));
81
+ }
82
+ }
83
+ return data;
84
+ }
85
+ catch (error) {
86
+ if (controller.signal.aborted) {
87
+ throw error;
88
+ }
89
+ const transformedError = transformErrorResponse
90
+ ? transformErrorResponse(error, arg)
91
+ : error;
92
+ updateQueryState(key, (prevState) => ({
93
+ ...prevState,
94
+ data: undefined,
95
+ error: transformedError,
96
+ }));
97
+ throw transformedError;
98
+ }
99
+ finally {
100
+ if (!controller.signal.aborted) {
101
+ updateQueryState(key, (prevState) => ({
102
+ ...prevState,
103
+ isLoading: false,
104
+ isFetching: false,
105
+ }));
106
+ }
107
+ clearInFlightQuery(key, promise);
108
+ clearQueryAbortController(key, controller);
109
+ }
110
+ })();
111
+ setInFlightQuery(key, promise);
112
+ return promise;
113
+ }, [
114
+ baseQuery,
115
+ endpointName,
116
+ providesTags,
117
+ query,
118
+ serializeArgs,
119
+ transformErrorResponse,
120
+ transformResponse,
121
+ ]);
122
+ const trigger = useCallback((arg) => {
123
+ const serializedArg = serializeArgs
124
+ ? serializeArgs(arg)
125
+ : JSON.stringify(arg);
126
+ const nextKey = `${endpointName}::${serializedArg}`;
127
+ const prevOwnedKey = ownedKeyRef.current;
128
+ if (prevOwnedKey && prevOwnedKey !== nextKey) {
129
+ clearQueryRunner(prevOwnedKey);
130
+ unregisterQueryKey(endpointName, prevOwnedKey);
131
+ scheduleCleanupIfUnused(prevOwnedKey, keepUnusedDataFor);
132
+ }
133
+ registerQueryKey(endpointName, nextKey);
134
+ setQueryRunner(nextKey, () => run(arg));
135
+ ownedKeyRef.current = nextKey;
136
+ setCurrentArg(arg);
137
+ return run(arg);
138
+ }, [endpointName, keepUnusedDataFor, run, serializeArgs]);
139
+ const refetch = useCallback(() => {
140
+ if (argRef.current === undefined) {
141
+ return undefined;
142
+ }
143
+ return run(argRef.current);
144
+ }, [run]);
145
+ useEffect(() => {
146
+ if (!currentKey) {
147
+ return;
148
+ }
149
+ return () => {
150
+ clearQueryRunner(currentKey);
151
+ unregisterQueryKey(endpointName, currentKey);
152
+ scheduleCleanupIfUnused(currentKey, keepUnusedDataFor);
153
+ if (ownedKeyRef.current === currentKey) {
154
+ ownedKeyRef.current = null;
155
+ }
156
+ };
157
+ }, [currentKey, endpointName, keepUnusedDataFor]);
158
+ return [trigger, { ...state, refetch }];
159
+ };
160
+ }
161
+ //# sourceMappingURL=makeLazyQueryHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeLazyQueryHook.js","sourceRoot":"","sources":["../../src/lib/makeLazyQueryHook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { MutationTagsResolver } from '../model/types.js';
2
+ import { BaseQueryArgs, BaseQueryFn } from './createApi.js';
3
+ export declare function makeMutationHook<R, A, Raw = R>(query: (arg: A) => BaseQueryArgs, baseQuery: BaseQueryFn<Raw>, invalidates?: string[], invalidatesTags?: MutationTagsResolver<R, A>, transformResponse?: (response: Raw, arg: A) => R, transformErrorResponse?: (error: unknown, arg: A) => unknown): () => readonly [(arg: A) => Promise<R>, {
4
+ readonly reset: () => void;
5
+ readonly data?: R | undefined;
6
+ readonly isLoading: boolean;
7
+ readonly error?: unknown;
8
+ }];
9
+ //# sourceMappingURL=makeMutationHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeMutationHook.d.ts","sourceRoot":"","sources":["../../src/lib/makeMutationHook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,EAChC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,EAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,eAAe,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5C,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAChD,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,yBAmBhB,CAAC;;;;;GAyEhD"}
@@ -0,0 +1,82 @@
1
+ import { useCallback, useMemo, useRef, useState } from 'react';
2
+ import { getQueryKeysByTag, refetchQueriesByEndpoint, refetchQueryByKey } from '../model/queryStore.js';
3
+ export function makeMutationHook(query, baseQuery, invalidates, invalidatesTags, transformResponse, transformErrorResponse) {
4
+ return function useGeneratedMutation() {
5
+ const initialState = useMemo(() => ({
6
+ data: undefined,
7
+ isLoading: false,
8
+ error: undefined,
9
+ }), []);
10
+ const [state, setState] = useState(initialState);
11
+ const requestIdRef = useRef(0);
12
+ const reset = useCallback(() => {
13
+ setState((prevState) => ({
14
+ ...prevState,
15
+ ...initialState,
16
+ }));
17
+ }, [initialState]);
18
+ const trigger = useCallback(async (arg) => {
19
+ const requestId = requestIdRef.current + 1;
20
+ requestIdRef.current = requestId;
21
+ setState((prevState) => ({
22
+ ...prevState,
23
+ isLoading: true,
24
+ error: undefined,
25
+ data: undefined,
26
+ }));
27
+ try {
28
+ const request = query(arg);
29
+ const raw = await baseQuery(request);
30
+ const data = transformResponse ? transformResponse(raw, arg) : raw;
31
+ if (requestIdRef.current === requestId) {
32
+ setState({
33
+ data,
34
+ isLoading: false,
35
+ error: undefined,
36
+ });
37
+ }
38
+ invalidates?.forEach((endpointName) => {
39
+ refetchQueriesByEndpoint(endpointName);
40
+ });
41
+ if (invalidatesTags) {
42
+ const tags = invalidatesTags(data, arg);
43
+ const keys = new Set(tags.flatMap((tag) => getQueryKeysByTag(tag)));
44
+ keys.forEach((key) => {
45
+ refetchQueryByKey(key);
46
+ });
47
+ }
48
+ return data;
49
+ }
50
+ catch (error) {
51
+ const transformedError = transformErrorResponse
52
+ ? transformErrorResponse(error, arg)
53
+ : error;
54
+ if (requestIdRef.current === requestId) {
55
+ setState({
56
+ data: undefined,
57
+ isLoading: false,
58
+ error: transformedError,
59
+ });
60
+ }
61
+ throw transformedError;
62
+ }
63
+ finally {
64
+ if (requestIdRef.current === requestId) {
65
+ setState((prevState) => ({
66
+ ...prevState,
67
+ isLoading: false,
68
+ }));
69
+ }
70
+ }
71
+ }, [
72
+ baseQuery,
73
+ invalidates,
74
+ invalidatesTags,
75
+ query,
76
+ transformErrorResponse,
77
+ transformResponse,
78
+ ]);
79
+ return [trigger, { ...state, reset }];
80
+ };
81
+ }
82
+ //# sourceMappingURL=makeMutationHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeMutationHook.js","sourceRoot":"","sources":["../../src/lib/makeMutationHook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { QueryHookOptions } from '../model/types.js';
2
+ import { BaseQueryArgs, BaseQueryFn } from './createApi.js';
3
+ export declare function makeQueryHook<R, A, Raw = R>(endpointName: string, query: (arg: A) => BaseQueryArgs, baseQuery: BaseQueryFn<Raw>, serializeArgs?: (args: A) => string, providesTags?: (result: R, arg: A) => string[], transformResponse?: (response: Raw, arg: A) => R, transformErrorResponse?: (error: unknown, arg: A) => unknown, staleTime?: number, keepUnusedDataFor?: number): (arg: A, options?: QueryHookOptions) => {
4
+ refetch: () => Promise<R>;
5
+ data?: unknown;
6
+ isLoading: boolean;
7
+ isFetching: boolean;
8
+ error?: unknown;
9
+ fulfilledAt?: number;
10
+ };
11
+ //# sourceMappingURL=makeQueryHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeQueryHook.d.ts","sourceRoot":"","sources":["../../src/lib/makeQueryHook.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EACvC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,EAChC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,EAC3B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EACnC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,EAC9C,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAChD,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAC5D,SAAS,SAAI,EACb,iBAAiB,SAAI,IAEa,KAAK,CAAC,EAAE,UAAU,gBAAgB;;;;;;;EAgJvE"}
@@ -0,0 +1,117 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ import { useSyncExternalStore } from 'use-sync-external-store/shim';
3
+ import { clearInFlightQuery, clearQueryAbortController, clearQueryRunner, getInFlightQuery, initQueryState, registerQueryKey, setInFlightQuery, setQueryAbortController, setQueryRunner, setTagsForQueryKey, subscribeToQuery, unregisterQueryKey, updateQueryState, } from '../model/queryStore.js';
4
+ export function makeQueryHook(endpointName, query, baseQuery, serializeArgs, providesTags, transformResponse, transformErrorResponse, staleTime = 0, keepUnusedDataFor = 0) {
5
+ return function useGeneratedQuery(arg, options) {
6
+ const enabled = options?.enabled ?? true;
7
+ const refetchOnMount = options?.refetchOnMount ?? true;
8
+ const serializedArg = serializeArgs ? serializeArgs(arg) : JSON.stringify(arg);
9
+ const key = `${endpointName}::${serializedArg}`;
10
+ const argRef = useRef(arg);
11
+ argRef.current = arg;
12
+ const state = useSyncExternalStore((onStoreChange) => subscribeToQuery(key, onStoreChange, keepUnusedDataFor), () => initQueryState(key), () => initQueryState(key));
13
+ const run = useCallback(() => {
14
+ const existingPromise = getInFlightQuery(key);
15
+ if (existingPromise) {
16
+ return existingPromise;
17
+ }
18
+ const controller = new AbortController();
19
+ setQueryAbortController(key, controller);
20
+ let promise;
21
+ // eslint-disable-next-line prefer-const
22
+ promise = (async () => {
23
+ updateQueryState(key, (prevState) => ({
24
+ ...prevState,
25
+ error: undefined,
26
+ ...(prevState.data !== undefined
27
+ ? { isFetching: true, isLoading: false }
28
+ : { isLoading: true, isFetching: false }),
29
+ }));
30
+ try {
31
+ const request = query(argRef.current);
32
+ const raw = await baseQuery({
33
+ ...request,
34
+ signal: controller.signal,
35
+ });
36
+ const data = transformResponse ? transformResponse(raw, argRef.current) : raw;
37
+ if (!controller.signal.aborted) {
38
+ updateQueryState(key, (prevState) => ({
39
+ ...prevState,
40
+ data,
41
+ error: undefined,
42
+ fulfilledAt: Date.now(),
43
+ }));
44
+ if (providesTags) {
45
+ setTagsForQueryKey(key, providesTags(data, argRef.current));
46
+ }
47
+ }
48
+ return data;
49
+ }
50
+ catch (error) {
51
+ if (controller.signal.aborted) {
52
+ throw error;
53
+ }
54
+ const transformedError = transformErrorResponse
55
+ ? transformErrorResponse(error, argRef.current)
56
+ : error;
57
+ updateQueryState(key, (prevState) => ({
58
+ ...prevState,
59
+ data: undefined,
60
+ error: transformedError,
61
+ }));
62
+ throw transformedError;
63
+ }
64
+ finally {
65
+ if (!controller.signal.aborted) {
66
+ updateQueryState(key, (prevState) => ({
67
+ ...prevState,
68
+ isLoading: false,
69
+ isFetching: false,
70
+ }));
71
+ }
72
+ clearInFlightQuery(key, promise);
73
+ clearQueryAbortController(key, controller);
74
+ }
75
+ })();
76
+ setInFlightQuery(key, promise);
77
+ return promise;
78
+ }, [
79
+ baseQuery,
80
+ key,
81
+ providesTags,
82
+ query,
83
+ transformErrorResponse,
84
+ transformResponse,
85
+ ]);
86
+ const refetch = useCallback(() => {
87
+ return run();
88
+ }, [run]);
89
+ useEffect(() => {
90
+ registerQueryKey(endpointName, key);
91
+ setQueryRunner(key, run);
92
+ return () => {
93
+ clearQueryRunner(key);
94
+ unregisterQueryKey(endpointName, key);
95
+ };
96
+ }, [endpointName, key, run]);
97
+ useEffect(() => {
98
+ if (!enabled) {
99
+ return;
100
+ }
101
+ const currentState = initQueryState(key);
102
+ if (currentState.data === undefined || currentState.fulfilledAt === undefined) {
103
+ void run();
104
+ return;
105
+ }
106
+ if (!refetchOnMount) {
107
+ return;
108
+ }
109
+ const isFresh = Date.now() - currentState.fulfilledAt < staleTime;
110
+ if (!isFresh) {
111
+ void run();
112
+ }
113
+ }, [enabled, key, run, staleTime, refetchOnMount]);
114
+ return { ...state, refetch };
115
+ };
116
+ }
117
+ //# sourceMappingURL=makeQueryHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeQueryHook.js","sourceRoot":"","sources":["../../src/lib/makeQueryHook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function typedCapitalize<T extends string>(value: T): Capitalize<T>;
2
+ //# sourceMappingURL=typedCapitalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedCapitalize.d.ts","sourceRoot":"","sources":["../../src/lib/typedCapitalize.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEzE"}
@@ -0,0 +1,4 @@
1
+ export function typedCapitalize(value) {
2
+ return value.charAt(0).toUpperCase() + value.slice(1);
3
+ }
4
+ //# sourceMappingURL=typedCapitalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedCapitalize.js","sourceRoot":"","sources":["../../src/lib/typedCapitalize.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAmB,KAAQ;IACtD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAkB,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function typedObjectKeys<T extends Record<string, unknown>>(obj: T): Extract<keyof T, string>[];
2
+ //# sourceMappingURL=typedObjectKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedObjectKeys.d.ts","sourceRoot":"","sources":["../../src/lib/typedObjectKeys.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAUrG"}
@@ -0,0 +1,10 @@
1
+ export function typedObjectKeys(obj) {
2
+ const result = [];
3
+ for (const keys in obj) {
4
+ if (Object.prototype.hasOwnProperty.call(obj, keys)) {
5
+ result.push(keys);
6
+ }
7
+ }
8
+ return result;
9
+ }
10
+ //# sourceMappingURL=typedObjectKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedObjectKeys.js","sourceRoot":"","sources":["../../src/lib/typedObjectKeys.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAoC,GAAM;IACrE,MAAM,MAAM,GAA+B,EAAE,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { MutationBuilderDefinition } from './types.js';
2
+ type MutationSignature<R, A, Raw = R> = Omit<MutationBuilderDefinition<R, A, Raw>, 'type'>;
3
+ export declare function mutation<R, A, Raw = R>(signature: MutationSignature<R, A, Raw>): MutationBuilderDefinition<R, A, Raw>;
4
+ export {};
5
+ //# sourceMappingURL=mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../../src/model/mutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CASrH"}
@@ -0,0 +1,11 @@
1
+ export function mutation(signature) {
2
+ return {
3
+ type: 'mutation',
4
+ query: signature.query,
5
+ invalidates: signature.invalidates,
6
+ invalidatesTags: signature.invalidatesTags,
7
+ transformResponse: signature.transformResponse,
8
+ transformErrorResponse: signature.transformErrorResponse,
9
+ };
10
+ }
11
+ //# sourceMappingURL=mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../src/model/mutation.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,QAAQ,CAAgB,SAAuC;IAC3E,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,sBAAsB,EAAE,SAAS,CAAC,sBAAsB;KAC3D,CAAC;AACN,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { QueryBuilderDefinition } from './types.js';
2
+ type QuerySignature<R, A, Raw = R> = Omit<QueryBuilderDefinition<R, A, Raw>, 'type'>;
3
+ export declare function query<R, A, Raw = R>(signature: QuerySignature<R, A, Raw>): QueryBuilderDefinition<R, A, Raw>;
4
+ export {};
5
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/model/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAErF,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAW5G"}
@@ -0,0 +1,13 @@
1
+ export function query(signature) {
2
+ return {
3
+ type: 'query',
4
+ query: signature.query,
5
+ staleTime: signature.staleTime,
6
+ providesTags: signature.providesTags,
7
+ serializeArgs: signature.serializeArgs,
8
+ keepUnusedDataFor: signature.keepUnusedDataFor,
9
+ transformResponse: signature.transformResponse,
10
+ transformErrorResponse: signature.transformErrorResponse,
11
+ };
12
+ }
13
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/model/query.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,KAAK,CAAgB,SAAoC;IACrE,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,sBAAsB,EAAE,SAAS,CAAC,sBAAsB;KAC3D,CAAC;AACN,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { InferQueryState } from './types.js';
2
+ type QueryState = InferQueryState<unknown>;
3
+ export declare const querySubscriptionsCount: Map<string, number>;
4
+ export declare const queryEndpointByKey: Map<string, string>;
5
+ export declare const queryGcTimeouts: Map<string, NodeJS.Timeout>;
6
+ export declare function incrementQuerySubscriptions(key: string): number;
7
+ export declare function decrementQuerySubscriptions(key: string): number;
8
+ export declare const queryKeySerializers: Map<string, (arg: unknown) => string>;
9
+ export declare function setQueryKeySerializer(endpointName: string, serializer: (arg: unknown) => string): void;
10
+ export declare function getQueryKeyByEndpointArg(endpointName: string, arg: unknown): string;
11
+ export declare function getQueryData<R>(endpointName: string, arg: unknown): R | undefined;
12
+ export declare function setQueryData<R>(endpointName: string, arg: unknown, data: R): void;
13
+ export declare const queryListeners: Map<string, (() => void)[]>;
14
+ export declare function subscribeToQuery(key: string, listener: () => void, keepUnusedDataFor: number): () => void;
15
+ export declare function notifyQueryListeners(key: string): void;
16
+ export declare const queryStore: Map<string, QueryState>;
17
+ export declare function getQueryState(key: string): QueryState | undefined;
18
+ export declare function setQueryState(key: string, state: QueryState): void;
19
+ export declare function getQueryKey(endpointName: string, args: unknown): string;
20
+ export declare function initQueryState(key: string): QueryState;
21
+ export declare function updateQueryState(key: string, updater: (prevState: QueryState) => QueryState): QueryState;
22
+ export declare const inFlightQueries: Map<string, Promise<unknown>>;
23
+ export declare function getInFlightQuery<T = unknown>(key: string): Promise<T> | undefined;
24
+ export declare function setInFlightQuery<T = unknown>(key: string, promise: Promise<T>): void;
25
+ export declare function clearInFlightQuery(key: string, promise?: Promise<unknown>): void;
26
+ type QueryRunner = () => Promise<unknown> | undefined;
27
+ export declare const queryRunners: Map<string, QueryRunner>;
28
+ export declare function setQueryRunner(key: string, runner: QueryRunner): void;
29
+ export declare function getQueryRunner(key: string): QueryRunner | undefined;
30
+ export declare function refetchQueryByKey(key: string): Promise<unknown> | undefined;
31
+ export declare function refetchQueriesByEndpoint(endpointName: string): Promise<unknown>[];
32
+ export declare function clearQueryRunner(key: string): void;
33
+ export declare const queryKeysByEndpoint: Map<string, Set<string>>;
34
+ export declare function registerQueryKey(endpointName: string, key: string): void;
35
+ export declare function unregisterQueryKey(endpointName: string, key: string): void;
36
+ export declare function cleanupQuery(key: string): void;
37
+ export declare const queryKeysByTag: Map<string, Set<string>>;
38
+ export declare const queryTagsByKey: Map<string, Set<string>>;
39
+ export declare function clearTagsForQueryKey(key: string): void;
40
+ export declare function setTagsForQueryKey(key: string, tags: string[]): void;
41
+ export declare function getQueryKeysByTag(tag: string): string[];
42
+ export declare const queryTagResolvers: Map<string, (data: unknown, arg: unknown) => string[]>;
43
+ export declare function setQueryTagResolver(endpointName: string, resolver?: (data: unknown, arg: unknown) => string[]): void;
44
+ export declare function getQueryTagsForData(endpointName: string, data: unknown, arg: unknown): string[];
45
+ export declare function updateQueryData<R>(endpointName: string, arg: unknown, updater: (prevData: R | undefined) => R): R;
46
+ export declare const queryAbortControllers: Map<string, AbortController>;
47
+ export declare function setQueryAbortController(key: string, controller: AbortController): void;
48
+ export declare function getQueryAbortController(key: string): AbortController | undefined;
49
+ export declare function clearQueryAbortController(key: string, controller?: AbortController): void;
50
+ export declare function abortQueryByKey(key: string): void;
51
+ export declare function scheduleCleanupIfUnused(key: string, keepUnusedDataFor: number): void;
52
+ export {};
53
+ //# sourceMappingURL=queryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryStore.d.ts","sourceRoot":"","sources":["../../src/model/queryStore.ts"],"names":[],"mappings":"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"}