/** * Copyright 2026 Angus.Fenying * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { uuidToString } from './Utils.js'; /** * The class for generating UUID in version 4. */ export class Uuid4Generator { /** * Generate a UUIDv4 string. * * @returns A UUIDv4 string. */ public generate(): string { return uuidToString(this.generateAsBuffer()); } /** * Generate a UUIDv4 as a 16-byte buffer. * * @returns A 16-byte buffer representing the UUIDv4. */ public generateAsBuffer(): Buffer { const buffer = Buffer.allocUnsafe(16); for (let i = 0; i < 4; i++) { buffer.writeUInt32BE(Math.floor(Math.random() * 0x100000000), i * 4); } buffer[6] = (buffer[6] & 0x0F) | 0x40; // Set version to 4 buffer[8] = (buffer[8] & 0x3F) | 0x80; // Set variant to 10 return buffer; } }