validateMarketplaceName function

List<ValidationError> validateMarketplaceName(
  1. String name
)

Validate a marketplace name string.

Implementation

List<ValidationError> validateMarketplaceName(String name) {
  final errors = <ValidationError>[];

  if (name.isEmpty) {
    errors.add(
      const ValidationError(
        path: 'name',
        message: 'Marketplace must have a name',
      ),
    );
    return errors;
  }

  if (name.contains(' ')) {
    errors.add(
      const ValidationError(
        path: 'name',
        message:
            'Marketplace name cannot contain spaces. Use kebab-case (e.g., "my-marketplace")',
      ),
    );
  }

  if (name.contains('/') ||
      name.contains(r'\') ||
      name.contains('..') ||
      name == '.') {
    errors.add(
      const ValidationError(
        path: 'name',
        message:
            'Marketplace name cannot contain path separators (/ or \\), ".." sequences, or be "."',
      ),
    );
  }

  if (isBlockedOfficialName(name)) {
    errors.add(
      const ValidationError(
        path: 'name',
        message:
            'Marketplace name impersonates an official Anthropic/Neomage marketplace',
      ),
    );
  }

  if (name.toLowerCase() == 'inline') {
    errors.add(
      const ValidationError(
        path: 'name',
        message:
            'Marketplace name "inline" is reserved for --plugin-dir session plugins',
      ),
    );
  }

  if (name.toLowerCase() == 'builtin') {
    errors.add(
      const ValidationError(
        path: 'name',
        message: 'Marketplace name "builtin" is reserved for built-in plugins',
      ),
    );
  }

  return errors;
}