You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Nano ID dapat dibandingkan dengan UUID v4 (yang berbasis acak / _randomly generated_). Nano ID dan UUID v4 memiliki jumlah bita yang mirip pada ID yang dihasilkan (126 bita pada NanoID dan 122 bita pada UUID), karenanya ia memiliki probabilitas _collision_ (konflik / tabrakan) yang hampir serupa:
@@ -65,6 +64,7 @@ Ada tiga buah perbedaan antara Nano ID dan UUID v4:
65
64
2. Kode sumber Nano ID **empat kali lebih kecil** ketimbang `uuid/v4`: 130 bytes dibanding 483 bytes.
66
65
3. Karena menggunakan trik alokasi memori, Nano ID **dua kali lebih cepat** ketimbang UUID.
_Lihat artikel yang informatif tentang teori angka acak: [Nilai acak yang aman dalam Node.js (English)](https://gist.github.com/joepie91/7105003c3b26e65efcea63f3db82dfba)_.
@@ -110,6 +111,7 @@ _Lihat artikel yang informatif tentang teori angka acak: [Nilai acak yang aman d
110
111
111
112
-**Kerentanan.** Untuk melaporkan sebuah _security vulnerability_ atau kerentanan, mohon menggunakan [Tidelift Security Contact](https://tidelift.com/security). Tidelift akan mengkoordinasikan pembetulan dan penyingkapan dari kerentanan tersebut.
112
113
114
+
113
115
## Instalasi
114
116
115
117
```bash
@@ -128,18 +130,14 @@ Nano ID tersedia dalam bentuk ES modules. Tidak perlu melakukan konfigurasi apap
128
130
import { nanoid } from'nanoid'
129
131
```
130
132
131
-
Dalam Node.js, dapat digunakan gaya _import_ ala CommonJS:
132
-
133
-
```js
134
-
const { nanoid } =require('nanoid')
135
-
```
136
133
137
134
## API
138
135
139
136
Nano ID memiliki tiga buah API: normal (_blocking_), asinkronus (_asynchronous_), dan _non-secure_.
140
137
141
138
Bawaannya, Nano ID menggunakan simbol yang _URL-friendly_ (`A-Za-z0-9_-`) dan mengembalikan ID dengan 21 karakter (untuk memiliki probabilitas collision / tabrakan yang mirip dengan UUID v4).
142
139
140
+
143
141
### Blocking
144
142
145
143
Penggunaan Nano ID yang aman dan yang paling mudah.
@@ -161,6 +159,7 @@ Jangan lupa memeriksa tingkat keamanan dari ukuran ID dalam situs [ID collision
161
159
162
160
Dapat digunakan pula [custom alphabet](#custom-alphabet-or-size) atau [random generator](#custom-random-bytes-generator) yang lain.
163
161
162
+
164
163
### Async
165
164
166
165
Untuk menghasilkan bytes yang acak dan aman secara kriptografis, CPU mengumpulkan noise elektromagnetik. Umumnya, entropi sudah dikumpulkan terlebih dahulu.
@@ -181,6 +180,7 @@ Referensi lebih lanjut tentang entropi dapat dilihat pada dokumentasi fungsi [`c
181
180
182
181
Sayangnya, keuntungan Web Crypto API akan hilang di browser apabila menggunakan API asinkronus ini. Untuk sekarang, browser dibatasi hanya menggunakan API sinkronus (untuk keamanan) atau API asinkronus (lebih cepat, tetapi karena keuntungan Web Crypto hilang, keamanannya sedikit lebih rendah ketimbang penggunaan API sinkronus).
183
182
183
+
184
184
### Non-Secure
185
185
186
186
Konfigurasi bawaan Nano ID menggunakan random bytes generator yang berasal dari perangkat keras untuk keamanan dan probabilitas collision yang rendah. Apabila tidak terlalu memikirkan soal keamanan, dapat pula menggunakan non-secure generator yang lebih cepat.
@@ -190,6 +190,7 @@ import { nanoid } from 'nanoid/non-secure'
190
190
constid=nanoid() //=> "Uakgb_J5m9g-0JDMbcJqLJ"
191
191
```
192
192
193
+
193
194
### Alfabet dan Ukuran (Custom)
194
195
195
196
`customAlphabet` digunakan untuk membuat Nano ID dengan alfabet dan ukuran ID yang sesuai dengan kebutuhan (dapat dikustomisasi).
`customRandom` digunakan untuk membuat Nano ID yang mengganti alfabet dan algoritma _random bytes generator_ yang telah diimplementasikan pada versi bawaan (dalam artian menggunakan algoritma sendiri untuk mendapatkan random bytes).
API asinkronus dan non-secure tidak tersedia untuk fungsi `customRandom`.
250
252
251
-
## Penggunaan
252
-
253
-
### IE
254
-
255
-
Apabila mengimplementasikan di Internet Explorer, dibutuhkan untuk melakukan [transpile pada `node_modules`](https://developer.epages.com/blog/coding/how-to-transpile-node-modules-with-babel-and-webpack-in-a-monorepo/) dengan Babel dan menambahkan alias untuk `crypto` seperti berikut:
Untuk Rollup, dibutuhkan [`@rollup/plugin-node-resolve`](https://github.com/rollup/plugins/tree/master/packages/node-resolve) untuk versi browser.
317
-
318
-
```js
319
-
plugins: [
320
-
nodeResolve({
321
-
browser:true
322
-
})
323
-
]
324
-
```
325
-
326
301
### PouchDB dan CouchDB
327
302
328
303
Dalam PouchDB dan CouchDB, ID tidak bisa dimulai dengan underscore `_`. Sebuah _prefix_ dibutuhkan untuk mencegah hal ini terjadi, karena Nano ID mungkin menggunakan `_` sebagai karakter pertama dari ID yang dihasilkan.
Perhatian: ID yang dihasilkan dari non-secure dapat lebih mudah tabrakan / memiliki probabilitas collision yang lebih besar.
362
327
328
+
363
329
### CLI
364
330
365
331
Nano ID dapat didapatkan dengan cara menggunakan `npx nanoid` pada Terminal. Hanya diperlukan Node.js untuk ini, dan tidak perlu mengunduh dan menginstall Nano ID dalam sistem.
@@ -372,6 +338,7 @@ LZfXLFzPPR4NNrgjlWDxn
372
338
373
339
Bila ingin mengganti alfabet atau ukuran ID, dapat menggunakan [`nanoid-cli`](https://github.com/twhitbeck/nanoid-cli).
374
340
341
+
375
342
### Bahasa Pemrograman Lainnya
376
343
377
344
Nano ID telah bermigrasi ke berbagai macam bahasa. Seluruh versi dapat digunakan untuk mendapatkan ID generator yang sama pada sisi klien dan sisi penyedia layanan (_client-side_ dan _server-side_).
@@ -404,6 +371,7 @@ Nano ID telah bermigrasi ke berbagai macam bahasa. Seluruh versi dapat digunakan
404
371
405
372
Untuk environment lainnya, [CLI](#cli) tersedia untuk melakukan generasi ID dari command line / Terminal.
406
373
374
+
407
375
## Alat
408
376
409
377
-[ID Size Calculator](https://zelark.github.io/nano-id-cc/) menunjukkan probabilitas collision ketika melakukan konfigurasi alfabet dan ukuran.
0 commit comments