You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					89 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					89 lines
				
				2.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Generate secure URL-friendly unique ID.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * By default, the ID will have 21 symbols to have a collision probability
							 | 
						||
| 
								 | 
							
								 * similar to UUID v4.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```js
							 | 
						||
| 
								 | 
							
								 * import { nanoid } from 'nanoid'
							 | 
						||
| 
								 | 
							
								 * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL"
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param size Size of the ID. The default size is 21.
							 | 
						||
| 
								 | 
							
								 * @returns A random string.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function nanoid(size?: number): string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Generate secure unique ID with custom alphabet.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Alphabet must contain 256 symbols or less. Otherwise, the generator
							 | 
						||
| 
								 | 
							
								 * will not be secure.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param alphabet Alphabet used to generate the ID.
							 | 
						||
| 
								 | 
							
								 * @param size Size of the ID.
							 | 
						||
| 
								 | 
							
								 * @returns A random string generator.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```js
							 | 
						||
| 
								 | 
							
								 * const { customAlphabet } = require('nanoid')
							 | 
						||
| 
								 | 
							
								 * const nanoid = customAlphabet('0123456789абвгдеё', 5)
							 | 
						||
| 
								 | 
							
								 * nanoid() //=> "8ё56а"
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function customAlphabet(alphabet: string, size: number): () => string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Generate unique ID with custom random generator and alphabet.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Alphabet must contain 256 symbols or less. Otherwise, the generator
							 | 
						||
| 
								 | 
							
								 * will not be secure.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```js
							 | 
						||
| 
								 | 
							
								 * import { customRandom } from 'nanoid/format'
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * const nanoid = customRandom('abcdef', 5, size => {
							 | 
						||
| 
								 | 
							
								 *   const random = []
							 | 
						||
| 
								 | 
							
								 *   for (let i = 0; i < size; i++) {
							 | 
						||
| 
								 | 
							
								 *     random.push(randomByte())
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 *   return random
							 | 
						||
| 
								 | 
							
								 * })
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * nanoid() //=> "fbaef"
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param alphabet Alphabet used to generate a random string.
							 | 
						||
| 
								 | 
							
								 * @param size Size of the random string.
							 | 
						||
| 
								 | 
							
								 * @param random A random bytes generator.
							 | 
						||
| 
								 | 
							
								 * @returns A random string generator.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function customRandom(
							 | 
						||
| 
								 | 
							
								  alphabet: string,
							 | 
						||
| 
								 | 
							
								  size: number,
							 | 
						||
| 
								 | 
							
								  random: (bytes: number) => Uint8Array
							 | 
						||
| 
								 | 
							
								): () => string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * URL safe symbols.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```js
							 | 
						||
| 
								 | 
							
								 * import { urlAlphabet } from 'nanoid'
							 | 
						||
| 
								 | 
							
								 * const nanoid = customAlphabet(urlAlphabet, 10)
							 | 
						||
| 
								 | 
							
								 * nanoid() //=> "Uakgb_J5m9"
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export const urlAlphabet: string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Generate an array of random bytes collected from hardware noise.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```js
							 | 
						||
| 
								 | 
							
								 * import { customRandom, random } from 'nanoid'
							 | 
						||
| 
								 | 
							
								 * const nanoid = customRandom("abcdef", 5, random)
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param bytes Size of the array.
							 | 
						||
| 
								 | 
							
								 * @returns An array of random bytes.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function random(bytes: number): Uint8Array
							 |