oneie
Version:
Build apps, websites, and AI agents in English. Zero-interaction setup for AI agents (Claude Code, Cursor, Windsurf). Download to your computer, run in the cloud, deploy to the edge. Open source and free forever.
73 lines • 2.11 kB
JavaScript
/**
* Validation utilities for CLI
*/
/**
* Validates email address format
* @param email Email address to validate
* @returns True if valid, false otherwise
*/
export function isValidEmail(email) {
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailPattern.test(email);
}
/**
* Validates URL format
* @param url URL to validate
* @returns True if valid, false otherwise
*/
export function isValidUrl(url) {
try {
const parsed = new URL(url);
return parsed.protocol === "http:" || parsed.protocol === "https:";
}
catch {
return false;
}
}
/**
* Generates a URL-safe slug from a string
* @param text Text to slugify
* @returns URL-safe slug (lowercase, hyphens)
*/
export function slugify(text) {
return text
.toLowerCase()
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-|-$/g, "");
}
/**
* Reserved names that cannot be used by customers
*/
export const RESERVED_NAMES = {
name: ["one"],
folder: ["onegroup", "one"],
website: ["https://one.ie", "http://one.ie", "one.ie", "www.one.ie"],
};
/**
* Validates that organization name is not reserved
* @param name Organization name to validate
* @returns True if valid (not reserved), false if reserved
*/
export function isReservedName(name) {
const normalized = name.toLowerCase().trim();
return RESERVED_NAMES.name.includes(normalized);
}
/**
* Validates that folder name is not reserved
* @param folder Folder name to validate
* @returns True if reserved, false if valid
*/
export function isReservedFolder(folder) {
const normalized = folder.toLowerCase().trim();
return RESERVED_NAMES.folder.includes(normalized);
}
/**
* Validates that website URL is not reserved
* @param website Website URL to validate
* @returns True if reserved, false if valid
*/
export function isReservedWebsite(website) {
const normalized = website.toLowerCase().trim().replace(/\/$/, "");
return RESERVED_NAMES.website.some((reserved) => normalized.includes(reserved.replace(/^https?:\/\//, "")));
}
//# sourceMappingURL=validation.js.map