interface FileHandler

File handler definition for intelligent file updates

Examples

Example 1

const jsonHandler: FileHandler = {
  id: "json",
  name: "JSON Configuration",
  detector: (path) => path.endsWith(".json"),
  patterns: {
    version: /^(\s*)"version":\s*"([^"]+)"/m
  },
  validate: (content) => {
    try {
      JSON.parse(content);
      return { valid: true };
    } catch (e) {
      return { valid: false, error: e.message };
    }
  }
};

Properties

id: string

Unique identifier for this handler

name: string

Human-readable name

detector: (filePath: string) => boolean

Function to detect if this handler applies to a file

patterns: Record<string, RegExp>

Built-in patterns for common fields

optional
validators: Record<string, (content: string) => boolean>

Optional validators to ensure patterns work correctly

optional
replacer: (
content: string,
key: string,
oldValue: string,
newValue: string,
) => string

Optional custom replacement logic if patterns aren't sufficient

optional
validate: (content: string) => { valid: boolean; error?: string; }

Optional post-update validation

Usage

import { type FileHandler } from ".";