UNPKG

skailan-core

Version:

Servicio de autenticación y multitenancy para Skailan.

75 lines • 2.21 kB
import { PrismaClient } from "@prisma/client"; /** * Utility functions for common operations across packages */ /** * Validates if a string is a valid UUID */ export const isValidUUID = (uuid) => { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; return uuidRegex.test(uuid); }; /** * Generates a safe organization slug from a name */ export const generateOrganizationSlug = (name) => { return name .toLowerCase() .trim() .replace(/[^a-z0-9]/g, "-") .replace(/-+/g, "-") .replace(/^-|-$/g, ""); }; /** * Validates organization slug format */ export const isValidOrganizationSlug = (slug) => { const slugRegex = /^[a-z0-9-]+$/; return slugRegex.test(slug) && slug.length >= 3 && slug.length <= 50; }; /** * Creates a tenant Prisma client with custom configuration */ export const createTenantPrismaClient = (organizationSlug, options) => { const schema = `org_${organizationSlug}`; const baseUrl = options?.datasourceUrl || process.env.DATABASE_URL; if (!baseUrl) { throw new Error("DATABASE_URL environment variable is required"); } return new PrismaClient({ datasources: { db: { url: `${baseUrl}?schema=${schema}`, }, }, log: options?.log ? ["query", "info", "warn", "error"] : undefined, }); }; /** * Validates email format */ export const isValidEmail = (email) => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; /** * Sanitizes user input for safe database operations */ export const sanitizeInput = (input) => { return input .trim() .replace(/[<>]/g, "") // Remove potential HTML tags .substring(0, 1000); // Limit length }; /** * Generates a random string for tokens or IDs */ export const generateRandomString = (length = 32) => { const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; let result = ""; for (let i = 0; i < length; i++) { result += chars.charAt(Math.floor(Math.random() * chars.length)); } return result; }; //# sourceMappingURL=commonUtils.js.map