Pour la création d'UUID RFC9562 (anciennement RFC4122)
uuid
Note
w> uuid@11
est maintenant disponible : consultez le CHANGELOG pour plus de détails. TL;DR :
@types/uuid
de vos dépendances)options
arg sont interprétées pour v1()
, v6()
et v7()
. Voir les détailsUint8Array
. (Peut avoir un impact sur les appelants de parse()
, stringify()
ou qui transmettent un argument option#buf
à v1()
- v7()
.) 1. Installer
npm install uuid
2. Créez un UUID
Syntaxe ESM (doit utiliser des exportations nommées) :
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
... CommonJS :
const { v4 : uuidv4 } = require ( 'uuid' ) ;
uuidv4 ( ) ; // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
Pour les UUID d'horodatage, les UUID d'espace de noms et d'autres options, continuez à lire...
uuid.NIL | La chaîne UUID nulle (tous des zéros) | Nouveau dans [email protected] |
uuid.MAX | La chaîne UUID maximale (tous les uns) | Nouveau dans [email protected] |
uuid.parse() | Convertir la chaîne UUID en tableau d'octets | Nouveau dans [email protected] |
uuid.stringify() | Convertir un tableau d'octets en chaîne UUID | Nouveau dans [email protected] |
uuid.v1() | Créer un UUID version 1 (horodatage) | |
uuid.v1ToV6() | Créer un UUID version 6 à partir d'un UUID version 1 | Nouveau dans uuid@10 |
uuid.v3() | Créer un UUID version 3 (espace de noms avec MD5) | |
uuid.v4() | Créer un UUID version 4 (aléatoire) | |
uuid.v5() | Créer un UUID version 5 (espace de noms avec SHA-1) | |
uuid.v6() | Créer un UUID version 6 (horodatage, réorganisé) | Nouveau dans uuid@10 |
uuid.v6ToV1() | Créer un UUID version 1 à partir d'un UUID version 6 | Nouveau dans uuid@10 |
uuid.v7() | Créer un UUID version 7 (basé sur l'époque Unix) | Nouveau dans uuid@10 |
uuid.v8() | "Laissé intentionnellement vide" | |
uuid.validate() | Testez une chaîne pour voir si c'est un UUID valide | Nouveau dans [email protected] |
uuid.version() | Détecter la version RFC d'un UUID | Nouveau dans [email protected] |
La chaîne UUID nulle (tous des zéros).
Exemple:
import { NIL as NIL_UUID } from 'uuid' ;
NIL_UUID ; // ⇨ '00000000-0000-0000-0000-000000000000'
La chaîne UUID maximale (tous les uns).
Exemple:
import { MAX as MAX_UUID } from 'uuid' ;
MAX_UUID ; // ⇨ 'ffffffff-ffff-ffff-ffff-ffffffffffff'
Convertir la chaîne UUID en tableau d'octets
str | Une String UUID valide |
retours | Uint8Array[16] |
jette | TypeError si str n'est pas un UUID valide |
Note
L'ordre des valeurs dans les tableaux d'octets utilisés par parse()
et stringify()
suit l'ordre gauche ↠ droite des paires hexadécimales dans les chaînes UUID. Comme le montre l'exemple ci-dessous.
Exemple:
import { parse as uuidParse } from 'uuid' ;
// Parse a UUID
uuidParse ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨
// Uint8Array(16) [
// 110, 192, 189, 127, 17,
// 192, 67, 218, 151, 94,
// 42, 138, 217, 235, 174,
// 11
// ]
Convertir un tableau d'octets en chaîne UUID
arr | Collection de type Array de 16 valeurs (à partir de offset ) entre 0 et 255. |
[ offset = 0] | Number Index de départ dans le tableau |
retours | String |
jette | TypeError si une chaîne UUID valide ne peut pas être générée |
Note
L'ordre des valeurs dans les tableaux d'octets utilisés par parse()
et stringify()
suit l'ordre gauche ↠ droite des paires hexadécimales dans les chaînes UUID. Comme le montre l'exemple ci-dessous.
Exemple:
import { stringify as uuidStringify } from 'uuid' ;
const uuidBytes = Uint8Array . of (
0x6e ,
0xc0 ,
0xbd ,
0x7f ,
0x11 ,
0xc0 ,
0x43 ,
0xda ,
0x97 ,
0x5e ,
0x2a ,
0x8a ,
0xd9 ,
0xeb ,
0xae ,
0x0b
) ;
uuidStringify ( uuidBytes ) ; // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
Créer un UUID RFC version 1 (horodatage)
[ options ] | Object avec une ou plusieurs des propriétés suivantes : |
[ options.node = (random) ] | Champ "nœud" RFC sous forme de Array[6] de valeurs d'octets (selon 4.1.6) |
[ options.clockseq = (random) ] | "Séquence d'horloge" RFC sous forme de Number entre 0 et 0x3fff |
[ options.msecs = (current time) ] | Champ "horodatage" RFC ( Number de millisecondes, époque Unix) |
[ options.nsecs = 0 ] | Champ "horodatage" RFC ( Number de nanosecondes à ajouter aux msecs doit être compris entre 0 et 10 000) |
[ options.random = (random) ] | Array de 16 octets aléatoires (0-255) utilisé pour générer d'autres champs, ci-dessus |
[ options.rng ] | Alternative à options.random , une Function qui renvoie un Array de 16 octets aléatoires (0-255) |
[ buffer ] | Array | Buffer Si spécifié, uuid sera écrit ici sous forme d'octet, en commençant à offset |
[ offset = 0] | Index Number pour commencer à écrire les octets UUID dans buffer |
retours | UUID String si aucun buffer n'est spécifié, sinon renvoie buffer |
jette | Error si plus de 10 millions d'UUID/s sont demandés |
Note
L'ID de nœud par défaut (les 12 derniers chiffres de l'UUID) est généré une fois, de manière aléatoire, au démarrage du processus, puis reste inchangé pendant toute la durée du processus.
Note
options.random
et options.rng
n'ont de sens que lors du tout premier appel à v1()
, où ils peuvent être transmis pour initialiser le node
interne et les champs clockseq
.
Exemple:
import { v1 as uuidv1 } from 'uuid' ;
uuidv1 ( ) ; // ⇨ '2c5ea4c0-4067-11e9-9bdd-2b0d7b3dcb6d'
Exemple utilisant options
:
import { v1 as uuidv1 } from 'uuid' ;
const options = {
node : Uint8Array . of ( 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xab ) ,
clockseq : 0x1234 ,
msecs : new Date ( '2011-11-01' ) . getTime ( ) ,
nsecs : 5678 ,
} ;
uuidv1 ( options ) ; // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
Convertir un UUID de la version 1 vers la version 6
import { v1ToV6 } from 'uuid' ;
v1ToV6 ( '92f62d9e-22c4-11ef-97e9-325096b39f47' ) ; // ⇨ '1ef22c49-2f62-6d9e-97e9-325096b39f47'
Créer un UUID RFC version 3 (espace de noms avec MD5)
L'API est identique à v5()
, mais utilise "v3" à la place.
Important
Selon la RFC, « Si la compatibilité descendante n'est pas un problème, SHA-1 [Version 5] est préféré . »
Créer un UUID RFC version 4 (aléatoire)
[ options ] | Object avec une ou plusieurs des propriétés suivantes : |
[ options.random ] | Array de 16 octets aléatoires (0-255) |
[ options.rng ] | Alternative à options.random , une Function qui renvoie un Array de 16 octets aléatoires (0-255) |
[ buffer ] | Array | Buffer Si spécifié, uuid sera écrit ici sous forme d'octet, en commençant à offset |
[ offset = 0] | Index Number pour commencer à écrire les octets UUID dans buffer |
retours | UUID String si aucun buffer n'est spécifié, sinon renvoie buffer |
Exemple:
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
Exemple utilisant des valeurs random
prédéfinies :
import { v4 as uuidv4 } from 'uuid' ;
const v4options = {
random : Uint8Array . of (
0x10 ,
0x91 ,
0x56 ,
0xbe ,
0xc4 ,
0xfb ,
0xc1 ,
0xea ,
0x71 ,
0xb4 ,
0xef ,
0xe1 ,
0x67 ,
0x1c ,
0x58 ,
0x36
) ,
} ;
uuidv4 ( v4options ) ; // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
Créer un UUID RFC version 5 (espace de noms avec SHA-1)
name | String | Array |
namespace | String | Array[16] UUID de l'espace de noms |
[ buffer ] | Array | Buffer Si spécifié, uuid sera écrit ici sous forme d'octet, en commençant à offset |
[ offset = 0] | Index Number pour commencer à écrire les octets UUID dans buffer |
retours | UUID String si aucun buffer n'est spécifié, sinon renvoie buffer |
Note
Les espaces de noms RFC DNS
et URL
sont disponibles sous les noms v5.DNS
et v5.URL
.
Exemple avec un espace de noms personnalisé :
import { v5 as uuidv5 } from 'uuid' ;
// Define a custom namespace. Readers, create your own using something like
// https://www.uuidgenerator.net/
const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341' ;
uuidv5 ( 'Hello, World!' , MY_NAMESPACE ) ; // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
Exemple avec l'espace de noms URL
RFC :
import { v5 as uuidv5 } from 'uuid' ;
uuidv5 ( 'https://www.w3.org/' , uuidv5 . URL ) ; // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
Créer un UUID RFC version 6 (horodatage, réorganisé)
Cette méthode prend les mêmes arguments que uuid.v1().
import { v6 as uuidv6 } from 'uuid' ;
uuidv6 ( ) ; // ⇨ '1e940672-c5ea-64c0-9b5d-ab8dfbbd4bed'
Exemple utilisant options
:
import { v6 as uuidv6 } from 'uuid' ;
const options = {
node : [ 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xab ] ,
clockseq : 0x1234 ,
msecs : new Date ( '2011-11-01' ) . getTime ( ) ,
nsecs : 5678 ,
} ;
uuidv6 ( options ) ; // ⇨ '1e1041c7-10b9-662e-9234-0123456789ab'
Convertir un UUID de la version 6 vers la version 1
import { v6ToV1 } from 'uuid' ;
v6ToV1 ( '1ef22c49-2f62-6d9e-97e9-325096b39f47' ) ; // ⇨ '92f62d9e-22c4-11ef-97e9-325096b39f47'
Créer un UUID RFC version 7 (aléatoire)
[ options ] | Object avec une ou plusieurs des propriétés suivantes : |
[ options.msecs = (current time) ] | Champ "horodatage" RFC ( Number de millisecondes, époque Unix) |
[ options.random = (random) ] | Array de 16 octets aléatoires (0-255) utilisé pour générer d'autres champs, ci-dessus |
[ options.rng ] | Alternative à options.random , une Function qui renvoie un Array de 16 octets aléatoires (0-255) |
[ options.seq = (random) ] | Number de séquence de 32 bits compris entre 0 et 0xffffffff. Cela peut être fourni pour aider à garantir l'unicité des UUID générés dans le même intervalle de temps en millisecondes. Par défaut = valeur aléatoire. |
[ buffer ] | Array | Buffer Si spécifié, uuid sera écrit ici sous forme d'octet, en commençant à offset |
[ offset = 0] | Index Number pour commencer à écrire les octets UUID dans buffer |
retours | UUID String si aucun buffer n'est spécifié, sinon renvoie buffer |
Exemple:
import { v7 as uuidv7 } from 'uuid' ;
uuidv7 ( ) ; // ⇨ '01695553-c90c-705a-b56d-778dfbbd4bed'
"Laissé intentionnellement vide"
Note
Les UUID de la version 8 (expérimentale) sont « destinés aux cas d'utilisation expérimentaux ou spécifiques au fournisseur ». La RFC ne définit pas d'algorithme de création pour eux, c'est pourquoi ce package ne propose pas de méthode v8()
. Les méthodes validate()
et version()
fonctionnent cependant avec de tels UUID.
Testez une chaîne pour voir si c'est un UUID valide
str | String à valider |
retours | true si la chaîne est un UUID valide, false sinon |
Exemple:
import { validate as uuidValidate } from 'uuid' ;
uuidValidate ( 'not a UUID' ) ; // ⇨ false
uuidValidate ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ true
En utilisant validate
et version
ensemble, il est possible d'effectuer une validation par version, par exemple valider uniquement pour les UUId v4.
import { version as uuidVersion } from 'uuid' ;
import { validate as uuidValidate } from 'uuid' ;
function uuidValidateV4 ( uuid ) {
return uuidValidate ( uuid ) && uuidVersion ( uuid ) === 4 ;
}
const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210' ;
const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836' ;
uuidValidateV4 ( v4Uuid ) ; // ⇨ true
uuidValidateV4 ( v1Uuid ) ; // ⇨ false
Détecter la version RFC d'un UUID
str | Une String UUID valide |
retours | Number La version RFC de l'UUID |
jette | TypeError si str n'est pas un UUID valide |
Exemple:
import { version as uuidVersion } from 'uuid' ;
uuidVersion ( '45637ec4-c85f-11ea-87d0-0242ac130003' ) ; // ⇨ 1
uuidVersion ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ 4
Note
Cette méthode renvoie 0
pour le NIL
UUID et 15
pour le MAX
UUID.
Les UUID peuvent être générés à partir de la ligne de commande en utilisant uuid
.
$ npx uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
La valeur par défaut est de générer la version 4 de l'UUIDS, mais les autres versions sont prises en charge. Tapez uuid --help
pour plus de détails :
$ npx uuid --help
Usage:
uuid
uuid v1
uuid v3 < name > < namespace uuid >
uuid v4
uuid v5 < name > < namespace uuid >
uuid v7
uuid --help
Note: < namespace uuid > may be " URL " or " DNS " to use the corresponding UUIDs
defined by RFC9562
options
Gestion des UUID d'horodatage Avant uuid@11
, il était possible que l'état options
interfère avec l'état interne utilisé pour garantir l'unicité des UUID basés sur l'horodatage (les méthodes v1()
, v6()
et v7()
). À partir de uuid@11
, ce problème a été résolu en utilisant la présence de l'argument options
comme indicateur pour choisir entre deux comportements possibles :
options
: l'état interne est utilisé pour améliorer l'unicité de l'UUID.options
: l'état interne n'est PAS utilisé et, à la place, les valeurs par défaut appropriées sont appliquées selon les besoins. Navigateurs : les versions uuid
sont testées avec la dernière version de Chrome, Safari, Firefox et Edge. Les versions mobiles de ces mêmes navigateurs devraient fonctionner mais ne sont pas actuellement testées.
Node : les versions uuid
sont testées sur le nœud (versions LTS), plus une précédente. Par exemple, node@18
est en mode maintenance et node@22
est la version LTS actuelle. Donc uuid
prend en charge node@16
- node@22
.
Typescript : les versions TS publiées au cours des deux dernières années sont prises en charge. source
react-native-get-random-values
uuid
. Étant donné que uuid
peut également apparaître comme une dépendance transitive de certaines autres importations, il est plus sûr d'importer simplement react-native-get-random-values
comme toute première chose dans votre point d'entrée : import 'react-native-get-random-values' ;
import { v4 as uuidv4 } from 'uuid' ;
Markdown généré à partir de README_js.md par