# Built-in Plugins ## Overview The Custom Resolver system includes several built-in plugins that implement common resolution strategies. These can be used directly or as examples for creating custom plugins. ## Available Plugins ### Last Write Wins Keeps the most recent value based on timestamp. ```typescript const resolver = new CustomResolver(view, { myProperty: new LastWriteWinsPlugin() }); ``` ### First Write Wins Keeps the first non-null value seen. ```typescript const resolver = new CustomResolver(view, { myProperty: new FirstWriteWinsPlugin() }); ``` ### Concatenation Combines string values with a separator. ```typescript const resolver = new CustomResolver(view, { fullName: new ConcatenationPlugin({ separator: ' ', sort: true // Sort values before concatenation }) }); ``` ### Majority Vote Selects the most common value. ```typescript const resolver = new CustomResolver(view, { status: new MajorityVotePlugin({ minVotes: 2 // Minimum votes required to select a winner }) }); ``` ### Minimum Value Tracks the minimum numeric value. ```typescript const resolver = new CustomResolver(view, { minPrice: new MinPlugin() }); ``` ### Maximum Value Tracks the maximum numeric value. ```typescript const resolver = new CustomResolver(view, { maxScore: new MaxPlugin() }); ``` ## Plugin Options | Plugin | Options | Default | Description | |--------|---------|---------|-------------| | `ConcatenationPlugin` | `separator: string`
`sort: boolean` | `', '`
`false` | Separator between values and whether to sort | | `MajorityVotePlugin` | `minVotes: number` | `1` | Minimum votes needed to select a winner | | `LastWriteWins`
`FirstWriteWins`
`MinPlugin`
`MaxPlugin` | None | N/A | No configuration options | ## Choosing the Right Plugin - Use `LastWriteWins` for simple timestamp-based resolution - Use `FirstWriteWins` to preserve the initial value - Use `ConcatenationPlugin` for combining string values - Use `MajorityVote` for consensus-based resolution - Use `MinPlugin`/`MaxPlugin` for numeric ranges