@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
Markdown
# Tasks: Comprehensive Deprecated and Legacy API Cleanup
## Overview
This document tracks the comprehensive cleanup of all deprecated and legacy APIs in the /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 /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 Parameters:**
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useInfiniteList.ts` - Remove ` config`, `hasPagination`, `sort`, `sorter`, `metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCustom.ts` - Remove ` config`, `metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useList.ts` - Remove ` config`, `hasPagination`, `sort`, `sorter`, `metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useMany.ts` - Remove ` config`, `metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useOne.ts` - Remove ` config`, `metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCreate.ts` - Remove ` metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useUpdate.ts` - Remove ` metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useDelete.ts` - Remove ` metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCreateMany.ts` - Remove ` metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useUpdateMany.ts` - Remove ` metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useDeleteMany.ts` - Remove ` metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/data/useCustomMutation.ts` - Remove ` metaData`
**Utility Hooks with Parameters:**
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/import/index.tsx` - Remove ` metaData`, `mapData`, `paparseConfig`, `batchSize`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/export/index.ts` - Remove ` metaData`, `mapData`, `exportOptions`, `maxItemCount`, `pageSize`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/useTable/index.ts` - Remove ` config`, `hasPagination`, `initialCurrent`, `initialPageSize`, `initialSorter`, `initialFilter`, `defaultSetFilterBehavior`, `metaData`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/useSelect/index.ts` - Remove ` config`, `sort`, `sorter`, `filters`, `metaData`, `pagination`, `hasPagination`, `defaultValue`, `debounce`, `queryOptions`, `fetchSize`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/show/index.ts` - Remove ` metaData`, `config`, `queryResult`
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/form/index.ts` - Remove ` metaData`, `queryResult`, `mutationResult`
**Navigation Hooks with Methods:**
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/navigation/index.ts` - Remove ` push()`, `replace()`, `goBack()` methods
**Resource Hooks with Parameters:**
- `/Users/alicanerdurmaz/Desktop/refine/packages/core/src/hooks/resource/useResource/index.ts` - Remove ` 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 `` 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