import { v1 as uuidv1 } from "./uuid-v1";
import { v4 as uuidv4 } from "./uuid-v4";
import { v5 as uuidv5 } from "./uuid-v5";
import type { UUID, Namespace } from "./types";

export class UUIDGeneratorFuz {
  static v1(): UUID {
    return uuidv1();
  }

  static v4(): UUID {
    return uuidv4();
  }

  static v5(name: string, namespace: Namespace): UUID {
    return uuidv5(name, namespace);
  }

  static isValid(uuid: string): boolean {
    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);
  }
}

export { UUID, Namespace };
