From 5e569ca971d02cc05998ac4282b9d938ac80ccbb Mon Sep 17 00:00:00 2001 From: vinibispo Date: Mon, 8 May 2023 09:01:58 -0300 Subject: [PATCH 1/5] docs: adding basic documentation --- docs/api-reference.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docs/api-reference.md diff --git a/docs/api-reference.md b/docs/api-reference.md new file mode 100644 index 0000000..b000680 --- /dev/null +++ b/docs/api-reference.md @@ -0,0 +1,8 @@ +# API Reference +--- +- [`ReactQuery.Provider.createClient(...)`](#reactqueryprovidercreateclient) + + +### `ReactQuery.Provider.createClient(...)` + +The function responsible to create the query client From b267ec24028b103d51242b91a1726e203703a472 Mon Sep 17 00:00:00 2001 From: vinibispo Date: Tue, 9 May 2023 08:49:14 -0300 Subject: [PATCH 2/5] docs: adding ReactQuery.Provider.make docs --- docs/api-reference.md | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/docs/api-reference.md b/docs/api-reference.md index b000680..e7e5894 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -1,8 +1,37 @@ # API Reference --- -- [`ReactQuery.Provider.createClient(...)`](#reactqueryprovidercreateclient) +- [`ReactQuery.Provider.createClient()`](#reactqueryprovidercreateclient) +- [`ReactQuery.Provider.make()`](#reactqueryprovidermake) -### `ReactQuery.Provider.createClient(...)` +### `ReactQuery.Provider.createClient()` The function responsible to create the query client + +Definition: + +```rescript +module Provider = { + let createClient: unit => queryClientValue +} +``` +Usage: +```rescript +let client = ReactQuery.Provider.createClient() +``` + +### `ReactQuery.Provider.make()` + +The React Context Provider responsible to hold all the react-query context + +Definition: + +```rescript +module Provider = { + let make: ( + ~client: queryClientValue, + ~contextSharing: bool, + ~children: React.element + ) => React.element +} +``` From 32949d65fa335a99c9a1bff4b470f4ef0fe41176 Mon Sep 17 00:00:00 2001 From: vinibispo Date: Tue, 9 May 2023 08:49:14 -0300 Subject: [PATCH 3/5] docs: adding ReactQuery.Provider.make docs --- docs/api-reference.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/docs/api-reference.md b/docs/api-reference.md index e7e5894..a2e7b5f 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -11,13 +11,13 @@ The function responsible to create the query client Definition: ```rescript -module Provider = { - let createClient: unit => queryClientValue -} + module Provider = { + let createClient: unit => queryClientValue + } ``` Usage: ```rescript -let client = ReactQuery.Provider.createClient() + let client = ReactQuery.Provider.createClient() ``` ### `ReactQuery.Provider.make()` @@ -27,11 +27,17 @@ The React Context Provider responsible to hold all the react-query context Definition: ```rescript -module Provider = { - let make: ( - ~client: queryClientValue, - ~contextSharing: bool, - ~children: React.element - ) => React.element -} + module Provider = { + let make: ( + ~client: queryClientValue, + ~contextSharing: bool, + ~children: React.element + ) => React.element + } +``` + +Usage: + +```rescript + children ``` From da7bace8b16dc53c120ef3fc8a8add3a6a1f9349 Mon Sep 17 00:00:00 2001 From: vinibispo Date: Tue, 9 May 2023 19:38:53 -0300 Subject: [PATCH 4/5] docs: removing namespace ReactQuery, and adding a bunch of hooks --- docs/api-reference.md | 97 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 90 insertions(+), 7 deletions(-) diff --git a/docs/api-reference.md b/docs/api-reference.md index a2e7b5f..0c09479 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -1,10 +1,14 @@ # API Reference --- -- [`ReactQuery.Provider.createClient()`](#reactqueryprovidercreateclient) -- [`ReactQuery.Provider.make()`](#reactqueryprovidermake) +- [`Provider.createClient()`](#providercreateclient) +- [`Provider.make()`](#providermake) +- [`DevTools.make(...)`](#devtoolsmake) +- [`useQueryClient`](#usequeryclient) +- [`useQuery`](#usequery) +- [`useMutation`](#usemutation) -### `ReactQuery.Provider.createClient()` +### `Provider.createClient()` The function responsible to create the query client @@ -17,10 +21,10 @@ Definition: ``` Usage: ```rescript - let client = ReactQuery.Provider.createClient() + let client = Provider.createClient() ``` -### `ReactQuery.Provider.make()` +### `Provider.make()` The React Context Provider responsible to hold all the react-query context @@ -30,7 +34,7 @@ Definition: module Provider = { let make: ( ~client: queryClientValue, - ~contextSharing: bool, + ~contextSharing: bool=?, ~children: React.element ) => React.element } @@ -39,5 +43,84 @@ Definition: Usage: ```rescript - children + children +``` + +### `DevTools.make(...)` + +The React Query DevTools Provider, which is responsible to initialize the React Query devtools + +Definition: + +```rescript + module DevTools = { + let make: (~initialIsOpen: bool=?) => React.element + } +``` + +Usage: + +```rescript + +``` + +### `useQueryClient()` + +The queryClient fetched from a hook + +Definition: + +```rescript + let useQueryClient: unit => queryClient<'queryKey, 'queryData, 'queryError, 'pageParams> +``` + +Usage: + +```rescript + let queryClient = useQueryClient() +``` + +### `useQuery` + +The hook responsible to get loading, error, and data when fetching data from an api + +Definition: + +```rescript + let useQuery: queryOptions<'queryKey, 'queryData, 'queryError, 'pageParam> => queryResult< + 'queryError, + 'queryData, + > +``` + +Usage: + +```rescript + let queryResult = useQuery({ + queryKey: ["articles"], + queryFn: () => fetchArticles() + }) +``` + + +### `useMutation` + +Definition: + +```rescript + let useMutation: mutationOptions< + 'mutationVariables, + 'mutationData, + 'mutationError, + 'unknown, + > => mutationResult<'mutationVariables, 'mutationData, 'mutationError, 'unknown> +``` + +Usage: + +```rescript + let mutationResult = useMutation({ + mutationKey: ["articles"], + mutationFn: () => addArticle(article) + }) ``` From 2964fa4b00228ad1ab28f6a660650eaff50f7318 Mon Sep 17 00:00:00 2001 From: vinibispo Date: Wed, 10 May 2023 09:10:40 -0300 Subject: [PATCH 5/5] docs: add docs for types queryClient, queryOptions, and mutationOptions --- docs/api-reference.md | 157 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) diff --git a/docs/api-reference.md b/docs/api-reference.md index 0c09479..310a4f1 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -4,8 +4,11 @@ - [`Provider.make()`](#providermake) - [`DevTools.make(...)`](#devtoolsmake) - [`useQueryClient`](#usequeryclient) +- [`queryClient`](#queryclient) - [`useQuery`](#usequery) +- [`queryOptions`](#queryoptions) - [`useMutation`](#usemutation) +- [`mutationOptions`](#mutationoptions) ### `Provider.createClient()` @@ -80,6 +83,67 @@ Usage: let queryClient = useQueryClient() ``` +### `queryClient` +Type responsible for the return of the useQueryClient hook + +Definition: +```rescript + type queryClient<'queryKey, 'queryData, 'queryError, 'pageParams> = { + fetchQuery: fetchQueryOptions<'queryKey, 'queryData, 'queryError, 'pageParams> => Js.Promise.t< + 'queryData, + >, + fetchInfiniteQuery: fetchQueryOptions< + 'queryKey, + 'queryData, + 'queryError, + 'pageParams, + > => Js.Promise.t>, + prefetchQuery: fetchQueryOptions<'queryKey, 'queryData, 'queryError, 'pageParams> => Js.Promise.t< + unit, + >, + prefetchInfiniteQuery: fetchQueryOptions< + 'queryKey, + 'queryData, + 'queryError, + 'pageParams, + > => Js.Promise.t, + getQueryData: 'queryKey => option<'queryData>, + setQueryData: ('queryKey, option<'queryData>) => 'queryData, + getQueryState: ( + 'queryKey, + ReactQuery_Types.queryFilter<'queryKey>, + ) => queryState<'queryData, 'queryError>, + setQueriesData: ( + ReactQuery_Types.queryDataKeyOrFilterValue<'queryKey>, + option<'queryData> => 'queryData, + ) => unit, + invalidateQueries: ( + option>, + option, + ) => Js.Promise.t, + refetchQueries: ( + option>, + option, + ) => Js.Promise.t, + cancelQueries: option> => Js.Promise.t, + removeQueries: option> => Js.Promise.t, + resetQueries: ( + option>, + option, + ) => Js.Promise.t, + isFetching: option> => bool, + isMutating: option> => bool, + clear: unit => unit, + } +``` + +Usage: + +```rescript + let queryClient = useQueryClient() + queryClient.fetchQuery(fetchQueryOptions(~queryKey=["articles"], ~retryOnMount=true)) +``` + ### `useQuery` The hook responsible to get loading, error, and data when fetching data from an api @@ -102,9 +166,59 @@ Usage: }) ``` +### `queryOptions` +Type responsible for hold parameters for the useQuery hook + +Definition: +```rescript + type queryOptions<'queryKey, 'queryData, 'queryError, 'pageParam> = { + queryKey?: array<'queryKey>, + queryFn?: ReactQuery_Types.queryFunctionContext, 'pageParam> => Js.Promise.t< + 'queryData, + >, + enabled?: bool, + retry?: ReactQuery_Types.retryValue<'queryError>, + retryOnMount?: bool, + retryDelay?: ReactQuery_Types.retryDelayValue<'queryError>, + staleTime?: ReactQuery_Types.timeValue, + queryKeyHashFn?: array<'queryKey> => string, + refetchInterval?: ReactQuery_Types.refetchIntervalValue, + refetchIntervalInBackground?: bool, + refetchOnMount?: ReactQuery_Types.boolOrAlwaysValue, + refetchOnWindowFocus?: ReactQuery_Types.boolOrAlwaysValue, + refetchOnReconnect?: ReactQuery_Types.boolOrAlwaysValue, + notifyOnChangeProps?: ReactQuery_Types.notifyOnChangePropsValue, + notifyOnChangePropsExclusions?: array, + onSuccess?: 'queryData => unit, + onError?: 'queryError => unit, + onSettled?: ('queryData, 'queryError) => unit, + select?: 'queryData => 'queryData, + suspense?: bool, + keepPreviousData?: bool, + structuralSharing?: bool, + useErrorBoundary?: bool, + initialData?: 'queryData => 'queryData, + initialDataUpdatedAt?: unit => int, + placeholderData?: unit => 'queryData, + } +``` + +Usage: + +```rescript + let queryOptions = { + queryKey: ["articles"], + queryFn: () => fetchArticles() + } + let queryResult = useQuery(queryOptions) + +``` + ### `useMutation` +The hook responsible to mutate a query, when update/create/delete anything + Definition: ```rescript @@ -124,3 +238,46 @@ Usage: mutationFn: () => addArticle(article) }) ``` + +### `mutationOptions` +Type responsible for hold the parameters for the useMutation hook + +Definition: + +```rescript + type mutationOptions<'mutationVariables, 'mutationData, 'mutationError, 'unknown> = { + mutationKey: array, + mutationFn: 'mutationVariables => Js.Promise.t<'mutationData>, + onMutate?: 'mutationVariables => Js.Promise.t, + onSuccess?: ( + 'mutationData, + 'mutationVariables, + Js.Nullable.t, + ) => Js.Promise.t<'unknown>, + onError?: ( + 'mutationError, + 'mutationVariables, + Js.Nullable.t, + ) => Js.Promise.t<'unknown>, + onSettled?: ( + 'mutationData, + 'mutationError, + 'mutationVariables, + Js.Nullable.t, + ) => Js.Promise.t<'unknown>, + retry?: ReactQuery_Types.retryValue<'mutationError>, + retryDelay?: ReactQuery_Types.retryDelayValue<'mutationError>, + useErrorBoundary?: bool, + } +``` + +Usage: + +```rescript + let mutationOptions = { + mutationKey: ["articles"], + mutationFn: () => addArticle(article) + } + + let mutationResult = useMutation(mutationOptions) +```