1
- "use strict" ;
1
+ 'use strict' ;
2
+ /* global window */
2
3
3
4
( function ( ) {
4
5
5
- var buf ;
6
- var str = '' ;
7
- var strIdx = 0 ;
8
- var i ;
6
+ var buf
7
+ var str = ''
8
+ var strIdx = 0
9
+ var i
9
10
var chars = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
10
11
11
12
// Reduce calls to `crypto` by increasing this number (>=16)
12
13
// Uses a tiny bit more memory to store the random bytes (try 16384)
13
- var BUFFER_SIZE = 8192 ;
14
+ var BUFFER_SIZE = 8192
14
15
15
16
16
17
// Binary uuids (even faster)
17
18
18
19
// Test for uuid
19
- base62 . test = isbase62 ;
20
+ base62 . test = isbase62
20
21
base62 . generateBase62Math = generateBase62Math
21
22
base62 . generateBase62Node = generateBase62Node
22
23
base62 . generateBase62Browser = generateBase62Browser
26
27
27
28
// Node & Browser support
28
29
if ( ( typeof module !== 'undefined' ) && ( typeof require === 'function' ) ) {
29
- var crypto = require ( 'crypto' ) ;
30
- module . exports = base62 ;
30
+ var crypto = require ( 'crypto' )
31
+ module . exports = base62
31
32
} else if ( typeof window !== 'undefined' ) {
32
- window . base62 = base62 ;
33
+ window . base62 = base62
33
34
}
34
35
35
36
// Backup method
36
37
function getRandomChar ( ) {
37
- return chars [ Math . floor ( Math . random ( ) * ( 62 - 0 ) ) + 0 ] ;
38
+ return chars [ Math . floor ( Math . random ( ) * ( 62 - 0 ) ) + 0 ]
38
39
}
39
40
40
41
// base62.test
41
42
function isbase62 ( str ) {
42
43
if ( typeof str === 'string' ) {
43
- return / ^ [ 0 - 9 a - z A - Z ] + $ / . test ( str ) ;
44
+ return / ^ [ 0 - 9 a - z A - Z ] + $ / . test ( str )
44
45
}
45
46
return false
46
47
}
47
48
48
49
function generateBase62Math ( ) {
49
50
for ( i = 0 ; i < BUFFER_SIZE ; i ++ ) {
50
- buf [ i ] = getRandomChar ( ) ;
51
+ buf [ i ] = getRandomChar ( )
51
52
}
52
53
strIdx = 0
53
54
return str = buf . join ( '' )
56
57
function generateBase62Node ( ) {
57
58
//console.error('generating str',strIdx)
58
59
strIdx = 0
59
- return str = crypto . randomBytes ( BUFFER_SIZE ) . toString ( 'base64' ) . replace ( / [ \+ \= \/ ] / g, '' ) ;
60
+ return str = crypto . randomBytes ( BUFFER_SIZE ) . toString ( 'base64' ) . replace ( / [ \+ \= \/ ] / g, '' )
60
61
}
61
62
62
63
// https://github.com/beatgammit/base64-js
63
64
function generateBase62Browser ( ) {
64
- buf = crypto . getRandomValues ( buf ) ;
65
+ buf = crypto . getRandomValues ( buf )
65
66
var tmp = Array ( BUFFER_SIZE )
66
67
for ( i = 0 ; i < BUFFER_SIZE ; i ++ ) {
67
68
// wastes some bits, some bit pushing should save the extra 4
68
- tmp . push ( chars [ buf [ i ] % 62 ] ) ;
69
+ tmp . push ( chars [ buf [ i ] % 62 ] )
69
70
}
70
71
strIdx = 0
71
- return str = tmp . join ( '' ) ;
72
+ return str = tmp . join ( '' )
72
73
}
73
74
74
75
// Use best RNG as possible
75
- var generateBase62 ;
76
+ var generateBase62
76
77
strIdx = BUFFER_SIZE
77
78
78
79
function initMath ( ) {
79
80
str = ''
80
- buf = new Array ( BUFFER_SIZE ) ;
81
+ buf = new Array ( BUFFER_SIZE )
81
82
generateBase62 = generateBase62Math
82
83
}
83
84
function initBrowser ( ) {
84
85
str = ''
85
- buf = new Uint8Array ( BUFFER_SIZE ) ;
86
+ buf = new Uint8Array ( BUFFER_SIZE )
86
87
generateBase62 = generateBase62Browser
87
88
}
88
89
function initNode ( ) {
100
101
initNode ( )
101
102
}
102
103
else {
103
- throw new Error ( 'Non-standard crypto library' ) ;
104
+ throw new Error ( 'Non-standard crypto library' )
104
105
}
105
106
106
107
110
111
return str . slice ( strIdx , ( strIdx += length ) )
111
112
}
112
113
113
- } ) ( ) ;
114
+ } ) ( )
0 commit comments