Lentil Hoffman 50ac2b7b35
refactor: rename Lossless to Hyperview and Lossy to View
- Renamed Lossless class to Hyperview for clarity
- Renamed Lossy class to View for simplicity
- Updated all imports and references throughout the codebase
- Updated documentation to reflect new terminology
- Fixed test files to use new class names
- Added proper exports in index files
2025-07-09 14:28:52 -05:00

1.8 KiB

Custom Resolvers

Overview

The CustomResolver system provides a flexible framework for resolving property conflicts in distributed systems. It enables you to define custom resolution strategies through plugins, complete with type-safe dependencies between resolvers.

Key Features

  • Plugin-based Architecture: Extend functionality with custom resolvers
  • Type-Safe Dependencies: Compile-time checking of plugin dependencies
  • Built-in Resolvers: Common resolution strategies included
  • Efficient Processing: Only processes changed deltas
  • Deterministic Results: Same input always produces the same output

Core Concepts

  1. Resolver Plugins: Implement resolution logic for properties
  2. Dependency Management: Declare and manage dependencies between plugins
  3. State Management: Maintain and update state based on incoming deltas
  4. Resolution Pipeline: Process updates and resolve final values

Getting Started

import { CustomResolver } from '../src/views/resolvers/custom-resolvers';
import { LastWriteWinsPlugin } from '../src/views/resolvers/custom-resolvers/plugins';
import { Hyperview } from '../src/views/hyperview';

// Create a hyperview view
const hyperview = new Hyperview();

// Create a resolver with a last-write-wins strategy
const resolver = new CustomResolver(hyperview, {
  myProperty: new LastWriteWinsPlugin()
});

// Process updates through the hyperview view
// hyperview.applyDelta(delta);

// Get resolved values for specific entities
const result = resolver.resolve(['entity1', 'entity2']);

// Or get all resolved values
const allResults = resolver.resolveAll();

Next Steps