@blotoutio/edgetag-sdk-browser 0.6.3 → 0.6.5

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.
Files changed (2) hide show
  1. package/index.js +174 -119
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -101,24 +101,56 @@
101
101
  saveData('session', currentSession);
102
102
  };
103
103
  const saveLocal = (value, key) => {
104
- localStorage.setItem(key, JSON.stringify(value));
104
+ try {
105
+ if (!localStorage) {
106
+ return;
107
+ }
108
+ localStorage.setItem(key, JSON.stringify(value));
109
+ }
110
+ catch (_a) {
111
+ console.log('Local storage not supported');
112
+ }
105
113
  };
106
114
  const getLocal = (key) => {
107
- const data = localStorage.getItem(key);
108
- if (!data) {
115
+ try {
116
+ if (!localStorage) {
117
+ return {};
118
+ }
119
+ const data = localStorage.getItem(key);
120
+ if (!data) {
121
+ return {};
122
+ }
123
+ return JSON.parse(data) || {};
124
+ }
125
+ catch (_a) {
109
126
  return {};
110
127
  }
111
- return JSON.parse(data) || {};
112
128
  };
113
129
  const saveSession = (value, key) => {
114
- sessionStorage.setItem(key, JSON.stringify(value));
130
+ try {
131
+ if (!sessionStorage) {
132
+ return;
133
+ }
134
+ sessionStorage.setItem(key, JSON.stringify(value));
135
+ }
136
+ catch (_a) {
137
+ console.log('Session storage not supported');
138
+ }
115
139
  };
116
140
  const getSession = (key) => {
117
- const data = sessionStorage.getItem(key);
118
- if (!data) {
141
+ try {
142
+ if (!sessionStorage) {
143
+ return {};
144
+ }
145
+ const data = sessionStorage.getItem(key);
146
+ if (!data) {
147
+ return {};
148
+ }
149
+ return JSON.parse(data) || {};
150
+ }
151
+ catch (_a) {
119
152
  return {};
120
153
  }
121
- return JSON.parse(data) || {};
122
154
  };
123
155
 
124
156
  let endpointUrl = '';
@@ -228,7 +260,7 @@
228
260
  return false;
229
261
  };
230
262
  const allowProvider = (providers, providerId) => {
231
- if (providers) {
263
+ if (providers && Object.keys(providers).length) {
232
264
  const tagProvider = providers[providerId];
233
265
  if (!(tagProvider ||
234
266
  (providers['all'] === true && tagProvider === undefined) ||
@@ -336,14 +368,13 @@
336
368
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
337
369
  // require the crypto API and do not support built-in fallback to lower quality random number
338
370
  // generators (like Math.random()).
339
- var getRandomValues;
340
- var rnds8 = new Uint8Array(16);
371
+ let getRandomValues;
372
+ const rnds8 = new Uint8Array(16);
341
373
  function rng() {
342
374
  // lazy load so that environments that need to polyfill have a chance to do so
343
375
  if (!getRandomValues) {
344
- // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also,
345
- // find the complete implementation of crypto (msCrypto) on IE11.
346
- getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);
376
+ // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
377
+ getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
347
378
 
348
379
  if (!getRandomValues) {
349
380
  throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
@@ -364,27 +395,16 @@
364
395
  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
365
396
  */
366
397
 
367
- var byteToHex = [];
398
+ const byteToHex = [];
368
399
 
369
- for (var i = 0; i < 256; ++i) {
370
- byteToHex.push((i + 0x100).toString(16).substr(1));
400
+ for (let i = 0; i < 256; ++i) {
401
+ byteToHex.push((i + 0x100).toString(16).slice(1));
371
402
  }
372
403
 
373
- function stringify(arr) {
374
- var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
404
+ function unsafeStringify(arr, offset = 0) {
375
405
  // Note: Be careful editing this code! It's been tuned for performance
376
406
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
377
- var uuid = (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(); // Consistency check for valid UUID. If this throws, it's likely due to one
378
- // of the following:
379
- // - One or more input array values don't map to a hex octet (leading to
380
- // "undefined" in the uuid)
381
- // - Invalid input values for the RFC `version` or `variant` fields
382
-
383
- if (!validate(uuid)) {
384
- throw TypeError('Stringified UUID is invalid');
385
- }
386
-
387
- return uuid;
407
+ 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();
388
408
  }
389
409
 
390
410
  function parse(uuid) {
@@ -392,8 +412,8 @@
392
412
  throw TypeError('Invalid UUID');
393
413
  }
394
414
 
395
- var v;
396
- var arr = new Uint8Array(16); // Parse ########-....-....-....-............
415
+ let v;
416
+ const arr = new Uint8Array(16); // Parse ########-....-....-....-............
397
417
 
398
418
  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
399
419
  arr[1] = v >>> 16 & 0xff;
@@ -422,19 +442,21 @@
422
442
  function stringToBytes(str) {
423
443
  str = unescape(encodeURIComponent(str)); // UTF8 escape
424
444
 
425
- var bytes = [];
445
+ const bytes = [];
426
446
 
427
- for (var i = 0; i < str.length; ++i) {
447
+ for (let i = 0; i < str.length; ++i) {
428
448
  bytes.push(str.charCodeAt(i));
429
449
  }
430
450
 
431
451
  return bytes;
432
452
  }
433
453
 
434
- var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
435
- var URL$1 = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
436
- function v35 (name, version, hashfunc) {
454
+ const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
455
+ const URL$1 = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
456
+ function v35(name, version, hashfunc) {
437
457
  function generateUUID(value, namespace, buf, offset) {
458
+ var _namespace;
459
+
438
460
  if (typeof value === 'string') {
439
461
  value = stringToBytes(value);
440
462
  }
@@ -443,14 +465,14 @@
443
465
  namespace = parse(namespace);
444
466
  }
445
467
 
446
- if (namespace.length !== 16) {
468
+ if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {
447
469
  throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
448
470
  } // Compute hash of namespace and value, Per 4.3
449
471
  // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
450
472
  // hashfunc([...namespace, ... value])`
451
473
 
452
474
 
453
- var bytes = new Uint8Array(16 + value.length);
475
+ let bytes = new Uint8Array(16 + value.length);
454
476
  bytes.set(namespace);
455
477
  bytes.set(value, namespace.length);
456
478
  bytes = hashfunc(bytes);
@@ -460,14 +482,14 @@
460
482
  if (buf) {
461
483
  offset = offset || 0;
462
484
 
463
- for (var i = 0; i < 16; ++i) {
485
+ for (let i = 0; i < 16; ++i) {
464
486
  buf[offset + i] = bytes[i];
465
487
  }
466
488
 
467
489
  return buf;
468
490
  }
469
491
 
470
- return stringify(bytes);
492
+ return unsafeStringify(bytes);
471
493
  } // Function#name is not settable on some platforms (#270)
472
494
 
473
495
 
@@ -503,11 +525,11 @@
503
525
  */
504
526
  function md5(bytes) {
505
527
  if (typeof bytes === 'string') {
506
- var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
528
+ const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
507
529
 
508
530
  bytes = new Uint8Array(msg.length);
509
531
 
510
- for (var i = 0; i < msg.length; ++i) {
532
+ for (let i = 0; i < msg.length; ++i) {
511
533
  bytes[i] = msg.charCodeAt(i);
512
534
  }
513
535
  }
@@ -520,13 +542,13 @@
520
542
 
521
543
 
522
544
  function md5ToHexEncodedArray(input) {
523
- var output = [];
524
- var length32 = input.length * 32;
525
- var hexTab = '0123456789abcdef';
545
+ const output = [];
546
+ const length32 = input.length * 32;
547
+ const hexTab = '0123456789abcdef';
526
548
 
527
- for (var i = 0; i < length32; i += 8) {
528
- var x = input[i >> 5] >>> i % 32 & 0xff;
529
- var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
549
+ for (let i = 0; i < length32; i += 8) {
550
+ const x = input[i >> 5] >>> i % 32 & 0xff;
551
+ const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
530
552
  output.push(hex);
531
553
  }
532
554
 
@@ -549,16 +571,16 @@
549
571
  /* append padding */
550
572
  x[len >> 5] |= 0x80 << len % 32;
551
573
  x[getOutputLength(len) - 1] = len;
552
- var a = 1732584193;
553
- var b = -271733879;
554
- var c = -1732584194;
555
- var d = 271733878;
556
-
557
- for (var i = 0; i < x.length; i += 16) {
558
- var olda = a;
559
- var oldb = b;
560
- var oldc = c;
561
- var oldd = d;
574
+ let a = 1732584193;
575
+ let b = -271733879;
576
+ let c = -1732584194;
577
+ let d = 271733878;
578
+
579
+ for (let i = 0; i < x.length; i += 16) {
580
+ const olda = a;
581
+ const oldb = b;
582
+ const oldc = c;
583
+ const oldd = d;
562
584
  a = md5ff(a, b, c, d, x[i], 7, -680876936);
563
585
  d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
564
586
  c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
@@ -642,10 +664,10 @@
642
664
  return [];
643
665
  }
644
666
 
645
- var length8 = input.length * 8;
646
- var output = new Uint32Array(getOutputLength(length8));
667
+ const length8 = input.length * 8;
668
+ const output = new Uint32Array(getOutputLength(length8));
647
669
 
648
- for (var i = 0; i < length8; i += 8) {
670
+ for (let i = 0; i < length8; i += 8) {
649
671
  output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
650
672
  }
651
673
 
@@ -658,8 +680,8 @@
658
680
 
659
681
 
660
682
  function safeAdd(x, y) {
661
- var lsw = (x & 0xffff) + (y & 0xffff);
662
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
683
+ const lsw = (x & 0xffff) + (y & 0xffff);
684
+ const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
663
685
  return msw << 16 | lsw & 0xffff;
664
686
  }
665
687
  /*
@@ -697,9 +719,18 @@
697
719
 
698
720
  v35('v3', 0x30, md5);
699
721
 
722
+ const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
723
+ var native = {
724
+ randomUUID
725
+ };
726
+
700
727
  function v4(options, buf, offset) {
728
+ if (native.randomUUID && !buf && !options) {
729
+ return native.randomUUID();
730
+ }
731
+
701
732
  options = options || {};
702
- var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
733
+ const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
703
734
 
704
735
  rnds[6] = rnds[6] & 0x0f | 0x40;
705
736
  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
@@ -707,14 +738,14 @@
707
738
  if (buf) {
708
739
  offset = offset || 0;
709
740
 
710
- for (var i = 0; i < 16; ++i) {
741
+ for (let i = 0; i < 16; ++i) {
711
742
  buf[offset + i] = rnds[i];
712
743
  }
713
744
 
714
745
  return buf;
715
746
  }
716
747
 
717
- return stringify(rnds);
748
+ return unsafeStringify(rnds);
718
749
  }
719
750
 
720
751
  // Adapted from Chris Veness' SHA1 code at
@@ -740,15 +771,15 @@
740
771
  }
741
772
 
742
773
  function sha1(bytes) {
743
- var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
744
- var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
774
+ const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
775
+ const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
745
776
 
746
777
  if (typeof bytes === 'string') {
747
- var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
778
+ const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
748
779
 
749
780
  bytes = [];
750
781
 
751
- for (var i = 0; i < msg.length; ++i) {
782
+ for (let i = 0; i < msg.length; ++i) {
752
783
  bytes.push(msg.charCodeAt(i));
753
784
  }
754
785
  } else if (!Array.isArray(bytes)) {
@@ -757,44 +788,44 @@
757
788
  }
758
789
 
759
790
  bytes.push(0x80);
760
- var l = bytes.length / 4 + 2;
761
- var N = Math.ceil(l / 16);
762
- var M = new Array(N);
791
+ const l = bytes.length / 4 + 2;
792
+ const N = Math.ceil(l / 16);
793
+ const M = new Array(N);
763
794
 
764
- for (var _i = 0; _i < N; ++_i) {
765
- var arr = new Uint32Array(16);
795
+ for (let i = 0; i < N; ++i) {
796
+ const arr = new Uint32Array(16);
766
797
 
767
- for (var j = 0; j < 16; ++j) {
768
- 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];
798
+ for (let j = 0; j < 16; ++j) {
799
+ 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];
769
800
  }
770
801
 
771
- M[_i] = arr;
802
+ M[i] = arr;
772
803
  }
773
804
 
774
805
  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
775
806
  M[N - 1][14] = Math.floor(M[N - 1][14]);
776
807
  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
777
808
 
778
- for (var _i2 = 0; _i2 < N; ++_i2) {
779
- var W = new Uint32Array(80);
809
+ for (let i = 0; i < N; ++i) {
810
+ const W = new Uint32Array(80);
780
811
 
781
- for (var t = 0; t < 16; ++t) {
782
- W[t] = M[_i2][t];
812
+ for (let t = 0; t < 16; ++t) {
813
+ W[t] = M[i][t];
783
814
  }
784
815
 
785
- for (var _t = 16; _t < 80; ++_t) {
786
- W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);
816
+ for (let t = 16; t < 80; ++t) {
817
+ W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
787
818
  }
788
819
 
789
- var a = H[0];
790
- var b = H[1];
791
- var c = H[2];
792
- var d = H[3];
793
- var e = H[4];
820
+ let a = H[0];
821
+ let b = H[1];
822
+ let c = H[2];
823
+ let d = H[3];
824
+ let e = H[4];
794
825
 
795
- for (var _t2 = 0; _t2 < 80; ++_t2) {
796
- var s = Math.floor(_t2 / 20);
797
- var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;
826
+ for (let t = 0; t < 80; ++t) {
827
+ const s = Math.floor(t / 20);
828
+ const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
798
829
  e = d;
799
830
  d = c;
800
831
  c = ROTL(b, 30) >>> 0;
@@ -863,21 +894,19 @@
863
894
  const providerData = {};
864
895
  if (providerPackages) {
865
896
  Object.values(providerPackages).forEach((pkg) => {
866
- if (!allowProvider(providers, pkg.name)) {
897
+ if (!pkg || !pkg.tag || !allowProvider(providers, pkg.name)) {
867
898
  return;
868
899
  }
869
- if (pkg && pkg.tag) {
870
- const result = pkg.tag({
871
- userId,
872
- eventName,
873
- eventId,
874
- data,
875
- sendTag,
876
- manifestVariables: getProviderVariables(pkg.name),
877
- });
878
- if (result) {
879
- providerData[pkg.name] = result;
880
- }
900
+ const result = pkg.tag({
901
+ userId,
902
+ eventName,
903
+ eventId,
904
+ data,
905
+ sendTag,
906
+ manifestVariables: getProviderVariables(pkg.name),
907
+ });
908
+ if (result) {
909
+ providerData[pkg.name] = result;
881
910
  }
882
911
  });
883
912
  }
@@ -891,6 +920,30 @@
891
920
  });
892
921
  };
893
922
 
923
+ const handleData = (data, options) => {
924
+ if (!data || Object.keys(data).length === 0) {
925
+ console.error('Provide data for data API.');
926
+ return;
927
+ }
928
+ saveKV(data);
929
+ postRequest(getDataURL(), { data }, options).catch(info);
930
+ };
931
+
932
+ const saveDataToEdge = (key, value, provider) => {
933
+ if (!value) {
934
+ return;
935
+ }
936
+ if (typeof value !== 'string') {
937
+ try {
938
+ value = JSON.stringify(value);
939
+ }
940
+ catch (_a) {
941
+ console.log('Error stringify value');
942
+ return;
943
+ }
944
+ }
945
+ handleData({ [`${provider}::${key}`]: value });
946
+ };
894
947
  const handleCaptureQuery = (provider, key, persistType) => {
895
948
  if (!window) {
896
949
  return;
@@ -899,7 +952,15 @@
899
952
  if (!params || !params.get(key)) {
900
953
  return;
901
954
  }
902
- saveDataPerKey(persistType, provider, params.get(key), key);
955
+ const data = params.get(key);
956
+ if (!data) {
957
+ return;
958
+ }
959
+ if (persistType === 'edge') {
960
+ saveDataToEdge(key, data, provider);
961
+ return;
962
+ }
963
+ saveDataPerKey(persistType, provider, data, key);
903
964
  };
904
965
  const handleCaptureStorage = (provider, key, persistType, location) => {
905
966
  let data;
@@ -909,17 +970,20 @@
909
970
  break;
910
971
  }
911
972
  case 'local': {
912
- data = sessionStorage && sessionStorage.getItem(key);
973
+ data = getData$1('local', key);
913
974
  break;
914
975
  }
915
976
  case 'session': {
916
- data = localStorage && localStorage.getItem(key);
917
- break;
977
+ data = getData$1('session', key);
918
978
  }
919
979
  }
920
980
  if (!data) {
921
981
  return;
922
982
  }
983
+ if (persistType === 'edge') {
984
+ saveDataToEdge(key, data, provider);
985
+ return;
986
+ }
923
987
  saveDataPerKey(persistType, provider, data, key);
924
988
  };
925
989
  const handleCapture = (provider, params) => {
@@ -1002,15 +1066,6 @@
1002
1066
  }, options).catch(info);
1003
1067
  };
1004
1068
 
1005
- const handleData = (data, options) => {
1006
- if (!data || Object.keys(data).length === 0) {
1007
- console.error('Provide data for data API.');
1008
- return;
1009
- }
1010
- saveKV(data);
1011
- postRequest(getDataURL(), { data }, options).catch(info);
1012
- };
1013
-
1014
1069
  const handleGetData = (keys, callback) => {
1015
1070
  if (!keys || keys.length === 0) {
1016
1071
  console.error('Provide keys for get data API.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blotoutio/edgetag-sdk-browser",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Browser SDK for EdgeTag",
5
5
  "author": "Blotout",
6
6
  "license": "MIT",