Skip to content

Refactor: Centralize manifest and blob management operations - #4

Merged
Mikola Lysenko (mikolalysenko) merged 1 commit into
mainfrom
refactor/centralize-manifest-operations
Nov 15, 2025
Merged

Refactor: Centralize manifest and blob management operations#4
Mikola Lysenko (mikolalysenko) merged 1 commit into
mainfrom
refactor/centralize-manifest-operations

Conversation

@mikolalysenko

Copy link
Copy Markdown
Collaborator

This refactoring consolidates duplicate manifest and blob management logic into reusable modules within socket-patch, establishing it as the single source of truth for these operations.

Changes

New Modules

  • src/constants.ts: Standardized path constants (DEFAULT_BLOB_FOLDER, etc.)
  • src/manifest/operations.ts: Core manifest utilities
    • getReferencedBlobs(): Extract all blob hashes from a manifest
    • diffManifests(): Calculate manifest differences
    • validateManifest(): Manifest validation
    • readManifest() / writeManifest(): Filesystem operations
  • src/manifest/recovery.ts: Robust manifest recovery with pluggable callbacks
    • Automatic repair of invalid patches
    • Dependency-agnostic design with event-based logging
    • Refetch function for external patch sources

Updated Files

  • src/utils/cleanup-blobs.ts: Now uses getReferencedBlobs() utility
  • src/patch/apply.ts: Removed unused _pkgName parameter
  • src/index.ts: Export new manifest modules
  • package.json: Added exports for new modules

Benefits

  • Eliminates ~200 lines of duplicate code
  • Single source of truth for manifest operations
  • Better testability with dependency injection
  • Reusable across CLI and service contexts
  • Standardized constants and utilities

This refactoring consolidates duplicate manifest and blob management logic
into reusable modules within socket-patch, establishing it as the single
source of truth for these operations.

## Changes

### New Modules
- **src/constants.ts**: Standardized path constants (DEFAULT_BLOB_FOLDER, etc.)
- **src/manifest/operations.ts**: Core manifest utilities
  - getReferencedBlobs(): Extract all blob hashes from a manifest
  - diffManifests(): Calculate manifest differences
  - validateManifest(): Manifest validation
  - readManifest() / writeManifest(): Filesystem operations
- **src/manifest/recovery.ts**: Robust manifest recovery with pluggable callbacks
  - Automatic repair of invalid patches
  - Dependency-agnostic design with event-based logging
  - Refetch function for external patch sources

### Updated Files
- **src/utils/cleanup-blobs.ts**: Now uses getReferencedBlobs() utility
- **src/patch/apply.ts**: Removed unused _pkgName parameter
- **src/index.ts**: Export new manifest modules
- **package.json**: Added exports for new modules

## Benefits
- Eliminates ~200 lines of duplicate code
- Single source of truth for manifest operations
- Better testability with dependency injection
- Reusable across CLI and service contexts
- Standardized constants and utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant