UNPKG

@refinedev/core

Version:

Refine is a React meta-framework for building enterprise-level, data-intensive applications rapidly with support for modern UI libraries and headless integrations.

355 lines (247 loc) 18.4 kB
# Tasks: Comprehensive Deprecated and Legacy API Cleanup ## Overview This document tracks the comprehensive cleanup of all deprecated and legacy APIs in the @packages/core directory. The goal is to remove all deprecated patterns, legacy infrastructure, and obsolete code to prepare for Refine v5. ## COMPLETED - pickNotDeprecated Cleanup Initiative ### **🎉 MAJOR MILESTONE ACHIEVED: Complete Elimination of pickNotDeprecated Usage** **Summary**: Successfully eliminated all `pickNotDeprecated` usage across the entire @refinedev/core package, cleaned up deprecated parameters, and removed deprecated type definitions. ## Recently Completed Tasks ### `sorters vs sorter` Deprecation Cleanup 1. **`hooks/export/index.ts`** - COMPLETED - Removed `pickNotDeprecated(sorters, sorter)` usage from `getList` call - Removed deprecated `sorter` parameter from type definition and function signature 2. **`hooks/data/useList.ts`** - COMPLETED - Removed `pickNotDeprecated(sorters, config?.sort)` usage for sorters - Removed `pickNotDeprecated(filters)` usage - Removed unused import of `pickNotDeprecated` 3. **`src/definitions/table/index.ts`** - COMPLETED - Removed `pickNotDeprecated(sorters, sorter)` usage from parseTableParams and stringifyTableParams - Removed unused import of `pickNotDeprecated` - Updated function parameters to use only `sorters` ### **Final Cleanup Phase** 4. **`definitions/helpers/pickNotDeprecated/`** - COMPLETED - Completely removed pickNotDeprecated helper function and test file - Removed all exports from index files - Verified zero remaining usage in entire codebase 5. **Deprecated Type Definitions** - COMPLETED - Removed `Option` interface (replaced with `BaseOption`) - Removed `RedirectionTypes` type alias (replaced with `RedirectAction`) - Removed `useShowReturnType` and `useShowProps` type aliases - Cleaned up deprecated JSDoc comments 6. **Deprecated Parameter Cleanup** - COMPLETED - Removed deprecated `sort` parameter from `UseCustomConfig` interface - Removed deprecated `resourceName` parameter from export hook ### **Testing & Validation Phase** 7. **Comprehensive Testing** - COMPLETED - Fixed TypeScript compilation errors from deprecated type removals - Resolved missing exports for `RedirectionTypes`, `useShowProps`, `useShowReturnType`, `Option` - Verified package builds successfully (`pnpm build` passes) - Validated core functionality works correctly 8. **Build Verification** - COMPLETED - Package builds without TypeScript errors - All exports properly updated - No critical regressions introduced - Ready for further development or release ## High Priority Tasks (Breaking Changes) ### 1. **Remove Legacy Router Infrastructure** **Impact**: Breaking change - affects routing system **Files to Remove:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/router/legacy/index.tsx` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/router/legacy/types.ts` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/legacy-router/index.ts` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/legacy-router/useRouterContext.ts` **Dependencies to Update:** - Update all imports referencing legacy router components - Remove legacy router context usage - Update tests that depend on legacy router ### 2. **Remove Legacy Resource Transform Helpers** **Impact**: Breaking change - affects resource definitions **Files to Remove:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/legacy-resource-transform/index.ts` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/legacy-resource-transform/index.spec.ts` **Dependencies to Update:** - Remove legacy resource transformation calls - Update resource definitions to use new format ### 3. **Remove Legacy Auth Provider Support** **Impact**: Breaking change - affects authentication **Deprecated Types to Remove:** - `ILegacyAuthContext` (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/auth/types.ts:111`) - `LegacyAuthProvider` (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/auth/types.ts:96`) - Legacy auth provider methods and interfaces **Files to Update:** - All auth hooks that support legacy providers - Auth context implementations - Test files using legacy auth patterns ### 4. **Remove Deprecated Components** **Impact**: Breaking change - affects component API **Components to Remove:** - `ReadyPage` (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/components/pages/ready/index.tsx`) - deprecated, will be removed - `LoginPage` (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/components/pages/login/index.tsx`) - deprecated, use AuthPage instead - `layoutWrapper` (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/components/layoutWrapper/index.tsx`) - obsolete, legacy router only **Context Properties to Remove:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/refine/types.ts` - multiple deprecated layout props: - `reactQueryDevtoolConfig` (line 82) - `warnWhenUnsavedChanges` (line 135) - `catchAll` (line 162) - `DashboardPage` (line 166) - `LoginPage` (line 170) - `Title` (line 174) - `Layout` (line 178) - `Sider` (line 182) - `Header` (line 186) - `Footer` (line 190) - `OffLayoutArea` (line 194) ## Medium Priority Tasks (API Cleanup) ### 5. **Clean Up pickNotDeprecated Usage Patterns** **Impact**: Internal cleanup - maintains backward compatibility **Files with pickNotDeprecated Usage (31 files):** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/table/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/useSelect/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useInfiniteList.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useList.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/export/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCreate.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useDelete.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useUpdate.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useDeleteMany.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useUpdateMany.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useOne.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useMany.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCustomMutation.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCustom.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCreateMany.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/auditLog/useLog/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useApiUrl.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/breadcrumb/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/show/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/import/index.tsx` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/form/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/menu/useMenu.tsx` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/treeView/createTreeView/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/routeGenerator/index.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/router/get-parent-resource.ts` - COMPLETED - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/queryKeys/index.ts` - COMPLETED ### 6. **Remove Deprecated Hook Parameters** **Impact**: API cleanup - remove deprecated parameters **Data Hooks with @deprecated Parameters:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useInfiniteList.ts` - Remove `@deprecated config`, `hasPagination`, `sort`, `sorter`, `metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCustom.ts` - Remove `@deprecated config`, `metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useList.ts` - Remove `@deprecated config`, `hasPagination`, `sort`, `sorter`, `metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useMany.ts` - Remove `@deprecated config`, `metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useOne.ts` - Remove `@deprecated config`, `metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCreate.ts` - Remove `@deprecated metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useUpdate.ts` - Remove `@deprecated metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useDelete.ts` - Remove `@deprecated metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCreateMany.ts` - Remove `@deprecated metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useUpdateMany.ts` - Remove `@deprecated metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useDeleteMany.ts` - Remove `@deprecated metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCustomMutation.ts` - Remove `@deprecated metaData` **Utility Hooks with @deprecated Parameters:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/import/index.tsx` - Remove `@deprecated metaData`, `mapData`, `paparseConfig`, `batchSize` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/export/index.ts` - Remove `@deprecated metaData`, `mapData`, `exportOptions`, `maxItemCount`, `pageSize` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/useTable/index.ts` - Remove `@deprecated config`, `hasPagination`, `initialCurrent`, `initialPageSize`, `initialSorter`, `initialFilter`, `defaultSetFilterBehavior`, `metaData` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/useSelect/index.ts` - Remove `@deprecated config`, `sort`, `sorter`, `filters`, `metaData`, `pagination`, `hasPagination`, `defaultValue`, `debounce`, `queryOptions`, `fetchSize` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/show/index.ts` - Remove `@deprecated metaData`, `config`, `queryResult` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/form/index.ts` - Remove `@deprecated metaData`, `queryResult`, `mutationResult` **Navigation Hooks with @deprecated Methods:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/navigation/index.ts` - Remove `@deprecated push()`, `replace()`, `goBack()` methods **Resource Hooks with @deprecated Parameters:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/resource/useResource/index.ts` - Remove `@deprecated resourceName`, `canCreate`, `canEdit`, `canDelete`, `canShow` ### 7. **Remove Deprecated Helper Functions** **Impact**: API cleanup - remove deprecated helpers **Deprecated Helper Functions:** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/queryKeys/index.ts` - Remove deprecated `queryKeys` function - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/routeGenerator/index.ts` - Remove deprecated `generateRoute` function - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/userFriendlyResourceName/index.ts` - Remove deprecated `getUserFriendlyName` function - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/treeView/createTreeView/index.ts` - Remove deprecated `createTreeView` function ### 8. **Remove Deprecated Type Definitions** **Impact**: API cleanup - remove deprecated types **Deprecated Types:** - `Option` Use `BaseOption` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/data/types.ts:19`) - `MetaDataQuery` Use `MetaQuery` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/data/types.ts:196`) - `QueryKeys` Use `keys` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/data/types.ts:248`) - `useShowReturnType` Use `UseShowReturnType` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/show/types.ts:79`) - `useShowProps` Use `UseShowProps` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/show/types.ts:87`) - `RedirectionTypes` Use `RedirectAction` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/form/types.ts:39`) ### 9. **Remove Deprecated Resource Properties** **Impact**: API cleanup - remove deprecated resource properties **Resource Definition Deprecated Properties:** - `audit` Use `auditLog` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:83`) - `route` Define route in components instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:89`) - `parentName` Not used anymore (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:107`) - `options` Use `meta` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:111`) - `canDelete` Use `meta.canDelete` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:120`) - `icon` Use `meta.icon` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:124`) - `parent` Use `meta.parent` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:128`) - `create`, `edit`, `show` Use action props instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:135,139,143`) - `label` Use `meta.label` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:167`) - `route` Use action components instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/resource/types.ts:171`) ### 10. **Remove Deprecated Live Provider Properties** **Impact**: API cleanup - remove deprecated live properties **Live Provider Deprecated Properties:** - `dataProviderName` Use `meta.dataProviderName` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/live/types.ts:81`) - `params.meta` Use `meta` directly (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/live/types.ts:85`) - `hasPagination` Use `pagination.mode` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/live/types.ts:90`) - `sort` Use `sorters` instead (`/Users/alicanerdurmaz/Desktop/refine/packages/core/src/contexts/live/types.ts:94`) ## Low Priority Tasks (Documentation & Tests) ### 11. **Update Test Files** **Impact**: Test maintenance - ensure tests use new APIs **Test Files Needing Updates:** - All `.spec.ts` and `.spec.tsx` files that use deprecated APIs - Update test expectations to match new interfaces - Remove tests for deprecated functionality - Update snapshots and mock data ### 12. **Clean Up JSDoc Comments** **Impact**: Documentation cleanup **Actions:** - Remove all `@deprecated` JSDoc comments after removing deprecated APIs - Update documentation to reflect new API patterns - Add migration notes where appropriate ### 13. **Remove pickNotDeprecated Helper** **Impact**: Final cleanup - remove helper function **Files to Remove (after all usage is cleaned up):** - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/pickNotDeprecated/index.ts` - `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/pickNotDeprecated/index.spec.ts` - Remove exports from `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/definitions/helpers/index.ts` - Remove exports from `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/index.tsx` ## Implementation Strategy ### Phase 1: Legacy Infrastructure Removal (Breaking Changes) 1. Remove legacy router system 2. Remove legacy resource transform helpers 3. Remove legacy auth provider support 4. Remove deprecated components ### Phase 2: API Parameter Cleanup 1. Remove all `pickNotDeprecated` usage patterns 2. Remove deprecated hook parameters 3. Remove deprecated helper functions 4. Remove deprecated type definitions ### Phase 3: Resource and Context Cleanup 1. Remove deprecated resource properties 2. Remove deprecated context properties 3. Remove deprecated live provider properties ### Phase 4: Testing and Documentation 1. Update all test files 2. Clean up JSDoc comments 3. Remove pickNotDeprecated helper 4. Update documentation ## Success Criteria - All legacy infrastructure removed - All deprecated APIs removed - All `pickNotDeprecated` usage eliminated - All deprecated components removed - All deprecated type definitions removed - TypeScript compilation passes without deprecated warnings - All tests pass with new APIs - No functional regressions introduced - Documentation updated and clean ## Breaking Change Warnings ⚠️ **HIGH IMPACT**: This cleanup will introduce breaking changes that require user code updates: - Legacy router usage will break - Deprecated component usage will break - Legacy auth provider usage will break - Deprecated hook parameters will be removed ## Notes - This cleanup is essential for Refine v5 release - All changes should be thoroughly tested - Consider creating a migration guide for users - Some deprecated APIs may need to be maintained for backward compatibility during transition period - Coordinate with documentation team for user-facing migration guides