-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Effect GitHub #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
akoenig
wants to merge
8
commits into
main
Choose a base branch
from
feat/effect-github
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ndling Enhance GitHub API integration by implementing proper null/undefined normalization and automatic date parsing using Effect Schema primitives. Changes: - Relocate GitHubSchemas from Domain to Infrastructure layer - Implement GitHub.nullable() helpers for consistent null → undefined transformation - Convert GitHub timestamp fields to use Schema.DateFromString - Update all entity schemas (Repository, Notification, User, PrivateUser) - Modernize test assertions to work with native Date objects Benefits: - Type safety: Date | undefined instead of string | null - Better DX: Direct Date operations without manual parsing - Consistent nullability: undefined semantics throughout codebase - Automatic validation: Invalid ISO strings caught at schema level
- Add proper License schema replacing Schema.Any usage - Enhance Repository schema with merge configuration and permissions - Improve NotificationSubject with documented API behavior discrepancies - Update MinimalRepository to use proper License schema - Add comprehensive documentation for actual vs specification behavior The schemas now accurately model real GitHub API responses while maintaining type safety and following Effect Schema best practices.
- Renamed NotificationsService to GitHubNotifications - Renamed RepositoriesService to GitHubRepositories - Updated all imports and exports across the codebase - Updated layer configuration to use new service names - Updated CLI tooling and documentation - All tests passing with new naming convention This provides cleaner, more intuitive API naming that follows the GitHub* prefix pattern used throughout the infrastructure layer.
Major additions and improvements: ## GitHubIssues Service Implementation - Complete CRUD operations (list, get, create, update) - Comment management (list, create, update, delete) - Label operations (add, remove) - Assignee management (add, remove) - Comprehensive domain entities and value objects - Full HTTP recording support with 12 test scenarios ## HTTP Client Enhancement - Fixed DELETE method to support request body - Enables proper GitHub API compliance for assignee removal ## CLI Architecture Refactoring - Refactored 1500+ line record.ts into modular components - Separated concerns: redaction, recording, CLI, and program logic - Added service-specific recorder modules - Improved maintainability and testability ## New CLI Features - Added --no-redaction flag to optionally disable data redaction - Enhanced --services flag with issues support - Improved console feedback and progress indicators - Updated comprehensive documentation ## Security & Testing - Comprehensive data redaction system (default enabled) - Safe test configurations using akoenig/effective repository - No sensitive data in codebase (verified) - Complete HTTP recordings for all scenarios Files: 36 changed, 4590 insertions, 1184 deletions
…I features - Implement complete GitHubIssues service with CRUD operations for issues, comments, labels, and assignees - Update test specifications to match existing HTTP recordings for proper test execution - Add comprehensive CLI recorder for GitHubIssues with all operation scenarios - Fix HTTP client to support DELETE requests with body for GitHub API compliance - Refactor CLI architecture into modular components for better maintainability - Add --no-redaction flag to allow unredacted recordings when needed - Update CLI configuration to use 'akoenig/effective' repository for testing - Improve recording layer with better redaction and configuration options Test fixes: - Use existing issue numbers from recordings (issues #1, #73, #75) - Adjust test expectations to match actual API responses - Fix label removal and assignee tests to use correct recorded states - Update comment tests to handle empty comment lists appropriately
- Fix listComments to return Option.some([]) for empty arrays instead of Option.none() - Update test recordings to ensure proper API response matching - Remove conflicting recordings that caused test sequencing issues - All 39 tests now pass successfully
4f7c161 to
e2236f3
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.