• Migrates rule to current format, defaulting targetFields to ['titles'] for backward compatibility.

    Parameters

    • rule: Partial<CustomRule>

      Partial rule (may be missing targetFields).

    Returns CustomRule

    Complete rule with all required properties.

    export function migrateCustomRule(rule: Partial<CustomRule>): CustomRule {
    // Generate a stable ID if missing
    const id =
    rule.id || `${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;

    return {
    id,
    pattern: rule.pattern || "",
    description: rule.description || "",
    enabled: rule.enabled ?? true,
    caseSensitive: rule.caseSensitive ?? false,
    targetFields:
    rule.targetFields && rule.targetFields.length > 0
    ? rule.targetFields
    : ["titles"],
    createdAt: rule.createdAt || new Date().toISOString(),
    };
    }