vulcan 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +1 -80
- data/lib/vulcan/cli.rb +12 -33
- data/lib/vulcan/version.rb +1 -1
- data/server/bin/make +3 -1
- data/server/lib/spawner.js +4 -9
- data/server/node_modules/connect-form/node_modules/formidable/Readme.md +2 -13
- data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +7 -19
- data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +1 -12
- data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +10 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +9 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
- data/server/node_modules/cradle/lib/cradle.js +1 -0
- data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
- data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
- data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
- data/server/node_modules/cradle/package.json +3 -3
- data/server/node_modules/cradle/test/cache-test.js +7 -6
- data/server/node_modules/cradle/test/cradle-test.js +5 -4
- data/server/node_modules/cradle/test/response-test.js +6 -5
- data/server/node_modules/express/History.md +1 -53
- data/server/node_modules/express/Makefile +9 -3
- data/server/node_modules/express/Readme.md +1 -3
- data/server/node_modules/express/bin/express +66 -65
- data/server/node_modules/express/lib/express.js +1 -1
- data/server/node_modules/express/lib/request.js +9 -23
- data/server/node_modules/express/lib/response.js +2 -3
- data/server/node_modules/express/lib/utils.js +0 -13
- data/server/node_modules/express/lib/view.js +16 -19
- data/server/node_modules/express/lib/view/view.js +1 -2
- data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/http.js +0 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +31 -135
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +1 -5
- data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +21 -26
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +38 -91
- data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/utils.js +4 -11
- data/server/node_modules/express/node_modules/connect/package.json +6 -7
- data/server/node_modules/express/node_modules/connect/test.js +31 -44
- data/server/node_modules/express/node_modules/mime/index.js +1 -0
- data/server/node_modules/express/node_modules/mime/mime.js +3 -3
- data/server/node_modules/express/node_modules/mime/{types/mime.types → mime.types} +0 -0
- data/server/node_modules/express/node_modules/mime/{types/node.types → node.types} +0 -17
- data/server/node_modules/express/node_modules/mime/package.json +10 -21
- data/server/node_modules/express/node_modules/mime/test.js +3 -2
- data/server/node_modules/express/node_modules/qs/History.md +0 -11
- data/server/node_modules/express/node_modules/qs/Makefile +3 -1
- data/server/node_modules/express/node_modules/qs/Readme.md +4 -2
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +74 -100
- data/server/node_modules/express/node_modules/qs/package.json +2 -9
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
- data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
- data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
- data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
- data/server/node_modules/express/node_modules/qs/test/{parse.js → parse.test.js} +2 -1
- data/server/node_modules/express/node_modules/qs/test/{stringify.js → stringify.test.js} +0 -0
- data/server/node_modules/express/package.json +8 -9
- data/server/node_modules/node-uuid/README.md +67 -166
- data/server/node_modules/node-uuid/package.json +3 -5
- data/server/node_modules/node-uuid/{benchmark → test}/benchmark-native.c +0 -0
- data/server/node_modules/node-uuid/test/benchmark.js +27 -0
- data/server/node_modules/node-uuid/test/test.html +0 -3
- data/server/node_modules/node-uuid/test/test.js +57 -214
- data/server/node_modules/node-uuid/uuid.js +56 -225
- data/server/node_modules/restler/README.md +7 -20
- data/server/node_modules/restler/bin/restler +1 -1
- data/server/node_modules/restler/lib/multipartform.js +8 -9
- data/server/node_modules/restler/lib/restler.js +22 -64
- data/server/node_modules/restler/package.json +2 -2
- data/server/node_modules/restler/test/restler.js +2 -22
- data/server/node_modules/restler/test/test_helper.js +1 -20
- data/server/package.json +10 -10
- data/server/web.js +7 -30
- metadata +96 -89
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +0 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +0 -14
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +0 -286
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +0 -70
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +0 -43
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +0 -48
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +0 -61
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +0 -377
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +0 -312
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +0 -25
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +0 -6
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +0 -19
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +0 -21
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +0 -72
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +0 -89
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +0 -80
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +0 -104
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +0 -715
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +0 -50
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +0 -45
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +0 -72
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +0 -2
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +0 -63
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +0 -47
- data/server/node_modules/express/node_modules/mkdirp/LICENSE +0 -21
- data/server/node_modules/express/node_modules/mkdirp/README.markdown +0 -21
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +0 -6
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +0 -6
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +0 -19
- data/server/node_modules/express/node_modules/mkdirp/index.js +0 -20
- data/server/node_modules/express/node_modules/mkdirp/package.json +0 -23
- data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +0 -28
- data/server/node_modules/express/node_modules/mkdirp/test/race.js +0 -41
- data/server/node_modules/express/node_modules/mkdirp/test/rel.js +0 -32
- data/server/node_modules/express/node_modules/qs/test/mocha.opts +0 -2
- data/server/node_modules/express/testing/foo/app.js +0 -35
- data/server/node_modules/express/testing/foo/package.json +0 -9
- data/server/node_modules/express/testing/foo/public/stylesheets/style.css +0 -8
- data/server/node_modules/express/testing/foo/routes/index.js +0 -10
- data/server/node_modules/express/testing/foo/views/index.jade +0 -2
- data/server/node_modules/express/testing/foo/views/layout.jade +0 -6
- data/server/node_modules/express/testing/index.js +0 -43
- data/server/node_modules/express/testing/public/test.txt +0 -2971
- data/server/node_modules/express/testing/views/page.html +0 -1
- data/server/node_modules/express/testing/views/page.jade +0 -3
- data/server/node_modules/express/testing/views/test.md +0 -1
- data/server/node_modules/express/testing/views/user/index.jade +0 -1
- data/server/node_modules/express/testing/views/user/list.jade +0 -1
- data/server/node_modules/node-uuid/benchmark/README.md +0 -53
- data/server/node_modules/node-uuid/benchmark/bench.gnu +0 -174
- data/server/node_modules/node-uuid/benchmark/bench.sh +0 -34
- data/server/node_modules/node-uuid/benchmark/benchmark.js +0 -84
- data/server/node_modules/node-uuid/test/benchmark-native +0 -0
- data/server/node_modules/node-uuid/test/compare_v1.js +0 -63
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name" : "node-uuid",
|
|
3
|
-
"description" : "
|
|
3
|
+
"description" : "Simple, fast generation of RFC4122(v4) UUIDs.",
|
|
4
4
|
"url" : "http://github.com/broofa/node-uuid",
|
|
5
5
|
"keywords" : ["uuid", "guid", "rfc4122"],
|
|
6
6
|
"author" : "Robert Kieffer <robert@broofa.com>",
|
|
7
|
-
"contributors" : [
|
|
8
|
-
{"name": "Christoph Tavan <dev@tavan.de>", "github": "https://github.com/ctavan"}
|
|
9
|
-
],
|
|
7
|
+
"contributors" : [],
|
|
10
8
|
"dependencies" : [],
|
|
11
9
|
"lib" : ".",
|
|
12
10
|
"main" : "./uuid.js",
|
|
13
|
-
"version" : "1.
|
|
11
|
+
"version" : "1.2.0"
|
|
14
12
|
}
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var nodeuuid = require('../uuid'),
|
|
2
|
+
uuidjs = require('uuid').generate,
|
|
3
|
+
N = 5e5;
|
|
4
|
+
|
|
5
|
+
function rate(msg, t) {
|
|
6
|
+
console.log(msg + ': ' +
|
|
7
|
+
(N / (Date.now() - t) * 1e3 | 0) +
|
|
8
|
+
' uuids/second');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// node-uuid - string form
|
|
12
|
+
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid();
|
|
13
|
+
rate('nodeuuid()', t);
|
|
14
|
+
|
|
15
|
+
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid('binary');
|
|
16
|
+
rate('nodeuuid(\'binary\')', t);
|
|
17
|
+
|
|
18
|
+
var buffer = new nodeuuid.BufferClass(16);
|
|
19
|
+
for (var i = 0, t = Date.now(); i < N; i++) nodeuuid('binary', buffer);
|
|
20
|
+
rate('nodeuuid(\'binary\', buffer)', t);
|
|
21
|
+
|
|
22
|
+
// node-uuid - string form
|
|
23
|
+
for (var i = 0, t = Date.now(); i < N; i++) uuidjs();
|
|
24
|
+
rate('uuidjs()', t);
|
|
25
|
+
|
|
26
|
+
for (var i = 0, t = Date.now(); i < N; i++) uuidjs('binary');
|
|
27
|
+
rate('uuidjs(\'binary\')', t);
|
|
@@ -1,240 +1,83 @@
|
|
|
1
|
-
if (
|
|
2
|
-
// node.js
|
|
1
|
+
if (typeof(uuid) == 'undefined') {
|
|
3
2
|
uuid = require('../uuid');
|
|
4
3
|
}
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
function _log(msg, type) {
|
|
11
|
-
type = type || 'log';
|
|
5
|
+
var UUID_FORMAT = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89a-fAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}/;
|
|
6
|
+
var N = 1e5;
|
|
12
7
|
|
|
8
|
+
function log(msg) {
|
|
13
9
|
if (typeof(document) != 'undefined') {
|
|
14
|
-
document.write('<div
|
|
10
|
+
document.write('<div>' + msg + '</div>');
|
|
15
11
|
}
|
|
16
12
|
if (typeof(console) != 'undefined') {
|
|
17
|
-
|
|
18
|
-
log: '\033[30m',
|
|
19
|
-
warn: '\033[33m',
|
|
20
|
-
error: '\033[31m'
|
|
21
|
-
}
|
|
22
|
-
console[type](color[type] + msg + color.log);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function log(msg) {_log(msg, 'log');}
|
|
27
|
-
function warn(msg) {_log(msg, 'warn');}
|
|
28
|
-
function error(msg) {_log(msg, 'error');}
|
|
29
|
-
|
|
30
|
-
function assert(res, msg) {
|
|
31
|
-
if (!res) {
|
|
32
|
-
error('FAIL: ' + msg);
|
|
33
|
-
} else {
|
|
34
|
-
log('Pass: ' + msg);
|
|
13
|
+
console.log(msg);
|
|
35
14
|
}
|
|
36
15
|
}
|
|
37
16
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
// Verify ordering of v1 ids created with explicit times
|
|
43
|
-
var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00
|
|
44
|
-
|
|
45
|
-
function compare(name, ids) {
|
|
46
|
-
ids = ids.map(function(id) {
|
|
47
|
-
return id.split('-').reverse().join('-');
|
|
48
|
-
}).sort();
|
|
49
|
-
var sorted = ([].concat(ids)).sort();
|
|
50
|
-
|
|
51
|
-
assert(sorted.toString() == ids.toString(), name + ' have expected order');
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Verify ordering of v1 ids created using default behavior
|
|
55
|
-
compare('uuids with current time', [
|
|
56
|
-
uuid.v1(),
|
|
57
|
-
uuid.v1(),
|
|
58
|
-
uuid.v1(),
|
|
59
|
-
uuid.v1(),
|
|
60
|
-
uuid.v1()
|
|
61
|
-
]);
|
|
62
|
-
|
|
63
|
-
// Verify ordering of v1 ids created with explicit times
|
|
64
|
-
compare('uuids with time option', [
|
|
65
|
-
uuid.v1({msecs: TIME - 10*3600*1000}),
|
|
66
|
-
uuid.v1({msecs: TIME - 1}),
|
|
67
|
-
uuid.v1({msecs: TIME}),
|
|
68
|
-
uuid.v1({msecs: TIME + 1}),
|
|
69
|
-
uuid.v1({msecs: TIME + 28*24*3600*1000}),
|
|
70
|
-
]);
|
|
71
|
-
|
|
72
|
-
assert(
|
|
73
|
-
uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}),
|
|
74
|
-
'IDs created at same msec are different'
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
// Verify throw if too many ids created
|
|
78
|
-
var thrown = false;
|
|
79
|
-
try {
|
|
80
|
-
uuid.v1({msecs: TIME, nsecs: 10000});
|
|
81
|
-
} catch (e) {
|
|
82
|
-
thrown = true;
|
|
17
|
+
function rate(msg, t) {
|
|
18
|
+
log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids/second');
|
|
83
19
|
}
|
|
84
|
-
assert(thrown, 'Exception thrown when > 10K ids created in 1 ms');
|
|
85
|
-
|
|
86
|
-
// Verify clock regression bumps clockseq
|
|
87
|
-
var uidt = uuid.v1({msecs: TIME});
|
|
88
|
-
var uidtb = uuid.v1({msecs: TIME - 1});
|
|
89
|
-
assert(
|
|
90
|
-
parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1,
|
|
91
|
-
'Clock regression by msec increments the clockseq'
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
// Verify clock regression bumps clockseq
|
|
95
|
-
var uidtn = uuid.v1({msecs: TIME, nsecs: 10});
|
|
96
|
-
var uidtnb = uuid.v1({msecs: TIME, nsecs: 9});
|
|
97
|
-
assert(
|
|
98
|
-
parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1,
|
|
99
|
-
'Clock regression by nsec increments the clockseq'
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
// Verify explicit options produce expected id
|
|
103
|
-
var id = uuid.v1({
|
|
104
|
-
msecs: 1321651533573,
|
|
105
|
-
nsecs: 5432,
|
|
106
|
-
clockseq: 0x385c,
|
|
107
|
-
node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ]
|
|
108
|
-
});
|
|
109
|
-
assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id');
|
|
110
20
|
|
|
111
|
-
// Verify adjacent ids across a msec boundary are 1 time unit apart
|
|
112
|
-
var u0 = uuid.v1({msecs: TIME, nsecs: 9999});
|
|
113
|
-
var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0});
|
|
114
|
-
|
|
115
|
-
var before = u0.split('-')[0], after = u1.split('-')[0];
|
|
116
|
-
var dt = parseInt(after, 16) - parseInt(before, 16);
|
|
117
|
-
assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart');
|
|
118
|
-
|
|
119
|
-
//
|
|
120
|
-
// Test parse/unparse
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
id = '00112233445566778899aabbccddeeff';
|
|
124
|
-
assert(uuid.unparse(uuid.parse(id.substr(0,10))) ==
|
|
125
|
-
'00112233-4400-0000-0000-000000000000', 'Short parse');
|
|
126
|
-
assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) ==
|
|
127
|
-
'00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse');
|
|
128
|
-
|
|
129
|
-
//
|
|
130
21
|
// Perf tests
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
22
|
+
log('- - - Performance Data - - -');
|
|
23
|
+
for (var i = 0, t = Date.now(); i < N; i++) uuid();
|
|
24
|
+
rate('uuid()', t);
|
|
25
|
+
for (var i = 0, t = Date.now(); i < N; i++) uuid('binary');
|
|
26
|
+
rate('uuid(\'binary\')', t);
|
|
27
|
+
var buf = new uuid.BufferClass(16);
|
|
28
|
+
for (var i = 0, t = Date.now(); i < N; i++) uuid('binary', buf);
|
|
29
|
+
rate('uuid(\'binary\', buffer)', t);
|
|
30
|
+
|
|
31
|
+
var counts = {}, max = 0;
|
|
32
|
+
|
|
33
|
+
var b = new uuid.BufferClass(16);
|
|
34
|
+
for (var i = 0; i < N; i++) {
|
|
35
|
+
id = uuid();
|
|
36
|
+
if (!UUID_FORMAT.test(id)) {
|
|
37
|
+
throw Error(id + ' is not a valid UUID string');
|
|
38
|
+
}
|
|
137
39
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
};
|
|
40
|
+
if (id != uuid.unparse(uuid.parse(id))) {
|
|
41
|
+
throw Error(id + ' does not parse/unparse');
|
|
42
|
+
}
|
|
142
43
|
|
|
143
|
-
|
|
44
|
+
// Count digits for our randomness check
|
|
45
|
+
var digits = id.replace(/-/g, '').split('');
|
|
46
|
+
for (var j = digits.length-1; j >= 0; j--) {
|
|
47
|
+
var c = digits[j];
|
|
48
|
+
max = Math.max(max, counts[c] = (counts[c] || 0) + 1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
144
51
|
|
|
145
52
|
// Get %'age an actual value differs from the ideal value
|
|
146
53
|
function divergence(actual, ideal) {
|
|
147
54
|
return Math.round(100*100*(actual - ideal)/ideal)/100;
|
|
148
55
|
}
|
|
149
56
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
var
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (id != uuid.unparse(uuid.parse(id))) {
|
|
167
|
-
assert(fail, id + ' is not a valid id');
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Count digits for our randomness check
|
|
171
|
-
if (version == 'v4') {
|
|
172
|
-
var digits = id.replace(/-/g, '').split('');
|
|
173
|
-
for (var j = digits.length-1; j >= 0; j--) {
|
|
174
|
-
var c = digits[j];
|
|
175
|
-
max = Math.max(max, counts[c] = (counts[c] || 0) + 1);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// Check randomness for v4 UUIDs
|
|
181
|
-
if (version == 'v4') {
|
|
182
|
-
// Limit that we get worried about randomness. (Purely empirical choice, this!)
|
|
183
|
-
var limit = 2*100*Math.sqrt(1/N);
|
|
184
|
-
|
|
185
|
-
log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)');
|
|
186
|
-
|
|
187
|
-
for (var i = 0; i < 16; i++) {
|
|
188
|
-
var c = i.toString(16);
|
|
189
|
-
var bar = '', n = counts[c], p = Math.round(n/max*100|0);
|
|
190
|
-
|
|
191
|
-
// 1-3,5-8, and D-F: 1:16 odds over 30 digits
|
|
192
|
-
var ideal = N*30/16;
|
|
193
|
-
if (i == 4) {
|
|
194
|
-
// 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits
|
|
195
|
-
ideal = N*(1 + 30/16);
|
|
196
|
-
} else if (i >= 8 && i <= 11) {
|
|
197
|
-
// 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits
|
|
198
|
-
ideal = N*(1/4 + 30/16);
|
|
199
|
-
} else {
|
|
200
|
-
// Otherwise: 1:16 odds on 30 digits
|
|
201
|
-
ideal = N*30/16;
|
|
202
|
-
}
|
|
203
|
-
var d = divergence(n, ideal);
|
|
204
|
-
|
|
205
|
-
// Draw bar using UTF squares (just for grins)
|
|
206
|
-
var s = n/max*50 | 0;
|
|
207
|
-
while (s--) bar += '=';
|
|
208
|
-
|
|
209
|
-
assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)');
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// Perf tests
|
|
215
|
-
for (var version in generators) {
|
|
216
|
-
log('\nPerformance testing ' + version + ' UUIDs');
|
|
217
|
-
var generator = generators[version];
|
|
218
|
-
var buf = new uuid.BufferClass(16);
|
|
219
|
-
|
|
220
|
-
if (version == 'v4') {
|
|
221
|
-
['mathRNG', 'whatwgRNG', 'nodeRNG'].forEach(function(rng) {
|
|
222
|
-
if (uuid[rng]) {
|
|
223
|
-
var options = {rng: uuid[rng]};
|
|
224
|
-
for (var i = 0, t = Date.now(); i < N; i++) generator(options);
|
|
225
|
-
rate('uuid.' + version + '() with ' + rng, t);
|
|
226
|
-
} else {
|
|
227
|
-
log('uuid.' + version + '() with ' + rng + ': not defined');
|
|
228
|
-
}
|
|
229
|
-
});
|
|
57
|
+
log('<br />- - - Distribution of Hex Digits (% deviation from ideal) - - -');
|
|
58
|
+
|
|
59
|
+
// Check randomness
|
|
60
|
+
for (var i = 0; i < 16; i++) {
|
|
61
|
+
var c = i.toString(16);
|
|
62
|
+
var bar = '', n = counts[c], p = Math.round(n/max*100|0);
|
|
63
|
+
|
|
64
|
+
// 1-3,5-8, and D-F: 1:16 odds over 30 digits
|
|
65
|
+
var ideal = N*30/16;
|
|
66
|
+
if (i == 4) {
|
|
67
|
+
// 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits
|
|
68
|
+
ideal = N*(1 + 30/16);
|
|
69
|
+
} else if (i >= 8 && i <= 11) {
|
|
70
|
+
// 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits
|
|
71
|
+
ideal = N*(1/4 + 30/16);
|
|
230
72
|
} else {
|
|
231
|
-
|
|
232
|
-
|
|
73
|
+
// Otherwise: 1:16 odds on 30 digits
|
|
74
|
+
ideal = N*30/16;
|
|
233
75
|
}
|
|
76
|
+
var d = divergence(n, ideal);
|
|
234
77
|
|
|
235
|
-
|
|
236
|
-
|
|
78
|
+
// Draw bar using UTF squares (just for grins)
|
|
79
|
+
var s = n/max*50 | 0;
|
|
80
|
+
while (s--) bar += '=';
|
|
237
81
|
|
|
238
|
-
|
|
239
|
-
rate('uuid.' + version + '(\'binary\', buffer)', t);
|
|
82
|
+
log(c + ' |' + bar + '| ' + counts[c] + ' (' + d + '%)');
|
|
240
83
|
}
|
|
@@ -1,249 +1,80 @@
|
|
|
1
|
-
// node-uuid/uuid.js
|
|
2
|
-
//
|
|
3
|
-
// Copyright (c) 2010 Robert Kieffer
|
|
4
|
-
// Dual licensed under the MIT and GPL licenses.
|
|
5
|
-
// Documentation and details at https://github.com/broofa/node-uuid
|
|
6
1
|
(function() {
|
|
7
|
-
|
|
2
|
+
/*
|
|
3
|
+
* Generate a RFC4122(v4) UUID
|
|
4
|
+
*
|
|
5
|
+
* Documentation at https://github.com/broofa/node-uuid
|
|
6
|
+
*/
|
|
8
7
|
|
|
9
|
-
//
|
|
10
|
-
// Math.random() does not guarantee "cryptographic quality". So we feature
|
|
11
|
-
// detect for more robust APIs, normalizing each method to return 128-bits
|
|
12
|
-
// (16 bytes) of random data.
|
|
13
|
-
var mathRNG, nodeRNG, whatwgRNG;
|
|
14
|
-
|
|
15
|
-
// Math.random()-based RNG. All platforms, very fast, unknown quality
|
|
16
|
-
var _rndBytes = new Array(16);
|
|
17
|
-
mathRNG = function() {
|
|
18
|
-
var r, b = _rndBytes, i = 0;
|
|
19
|
-
|
|
20
|
-
for (var i = 0, r; i < 16; i++) {
|
|
21
|
-
if ((i & 0x03) == 0) r = Math.random() * 0x100000000;
|
|
22
|
-
b[i] = r >>> ((i & 0x03) << 3) & 0xff;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return b;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
|
|
29
|
-
// WebKit only (currently), moderately fast, high quality
|
|
30
|
-
if (_global.crypto && crypto.getRandomValues) {
|
|
31
|
-
var _rnds = new Uint32Array(4);
|
|
32
|
-
whatwgRNG = function() {
|
|
33
|
-
crypto.getRandomValues(_rnds);
|
|
34
|
-
|
|
35
|
-
for (var c = 0 ; c < 16; c++) {
|
|
36
|
-
_rndBytes[c] = _rnds[c >> 2] >>> ((c & 0x03) * 8) & 0xff;
|
|
37
|
-
}
|
|
38
|
-
return _rndBytes;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html
|
|
43
|
-
// Node.js only, moderately fast, high quality
|
|
44
|
-
try {
|
|
45
|
-
var _rb = require('crypto').randomBytes;
|
|
46
|
-
nodeRNG = _rb && function() {
|
|
47
|
-
return _rb(16);
|
|
48
|
-
};
|
|
49
|
-
} catch (e) {}
|
|
50
|
-
|
|
51
|
-
// Select RNG with best quality
|
|
52
|
-
var _rng = nodeRNG || whatwgRNG || mathRNG;
|
|
53
|
-
|
|
54
|
-
// Buffer class to use
|
|
8
|
+
// Use node.js Buffer class if available, otherwise use the Array class
|
|
55
9
|
var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array;
|
|
56
10
|
|
|
57
|
-
//
|
|
58
|
-
var
|
|
59
|
-
|
|
11
|
+
// Buffer used for generating string uuids
|
|
12
|
+
var _buf = new BufferClass(16);
|
|
13
|
+
|
|
14
|
+
// Cache number <-> hex string for octet values
|
|
15
|
+
var toString = [];
|
|
16
|
+
var toNumber = {};
|
|
60
17
|
for (var i = 0; i < 256; i++) {
|
|
61
|
-
|
|
62
|
-
|
|
18
|
+
toString[i] = (i + 0x100).toString(16).substr(1);
|
|
19
|
+
toNumber[toString[i]] = i;
|
|
63
20
|
}
|
|
64
21
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var i =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
s.toLowerCase().replace(/[0-9a-f]{2}/g, function(byte) {
|
|
71
|
-
if (ii < 16) { // Don't overflow!
|
|
72
|
-
buf[i + ii++] = _hexToByte[byte];
|
|
73
|
-
}
|
|
22
|
+
function parse(s) {
|
|
23
|
+
var buf = new BufferClass(16);
|
|
24
|
+
var i = 0, ton = toNumber;
|
|
25
|
+
s.toLowerCase().replace(/[0-9a-f][0-9a-f]/g, function(octet) {
|
|
26
|
+
buf[i++] = toNumber[octet];
|
|
74
27
|
});
|
|
75
|
-
|
|
76
|
-
// Zero out remaining bytes if string was short
|
|
77
|
-
while (ii < 16) {
|
|
78
|
-
buf[i + ii++] = 0;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
28
|
return buf;
|
|
82
29
|
}
|
|
83
30
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
bth[buf[i++]] + bth[buf[i++]] +
|
|
93
|
-
bth[buf[i++]] + bth[buf[i++]] +
|
|
94
|
-
bth[buf[i++]] + bth[buf[i++]];
|
|
31
|
+
function unparse(buf) {
|
|
32
|
+
var tos = toString, b = buf;
|
|
33
|
+
return tos[b[0]] + tos[b[1]] + tos[b[2]] + tos[b[3]] + '-' +
|
|
34
|
+
tos[b[4]] + tos[b[5]] + '-' +
|
|
35
|
+
tos[b[6]] + tos[b[7]] + '-' +
|
|
36
|
+
tos[b[8]] + tos[b[9]] + '-' +
|
|
37
|
+
tos[b[10]] + tos[b[11]] + tos[b[12]] +
|
|
38
|
+
tos[b[13]] + tos[b[14]] + tos[b[15]];
|
|
95
39
|
}
|
|
96
40
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// and http://docs.python.org/library/uuid.html
|
|
101
|
-
|
|
102
|
-
// random #'s we need to init node and clockseq
|
|
103
|
-
var _seedBytes = _rng();
|
|
104
|
-
|
|
105
|
-
// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
|
|
106
|
-
var _nodeId = [
|
|
107
|
-
_seedBytes[0] | 0x01,
|
|
108
|
-
_seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]
|
|
109
|
-
];
|
|
110
|
-
|
|
111
|
-
// Per 4.2.2, randomize (14 bit) clockseq
|
|
112
|
-
var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;
|
|
113
|
-
|
|
114
|
-
// Previous uuid creation time
|
|
115
|
-
var _lastMSecs = 0, _lastNSecs = 0;
|
|
116
|
-
|
|
117
|
-
// See https://github.com/broofa/node-uuid for API details
|
|
118
|
-
function v1(options, buf, offset) {
|
|
41
|
+
var b32 = 0x100000000, ff = 0xff;
|
|
42
|
+
function uuid(fmt, buf, offset) {
|
|
43
|
+
var b = fmt != 'binary' ? _buf : (buf ? buf : new BufferClass(16));
|
|
119
44
|
var i = buf && offset || 0;
|
|
120
|
-
var b = buf || [];
|
|
121
|
-
|
|
122
|
-
options = options || {};
|
|
123
|
-
|
|
124
|
-
var clockseq = options.clockseq != null ? options.clockseq : _clockseq;
|
|
125
|
-
|
|
126
|
-
// UUID timestamps are 100 nano-second units since the Gregorian epoch,
|
|
127
|
-
// (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
|
|
128
|
-
// time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
|
|
129
|
-
// (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
|
|
130
|
-
var msecs = options.msecs != null ? options.msecs : new Date().getTime();
|
|
131
|
-
|
|
132
|
-
// Per 4.2.1.2, use count of uuid's generated during the current clock
|
|
133
|
-
// cycle to simulate higher resolution clock
|
|
134
|
-
var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1;
|
|
135
|
-
|
|
136
|
-
// Time since last uuid creation (in msecs)
|
|
137
|
-
var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
|
|
138
45
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
46
|
+
var r = Math.random()*b32;
|
|
47
|
+
b[i++] = r & ff;
|
|
48
|
+
b[i++] = r>>>8 & ff;
|
|
49
|
+
b[i++] = r>>>16 & ff;
|
|
50
|
+
b[i++] = r>>>24 & ff;
|
|
51
|
+
r = Math.random()*b32;
|
|
52
|
+
b[i++] = r & ff;
|
|
53
|
+
b[i++] = r>>>8 & ff;
|
|
54
|
+
b[i++] = r>>>16 & 0x0f | 0x40; // See RFC4122 sect. 4.1.3
|
|
55
|
+
b[i++] = r>>>24 & ff;
|
|
56
|
+
r = Math.random()*b32;
|
|
57
|
+
b[i++] = r & 0x3f | 0x80; // See RFC4122 sect. 4.4
|
|
58
|
+
b[i++] = r>>>8 & ff;
|
|
59
|
+
b[i++] = r>>>16 & ff;
|
|
60
|
+
b[i++] = r>>>24 & ff;
|
|
61
|
+
r = Math.random()*b32;
|
|
62
|
+
b[i++] = r & ff;
|
|
63
|
+
b[i++] = r>>>8 & ff;
|
|
64
|
+
b[i++] = r>>>16 & ff;
|
|
65
|
+
b[i++] = r>>>24 & ff;
|
|
66
|
+
|
|
67
|
+
return fmt === undefined ? unparse(b) : b;
|
|
68
|
+
};
|
|
143
69
|
|
|
144
|
-
// Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
|
|
145
|
-
// time interval
|
|
146
|
-
if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) {
|
|
147
|
-
nsecs = 0;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Per 4.2.1.2 Throw error if too many uuids are requested
|
|
151
|
-
if (nsecs >= 10000) {
|
|
152
|
-
throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
_lastMSecs = msecs;
|
|
156
|
-
_lastNSecs = nsecs;
|
|
157
|
-
_clockseq = clockseq;
|
|
158
|
-
|
|
159
|
-
// Per 4.1.4 - Convert from unix epoch to Gregorian epoch
|
|
160
|
-
msecs += 12219292800000;
|
|
161
|
-
|
|
162
|
-
// `time_low`
|
|
163
|
-
var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
|
|
164
|
-
b[i++] = tl >>> 24 & 0xff;
|
|
165
|
-
b[i++] = tl >>> 16 & 0xff;
|
|
166
|
-
b[i++] = tl >>> 8 & 0xff;
|
|
167
|
-
b[i++] = tl & 0xff;
|
|
168
|
-
|
|
169
|
-
// `time_mid`
|
|
170
|
-
var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
|
|
171
|
-
b[i++] = tmh >>> 8 & 0xff;
|
|
172
|
-
b[i++] = tmh & 0xff;
|
|
173
|
-
|
|
174
|
-
// `time_high_and_version`
|
|
175
|
-
b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
|
|
176
|
-
b[i++] = tmh >>> 16 & 0xff;
|
|
177
|
-
|
|
178
|
-
// `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
|
|
179
|
-
b[i++] = clockseq >>> 8 | 0x80;
|
|
180
|
-
|
|
181
|
-
// `clock_seq_low`
|
|
182
|
-
b[i++] = clockseq & 0xff;
|
|
183
|
-
|
|
184
|
-
// `node`
|
|
185
|
-
var node = options.node || _nodeId;
|
|
186
|
-
for (var n = 0; n < 6; n++) {
|
|
187
|
-
b[i + n] = node[n];
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
return buf ? buf : unparse(b);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// **`v4()` - Generate random UUID**
|
|
194
|
-
|
|
195
|
-
// See https://github.com/broofa/node-uuid for API details
|
|
196
|
-
function v4(options, buf, offset) {
|
|
197
|
-
// Deprecated - 'format' argument, as supported in v1.2
|
|
198
|
-
var i = buf && offset || 0;
|
|
199
|
-
|
|
200
|
-
if (typeof(options) == 'string') {
|
|
201
|
-
buf = options == 'binary' ? new BufferClass(16) : null;
|
|
202
|
-
options = null;
|
|
203
|
-
}
|
|
204
|
-
options = options || {};
|
|
205
|
-
|
|
206
|
-
var rnds = options.random || (options.rng || _rng)();
|
|
207
|
-
|
|
208
|
-
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
|
209
|
-
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
|
210
|
-
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
|
211
|
-
|
|
212
|
-
// Copy bytes to buffer, if provided
|
|
213
|
-
if (buf) {
|
|
214
|
-
for (var ii = 0; ii < 16; ii++) {
|
|
215
|
-
buf[i + ii] = rnds[ii];
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return buf || unparse(rnds);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Export public API
|
|
223
|
-
var uuid = v4;
|
|
224
|
-
uuid.v1 = v1;
|
|
225
|
-
uuid.v4 = v4;
|
|
226
70
|
uuid.parse = parse;
|
|
227
71
|
uuid.unparse = unparse;
|
|
228
72
|
uuid.BufferClass = BufferClass;
|
|
229
73
|
|
|
230
|
-
// Export RNG options
|
|
231
|
-
uuid.mathRNG = mathRNG;
|
|
232
|
-
uuid.nodeRNG = nodeRNG;
|
|
233
|
-
uuid.whatwgRNG = whatwgRNG;
|
|
234
|
-
|
|
235
74
|
if (typeof(module) != 'undefined') {
|
|
236
|
-
// Play nice with node.js
|
|
237
75
|
module.exports = uuid;
|
|
238
76
|
} else {
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
// **`noConflict()` - (browser only) to reset global 'uuid' var**
|
|
243
|
-
uuid.noConflict = function() {
|
|
244
|
-
_global.uuid = _previousRoot;
|
|
245
|
-
return uuid;
|
|
246
|
-
}
|
|
247
|
-
_global.uuid = uuid;
|
|
77
|
+
// In browser? Set as top-level function
|
|
78
|
+
this.uuid = uuid;
|
|
248
79
|
}
|
|
249
|
-
}()
|
|
80
|
+
})();
|