validateMarketplaceName function
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;
}