Skip to content

Commit 0c172ff

Browse files
committed
chore: adding lib folder
1 parent fc9f580 commit 0c172ff

10 files changed

Lines changed: 603 additions & 0 deletions

lib/bsconfig.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "@rescriptbr/react-query",
3+
"version": "0.0.1",
4+
"sources": {
5+
"dir": "src",
6+
"subdirs": true
7+
},
8+
"package-specs": [
9+
{
10+
"module": "es6",
11+
"in-source": true
12+
}
13+
],
14+
"reason": {
15+
"react-jsx": 3
16+
},
17+
"suffix": ".bs.js",
18+
"bs-dependencies": ["@rescript/react"]
19+
}

lib/package.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"name": "@rescriptbr/ancestor",
3+
"version": "0.0.1",
4+
"main": "index.js",
5+
"license": "MIT",
6+
"keywoprds": [
7+
"rescript",
8+
"rescript-react",
9+
"rescript-react-query"
10+
],
11+
"devDependencies": {
12+
"@rescript/react": "0.10.3",
13+
"react": "17.0.2",
14+
"react-dom": "17.0.2",
15+
"rescript": "9.1.4"
16+
},
17+
"peerDependencies": {
18+
"@rescript/react": "0.10.3",
19+
"react": "17.0.2",
20+
"react-dom": "17.0.2"
21+
},
22+
"scripts": {
23+
"build": "rescript build -with-deps",
24+
"watch": "rescript build -w",
25+
"clean": "rescript clean",
26+
"format": "rescript format",
27+
"generate-interface": "bsc -i"
28+
},
29+
"dependencies": {}
30+
}

lib/src/ReactQuery.res

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module InfiniteQuery = ReactQuery_InfiniteQuery
2+
include ReactQuery_Query
3+
include ReactQuery_Mutation
4+
include ReactQuery_Hooks
5+
include ReactQuery_Utils
6+
include ReactQuery_Client

lib/src/ReactQuery_Client.res

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
type queryClientValue
2+
type fetchMeta
3+
4+
type notifyOnChangePropsKeys = [
5+
| #error
6+
| #isError
7+
| #isIdle
8+
| #isLoading
9+
| #isLoadingError
10+
| #isRefetchError
11+
| #isSuccess
12+
| #status
13+
| #tracked
14+
]
15+
16+
type infiniteQueryObserverResultProps = [
17+
| #error
18+
| #isError
19+
| #isIdle
20+
| #isLoading
21+
| #isLoadingError
22+
| #isRefetchError
23+
| #isSuccess
24+
| #status
25+
| #tracked
26+
]
27+
28+
type fetchContext
29+
30+
type queryBehavior = {onFetch: fetchContext => unit}
31+
32+
type getPreviousPageParamFunction<'data> = {
33+
firstPage: 'data,
34+
allPages: array<'data>,
35+
}
36+
37+
type getNextPageParamFunction<'data> = {
38+
lastPage: 'data,
39+
allPages: array<'data>,
40+
}
41+
42+
@deriving(abstract)
43+
type queryObserverOptions<'error, 'data, 'queryData, 'queryKey, 'pageParam> = {
44+
@optional retry: ReactQuery_Types.retryValue<'error>,
45+
@optional retryDelay: ReactQuery_Types.retryValue<'error>,
46+
@optional cacheTime: int,
47+
@optional isDataEqual: (option<'data>, 'data) => bool,
48+
@optional
49+
queryFn: ReactQuery_Types.queryFunctionContext<'queryKey, 'pageParam> => Js.Promise.t<'queryData>,
50+
@optional queryHash: string,
51+
@optional queryKey: 'queryKey,
52+
@optional queryKeyHashFn: 'queryKey => string,
53+
@optional initialData: unit => 'data,
54+
@optional initialDataUpdatedAt: unit => option<int>,
55+
@optional behavior: queryBehavior, // Revisar context type
56+
@optional structuralSharing: bool,
57+
@optional getPreviousPageParam: getPreviousPageParamFunction<'data>,
58+
@optional getNextPageParam: getNextPageParamFunction<'data>,
59+
@optional _defaulted: bool,
60+
@optional enabled: bool,
61+
@optional staleTime: int,
62+
@optional refetchInterval: ReactQuery_Types.refetchIntervalValue,
63+
@optional refetchIntervalInBackground: bool,
64+
@optional refetchOnWindowFocus: ReactQuery_Types.boolOrAlwaysValue,
65+
@optional refetchOnReconnect: ReactQuery_Types.boolOrAlwaysValue,
66+
@optional refetchOnMount: ReactQuery_Types.boolOrAlwaysValue,
67+
@optional retryOnMount: bool,
68+
@optional notifyOnChangeProps: array<notifyOnChangePropsKeys>,
69+
@optional notifyOnChangePropsExclusions: array<bool>,
70+
@optional onSuccess: 'data => unit,
71+
@optional onError: 'error => unit,
72+
@optional onSettled: (option<'data>, option<'error>) => unit,
73+
@optional useErrorBoundary: bool,
74+
@optional select: 'queryData => 'data,
75+
@optional suspense: bool,
76+
@optional keepPreviousData: bool,
77+
@optional placeholderData: ReactQuery_Types.placeholderDataValue,
78+
@optional optimisticResults: bool,
79+
}
80+
81+
type defaultOptions<'error, 'data, 'queryData, 'queryKey, 'pageParam> = {
82+
queries: option<queryObserverOptions<'error, 'data, 'queryData, 'queryKey, 'pageParam>>,
83+
}
84+
85+
type invalidateQueryFilter = {
86+
refetchActive: option<bool>,
87+
refetchInactive: option<bool>,
88+
}
89+
90+
type clientRefetchOptions = {throwOnError: option<bool>}
91+
92+
type invalidateQueryOptions<'queryKey> = {
93+
queryKey: option<'queryKey>,
94+
filters: option<invalidateQueryFilter>,
95+
refetchOptions: option<clientRefetchOptions>,
96+
}
97+
98+
type refetchQueriesOptions<'queryKey> = {
99+
queryKey: option<'queryKey>,
100+
filters: option<ReactQuery_Types.queryFilter<'queryKey>>,
101+
refetchOptions: option<clientRefetchOptions>,
102+
}
103+
104+
type cancelQueriesOptions<'queryKey> = {
105+
queryKey: option<'queryKey>,
106+
filters: option<ReactQuery_Types.queryFilter<'queryKey>>,
107+
}
108+
109+
type queryState<'queryData, 'queryError> = {
110+
data: option<'queryData>,
111+
dataUpdateCount: int,
112+
dataUpdatedAt: int,
113+
error: Js.Nullable.t<'queryError>,
114+
errorUpdateCount: int,
115+
errorUpdatedAt: int,
116+
fetchFailureCount: int,
117+
fetchMeta: fetchMeta,
118+
isFetching: bool,
119+
isInvalidated: bool,
120+
isPaused: bool,
121+
status: ReactQuery_Types.queryStatus,
122+
}
123+
124+
@deriving(abstract)
125+
type fetchQueryOptions<'queryKey, 'queryData, 'queryError, 'pageParam> = {
126+
@optional queryKey: 'queryKey,
127+
@optional
128+
queryFn: ReactQuery_Types.queryFunctionContext<'queryKey, 'pageParam> => Js.Promise.t<'queryData>,
129+
@optional retry: ReactQuery_Types.retryValue<'queryError>,
130+
@optional retryOnMount: bool,
131+
@optional retryDelay: ReactQuery_Types.retryDelayValue<'queryError>,
132+
@optional staleTime: ReactQuery_Types.timeValue,
133+
@optional queryKeyHashFn: 'queryKey => string,
134+
@optional refetchOnMount: ReactQuery_Types.boolOrAlwaysValue,
135+
@optional structuralSharing: bool,
136+
@optional initialData: 'queryData => 'queryData,
137+
@optional initialDataUpdatedAt: unit => int,
138+
}
139+
140+
type queryClient<'queryKey, 'queryData, 'queryError, 'pageParams> = {
141+
fetchQuery: fetchQueryOptions<'queryKey, 'queryData, 'queryError, 'pageParams> => Js.Promise.t<
142+
'queryData,
143+
>,
144+
fetchInfiniteQuery: fetchQueryOptions<
145+
'queryKey,
146+
'queryData,
147+
'queryError,
148+
'pageParams,
149+
> => Js.Promise.t<ReactQuery_Types.infiniteData<'queryData, 'pageParams>>,
150+
prefetchQuery: fetchQueryOptions<'queryKey, 'queryData, 'queryError, 'pageParams> => Js.Promise.t<
151+
unit,
152+
>,
153+
prefetchInfiniteQuery: fetchQueryOptions<
154+
'queryKey,
155+
'queryData,
156+
'queryError,
157+
'pageParams,
158+
> => Js.Promise.t<unit>,
159+
getQueryData: 'queryKey => option<'queryData>,
160+
setQueryData: ('queryKey, option<'queryData>) => 'queryData,
161+
getQueryState: (
162+
'queryKey,
163+
ReactQuery_Types.queryFilter<'queryKey>,
164+
) => queryState<'queryData, 'queryError>,
165+
setQueriesData: (
166+
ReactQuery_Types.queryDataKeyOrFilterValue<'queryKey>,
167+
option<'queryData> => 'queryData,
168+
) => unit,
169+
invalidateQueries: (
170+
option<ReactQuery_Types.queryFilter<'queryKey>>,
171+
option<clientRefetchOptions>,
172+
) => Js.Promise.t<unit>,
173+
refetchQueries: (
174+
option<ReactQuery_Types.queryFilter<'queryKey>>,
175+
option<clientRefetchOptions>,
176+
) => Js.Promise.t<unit>,
177+
cancelQueries: option<ReactQuery_Types.queryFilter<'queryKey>> => Js.Promise.t<unit>,
178+
removeQueries: option<ReactQuery_Types.queryFilter<'queryKey>> => Js.Promise.t<unit>,
179+
resetQueries: (
180+
option<ReactQuery_Types.queryFilter<'queryKey>>,
181+
option<clientRefetchOptions>,
182+
) => Js.Promise.t<unit>,
183+
isFetching: option<ReactQuery_Types.queryFilter<'queryKey>> => bool,
184+
isMutating: option<ReactQuery_Types.queryFilter<'queryKey>> => bool,
185+
// setDefaultOptions
186+
// getDefaultOptions
187+
// setQueryDefaults
188+
// getQueryDefaults
189+
// getQueryCache
190+
// setQueryCache
191+
// getMutationCache
192+
// setMutationCache
193+
clear: unit => unit,
194+
}
195+
196+
@module("react-query")
197+
external useQueryClient: unit => queryClient<'queryKey, 'queryData, 'queryError, 'pageParams> =
198+
"useQueryClient"
199+
200+
module Provider = {
201+
@new @module("react-query")
202+
external createClient: unit => queryClientValue = "QueryClient"
203+
204+
@module("react-query") @react.component
205+
external make: (
206+
~client: queryClientValue,
207+
~contextSharing: bool=?,
208+
~children: React.element,
209+
) => React.element = "QueryClientProvider"
210+
}

lib/src/ReactQuery_Hooks.res

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
type resetErrorBoundary = {reset: unit => unit}
2+
3+
@module("react-query")
4+
external useIsFetching: unit => bool = "useIsFetching"
5+
6+
@module("react-query") external useIsFetchingWithKeys: 'queryKey => bool = "useIsFetching"
7+
8+
@module("react-query")
9+
external useIsMutating: unit => bool = "useIsMutating"
10+
11+
@module("react-query") external useIsMutatingWithKeys: 'queryKey => bool = "useIsMutating"
12+
13+
@module("react-query")
14+
external useQueryErrorResetBoundary: unit => resetErrorBoundary = "useQueryErrorResetBoundary"
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
type inifiniteQueryFunctionContext<'queryKey, 'pageParam> = {
2+
queryKey: array<'queryKey>,
3+
pageParam: option<'pageParam>,
4+
}
5+
6+
@deriving(abstract)
7+
type infiniteQueryOptions<'queryKey, 'queryData, 'queryError, 'pageParam> = {
8+
@optional queryKey: 'queryKey,
9+
@optional
10+
queryFn: inifiniteQueryFunctionContext<'queryKey, 'pageParam> => Js.Promise.t<'queryData>,
11+
@optional enabled: bool,
12+
@optional retry: ReactQuery_Types.retryValue<'queryError>,
13+
@optional retryOnMount: bool,
14+
@optional retryDelay: ReactQuery_Types.retryDelayValue<'queryError>,
15+
@optional staleTime: ReactQuery_Types.timeValue,
16+
@optional queryKeyHashFn: 'queryKey => string,
17+
@optional refetchInterval: ReactQuery_Types.refetchIntervalValue,
18+
@optional refetchIntervalInBackground: bool,
19+
@optional refetchOnMount: ReactQuery_Types.boolOrAlwaysValue,
20+
@optional refetchOnWindowFocus: ReactQuery_Types.boolOrAlwaysValue,
21+
@optional refetchOnReconnect: ReactQuery_Types.boolOrAlwaysValue,
22+
@optional notifyOnChangeProps: ReactQuery_Types.notifyOnChangePropsValue,
23+
@optional notifyOnChangePropsExclusions: array<string>,
24+
@optional onSuccess: 'queryData => unit,
25+
@optional onError: 'queryError => unit,
26+
@optional onSettled: ('queryData, 'queryError) => unit,
27+
@optional select: 'queryData => 'queryData,
28+
@optional suspense: bool,
29+
@optional keepPreviousData: bool,
30+
@optional structuralSharing: bool,
31+
@optional useErrorBoundary: bool,
32+
@optional initialData: 'queryData => 'queryData,
33+
@optional initialDataUpdatedAt: unit => int,
34+
@optional placeholderData: unit => 'queryData,
35+
@optional getNextPageParam: ('pageParam, array<'pageParam>) => option<'pageParam>,
36+
@optional getPreviousPageParam: ('pageParam, array<'pageParam>) => option<'pageParam>,
37+
}
38+
39+
type rec infiniteQueryResult<'queryError, 'queryData, 'pageParam> = {
40+
status: ReactQuery_Types.queryStatus,
41+
isIdle: bool,
42+
isError: bool,
43+
isFetched: bool,
44+
isFetchedAfterMount: bool,
45+
isFetching: bool,
46+
isLoading: bool,
47+
isLoadingError: bool,
48+
isPlaceholderData: bool,
49+
isPreviousData: bool,
50+
isRefetchError: bool,
51+
isStale: bool,
52+
isSuccess: bool,
53+
dataUpdatedAt: int,
54+
error: Js.Nullable.t<'queryError>,
55+
errorUpdatedAt: int,
56+
failureCount: int,
57+
refetch: ReactQuery_Types.refetchOptions => Js.Promise.t<
58+
infiniteQueryResult<'queryError, 'queryData, 'pageParam>,
59+
>,
60+
remove: unit => unit,
61+
data: ReactQuery_Types.infiniteData<'queryData, 'pageParam>,
62+
isFetchingNextPage: bool,
63+
isFetchingPreviousPage: bool,
64+
//fetchNextPage: (options?: FetchNextPageOptions) => Promise<UseInfiniteQueryResult>
65+
//fetchPreviousPage: (options?: FetchPreviousPageOptions) => Promise<UseInfiniteQueryResult>
66+
hasNextPage: bool,
67+
hasPreviousPage: bool,
68+
}
69+
70+
@module("react-query")
71+
external useQuery: infiniteQueryOptions<
72+
'queryKey,
73+
'queryData,
74+
'queryError,
75+
'pageParam,
76+
> => infiniteQueryResult<'queryError, 'queryData, 'pageParam> = "useInfiniteQuery"

0 commit comments

Comments
 (0)