В этом разделе перечислены свойства и методы данных типа Uuid

Назначение

Тип данных Uuid - это обертка над библиотекой stduuid
Объект этого типа данных генерирует различные типы UUID согласно RFC4122
UUID - (англ. universally unique identifier «универсальный уникальный идентификатор») — стандарт идентификации, используемый в создании программного обеспечения, стандартизированный Open Software Foundation (OSF) как часть DCE — среды распределённых вычислений.
Основное назначение UUID — это позволить распределённым системам уникально идентифицировать информацию без центра координации. Таким образом, любой может создать UUID и использовать его для идентификации чего-либо с приемлемым уровнем уверенности, что данный идентификатор непреднамеренно никогда не будет использован для чего-то ещё.
ВНИМАНИЕ!!!
Uuid доступен только при использовании компиляторов msvc v. >= 2017 или gcc v. >= 8.0.0


Конструктор

new Uuid() Создать объект


// включить конструктор в контекст JS
var uuidSupport = post.install('Uuid');

if(uuidSupport) {
  // Создать пустой объект
  var uid = new Uuid();

  // Создать объект с uuid (аргумент строка)
  var uid = new Uuid('da1af231-da3d-4c89-87c6-81fe67d6f222');

  // Создать объект и сгенерировать uuid
  var uid = new Uuid().genMt19937();

  // Создать объект, сгенерировать uuid и дополнительно хешировать
  var uid = new Uuid().genSystem().genName('строка для хеширования');
  console.log(uid);

  //  аргумент ByteArray
  var ba = new ByteArray().random(16);
  var uid = new Uuid(ba);  // получаемый UUID возможно будет не валидным т.к.
                            //  все 16 байт будут рандомными и информационные
                            //  биты не будут совпадать с RFC4122
}



Свойства (property)


String uid.uuid Чтение/запись
Прочесть строку uuid или установить новый uuid
var uidStr = uid.uuid

uid.uuid = '6141dd39-e926-4613-a433-a82f869cf5f8';
//-----------------------------------------
var uid2 = new Uuid().genTime();
uid.uuid = uid2


String uid.type Чтение
Возвращает тип используемого UUID. Возвращаемые значения:
  • ncs
  • rfc
  • microsoft
  • reserved
  • unknow

  • String uid.algorithm Чтение
    Возвращает на каком алгоритме основан UUID. Возвращаемые значения:
  • none
  • timeBased
  • dceSecurity
  • nameBasedMd5
  • randomNumberBased
  • nameBasedSha1
  • unknow

  • String uid.gen Чтение
    Какой генератор был использован при генерации UUID. Возвращаемые значения:
  • randSsl
  • mt19937
  • ranlux48
  • ranlux24
  • system
  • time
  • undefined

  • String uid.base Чтение
    При генерации UUID основаных на имени (см. метод uid.genName(), в этом свойстве будет указан UUID на котором основна генерация



    Методы

    bool uid.equals(uid) Функция

    Сравнить UUID

    var uid1 = new Uuid('26c9077d-e6bd-4fa2-9056-19475c825a45');
    
    var eq1 = uid1.equals('26c9077d-e6bd-4fa2-9056-19475c825a45');
    post.log('e',(eq1 ? 'true' : 'false')) // -> true
    
    var eq2 = uid1.equals('26c9077d-e6bd-4fa2-0000-19475c825a45');
    post.log('e',(eq2 ? 'true' : 'false')) // -> false
    


    bool uid.toByteArray() Функция

    Преобразовать UUID в массив ByteArray (длинна получаемого массива 16 байт)


    bool uid.isNull() Функция

    Возвращает true если UUID пустой (содержит оди нули)


    bool uid.isValid() Функция

    Возвращает true если UUID не пустой и валидный


    uid uid.genMt19937() Функция
    uid uid.genRandSsl() Функция
    uid uid.genRanlux24() Функция
    uid uid.genRanlux24() Функция
    uid uid.genRanlux48() Функция
    uid uid.genSystem() Функция
    uid uid.genTime() Функция
    uid uid.genName() Функция
    Функции генерации UUID

  • genMt19937 - алгоритм Marsenne Twister
  • genRandSsl - алгоритм Marsenne Twister основаный на данных, сгенерированых в OpenSSL (функция RAND_bytes)
  • genRanlux24 - алгоритм ranlux24_base
  • genRanlux48 - алгоритм ranlux48_base
  • genSystem - алгоритм Sha1 основаный на данных привязанных к данному компьютеру
  • genTime - алгоритм основаный на времени
  • genName - алгоритм Sha1 и дополнительным хешированием с использованием строкового аргумента
  • ВНИМАНИЕ!!!
    Функция genTime не рекомендуются в использовании, т.к. дает недостаточно рандомный UUID, но при должной синхронизации компьютера со службами синхронизации времени может быть использована.
    Функции genRanlux24 и genRanlux48 имеют минимальную задержку выполнения, но качество получаемых UUID существенно уступает при использовании функций genMt19937 и genRandSsl

    
    // включить конструктор в контекст JS
    post.install('Uuid');
    
    var uidOk1 = new Uuid().genMt19937();
    var uidOk2 = new Uuid().genRandSsl();
    
    var uidBySystem = new Uuid().genSystem();
    
    var uidTimeBased   = new Uuid().genTime();
    var uidTimeAndHash = new Uuid().genTime()
                                    .genName('доп.строка для хеширования');
    
    // следующая строка сгенериует ошибку, т.к. на пустом UUID
    // дополнительное хеширование не предусмотрено
    var uid = new Uuid().genName('строка для хеширования');
    
    // но возможен такой вызов
    var uidBySystem = new Uuid().genSystem();
    var uid = new Uuid().genName(uidBySystem, 'строка для хеширования');