Template Upload
This commit is contained in:
4
node_modules/node-uuid/.npmignore
generated
vendored
Normal file
4
node_modules/node-uuid/.npmignore
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
.DS_Store
|
||||
.nyc_output
|
||||
coverage
|
21
node_modules/node-uuid/LICENSE.md
generated
vendored
Normal file
21
node_modules/node-uuid/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2010-2012 Robert Kieffer
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
8
node_modules/node-uuid/README.md
generated
vendored
Normal file
8
node_modules/node-uuid/README.md
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# node-uuid
|
||||
|
||||
DEPRECATED: Use the `uuid` package instead. See
|
||||
|
||||
* On NPM: https://www.npmjs.com/package/uuid
|
||||
* On Github: https://github.com/kelektiv/node-uuid
|
||||
|
||||
(Yes, the github project is still called "node-uuid". We merged the two projects. Sorry for the confusion.)
|
53
node_modules/node-uuid/benchmark/README.md
generated
vendored
Normal file
53
node_modules/node-uuid/benchmark/README.md
generated
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# node-uuid Benchmarks
|
||||
|
||||
### Results
|
||||
|
||||
To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark
|
||||
|
||||
### Run them yourself
|
||||
|
||||
node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`.
|
||||
|
||||
To prepare and run the benchmark issue;
|
||||
|
||||
```
|
||||
npm install uuid uuid-js
|
||||
node benchmark/benchmark.js
|
||||
```
|
||||
|
||||
You'll see an output like this one:
|
||||
|
||||
```
|
||||
# v4
|
||||
nodeuuid.v4(): 854700 uuids/second
|
||||
nodeuuid.v4('binary'): 788643 uuids/second
|
||||
nodeuuid.v4('binary', buffer): 1336898 uuids/second
|
||||
uuid(): 479386 uuids/second
|
||||
uuid('binary'): 582072 uuids/second
|
||||
uuidjs.create(4): 312304 uuids/second
|
||||
|
||||
# v1
|
||||
nodeuuid.v1(): 938086 uuids/second
|
||||
nodeuuid.v1('binary'): 683060 uuids/second
|
||||
nodeuuid.v1('binary', buffer): 1644736 uuids/second
|
||||
uuidjs.create(1): 190621 uuids/second
|
||||
```
|
||||
|
||||
* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library.
|
||||
* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK.
|
||||
|
||||
If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file:
|
||||
|
||||
```
|
||||
for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done;
|
||||
```
|
||||
|
||||
If you're interested in how performance varies between different node versions, you can issue the above command multiple times.
|
||||
|
||||
You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot:
|
||||
|
||||
```
|
||||
(cd benchmark/ && ./bench.sh)
|
||||
```
|
||||
|
||||
This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then.
|
174
node_modules/node-uuid/benchmark/bench.gnu
generated
vendored
Normal file
174
node_modules/node-uuid/benchmark/bench.gnu
generated
vendored
Normal file
@ -0,0 +1,174 @@
|
||||
#!/opt/local/bin/gnuplot -persist
|
||||
#
|
||||
#
|
||||
# G N U P L O T
|
||||
# Version 4.4 patchlevel 3
|
||||
# last modified March 2011
|
||||
# System: Darwin 10.8.0
|
||||
#
|
||||
# Copyright (C) 1986-1993, 1998, 2004, 2007-2010
|
||||
# Thomas Williams, Colin Kelley and many others
|
||||
#
|
||||
# gnuplot home: http://www.gnuplot.info
|
||||
# faq, bugs, etc: type "help seeking-assistance"
|
||||
# immediate help: type "help"
|
||||
# plot window: hit 'h'
|
||||
set terminal postscript eps noenhanced defaultplex \
|
||||
leveldefault color colortext \
|
||||
solid linewidth 1.2 butt noclip \
|
||||
palfuncparam 2000,0.003 \
|
||||
"Helvetica" 14
|
||||
set output 'bench.eps'
|
||||
unset clip points
|
||||
set clip one
|
||||
unset clip two
|
||||
set bar 1.000000 front
|
||||
set border 31 front linetype -1 linewidth 1.000
|
||||
set xdata
|
||||
set ydata
|
||||
set zdata
|
||||
set x2data
|
||||
set y2data
|
||||
set timefmt x "%d/%m/%y,%H:%M"
|
||||
set timefmt y "%d/%m/%y,%H:%M"
|
||||
set timefmt z "%d/%m/%y,%H:%M"
|
||||
set timefmt x2 "%d/%m/%y,%H:%M"
|
||||
set timefmt y2 "%d/%m/%y,%H:%M"
|
||||
set timefmt cb "%d/%m/%y,%H:%M"
|
||||
set boxwidth
|
||||
set style fill empty border
|
||||
set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1
|
||||
set style circle radius graph 0.02, first 0, 0
|
||||
set dummy x,y
|
||||
set format x "% g"
|
||||
set format y "% g"
|
||||
set format x2 "% g"
|
||||
set format y2 "% g"
|
||||
set format z "% g"
|
||||
set format cb "% g"
|
||||
set angles radians
|
||||
unset grid
|
||||
set key title ""
|
||||
set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox
|
||||
set key noinvert samplen 4 spacing 1 width 0 height 0
|
||||
set key maxcolumns 2 maxrows 0
|
||||
unset label
|
||||
unset arrow
|
||||
set style increment default
|
||||
unset style line
|
||||
set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0
|
||||
unset style arrow
|
||||
set style histogram clustered gap 2 title offset character 0, 0, 0
|
||||
unset logscale
|
||||
set offsets graph 0.05, 0.15, 0, 0
|
||||
set pointsize 1.5
|
||||
set pointintervalbox 1
|
||||
set encoding default
|
||||
unset polar
|
||||
unset parametric
|
||||
unset decimalsign
|
||||
set view 60, 30, 1, 1
|
||||
set samples 100, 100
|
||||
set isosamples 10, 10
|
||||
set surface
|
||||
unset contour
|
||||
set clabel '%8.3g'
|
||||
set mapping cartesian
|
||||
set datafile separator whitespace
|
||||
unset hidden3d
|
||||
set cntrparam order 4
|
||||
set cntrparam linear
|
||||
set cntrparam levels auto 5
|
||||
set cntrparam points 5
|
||||
set size ratio 0 1,1
|
||||
set origin 0,0
|
||||
set style data points
|
||||
set style function lines
|
||||
set xzeroaxis linetype -2 linewidth 1.000
|
||||
set yzeroaxis linetype -2 linewidth 1.000
|
||||
set zzeroaxis linetype -2 linewidth 1.000
|
||||
set x2zeroaxis linetype -2 linewidth 1.000
|
||||
set y2zeroaxis linetype -2 linewidth 1.000
|
||||
set ticslevel 0.5
|
||||
set mxtics default
|
||||
set mytics default
|
||||
set mztics default
|
||||
set mx2tics default
|
||||
set my2tics default
|
||||
set mcbtics default
|
||||
set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0
|
||||
set xtics norangelimit
|
||||
set xtics ()
|
||||
set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0
|
||||
set ytics autofreq norangelimit
|
||||
set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0
|
||||
set ztics autofreq norangelimit
|
||||
set nox2tics
|
||||
set noy2tics
|
||||
set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0
|
||||
set cbtics autofreq norangelimit
|
||||
set title ""
|
||||
set title offset character 0, 0, 0 font "" norotate
|
||||
set timestamp bottom
|
||||
set timestamp ""
|
||||
set timestamp offset character 0, 0, 0 font "" norotate
|
||||
set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] )
|
||||
set autoscale rfixmin
|
||||
set autoscale rfixmax
|
||||
set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] )
|
||||
set autoscale tfixmin
|
||||
set autoscale tfixmax
|
||||
set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
|
||||
set autoscale ufixmin
|
||||
set autoscale ufixmax
|
||||
set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
|
||||
set autoscale vfixmin
|
||||
set autoscale vfixmax
|
||||
set xlabel ""
|
||||
set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate
|
||||
set x2label ""
|
||||
set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate
|
||||
set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] )
|
||||
set autoscale xfixmin
|
||||
set autoscale xfixmax
|
||||
set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] )
|
||||
set autoscale x2fixmin
|
||||
set autoscale x2fixmax
|
||||
set ylabel ""
|
||||
set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
|
||||
set y2label ""
|
||||
set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
|
||||
set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] )
|
||||
set autoscale yfixmin
|
||||
set autoscale yfixmax
|
||||
set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] )
|
||||
set autoscale y2fixmin
|
||||
set autoscale y2fixmax
|
||||
set zlabel ""
|
||||
set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate
|
||||
set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
|
||||
set autoscale zfixmin
|
||||
set autoscale zfixmax
|
||||
set cblabel ""
|
||||
set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
|
||||
set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] )
|
||||
set autoscale cbfixmin
|
||||
set autoscale cbfixmax
|
||||
set zero 1e-08
|
||||
set lmargin -1
|
||||
set bmargin -1
|
||||
set rmargin -1
|
||||
set tmargin -1
|
||||
set pm3d explicit at s
|
||||
set pm3d scansautomatic
|
||||
set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean
|
||||
set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB
|
||||
set palette rgbformulae 7, 5, 15
|
||||
set colorbox default
|
||||
set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault
|
||||
set loadpath
|
||||
set fontpath
|
||||
set fit noerrorvariables
|
||||
GNUTERM = "aqua"
|
||||
plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2
|
||||
# EOF
|
34
node_modules/node-uuid/benchmark/bench.sh
generated
vendored
Normal file
34
node_modules/node-uuid/benchmark/bench.sh
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# for a given node version run:
|
||||
# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done;
|
||||
|
||||
PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte')
|
||||
FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es)
|
||||
INDICES=(2 3 2 3 2 2 2 2 2)
|
||||
VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " )
|
||||
TMPJOIN="tmp_join"
|
||||
OUTPUT="bench_results.txt"
|
||||
|
||||
for I in ${!FILES[*]}; do
|
||||
F=${FILES[$I]}
|
||||
P=${PATTERNS[$I]}
|
||||
INDEX=${INDICES[$I]}
|
||||
echo "version $F" > $F
|
||||
for V in $VERSIONS; do
|
||||
(VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F
|
||||
done
|
||||
if [ $I == 0 ]; then
|
||||
cat $F > $TMPJOIN
|
||||
else
|
||||
join $TMPJOIN $F > $OUTPUT
|
||||
cp $OUTPUT $TMPJOIN
|
||||
fi
|
||||
rm $F
|
||||
done
|
||||
|
||||
rm $TMPJOIN
|
||||
|
||||
gnuplot bench.gnu
|
||||
convert -density 200 -resize 800x560 -flatten bench.eps bench.png
|
||||
rm bench.eps
|
34
node_modules/node-uuid/benchmark/benchmark-native.c
generated
vendored
Normal file
34
node_modules/node-uuid/benchmark/benchmark-native.c
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
Test performance of native C UUID generation
|
||||
|
||||
To Compile: cc -luuid benchmark-native.c -o benchmark-native
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
#include <uuid/uuid.h>
|
||||
|
||||
int main() {
|
||||
uuid_t myid;
|
||||
char buf[36+1];
|
||||
int i;
|
||||
struct timeval t;
|
||||
double start, finish;
|
||||
|
||||
gettimeofday(&t, NULL);
|
||||
start = t.tv_sec + t.tv_usec/1e6;
|
||||
|
||||
int n = 2e5;
|
||||
for (i = 0; i < n; i++) {
|
||||
uuid_generate(myid);
|
||||
uuid_unparse(myid, buf);
|
||||
}
|
||||
|
||||
gettimeofday(&t, NULL);
|
||||
finish = t.tv_sec + t.tv_usec/1e6;
|
||||
double dur = finish - start;
|
||||
|
||||
printf("%d uuids/sec", (int)(n/dur));
|
||||
return 0;
|
||||
}
|
84
node_modules/node-uuid/benchmark/benchmark.js
generated
vendored
Normal file
84
node_modules/node-uuid/benchmark/benchmark.js
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
try {
|
||||
var nodeuuid = require('../uuid');
|
||||
} catch (e) {
|
||||
console.error('node-uuid require failed - skipping tests');
|
||||
}
|
||||
|
||||
try {
|
||||
var uuid = require('uuid');
|
||||
} catch (e) {
|
||||
console.error('uuid require failed - skipping tests');
|
||||
}
|
||||
|
||||
try {
|
||||
var uuidjs = require('uuid-js');
|
||||
} catch (e) {
|
||||
console.error('uuid-js require failed - skipping tests');
|
||||
}
|
||||
|
||||
var N = 5e5;
|
||||
|
||||
function rate(msg, t) {
|
||||
console.log(msg + ': ' +
|
||||
(N / (Date.now() - t) * 1e3 | 0) +
|
||||
' uuids/second');
|
||||
}
|
||||
|
||||
console.log('# v4');
|
||||
|
||||
// node-uuid - string form
|
||||
if (nodeuuid) {
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4();
|
||||
rate('nodeuuid.v4() - using node.js crypto RNG', t);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG});
|
||||
rate('nodeuuid.v4() - using Math.random() RNG', t);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary');
|
||||
rate('nodeuuid.v4(\'binary\')', t);
|
||||
|
||||
var buffer = new nodeuuid.BufferClass(16);
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer);
|
||||
rate('nodeuuid.v4(\'binary\', buffer)', t);
|
||||
}
|
||||
|
||||
// libuuid - string form
|
||||
if (uuid) {
|
||||
for (var i = 0, t = Date.now(); i < N; i++) uuid();
|
||||
rate('uuid()', t);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) uuid('binary');
|
||||
rate('uuid(\'binary\')', t);
|
||||
}
|
||||
|
||||
// uuid-js - string form
|
||||
if (uuidjs) {
|
||||
for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4);
|
||||
rate('uuidjs.create(4)', t);
|
||||
}
|
||||
|
||||
// 140byte.es
|
||||
for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)});
|
||||
rate('140byte.es_v4', t);
|
||||
|
||||
console.log('');
|
||||
console.log('# v1');
|
||||
|
||||
// node-uuid - v1 string form
|
||||
if (nodeuuid) {
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1();
|
||||
rate('nodeuuid.v1()', t);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary');
|
||||
rate('nodeuuid.v1(\'binary\')', t);
|
||||
|
||||
var buffer = new nodeuuid.BufferClass(16);
|
||||
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer);
|
||||
rate('nodeuuid.v1(\'binary\', buffer)', t);
|
||||
}
|
||||
|
||||
// uuid-js - v1 string form
|
||||
if (uuidjs) {
|
||||
for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1);
|
||||
rate('uuidjs.create(1)', t);
|
||||
}
|
26
node_modules/node-uuid/bin/uuid
generated
vendored
Normal file
26
node_modules/node-uuid/bin/uuid
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var path = require('path');
|
||||
var uuid = require(path.join(__dirname, '..'));
|
||||
|
||||
var arg = process.argv[2];
|
||||
|
||||
if ('--help' === arg) {
|
||||
console.log('\n USAGE: uuid [version] [options]\n\n');
|
||||
console.log(' options:\n');
|
||||
console.log(' --help Display this message and exit\n');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if (null == arg) {
|
||||
console.log(uuid());
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if ('v1' !== arg && 'v4' !== arg) {
|
||||
console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(uuid[arg]());
|
||||
process.exit(0);
|
23
node_modules/node-uuid/bower.json
generated
vendored
Normal file
23
node_modules/node-uuid/bower.json
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "node-uuid",
|
||||
"version": "1.4.7",
|
||||
"homepage": "https://github.com/broofa/node-uuid",
|
||||
"authors": [
|
||||
"Robert Kieffer <robert@broofa.com>"
|
||||
],
|
||||
"description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
|
||||
"main": "uuid.js",
|
||||
"keywords": [
|
||||
"uuid",
|
||||
"gid",
|
||||
"rfc4122"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
]
|
||||
}
|
25
node_modules/node-uuid/component.json
generated
vendored
Normal file
25
node_modules/node-uuid/component.json
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "node-uuid",
|
||||
"repo": "broofa/node-uuid",
|
||||
"description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
|
||||
"version": "1.4.7",
|
||||
"author": "Robert Kieffer <robert@broofa.com>",
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Christoph Tavan <dev@tavan.de>",
|
||||
"github": "https://github.com/ctavan"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
"uuid",
|
||||
"guid",
|
||||
"rfc4122"
|
||||
],
|
||||
"dependencies": {},
|
||||
"development": {},
|
||||
"main": "uuid.js",
|
||||
"scripts": [
|
||||
"uuid.js"
|
||||
],
|
||||
"license": "MIT"
|
||||
}
|
120
node_modules/node-uuid/lib/sha1-browser.js
generated
vendored
Normal file
120
node_modules/node-uuid/lib/sha1-browser.js
generated
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
/* SHA-1 (FIPS 180-4) implementation in JavaScript (c) Chris Veness 2002-2016 */
|
||||
/* MIT Licence */
|
||||
/* www.movable-type.co.uk/scripts/sha1.html */
|
||||
/* */
|
||||
/* - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html */
|
||||
/* http://csrc.nist.gov/groups/ST/toolkit/examples.html */
|
||||
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
'use strict';
|
||||
|
||||
function f(s, x, y, z) {
|
||||
switch (s) {
|
||||
case 0: return (x & y) ^ (~x & z); // Ch()
|
||||
case 1: return x ^ y ^ z; // Parity()
|
||||
case 2: return (x & y) ^ (x & z) ^ (y & z); // Maj()
|
||||
case 3: return x ^ y ^ z; // Parity()
|
||||
}
|
||||
}
|
||||
|
||||
function ROTL(x, n) {
|
||||
return (x<<n) | (x>>>(32-n));
|
||||
}
|
||||
|
||||
var Sha1 = {};
|
||||
|
||||
Sha1.hash = function(msg, options) {
|
||||
var defaults = { msgFormat: 'string', outFormat: 'hex' };
|
||||
var opt = Object.assign(defaults, options);
|
||||
|
||||
switch (opt.msgFormat) {
|
||||
default: // default is to convert string to UTF-8, as SHA only deals with byte-streams
|
||||
case 'string': msg = Sha1.utf8Encode(msg); break;
|
||||
case 'hex-bytes':msg = Sha1.hexBytesToString(msg); break; // mostly for running tests
|
||||
}
|
||||
|
||||
// constants [<5B>4.2.1]
|
||||
var K = [ 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6 ];
|
||||
|
||||
// initial hash value [<5B>5.3.1]
|
||||
var H = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
|
||||
|
||||
// PREPROCESSING [<5B>6.1.1]
|
||||
|
||||
msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [<5B>5.1.1]
|
||||
|
||||
// convert string msg into 512-bit/16-integer blocks arrays of ints [<5B>5.2.1]
|
||||
var l = msg.length/4 + 2; // length (in 32-bit integers) of msg + <20>1<EFBFBD> + appended length
|
||||
var N = Math.ceil(l/16); // number of 16-integer-blocks required to hold 'l' ints
|
||||
var M = new Array(N);
|
||||
|
||||
for (var i=0; i<N; i++) {
|
||||
M[i] = new Array(16);
|
||||
for (var j=0; j<16; j++) { // encode 4 chars per integer, big-endian encoding
|
||||
M[i][j] = (msg.charCodeAt(i*64+j*4)<<24) | (msg.charCodeAt(i*64+j*4+1)<<16) |
|
||||
(msg.charCodeAt(i*64+j*4+2)<<8) | (msg.charCodeAt(i*64+j*4+3));
|
||||
} // note running off the end of msg is ok 'cos bitwise ops on NaN return 0
|
||||
}
|
||||
// add length (in bits) into final pair of 32-bit integers (big-endian) [<5B>5.1.1]
|
||||
// note: most significant word would be (len-1)*8 >>> 32, but since JS converts
|
||||
// bitwise-op args to 32 bits, we need to simulate this by arithmetic operators
|
||||
M[N-1][14] = ((msg.length-1)*8) / Math.pow(2, 32); M[N-1][14] = Math.floor(M[N-1][14]);
|
||||
M[N-1][15] = ((msg.length-1)*8) & 0xffffffff;
|
||||
|
||||
// HASH COMPUTATION [<5B>6.1.2]
|
||||
|
||||
for (var i=0; i<N; i++) {
|
||||
var W = new Array(80);
|
||||
|
||||
// 1 - prepare message schedule 'W'
|
||||
for (var t=0; t<16; t++) W[t] = M[i][t];
|
||||
for (var t=16; t<80; t++) W[t] = ROTL(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);
|
||||
|
||||
// 2 - initialise five working variables a, b, c, d, e with previous hash value
|
||||
var a = H[0], b = H[1], c = H[2], d = H[3], e = H[4];
|
||||
|
||||
// 3 - main loop (use JavaScript '>>> 0' to emulate UInt32 variables)
|
||||
for (var t=0; t<80; t++) {
|
||||
var s = Math.floor(t/20); // seq for blocks of 'f' functions and 'K' constants
|
||||
var T = (ROTL(a,5) + f(s,b,c,d) + e + K[s] + W[t]) >>> 0;
|
||||
e = d;
|
||||
d = c;
|
||||
c = ROTL(b, 30) >>> 0;
|
||||
b = a;
|
||||
a = T;
|
||||
}
|
||||
|
||||
// 4 - compute the new intermediate hash value (note 'addition modulo 2^32' <20> JavaScript
|
||||
// '>>> 0' coerces to unsigned UInt32 which achieves modulo 2^32 addition)
|
||||
H[0] = (H[0]+a) >>> 0;
|
||||
H[1] = (H[1]+b) >>> 0;
|
||||
H[2] = (H[2]+c) >>> 0;
|
||||
H[3] = (H[3]+d) >>> 0;
|
||||
H[4] = (H[4]+e) >>> 0;
|
||||
}
|
||||
|
||||
// convert H0..H4 to hex strings (with leading zeros)
|
||||
for (var h=0; h<H.length; h++) H[h] = ('00000000'+H[h].toString(16)).slice(-8);
|
||||
|
||||
// concatenate H0..H4, with separator if required
|
||||
var separator = opt.outFormat=='hex-w' ? ' ' : '';
|
||||
|
||||
return H.join(separator);
|
||||
};
|
||||
|
||||
Sha1.utf8Encode = function(str) {
|
||||
return unescape(encodeURIComponent(str));
|
||||
};
|
||||
|
||||
Sha1.hexBytesToString = function(hexStr) {
|
||||
hexStr = hexStr.replace(' ', ''); // allow space-separated groups
|
||||
var str = '';
|
||||
for (var i=0; i<hexStr.length; i+=2) {
|
||||
str += String.fromCharCode(parseInt(hexStr.slice(i, i+2), 16));
|
||||
}
|
||||
return str;
|
||||
};
|
||||
|
||||
|
||||
module.exports = Sha1; // CommonJs export
|
108
node_modules/node-uuid/package.json
generated
vendored
Normal file
108
node_modules/node-uuid/package.json
generated
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"node-uuid@~1.4.7",
|
||||
"C:\\Users\\x2mjbyrn\\Source\\Repos\\Skeleton\\node_modules\\request"
|
||||
]
|
||||
],
|
||||
"_from": "node-uuid@>=1.4.7-0 <1.5.0-0",
|
||||
"_id": "node-uuid@1.4.8",
|
||||
"_inCache": true,
|
||||
"_location": "/node-uuid",
|
||||
"_nodeVersion": "6.9.2",
|
||||
"_npmOperationalInternal": {
|
||||
"host": "packages-12-west.internal.npmjs.com",
|
||||
"tmp": "tmp/node-uuid-1.4.8.tgz_1490142638297_0.6400028455536813"
|
||||
},
|
||||
"_npmUser": {
|
||||
"email": "robert@broofa.com",
|
||||
"name": "broofa"
|
||||
},
|
||||
"_npmVersion": "4.3.0",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"name": "node-uuid",
|
||||
"raw": "node-uuid@~1.4.7",
|
||||
"rawSpec": "~1.4.7",
|
||||
"scope": null,
|
||||
"spec": ">=1.4.7-0 <1.5.0-0",
|
||||
"type": "range"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/request"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
|
||||
"_shasum": "b040eb0923968afabf8d32fb1f17f1167fdab907",
|
||||
"_shrinkwrap": null,
|
||||
"_spec": "node-uuid@~1.4.7",
|
||||
"_where": "C:\\Users\\x2mjbyrn\\Source\\Repos\\Skeleton\\node_modules\\request",
|
||||
"author": {
|
||||
"email": "robert@broofa.com",
|
||||
"name": "Robert Kieffer"
|
||||
},
|
||||
"bin": {
|
||||
"uuid": "./bin/uuid"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/broofa/node-uuid/issues"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "AJ ONeal",
|
||||
"email": "coolaj86@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Christoph Tavan",
|
||||
"email": "dev@tavan.de"
|
||||
}
|
||||
],
|
||||
"dependencies": {},
|
||||
"deprecated": "Use uuid module instead",
|
||||
"description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
|
||||
"devDependencies": {
|
||||
"nyc": "^2.2.0"
|
||||
},
|
||||
"directories": {},
|
||||
"dist": {
|
||||
"shasum": "b040eb0923968afabf8d32fb1f17f1167fdab907",
|
||||
"tarball": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz"
|
||||
},
|
||||
"gitHead": "6f0f31b997cd6bec7919223e8897454350ed820f",
|
||||
"homepage": "https://github.com/broofa/node-uuid",
|
||||
"installable": true,
|
||||
"keywords": [
|
||||
"guid",
|
||||
"rfc4122",
|
||||
"uuid"
|
||||
],
|
||||
"lib": ".",
|
||||
"licenses": [
|
||||
{
|
||||
"type": "MIT",
|
||||
"url": "https://raw.github.com/broofa/node-uuid/master/LICENSE.md"
|
||||
}
|
||||
],
|
||||
"main": "./uuid.js",
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "broofa",
|
||||
"email": "robert@broofa.com"
|
||||
},
|
||||
{
|
||||
"name": "defunctzombie",
|
||||
"email": "shtylman@gmail.com"
|
||||
}
|
||||
],
|
||||
"name": "node-uuid",
|
||||
"optionalDependencies": {},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/broofa/node-uuid.git"
|
||||
},
|
||||
"scripts": {
|
||||
"coverage": "nyc npm test && nyc report",
|
||||
"test": "node test/test.js"
|
||||
},
|
||||
"url": "http://github.com/broofa/node-uuid",
|
||||
"version": "1.4.8"
|
||||
}
|
63
node_modules/node-uuid/test/compare_v1.js
generated
vendored
Normal file
63
node_modules/node-uuid/test/compare_v1.js
generated
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
var assert = require('assert'),
|
||||
nodeuuid = require('../uuid'),
|
||||
uuidjs = require('uuid-js'),
|
||||
libuuid = require('uuid').generate,
|
||||
util = require('util'),
|
||||
exec = require('child_process').exec,
|
||||
os = require('os');
|
||||
|
||||
// On Mac Os X / macports there's only the ossp-uuid package that provides uuid
|
||||
// On Linux there's uuid-runtime which provides uuidgen
|
||||
var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t';
|
||||
|
||||
function compare(ids) {
|
||||
console.log(ids);
|
||||
for (var i = 0; i < ids.length; i++) {
|
||||
var id = ids[i].split('-');
|
||||
id = [id[2], id[1], id[0]].join('');
|
||||
ids[i] = id;
|
||||
}
|
||||
var sorted = ([].concat(ids)).sort();
|
||||
|
||||
if (sorted.toString() !== ids.toString()) {
|
||||
console.log('Warning: sorted !== ids');
|
||||
} else {
|
||||
console.log('everything in order!');
|
||||
}
|
||||
}
|
||||
|
||||
// Test time order of v1 uuids
|
||||
var ids = [];
|
||||
while (ids.length < 10e3) ids.push(nodeuuid.v1());
|
||||
|
||||
var max = 10;
|
||||
console.log('node-uuid:');
|
||||
ids = [];
|
||||
for (var i = 0; i < max; i++) ids.push(nodeuuid.v1());
|
||||
compare(ids);
|
||||
|
||||
console.log('');
|
||||
console.log('uuidjs:');
|
||||
ids = [];
|
||||
for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString());
|
||||
compare(ids);
|
||||
|
||||
console.log('');
|
||||
console.log('libuuid:');
|
||||
ids = [];
|
||||
var count = 0;
|
||||
var last = function() {
|
||||
compare(ids);
|
||||
}
|
||||
var cb = function(err, stdout, stderr) {
|
||||
ids.push(stdout.substring(0, stdout.length-1));
|
||||
count++;
|
||||
if (count < max) {
|
||||
return next();
|
||||
}
|
||||
last();
|
||||
};
|
||||
var next = function() {
|
||||
exec(uuidCmd, cb);
|
||||
};
|
||||
next();
|
17
node_modules/node-uuid/test/test.html
generated
vendored
Normal file
17
node_modules/node-uuid/test/test.html
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
div {
|
||||
font-family: monospace;
|
||||
font-size: 8pt;
|
||||
}
|
||||
div.log {color: #444;}
|
||||
div.warn {color: #550;}
|
||||
div.error {color: #800; font-weight: bold;}
|
||||
</style>
|
||||
<script src="../uuid.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script src="./test.js"></script>
|
||||
</body>
|
||||
</html>
|
231
node_modules/node-uuid/test/test.js
generated
vendored
Normal file
231
node_modules/node-uuid/test/test.js
generated
vendored
Normal file
@ -0,0 +1,231 @@
|
||||
if (!this.uuid) {
|
||||
// node.js
|
||||
uuid = require('../uuid');
|
||||
if (!/_rb/.test(uuid._rng.toString())) {
|
||||
throw new Error("should use crypto for node.js");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// x-platform log/assert shims
|
||||
//
|
||||
|
||||
function _log(msg, type) {
|
||||
type = type || 'log';
|
||||
|
||||
if (typeof(document) != 'undefined') {
|
||||
document.write('<div class="' + type + '">' + msg.replace(/\n/g, '<br />') + '</div>');
|
||||
}
|
||||
if (typeof(console) != 'undefined') {
|
||||
var color = {
|
||||
log: '\033[39m',
|
||||
warn: '\033[33m',
|
||||
error: '\033[31m'
|
||||
};
|
||||
console[type](color[type] + msg + color.log);
|
||||
}
|
||||
}
|
||||
|
||||
function log(msg) {_log(msg, 'log');}
|
||||
function warn(msg) {_log(msg, 'warn');}
|
||||
function error(msg) {_log(msg, 'error');}
|
||||
|
||||
function assert(res, msg) {
|
||||
if (!res) {
|
||||
error('FAIL: ' + msg);
|
||||
} else {
|
||||
log('Pass: ' + msg);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Unit tests
|
||||
//
|
||||
|
||||
// Verify ordering of v1 ids created with explicit times
|
||||
var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00
|
||||
|
||||
function compare(name, ids) {
|
||||
ids = ids.map(function(id) {
|
||||
return id.split('-').reverse().join('-');
|
||||
}).sort();
|
||||
var sorted = ([].concat(ids)).sort();
|
||||
|
||||
assert(sorted.toString() == ids.toString(), name + ' have expected order');
|
||||
}
|
||||
|
||||
// Verify ordering of v1 ids created using default behavior
|
||||
compare('uuids with current time', [
|
||||
uuid.v1(),
|
||||
uuid.v1(),
|
||||
uuid.v1(),
|
||||
uuid.v1(),
|
||||
uuid.v1()
|
||||
]);
|
||||
|
||||
// Verify ordering of v1 ids created with explicit times
|
||||
compare('uuids with time option', [
|
||||
uuid.v1({msecs: TIME - 10*3600*1000}),
|
||||
uuid.v1({msecs: TIME - 1}),
|
||||
uuid.v1({msecs: TIME}),
|
||||
uuid.v1({msecs: TIME + 1}),
|
||||
uuid.v1({msecs: TIME + 28*24*3600*1000})
|
||||
]);
|
||||
|
||||
assert(
|
||||
uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}),
|
||||
'IDs created at same msec are different'
|
||||
);
|
||||
|
||||
// Verify throw if too many ids created
|
||||
var thrown = false;
|
||||
try {
|
||||
uuid.v1({msecs: TIME, nsecs: 10000});
|
||||
} catch (e) {
|
||||
thrown = true;
|
||||
}
|
||||
assert(thrown, 'Exception thrown when > 10K ids created in 1 ms');
|
||||
|
||||
// Verify clock regression bumps clockseq
|
||||
var uidt = uuid.v1({msecs: TIME});
|
||||
var uidtb = uuid.v1({msecs: TIME - 1});
|
||||
assert(
|
||||
parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1,
|
||||
'Clock regression by msec increments the clockseq'
|
||||
);
|
||||
|
||||
// Verify clock regression bumps clockseq
|
||||
var uidtn = uuid.v1({msecs: TIME, nsecs: 10});
|
||||
var uidtnb = uuid.v1({msecs: TIME, nsecs: 9});
|
||||
assert(
|
||||
parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1,
|
||||
'Clock regression by nsec increments the clockseq'
|
||||
);
|
||||
|
||||
// Verify explicit options produce expected id
|
||||
var id = uuid.v1({
|
||||
msecs: 1321651533573,
|
||||
nsecs: 5432,
|
||||
clockseq: 0x385c,
|
||||
node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ]
|
||||
});
|
||||
assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id');
|
||||
|
||||
// Verify adjacent ids across a msec boundary are 1 time unit apart
|
||||
var u0 = uuid.v1({msecs: TIME, nsecs: 9999});
|
||||
var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0});
|
||||
|
||||
var before = u0.split('-')[0], after = u1.split('-')[0];
|
||||
var dt = parseInt(after, 16) - parseInt(before, 16);
|
||||
assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart');
|
||||
|
||||
//
|
||||
// Test parse/unparse
|
||||
//
|
||||
|
||||
id = '00112233445566778899aabbccddeeff';
|
||||
assert(uuid.unparse(uuid.parse(id.substr(0,10))) ==
|
||||
'00112233-4400-0000-0000-000000000000', 'Short parse');
|
||||
assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) ==
|
||||
'00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse');
|
||||
|
||||
//
|
||||
// Perf tests
|
||||
//
|
||||
|
||||
var generators = {
|
||||
v1: uuid.v1,
|
||||
v4: uuid.v4
|
||||
};
|
||||
|
||||
var UUID_FORMAT = {
|
||||
v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i,
|
||||
v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i
|
||||
};
|
||||
|
||||
var N = 1e4;
|
||||
|
||||
// Get %'age an actual value differs from the ideal value
|
||||
function divergence(actual, ideal) {
|
||||
return Math.round(100*100*(actual - ideal)/ideal)/100;
|
||||
}
|
||||
|
||||
function rate(msg, t) {
|
||||
log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second');
|
||||
}
|
||||
|
||||
for (var version in generators) {
|
||||
var counts = {}, max = 0;
|
||||
var generator = generators[version];
|
||||
var format = UUID_FORMAT[version];
|
||||
|
||||
log('\nSanity check ' + N + ' ' + version + ' uuids');
|
||||
for (var i = 0, ok = 0; i < N; i++) {
|
||||
id = generator();
|
||||
if (!format.test(id)) {
|
||||
throw Error(id + ' is not a valid UUID string');
|
||||
}
|
||||
|
||||
if (id != uuid.unparse(uuid.parse(id))) {
|
||||
assert(fail, id + ' is not a valid id');
|
||||
}
|
||||
|
||||
// Count digits for our randomness check
|
||||
if (version == 'v4') {
|
||||
var digits = id.replace(/-/g, '').split('');
|
||||
for (var j = digits.length-1; j >= 0; j--) {
|
||||
var c = digits[j];
|
||||
max = Math.max(max, counts[c] = (counts[c] || 0) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check randomness for v4 UUIDs
|
||||
if (version == 'v4') {
|
||||
// Limit that we get worried about randomness. (Purely empirical choice, this!)
|
||||
var limit = 2*100*Math.sqrt(1/N);
|
||||
|
||||
log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)');
|
||||
|
||||
for (var i = 0; i < 16; i++) {
|
||||
var c = i.toString(16);
|
||||
var bar = '', n = counts[c], p = Math.round(n/max*100|0);
|
||||
|
||||
// 1-3,5-8, and D-F: 1:16 odds over 30 digits
|
||||
var ideal = N*30/16;
|
||||
if (i == 4) {
|
||||
// 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits
|
||||
ideal = N*(1 + 30/16);
|
||||
} else if (i >= 8 && i <= 11) {
|
||||
// 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits
|
||||
ideal = N*(1/4 + 30/16);
|
||||
} else {
|
||||
// Otherwise: 1:16 odds on 30 digits
|
||||
ideal = N*30/16;
|
||||
}
|
||||
var d = divergence(n, ideal);
|
||||
|
||||
// Draw bar using UTF squares (just for grins)
|
||||
var s = n/max*50 | 0;
|
||||
while (s--) bar += '=';
|
||||
|
||||
assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Perf tests
|
||||
for (var version in generators) {
|
||||
log('\nPerformance testing ' + version + ' UUIDs');
|
||||
var generator = generators[version];
|
||||
var buf = new uuid.BufferClass(16);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) generator();
|
||||
rate('uuid.' + version + '()', t);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) generator('binary');
|
||||
rate('uuid.' + version + '(\'binary\')', t);
|
||||
|
||||
for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf);
|
||||
rate('uuid.' + version + '(\'binary\', buffer)', t);
|
||||
}
|
272
node_modules/node-uuid/uuid.js
generated
vendored
Normal file
272
node_modules/node-uuid/uuid.js
generated
vendored
Normal file
@ -0,0 +1,272 @@
|
||||
// uuid.js
|
||||
//
|
||||
// Copyright (c) 2010-2012 Robert Kieffer
|
||||
// MIT License - http://opensource.org/licenses/mit-license.php
|
||||
|
||||
/*global window, require, define */
|
||||
(function(_window) {
|
||||
'use strict';
|
||||
|
||||
// Unique ID creation requires a high quality random # generator. We feature
|
||||
// detect to determine the best RNG source, normalizing to a function that
|
||||
// returns 128-bits of randomness, since that's what's usually required
|
||||
var _rng, _mathRNG, _nodeRNG, _whatwgRNG, _previousRoot;
|
||||
|
||||
function setupBrowser() {
|
||||
// Allow for MSIE11 msCrypto
|
||||
var _crypto = _window.crypto || _window.msCrypto;
|
||||
|
||||
if (!_rng && _crypto && _crypto.getRandomValues) {
|
||||
// WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
|
||||
//
|
||||
// Moderately fast, high quality
|
||||
try {
|
||||
var _rnds8 = new Uint8Array(16);
|
||||
_whatwgRNG = _rng = function whatwgRNG() {
|
||||
_crypto.getRandomValues(_rnds8);
|
||||
return _rnds8;
|
||||
};
|
||||
_rng();
|
||||
} catch(e) {}
|
||||
}
|
||||
|
||||
if (!_rng) {
|
||||
// Math.random()-based (RNG)
|
||||
//
|
||||
// If all else fails, use Math.random(). It's fast, but is of unspecified
|
||||
// quality.
|
||||
var _rnds = new Array(16);
|
||||
_mathRNG = _rng = function() {
|
||||
for (var i = 0, r; i < 16; i++) {
|
||||
if ((i & 0x03) === 0) { r = Math.random() * 0x100000000; }
|
||||
_rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
|
||||
}
|
||||
|
||||
return _rnds;
|
||||
};
|
||||
if ('undefined' !== typeof console && console.warn) {
|
||||
console.warn("[SECURITY] node-uuid: crypto not usable, falling back to insecure Math.random()");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setupNode() {
|
||||
// Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html
|
||||
//
|
||||
// Moderately fast, high quality
|
||||
if ('function' === typeof require) {
|
||||
try {
|
||||
var _rb = require('crypto').randomBytes;
|
||||
_nodeRNG = _rng = _rb && function() {return _rb(16);};
|
||||
_rng();
|
||||
} catch(e) {}
|
||||
}
|
||||
}
|
||||
|
||||
if (_window) {
|
||||
setupBrowser();
|
||||
} else {
|
||||
setupNode();
|
||||
}
|
||||
|
||||
// Buffer class to use
|
||||
var BufferClass = ('function' === typeof Buffer) ? Buffer : Array;
|
||||
|
||||
// Maps for number <-> hex string conversion
|
||||
var _byteToHex = [];
|
||||
var _hexToByte = {};
|
||||
for (var i = 0; i < 256; i++) {
|
||||
_byteToHex[i] = (i + 0x100).toString(16).substr(1);
|
||||
_hexToByte[_byteToHex[i]] = i;
|
||||
}
|
||||
|
||||
// **`parse()` - Parse a UUID into it's component bytes**
|
||||
function parse(s, buf, offset) {
|
||||
var i = (buf && offset) || 0, ii = 0;
|
||||
|
||||
buf = buf || [];
|
||||
s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {
|
||||
if (ii < 16) { // Don't overflow!
|
||||
buf[i + ii++] = _hexToByte[oct];
|
||||
}
|
||||
});
|
||||
|
||||
// Zero out remaining bytes if string was short
|
||||
while (ii < 16) {
|
||||
buf[i + ii++] = 0;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
// **`unparse()` - Convert UUID byte array (ala parse()) into a string**
|
||||
function unparse(buf, offset) {
|
||||
var i = offset || 0, bth = _byteToHex;
|
||||
return bth[buf[i++]] + bth[buf[i++]] +
|
||||
bth[buf[i++]] + bth[buf[i++]] + '-' +
|
||||
bth[buf[i++]] + bth[buf[i++]] + '-' +
|
||||
bth[buf[i++]] + bth[buf[i++]] + '-' +
|
||||
bth[buf[i++]] + bth[buf[i++]] + '-' +
|
||||
bth[buf[i++]] + bth[buf[i++]] +
|
||||
bth[buf[i++]] + bth[buf[i++]] +
|
||||
bth[buf[i++]] + bth[buf[i++]];
|
||||
}
|
||||
|
||||
// **`v1()` - Generate time-based UUID**
|
||||
//
|
||||
// Inspired by https://github.com/LiosK/UUID.js
|
||||
// and http://docs.python.org/library/uuid.html
|
||||
|
||||
// random #'s we need to init node and clockseq
|
||||
var _seedBytes = _rng();
|
||||
|
||||
// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
|
||||
var _nodeId = [
|
||||
_seedBytes[0] | 0x01,
|
||||
_seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]
|
||||
];
|
||||
|
||||
// Per 4.2.2, randomize (14 bit) clockseq
|
||||
var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;
|
||||
|
||||
// Previous uuid creation time
|
||||
var _lastMSecs = 0, _lastNSecs = 0;
|
||||
|
||||
// See https://github.com/broofa/node-uuid for API details
|
||||
function v1(options, buf, offset) {
|
||||
var i = buf && offset || 0;
|
||||
var b = buf || [];
|
||||
|
||||
options = options || {};
|
||||
|
||||
var clockseq = (options.clockseq != null) ? options.clockseq : _clockseq;
|
||||
|
||||
// UUID timestamps are 100 nano-second units since the Gregorian epoch,
|
||||
// (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
|
||||
// time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
|
||||
// (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
|
||||
var msecs = (options.msecs != null) ? options.msecs : new Date().getTime();
|
||||
|
||||
// Per 4.2.1.2, use count of uuid's generated during the current clock
|
||||
// cycle to simulate higher resolution clock
|
||||
var nsecs = (options.nsecs != null) ? options.nsecs : _lastNSecs + 1;
|
||||
|
||||
// Time since last uuid creation (in msecs)
|
||||
var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
|
||||
|
||||
// Per 4.2.1.2, Bump clockseq on clock regression
|
||||
if (dt < 0 && options.clockseq == null) {
|
||||
clockseq = clockseq + 1 & 0x3fff;
|
||||
}
|
||||
|
||||
// Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
|
||||
// time interval
|
||||
if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) {
|
||||
nsecs = 0;
|
||||
}
|
||||
|
||||
// Per 4.2.1.2 Throw error if too many uuids are requested
|
||||
if (nsecs >= 10000) {
|
||||
throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
|
||||
}
|
||||
|
||||
_lastMSecs = msecs;
|
||||
_lastNSecs = nsecs;
|
||||
_clockseq = clockseq;
|
||||
|
||||
// Per 4.1.4 - Convert from unix epoch to Gregorian epoch
|
||||
msecs += 12219292800000;
|
||||
|
||||
// `time_low`
|
||||
var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
|
||||
b[i++] = tl >>> 24 & 0xff;
|
||||
b[i++] = tl >>> 16 & 0xff;
|
||||
b[i++] = tl >>> 8 & 0xff;
|
||||
b[i++] = tl & 0xff;
|
||||
|
||||
// `time_mid`
|
||||
var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
|
||||
b[i++] = tmh >>> 8 & 0xff;
|
||||
b[i++] = tmh & 0xff;
|
||||
|
||||
// `time_high_and_version`
|
||||
b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
|
||||
b[i++] = tmh >>> 16 & 0xff;
|
||||
|
||||
// `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
|
||||
b[i++] = clockseq >>> 8 | 0x80;
|
||||
|
||||
// `clock_seq_low`
|
||||
b[i++] = clockseq & 0xff;
|
||||
|
||||
// `node`
|
||||
var node = options.node || _nodeId;
|
||||
for (var n = 0; n < 6; n++) {
|
||||
b[i + n] = node[n];
|
||||
}
|
||||
|
||||
return buf ? buf : unparse(b);
|
||||
}
|
||||
|
||||
// **`v4()` - Generate random UUID**
|
||||
|
||||
// See https://github.com/broofa/node-uuid for API details
|
||||
function v4(options, buf, offset) {
|
||||
// Deprecated - 'format' argument, as supported in v1.2
|
||||
var i = buf && offset || 0;
|
||||
|
||||
if (typeof(options) === 'string') {
|
||||
buf = (options === 'binary') ? new BufferClass(16) : null;
|
||||
options = null;
|
||||
}
|
||||
options = options || {};
|
||||
|
||||
var rnds = options.random || (options.rng || _rng)();
|
||||
|
||||
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
||||
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
||||
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
||||
|
||||
// Copy bytes to buffer, if provided
|
||||
if (buf) {
|
||||
for (var ii = 0; ii < 16; ii++) {
|
||||
buf[i + ii] = rnds[ii];
|
||||
}
|
||||
}
|
||||
|
||||
return buf || unparse(rnds);
|
||||
}
|
||||
|
||||
// Export public API
|
||||
var uuid = v4;
|
||||
uuid.v1 = v1;
|
||||
uuid.v4 = v4;
|
||||
uuid.parse = parse;
|
||||
uuid.unparse = unparse;
|
||||
uuid.BufferClass = BufferClass;
|
||||
uuid._rng = _rng;
|
||||
uuid._mathRNG = _mathRNG;
|
||||
uuid._nodeRNG = _nodeRNG;
|
||||
uuid._whatwgRNG = _whatwgRNG;
|
||||
|
||||
if (('undefined' !== typeof module) && module.exports) {
|
||||
// Publish as node.js module
|
||||
module.exports = uuid;
|
||||
} else if (typeof define === 'function' && define.amd) {
|
||||
// Publish as AMD module
|
||||
define(function() {return uuid;});
|
||||
|
||||
|
||||
} else {
|
||||
// Publish as global (in browsers)
|
||||
_previousRoot = _window.uuid;
|
||||
|
||||
// **`noConflict()` - (browser only) to reset global 'uuid' var**
|
||||
uuid.noConflict = function() {
|
||||
_window.uuid = _previousRoot;
|
||||
return uuid;
|
||||
};
|
||||
|
||||
_window.uuid = uuid;
|
||||
}
|
||||
})('undefined' !== typeof window ? window : null);
|
54
node_modules/node-uuid/v3.js
generated
vendored
Normal file
54
node_modules/node-uuid/v3.js
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
var rng = require('./lib/rng');
|
||||
var bytesToUuid = require('./lib/bytesToUuid');
|
||||
|
||||
function v3(name, namespaceUuid, buf, offset) {
|
||||
var i = buf && offset || 0;
|
||||
|
||||
if (typeof(name) != 'string) {
|
||||
throw TypeError('name must be defined')
|
||||
}
|
||||
if (typeof(namespaceUuid) != 'string) {
|
||||
throw TypeError('name must be defined')
|
||||
}
|
||||
|
||||
if (typeof(options) == 'string') {
|
||||
buf = options == 'binary' ? new Array(16) : null;
|
||||
options = null;
|
||||
}
|
||||
options = options || {};
|
||||
|
||||
var rnds = options.random || (options.rng || rng)();
|
||||
|
||||
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
||||
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
||||
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
||||
|
||||
// Copy bytes to buffer, if provided
|
||||
if (buf) {
|
||||
for (var ii = 0; ii < 16; ++ii) {
|
||||
buf[i + ii] = rnds[ii];
|
||||
}
|
||||
}
|
||||
|
||||
return buf || bytesToUuid(rnds);
|
||||
}
|
||||
|
||||
exports.namespace = function(uuid) {
|
||||
// Parse namespace uuid
|
||||
var namespaceBytes = (uuid).match(/([0-9a-f][0-9a-f])/gi).map(function(s) {
|
||||
return parseInt(s, 16);
|
||||
});
|
||||
|
||||
return function(name) {
|
||||
var bytes = [].concat(namespaceBytes);
|
||||
|
||||
var utf8String = unescape(encodeURIComponent(s))
|
||||
for (var i = 0; i < utf8String.length; i++) {
|
||||
bytes.push(utf8String.charCodeAt(i));
|
||||
}
|
||||
|
||||
var hash = md5(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = v4;
|
Reference in New Issue
Block a user