BREAKING CHANGE(core): major architectural refactoring with fetch-like API
This commit is contained in:
53
readme.plan.md
Normal file
53
readme.plan.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Smartrequest Refactoring Plan
|
||||
|
||||
Command to reread CLAUDE.md: `cat /home/philkunz/.claude/CLAUDE.md`
|
||||
|
||||
## Objective
|
||||
Refactor smartrequest to use native fetch-like API with a streamlined core that supports unix sockets and keep-alive.
|
||||
|
||||
## Architecture Overview
|
||||
- Rename `legacy/` to `core/` and remove "smartrequest." prefix from filenames
|
||||
- Create a modern Response class similar to fetch API
|
||||
- Use core as foundation for modern API, not as legacy adapter
|
||||
- Maintain unix socket and keep-alive support
|
||||
|
||||
## Task Checklist
|
||||
|
||||
- [x] Reread /home/philkunz/.claude/CLAUDE.md
|
||||
- [x] Create ts/core directory structure with request.ts, types.ts, and plugins.ts
|
||||
- [x] Migrate core request logic from legacy to core/request.ts
|
||||
- [x] Create modern Response class with fetch-like API
|
||||
- [x] Update modern API to use new core module
|
||||
- [x] Create legacy adapter for backward compatibility
|
||||
- [x] Update exports in ts/index.ts
|
||||
- [x] Run tests and fix any issues
|
||||
- [x] Clean up old legacy files
|
||||
|
||||
## Implementation Details
|
||||
|
||||
### Core Module Structure
|
||||
```
|
||||
ts/core/
|
||||
├── request.ts # Core HTTP/HTTPS request logic with unix socket support
|
||||
├── types.ts # Core interfaces and types
|
||||
├── plugins.ts # Dependencies (http, https, agentkeepalive, etc.)
|
||||
└── response.ts # Modern Response class
|
||||
```
|
||||
|
||||
### Response Class API
|
||||
The new Response class will provide fetch-like methods:
|
||||
- `json()`: Promise<T> - Parse response as JSON
|
||||
- `text()`: Promise<string> - Get response as text
|
||||
- `arrayBuffer()`: Promise<ArrayBuffer> - Get response as ArrayBuffer
|
||||
- `stream()`: ReadableStream - Get response as stream
|
||||
- `ok`: boolean - Status is 2xx
|
||||
- `status`: number - HTTP status code
|
||||
- `statusText`: string - HTTP status text
|
||||
- `headers`: Headers - Response headers
|
||||
|
||||
### Migration Strategy
|
||||
1. Move core request logic without breaking changes
|
||||
2. Create Response wrapper that provides modern API
|
||||
3. Update SmartRequestClient to use new core
|
||||
4. Add legacy adapter for backward compatibility
|
||||
5. Ensure all tests pass throughout migration
|
Reference in New Issue
Block a user