library-ts/browser/random/RandomUIDGenerator.ts

54 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

2025-03-08 08:16:54 +00:00
import { RandomEngine } from "./RandomEngine";
import { JSRandomEngine } from "./JSRandomEngine";
export class RandomUIDGenerator
{
static readonly UID_CHARACTER_SET:string =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
static readonly UID_NUM_CHARACTERS:number = 16;
private _characterSet:string = RandomUIDGenerator.UID_CHARACTER_SET;
get characterSet(){ return this._characterSet; }
private _numCharacters:number = RandomUIDGenerator.UID_NUM_CHARACTERS;
get numCharacters(){ return this._numCharacters; }
set( characterSet:string, numCharacters:number )
{
this._characterSet = characterSet;
this._numCharacters = numCharacters;
return this;
}
static createUID( randomEngine:RandomEngine = null )
{
let id = "";
randomEngine = randomEngine ||JSRandomEngine.$;
for ( let i = 0; i < RandomUIDGenerator.UID_NUM_CHARACTERS; i++ )
{
let randomCharacter = randomEngine.fromString( RandomUIDGenerator.UID_CHARACTER_SET );
id += randomCharacter;
}
return id;
}
generate( randomEngine:RandomEngine = null )
{
let id = "";
randomEngine = randomEngine || JSRandomEngine.$;
for ( let i = 0; i < this._numCharacters; i++ )
{
let randomCharacter = randomEngine.fromString( this._characterSet );
id += randomCharacter;
}
return id;
}
}