// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.

const UUID_RE =
  /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;

/**
 * Validate that the passed UUID is an RFC4122 v4 UUID.
 *
 * ```ts
 * import { validate } from "./v4.ts";
 * import { generate as generateV1 } from "./v1.ts";
 *
 * validate(crypto.randomUUID()); // true
 * validate(generateV1() as string); // false
 * validate("this-is-not-a-uuid"); // false
 * ```
 */
export function validate(id: string): boolean {
  return UUID_RE.test(id);
}

/**
 * @deprecated v4 UUID generation is deprecated and will be removed in a future
 * std/uuid release. Use the web standard `globalThis.crypto.randomUUID()`
 * function instead.
 *
 * Generate a RFC4122 v4 UUID (pseudo-random).
 */
export function generate(): string {
  return crypto.randomUUID();
}
