@authsignal/browser 0.0.17 → 0.0.19

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.
@@ -17,12 +17,6 @@ function rng() {
17
17
  return getRandomValues(rnds8);
18
18
  }
19
19
 
20
- var REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
21
-
22
- function validate(uuid) {
23
- return typeof uuid === 'string' && REGEX.test(uuid);
24
- }
25
-
26
20
  /**
27
21
  * Convert array of 16 byte values to UUID string format of the form:
28
22
  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
@@ -40,318 +34,6 @@ function unsafeStringify(arr, offset = 0) {
40
34
  return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
41
35
  }
42
36
 
43
- function parse(uuid) {
44
- if (!validate(uuid)) {
45
- throw TypeError('Invalid UUID');
46
- }
47
-
48
- let v;
49
- const arr = new Uint8Array(16); // Parse ########-....-....-....-............
50
-
51
- arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
52
- arr[1] = v >>> 16 & 0xff;
53
- arr[2] = v >>> 8 & 0xff;
54
- arr[3] = v & 0xff; // Parse ........-####-....-....-............
55
-
56
- arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
57
- arr[5] = v & 0xff; // Parse ........-....-####-....-............
58
-
59
- arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
60
- arr[7] = v & 0xff; // Parse ........-....-....-####-............
61
-
62
- arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
63
- arr[9] = v & 0xff; // Parse ........-....-....-....-############
64
- // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
65
-
66
- arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
67
- arr[11] = v / 0x100000000 & 0xff;
68
- arr[12] = v >>> 24 & 0xff;
69
- arr[13] = v >>> 16 & 0xff;
70
- arr[14] = v >>> 8 & 0xff;
71
- arr[15] = v & 0xff;
72
- return arr;
73
- }
74
-
75
- function stringToBytes(str) {
76
- str = unescape(encodeURIComponent(str)); // UTF8 escape
77
-
78
- const bytes = [];
79
-
80
- for (let i = 0; i < str.length; ++i) {
81
- bytes.push(str.charCodeAt(i));
82
- }
83
-
84
- return bytes;
85
- }
86
-
87
- const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
88
- const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
89
- function v35(name, version, hashfunc) {
90
- function generateUUID(value, namespace, buf, offset) {
91
- var _namespace;
92
-
93
- if (typeof value === 'string') {
94
- value = stringToBytes(value);
95
- }
96
-
97
- if (typeof namespace === 'string') {
98
- namespace = parse(namespace);
99
- }
100
-
101
- if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {
102
- throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
103
- } // Compute hash of namespace and value, Per 4.3
104
- // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
105
- // hashfunc([...namespace, ... value])`
106
-
107
-
108
- let bytes = new Uint8Array(16 + value.length);
109
- bytes.set(namespace);
110
- bytes.set(value, namespace.length);
111
- bytes = hashfunc(bytes);
112
- bytes[6] = bytes[6] & 0x0f | version;
113
- bytes[8] = bytes[8] & 0x3f | 0x80;
114
-
115
- if (buf) {
116
- offset = offset || 0;
117
-
118
- for (let i = 0; i < 16; ++i) {
119
- buf[offset + i] = bytes[i];
120
- }
121
-
122
- return buf;
123
- }
124
-
125
- return unsafeStringify(bytes);
126
- } // Function#name is not settable on some platforms (#270)
127
-
128
-
129
- try {
130
- generateUUID.name = name; // eslint-disable-next-line no-empty
131
- } catch (err) {} // For CommonJS default export support
132
-
133
-
134
- generateUUID.DNS = DNS;
135
- generateUUID.URL = URL;
136
- return generateUUID;
137
- }
138
-
139
- /*
140
- * Browser-compatible JavaScript MD5
141
- *
142
- * Modification of JavaScript MD5
143
- * https://github.com/blueimp/JavaScript-MD5
144
- *
145
- * Copyright 2011, Sebastian Tschan
146
- * https://blueimp.net
147
- *
148
- * Licensed under the MIT license:
149
- * https://opensource.org/licenses/MIT
150
- *
151
- * Based on
152
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
153
- * Digest Algorithm, as defined in RFC 1321.
154
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
155
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
156
- * Distributed under the BSD License
157
- * See http://pajhome.org.uk/crypt/md5 for more info.
158
- */
159
- function md5(bytes) {
160
- if (typeof bytes === 'string') {
161
- const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
162
-
163
- bytes = new Uint8Array(msg.length);
164
-
165
- for (let i = 0; i < msg.length; ++i) {
166
- bytes[i] = msg.charCodeAt(i);
167
- }
168
- }
169
-
170
- return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));
171
- }
172
- /*
173
- * Convert an array of little-endian words to an array of bytes
174
- */
175
-
176
-
177
- function md5ToHexEncodedArray(input) {
178
- const output = [];
179
- const length32 = input.length * 32;
180
- const hexTab = '0123456789abcdef';
181
-
182
- for (let i = 0; i < length32; i += 8) {
183
- const x = input[i >> 5] >>> i % 32 & 0xff;
184
- const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
185
- output.push(hex);
186
- }
187
-
188
- return output;
189
- }
190
- /**
191
- * Calculate output length with padding and bit length
192
- */
193
-
194
-
195
- function getOutputLength(inputLength8) {
196
- return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;
197
- }
198
- /*
199
- * Calculate the MD5 of an array of little-endian words, and a bit length.
200
- */
201
-
202
-
203
- function wordsToMd5(x, len) {
204
- /* append padding */
205
- x[len >> 5] |= 0x80 << len % 32;
206
- x[getOutputLength(len) - 1] = len;
207
- let a = 1732584193;
208
- let b = -271733879;
209
- let c = -1732584194;
210
- let d = 271733878;
211
-
212
- for (let i = 0; i < x.length; i += 16) {
213
- const olda = a;
214
- const oldb = b;
215
- const oldc = c;
216
- const oldd = d;
217
- a = md5ff(a, b, c, d, x[i], 7, -680876936);
218
- d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
219
- c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
220
- b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
221
- a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
222
- d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
223
- c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
224
- b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
225
- a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
226
- d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
227
- c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
228
- b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
229
- a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
230
- d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
231
- c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
232
- b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
233
- a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
234
- d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
235
- c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
236
- b = md5gg(b, c, d, a, x[i], 20, -373897302);
237
- a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
238
- d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
239
- c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
240
- b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
241
- a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
242
- d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
243
- c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
244
- b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
245
- a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
246
- d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
247
- c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
248
- b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
249
- a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
250
- d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
251
- c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
252
- b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
253
- a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
254
- d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
255
- c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
256
- b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
257
- a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
258
- d = md5hh(d, a, b, c, x[i], 11, -358537222);
259
- c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
260
- b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
261
- a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
262
- d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
263
- c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
264
- b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
265
- a = md5ii(a, b, c, d, x[i], 6, -198630844);
266
- d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
267
- c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
268
- b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
269
- a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
270
- d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
271
- c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
272
- b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
273
- a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
274
- d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
275
- c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
276
- b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
277
- a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
278
- d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
279
- c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
280
- b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
281
- a = safeAdd(a, olda);
282
- b = safeAdd(b, oldb);
283
- c = safeAdd(c, oldc);
284
- d = safeAdd(d, oldd);
285
- }
286
-
287
- return [a, b, c, d];
288
- }
289
- /*
290
- * Convert an array bytes to an array of little-endian words
291
- * Characters >255 have their high-byte silently ignored.
292
- */
293
-
294
-
295
- function bytesToWords(input) {
296
- if (input.length === 0) {
297
- return [];
298
- }
299
-
300
- const length8 = input.length * 8;
301
- const output = new Uint32Array(getOutputLength(length8));
302
-
303
- for (let i = 0; i < length8; i += 8) {
304
- output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
305
- }
306
-
307
- return output;
308
- }
309
- /*
310
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
311
- * to work around bugs in some JS interpreters.
312
- */
313
-
314
-
315
- function safeAdd(x, y) {
316
- const lsw = (x & 0xffff) + (y & 0xffff);
317
- const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
318
- return msw << 16 | lsw & 0xffff;
319
- }
320
- /*
321
- * Bitwise rotate a 32-bit number to the left.
322
- */
323
-
324
-
325
- function bitRotateLeft(num, cnt) {
326
- return num << cnt | num >>> 32 - cnt;
327
- }
328
- /*
329
- * These functions implement the four basic operations the algorithm uses.
330
- */
331
-
332
-
333
- function md5cmn(q, a, b, x, s, t) {
334
- return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
335
- }
336
-
337
- function md5ff(a, b, c, d, x, s, t) {
338
- return md5cmn(b & c | ~b & d, a, b, x, s, t);
339
- }
340
-
341
- function md5gg(a, b, c, d, x, s, t) {
342
- return md5cmn(b & d | c & ~d, a, b, x, s, t);
343
- }
344
-
345
- function md5hh(a, b, c, d, x, s, t) {
346
- return md5cmn(b ^ c ^ d, a, b, x, s, t);
347
- }
348
-
349
- function md5ii(a, b, c, d, x, s, t) {
350
- return md5cmn(c ^ (b | ~d), a, b, x, s, t);
351
- }
352
-
353
- v35('v3', 0x30, md5);
354
-
355
37
  const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
356
38
  var native = {
357
39
  randomUUID
@@ -381,103 +63,6 @@ function v4(options, buf, offset) {
381
63
  return unsafeStringify(rnds);
382
64
  }
383
65
 
384
- // Adapted from Chris Veness' SHA1 code at
385
- // http://www.movable-type.co.uk/scripts/sha1.html
386
- function f(s, x, y, z) {
387
- switch (s) {
388
- case 0:
389
- return x & y ^ ~x & z;
390
-
391
- case 1:
392
- return x ^ y ^ z;
393
-
394
- case 2:
395
- return x & y ^ x & z ^ y & z;
396
-
397
- case 3:
398
- return x ^ y ^ z;
399
- }
400
- }
401
-
402
- function ROTL(x, n) {
403
- return x << n | x >>> 32 - n;
404
- }
405
-
406
- function sha1(bytes) {
407
- const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
408
- const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
409
-
410
- if (typeof bytes === 'string') {
411
- const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
412
-
413
- bytes = [];
414
-
415
- for (let i = 0; i < msg.length; ++i) {
416
- bytes.push(msg.charCodeAt(i));
417
- }
418
- } else if (!Array.isArray(bytes)) {
419
- // Convert Array-like to Array
420
- bytes = Array.prototype.slice.call(bytes);
421
- }
422
-
423
- bytes.push(0x80);
424
- const l = bytes.length / 4 + 2;
425
- const N = Math.ceil(l / 16);
426
- const M = new Array(N);
427
-
428
- for (let i = 0; i < N; ++i) {
429
- const arr = new Uint32Array(16);
430
-
431
- for (let j = 0; j < 16; ++j) {
432
- arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];
433
- }
434
-
435
- M[i] = arr;
436
- }
437
-
438
- M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
439
- M[N - 1][14] = Math.floor(M[N - 1][14]);
440
- M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
441
-
442
- for (let i = 0; i < N; ++i) {
443
- const W = new Uint32Array(80);
444
-
445
- for (let t = 0; t < 16; ++t) {
446
- W[t] = M[i][t];
447
- }
448
-
449
- for (let t = 16; t < 80; ++t) {
450
- W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
451
- }
452
-
453
- let a = H[0];
454
- let b = H[1];
455
- let c = H[2];
456
- let d = H[3];
457
- let e = H[4];
458
-
459
- for (let t = 0; t < 80; ++t) {
460
- const s = Math.floor(t / 20);
461
- const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
462
- e = d;
463
- d = c;
464
- c = ROTL(b, 30) >>> 0;
465
- b = a;
466
- a = T;
467
- }
468
-
469
- H[0] = H[0] + a >>> 0;
470
- H[1] = H[1] + b >>> 0;
471
- H[2] = H[2] + c >>> 0;
472
- H[3] = H[3] + d >>> 0;
473
- H[4] = H[4] + e >>> 0;
474
- }
475
-
476
- return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];
477
- }
478
-
479
- v35('v5', 0x50, sha1);
480
-
481
66
  var setCookie = function (_a) {
482
67
  var name = _a.name, value = _a.value, expire = _a.expire, domain = _a.domain, secure = _a.secure;
483
68
  var expireString = expire === Infinity ? " expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + expire;
@@ -954,7 +539,7 @@ var PopupHandler = /** @class */ (function () {
954
539
  // Create CSS for dialog
955
540
  var style = document.createElement("style");
956
541
  style.setAttribute("id", STYLE_ID);
957
- style.textContent = "\n #".concat(CONTAINER_ID, ",\n #").concat(OVERLAY_ID, " {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n #").concat(CONTAINER_ID, " {\n z-index: 2147483647;\n display: flex;\n }\n\n #").concat(CONTAINER_ID, "[aria-hidden='true'] {\n display: none;\n }\n\n #").concat(OVERLAY_ID, " {\n background-color: rgba(43, 46, 56, 0.9);\n }\n\n #").concat(CONTENT_ID, " {\n margin: auto;\n z-index: 2147483647;\n position: relative;\n background-color: white;\n height: ").concat(popupHeight, ";\n width: ").concat(popupWidth, ";\n border-radius: 8px;\n }\n\n #").concat(CONTENT_ID, " iframe {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n }\n ");
542
+ style.textContent = "\n #".concat(CONTAINER_ID, ",\n #").concat(OVERLAY_ID, " {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n #").concat(CONTAINER_ID, " {\n z-index: 2147483647;\n display: flex;\n }\n\n #").concat(CONTAINER_ID, "[aria-hidden='true'] {\n display: none;\n }\n\n #").concat(OVERLAY_ID, " {\n background-color: rgba(43, 46, 56, 0.9);\n }\n\n #").concat(CONTENT_ID, " {\n margin: auto;\n z-index: 2147483647;\n position: relative;\n background-color: transparent;\n height: ").concat(popupHeight, ";\n width: ").concat(popupWidth, ";\n border-radius: 8px;\n }\n\n #").concat(CONTENT_ID, " iframe {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n }\n ");
958
543
  // Attach the created elements
959
544
  document.head.insertAdjacentElement("beforeend", style);
960
545
  container.appendChild(overlay);
@@ -983,7 +568,7 @@ var PopupHandler = /** @class */ (function () {
983
568
  iframe.setAttribute("title", "Authsignal multi-factor authentication");
984
569
  iframe.setAttribute("src", url);
985
570
  iframe.setAttribute("frameborder", "0");
986
- iframe.setAttribute("allow", "publickey-credentials-get *");
571
+ iframe.setAttribute("allow", "publickey-credentials-get *; clipboard-write");
987
572
  var dialogContent = document.querySelector("#".concat(CONTENT_ID));
988
573
  if (dialogContent) {
989
574
  dialogContent.appendChild(iframe);
@@ -1067,4 +652,3 @@ var Authsignal = /** @class */ (function () {
1067
652
  }());
1068
653
 
1069
654
  export { Authsignal, AuthsignalWindowMessage };
1070
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@authsignal/browser",
3
3
  "type": "module",
4
- "version": "0.0.17",
5
- "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
4
+ "version": "0.0.19",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
8
8
  "keywords": [
9
9
  "authsignal",
@@ -18,7 +18,7 @@
18
18
  "typecheck": "tsc",
19
19
  "clean": "rm -rf ./dist",
20
20
  "lint": "eslint \"{cli,config,src,test}/**/*.ts\"",
21
- "build": "rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript"
21
+ "build": "rollup -c rollup.config.js"
22
22
  },
23
23
  "dependencies": {
24
24
  "@fingerprintjs/fingerprintjs": "^3.3.6",
@@ -26,7 +26,6 @@
26
26
  "uuid": "^9.0.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@rollup/plugin-commonjs": "^22.0.2",
30
29
  "@rollup/plugin-node-resolve": "^14.1.0",
31
30
  "@rollup/plugin-typescript": "^8.5.0",
32
31
  "@types/uuid": "^8.3.4",
@@ -45,8 +44,8 @@
45
44
  ],
46
45
  "exports": {
47
46
  ".": {
48
- "import": "./dist/esm/index.js",
49
- "require": "./dist/cjs/index.js",
47
+ "require": "./dist/index.js",
48
+ "import": "./dist/index.mjs",
50
49
  "types": "./dist/index.d.ts"
51
50
  }
52
51
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/parse.js","../../node_modules/uuid/dist/esm-browser/v35.js","../../node_modules/uuid/dist/esm-browser/md5.js","../../node_modules/uuid/dist/esm-browser/v3.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../node_modules/uuid/dist/esm-browser/sha1.js","../../node_modules/uuid/dist/esm-browser/v5.js","../../../src/helpers.ts","../../../src/types.ts","../../node_modules/a11y-dialog/dist/a11y-dialog.esm.js","../../../src/popup-handler.ts","../../../src/authsignal.ts"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;",null,null,"var focusableSelectors = [\n 'a[href]:not([tabindex^=\"-\"])',\n 'area[href]:not([tabindex^=\"-\"])',\n 'input:not([type=\"hidden\"]):not([type=\"radio\"]):not([disabled]):not([tabindex^=\"-\"])',\n 'input[type=\"radio\"]:not([disabled]):not([tabindex^=\"-\"])',\n 'select:not([disabled]):not([tabindex^=\"-\"])',\n 'textarea:not([disabled]):not([tabindex^=\"-\"])',\n 'button:not([disabled]):not([tabindex^=\"-\"])',\n 'iframe:not([tabindex^=\"-\"])',\n 'audio[controls]:not([tabindex^=\"-\"])',\n 'video[controls]:not([tabindex^=\"-\"])',\n '[contenteditable]:not([tabindex^=\"-\"])',\n '[tabindex]:not([tabindex^=\"-\"])',\n];\n\nvar TAB_KEY = 'Tab';\nvar ESCAPE_KEY = 'Escape';\n\n/**\n * Define the constructor to instantiate a dialog\n *\n * @constructor\n * @param {Element} element\n */\nfunction A11yDialog(element) {\n // Prebind the functions that will be bound in addEventListener and\n // removeEventListener to avoid losing references\n this._show = this.show.bind(this);\n this._hide = this.hide.bind(this);\n this._maintainFocus = this._maintainFocus.bind(this);\n this._bindKeypress = this._bindKeypress.bind(this);\n\n this.$el = element;\n this.shown = false;\n this._id = this.$el.getAttribute('data-a11y-dialog') || this.$el.id;\n this._previouslyFocused = null;\n this._listeners = {};\n\n // Initialise everything needed for the dialog to work properly\n this.create();\n}\n\n/**\n * Set up everything necessary for the dialog to be functioning\n *\n * @param {(NodeList | Element | string)} targets\n * @return {this}\n */\nA11yDialog.prototype.create = function () {\n this.$el.setAttribute('aria-hidden', true);\n this.$el.setAttribute('aria-modal', true);\n this.$el.setAttribute('tabindex', -1);\n\n if (!this.$el.hasAttribute('role')) {\n this.$el.setAttribute('role', 'dialog');\n }\n\n // Keep a collection of dialog openers, each of which will be bound a click\n // event listener to open the dialog\n this._openers = $$('[data-a11y-dialog-show=\"' + this._id + '\"]');\n this._openers.forEach(\n function (opener) {\n opener.addEventListener('click', this._show);\n }.bind(this)\n );\n\n // Keep a collection of dialog closers, each of which will be bound a click\n // event listener to close the dialog\n const $el = this.$el;\n\n this._closers = $$('[data-a11y-dialog-hide]', this.$el)\n // This filter is necessary in case there are nested dialogs, so that\n // only closers from the current dialog are retrieved and effective\n .filter(function (closer) {\n // Testing for `[aria-modal=\"true\"]` is not enough since this attribute\n // and the collect of closers is done at instantation time, when nested\n // dialogs might not have yet been instantiated. Note that if the dialogs\n // are manually instantiated, this could still fail because none of these\n // selectors would match; this would cause closers to close all parent\n // dialogs instead of just the current one\n return closer.closest('[aria-modal=\"true\"], [data-a11y-dialog]') === $el\n })\n .concat($$('[data-a11y-dialog-hide=\"' + this._id + '\"]'));\n\n this._closers.forEach(\n function (closer) {\n closer.addEventListener('click', this._hide);\n }.bind(this)\n );\n\n // Execute all callbacks registered for the `create` event\n this._fire('create');\n\n return this\n};\n\n/**\n * Show the dialog element, disable all the targets (siblings), trap the\n * current focus within it, listen for some specific key presses and fire all\n * registered callbacks for `show` event\n *\n * @param {CustomEvent} event\n * @return {this}\n */\nA11yDialog.prototype.show = function (event) {\n // If the dialog is already open, abort\n if (this.shown) {\n return this\n }\n\n // Keep a reference to the currently focused element to be able to restore\n // it later\n this._previouslyFocused = document.activeElement;\n this.$el.removeAttribute('aria-hidden');\n this.shown = true;\n\n // Set the focus to the dialog element\n moveFocusToDialog(this.$el);\n\n // Bind a focus event listener to the body element to make sure the focus\n // stays trapped inside the dialog while open, and start listening for some\n // specific key presses (TAB and ESC)\n document.body.addEventListener('focus', this._maintainFocus, true);\n document.addEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `show` event\n this._fire('show', event);\n\n return this\n};\n\n/**\n * Hide the dialog element, enable all the targets (siblings), restore the\n * focus to the previously active element, stop listening for some specific\n * key presses and fire all registered callbacks for `hide` event\n *\n * @param {CustomEvent} event\n * @return {this}\n */\nA11yDialog.prototype.hide = function (event) {\n // If the dialog is already closed, abort\n if (!this.shown) {\n return this\n }\n\n this.shown = false;\n this.$el.setAttribute('aria-hidden', 'true');\n\n // If there was a focused element before the dialog was opened (and it has a\n // `focus` method), restore the focus back to it\n // See: https://github.com/KittyGiraudel/a11y-dialog/issues/108\n if (this._previouslyFocused && this._previouslyFocused.focus) {\n this._previouslyFocused.focus();\n }\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n document.body.removeEventListener('focus', this._maintainFocus, true);\n document.removeEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `hide` event\n this._fire('hide', event);\n\n return this\n};\n\n/**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n *\n * @return {this}\n */\nA11yDialog.prototype.destroy = function () {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n\n // Remove the click event listener from all dialog openers\n this._openers.forEach(\n function (opener) {\n opener.removeEventListener('click', this._show);\n }.bind(this)\n );\n\n // Remove the click event listener from all dialog closers\n this._closers.forEach(\n function (closer) {\n closer.removeEventListener('click', this._hide);\n }.bind(this)\n );\n\n // Execute all callbacks registered for the `destroy` event\n this._fire('destroy');\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n return this\n};\n\n/**\n * Register a new callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\nA11yDialog.prototype.on = function (type, handler) {\n if (typeof this._listeners[type] === 'undefined') {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(handler);\n\n return this\n};\n\n/**\n * Unregister an existing callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\nA11yDialog.prototype.off = function (type, handler) {\n var index = (this._listeners[type] || []).indexOf(handler);\n\n if (index > -1) {\n this._listeners[type].splice(index, 1);\n }\n\n return this\n};\n\n/**\n * Iterate over all registered handlers for given type and call them all with\n * the dialog element as first argument, event as second argument (if any). Also\n * dispatch a custom event on the DOM element itself to make it possible to\n * react to the lifecycle of auto-instantiated dialogs.\n *\n * @access private\n * @param {string} type\n * @param {CustomEvent} event\n */\nA11yDialog.prototype._fire = function (type, event) {\n var listeners = this._listeners[type] || [];\n var domEvent = new CustomEvent(type, { detail: event });\n\n this.$el.dispatchEvent(domEvent);\n\n listeners.forEach(\n function (listener) {\n listener(this.$el, event);\n }.bind(this)\n );\n};\n\n/**\n * Private event handler used when listening to some specific key presses\n * (namely ESCAPE and TAB)\n *\n * @access private\n * @param {Event} event\n */\nA11yDialog.prototype._bindKeypress = function (event) {\n // This is an escape hatch in case there are nested dialogs, so the keypresses\n // are only reacted to for the most recent one\n const focused = document.activeElement;\n if (focused && focused.closest('[aria-modal=\"true\"]') !== this.$el) return\n\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog, unless its role\n // is 'alertdialog', which should be modal\n if (\n this.shown &&\n event.key === ESCAPE_KEY &&\n this.$el.getAttribute('role') !== 'alertdialog'\n ) {\n event.preventDefault();\n this.hide(event);\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (this.shown && event.key === TAB_KEY) {\n trapTabKey(this.$el, event);\n }\n};\n\n/**\n * Private event handler used when making sure the focus stays within the\n * currently open dialog\n *\n * @access private\n * @param {Event} event\n */\nA11yDialog.prototype._maintainFocus = function (event) {\n // If the dialog is shown and the focus is not within a dialog element (either\n // this one or another one in case of nested dialogs) or within an element\n // with the `data-a11y-dialog-focus-trap-ignore` attribute, move it back to\n // its first focusable child.\n // See: https://github.com/KittyGiraudel/a11y-dialog/issues/177\n if (\n this.shown &&\n !event.target.closest('[aria-modal=\"true\"]') &&\n !event.target.closest('[data-a11y-dialog-ignore-focus-trap]')\n ) {\n moveFocusToDialog(this.$el);\n }\n};\n\n/**\n * Convert a NodeList into an array\n *\n * @param {NodeList} collection\n * @return {Array<Element>}\n */\nfunction toArray(collection) {\n return Array.prototype.slice.call(collection)\n}\n\n/**\n * Query the DOM for nodes matching the given selector, scoped to context (or\n * the whole document)\n *\n * @param {String} selector\n * @param {Element} [context = document]\n * @return {Array<Element>}\n */\nfunction $$(selector, context) {\n return toArray((context || document).querySelectorAll(selector))\n}\n\n/**\n * Set the focus to the first element with `autofocus` with the element or the\n * element itself\n *\n * @param {Element} node\n */\nfunction moveFocusToDialog(node) {\n var focused = node.querySelector('[autofocus]') || node;\n\n focused.focus();\n}\n\n/**\n * Get the focusable children of the given element\n *\n * @param {Element} node\n * @return {Array<Element>}\n */\nfunction getFocusableChildren(node) {\n return $$(focusableSelectors.join(','), node).filter(function (child) {\n return !!(\n child.offsetWidth ||\n child.offsetHeight ||\n child.getClientRects().length\n )\n })\n}\n\n/**\n * Trap the focus inside the given element\n *\n * @param {Element} node\n * @param {Event} event\n */\nfunction trapTabKey(node, event) {\n var focusableChildren = getFocusableChildren(node);\n var focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (\n !event.shiftKey &&\n focusedItemIndex === focusableChildren.length - 1\n ) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n}\n\nfunction instantiateDialogs() {\n $$('[data-a11y-dialog]').forEach(function (node) {\n new A11yDialog(node);\n });\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', instantiateDialogs);\n } else {\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(instantiateDialogs);\n } else {\n window.setTimeout(instantiateDialogs, 16);\n }\n }\n}\n\nexport { A11yDialog as default };\n",null,null],"names":["AuthsignalWindowMessage","uuidv4"],"mappings":"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"}