decidim 0.27.4 → 0.27.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +2 -16
- data/docs/modules/install/pages/manual.adoc +1 -1
- data/docs/modules/services/pages/maps.adoc +8 -0
- data/lib/decidim/version.rb +1 -1
- data/package-lock.json +7 -7
- data/packages/browserslist-config/package.json +1 -1
- data/packages/core/node_modules/uuid/AUTHORS +5 -0
- data/packages/core/node_modules/uuid/CHANGELOG.md +119 -0
- data/packages/{webpacker/node_modules/brace-expansion/LICENSE → core/node_modules/uuid/LICENSE.md} +2 -2
- data/packages/core/node_modules/uuid/README.md +276 -0
- data/packages/core/node_modules/uuid/bin/uuid +65 -0
- data/packages/core/node_modules/uuid/index.js +8 -0
- data/packages/core/node_modules/uuid/lib/bytesToUuid.js +26 -0
- data/packages/core/node_modules/uuid/lib/md5-browser.js +216 -0
- data/packages/core/node_modules/uuid/lib/md5.js +25 -0
- data/packages/core/node_modules/uuid/lib/rng-browser.js +34 -0
- data/packages/core/node_modules/uuid/lib/rng.js +8 -0
- data/packages/core/node_modules/uuid/lib/sha1-browser.js +89 -0
- data/packages/core/node_modules/uuid/lib/sha1.js +25 -0
- data/packages/core/node_modules/uuid/lib/v35.js +57 -0
- data/packages/core/node_modules/uuid/package.json +49 -0
- data/packages/core/node_modules/uuid/v1.js +109 -0
- data/packages/core/node_modules/uuid/v3.js +4 -0
- data/packages/core/node_modules/uuid/v4.js +29 -0
- data/packages/core/node_modules/uuid/v5.js +3 -0
- data/packages/core/package-lock.json +347 -3079
- data/packages/core/package.json +1 -1
- data/packages/dev/package.json +1 -1
- data/packages/elections/package.json +1 -1
- data/packages/eslint-config/package-lock.json +4797 -0
- data/packages/eslint-config/package.json +1 -1
- data/packages/stylelint-config/package.json +1 -1
- data/packages/webpacker/package.json +1 -1
- metadata +63 -234
- data/lib/decidim/release_manager.rb.new +0 -43
- data/packages/core/node_modules/diff/CONTRIBUTING.md +0 -39
- data/packages/core/node_modules/diff/LICENSE +0 -31
- data/packages/core/node_modules/diff/README.md +0 -211
- data/packages/core/node_modules/diff/dist/diff.js +0 -1627
- data/packages/core/node_modules/diff/dist/diff.min.js +0 -38
- data/packages/core/node_modules/diff/lib/convert/dmp.js +0 -32
- data/packages/core/node_modules/diff/lib/convert/xml.js +0 -42
- data/packages/core/node_modules/diff/lib/diff/array.js +0 -45
- data/packages/core/node_modules/diff/lib/diff/base.js +0 -307
- data/packages/core/node_modules/diff/lib/diff/character.js +0 -37
- data/packages/core/node_modules/diff/lib/diff/css.js +0 -41
- data/packages/core/node_modules/diff/lib/diff/json.js +0 -163
- data/packages/core/node_modules/diff/lib/diff/line.js +0 -89
- data/packages/core/node_modules/diff/lib/diff/sentence.js +0 -41
- data/packages/core/node_modules/diff/lib/diff/word.js +0 -108
- data/packages/core/node_modules/diff/lib/index.es6.js +0 -1561
- data/packages/core/node_modules/diff/lib/index.js +0 -216
- data/packages/core/node_modules/diff/lib/index.mjs +0 -1561
- data/packages/core/node_modules/diff/lib/patch/apply.js +0 -238
- data/packages/core/node_modules/diff/lib/patch/create.js +0 -272
- data/packages/core/node_modules/diff/lib/patch/merge.js +0 -613
- data/packages/core/node_modules/diff/lib/patch/parse.js +0 -167
- data/packages/core/node_modules/diff/lib/util/array.js +0 -32
- data/packages/core/node_modules/diff/lib/util/distance-iterator.js +0 -57
- data/packages/core/node_modules/diff/lib/util/params.js +0 -24
- data/packages/core/node_modules/diff/package.json +0 -87
- data/packages/core/node_modules/diff/release-notes.md +0 -309
- data/packages/core/node_modules/diff/runtime.js +0 -3
- data/packages/webpacker/node_modules/argparse/CHANGELOG.md +0 -216
- data/packages/webpacker/node_modules/argparse/LICENSE +0 -254
- data/packages/webpacker/node_modules/argparse/README.md +0 -84
- data/packages/webpacker/node_modules/argparse/argparse.js +0 -3707
- data/packages/webpacker/node_modules/argparse/lib/sub.js +0 -67
- data/packages/webpacker/node_modules/argparse/lib/textwrap.js +0 -440
- data/packages/webpacker/node_modules/argparse/package.json +0 -31
- data/packages/webpacker/node_modules/brace-expansion/README.md +0 -135
- data/packages/webpacker/node_modules/brace-expansion/index.js +0 -203
- data/packages/webpacker/node_modules/brace-expansion/package.json +0 -46
- data/packages/webpacker/node_modules/glob/LICENSE +0 -15
- data/packages/webpacker/node_modules/glob/README.md +0 -1214
- data/packages/webpacker/node_modules/glob/dist/cjs/package.json +0 -4
- data/packages/webpacker/node_modules/glob/dist/cjs/src/bin.d.ts +0 -3
- data/packages/webpacker/node_modules/glob/dist/cjs/src/bin.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/bin.js +0 -270
- data/packages/webpacker/node_modules/glob/dist/cjs/src/bin.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/glob.d.ts +0 -344
- data/packages/webpacker/node_modules/glob/dist/cjs/src/glob.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/glob.js +0 -238
- data/packages/webpacker/node_modules/glob/dist/cjs/src/glob.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/has-magic.d.ts +0 -14
- data/packages/webpacker/node_modules/glob/dist/cjs/src/has-magic.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/has-magic.js +0 -27
- data/packages/webpacker/node_modules/glob/dist/cjs/src/has-magic.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/ignore.d.ts +0 -20
- data/packages/webpacker/node_modules/glob/dist/cjs/src/ignore.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/ignore.js +0 -103
- data/packages/webpacker/node_modules/glob/dist/cjs/src/ignore.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/index.d.ts +0 -95
- data/packages/webpacker/node_modules/glob/dist/cjs/src/index.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/index.js +0 -68
- data/packages/webpacker/node_modules/glob/dist/cjs/src/index.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/pattern.d.ts +0 -77
- data/packages/webpacker/node_modules/glob/dist/cjs/src/pattern.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/pattern.js +0 -219
- data/packages/webpacker/node_modules/glob/dist/cjs/src/pattern.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/processor.d.ts +0 -59
- data/packages/webpacker/node_modules/glob/dist/cjs/src/processor.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/processor.js +0 -309
- data/packages/webpacker/node_modules/glob/dist/cjs/src/processor.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/walker.d.ts +0 -96
- data/packages/webpacker/node_modules/glob/dist/cjs/src/walker.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/cjs/src/walker.js +0 -358
- data/packages/webpacker/node_modules/glob/dist/cjs/src/walker.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/glob.d.ts +0 -344
- data/packages/webpacker/node_modules/glob/dist/mjs/glob.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/glob.js +0 -234
- data/packages/webpacker/node_modules/glob/dist/mjs/glob.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/has-magic.d.ts +0 -14
- data/packages/webpacker/node_modules/glob/dist/mjs/has-magic.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/has-magic.js +0 -23
- data/packages/webpacker/node_modules/glob/dist/mjs/has-magic.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/ignore.d.ts +0 -20
- data/packages/webpacker/node_modules/glob/dist/mjs/ignore.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/ignore.js +0 -99
- data/packages/webpacker/node_modules/glob/dist/mjs/ignore.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/index.d.ts +0 -95
- data/packages/webpacker/node_modules/glob/dist/mjs/index.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/index.js +0 -56
- data/packages/webpacker/node_modules/glob/dist/mjs/index.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/package.json +0 -4
- data/packages/webpacker/node_modules/glob/dist/mjs/pattern.d.ts +0 -77
- data/packages/webpacker/node_modules/glob/dist/mjs/pattern.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/pattern.js +0 -215
- data/packages/webpacker/node_modules/glob/dist/mjs/pattern.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/processor.d.ts +0 -59
- data/packages/webpacker/node_modules/glob/dist/mjs/processor.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/processor.js +0 -302
- data/packages/webpacker/node_modules/glob/dist/mjs/processor.js.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/walker.d.ts +0 -96
- data/packages/webpacker/node_modules/glob/dist/mjs/walker.d.ts.map +0 -1
- data/packages/webpacker/node_modules/glob/dist/mjs/walker.js +0 -352
- data/packages/webpacker/node_modules/glob/dist/mjs/walker.js.map +0 -1
- data/packages/webpacker/node_modules/glob/package.json +0 -98
- data/packages/webpacker/node_modules/js-yaml/CHANGELOG.md +0 -616
- data/packages/webpacker/node_modules/js-yaml/LICENSE +0 -21
- data/packages/webpacker/node_modules/js-yaml/README.md +0 -246
- data/packages/webpacker/node_modules/js-yaml/bin/js-yaml.js +0 -126
- data/packages/webpacker/node_modules/js-yaml/dist/js-yaml.js +0 -3874
- data/packages/webpacker/node_modules/js-yaml/dist/js-yaml.min.js +0 -2
- data/packages/webpacker/node_modules/js-yaml/dist/js-yaml.mjs +0 -3851
- data/packages/webpacker/node_modules/js-yaml/index.js +0 -47
- data/packages/webpacker/node_modules/js-yaml/lib/common.js +0 -59
- data/packages/webpacker/node_modules/js-yaml/lib/dumper.js +0 -965
- data/packages/webpacker/node_modules/js-yaml/lib/exception.js +0 -55
- data/packages/webpacker/node_modules/js-yaml/lib/loader.js +0 -1727
- data/packages/webpacker/node_modules/js-yaml/lib/schema/core.js +0 -11
- data/packages/webpacker/node_modules/js-yaml/lib/schema/default.js +0 -22
- data/packages/webpacker/node_modules/js-yaml/lib/schema/failsafe.js +0 -17
- data/packages/webpacker/node_modules/js-yaml/lib/schema/json.js +0 -19
- data/packages/webpacker/node_modules/js-yaml/lib/schema.js +0 -121
- data/packages/webpacker/node_modules/js-yaml/lib/snippet.js +0 -101
- data/packages/webpacker/node_modules/js-yaml/lib/type/binary.js +0 -125
- data/packages/webpacker/node_modules/js-yaml/lib/type/bool.js +0 -35
- data/packages/webpacker/node_modules/js-yaml/lib/type/float.js +0 -97
- data/packages/webpacker/node_modules/js-yaml/lib/type/int.js +0 -156
- data/packages/webpacker/node_modules/js-yaml/lib/type/map.js +0 -8
- data/packages/webpacker/node_modules/js-yaml/lib/type/merge.js +0 -12
- data/packages/webpacker/node_modules/js-yaml/lib/type/null.js +0 -35
- data/packages/webpacker/node_modules/js-yaml/lib/type/omap.js +0 -44
- data/packages/webpacker/node_modules/js-yaml/lib/type/pairs.js +0 -53
- data/packages/webpacker/node_modules/js-yaml/lib/type/seq.js +0 -8
- data/packages/webpacker/node_modules/js-yaml/lib/type/set.js +0 -29
- data/packages/webpacker/node_modules/js-yaml/lib/type/str.js +0 -8
- data/packages/webpacker/node_modules/js-yaml/lib/type/timestamp.js +0 -88
- data/packages/webpacker/node_modules/js-yaml/lib/type.js +0 -66
- data/packages/webpacker/node_modules/js-yaml/package.json +0 -66
- data/packages/webpacker/node_modules/minimatch/LICENSE +0 -15
- data/packages/webpacker/node_modules/minimatch/README.md +0 -454
- data/packages/webpacker/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts +0 -2
- data/packages/webpacker/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/assert-valid-pattern.js +0 -14
- data/packages/webpacker/node_modules/minimatch/dist/cjs/assert-valid-pattern.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/ast.d.ts +0 -19
- data/packages/webpacker/node_modules/minimatch/dist/cjs/ast.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/ast.js +0 -589
- data/packages/webpacker/node_modules/minimatch/dist/cjs/ast.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/brace-expressions.d.ts +0 -8
- data/packages/webpacker/node_modules/minimatch/dist/cjs/brace-expressions.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/brace-expressions.js +0 -152
- data/packages/webpacker/node_modules/minimatch/dist/cjs/brace-expressions.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/escape.d.ts +0 -12
- data/packages/webpacker/node_modules/minimatch/dist/cjs/escape.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/escape.js +0 -22
- data/packages/webpacker/node_modules/minimatch/dist/cjs/escape.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/index.d.ts +0 -94
- data/packages/webpacker/node_modules/minimatch/dist/cjs/index.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/index.js +0 -1011
- data/packages/webpacker/node_modules/minimatch/dist/cjs/index.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/package.json +0 -3
- data/packages/webpacker/node_modules/minimatch/dist/cjs/unescape.d.ts +0 -17
- data/packages/webpacker/node_modules/minimatch/dist/cjs/unescape.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/cjs/unescape.js +0 -24
- data/packages/webpacker/node_modules/minimatch/dist/cjs/unescape.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts +0 -2
- data/packages/webpacker/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/assert-valid-pattern.js +0 -10
- data/packages/webpacker/node_modules/minimatch/dist/mjs/assert-valid-pattern.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/ast.d.ts +0 -19
- data/packages/webpacker/node_modules/minimatch/dist/mjs/ast.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/ast.js +0 -585
- data/packages/webpacker/node_modules/minimatch/dist/mjs/ast.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/brace-expressions.d.ts +0 -8
- data/packages/webpacker/node_modules/minimatch/dist/mjs/brace-expressions.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/brace-expressions.js +0 -148
- data/packages/webpacker/node_modules/minimatch/dist/mjs/brace-expressions.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/escape.d.ts +0 -12
- data/packages/webpacker/node_modules/minimatch/dist/mjs/escape.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/escape.js +0 -18
- data/packages/webpacker/node_modules/minimatch/dist/mjs/escape.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/index.d.ts +0 -94
- data/packages/webpacker/node_modules/minimatch/dist/mjs/index.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/index.js +0 -995
- data/packages/webpacker/node_modules/minimatch/dist/mjs/index.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/package.json +0 -3
- data/packages/webpacker/node_modules/minimatch/dist/mjs/unescape.d.ts +0 -17
- data/packages/webpacker/node_modules/minimatch/dist/mjs/unescape.d.ts.map +0 -1
- data/packages/webpacker/node_modules/minimatch/dist/mjs/unescape.js +0 -20
- data/packages/webpacker/node_modules/minimatch/dist/mjs/unescape.js.map +0 -1
- data/packages/webpacker/node_modules/minimatch/package.json +0 -86
@@ -0,0 +1,216 @@
|
|
1
|
+
/*
|
2
|
+
* Browser-compatible JavaScript MD5
|
3
|
+
*
|
4
|
+
* Modification of JavaScript MD5
|
5
|
+
* https://github.com/blueimp/JavaScript-MD5
|
6
|
+
*
|
7
|
+
* Copyright 2011, Sebastian Tschan
|
8
|
+
* https://blueimp.net
|
9
|
+
*
|
10
|
+
* Licensed under the MIT license:
|
11
|
+
* https://opensource.org/licenses/MIT
|
12
|
+
*
|
13
|
+
* Based on
|
14
|
+
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
|
15
|
+
* Digest Algorithm, as defined in RFC 1321.
|
16
|
+
* Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
|
17
|
+
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
|
18
|
+
* Distributed under the BSD License
|
19
|
+
* See http://pajhome.org.uk/crypt/md5 for more info.
|
20
|
+
*/
|
21
|
+
|
22
|
+
'use strict';
|
23
|
+
|
24
|
+
function md5(bytes) {
|
25
|
+
if (typeof(bytes) == 'string') {
|
26
|
+
var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
|
27
|
+
bytes = new Array(msg.length);
|
28
|
+
for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);
|
29
|
+
}
|
30
|
+
|
31
|
+
return md5ToHexEncodedArray(
|
32
|
+
wordsToMd5(
|
33
|
+
bytesToWords(bytes)
|
34
|
+
, bytes.length * 8)
|
35
|
+
);
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
/*
|
40
|
+
* Convert an array of little-endian words to an array of bytes
|
41
|
+
*/
|
42
|
+
function md5ToHexEncodedArray(input) {
|
43
|
+
var i;
|
44
|
+
var x;
|
45
|
+
var output = [];
|
46
|
+
var length32 = input.length * 32;
|
47
|
+
var hexTab = '0123456789abcdef';
|
48
|
+
var hex;
|
49
|
+
|
50
|
+
for (i = 0; i < length32; i += 8) {
|
51
|
+
x = (input[i >> 5] >>> (i % 32)) & 0xFF;
|
52
|
+
|
53
|
+
hex = parseInt(hexTab.charAt((x >>> 4) & 0x0F) + hexTab.charAt(x & 0x0F), 16);
|
54
|
+
|
55
|
+
output.push(hex);
|
56
|
+
}
|
57
|
+
return output;
|
58
|
+
}
|
59
|
+
|
60
|
+
/*
|
61
|
+
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
62
|
+
*/
|
63
|
+
function wordsToMd5(x, len) {
|
64
|
+
/* append padding */
|
65
|
+
x[len >> 5] |= 0x80 << (len % 32);
|
66
|
+
x[(((len + 64) >>> 9) << 4) + 14] = len;
|
67
|
+
|
68
|
+
var i;
|
69
|
+
var olda;
|
70
|
+
var oldb;
|
71
|
+
var oldc;
|
72
|
+
var oldd;
|
73
|
+
var a = 1732584193;
|
74
|
+
var b = -271733879;
|
75
|
+
var c = -1732584194;
|
76
|
+
|
77
|
+
var d = 271733878;
|
78
|
+
|
79
|
+
for (i = 0; i < x.length; i += 16) {
|
80
|
+
olda = a;
|
81
|
+
oldb = b;
|
82
|
+
oldc = c;
|
83
|
+
oldd = d;
|
84
|
+
|
85
|
+
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
86
|
+
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
87
|
+
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
88
|
+
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
89
|
+
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
90
|
+
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
91
|
+
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
92
|
+
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
93
|
+
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
94
|
+
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
95
|
+
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
96
|
+
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
97
|
+
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
98
|
+
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
99
|
+
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
100
|
+
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
101
|
+
|
102
|
+
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
103
|
+
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
104
|
+
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
105
|
+
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
106
|
+
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
107
|
+
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
108
|
+
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
109
|
+
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
110
|
+
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
111
|
+
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
112
|
+
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
113
|
+
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
114
|
+
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
115
|
+
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
116
|
+
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
117
|
+
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
118
|
+
|
119
|
+
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
120
|
+
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
121
|
+
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
122
|
+
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
123
|
+
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
124
|
+
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
125
|
+
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
126
|
+
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
127
|
+
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
128
|
+
d = md5hh(d, a, b, c, x[i], 11, -358537222);
|
129
|
+
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
130
|
+
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
131
|
+
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
132
|
+
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
133
|
+
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
134
|
+
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
135
|
+
|
136
|
+
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
137
|
+
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
138
|
+
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
139
|
+
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
140
|
+
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
141
|
+
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
142
|
+
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
143
|
+
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
144
|
+
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
145
|
+
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
146
|
+
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
147
|
+
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
148
|
+
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
149
|
+
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
150
|
+
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
151
|
+
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
152
|
+
|
153
|
+
a = safeAdd(a, olda);
|
154
|
+
b = safeAdd(b, oldb);
|
155
|
+
c = safeAdd(c, oldc);
|
156
|
+
d = safeAdd(d, oldd);
|
157
|
+
}
|
158
|
+
return [a, b, c, d];
|
159
|
+
}
|
160
|
+
|
161
|
+
/*
|
162
|
+
* Convert an array bytes to an array of little-endian words
|
163
|
+
* Characters >255 have their high-byte silently ignored.
|
164
|
+
*/
|
165
|
+
function bytesToWords(input) {
|
166
|
+
var i;
|
167
|
+
var output = [];
|
168
|
+
output[(input.length >> 2) - 1] = undefined;
|
169
|
+
for (i = 0; i < output.length; i += 1) {
|
170
|
+
output[i] = 0;
|
171
|
+
}
|
172
|
+
var length8 = input.length * 8;
|
173
|
+
for (i = 0; i < length8; i += 8) {
|
174
|
+
output[i >> 5] |= (input[(i / 8)] & 0xFF) << (i % 32);
|
175
|
+
}
|
176
|
+
|
177
|
+
return output;
|
178
|
+
}
|
179
|
+
|
180
|
+
/*
|
181
|
+
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
|
182
|
+
* to work around bugs in some JS interpreters.
|
183
|
+
*/
|
184
|
+
function safeAdd(x, y) {
|
185
|
+
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
|
186
|
+
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
187
|
+
return (msw << 16) | (lsw & 0xFFFF);
|
188
|
+
}
|
189
|
+
|
190
|
+
/*
|
191
|
+
* Bitwise rotate a 32-bit number to the left.
|
192
|
+
*/
|
193
|
+
function bitRotateLeft(num, cnt) {
|
194
|
+
return (num << cnt) | (num >>> (32 - cnt));
|
195
|
+
}
|
196
|
+
|
197
|
+
/*
|
198
|
+
* These functions implement the four basic operations the algorithm uses.
|
199
|
+
*/
|
200
|
+
function md5cmn(q, a, b, x, s, t) {
|
201
|
+
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
202
|
+
}
|
203
|
+
function md5ff(a, b, c, d, x, s, t) {
|
204
|
+
return md5cmn((b & c) | ((~b) & d), a, b, x, s, t);
|
205
|
+
}
|
206
|
+
function md5gg(a, b, c, d, x, s, t) {
|
207
|
+
return md5cmn((b & d) | (c & (~d)), a, b, x, s, t);
|
208
|
+
}
|
209
|
+
function md5hh(a, b, c, d, x, s, t) {
|
210
|
+
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
211
|
+
}
|
212
|
+
function md5ii(a, b, c, d, x, s, t) {
|
213
|
+
return md5cmn(c ^ (b | (~d)), a, b, x, s, t);
|
214
|
+
}
|
215
|
+
|
216
|
+
module.exports = md5;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var crypto = require('crypto');
|
4
|
+
|
5
|
+
function md5(bytes) {
|
6
|
+
if (typeof Buffer.from === 'function') {
|
7
|
+
// Modern Buffer API
|
8
|
+
if (Array.isArray(bytes)) {
|
9
|
+
bytes = Buffer.from(bytes);
|
10
|
+
} else if (typeof bytes === 'string') {
|
11
|
+
bytes = Buffer.from(bytes, 'utf8');
|
12
|
+
}
|
13
|
+
} else {
|
14
|
+
// Pre-v4 Buffer API
|
15
|
+
if (Array.isArray(bytes)) {
|
16
|
+
bytes = new Buffer(bytes);
|
17
|
+
} else if (typeof bytes === 'string') {
|
18
|
+
bytes = new Buffer(bytes, 'utf8');
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
return crypto.createHash('md5').update(bytes).digest();
|
23
|
+
}
|
24
|
+
|
25
|
+
module.exports = md5;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
// Unique ID creation requires a high quality random # generator. In the
|
2
|
+
// browser this is a little complicated due to unknown quality of Math.random()
|
3
|
+
// and inconsistent support for the `crypto` API. We do the best we can via
|
4
|
+
// feature-detection
|
5
|
+
|
6
|
+
// getRandomValues needs to be invoked in a context where "this" is a Crypto
|
7
|
+
// implementation. Also, find the complete implementation of crypto on IE11.
|
8
|
+
var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||
|
9
|
+
(typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));
|
10
|
+
|
11
|
+
if (getRandomValues) {
|
12
|
+
// WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto
|
13
|
+
var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef
|
14
|
+
|
15
|
+
module.exports = function whatwgRNG() {
|
16
|
+
getRandomValues(rnds8);
|
17
|
+
return rnds8;
|
18
|
+
};
|
19
|
+
} else {
|
20
|
+
// Math.random()-based (RNG)
|
21
|
+
//
|
22
|
+
// If all else fails, use Math.random(). It's fast, but is of unspecified
|
23
|
+
// quality.
|
24
|
+
var rnds = new Array(16);
|
25
|
+
|
26
|
+
module.exports = function mathRNG() {
|
27
|
+
for (var i = 0, r; i < 16; i++) {
|
28
|
+
if ((i & 0x03) === 0) r = Math.random() * 0x100000000;
|
29
|
+
rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
|
30
|
+
}
|
31
|
+
|
32
|
+
return rnds;
|
33
|
+
};
|
34
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
// Adapted from Chris Veness' SHA1 code at
|
2
|
+
// http://www.movable-type.co.uk/scripts/sha1.html
|
3
|
+
'use strict';
|
4
|
+
|
5
|
+
function f(s, x, y, z) {
|
6
|
+
switch (s) {
|
7
|
+
case 0: return (x & y) ^ (~x & z);
|
8
|
+
case 1: return x ^ y ^ z;
|
9
|
+
case 2: return (x & y) ^ (x & z) ^ (y & z);
|
10
|
+
case 3: return x ^ y ^ z;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
function ROTL(x, n) {
|
15
|
+
return (x << n) | (x>>> (32 - n));
|
16
|
+
}
|
17
|
+
|
18
|
+
function sha1(bytes) {
|
19
|
+
var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
|
20
|
+
var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
|
21
|
+
|
22
|
+
if (typeof(bytes) == 'string') {
|
23
|
+
var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
|
24
|
+
bytes = new Array(msg.length);
|
25
|
+
for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);
|
26
|
+
}
|
27
|
+
|
28
|
+
bytes.push(0x80);
|
29
|
+
|
30
|
+
var l = bytes.length/4 + 2;
|
31
|
+
var N = Math.ceil(l/16);
|
32
|
+
var M = new Array(N);
|
33
|
+
|
34
|
+
for (var i=0; i<N; i++) {
|
35
|
+
M[i] = new Array(16);
|
36
|
+
for (var j=0; j<16; j++) {
|
37
|
+
M[i][j] =
|
38
|
+
bytes[i * 64 + j * 4] << 24 |
|
39
|
+
bytes[i * 64 + j * 4 + 1] << 16 |
|
40
|
+
bytes[i * 64 + j * 4 + 2] << 8 |
|
41
|
+
bytes[i * 64 + j * 4 + 3];
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
M[N - 1][14] = ((bytes.length - 1) * 8) /
|
46
|
+
Math.pow(2, 32); M[N - 1][14] = Math.floor(M[N - 1][14]);
|
47
|
+
M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;
|
48
|
+
|
49
|
+
for (var i=0; i<N; i++) {
|
50
|
+
var W = new Array(80);
|
51
|
+
|
52
|
+
for (var t=0; t<16; t++) W[t] = M[i][t];
|
53
|
+
for (var t=16; t<80; t++) {
|
54
|
+
W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
|
55
|
+
}
|
56
|
+
|
57
|
+
var a = H[0];
|
58
|
+
var b = H[1];
|
59
|
+
var c = H[2];
|
60
|
+
var d = H[3];
|
61
|
+
var e = H[4];
|
62
|
+
|
63
|
+
for (var t=0; t<80; t++) {
|
64
|
+
var s = Math.floor(t/20);
|
65
|
+
var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
|
66
|
+
e = d;
|
67
|
+
d = c;
|
68
|
+
c = ROTL(b, 30) >>> 0;
|
69
|
+
b = a;
|
70
|
+
a = T;
|
71
|
+
}
|
72
|
+
|
73
|
+
H[0] = (H[0] + a) >>> 0;
|
74
|
+
H[1] = (H[1] + b) >>> 0;
|
75
|
+
H[2] = (H[2] + c) >>> 0;
|
76
|
+
H[3] = (H[3] + d) >>> 0;
|
77
|
+
H[4] = (H[4] + e) >>> 0;
|
78
|
+
}
|
79
|
+
|
80
|
+
return [
|
81
|
+
H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff,
|
82
|
+
H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff,
|
83
|
+
H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff,
|
84
|
+
H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff,
|
85
|
+
H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff
|
86
|
+
];
|
87
|
+
}
|
88
|
+
|
89
|
+
module.exports = sha1;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var crypto = require('crypto');
|
4
|
+
|
5
|
+
function sha1(bytes) {
|
6
|
+
if (typeof Buffer.from === 'function') {
|
7
|
+
// Modern Buffer API
|
8
|
+
if (Array.isArray(bytes)) {
|
9
|
+
bytes = Buffer.from(bytes);
|
10
|
+
} else if (typeof bytes === 'string') {
|
11
|
+
bytes = Buffer.from(bytes, 'utf8');
|
12
|
+
}
|
13
|
+
} else {
|
14
|
+
// Pre-v4 Buffer API
|
15
|
+
if (Array.isArray(bytes)) {
|
16
|
+
bytes = new Buffer(bytes);
|
17
|
+
} else if (typeof bytes === 'string') {
|
18
|
+
bytes = new Buffer(bytes, 'utf8');
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
return crypto.createHash('sha1').update(bytes).digest();
|
23
|
+
}
|
24
|
+
|
25
|
+
module.exports = sha1;
|
@@ -0,0 +1,57 @@
|
|
1
|
+
var bytesToUuid = require('./bytesToUuid');
|
2
|
+
|
3
|
+
function uuidToBytes(uuid) {
|
4
|
+
// Note: We assume we're being passed a valid uuid string
|
5
|
+
var bytes = [];
|
6
|
+
uuid.replace(/[a-fA-F0-9]{2}/g, function(hex) {
|
7
|
+
bytes.push(parseInt(hex, 16));
|
8
|
+
});
|
9
|
+
|
10
|
+
return bytes;
|
11
|
+
}
|
12
|
+
|
13
|
+
function stringToBytes(str) {
|
14
|
+
str = unescape(encodeURIComponent(str)); // UTF8 escape
|
15
|
+
var bytes = new Array(str.length);
|
16
|
+
for (var i = 0; i < str.length; i++) {
|
17
|
+
bytes[i] = str.charCodeAt(i);
|
18
|
+
}
|
19
|
+
return bytes;
|
20
|
+
}
|
21
|
+
|
22
|
+
module.exports = function(name, version, hashfunc) {
|
23
|
+
var generateUUID = function(value, namespace, buf, offset) {
|
24
|
+
var off = buf && offset || 0;
|
25
|
+
|
26
|
+
if (typeof(value) == 'string') value = stringToBytes(value);
|
27
|
+
if (typeof(namespace) == 'string') namespace = uuidToBytes(namespace);
|
28
|
+
|
29
|
+
if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');
|
30
|
+
if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values');
|
31
|
+
|
32
|
+
// Per 4.3
|
33
|
+
var bytes = hashfunc(namespace.concat(value));
|
34
|
+
bytes[6] = (bytes[6] & 0x0f) | version;
|
35
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
36
|
+
|
37
|
+
if (buf) {
|
38
|
+
for (var idx = 0; idx < 16; ++idx) {
|
39
|
+
buf[off+idx] = bytes[idx];
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
return buf || bytesToUuid(bytes);
|
44
|
+
};
|
45
|
+
|
46
|
+
// Function#name is not settable on some platforms (#270)
|
47
|
+
try {
|
48
|
+
generateUUID.name = name;
|
49
|
+
} catch (err) {
|
50
|
+
}
|
51
|
+
|
52
|
+
// Pre-defined namespaces, per Appendix C
|
53
|
+
generateUUID.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
|
54
|
+
generateUUID.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
|
55
|
+
|
56
|
+
return generateUUID;
|
57
|
+
};
|
@@ -0,0 +1,49 @@
|
|
1
|
+
{
|
2
|
+
"name": "uuid",
|
3
|
+
"version": "3.4.0",
|
4
|
+
"description": "RFC4122 (v1, v4, and v5) UUIDs",
|
5
|
+
"commitlint": {
|
6
|
+
"extends": [
|
7
|
+
"@commitlint/config-conventional"
|
8
|
+
]
|
9
|
+
},
|
10
|
+
"keywords": [
|
11
|
+
"uuid",
|
12
|
+
"guid",
|
13
|
+
"rfc4122"
|
14
|
+
],
|
15
|
+
"license": "MIT",
|
16
|
+
"bin": {
|
17
|
+
"uuid": "./bin/uuid"
|
18
|
+
},
|
19
|
+
"devDependencies": {
|
20
|
+
"@commitlint/cli": "~8.2.0",
|
21
|
+
"@commitlint/config-conventional": "~8.2.0",
|
22
|
+
"eslint": "~6.4.0",
|
23
|
+
"husky": "~3.0.5",
|
24
|
+
"mocha": "6.2.0",
|
25
|
+
"runmd": "1.2.1",
|
26
|
+
"standard-version": "7.0.0"
|
27
|
+
},
|
28
|
+
"scripts": {
|
29
|
+
"lint": "eslint .",
|
30
|
+
"test": "npm run lint && mocha test/test.js",
|
31
|
+
"md": "runmd --watch --output=README.md README_js.md",
|
32
|
+
"release": "standard-version",
|
33
|
+
"prepare": "runmd --output=README.md README_js.md"
|
34
|
+
},
|
35
|
+
"browser": {
|
36
|
+
"./lib/rng.js": "./lib/rng-browser.js",
|
37
|
+
"./lib/sha1.js": "./lib/sha1-browser.js",
|
38
|
+
"./lib/md5.js": "./lib/md5-browser.js"
|
39
|
+
},
|
40
|
+
"repository": {
|
41
|
+
"type": "git",
|
42
|
+
"url": "https://github.com/uuidjs/uuid.git"
|
43
|
+
},
|
44
|
+
"husky": {
|
45
|
+
"hooks": {
|
46
|
+
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
@@ -0,0 +1,109 @@
|
|
1
|
+
var rng = require('./lib/rng');
|
2
|
+
var bytesToUuid = require('./lib/bytesToUuid');
|
3
|
+
|
4
|
+
// **`v1()` - Generate time-based UUID**
|
5
|
+
//
|
6
|
+
// Inspired by https://github.com/LiosK/UUID.js
|
7
|
+
// and http://docs.python.org/library/uuid.html
|
8
|
+
|
9
|
+
var _nodeId;
|
10
|
+
var _clockseq;
|
11
|
+
|
12
|
+
// Previous uuid creation time
|
13
|
+
var _lastMSecs = 0;
|
14
|
+
var _lastNSecs = 0;
|
15
|
+
|
16
|
+
// See https://github.com/uuidjs/uuid for API details
|
17
|
+
function v1(options, buf, offset) {
|
18
|
+
var i = buf && offset || 0;
|
19
|
+
var b = buf || [];
|
20
|
+
|
21
|
+
options = options || {};
|
22
|
+
var node = options.node || _nodeId;
|
23
|
+
var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;
|
24
|
+
|
25
|
+
// node and clockseq need to be initialized to random values if they're not
|
26
|
+
// specified. We do this lazily to minimize issues related to insufficient
|
27
|
+
// system entropy. See #189
|
28
|
+
if (node == null || clockseq == null) {
|
29
|
+
var seedBytes = rng();
|
30
|
+
if (node == null) {
|
31
|
+
// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
|
32
|
+
node = _nodeId = [
|
33
|
+
seedBytes[0] | 0x01,
|
34
|
+
seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]
|
35
|
+
];
|
36
|
+
}
|
37
|
+
if (clockseq == null) {
|
38
|
+
// Per 4.2.2, randomize (14 bit) clockseq
|
39
|
+
clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
// UUID timestamps are 100 nano-second units since the Gregorian epoch,
|
44
|
+
// (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
|
45
|
+
// time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
|
46
|
+
// (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
|
47
|
+
var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();
|
48
|
+
|
49
|
+
// Per 4.2.1.2, use count of uuid's generated during the current clock
|
50
|
+
// cycle to simulate higher resolution clock
|
51
|
+
var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;
|
52
|
+
|
53
|
+
// Time since last uuid creation (in msecs)
|
54
|
+
var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
|
55
|
+
|
56
|
+
// Per 4.2.1.2, Bump clockseq on clock regression
|
57
|
+
if (dt < 0 && options.clockseq === undefined) {
|
58
|
+
clockseq = clockseq + 1 & 0x3fff;
|
59
|
+
}
|
60
|
+
|
61
|
+
// Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
|
62
|
+
// time interval
|
63
|
+
if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
|
64
|
+
nsecs = 0;
|
65
|
+
}
|
66
|
+
|
67
|
+
// Per 4.2.1.2 Throw error if too many uuids are requested
|
68
|
+
if (nsecs >= 10000) {
|
69
|
+
throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
|
70
|
+
}
|
71
|
+
|
72
|
+
_lastMSecs = msecs;
|
73
|
+
_lastNSecs = nsecs;
|
74
|
+
_clockseq = clockseq;
|
75
|
+
|
76
|
+
// Per 4.1.4 - Convert from unix epoch to Gregorian epoch
|
77
|
+
msecs += 12219292800000;
|
78
|
+
|
79
|
+
// `time_low`
|
80
|
+
var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
|
81
|
+
b[i++] = tl >>> 24 & 0xff;
|
82
|
+
b[i++] = tl >>> 16 & 0xff;
|
83
|
+
b[i++] = tl >>> 8 & 0xff;
|
84
|
+
b[i++] = tl & 0xff;
|
85
|
+
|
86
|
+
// `time_mid`
|
87
|
+
var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
|
88
|
+
b[i++] = tmh >>> 8 & 0xff;
|
89
|
+
b[i++] = tmh & 0xff;
|
90
|
+
|
91
|
+
// `time_high_and_version`
|
92
|
+
b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
|
93
|
+
b[i++] = tmh >>> 16 & 0xff;
|
94
|
+
|
95
|
+
// `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
|
96
|
+
b[i++] = clockseq >>> 8 | 0x80;
|
97
|
+
|
98
|
+
// `clock_seq_low`
|
99
|
+
b[i++] = clockseq & 0xff;
|
100
|
+
|
101
|
+
// `node`
|
102
|
+
for (var n = 0; n < 6; ++n) {
|
103
|
+
b[i + n] = node[n];
|
104
|
+
}
|
105
|
+
|
106
|
+
return buf ? buf : bytesToUuid(b);
|
107
|
+
}
|
108
|
+
|
109
|
+
module.exports = v1;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
var rng = require('./lib/rng');
|
2
|
+
var bytesToUuid = require('./lib/bytesToUuid');
|
3
|
+
|
4
|
+
function v4(options, buf, offset) {
|
5
|
+
var i = buf && offset || 0;
|
6
|
+
|
7
|
+
if (typeof(options) == 'string') {
|
8
|
+
buf = options === 'binary' ? new Array(16) : null;
|
9
|
+
options = null;
|
10
|
+
}
|
11
|
+
options = options || {};
|
12
|
+
|
13
|
+
var rnds = options.random || (options.rng || rng)();
|
14
|
+
|
15
|
+
// Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
16
|
+
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
17
|
+
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
18
|
+
|
19
|
+
// Copy bytes to buffer, if provided
|
20
|
+
if (buf) {
|
21
|
+
for (var ii = 0; ii < 16; ++ii) {
|
22
|
+
buf[i + ii] = rnds[ii];
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
return buf || bytesToUuid(rnds);
|
27
|
+
}
|
28
|
+
|
29
|
+
module.exports = v4;
|