@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
@@ -4,189 +4,186 @@ import differenceWith from "lodash/differenceWith";
4
4
  import warnOnce from "warn-once";
5
5
 
6
6
  import {
7
- CrudFilters,
8
- CrudSorting,
9
- CrudFilter,
10
- CrudSort,
11
- CrudOperators,
12
- SortOrder,
7
+ CrudFilters,
8
+ CrudSorting,
9
+ CrudFilter,
10
+ CrudSort,
11
+ CrudOperators,
12
+ SortOrder,
13
13
  } from "../../interfaces";
14
14
  import { pickNotDeprecated } from "@definitions/helpers";
15
15
 
16
16
  export const parseTableParams = (url: string) => {
17
- const { current, pageSize, sorter, sorters, filters } = qs.parse(
18
- url.substring(1), // remove first ? character
19
- );
20
-
21
- return {
22
- parsedCurrent: current && Number(current),
23
- parsedPageSize: pageSize && Number(pageSize),
24
- parsedSorter: (pickNotDeprecated(sorters, sorter) as CrudSorting) ?? [],
25
- parsedFilters: (filters as CrudFilters) ?? [],
26
- };
17
+ const { current, pageSize, sorter, sorters, filters } = qs.parse(
18
+ url.substring(1), // remove first ? character
19
+ );
20
+
21
+ return {
22
+ parsedCurrent: current && Number(current),
23
+ parsedPageSize: pageSize && Number(pageSize),
24
+ parsedSorter: (pickNotDeprecated(sorters, sorter) as CrudSorting) ?? [],
25
+ parsedFilters: (filters as CrudFilters) ?? [],
26
+ };
27
27
  };
28
28
 
29
29
  export const parseTableParamsFromQuery = (params: any) => {
30
- const url = qs.stringify(params);
31
- return parseTableParams(`/${url}`);
30
+ const url = qs.stringify(params);
31
+ return parseTableParams(`/${url}`);
32
32
  };
33
33
 
34
34
  /**
35
35
  * @internal This function is used to stringify table params from the useTable hook.
36
36
  */
37
37
  export const stringifyTableParams = (params: {
38
- pagination?: { current?: number; pageSize?: number };
39
- sorters: CrudSorting;
40
- filters: CrudFilters;
41
- [key: string]: any;
38
+ pagination?: { current?: number; pageSize?: number };
39
+ sorters: CrudSorting;
40
+ filters: CrudFilters;
41
+ [key: string]: any;
42
42
  }): string => {
43
- const options: IStringifyOptions = {
44
- skipNulls: true,
45
- arrayFormat: "indices",
46
- encode: false,
47
- };
48
- const { pagination, sorter, sorters, filters, ...rest } = params;
49
-
50
- const queryString = qs.stringify(
51
- {
52
- ...rest,
53
- ...(pagination ? pagination : {}),
54
- sorters: pickNotDeprecated(sorters, sorter),
55
- filters,
56
- },
57
- options,
58
- );
59
-
60
- return queryString;
43
+ const options: IStringifyOptions = {
44
+ skipNulls: true,
45
+ arrayFormat: "indices",
46
+ encode: false,
47
+ };
48
+ const { pagination, sorter, sorters, filters, ...rest } = params;
49
+
50
+ const queryString = qs.stringify(
51
+ {
52
+ ...rest,
53
+ ...(pagination ? pagination : {}),
54
+ sorters: pickNotDeprecated(sorters, sorter),
55
+ filters,
56
+ },
57
+ options,
58
+ );
59
+
60
+ return queryString;
61
61
  };
62
62
 
63
63
  export const compareFilters = (
64
- left: CrudFilter,
65
- right: CrudFilter,
64
+ left: CrudFilter,
65
+ right: CrudFilter,
66
66
  ): boolean => {
67
- if (
68
- left.operator !== "and" &&
69
- left.operator !== "or" &&
70
- right.operator !== "and" &&
71
- right.operator !== "or"
72
- ) {
73
- return (
74
- ("field" in left ? left.field : undefined) ==
75
- ("field" in right ? right.field : undefined) &&
76
- left.operator == right.operator
77
- );
78
- }
79
-
67
+ if (
68
+ left.operator !== "and" &&
69
+ left.operator !== "or" &&
70
+ right.operator !== "and" &&
71
+ right.operator !== "or"
72
+ ) {
80
73
  return (
81
- ("key" in left ? left.key : undefined) ==
82
- ("key" in right ? right.key : undefined) &&
83
- left.operator == right.operator
74
+ ("field" in left ? left.field : undefined) ===
75
+ ("field" in right ? right.field : undefined) &&
76
+ left.operator === right.operator
84
77
  );
78
+ }
79
+
80
+ return (
81
+ ("key" in left ? left.key : undefined) ===
82
+ ("key" in right ? right.key : undefined) &&
83
+ left.operator === right.operator
84
+ );
85
85
  };
86
86
 
87
87
  export const compareSorters = (left: CrudSort, right: CrudSort): boolean =>
88
- left.field == right.field;
88
+ left.field === right.field;
89
89
  // Keep only one CrudFilter per type according to compareFilters
90
90
  // Items in the array that is passed first to unionWith have higher priority
91
91
  // CrudFilter items with undefined values are necessary to signify no filter
92
92
  // After union, don't keep CrudFilter items with undefined value in the result
93
93
  // Items in the arrays with higher priority are put at the end.
94
94
  export const unionFilters = (
95
- permanentFilter: CrudFilters,
96
- newFilters: CrudFilters,
97
- prevFilters: CrudFilters = [],
95
+ permanentFilter: CrudFilters,
96
+ newFilters: CrudFilters,
97
+ prevFilters: CrudFilters = [],
98
98
  ): CrudFilters => {
99
- const isKeyRequired = newFilters.filter(
100
- (f) => (f.operator === "or" || f.operator === "and") && !f.key,
101
- );
102
-
103
- if (isKeyRequired.length > 1) {
104
- warnOnce(
105
- true,
106
- `[conditionalFilters]: You have created multiple Conditional Filters at the top level, this requires the key parameter. \nFor more information, see https://refine.dev/docs/advanced-tutorials/data-provider/handling-filters/#top-level-multiple-conditional-filters-usage`,
107
- );
108
- }
109
-
110
- return unionWith(
111
- permanentFilter,
112
- newFilters,
113
- prevFilters,
114
- compareFilters,
115
- ).filter(
116
- (crudFilter) =>
117
- crudFilter.value !== undefined &&
118
- crudFilter.value !== null &&
119
- (crudFilter.operator !== "or" ||
120
- (crudFilter.operator === "or" &&
121
- crudFilter.value.length !== 0)) &&
122
- (crudFilter.operator !== "and" ||
123
- (crudFilter.operator === "and" &&
124
- crudFilter.value.length !== 0)),
99
+ const isKeyRequired = newFilters.filter(
100
+ (f) => (f.operator === "or" || f.operator === "and") && !f.key,
101
+ );
102
+
103
+ if (isKeyRequired.length > 1) {
104
+ warnOnce(
105
+ true,
106
+ "[conditionalFilters]: You have created multiple Conditional Filters at the top level, this requires the key parameter. \nFor more information, see https://refine.dev/docs/advanced-tutorials/data-provider/handling-filters/#top-level-multiple-conditional-filters-usage",
125
107
  );
108
+ }
109
+
110
+ return unionWith(
111
+ permanentFilter,
112
+ newFilters,
113
+ prevFilters,
114
+ compareFilters,
115
+ ).filter(
116
+ (crudFilter) =>
117
+ crudFilter.value !== undefined &&
118
+ crudFilter.value !== null &&
119
+ (crudFilter.operator !== "or" ||
120
+ (crudFilter.operator === "or" && crudFilter.value.length !== 0)) &&
121
+ (crudFilter.operator !== "and" ||
122
+ (crudFilter.operator === "and" && crudFilter.value.length !== 0)),
123
+ );
126
124
  };
127
125
 
128
126
  export const unionSorters = (
129
- permanentSorter: CrudSorting,
130
- newSorters: CrudSorting,
127
+ permanentSorter: CrudSorting,
128
+ newSorters: CrudSorting,
131
129
  ): CrudSorting =>
132
- unionWith(permanentSorter, newSorters, compareSorters).filter(
133
- (crudSorter) =>
134
- crudSorter.order !== undefined && crudSorter.order !== null,
135
- );
130
+ unionWith(permanentSorter, newSorters, compareSorters).filter(
131
+ (crudSorter) => crudSorter.order !== undefined && crudSorter.order !== null,
132
+ );
136
133
  // Prioritize filters in the permanentFilter and put it at the end of result array
137
134
  export const setInitialFilters = (
138
- permanentFilter: CrudFilters,
139
- defaultFilter: CrudFilters,
135
+ permanentFilter: CrudFilters,
136
+ defaultFilter: CrudFilters,
140
137
  ): CrudFilters => [
141
- ...differenceWith(defaultFilter, permanentFilter, compareFilters),
142
- ...permanentFilter,
138
+ ...differenceWith(defaultFilter, permanentFilter, compareFilters),
139
+ ...permanentFilter,
143
140
  ];
144
141
 
145
142
  export const setInitialSorters = (
146
- permanentSorter: CrudSorting,
147
- defaultSorter: CrudSorting,
143
+ permanentSorter: CrudSorting,
144
+ defaultSorter: CrudSorting,
148
145
  ): CrudSorting => [
149
- ...differenceWith(defaultSorter, permanentSorter, compareSorters),
150
- ...permanentSorter,
146
+ ...differenceWith(defaultSorter, permanentSorter, compareSorters),
147
+ ...permanentSorter,
151
148
  ];
152
149
 
153
150
  export const getDefaultSortOrder = (
154
- columnName: string,
155
- sorter?: CrudSorting,
151
+ columnName: string,
152
+ sorter?: CrudSorting,
156
153
  ): SortOrder | undefined => {
157
- if (!sorter) {
158
- return undefined;
159
- }
154
+ if (!sorter) {
155
+ return undefined;
156
+ }
160
157
 
161
- const sortItem = sorter.find((item) => item.field === columnName);
158
+ const sortItem = sorter.find((item) => item.field === columnName);
162
159
 
163
- if (sortItem) {
164
- return sortItem.order as SortOrder;
165
- }
160
+ if (sortItem) {
161
+ return sortItem.order as SortOrder;
162
+ }
166
163
 
167
- return undefined;
164
+ return undefined;
168
165
  };
169
166
 
170
167
  export const getDefaultFilter = (
171
- columnName: string,
172
- filters?: CrudFilters,
173
- operatorType: CrudOperators = "eq",
168
+ columnName: string,
169
+ filters?: CrudFilters,
170
+ operatorType: CrudOperators = "eq",
174
171
  ): CrudFilter["value"] | undefined => {
175
- const filter = filters?.find((filter) => {
176
- if (
177
- filter.operator !== "or" &&
178
- filter.operator !== "and" &&
179
- "field" in filter
180
- ) {
181
- const { operator, field } = filter;
182
- return field === columnName && operator === operatorType;
183
- }
184
- return undefined;
185
- });
186
-
187
- if (filter) {
188
- return filter.value || [];
172
+ const filter = filters?.find((filter) => {
173
+ if (
174
+ filter.operator !== "or" &&
175
+ filter.operator !== "and" &&
176
+ "field" in filter
177
+ ) {
178
+ const { operator, field } = filter;
179
+ return field === columnName && operator === operatorType;
189
180
  }
190
-
191
181
  return undefined;
182
+ });
183
+
184
+ if (filter) {
185
+ return filter.value || [];
186
+ }
187
+
188
+ return undefined;
192
189
  };
@@ -1,21 +1,21 @@
1
1
  export const file2Base64 = (file: any): Promise<string> => {
2
- return new Promise((resolve, reject) => {
3
- const reader = new FileReader();
2
+ return new Promise((resolve, reject) => {
3
+ const reader = new FileReader();
4
4
 
5
- const resultHandler = () => {
6
- if (reader.result) {
7
- reader.removeEventListener("load", resultHandler, false);
5
+ const resultHandler = () => {
6
+ if (reader.result) {
7
+ reader.removeEventListener("load", resultHandler, false);
8
8
 
9
- resolve(reader.result as string);
10
- }
11
- };
9
+ resolve(reader.result as string);
10
+ }
11
+ };
12
12
 
13
- reader.addEventListener("load", resultHandler, false);
13
+ reader.addEventListener("load", resultHandler, false);
14
14
 
15
- reader.readAsDataURL(file.originFileObj as Blob);
16
- reader.onerror = (error) => {
17
- reader.removeEventListener("load", resultHandler, false);
18
- return reject(error);
19
- };
20
- });
15
+ reader.readAsDataURL(file.originFileObj as Blob);
16
+ reader.onerror = (error) => {
17
+ reader.removeEventListener("load", resultHandler, false);
18
+ return reject(error);
19
+ };
20
+ });
21
21
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
- useQuery,
3
- UseQueryOptions,
4
- UseQueryResult,
2
+ useQuery,
3
+ UseQueryOptions,
4
+ UseQueryResult,
5
5
  } from "@tanstack/react-query";
6
6
  import { useContext } from "react";
7
7
 
@@ -12,10 +12,10 @@ import { useKeys } from "@hooks/useKeys";
12
12
  import { getXRay } from "@refinedev/devtools-internal";
13
13
 
14
14
  export type UseCanProps = CanParams & {
15
- /**
16
- * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options
17
- */
18
- queryOptions?: UseQueryOptions<CanReturnType>;
15
+ /**
16
+ * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options
17
+ */
18
+ queryOptions?: UseQueryOptions<CanReturnType>;
19
19
  };
20
20
 
21
21
  /**
@@ -27,58 +27,56 @@ export type UseCanProps = CanParams & {
27
27
  *
28
28
  */
29
29
  export const useCan = ({
30
- action,
31
- resource,
32
- params,
33
- queryOptions: hookQueryOptions,
30
+ action,
31
+ resource,
32
+ params,
33
+ queryOptions: hookQueryOptions,
34
34
  }: UseCanProps): UseQueryResult<CanReturnType> => {
35
- const { can, options: globalOptions } = useContext(AccessControlContext);
36
- const { keys, preferLegacyKeys } = useKeys();
35
+ const { can, options: globalOptions } = useContext(AccessControlContext);
36
+ const { keys, preferLegacyKeys } = useKeys();
37
37
 
38
- const { queryOptions: globalQueryOptions } = globalOptions || {};
38
+ const { queryOptions: globalQueryOptions } = globalOptions || {};
39
39
 
40
- const mergedQueryOptions = {
41
- ...globalQueryOptions,
42
- ...hookQueryOptions,
43
- };
40
+ const mergedQueryOptions = {
41
+ ...globalQueryOptions,
42
+ ...hookQueryOptions,
43
+ };
44
44
 
45
- /**
46
- * Since `react-query` stringifies the query keys, it will throw an error for a circular dependency if we include `React.ReactNode` elements inside the keys.
47
- * The feature in #2220(https://github.com/refinedev/refine/issues/2220) includes such change and to fix this, we need to remove `icon` property in the `resource`
48
- */
49
- const { resource: _resource, ...paramsRest } = params ?? {};
45
+ /**
46
+ * Since `react-query` stringifies the query keys, it will throw an error for a circular dependency if we include `React.ReactNode` elements inside the keys.
47
+ * The feature in #2220(https://github.com/refinedev/refine/issues/2220) includes such change and to fix this, we need to remove `icon` property in the `resource`
48
+ */
49
+ const { resource: _resource, ...paramsRest } = params ?? {};
50
50
 
51
- /* eslint-disable @typescript-eslint/no-unused-vars */
52
- const sanitizedResource = sanitizeResource(_resource);
51
+ const sanitizedResource = sanitizeResource(_resource);
53
52
 
54
- /* eslint-enable @typescript-eslint/no-unused-vars */
55
- const queryResponse = useQuery<CanReturnType>({
56
- queryKey: keys()
57
- .access()
58
- .resource(resource)
59
- .action(action)
60
- .params({
61
- params: { ...paramsRest, resource: sanitizedResource },
62
- enabled: mergedQueryOptions?.enabled,
63
- })
64
- .get(preferLegacyKeys),
65
- // Enabled check for `can` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.
66
- queryFn: () =>
67
- can?.({
68
- action,
69
- resource,
70
- params: { ...paramsRest, resource: sanitizedResource },
71
- }) ?? Promise.resolve({ can: true }),
72
- enabled: typeof can !== "undefined",
73
- ...mergedQueryOptions,
74
- meta: {
75
- ...mergedQueryOptions?.meta,
76
- ...getXRay("useCan", preferLegacyKeys),
77
- },
78
- retry: false,
79
- });
53
+ const queryResponse = useQuery<CanReturnType>({
54
+ queryKey: keys()
55
+ .access()
56
+ .resource(resource)
57
+ .action(action)
58
+ .params({
59
+ params: { ...paramsRest, resource: sanitizedResource },
60
+ enabled: mergedQueryOptions?.enabled,
61
+ })
62
+ .get(preferLegacyKeys),
63
+ // Enabled check for `can` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.
64
+ queryFn: () =>
65
+ can?.({
66
+ action,
67
+ resource,
68
+ params: { ...paramsRest, resource: sanitizedResource },
69
+ }) ?? Promise.resolve({ can: true }),
70
+ enabled: typeof can !== "undefined",
71
+ ...mergedQueryOptions,
72
+ meta: {
73
+ ...mergedQueryOptions?.meta,
74
+ ...getXRay("useCan", preferLegacyKeys),
75
+ },
76
+ retry: false,
77
+ });
80
78
 
81
- return typeof can === "undefined"
82
- ? ({ data: { can: true } } as typeof queryResponse)
83
- : queryResponse;
79
+ return typeof can === "undefined"
80
+ ? ({ data: { can: true } } as typeof queryResponse)
81
+ : queryResponse;
84
82
  };
@@ -5,35 +5,34 @@ import { sanitizeResource } from "@definitions/helpers/sanitize-resource";
5
5
  import { IAccessControlContext } from "../../interfaces";
6
6
 
7
7
  export const useCanWithoutCache = (): IAccessControlContext => {
8
- const { can: canFromContext } = React.useContext(AccessControlContext);
8
+ const { can: canFromContext } = React.useContext(AccessControlContext);
9
9
 
10
- const can = React.useMemo(() => {
11
- if (!canFromContext) {
12
- return undefined;
13
- }
10
+ const can = React.useMemo(() => {
11
+ if (!canFromContext) {
12
+ return undefined;
13
+ }
14
14
 
15
- const canWithSanitizedResource: NonNullable<
16
- typeof canFromContext
17
- > = async ({ params, ...rest }) => {
18
- const sanitizedResource = params?.resource
19
- ? sanitizeResource(params.resource)
20
- : undefined;
15
+ const canWithSanitizedResource: NonNullable<typeof canFromContext> =
16
+ async ({ params, ...rest }) => {
17
+ const sanitizedResource = params?.resource
18
+ ? sanitizeResource(params.resource)
19
+ : undefined;
21
20
 
22
- return canFromContext({
23
- ...rest,
24
- ...(params
25
- ? {
26
- params: {
27
- ...params,
28
- resource: sanitizedResource,
29
- },
30
- }
31
- : {}),
32
- });
33
- };
21
+ return canFromContext({
22
+ ...rest,
23
+ ...(params
24
+ ? {
25
+ params: {
26
+ ...params,
27
+ resource: sanitizedResource,
28
+ },
29
+ }
30
+ : {}),
31
+ });
32
+ };
34
33
 
35
- return canWithSanitizedResource;
36
- }, [canFromContext]);
34
+ return canWithSanitizedResource;
35
+ }, [canFromContext]);
37
36
 
38
- return { can };
37
+ return { can };
39
38
  };