Skip to content

Commit 96f5d56

Browse files
committed
Clean up docs
1 parent b8a5e61 commit 96f5d56

File tree

4 files changed

+16
-259
lines changed

4 files changed

+16
-259
lines changed

README.id-ID.md

Lines changed: 14 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Mendukung penjelajah (browser) modern, IE [dengan Babel](https://developer.epage
2929
alt="Disponsori oleh Evil Martians" width="236" height="54">
3030
</a>
3131

32+
3233
## Table of Contents
3334

3435
- [Perbandingan dengan UUID](#perbandingan-dengan-uuid)
@@ -42,17 +43,15 @@ Mendukung penjelajah (browser) modern, IE [dengan Babel](https://developer.epage
4243
- [Alfabet dan Ukuran (Custom)](#alfabet-dan-ukuran-penyesuaian)
4344
- [Generasi Random Bytes (Custom)](#generasi-random-bytes-custom)
4445
- [Penggunaan](#penggunaan)
45-
- [IE](#ie)
4646
- [React](#react)
4747
- [React Native](#react-native)
48-
- [Rollup](#rollup)
4948
- [PouchDB dan CouchDB](#pouchdb-dan-couchdb)
50-
- [Mongoose](#mongoose)
5149
- [Web Workers](#web-workers)
5250
- [CLI](#cli)
5351
- [Bahasa Pemrograman Lainnya](#bahasa-pemrograman-lainnya)
5452
- [Alat](#alat)
5553

54+
5655
## Perbandingan dengan UUID
5756

5857
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:
6564
2. Kode sumber Nano ID **empat kali lebih kecil** ketimbang `uuid/v4`: 130 bytes dibanding 483 bytes.
6665
3. Karena menggunakan trik alokasi memori, Nano ID **dua kali lebih cepat** ketimbang UUID.
6766

67+
6868
## Benchmark
6969

7070
```rust
@@ -95,6 +95,7 @@ rndm 2,674,806 ops/sec
9595

9696
Konfigurasi pengujian: ThinkPad X1 Carbon Gen 9, Fedora 34, Node.js 16.10.
9797

98+
9899
## Keamanan
99100

100101
_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
110111

111112
- **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.
112113

114+
113115
## Instalasi
114116

115117
```bash
@@ -128,18 +130,14 @@ Nano ID tersedia dalam bentuk ES modules. Tidak perlu melakukan konfigurasi apap
128130
import { nanoid } from 'nanoid'
129131
```
130132

131-
Dalam Node.js, dapat digunakan gaya _import_ ala CommonJS:
132-
133-
```js
134-
const { nanoid } = require('nanoid')
135-
```
136133

137134
## API
138135

139136
Nano ID memiliki tiga buah API: normal (_blocking_), asinkronus (_asynchronous_), dan _non-secure_.
140137

141138
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).
142139

140+
143141
### Blocking
144142

145143
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
161159

162160
Dapat digunakan pula [custom alphabet](#custom-alphabet-or-size) atau [random generator](#custom-random-bytes-generator) yang lain.
163161

162+
164163
### Async
165164

166165
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
181180

182181
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).
183182

183+
184184
### Non-Secure
185185

186186
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'
190190
const id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqLJ"
191191
```
192192

193+
193194
### Alfabet dan Ukuran (Custom)
194195

195196
`customAlphabet` digunakan untuk membuat Nano ID dengan alfabet dan ukuran ID yang sesuai dengan kebutuhan (dapat dikustomisasi).
@@ -220,6 +221,7 @@ const nanoid = customAlphabet('1234567890abcdef', 10)
220221
user.id = nanoid()
221222
```
222223

224+
223225
### Generasi Random Bytes (Custom)
224226

225227
`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).
@@ -248,23 +250,8 @@ const nanoid = customRandom(urlAlphabet, 10, random)
248250

249251
API asinkronus dan non-secure tidak tersedia untuk fungsi `customRandom`.
250252

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:
256-
257-
```js
258-
// polyfills.js
259-
if (!window.crypto) {
260-
window.crypto = window.msCrypto
261-
}
262-
```
263253

264-
```js
265-
import './polyfills.js'
266-
import { nanoid } from 'nanoid'
267-
```
254+
## Penggunaan
268255

269256
### React
270257

@@ -311,18 +298,6 @@ import 'react-native-get-random-values'
311298
import { nanoid } from 'nanoid'
312299
```
313300

314-
### Rollup
315-
316-
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-
326301
### PouchDB dan CouchDB
327302

328303
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.
@@ -336,16 +311,6 @@ db.put({
336311
})
337312
```
338313

339-
### Mongoose
340-
341-
```js
342-
const mySchema = new Schema({
343-
_id: {
344-
type: String,
345-
default: () => nanoid()
346-
}
347-
})
348-
```
349314

350315
### Web Workers
351316

@@ -360,6 +325,7 @@ nanoid() //=> "Uakgb_J5m9g-0JDMbcJqLJ"
360325

361326
Perhatian: ID yang dihasilkan dari non-secure dapat lebih mudah tabrakan / memiliki probabilitas collision yang lebih besar.
362327

328+
363329
### CLI
364330

365331
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
372338

373339
Bila ingin mengganti alfabet atau ukuran ID, dapat menggunakan [`nanoid-cli`](https://github.com/twhitbeck/nanoid-cli).
374340

341+
375342
### Bahasa Pemrograman Lainnya
376343

377344
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
404371

405372
Untuk environment lainnya, [CLI](#cli) tersedia untuk melakukan generasi ID dari command line / Terminal.
406373

374+
407375
## Alat
408376

409377
- [ID Size Calculator](https://zelark.github.io/nano-id-cc/) menunjukkan probabilitas collision ketika melakukan konfigurasi alfabet dan ukuran.

README.md

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,9 @@ Supports modern browsers, IE [with Babel], Node.js and React Native.
4747
* [Custom Alphabet or Size](#custom-alphabet-or-size)
4848
* [Custom Random Bytes Generator](#custom-random-bytes-generator)
4949
* [Usage](#usage)
50-
* [IE](#ie)
5150
* [React](#react)
5251
* [React Native](#react-native)
53-
* [Rollup](#rollup)
5452
* [PouchDB and CouchDB](#pouchdb-and-couchdb)
55-
* [Mongoose](#mongoose)
5653
* [Web Workers](#web-workers)
5754
* [CLI](#cli)
5855
* [Other Programming Languages](#other-programming-languages)
@@ -156,12 +153,6 @@ as ESM in webpack, Rollup, Parcel, or Node.js.
156153
import { nanoid } from 'nanoid'
157154
```
158155

159-
In Node.js you can use CommonJS import:
160-
161-
```js
162-
const { nanoid } = require('nanoid')
163-
```
164-
165156

166157
## API
167158

@@ -324,41 +315,6 @@ the same result.
324315

325316
## Usage
326317

327-
### IE
328-
329-
If you support IE, you need to [transpile `node_modules`] by Babel
330-
and add `crypto` alias. Moreover, `UInt8Array` in IE actually
331-
is not an array and to cope with it, you have to convert it to an array
332-
manually:
333-
334-
```js
335-
// polyfills.js
336-
if (!window.crypto && window.msCrypto) {
337-
window.crypto = window.msCrypto
338-
339-
const getRandomValuesDef = window.crypto.getRandomValues
340-
341-
window.crypto.getRandomValues = function (array) {
342-
const values = getRandomValuesDef.call(window.crypto, array)
343-
const result = []
344-
345-
for (let i = 0; i < array.length; i++) {
346-
result[i] = values[i];
347-
}
348-
349-
return result
350-
};
351-
}
352-
```
353-
354-
```js
355-
import './polyfills.js'
356-
import { nanoid } from 'nanoid'
357-
```
358-
359-
[transpile `node_modules`]: https://developer.epages.com/blog/coding/how-to-transpile-node-modules-with-babel-and-webpack-in-a-monorepo/
360-
361-
362318
### React
363319

364320
There’s no correct way to use Nano ID for React `key` prop
@@ -417,22 +373,6 @@ import { nanoid } from 'nanoid'
417373
[`react-native-get-random-values`]: https://github.com/LinusU/react-native-get-random-values
418374

419375

420-
### Rollup
421-
422-
For Rollup you will need [`@rollup/plugin-node-resolve`] to bundle browser version
423-
of this library.:
424-
425-
```js
426-
plugins: [
427-
nodeResolve({
428-
browser: true
429-
})
430-
]
431-
```
432-
433-
[`@rollup/plugin-node-resolve`]: https://github.com/rollup/plugins/tree/master/packages/node-resolve
434-
435-
436376
### PouchDB and CouchDB
437377

438378
In PouchDB and CouchDB, IDs can’t start with an underscore `_`.
@@ -449,18 +389,6 @@ db.put({
449389
```
450390

451391

452-
### Mongoose
453-
454-
```js
455-
const mySchema = new Schema({
456-
_id: {
457-
type: String,
458-
default: () => nanoid()
459-
}
460-
})
461-
```
462-
463-
464392
### Web Workers
465393

466394
Web Workers do not have access to a secure random generator.

0 commit comments

Comments
 (0)