diff --git a/docs/useCreate.md b/docs/useCreate.md index 47d9997781b..1069310e5e0 100644 --- a/docs/useCreate.md +++ b/docs/useCreate.md @@ -326,7 +326,7 @@ const createPost = async () => { ## TypeScript -The `useCreate` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useCreate` hook accepts a generic parameter for the record type and another for the error type: ```tsx type Product = { diff --git a/docs/useDelete.md b/docs/useDelete.md index 9a704c79d4e..4a67ceb428f 100644 --- a/docs/useDelete.md +++ b/docs/useDelete.md @@ -68,7 +68,7 @@ const DeleteButton = () => { ## TypeScript -The `useDelete` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useDelete` hook accepts a generic parameter for the record type and another for the error type: ```tsx useDelete(undefined, undefined, { diff --git a/docs/useDeleteMany.md b/docs/useDeleteMany.md index 15a421a55d4..3334abc4540 100644 --- a/docs/useDeleteMany.md +++ b/docs/useDeleteMany.md @@ -67,7 +67,7 @@ const BulkDeletePostsButton = () => { ## TypeScript -The `useDeleteMany` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useDeleteMany` hook accepts a generic parameter for the record type and another for the error type: ```tsx useDeleteMany(undefined, undefined, { diff --git a/docs/useUpdateMany.md b/docs/useUpdateMany.md index b93b7988033..abecfbe8ce6 100644 --- a/docs/useUpdateMany.md +++ b/docs/useUpdateMany.md @@ -68,7 +68,7 @@ const BulkResetViewsButton = () => { ## TypeScript -The `useUpdateMany` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useUpdateMany` hook accepts a generic parameter for the record type and another for the error type: ```tsx useUpdateMany(undefined, undefined, { diff --git a/docs_headless/src/content/docs/useCreate.md b/docs_headless/src/content/docs/useCreate.md index 64a3d0f1678..46ac0344555 100644 --- a/docs_headless/src/content/docs/useCreate.md +++ b/docs_headless/src/content/docs/useCreate.md @@ -328,7 +328,7 @@ const createPost = async () => { ## TypeScript -The `useCreate` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useCreate` hook accepts a generic parameter for the record type and another for the error type: ```tsx type Product = { diff --git a/docs_headless/src/content/docs/useDelete.md b/docs_headless/src/content/docs/useDelete.md index e7f9c15da56..adadd061fbc 100644 --- a/docs_headless/src/content/docs/useDelete.md +++ b/docs_headless/src/content/docs/useDelete.md @@ -64,7 +64,7 @@ const DeleteButton = () => { ## TypeScript -The `useDelete` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useDelete` hook accepts a generic parameter for the record type and another for the error type: ```tsx useDelete(undefined, undefined, { diff --git a/docs_headless/src/content/docs/useDeleteMany.md b/docs_headless/src/content/docs/useDeleteMany.md index 679f50e1ecd..e7290a5dbce 100644 --- a/docs_headless/src/content/docs/useDeleteMany.md +++ b/docs_headless/src/content/docs/useDeleteMany.md @@ -64,7 +64,7 @@ const BulkDeletePostsButton = () => { ## TypeScript -The `useDeleteMany` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useDeleteMany` hook accepts a generic parameter for the record type and another for the error type: ```tsx useDeleteMany(undefined, undefined, { diff --git a/docs_headless/src/content/docs/useUpdateMany.md b/docs_headless/src/content/docs/useUpdateMany.md index 46d8a0219e8..7b9316c2ff4 100644 --- a/docs_headless/src/content/docs/useUpdateMany.md +++ b/docs_headless/src/content/docs/useUpdateMany.md @@ -64,7 +64,7 @@ const BulkResetViewsButton = () => { ## TypeScript -The `useUpdateMany` hook accepts a generic parameter for the record type and another for the error type (which defaults to `Error`): +The `useUpdateMany` hook accepts a generic parameter for the record type and another for the error type: ```tsx useUpdateMany(undefined, undefined, { diff --git a/packages/ra-core/src/controller/button/useBulkDeleteController.ts b/packages/ra-core/src/controller/button/useBulkDeleteController.ts index ce4a328c7fe..cb742b57157 100644 --- a/packages/ra-core/src/controller/button/useBulkDeleteController.ts +++ b/packages/ra-core/src/controller/button/useBulkDeleteController.ts @@ -102,7 +102,7 @@ export const useBulkDeleteController = < export interface UseBulkDeleteControllerParams< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > { mutationMode?: MutationMode; mutationOptions?: UseDeleteManyOptions; diff --git a/packages/ra-core/src/controller/button/useBulkUpdateController.tsx b/packages/ra-core/src/controller/button/useBulkUpdateController.tsx index 91a26215dcb..5abfebdac58 100644 --- a/packages/ra-core/src/controller/button/useBulkUpdateController.tsx +++ b/packages/ra-core/src/controller/button/useBulkUpdateController.tsx @@ -113,7 +113,7 @@ export const useBulkUpdateController = < export interface UseBulkUpdateControllerParams< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > { /* @deprecated use mutationOptions instead */ onSuccess?: () => void; diff --git a/packages/ra-core/src/controller/button/useDeleteController.tsx b/packages/ra-core/src/controller/button/useDeleteController.tsx index 3bc6489038b..9a3d400f3e8 100644 --- a/packages/ra-core/src/controller/button/useDeleteController.tsx +++ b/packages/ra-core/src/controller/button/useDeleteController.tsx @@ -164,7 +164,7 @@ export const useDeleteController = < export interface UseDeleteControllerParams< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > { mutationMode?: MutationMode; mutationOptions?: UseDeleteOptions; diff --git a/packages/ra-core/src/controller/button/useDeleteWithConfirmController.tsx b/packages/ra-core/src/controller/button/useDeleteWithConfirmController.tsx index 67d4dcefdcc..dc54fa46a2f 100644 --- a/packages/ra-core/src/controller/button/useDeleteWithConfirmController.tsx +++ b/packages/ra-core/src/controller/button/useDeleteWithConfirmController.tsx @@ -173,7 +173,7 @@ const useDeleteWithConfirmController = < export interface UseDeleteWithConfirmControllerParams< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends UseDeleteControllerParams { onClick?: ReactEventHandler; } diff --git a/packages/ra-core/src/controller/button/useDeleteWithUndoController.tsx b/packages/ra-core/src/controller/button/useDeleteWithUndoController.tsx index 78caca1a58e..6df1fde0dfe 100644 --- a/packages/ra-core/src/controller/button/useDeleteWithUndoController.tsx +++ b/packages/ra-core/src/controller/button/useDeleteWithUndoController.tsx @@ -68,7 +68,7 @@ const useDeleteWithUndoController = < export interface UseDeleteWithUndoControllerParams< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends Omit< UseDeleteControllerParams, 'mutationMode' diff --git a/packages/ra-core/src/controller/button/useUpdateController.tsx b/packages/ra-core/src/controller/button/useUpdateController.tsx index 46c7db63143..e6372f7e8c2 100644 --- a/packages/ra-core/src/controller/button/useUpdateController.tsx +++ b/packages/ra-core/src/controller/button/useUpdateController.tsx @@ -148,7 +148,7 @@ export const useUpdateController = < export interface UseUpdateControllerParams< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > { mutationMode?: MutationMode; mutationOptions?: UseUpdateOptions; diff --git a/packages/ra-core/src/dataProvider/useCreate.spec.tsx b/packages/ra-core/src/dataProvider/useCreate.spec.tsx index cbd277b8923..38a7af34f38 100644 --- a/packages/ra-core/src/dataProvider/useCreate.spec.tsx +++ b/packages/ra-core/src/dataProvider/useCreate.spec.tsx @@ -728,20 +728,3 @@ describe('useCreate', () => { await screen.findByText('3: New Post'); }); }); - -/** - * Type-level check: the error type defaults to Error, so callbacks don't - * require a cast. See https://github.com/marmelab/react-admin/issues/11262 - */ -const _useCreateErrorTypeCheck = () => { - const [create] = useCreate<{ title: string }>(); - create( - 'posts', - { data: { title: 'Hello' } }, - { onError: error => error.message } - ); - useCreate<{ title: string }>('posts', undefined, { - onError: error => error.message, - onSettled: (_data, error) => error?.message, - }); -}; diff --git a/packages/ra-core/src/dataProvider/useCreate.ts b/packages/ra-core/src/dataProvider/useCreate.ts index 9644e2d0e41..fdf806abcff 100644 --- a/packages/ra-core/src/dataProvider/useCreate.ts +++ b/packages/ra-core/src/dataProvider/useCreate.ts @@ -80,7 +80,7 @@ import { */ export const useCreate = < RecordType extends Omit = any, - MutationError = Error, + MutationError = unknown, ResultRecordType extends RaRecord = RecordType & { id: Identifier }, >( resource?: string, @@ -279,7 +279,7 @@ export interface UseCreateMutateParams< export type UseCreateOptions< RecordType extends Omit = any, - MutationError = Error, + MutationError = unknown, ResultRecordType extends RaRecord = RecordType & { id: Identifier }, > = Omit< UseMutationOptions< @@ -307,7 +307,7 @@ export type UseCreateOptions< export type CreateMutationFunction< RecordType extends Omit = any, TReturnPromise extends boolean = boolean, - MutationError = Error, + MutationError = unknown, ResultRecordType extends RaRecord = RecordType & { id: Identifier }, > = ( resource?: string, @@ -323,7 +323,7 @@ export type CreateMutationFunction< export type UseCreateResult< RecordType extends Omit = any, TReturnPromise extends boolean = boolean, - MutationError = Error, + MutationError = unknown, ResultRecordType extends RaRecord = RecordType & { id: Identifier }, > = [ CreateMutationFunction< diff --git a/packages/ra-core/src/dataProvider/useDelete.spec.tsx b/packages/ra-core/src/dataProvider/useDelete.spec.tsx index b64433d84c6..d1145fe7bd7 100644 --- a/packages/ra-core/src/dataProvider/useDelete.spec.tsx +++ b/packages/ra-core/src/dataProvider/useDelete.spec.tsx @@ -854,16 +854,3 @@ describe('useDelete', () => { }); }); }); - -/** - * Type-level check: the error type defaults to Error, so callbacks don't - * require a cast. See https://github.com/marmelab/react-admin/issues/11262 - */ -const _useDeleteErrorTypeCheck = () => { - const [deleteOne] = useDelete<{ id: number }>(); - deleteOne('posts', { id: 1 }, { onError: error => error.message }); - useDelete<{ id: number }>('posts', undefined, { - onError: error => error.message, - onSettled: (_data, error) => error?.message, - }); -}; diff --git a/packages/ra-core/src/dataProvider/useDelete.ts b/packages/ra-core/src/dataProvider/useDelete.ts index 2f1348b91e9..3f66ed8b375 100644 --- a/packages/ra-core/src/dataProvider/useDelete.ts +++ b/packages/ra-core/src/dataProvider/useDelete.ts @@ -82,7 +82,7 @@ import { useEvent } from '../util'; */ export const useDelete = < RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, >( resource?: string, params: Partial> = {}, @@ -286,7 +286,7 @@ export interface UseDeleteMutateParams { export type UseDeleteOptions< RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, > = Omit< UseMutationOptions< RecordType, @@ -304,7 +304,7 @@ export type UseDeleteOptions< export type UseDeleteResult< RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, TReturnPromise extends boolean = boolean, > = [ ( diff --git a/packages/ra-core/src/dataProvider/useDeleteMany.spec.tsx b/packages/ra-core/src/dataProvider/useDeleteMany.spec.tsx index 93b39853343..fee685f0cea 100644 --- a/packages/ra-core/src/dataProvider/useDeleteMany.spec.tsx +++ b/packages/ra-core/src/dataProvider/useDeleteMany.spec.tsx @@ -465,16 +465,3 @@ describe('useDeleteMany', () => { }); }); }); - -/** - * Type-level check: the error type defaults to Error, so callbacks don't - * require a cast. See https://github.com/marmelab/react-admin/issues/11262 - */ -const _useDeleteManyErrorTypeCheck = () => { - const [deleteMany] = useDeleteMany<{ id: number }>(); - deleteMany('posts', { ids: [1] }, { onError: error => error.message }); - useDeleteMany<{ id: number }>('posts', undefined, { - onError: error => error.message, - onSettled: (_data, error) => error?.message, - }); -}; diff --git a/packages/ra-core/src/dataProvider/useDeleteMany.ts b/packages/ra-core/src/dataProvider/useDeleteMany.ts index bdb50e02dc8..580ff74212d 100644 --- a/packages/ra-core/src/dataProvider/useDeleteMany.ts +++ b/packages/ra-core/src/dataProvider/useDeleteMany.ts @@ -82,7 +82,7 @@ import { */ export const useDeleteMany = < RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, >( resource?: string, params: Partial> = {}, @@ -309,7 +309,7 @@ export interface UseDeleteManyMutateParams { export type UseDeleteManyOptions< RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, TReturnPromise extends boolean = boolean, > = Omit< UseMutationOptions< @@ -328,7 +328,7 @@ export type UseDeleteManyOptions< export type UseDeleteManyResult< RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, TReturnPromise extends boolean = boolean, > = [ ( diff --git a/packages/ra-core/src/dataProvider/useUpdateMany.spec.tsx b/packages/ra-core/src/dataProvider/useUpdateMany.spec.tsx index b16bbea2b0d..02f59fbdf5f 100644 --- a/packages/ra-core/src/dataProvider/useUpdateMany.spec.tsx +++ b/packages/ra-core/src/dataProvider/useUpdateMany.spec.tsx @@ -788,20 +788,3 @@ describe('useUpdateMany', () => { afterEach(() => { jest.restoreAllMocks(); }); - -/** - * Type-level check: the error type defaults to Error, so callbacks don't - * require a cast. See https://github.com/marmelab/react-admin/issues/11262 - */ -const _useUpdateManyErrorTypeCheck = () => { - const [updateMany] = useUpdateMany<{ id: number; title: string }>(); - updateMany( - 'posts', - { ids: [1], data: { title: 'Hello' } }, - { onError: error => error.message } - ); - useUpdateMany<{ id: number; title: string }>('posts', undefined, { - onError: error => error.message, - onSettled: (_data, error) => error?.message, - }); -}; diff --git a/packages/ra-core/src/dataProvider/useUpdateMany.ts b/packages/ra-core/src/dataProvider/useUpdateMany.ts index f50fce2614e..842ed1729c3 100644 --- a/packages/ra-core/src/dataProvider/useUpdateMany.ts +++ b/packages/ra-core/src/dataProvider/useUpdateMany.ts @@ -77,7 +77,7 @@ import { useEvent } from '../util'; */ export const useUpdateMany = < RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, >( resource?: string, params: Partial>> = {}, @@ -303,7 +303,7 @@ export interface UseUpdateManyMutateParams { export type UseUpdateManyOptions< RecordType extends RaRecord = any, - MutationError = Error, + MutationError = unknown, > = Omit< UseMutationOptions< Array, @@ -330,7 +330,7 @@ export type UseUpdateManyOptions< export type UseUpdateManyResult< RecordType extends RaRecord = any, TReturnPromise extends boolean = boolean, - MutationError = Error, + MutationError = unknown, > = [ ( resource?: string, diff --git a/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.tsx b/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.tsx index c3527c04612..5c8164bb5d9 100644 --- a/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.tsx +++ b/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.tsx @@ -162,7 +162,7 @@ const sanitizeRestProps = ({ export interface BulkDeleteWithConfirmButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends ButtonProps, UseBulkDeleteControllerParams { confirmContent?: React.ReactNode; diff --git a/packages/ra-ui-materialui/src/button/BulkDeleteWithUndoButton.tsx b/packages/ra-ui-materialui/src/button/BulkDeleteWithUndoButton.tsx index 3c675213c76..2ccaa220ce6 100644 --- a/packages/ra-ui-materialui/src/button/BulkDeleteWithUndoButton.tsx +++ b/packages/ra-ui-materialui/src/button/BulkDeleteWithUndoButton.tsx @@ -64,7 +64,7 @@ const sanitizeRestProps = ({ export interface BulkDeleteWithUndoButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends ButtonProps, Omit< UseBulkDeleteControllerParams, diff --git a/packages/ra-ui-materialui/src/button/BulkUpdateWithConfirmButton.tsx b/packages/ra-ui-materialui/src/button/BulkUpdateWithConfirmButton.tsx index 603e53d11d6..fee588928d7 100644 --- a/packages/ra-ui-materialui/src/button/BulkUpdateWithConfirmButton.tsx +++ b/packages/ra-ui-materialui/src/button/BulkUpdateWithConfirmButton.tsx @@ -156,7 +156,7 @@ const sanitizeRestProps = ({ export interface BulkUpdateWithConfirmButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends Omit, UseBulkUpdateControllerParams { confirmContent?: React.ReactNode; diff --git a/packages/ra-ui-materialui/src/button/BulkUpdateWithUndoButton.tsx b/packages/ra-ui-materialui/src/button/BulkUpdateWithUndoButton.tsx index d5ef13eec26..3792be5c49b 100644 --- a/packages/ra-ui-materialui/src/button/BulkUpdateWithUndoButton.tsx +++ b/packages/ra-ui-materialui/src/button/BulkUpdateWithUndoButton.tsx @@ -66,7 +66,7 @@ const sanitizeRestProps = ({ export interface BulkUpdateWithUndoButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends Omit, Omit< UseBulkUpdateControllerParams, diff --git a/packages/ra-ui-materialui/src/button/DeleteButton.tsx b/packages/ra-ui-materialui/src/button/DeleteButton.tsx index 19856890f1e..02508b7b6da 100644 --- a/packages/ra-ui-materialui/src/button/DeleteButton.tsx +++ b/packages/ra-ui-materialui/src/button/DeleteButton.tsx @@ -102,7 +102,7 @@ export const DeleteButton = React.forwardRef(function DeleteButton< export type DeleteButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > = SaveContextValue & ( | ({ mutationMode?: 'undoable' } & DeleteWithUndoButtonProps< diff --git a/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx b/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx index 03f59fdb26d..42551645a35 100644 --- a/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx +++ b/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx @@ -225,7 +225,7 @@ const defaultIcon = ; export interface DeleteWithConfirmButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends ButtonProps, UseDeleteControllerParams { confirmTitle?: React.ReactNode; diff --git a/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx b/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx index e3d925cd9c5..fabaa8fa4b4 100644 --- a/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx +++ b/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx @@ -117,7 +117,7 @@ const defaultIcon = ; export interface DeleteWithUndoButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends ButtonProps, UseDeleteControllerParams { icon?: ReactNode; diff --git a/packages/ra-ui-materialui/src/button/SaveButton.tsx b/packages/ra-ui-materialui/src/button/SaveButton.tsx index 398ae4051b8..ee6e9635ad7 100644 --- a/packages/ra-ui-materialui/src/button/SaveButton.tsx +++ b/packages/ra-ui-materialui/src/button/SaveButton.tsx @@ -173,7 +173,7 @@ const defaultIcon = ; interface Props< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > { className?: string; disabled?: boolean; diff --git a/packages/ra-ui-materialui/src/button/UpdateWithUndoButton.tsx b/packages/ra-ui-materialui/src/button/UpdateWithUndoButton.tsx index 0fa1b74c808..a6aef171f2f 100644 --- a/packages/ra-ui-materialui/src/button/UpdateWithUndoButton.tsx +++ b/packages/ra-ui-materialui/src/button/UpdateWithUndoButton.tsx @@ -106,7 +106,7 @@ const sanitizeRestProps = ({ export interface UpdateWithUndoButtonProps< RecordType extends RaRecord = any, - MutationOptionsError = Error, + MutationOptionsError = unknown, > extends ButtonProps, Omit< UseUpdateControllerParams,