56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.GuidGenerator = void 0;
|
|
const crypto_1 = require("crypto");
|
|
class GuidGenerator {
|
|
static generateGuid() {
|
|
const bytes = (0, crypto_1.randomBytes)(12);
|
|
const hexString = bytes.toString('hex').toUpperCase();
|
|
return `${hexString.slice(0, 8)}-${hexString.slice(8, 16)}-${hexString.slice(16, 24)}`;
|
|
}
|
|
static generateUuid() {
|
|
const bytes = (0, crypto_1.randomBytes)(16);
|
|
const hex = bytes.toString('hex');
|
|
return [
|
|
hex.slice(0, 8),
|
|
hex.slice(8, 12),
|
|
'4' + hex.slice(13, 16),
|
|
((parseInt(hex.slice(16, 17), 16) & 0x3) | 0x8).toString(16) + hex.slice(17, 20),
|
|
hex.slice(20, 32)
|
|
].join('-');
|
|
}
|
|
static isValidGuid(guid) {
|
|
const guidRegex = /^[A-F0-9]{8}-[A-F0-9]{8}-[A-F0-9]{8}$/;
|
|
return guidRegex.test(guid);
|
|
}
|
|
static isValidUuid(uuid) {
|
|
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
return uuidRegex.test(uuid);
|
|
}
|
|
static generateMultipleGuids(count) {
|
|
const guids = [];
|
|
const guidSet = new Set();
|
|
while (guidSet.size < count) {
|
|
const guid = this.generateGuid();
|
|
if (!guidSet.has(guid)) {
|
|
guidSet.add(guid);
|
|
guids.push(guid);
|
|
}
|
|
}
|
|
return guids;
|
|
}
|
|
static generateMultipleUuids(count) {
|
|
const uuids = [];
|
|
const uuidSet = new Set();
|
|
while (uuidSet.size < count) {
|
|
const uuid = this.generateUuid();
|
|
if (!uuidSet.has(uuid)) {
|
|
uuidSet.add(uuid);
|
|
uuids.push(uuid);
|
|
}
|
|
}
|
|
return uuids;
|
|
}
|
|
}
|
|
exports.GuidGenerator = GuidGenerator;
|