feat(interactive): Add interactive console features and refactor spinner module by renaming source-ora to source-interactive and removing ora dependency
This commit is contained in:
101
readme.plan.md
101
readme.plan.md
@ -0,0 +1,101 @@
|
||||
# Smartlog Interactive Console Features Plan
|
||||
|
||||
## Overview
|
||||
|
||||
This document outlines the plan for enhancing the console output capabilities of `@push.rocks/smartlog` by creating a comprehensive interactive console module. This involves renaming the current `ts_source_ora` module to `ts_source_interactive`, implementing our own spinner functionality (removing the ora dependency), and adding new features like progress bars and other interactive elements.
|
||||
|
||||
## Implementation Steps
|
||||
|
||||
### 1. Rename and Restructure
|
||||
|
||||
- Rename directory from `ts_source_ora` to `ts_source_interactive`
|
||||
- Update all imports, exports, and references
|
||||
- Update package.json exports to reflect new module name
|
||||
- Maintain backward compatibility through proper export paths
|
||||
|
||||
### 2. Custom Spinner Implementation
|
||||
|
||||
- Create a native spinner implementation to replace ora dependency
|
||||
- Implement spinner frames and animation timing
|
||||
- Maintain API compatibility with current spinner methods:
|
||||
- `text(textArg)` - Set text and start spinner
|
||||
- `stop()` - Stop the spinner
|
||||
- `finishSuccess(textArg?)` - Mark as succeeded
|
||||
- `finishFail(textArg?)` - Mark as failed
|
||||
- `successAndNext(textArg)` - Success and start new spinner
|
||||
- `failAndNext(textArg)` - Fail and start new spinner
|
||||
- Add spinner customization options (speed, frames, colors)
|
||||
|
||||
### 3. Progress Bar Implementation
|
||||
|
||||
- Create a progress bar component with the following features:
|
||||
- Configurable width and style
|
||||
- Percentage display
|
||||
- ETA calculation
|
||||
- Current/total value display
|
||||
- Custom formatting
|
||||
- Theming support
|
||||
- Methods for incrementing and updating
|
||||
|
||||
### 4. Additional Interactive Features
|
||||
|
||||
- Add indeterminate progress indicator
|
||||
- Add multi-line status display
|
||||
- Add table formatting for structured data
|
||||
- Add interactive prompts/confirmations
|
||||
|
||||
### 5. Testing
|
||||
|
||||
- Update existing tests to work with new implementation
|
||||
- Add tests for new progress bar functionality
|
||||
- Add tests for additional interactive features
|
||||
- Ensure consistent behavior across platforms
|
||||
|
||||
### 6. Documentation
|
||||
|
||||
- Update README with examples of new features
|
||||
- Add API documentation for all new methods
|
||||
- Include usage examples
|
||||
|
||||
## Implementation Details
|
||||
|
||||
### Progress Bar API
|
||||
|
||||
```typescript
|
||||
// Creating a progress bar
|
||||
const progressBar = new SmartlogProgressBar({
|
||||
total: 100,
|
||||
width: 40,
|
||||
complete: '=',
|
||||
incomplete: ' ',
|
||||
renderThrottle: 100, // ms
|
||||
clearOnComplete: false,
|
||||
showEta: true
|
||||
});
|
||||
|
||||
// Updating a progress bar
|
||||
progressBar.update(50); // Update to 50%
|
||||
progressBar.increment(10); // Increment by 10
|
||||
progressBar.complete(); // Mark as complete
|
||||
```
|
||||
|
||||
### Spinner API (maintains compatibility)
|
||||
|
||||
```typescript
|
||||
// Current API (to be maintained)
|
||||
const spinner = new SmartlogSourceInteractive();
|
||||
spinner.text('Loading data');
|
||||
spinner.finishSuccess('Data loaded successfully');
|
||||
|
||||
// New additions
|
||||
spinner.setSpinnerStyle('dots'); // Change spinner style
|
||||
spinner.setColor('green'); // Change color
|
||||
```
|
||||
|
||||
## Benefits
|
||||
|
||||
- Remove external dependency (ora) for better control and smaller bundle size
|
||||
- Provide more interactive console features for improved user experience
|
||||
- Maintain consistent API styling across all smartlog modules
|
||||
- Improve testability with custom implementation
|
||||
- Enable more advanced terminal interactions
|
Reference in New Issue
Block a user