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; } }