Untuk pembuatan UUID RFC9562 (resminya RFC4122).
uuid
Catatan
w> uuid@11
sekarang tersedia: Lihat CHANGELOG untuk detailnya. DIATAS;DR:
@types/uuid
dari dependensi Anda)options
arg diinterpretasikan untuk v1()
, v6()
, dan v7()
. Lihat detailnyaUint8Array
s. (Dapat memengaruhi penelepon parse()
, stringify()
, atau yang meneruskan argumen option#buf
ke v1()
- v7()
.) 1. Instal
npm install uuid
2. Membuat UUID
Sintaks ESM (harus menggunakan ekspor bernama):
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
...JS Umum:
const { v4 : uuidv4 } = require ( 'uuid' ) ;
uuidv4 ( ) ; // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
Untuk UUID stempel waktu, UUID namespace, dan opsi lainnya, baca terus ...
uuid.NIL | String UUID nihil (semua nol) | Baru di [email protected] |
uuid.MAX | String UUID maks (semuanya) | Baru di [email protected] |
uuid.parse() | Ubah string UUID menjadi array byte | Baru di [email protected] |
uuid.stringify() | Ubah array byte menjadi string UUID | Baru di [email protected] |
uuid.v1() | Buat UUID versi 1 (stempel waktu). | |
uuid.v1ToV6() | Buat UUID versi 6 dari UUID versi 1 | Baru di uuid@10 |
uuid.v3() | Buat UUID versi 3 (namespace dengan MD5). | |
uuid.v4() | Buat UUID versi 4 (acak). | |
uuid.v5() | Buat UUID versi 5 (namespace dengan SHA-1). | |
uuid.v6() | Buat UUID versi 6 (stempel waktu, disusun ulang). | Baru di uuid@10 |
uuid.v6ToV1() | Buat UUID versi 1 dari UUID versi 6 | Baru di uuid@10 |
uuid.v7() | Buat UUID versi 7 (berbasis waktu Unix Epoch). | Baru di uuid@10 |
uuid.v8() | "Sengaja dikosongkan" | |
uuid.validate() | Uji string untuk melihat apakah itu UUID yang valid | Baru di [email protected] |
uuid.version() | Deteksi UUID versi RFC | Baru di [email protected] |
String UUID nihil (semua nol).
Contoh:
import { NIL as NIL_UUID } from 'uuid' ;
NIL_UUID ; // ⇨ '00000000-0000-0000-0000-000000000000'
String UUID maks (semuanya).
Contoh:
import { MAX as MAX_UUID } from 'uuid' ;
MAX_UUID ; // ⇨ 'ffffffff-ffff-ffff-ffff-ffffffffffff'
Ubah string UUID menjadi array byte
str | String UUID yang valid |
kembali | Uint8Array[16] |
melempar | TypeError jika str bukan UUID yang valid |
Catatan
Pengurutan nilai dalam array byte yang digunakan oleh parse()
dan stringify()
mengikuti urutan pasangan hex kiri ↠ kanan dalam string UUID. Seperti yang ditunjukkan pada contoh di bawah ini.
Contoh:
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
// ]
Ubah array byte menjadi string UUID
arr | Kumpulan 16 nilai seperti Array (mulai dari offset ) antara 0-255. |
[ offset = 0] | Indeks Awal Number dalam Array |
kembali | String |
melempar | TypeError jika string UUID yang valid tidak dapat dibuat |
Catatan
Pengurutan nilai dalam array byte yang digunakan oleh parse()
dan stringify()
mengikuti urutan pasangan hex kiri ↠ kanan dalam string UUID. Seperti yang ditunjukkan pada contoh di bawah ini.
Contoh:
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'
Buat UUID RFC versi 1 (stempel waktu).
[ options ] | Object dengan satu atau lebih properti berikut: |
[ options.node = (random) ] | Bidang "simpul" RFC sebagai Array[6] nilai byte (per 4.1.6) |
[ options.clockseq = (random) ] | RFC "urutan jam" sebagai Number antara 0 - 0x3fff |
[ options.msecs = (current time) ] | Bidang "cap waktu" RFC ( Number milidetik, zaman unix) |
[ options.nsecs = 0 ] | Bidang "cap waktu" RFC ( Number nanodetik yang akan ditambahkan ke msecs , harus 0-10.000) |
[ options.random = (random) ] | Array 16 byte acak (0-255) digunakan untuk menghasilkan kolom lain, di atas |
[ options.rng ] | Alternatif untuk options.random , Function yang mengembalikan Array 16 byte acak (0-255) |
[ buffer ] | Array | Buffer Jika ditentukan, uuid akan ditulis di sini dalam bentuk byte, dimulai dari offset |
[ offset = 0] | Indeks Number untuk mulai menulis byte UUID dalam buffer |
kembali | UUID String jika tidak ada buffer yang ditentukan, jika tidak maka akan mengembalikan buffer |
melempar | Error jika diminta lebih dari 10 juta UUID/dtk |
Catatan
Id node default (12 digit terakhir dalam UUID) dihasilkan satu kali, secara acak, pada permulaan proses, dan kemudian tetap tidak berubah selama durasi proses.
Catatan
options.random
dan options.rng
hanya bermakna pada panggilan pertama ke v1()
, yang mungkin diteruskan untuk menginisialisasi bidang node
internal dan clockseq
.
Contoh:
import { v1 as uuidv1 } from 'uuid' ;
uuidv1 ( ) ; // ⇨ '2c5ea4c0-4067-11e9-9bdd-2b0d7b3dcb6d'
Contoh penggunaan 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'
Konversi UUID dari versi 1 ke versi 6
import { v1ToV6 } from 'uuid' ;
v1ToV6 ( '92f62d9e-22c4-11ef-97e9-325096b39f47' ) ; // ⇨ '1ef22c49-2f62-6d9e-97e9-325096b39f47'
Buat UUID RFC versi 3 (namespace dengan MD5).
API identik dengan v5()
, tetapi menggunakan "v3" sebagai gantinya.
Penting
Berdasarkan RFC, " Jika kompatibilitas ke belakang tidak menjadi masalah, SHA-1 [Versi 5] lebih disukai ."
Buat UUID RFC versi 4 (acak).
[ options ] | Object dengan satu atau lebih properti berikut: |
[ options.random ] | Array 16 byte acak (0-255) |
[ options.rng ] | Alternatif untuk options.random , Function yang mengembalikan Array 16 byte acak (0-255) |
[ buffer ] | Array | Buffer Jika ditentukan, uuid akan ditulis di sini dalam bentuk byte, dimulai dari offset |
[ offset = 0] | Indeks Number untuk mulai menulis byte UUID dalam buffer |
kembali | UUID String jika tidak ada buffer yang ditentukan, jika tidak maka akan mengembalikan buffer |
Contoh:
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
Contoh menggunakan nilai random
yang telah ditentukan sebelumnya:
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'
Buat UUID RFC versi 5 (namespace dengan SHA-1).
name | String | Array |
namespace | String | Array[16] Ruang Nama UUID |
[ buffer ] | Array | Buffer Jika ditentukan, uuid akan ditulis di sini dalam bentuk byte, dimulai dari offset |
[ offset = 0] | Indeks Number untuk mulai menulis byte UUID dalam buffer |
kembali | UUID String jika tidak ada buffer yang ditentukan, jika tidak maka akan mengembalikan buffer |
Catatan
Ruang nama RFC DNS
dan URL
tersedia sebagai v5.DNS
dan v5.URL
.
Contoh dengan namespace khusus:
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'
Contoh dengan namespace URL
RFC:
import { v5 as uuidv5 } from 'uuid' ;
uuidv5 ( 'https://www.w3.org/' , uuidv5 . URL ) ; // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
Buat UUID RFC versi 6 (stempel waktu, disusun ulang).
Metode ini mengambil argumen yang sama seperti uuid.v1().
import { v6 as uuidv6 } from 'uuid' ;
uuidv6 ( ) ; // ⇨ '1e940672-c5ea-64c0-9b5d-ab8dfbbd4bed'
Contoh penggunaan 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'
Konversi UUID dari versi 6 ke versi 1
import { v6ToV1 } from 'uuid' ;
v6ToV1 ( '1ef22c49-2f62-6d9e-97e9-325096b39f47' ) ; // ⇨ '92f62d9e-22c4-11ef-97e9-325096b39f47'
Buat UUID RFC versi 7 (acak).
[ options ] | Object dengan satu atau lebih properti berikut: |
[ options.msecs = (current time) ] | Bidang "cap waktu" RFC ( Number milidetik, zaman unix) |
[ options.random = (random) ] | Array 16 byte acak (0-255) digunakan untuk menghasilkan kolom lain, di atas |
[ options.rng ] | Alternatif untuk options.random , Function yang mengembalikan Array 16 byte acak (0-255) |
[ options.seq = (random) ] | Number urut 32-bit antara 0 - 0xffffffff. Ini mungkin disediakan untuk membantu memastikan keunikan UUID yang dihasilkan dalam interval waktu milidetik yang sama. Default = nilai acak. |
[ buffer ] | Array | Buffer Jika ditentukan, uuid akan ditulis di sini dalam bentuk byte, dimulai dari offset |
[ offset = 0] | Indeks Number untuk mulai menulis byte UUID dalam buffer |
kembali | UUID String jika tidak ada buffer yang ditentukan, jika tidak maka akan mengembalikan buffer |
Contoh:
import { v7 as uuidv7 } from 'uuid' ;
uuidv7 ( ) ; // ⇨ '01695553-c90c-705a-b56d-778dfbbd4bed'
"Sengaja dikosongkan"
Catatan
UUID versi 8 (eksperimental) adalah "untuk kasus penggunaan eksperimental atau khusus vendor". RFC tidak menentukan algoritma pembuatannya, itulah sebabnya paket ini tidak menawarkan metode v8()
. Namun, metode validate()
dan version()
berfungsi dengan UUID tersebut.
Uji string untuk melihat apakah itu UUID yang valid
str | String untuk divalidasi |
kembali | true jika string adalah UUID yang valid, false jika sebaliknya |
Contoh:
import { validate as uuidValidate } from 'uuid' ;
uuidValidate ( 'not a UUID' ) ; // ⇨ false
uuidValidate ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ true
Dengan menggunakan validate
dan version
bersama-sama, dimungkinkan untuk melakukan validasi per versi, misalnya memvalidasi hanya untuk 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
Deteksi UUID versi RFC
str | String UUID yang valid |
kembali | Number UUID versi RFC |
melempar | TypeError jika str bukan UUID yang valid |
Contoh:
import { version as uuidVersion } from 'uuid' ;
uuidVersion ( '45637ec4-c85f-11ea-87d0-0242ac130003' ) ; // ⇨ 1
uuidVersion ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ 4
Catatan
Metode ini mengembalikan 0
untuk UUID NIL
, dan 15
untuk UUID MAX
.
UUID dapat dihasilkan dari baris perintah menggunakan uuid
.
$ npx uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
Standarnya adalah menghasilkan UUIDS versi 4, namun versi lainnya didukung. Ketik uuid --help
untuk detailnya:
$ 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
Penanganan untuk UUID Stempel Waktu Sebelum uuid@11
, status options
dapat mengganggu status internal yang digunakan untuk memastikan keunikan UUID berbasis stempel waktu (metode v1()
, v6()
, dan v7()
). Dimulai dengan uuid@11
, masalah ini telah diatasi dengan menggunakan kehadiran argumen options
sebagai tanda untuk memilih di antara dua kemungkinan perilaku:
options
: Keadaan internal dimanfaatkan untuk meningkatkan keunikan UUID.options
: Status internal TIDAK digunakan dan, sebagai gantinya, default yang sesuai diterapkan sesuai kebutuhan. Browser : build uuid
diuji terhadap versi terbaru desktop Chrome, Safari, Firefox, dan Edge. Versi seluler dari browser yang sama diharapkan berfungsi tetapi saat ini belum diuji.
Node : build uuid
diuji terhadap node (rilis LTS), ditambah satu node sebelumnya. Misalnya node@18
dalam mode pemeliharaan, dan node@22
adalah rilis LTS saat ini. Jadi uuid
mendukung node@16
- node@22
.
TypeScript : Versi TS yang dirilis dalam dua tahun terakhir didukung. sumber
react-native-get-random-values
uuid
. Karena uuid
mungkin juga muncul sebagai ketergantungan transitif dari beberapa impor lainnya, maka yang paling aman adalah mengimpor react-native-get-random-values
sebagai hal pertama di titik masuk Anda: import 'react-native-get-random-values' ;
import { v4 as uuidv4 } from 'uuid' ;
Penurunan harga dihasilkan dari README_js.md oleh