@refinedev/core 4.47.2 → 4.48.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 (409) hide show
  1. package/CHANGELOG.md +2944 -2919
  2. package/dist/components/authenticated/index.d.ts.map +1 -1
  3. package/dist/components/autoSaveIndicator/index.d.ts.map +1 -1
  4. package/dist/components/canAccess/index.d.ts.map +1 -1
  5. package/dist/components/containers/refine/index.d.ts.map +1 -1
  6. package/dist/components/layoutWrapper/index.d.ts.map +1 -1
  7. package/dist/components/pages/auth/components/forgotPassword/index.d.ts.map +1 -1
  8. package/dist/components/pages/auth/components/login/index.d.ts.map +1 -1
  9. package/dist/components/pages/auth/components/register/index.d.ts.map +1 -1
  10. package/dist/components/pages/auth/components/updatePassword/index.d.ts.map +1 -1
  11. package/dist/components/pages/auth/index.d.ts.map +1 -1
  12. package/dist/components/pages/config-error/index.d.ts.map +1 -1
  13. package/dist/components/pages/config-success/index.d.ts.map +1 -1
  14. package/dist/components/pages/login/index.d.ts.map +1 -1
  15. package/dist/components/pages/ready/index.d.ts.map +1 -1
  16. package/dist/components/undoableQueue/index.d.ts.map +1 -1
  17. package/dist/contexts/accessControl/IAccessControlContext.d.ts.map +1 -1
  18. package/dist/contexts/accessControl/index.d.ts.map +1 -1
  19. package/dist/contexts/auditLog/IAuditLogContext.d.ts.map +1 -1
  20. package/dist/contexts/auditLog/index.d.ts.map +1 -1
  21. package/dist/contexts/auth/IAuthContext.d.ts +1 -1
  22. package/dist/contexts/auth/IAuthContext.d.ts.map +1 -1
  23. package/dist/contexts/auth/index.d.ts.map +1 -1
  24. package/dist/contexts/data/IDataContext.d.ts.map +1 -1
  25. package/dist/contexts/data/index.d.ts.map +1 -1
  26. package/dist/contexts/legacy-router/IRouterContext.d.ts.map +1 -1
  27. package/dist/contexts/legacy-router/index.d.ts.map +1 -1
  28. package/dist/contexts/live/ILiveContext.d.ts.map +1 -1
  29. package/dist/contexts/live/index.d.ts.map +1 -1
  30. package/dist/contexts/notification/INotificationContext.d.ts.map +1 -1
  31. package/dist/contexts/notification/index.d.ts.map +1 -1
  32. package/dist/contexts/refine/IRefineContext.d.ts.map +1 -1
  33. package/dist/contexts/refine/index.d.ts.map +1 -1
  34. package/dist/contexts/resource/IResourceContext.d.ts.map +1 -1
  35. package/dist/contexts/resource/index.d.ts.map +1 -1
  36. package/dist/contexts/router/index.d.ts.map +1 -1
  37. package/dist/contexts/translation/ITranslationContext.d.ts.map +1 -1
  38. package/dist/contexts/translation/index.d.ts.map +1 -1
  39. package/dist/contexts/undoableQueue/IUndoableQueueContext.d.ts.map +1 -1
  40. package/dist/contexts/undoableQueue/actionTypes.d.ts.map +1 -1
  41. package/dist/contexts/undoableQueue/index.d.ts.map +1 -1
  42. package/dist/contexts/undoableQueue/undoableQueueContext.d.ts.map +1 -1
  43. package/dist/contexts/unsavedWarn/IUnsavedWarnContext.d.ts.map +1 -1
  44. package/dist/definitions/helpers/check-router-prop-misuse/index.d.ts.map +1 -1
  45. package/dist/definitions/helpers/downloadInBrowser/index.d.ts.map +1 -1
  46. package/dist/definitions/helpers/flatten-object-keys/index.d.ts.map +1 -1
  47. package/dist/definitions/helpers/generateDocumentTitle/index.d.ts.map +1 -1
  48. package/dist/definitions/helpers/handlePaginationParams/index.d.ts.map +1 -1
  49. package/dist/definitions/helpers/handleRefineOptions/index.d.ts.map +1 -1
  50. package/dist/definitions/helpers/hasPermission/index.d.ts.map +1 -1
  51. package/dist/definitions/helpers/importCSVMapper/index.d.ts.map +1 -1
  52. package/dist/definitions/helpers/index.d.ts.map +1 -1
  53. package/dist/definitions/helpers/keys/index.d.ts +0 -11
  54. package/dist/definitions/helpers/keys/index.d.ts.map +1 -1
  55. package/dist/definitions/helpers/legacy-resource-transform/index.d.ts.map +1 -1
  56. package/dist/definitions/helpers/menu/create-resource-key.d.ts.map +1 -1
  57. package/dist/definitions/helpers/menu/create-tree.d.ts.map +1 -1
  58. package/dist/definitions/helpers/pick-resource/index.d.ts.map +1 -1
  59. package/dist/definitions/helpers/pickDataProvider/index.d.ts.map +1 -1
  60. package/dist/definitions/helpers/queryKeys/index.d.ts.map +1 -1
  61. package/dist/definitions/helpers/redirectPage/index.d.ts.map +1 -1
  62. package/dist/definitions/helpers/routeGenerator/index.d.ts.map +1 -1
  63. package/dist/definitions/helpers/router/compose-route.d.ts.map +1 -1
  64. package/dist/definitions/helpers/router/get-action-routes-from-resource.d.ts.map +1 -1
  65. package/dist/definitions/helpers/router/get-default-action-path.d.ts.map +1 -1
  66. package/dist/definitions/helpers/router/get-parent-prefix-for-resource.d.ts.map +1 -1
  67. package/dist/definitions/helpers/router/get-parent-resource.d.ts.map +1 -1
  68. package/dist/definitions/helpers/router/match-resource-from-route.d.ts.map +1 -1
  69. package/dist/definitions/helpers/router/pick-matched-route.d.ts.map +1 -1
  70. package/dist/definitions/helpers/router/prepare-route-params.d.ts.map +1 -1
  71. package/dist/definitions/helpers/safe-translate/index.d.ts.map +1 -1
  72. package/dist/definitions/helpers/sanitize-resource/index.d.ts.map +1 -1
  73. package/dist/definitions/helpers/sequentialPromises/index.d.ts.map +1 -1
  74. package/dist/definitions/helpers/treeView/createTreeView/index.d.ts.map +1 -1
  75. package/dist/definitions/helpers/useActiveAuthProvider/index.d.ts +2 -2
  76. package/dist/definitions/helpers/useUserFriendlyName/index.d.ts.map +1 -1
  77. package/dist/definitions/helpers/userFriendlyResourceName/index.d.ts.map +1 -1
  78. package/dist/definitions/table/index.d.ts.map +1 -1
  79. package/dist/esm/index.js +18 -18
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/hooks/accessControl/useCan/index.d.ts.map +1 -1
  82. package/dist/hooks/accessControl/useCanWithoutCache.d.ts.map +1 -1
  83. package/dist/hooks/auditLog/useLog/index.d.ts.map +1 -1
  84. package/dist/hooks/auditLog/useLogList/index.d.ts.map +1 -1
  85. package/dist/hooks/auth/useForgotPassword/index.d.ts.map +1 -1
  86. package/dist/hooks/auth/useGetIdentity/index.d.ts.map +1 -1
  87. package/dist/hooks/auth/useIsAuthenticated/index.d.ts.map +1 -1
  88. package/dist/hooks/auth/useLogin/index.d.ts.map +1 -1
  89. package/dist/hooks/auth/useLogout/index.d.ts.map +1 -1
  90. package/dist/hooks/auth/useOnError/index.d.ts.map +1 -1
  91. package/dist/hooks/auth/usePermissions/index.d.ts +9 -6
  92. package/dist/hooks/auth/usePermissions/index.d.ts.map +1 -1
  93. package/dist/hooks/auth/useRegister/index.d.ts.map +1 -1
  94. package/dist/hooks/auth/useUpdatePassword/index.d.ts.map +1 -1
  95. package/dist/hooks/breadcrumb/index.d.ts.map +1 -1
  96. package/dist/hooks/data/useApiUrl.d.ts.map +1 -1
  97. package/dist/hooks/data/useCreate.d.ts.map +1 -1
  98. package/dist/hooks/data/useCreateMany.d.ts.map +1 -1
  99. package/dist/hooks/data/useCustom.d.ts.map +1 -1
  100. package/dist/hooks/data/useCustomMutation.d.ts.map +1 -1
  101. package/dist/hooks/data/useDataProvider.d.ts.map +1 -1
  102. package/dist/hooks/data/useDelete.d.ts.map +1 -1
  103. package/dist/hooks/data/useDeleteMany.d.ts.map +1 -1
  104. package/dist/hooks/data/useInfiniteList.d.ts.map +1 -1
  105. package/dist/hooks/data/useList.d.ts.map +1 -1
  106. package/dist/hooks/data/useMany.d.ts.map +1 -1
  107. package/dist/hooks/data/useOne.d.ts.map +1 -1
  108. package/dist/hooks/data/useUpdate.d.ts.map +1 -1
  109. package/dist/hooks/data/useUpdateMany.d.ts.map +1 -1
  110. package/dist/hooks/export/csvDownload.interface.d.ts.map +1 -1
  111. package/dist/hooks/export/index.d.ts +1 -1
  112. package/dist/hooks/export/index.d.ts.map +1 -1
  113. package/dist/hooks/form/useForm.d.ts.map +1 -1
  114. package/dist/hooks/import/index.d.ts.map +1 -1
  115. package/dist/hooks/invalidate/index.d.ts.map +1 -1
  116. package/dist/hooks/live/useLiveMode/index.d.ts.map +1 -1
  117. package/dist/hooks/live/useResourceSubscription/index.d.ts.map +1 -1
  118. package/dist/hooks/live/useSubscription/index.d.ts.map +1 -1
  119. package/dist/hooks/menu/useMenu.d.ts.map +1 -1
  120. package/dist/hooks/modal/useModal/index.d.ts.map +1 -1
  121. package/dist/hooks/navigation/index.d.ts.map +1 -1
  122. package/dist/hooks/notification/useCancelNotification/index.d.ts.map +1 -1
  123. package/dist/hooks/notification/useHandleNotification/index.d.ts.map +1 -1
  124. package/dist/hooks/redirection/index.d.ts.map +1 -1
  125. package/dist/hooks/refine/useMutationMode.d.ts.map +1 -1
  126. package/dist/hooks/refine/useSyncWithLocation.d.ts.map +1 -1
  127. package/dist/hooks/refine/useWarnAboutChange/index.d.ts.map +1 -1
  128. package/dist/hooks/resource/useResource/index.d.ts.map +1 -1
  129. package/dist/hooks/router/use-get-to-path/index.d.ts.map +1 -1
  130. package/dist/hooks/router/use-go/index.d.ts.map +1 -1
  131. package/dist/hooks/router/use-link/index.d.ts.map +1 -1
  132. package/dist/hooks/router/use-parse/index.d.ts.map +1 -1
  133. package/dist/hooks/router/use-to-path/index.d.ts.map +1 -1
  134. package/dist/hooks/show/useShow.d.ts.map +1 -1
  135. package/dist/hooks/translate/useSetLocale.d.ts.map +1 -1
  136. package/dist/hooks/translate/useTranslate.d.ts.map +1 -1
  137. package/dist/hooks/useLoadingOvertime/index.d.ts.map +1 -1
  138. package/dist/hooks/useSelect/index.d.ts +18 -4
  139. package/dist/hooks/useSelect/index.d.ts.map +1 -1
  140. package/dist/hooks/useTable/index.d.ts.map +1 -1
  141. package/dist/iife/index.js +18 -18
  142. package/dist/iife/index.js.map +1 -1
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +18 -18
  145. package/dist/index.js.map +1 -1
  146. package/dist/interfaces/actions.d.ts.map +1 -1
  147. package/dist/interfaces/auditLog/logData.d.ts.map +1 -1
  148. package/dist/interfaces/auth.d.ts.map +1 -1
  149. package/dist/interfaces/autoSave.d.ts.map +1 -1
  150. package/dist/interfaces/bindings/access-control.d.ts.map +1 -1
  151. package/dist/interfaces/bindings/auth.d.ts +1 -1
  152. package/dist/interfaces/bindings/auth.d.ts.map +1 -1
  153. package/dist/interfaces/bindings/data.d.ts.map +1 -1
  154. package/dist/interfaces/bindings/i18n.d.ts.map +1 -1
  155. package/dist/interfaces/bindings/index.d.ts.map +1 -1
  156. package/dist/interfaces/bindings/live.d.ts.map +1 -1
  157. package/dist/interfaces/bindings/notifications.d.ts.map +1 -1
  158. package/dist/interfaces/bindings/resource.d.ts.map +1 -1
  159. package/dist/interfaces/bindings/router.d.ts.map +1 -1
  160. package/dist/interfaces/customComponents.d.ts.map +1 -1
  161. package/dist/interfaces/errors/HttpError.d.ts.map +1 -1
  162. package/dist/interfaces/form-url-params.d.ts.map +1 -1
  163. package/dist/interfaces/index.d.ts.map +1 -1
  164. package/dist/interfaces/live/LiveEvent.d.ts.map +1 -1
  165. package/dist/interfaces/live/LiveModeProps.d.ts.map +1 -1
  166. package/dist/interfaces/mapDataFn.d.ts.map +1 -1
  167. package/dist/interfaces/metaData/graphqlQueryOptions.d.ts.map +1 -1
  168. package/dist/interfaces/metaData/metaDataQuery.d.ts.map +1 -1
  169. package/dist/interfaces/metaData/metaQuery.d.ts.map +1 -1
  170. package/dist/interfaces/metaData/nestedField.d.ts.map +1 -1
  171. package/dist/interfaces/metaData/queryBuilderOptions.d.ts.map +1 -1
  172. package/dist/interfaces/metaData/variableOptions.d.ts.map +1 -1
  173. package/dist/interfaces/mutationMode.d.ts.map +1 -1
  174. package/dist/interfaces/notification.d.ts.map +1 -1
  175. package/dist/interfaces/optimistic-update-map.d.ts.map +1 -1
  176. package/dist/interfaces/prettify.d.ts.map +1 -1
  177. package/dist/interfaces/queryKey.d.ts.map +1 -1
  178. package/dist/interfaces/resourceErrorRouterParams.d.ts.map +1 -1
  179. package/dist/interfaces/resourceRouterParams.d.ts.map +1 -1
  180. package/dist/interfaces/successErrorNotification.d.ts +4 -4
  181. package/dist/interfaces/successErrorNotification.d.ts.map +1 -1
  182. package/dist/interfaces/telemetry.d.ts.map +1 -1
  183. package/dist/interfaces/textTransformers.d.ts.map +1 -1
  184. package/package.json +2 -2
  185. package/refine.config.js +99 -102
  186. package/src/components/authenticated/index.tsx +157 -159
  187. package/src/components/autoSaveIndicator/index.tsx +23 -27
  188. package/src/components/canAccess/index.tsx +93 -93
  189. package/src/components/containers/refine/index.tsx +312 -353
  190. package/src/components/gh-banner/index.tsx +235 -242
  191. package/src/components/gh-banner/styles.ts +5 -5
  192. package/src/components/layoutWrapper/defaultLayout/index.tsx +1 -1
  193. package/src/components/layoutWrapper/index.tsx +87 -87
  194. package/src/components/pages/auth/components/forgotPassword/index.tsx +87 -96
  195. package/src/components/pages/auth/components/login/index.tsx +166 -181
  196. package/src/components/pages/auth/components/register/index.tsx +141 -159
  197. package/src/components/pages/auth/components/updatePassword/index.tsx +81 -87
  198. package/src/components/pages/auth/index.tsx +28 -28
  199. package/src/components/pages/config-error/index.tsx +422 -422
  200. package/src/components/pages/config-success/index.tsx +249 -260
  201. package/src/components/pages/error/index.tsx +48 -48
  202. package/src/components/pages/login/index.tsx +59 -73
  203. package/src/components/pages/ready/index.tsx +21 -29
  204. package/src/components/pages/welcome/index.tsx +7 -7
  205. package/src/components/routeChangeHandler/index.tsx +7 -7
  206. package/src/components/telemetry/index.tsx +31 -31
  207. package/src/components/undoableQueue/index.tsx +49 -49
  208. package/src/contexts/accessControl/IAccessControlContext.ts +34 -34
  209. package/src/contexts/accessControl/index.tsx +35 -35
  210. package/src/contexts/auditLog/IAuditLogContext.ts +22 -22
  211. package/src/contexts/auditLog/index.tsx +8 -8
  212. package/src/contexts/auth/IAuthContext.ts +10 -10
  213. package/src/contexts/auth/index.tsx +169 -169
  214. package/src/contexts/data/IDataContext.ts +203 -203
  215. package/src/contexts/data/index.tsx +18 -18
  216. package/src/contexts/legacy-router/IRouterContext.ts +23 -27
  217. package/src/contexts/legacy-router/index.tsx +30 -30
  218. package/src/contexts/live/ILiveContext.ts +49 -49
  219. package/src/contexts/live/index.tsx +5 -7
  220. package/src/contexts/notification/INotificationContext.ts +8 -8
  221. package/src/contexts/notification/index.tsx +8 -8
  222. package/src/contexts/refine/IRefineContext.ts +119 -119
  223. package/src/contexts/refine/index.tsx +80 -80
  224. package/src/contexts/resource/IResourceContext.ts +35 -35
  225. package/src/contexts/resource/index.tsx +16 -16
  226. package/src/contexts/router/index.tsx +7 -7
  227. package/src/contexts/router-picker/index.tsx +2 -2
  228. package/src/contexts/translation/ITranslationContext.ts +7 -7
  229. package/src/contexts/translation/index.tsx +12 -12
  230. package/src/contexts/undoableQueue/IUndoableQueueContext.ts +2 -2
  231. package/src/contexts/undoableQueue/actionTypes.ts +3 -3
  232. package/src/contexts/undoableQueue/index.ts +2 -2
  233. package/src/contexts/undoableQueue/undoableQueueContext.tsx +59 -60
  234. package/src/contexts/unsavedWarn/IUnsavedWarnContext.ts +2 -2
  235. package/src/contexts/unsavedWarn/index.tsx +7 -7
  236. package/src/definitions/helpers/check-router-prop-misuse/index.ts +20 -20
  237. package/src/definitions/helpers/downloadInBrowser/index.ts +19 -20
  238. package/src/definitions/helpers/flatten-object-keys/index.ts +26 -29
  239. package/src/definitions/helpers/generateDocumentTitle/index.ts +39 -45
  240. package/src/definitions/helpers/handleMultiple/index.ts +4 -4
  241. package/src/definitions/helpers/handlePaginationParams/index.ts +17 -18
  242. package/src/definitions/helpers/handleRefineOptions/index.ts +88 -90
  243. package/src/definitions/helpers/handleUseParams/index.tsx +7 -7
  244. package/src/definitions/helpers/hasPermission/index.ts +6 -6
  245. package/src/definitions/helpers/humanizeString/index.ts +9 -9
  246. package/src/definitions/helpers/importCSVMapper/index.ts +8 -8
  247. package/src/definitions/helpers/index.ts +2 -2
  248. package/src/definitions/helpers/keys/index.ts +205 -258
  249. package/src/definitions/helpers/legacy-resource-transform/index.ts +14 -14
  250. package/src/definitions/helpers/menu/create-resource-key.ts +20 -23
  251. package/src/definitions/helpers/menu/create-tree.ts +61 -63
  252. package/src/definitions/helpers/pick-resource/index.ts +25 -25
  253. package/src/definitions/helpers/pickDataProvider/index.ts +15 -15
  254. package/src/definitions/helpers/pickNotDeprecated/index.ts +2 -2
  255. package/src/definitions/helpers/property-path-to-array/index.ts +3 -3
  256. package/src/definitions/helpers/queryKeys/index.ts +92 -92
  257. package/src/definitions/helpers/redirectPage/index.ts +19 -19
  258. package/src/definitions/helpers/routeGenerator/index.ts +15 -15
  259. package/src/definitions/helpers/router/__tests__/check-by-segments.ts +12 -15
  260. package/src/definitions/helpers/router/__tests__/compose-route.ts +48 -48
  261. package/src/definitions/helpers/router/__tests__/get-action-routes-from-resource.ts +152 -152
  262. package/src/definitions/helpers/router/__tests__/get-default-action-path.ts +39 -41
  263. package/src/definitions/helpers/router/__tests__/get-parent-prefix-for-resource.ts +69 -73
  264. package/src/definitions/helpers/router/__tests__/get-parent-resource.ts +40 -40
  265. package/src/definitions/helpers/router/__tests__/is-segment-counts-same.ts +11 -14
  266. package/src/definitions/helpers/router/__tests__/match-resource-from-route.ts +55 -55
  267. package/src/definitions/helpers/router/__tests__/pick-matched-route.ts +74 -74
  268. package/src/definitions/helpers/router/__tests__/pick-route-params.ts +12 -12
  269. package/src/definitions/helpers/router/__tests__/prepare-route-params.ts +18 -18
  270. package/src/definitions/helpers/router/__tests__/remove-leading-trailing-slashes.ts +9 -9
  271. package/src/definitions/helpers/router/__tests__/split-to-segments.ts +9 -9
  272. package/src/definitions/helpers/router/check-by-segments.ts +12 -12
  273. package/src/definitions/helpers/router/compose-route.ts +25 -27
  274. package/src/definitions/helpers/router/get-action-routes-from-resource.ts +41 -47
  275. package/src/definitions/helpers/router/get-default-action-path.ts +19 -19
  276. package/src/definitions/helpers/router/get-parent-prefix-for-resource.ts +22 -24
  277. package/src/definitions/helpers/router/get-parent-resource.ts +18 -18
  278. package/src/definitions/helpers/router/is-parameter.ts +1 -1
  279. package/src/definitions/helpers/router/is-segment-counts-same.ts +3 -3
  280. package/src/definitions/helpers/router/match-resource-from-route.ts +19 -19
  281. package/src/definitions/helpers/router/pick-matched-route.ts +44 -44
  282. package/src/definitions/helpers/router/pick-route-params.ts +7 -7
  283. package/src/definitions/helpers/router/prepare-route-params.ts +13 -10
  284. package/src/definitions/helpers/router/remove-leading-trailing-slashes.ts +1 -1
  285. package/src/definitions/helpers/router/split-to-segments.ts +2 -2
  286. package/src/definitions/helpers/safe-translate/index.ts +12 -12
  287. package/src/definitions/helpers/sanitize-resource/index.ts +26 -27
  288. package/src/definitions/helpers/sequentialPromises/index.ts +21 -21
  289. package/src/definitions/helpers/treeView/createTreeView/index.ts +33 -33
  290. package/src/definitions/helpers/useActiveAuthProvider/index.ts +18 -18
  291. package/src/definitions/helpers/useInfinitePagination/index.ts +16 -16
  292. package/src/definitions/helpers/useMediaQuery/index.ts +11 -11
  293. package/src/definitions/helpers/useUserFriendlyName/index.ts +11 -14
  294. package/src/definitions/helpers/userFriendlyResourceName/index.ts +7 -7
  295. package/src/definitions/helpers/userFriendlySeconds/index.ts +1 -1
  296. package/src/definitions/table/index.ts +127 -130
  297. package/src/definitions/upload/file2Base64/index.ts +15 -15
  298. package/src/hooks/accessControl/useCan/index.ts +52 -54
  299. package/src/hooks/accessControl/useCanWithoutCache.ts +25 -26
  300. package/src/hooks/auditLog/useLog/index.ts +114 -114
  301. package/src/hooks/auditLog/useLogList/index.ts +44 -44
  302. package/src/hooks/auth/useForgotPassword/index.ts +158 -163
  303. package/src/hooks/auth/useGetIdentity/index.ts +55 -57
  304. package/src/hooks/auth/useInvalidateAuthStore/index.ts +12 -12
  305. package/src/hooks/auth/useIsAuthenticated/index.ts +44 -48
  306. package/src/hooks/auth/useIsExistAuthentication/index.ts +3 -3
  307. package/src/hooks/auth/useLogin/index.ts +181 -194
  308. package/src/hooks/auth/useLogout/index.ts +175 -177
  309. package/src/hooks/auth/useOnError/index.ts +76 -76
  310. package/src/hooks/auth/usePermissions/index.ts +94 -61
  311. package/src/hooks/auth/useRegister/index.ts +166 -178
  312. package/src/hooks/auth/useUpdatePassword/index.ts +183 -194
  313. package/src/hooks/breadcrumb/index.ts +99 -106
  314. package/src/hooks/data/useApiUrl.ts +7 -8
  315. package/src/hooks/data/useCreate.ts +241 -241
  316. package/src/hooks/data/useCreateMany.ts +219 -226
  317. package/src/hooks/data/useCustom.ts +181 -182
  318. package/src/hooks/data/useCustomMutation.ts +174 -174
  319. package/src/hooks/data/useDataProvider.tsx +27 -29
  320. package/src/hooks/data/useDelete.ts +447 -454
  321. package/src/hooks/data/useDeleteMany.ts +475 -484
  322. package/src/hooks/data/useInfiniteList.ts +280 -280
  323. package/src/hooks/data/useList.ts +280 -283
  324. package/src/hooks/data/useMany.ts +215 -216
  325. package/src/hooks/data/useOne.ts +210 -211
  326. package/src/hooks/data/useUpdate.ts +529 -556
  327. package/src/hooks/data/useUpdateMany.ts +556 -584
  328. package/src/hooks/deepMemo/index.tsx +5 -5
  329. package/src/hooks/export/csvDownload.interface.ts +13 -13
  330. package/src/hooks/export/index.ts +223 -217
  331. package/src/hooks/form/useForm.ts +543 -560
  332. package/src/hooks/import/index.tsx +254 -260
  333. package/src/hooks/invalidate/index.tsx +75 -75
  334. package/src/hooks/legacy-router/useRouterContext.ts +11 -11
  335. package/src/hooks/live/useLiveMode/index.ts +4 -4
  336. package/src/hooks/live/usePublish/index.ts +2 -2
  337. package/src/hooks/live/useResourceSubscription/index.ts +103 -103
  338. package/src/hooks/live/useSubscription/index.ts +77 -77
  339. package/src/hooks/memoized/index.tsx +6 -6
  340. package/src/hooks/menu/useMenu.tsx +113 -120
  341. package/src/hooks/modal/useModal/index.tsx +16 -16
  342. package/src/hooks/navigation/index.ts +362 -392
  343. package/src/hooks/notification/useCancelNotification/index.tsx +5 -5
  344. package/src/hooks/notification/useHandleNotification/index.ts +17 -17
  345. package/src/hooks/notification/useNotification/index.ts +2 -2
  346. package/src/hooks/redirection/index.ts +45 -46
  347. package/src/hooks/refine/useMutationMode.ts +4 -4
  348. package/src/hooks/refine/useRefineContext.ts +36 -36
  349. package/src/hooks/refine/useSyncWithLocation.ts +3 -3
  350. package/src/hooks/refine/useTitle.tsx +2 -2
  351. package/src/hooks/refine/useWarnAboutChange/index.ts +12 -12
  352. package/src/hooks/resource/useResource/index.ts +141 -146
  353. package/src/hooks/resource/useResourceWithRoute/index.ts +12 -12
  354. package/src/hooks/router/use-back/index.tsx +7 -7
  355. package/src/hooks/router/use-get-to-path/index.ts +35 -35
  356. package/src/hooks/router/use-go/index.tsx +66 -66
  357. package/src/hooks/router/use-link/index.tsx +8 -9
  358. package/src/hooks/router/use-parse/index.tsx +13 -13
  359. package/src/hooks/router/use-parsed/index.tsx +4 -4
  360. package/src/hooks/router/use-router-misuse-warning/index.ts +10 -10
  361. package/src/hooks/router/use-to-path/index.ts +10 -10
  362. package/src/hooks/show/useShow.ts +135 -135
  363. package/src/hooks/translate/useGetLocale.ts +2 -2
  364. package/src/hooks/translate/useSetLocale.ts +2 -2
  365. package/src/hooks/translate/useTranslate.ts +24 -25
  366. package/src/hooks/useKeys/index.tsx +7 -7
  367. package/src/hooks/useLoadingOvertime/index.ts +74 -76
  368. package/src/hooks/useMeta/index.ts +20 -20
  369. package/src/hooks/useSelect/index.ts +317 -277
  370. package/src/hooks/useTable/index.ts +483 -507
  371. package/src/hooks/useTelemetryData/index.ts +48 -48
  372. package/src/index.tsx +125 -125
  373. package/src/interfaces/actions.ts +2 -2
  374. package/src/interfaces/auditLog/logData.ts +9 -9
  375. package/src/interfaces/auth.tsx +176 -176
  376. package/src/interfaces/autoSave.ts +37 -37
  377. package/src/interfaces/bindings/access-control.ts +21 -21
  378. package/src/interfaces/bindings/auth.ts +27 -25
  379. package/src/interfaces/bindings/data.ts +2 -2
  380. package/src/interfaces/bindings/i18n.ts +8 -8
  381. package/src/interfaces/bindings/index.ts +15 -15
  382. package/src/interfaces/bindings/live.ts +28 -28
  383. package/src/interfaces/bindings/notifications.ts +8 -8
  384. package/src/interfaces/bindings/resource.ts +127 -127
  385. package/src/interfaces/bindings/router.ts +26 -26
  386. package/src/interfaces/customComponents.ts +17 -17
  387. package/src/interfaces/errors/HttpError.ts +8 -8
  388. package/src/interfaces/form-url-params.ts +6 -6
  389. package/src/interfaces/index.ts +8 -10
  390. package/src/interfaces/live/LiveEvent.ts +10 -10
  391. package/src/interfaces/live/LiveModeProps.ts +21 -21
  392. package/src/interfaces/mapDataFn.ts +1 -1
  393. package/src/interfaces/metaData/graphqlQueryOptions.ts +49 -49
  394. package/src/interfaces/metaData/metaDataQuery.ts +2 -2
  395. package/src/interfaces/metaData/metaQuery.ts +3 -3
  396. package/src/interfaces/metaData/nestedField.ts +3 -3
  397. package/src/interfaces/metaData/queryBuilderOptions.ts +3 -3
  398. package/src/interfaces/metaData/variableOptions.ts +8 -8
  399. package/src/interfaces/mutationMode.ts +14 -14
  400. package/src/interfaces/notification.ts +7 -7
  401. package/src/interfaces/optimistic-update-map.ts +42 -42
  402. package/src/interfaces/prettify.ts +1 -1
  403. package/src/interfaces/queryKey.ts +16 -16
  404. package/src/interfaces/resourceErrorRouterParams.ts +2 -2
  405. package/src/interfaces/resourceRouterParams.ts +3 -3
  406. package/src/interfaces/successErrorNotification.ts +24 -24
  407. package/src/interfaces/telemetry.ts +13 -13
  408. package/src/interfaces/textTransformers.ts +18 -18
  409. package/tsconfig.json +26 -26
@@ -1,123 +1,123 @@
1
1
  import { getXRay } from "@refinedev/devtools-internal";
2
2
  import {
3
- useMutation,
4
- UseMutationOptions,
5
- UseMutationResult,
6
- useQueryClient,
3
+ useMutation,
4
+ UseMutationOptions,
5
+ UseMutationResult,
6
+ useQueryClient,
7
7
  } from "@tanstack/react-query";
8
8
 
9
9
  import { ActionTypes } from "@contexts/undoableQueue";
10
10
  import {
11
- handleMultiple,
12
- pickDataProvider,
13
- pickNotDeprecated,
14
- queryKeysReplacement,
15
- useActiveAuthProvider,
11
+ handleMultiple,
12
+ pickDataProvider,
13
+ pickNotDeprecated,
14
+ queryKeysReplacement,
15
+ useActiveAuthProvider,
16
16
  } from "@definitions";
17
17
  import {
18
- useCancelNotification,
19
- useDataProvider,
20
- useHandleNotification,
21
- useInvalidate,
22
- useLog,
23
- useMeta,
24
- useMutationMode,
25
- useOnError,
26
- usePublish,
27
- useRefineContext,
28
- useResource,
29
- useTranslate,
18
+ useCancelNotification,
19
+ useDataProvider,
20
+ useHandleNotification,
21
+ useInvalidate,
22
+ useLog,
23
+ useMeta,
24
+ useMutationMode,
25
+ useOnError,
26
+ usePublish,
27
+ useRefineContext,
28
+ useResource,
29
+ useTranslate,
30
30
  } from "@hooks";
31
31
  import { useKeys } from "@hooks/useKeys";
32
32
  import {
33
- BaseKey,
34
- BaseRecord,
35
- DeleteManyResponse,
36
- GetListResponse,
37
- HttpError,
38
- IQueryKeys,
39
- MetaQuery,
40
- MutationMode,
41
- PrevContext as DeleteContext,
42
- PreviousQuery,
43
- SuccessErrorNotification,
33
+ BaseKey,
34
+ BaseRecord,
35
+ DeleteManyResponse,
36
+ GetListResponse,
37
+ HttpError,
38
+ IQueryKeys,
39
+ MetaQuery,
40
+ MutationMode,
41
+ PrevContext as DeleteContext,
42
+ PreviousQuery,
43
+ SuccessErrorNotification,
44
44
  } from "../../interfaces";
45
45
  import {
46
- useLoadingOvertime,
47
- UseLoadingOvertimeOptionsProps,
48
- UseLoadingOvertimeReturnType,
46
+ useLoadingOvertime,
47
+ UseLoadingOvertimeOptionsProps,
48
+ UseLoadingOvertimeReturnType,
49
49
  } from "../useLoadingOvertime";
50
50
 
51
51
  export type DeleteManyParams<TData, TError, TVariables> = {
52
- /**
53
- * ids for mutation function
54
- */
55
- ids: BaseKey[];
56
- /**
57
- * Resource name for API data interactions
58
- */
59
- resource: string;
60
- /**
61
- * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)
62
- */
63
- mutationMode?: MutationMode;
64
- /**
65
- * Duration in ms to wait before executing the mutation when `mutationMode = "undoable"`
66
- */
67
- undoableTimeout?: number;
68
- /**
69
- * Provides a function to cancel the mutation when `mutationMode = "undoable"`
70
- */
71
- onCancel?: (cancelMutation: () => void) => void;
72
- /**
73
- * Metadata query for dataProvider
74
- */
75
- meta?: MetaQuery;
76
- /**
77
- * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.
78
- */
79
- metaData?: MetaQuery;
80
- /**
81
- * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
82
- * @default "default"
83
- */
84
- dataProviderName?: string;
85
- /**
86
- * You can use it to manage the invalidations that will occur at the end of the mutation.
87
- */
88
- invalidates?: Array<keyof IQueryKeys>;
89
- /**
90
- * Values for mutation function
91
- */
92
- values?: TVariables;
52
+ /**
53
+ * ids for mutation function
54
+ */
55
+ ids: BaseKey[];
56
+ /**
57
+ * Resource name for API data interactions
58
+ */
59
+ resource: string;
60
+ /**
61
+ * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)
62
+ */
63
+ mutationMode?: MutationMode;
64
+ /**
65
+ * Duration in ms to wait before executing the mutation when `mutationMode = "undoable"`
66
+ */
67
+ undoableTimeout?: number;
68
+ /**
69
+ * Provides a function to cancel the mutation when `mutationMode = "undoable"`
70
+ */
71
+ onCancel?: (cancelMutation: () => void) => void;
72
+ /**
73
+ * Metadata query for dataProvider
74
+ */
75
+ meta?: MetaQuery;
76
+ /**
77
+ * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.
78
+ */
79
+ metaData?: MetaQuery;
80
+ /**
81
+ * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
82
+ * @default "default"
83
+ */
84
+ dataProviderName?: string;
85
+ /**
86
+ * You can use it to manage the invalidations that will occur at the end of the mutation.
87
+ */
88
+ invalidates?: Array<keyof IQueryKeys>;
89
+ /**
90
+ * Values for mutation function
91
+ */
92
+ values?: TVariables;
93
93
  } & SuccessErrorNotification<DeleteManyResponse<TData>, TError, BaseKey[]>;
94
94
 
95
95
  export type UseDeleteManyReturnType<
96
- TData extends BaseRecord = BaseRecord,
97
- TError = HttpError,
98
- TVariables = {},
96
+ TData extends BaseRecord = BaseRecord,
97
+ TError = HttpError,
98
+ TVariables = {},
99
99
  > = UseMutationResult<
100
- DeleteManyResponse<TData>,
101
- TError,
102
- DeleteManyParams<TData, TError, TVariables>,
103
- unknown
100
+ DeleteManyResponse<TData>,
101
+ TError,
102
+ DeleteManyParams<TData, TError, TVariables>,
103
+ unknown
104
104
  > &
105
- UseLoadingOvertimeReturnType;
105
+ UseLoadingOvertimeReturnType;
106
106
 
107
107
  export type UseDeleteManyProps<
108
- TData extends BaseRecord = BaseRecord,
109
- TError extends HttpError = HttpError,
110
- TVariables = {},
108
+ TData extends BaseRecord = BaseRecord,
109
+ TError extends HttpError = HttpError,
110
+ TVariables = {},
111
111
  > = {
112
- mutationOptions?: Omit<
113
- UseMutationOptions<
114
- DeleteManyResponse<TData>,
115
- TError,
116
- DeleteManyParams<TData, TError, TVariables>,
117
- DeleteContext<TData>
118
- >,
119
- "mutationFn" | "onError" | "onSuccess" | "onSettled" | "onMutate"
120
- >;
112
+ mutationOptions?: Omit<
113
+ UseMutationOptions<
114
+ DeleteManyResponse<TData>,
115
+ TError,
116
+ DeleteManyParams<TData, TError, TVariables>,
117
+ DeleteContext<TData>
118
+ >,
119
+ "mutationFn" | "onError" | "onSuccess" | "onSettled" | "onMutate"
120
+ >;
121
121
  } & UseLoadingOvertimeOptionsProps;
122
122
 
123
123
  /**
@@ -133,409 +133,400 @@ export type UseDeleteManyProps<
133
133
  *
134
134
  */
135
135
  export const useDeleteMany = <
136
- TData extends BaseRecord = BaseRecord,
137
- TError extends HttpError = HttpError,
138
- TVariables = {},
136
+ TData extends BaseRecord = BaseRecord,
137
+ TError extends HttpError = HttpError,
138
+ TVariables = {},
139
139
  >({
140
- mutationOptions,
141
- overtimeOptions,
140
+ mutationOptions,
141
+ overtimeOptions,
142
142
  }: UseDeleteManyProps<TData, TError, TVariables> = {}): UseDeleteManyReturnType<
143
- TData,
144
- TError,
145
- TVariables
143
+ TData,
144
+ TError,
145
+ TVariables
146
146
  > => {
147
- const authProvider = useActiveAuthProvider();
148
- const { mutate: checkError } = useOnError({
149
- v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),
150
- });
151
-
152
- const {
153
- mutationMode: mutationModeContext,
154
- undoableTimeout: undoableTimeoutContext,
155
- } = useMutationMode();
156
- const dataProvider = useDataProvider();
157
- const { notificationDispatch } = useCancelNotification();
158
- const translate = useTranslate();
159
- const publish = usePublish();
160
- const handleNotification = useHandleNotification();
161
- const invalidateStore = useInvalidate();
162
- const { log } = useLog();
163
- const { resources, select } = useResource();
164
- const queryClient = useQueryClient();
165
- const getMeta = useMeta();
166
- const {
167
- options: { textTransformers },
168
- } = useRefineContext();
169
- const { keys, preferLegacyKeys } = useKeys();
170
-
171
- const mutation = useMutation<
172
- DeleteManyResponse<TData>,
173
- TError,
174
- DeleteManyParams<TData, TError, TVariables>,
175
- DeleteContext<TData>
176
- >({
177
- mutationFn: ({
178
- resource: resourceName,
147
+ const authProvider = useActiveAuthProvider();
148
+ const { mutate: checkError } = useOnError({
149
+ v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),
150
+ });
151
+
152
+ const {
153
+ mutationMode: mutationModeContext,
154
+ undoableTimeout: undoableTimeoutContext,
155
+ } = useMutationMode();
156
+ const dataProvider = useDataProvider();
157
+ const { notificationDispatch } = useCancelNotification();
158
+ const translate = useTranslate();
159
+ const publish = usePublish();
160
+ const handleNotification = useHandleNotification();
161
+ const invalidateStore = useInvalidate();
162
+ const { log } = useLog();
163
+ const { resources, select } = useResource();
164
+ const queryClient = useQueryClient();
165
+ const getMeta = useMeta();
166
+ const {
167
+ options: { textTransformers },
168
+ } = useRefineContext();
169
+ const { keys, preferLegacyKeys } = useKeys();
170
+
171
+ const mutation = useMutation<
172
+ DeleteManyResponse<TData>,
173
+ TError,
174
+ DeleteManyParams<TData, TError, TVariables>,
175
+ DeleteContext<TData>
176
+ >({
177
+ mutationFn: ({
178
+ resource: resourceName,
179
+ ids,
180
+ mutationMode,
181
+ undoableTimeout,
182
+ onCancel,
183
+ meta,
184
+ metaData,
185
+ dataProviderName,
186
+ values,
187
+ }: DeleteManyParams<TData, TError, TVariables>) => {
188
+ const { resource, identifier } = select(resourceName);
189
+
190
+ const combinedMeta = getMeta({
191
+ resource,
192
+ meta: pickNotDeprecated(meta, metaData),
193
+ });
194
+
195
+ const mutationModePropOrContext = mutationMode ?? mutationModeContext;
196
+
197
+ const undoableTimeoutPropOrContext =
198
+ undoableTimeout ?? undoableTimeoutContext;
199
+
200
+ const selectedDataProvider = dataProvider(
201
+ pickDataProvider(identifier, dataProviderName, resources),
202
+ );
203
+
204
+ const mutationFn = () => {
205
+ if (selectedDataProvider.deleteMany) {
206
+ return selectedDataProvider.deleteMany<TData, TVariables>({
207
+ resource: resource.name,
179
208
  ids,
180
- mutationMode,
181
- undoableTimeout,
182
- onCancel,
183
- meta,
184
- metaData,
185
- dataProviderName,
186
- values,
187
- }: DeleteManyParams<TData, TError, TVariables>) => {
188
- const { resource, identifier } = select(resourceName);
189
-
190
- const combinedMeta = getMeta({
191
- resource,
192
- meta: pickNotDeprecated(meta, metaData),
193
- });
194
-
195
- const mutationModePropOrContext =
196
- mutationMode ?? mutationModeContext;
197
-
198
- const undoableTimeoutPropOrContext =
199
- undoableTimeout ?? undoableTimeoutContext;
209
+ meta: combinedMeta,
210
+ metaData: combinedMeta,
211
+ variables: values,
212
+ });
213
+ }
214
+ return handleMultiple(
215
+ ids.map((id) =>
216
+ selectedDataProvider.deleteOne<TData, TVariables>({
217
+ resource: resource.name,
218
+ id,
219
+ meta: combinedMeta,
220
+ metaData: combinedMeta,
221
+ variables: values,
222
+ }),
223
+ ),
224
+ );
225
+ };
226
+
227
+ if (!(mutationModePropOrContext === "undoable")) {
228
+ return mutationFn();
229
+ }
230
+
231
+ const updatePromise = new Promise<DeleteManyResponse<TData>>(
232
+ (resolve, reject) => {
233
+ const doMutation = () => {
234
+ mutationFn()
235
+ .then((result) => resolve(result))
236
+ .catch((err) => reject(err));
237
+ };
238
+
239
+ const cancelMutation = () => {
240
+ reject({ message: "mutationCancelled" });
241
+ };
242
+
243
+ if (onCancel) {
244
+ onCancel(cancelMutation);
245
+ }
246
+
247
+ notificationDispatch({
248
+ type: ActionTypes.ADD,
249
+ payload: {
250
+ id: ids,
251
+ resource: identifier,
252
+ cancelMutation: cancelMutation,
253
+ doMutation: doMutation,
254
+ seconds: undoableTimeoutPropOrContext,
255
+ isSilent: !!onCancel,
256
+ },
257
+ });
258
+ },
259
+ );
260
+ return updatePromise;
261
+ },
262
+ onMutate: async ({
263
+ ids,
264
+ resource: resourceName,
265
+ mutationMode,
266
+ dataProviderName,
267
+ meta,
268
+ metaData,
269
+ }) => {
270
+ const { identifier } = select(resourceName);
271
+
272
+ const {
273
+ gqlMutation: _,
274
+ gqlQuery: __,
275
+ ...preferredMeta
276
+ } = pickNotDeprecated(meta, metaData) ?? {};
277
+
278
+ const queryKey = queryKeysReplacement(preferLegacyKeys)(
279
+ identifier,
280
+ pickDataProvider(identifier, dataProviderName, resources),
281
+ preferredMeta,
282
+ );
283
+
284
+ const resourceKeys = keys()
285
+ .data(pickDataProvider(identifier, dataProviderName, resources))
286
+ .resource(identifier);
287
+
288
+ const mutationModePropOrContext = mutationMode ?? mutationModeContext;
289
+
290
+ await queryClient.cancelQueries(
291
+ resourceKeys.get(preferLegacyKeys),
292
+ undefined,
293
+ {
294
+ silent: true,
295
+ },
296
+ );
297
+
298
+ const previousQueries: PreviousQuery<TData>[] =
299
+ queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));
300
+
301
+ if (mutationModePropOrContext !== "pessimistic") {
302
+ // Set the previous queries to the new ones:
303
+ queryClient.setQueriesData(
304
+ resourceKeys
305
+ .action("list")
306
+ .params(preferredMeta ?? {})
307
+ .get(preferLegacyKeys),
308
+ (previous?: GetListResponse<TData> | null) => {
309
+ if (!previous) {
310
+ return null;
311
+ }
200
312
 
201
- const selectedDataProvider = dataProvider(
202
- pickDataProvider(identifier, dataProviderName, resources),
313
+ const data = previous.data.filter(
314
+ (item) =>
315
+ item.id && !ids.map(String).includes(item.id.toString()),
203
316
  );
204
317
 
205
- const mutationFn = () => {
206
- if (selectedDataProvider.deleteMany) {
207
- return selectedDataProvider.deleteMany<TData, TVariables>({
208
- resource: resource.name,
209
- ids,
210
- meta: combinedMeta,
211
- metaData: combinedMeta,
212
- variables: values,
213
- });
214
- } else {
215
- return handleMultiple(
216
- ids.map((id) =>
217
- selectedDataProvider.deleteOne<TData, TVariables>({
218
- resource: resource.name,
219
- id,
220
- meta: combinedMeta,
221
- metaData: combinedMeta,
222
- variables: values,
223
- }),
224
- ),
225
- );
226
- }
318
+ return {
319
+ data,
320
+ total: previous.total - 1,
227
321
  };
228
-
229
- if (!(mutationModePropOrContext === "undoable")) {
230
- return mutationFn();
322
+ },
323
+ );
324
+
325
+ queryClient.setQueriesData(
326
+ resourceKeys.action("many").get(preferLegacyKeys),
327
+ (previous?: GetListResponse<TData> | null) => {
328
+ if (!previous) {
329
+ return null;
231
330
  }
232
331
 
233
- const updatePromise = new Promise<DeleteManyResponse<TData>>(
234
- (resolve, reject) => {
235
- const doMutation = () => {
236
- mutationFn()
237
- .then((result) => resolve(result))
238
- .catch((err) => reject(err));
239
- };
240
-
241
- const cancelMutation = () => {
242
- reject({ message: "mutationCancelled" });
243
- };
244
-
245
- if (onCancel) {
246
- onCancel(cancelMutation);
247
- }
248
-
249
- notificationDispatch({
250
- type: ActionTypes.ADD,
251
- payload: {
252
- id: ids,
253
- resource: identifier,
254
- cancelMutation: cancelMutation,
255
- doMutation: doMutation,
256
- seconds: undoableTimeoutPropOrContext,
257
- isSilent: !!onCancel,
258
- },
259
- });
260
- },
261
- );
262
- return updatePromise;
263
- },
264
- onMutate: async ({
265
- ids,
266
- resource: resourceName,
267
- mutationMode,
268
- dataProviderName,
269
- meta,
270
- metaData,
271
- }) => {
272
- const { identifier } = select(resourceName);
273
-
274
- const {
275
- gqlMutation: _,
276
- gqlQuery: __,
277
- ...preferredMeta
278
- } = pickNotDeprecated(meta, metaData) ?? {};
279
-
280
- const queryKey = queryKeysReplacement(preferLegacyKeys)(
281
- identifier,
282
- pickDataProvider(identifier, dataProviderName, resources),
283
- preferredMeta,
284
- );
285
-
286
- const resourceKeys = keys()
287
- .data(pickDataProvider(identifier, dataProviderName, resources))
288
- .resource(identifier);
289
-
290
- const mutationModePropOrContext =
291
- mutationMode ?? mutationModeContext;
292
-
293
- await queryClient.cancelQueries(
294
- resourceKeys.get(preferLegacyKeys),
295
- undefined,
296
- {
297
- silent: true,
298
- },
299
- );
300
-
301
- const previousQueries: PreviousQuery<TData>[] =
302
- queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));
303
-
304
- if (mutationModePropOrContext !== "pessimistic") {
305
- // Set the previous queries to the new ones:
306
- queryClient.setQueriesData(
307
- resourceKeys
308
- .action("list")
309
- .params(preferredMeta ?? {})
310
- .get(preferLegacyKeys),
311
- (previous?: GetListResponse<TData> | null) => {
312
- if (!previous) {
313
- return null;
314
- }
315
-
316
- const data = previous.data.filter(
317
- (item) =>
318
- item.id &&
319
- !ids.map(String).includes(item.id.toString()),
320
- );
321
-
322
- return {
323
- data,
324
- total: previous.total - 1,
325
- };
326
- },
327
- );
328
-
329
- queryClient.setQueriesData(
330
- resourceKeys.action("many").get(preferLegacyKeys),
331
- (previous?: GetListResponse<TData> | null) => {
332
- if (!previous) {
333
- return null;
334
- }
335
-
336
- const data = previous.data.filter((record: TData) => {
337
- if (record.id) {
338
- return !ids
339
- .map(String)
340
- .includes(record.id.toString());
341
- }
342
- return false;
343
- });
344
-
345
- return {
346
- ...previous,
347
- data,
348
- };
349
- },
350
- );
351
-
352
- for (const id of ids) {
353
- queryClient.setQueriesData(
354
- resourceKeys
355
- .action("one")
356
- .id(id)
357
- .params(preferredMeta)
358
- .get(preferLegacyKeys),
359
- (previous?: any | null) => {
360
- if (!previous || previous.data.id == id) {
361
- return null;
362
- }
363
- return {
364
- ...previous,
365
- };
366
- },
367
- );
368
- }
369
- }
332
+ const data = previous.data.filter((record: TData) => {
333
+ if (record.id) {
334
+ return !ids.map(String).includes(record.id.toString());
335
+ }
336
+ return false;
337
+ });
370
338
 
371
339
  return {
372
- previousQueries,
373
- queryKey,
340
+ ...previous,
341
+ data,
374
342
  };
375
- },
376
- // Always refetch after error or success:
377
- onSettled: (
378
- _data,
379
- _error,
380
- {
381
- resource: resourceName,
382
- ids,
383
- dataProviderName,
384
- invalidates = ["list", "many"],
343
+ },
344
+ );
345
+
346
+ for (const id of ids) {
347
+ queryClient.setQueriesData(
348
+ resourceKeys
349
+ .action("one")
350
+ .id(id)
351
+ .params(preferredMeta)
352
+ .get(preferLegacyKeys),
353
+ (previous?: any | null) => {
354
+ if (!previous || previous.data.id === id) {
355
+ return null;
356
+ }
357
+ return {
358
+ ...previous,
359
+ };
385
360
  },
386
- ) => {
387
- const { identifier } = select(resourceName);
388
-
389
- // invalidate the cache for the list and many queries:
390
- invalidateStore({
391
- resource: identifier,
392
- dataProviderName: pickDataProvider(
393
- identifier,
394
- dataProviderName,
395
- resources,
396
- ),
397
- invalidates,
398
- });
399
-
400
- notificationDispatch({
401
- type: ActionTypes.REMOVE,
402
- payload: { id: ids, resource: identifier },
403
- });
404
- },
405
- onSuccess: (
406
- _data,
407
- {
408
- ids,
409
- resource: resourceName,
410
- meta,
411
- metaData,
412
- dataProviderName: dataProviderNameFromProp,
413
- successNotification,
414
- },
415
- context,
416
- ) => {
417
- const { resource, identifier } = select(resourceName);
418
-
419
- const dataProviderName = pickDataProvider(
420
- identifier,
421
- dataProviderNameFromProp,
422
- resources,
423
- );
424
-
425
- const combinedMeta = getMeta({
426
- resource,
427
- meta: pickNotDeprecated(meta, metaData),
428
- });
429
-
430
- // Remove the queries from the cache:
431
- ids.forEach((id) =>
432
- queryClient.removeQueries(context?.queryKey.detail(id)),
433
- );
434
-
435
- const notificationConfig =
436
- typeof successNotification === "function"
437
- ? successNotification(_data, ids, identifier)
438
- : successNotification;
439
-
440
- handleNotification(notificationConfig, {
441
- key: `${ids}-${identifier}-notification`,
442
- description: translate("notifications.success", "Success"),
443
- message: translate(
444
- "notifications.deleteSuccess",
445
- {
446
- resource: translate(
447
- `${identifier}.${identifier}`,
448
- identifier,
449
- ),
450
- },
451
- `Successfully deleted ${identifier}`,
452
- ),
453
- type: "success",
454
- });
455
-
456
- publish?.({
457
- channel: `resources/${resource.name}`,
458
- type: "deleted",
459
- payload: { ids },
460
- date: new Date(),
461
- meta: {
462
- ...combinedMeta,
463
- dataProviderName,
464
- },
465
- });
466
-
467
- const {
468
- fields: _fields,
469
- operation: _operation,
470
- variables: _variables,
471
- ...rest
472
- } = combinedMeta || {};
473
- log?.mutate({
474
- action: "deleteMany",
475
- resource: resource.name,
476
- meta: {
477
- ids,
478
- dataProviderName,
479
- ...rest,
480
- },
481
- });
482
-
483
- // Remove the queries from the cache:
484
- ids.forEach((id) =>
485
- queryClient.removeQueries(context?.queryKey.detail(id)),
486
- );
487
- },
488
- onError: (
489
- err,
490
- { ids, resource: resourceName, errorNotification },
491
- context,
492
- ) => {
493
- const { identifier } = select(resourceName);
494
-
495
- // set back the queries to the context:
496
- if (context) {
497
- for (const query of context.previousQueries) {
498
- queryClient.setQueryData(query[0], query[1]);
499
- }
500
- }
501
-
502
- if (err.message !== "mutationCancelled") {
503
- checkError(err);
504
- const resourceSingular = textTransformers.singular(identifier);
505
-
506
- const notificationConfig =
507
- typeof errorNotification === "function"
508
- ? errorNotification(err, ids, identifier)
509
- : errorNotification;
510
-
511
- handleNotification(notificationConfig, {
512
- key: `${ids}-${identifier}-notification`,
513
- message: translate(
514
- "notifications.deleteError",
515
- {
516
- resource: resourceSingular,
517
- statusCode: err.statusCode,
518
- },
519
- `Error (status code: ${err.statusCode})`,
520
- ),
521
- description: err.message,
522
- type: "error",
523
- });
524
- }
361
+ );
362
+ }
363
+ }
364
+
365
+ return {
366
+ previousQueries,
367
+ queryKey,
368
+ };
369
+ },
370
+ // Always refetch after error or success:
371
+ onSettled: (
372
+ _data,
373
+ _error,
374
+ {
375
+ resource: resourceName,
376
+ ids,
377
+ dataProviderName,
378
+ invalidates = ["list", "many"],
379
+ },
380
+ ) => {
381
+ const { identifier } = select(resourceName);
382
+
383
+ // invalidate the cache for the list and many queries:
384
+ invalidateStore({
385
+ resource: identifier,
386
+ dataProviderName: pickDataProvider(
387
+ identifier,
388
+ dataProviderName,
389
+ resources,
390
+ ),
391
+ invalidates,
392
+ });
393
+
394
+ notificationDispatch({
395
+ type: ActionTypes.REMOVE,
396
+ payload: { id: ids, resource: identifier },
397
+ });
398
+ },
399
+ onSuccess: (
400
+ _data,
401
+ {
402
+ ids,
403
+ resource: resourceName,
404
+ meta,
405
+ metaData,
406
+ dataProviderName: dataProviderNameFromProp,
407
+ successNotification,
408
+ },
409
+ context,
410
+ ) => {
411
+ const { resource, identifier } = select(resourceName);
412
+
413
+ const dataProviderName = pickDataProvider(
414
+ identifier,
415
+ dataProviderNameFromProp,
416
+ resources,
417
+ );
418
+
419
+ const combinedMeta = getMeta({
420
+ resource,
421
+ meta: pickNotDeprecated(meta, metaData),
422
+ });
423
+
424
+ // Remove the queries from the cache:
425
+ ids.forEach((id) =>
426
+ queryClient.removeQueries(context?.queryKey.detail(id)),
427
+ );
428
+
429
+ const notificationConfig =
430
+ typeof successNotification === "function"
431
+ ? successNotification(_data, ids, identifier)
432
+ : successNotification;
433
+
434
+ handleNotification(notificationConfig, {
435
+ key: `${ids}-${identifier}-notification`,
436
+ description: translate("notifications.success", "Success"),
437
+ message: translate(
438
+ "notifications.deleteSuccess",
439
+ {
440
+ resource: translate(`${identifier}.${identifier}`, identifier),
441
+ },
442
+ `Successfully deleted ${identifier}`,
443
+ ),
444
+ type: "success",
445
+ });
446
+
447
+ publish?.({
448
+ channel: `resources/${resource.name}`,
449
+ type: "deleted",
450
+ payload: { ids },
451
+ date: new Date(),
452
+ meta: {
453
+ ...combinedMeta,
454
+ dataProviderName,
525
455
  },
526
- mutationKey: keys().data().mutation("deleteMany").get(preferLegacyKeys),
527
- ...mutationOptions,
456
+ });
457
+
458
+ const {
459
+ fields: _fields,
460
+ operation: _operation,
461
+ variables: _variables,
462
+ ...rest
463
+ } = combinedMeta || {};
464
+ log?.mutate({
465
+ action: "deleteMany",
466
+ resource: resource.name,
528
467
  meta: {
529
- ...mutationOptions?.meta,
530
- ...getXRay("useDeleteMany", preferLegacyKeys),
468
+ ids,
469
+ dataProviderName,
470
+ ...rest,
531
471
  },
532
- });
533
-
534
- const { elapsedTime } = useLoadingOvertime({
535
- isLoading: mutation.isLoading,
536
- interval: overtimeOptions?.interval,
537
- onInterval: overtimeOptions?.onInterval,
538
- });
539
-
540
- return { ...mutation, overtime: { elapsedTime } };
472
+ });
473
+
474
+ // Remove the queries from the cache:
475
+ ids.forEach((id) =>
476
+ queryClient.removeQueries(context?.queryKey.detail(id)),
477
+ );
478
+ },
479
+ onError: (
480
+ err,
481
+ { ids, resource: resourceName, errorNotification },
482
+ context,
483
+ ) => {
484
+ const { identifier } = select(resourceName);
485
+
486
+ // set back the queries to the context:
487
+ if (context) {
488
+ for (const query of context.previousQueries) {
489
+ queryClient.setQueryData(query[0], query[1]);
490
+ }
491
+ }
492
+
493
+ if (err.message !== "mutationCancelled") {
494
+ checkError(err);
495
+ const resourceSingular = textTransformers.singular(identifier);
496
+
497
+ const notificationConfig =
498
+ typeof errorNotification === "function"
499
+ ? errorNotification(err, ids, identifier)
500
+ : errorNotification;
501
+
502
+ handleNotification(notificationConfig, {
503
+ key: `${ids}-${identifier}-notification`,
504
+ message: translate(
505
+ "notifications.deleteError",
506
+ {
507
+ resource: resourceSingular,
508
+ statusCode: err.statusCode,
509
+ },
510
+ `Error (status code: ${err.statusCode})`,
511
+ ),
512
+ description: err.message,
513
+ type: "error",
514
+ });
515
+ }
516
+ },
517
+ mutationKey: keys().data().mutation("deleteMany").get(preferLegacyKeys),
518
+ ...mutationOptions,
519
+ meta: {
520
+ ...mutationOptions?.meta,
521
+ ...getXRay("useDeleteMany", preferLegacyKeys),
522
+ },
523
+ });
524
+
525
+ const { elapsedTime } = useLoadingOvertime({
526
+ isLoading: mutation.isLoading,
527
+ interval: overtimeOptions?.interval,
528
+ onInterval: overtimeOptions?.onInterval,
529
+ });
530
+
531
+ return { ...mutation, overtime: { elapsedTime } };
541
532
  };