posthog-js 1.87.2 → 1.87.3

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 (85) hide show
  1. package/dist/array.full.js +1 -1
  2. package/dist/array.full.js.map +1 -1
  3. package/dist/array.js +1 -1
  4. package/dist/array.js.map +1 -1
  5. package/dist/es.js +1 -1
  6. package/dist/es.js.map +1 -1
  7. package/dist/exception-autocapture.js +1 -1
  8. package/dist/exception-autocapture.js.map +1 -1
  9. package/dist/module.js +1 -1
  10. package/dist/module.js.map +1 -1
  11. package/dist/recorder-v2.js +2 -2
  12. package/dist/recorder-v2.js.map +1 -1
  13. package/dist/recorder.js +1 -1
  14. package/dist/recorder.js.map +1 -1
  15. package/dist/surveys.js +1 -1
  16. package/dist/surveys.js.map +1 -1
  17. package/lib/package.json +1 -1
  18. package/lib/src/autocapture-utils.js +2 -1
  19. package/lib/src/autocapture-utils.js.map +1 -1
  20. package/lib/src/autocapture.js +2 -1
  21. package/lib/src/autocapture.js.map +1 -1
  22. package/lib/src/decide.js +2 -1
  23. package/lib/src/decide.js.map +1 -1
  24. package/lib/src/extensions/exception-autocapture/error-conversion.js +1 -1
  25. package/lib/src/extensions/exception-autocapture/error-conversion.js.map +1 -1
  26. package/lib/src/extensions/exception-autocapture/index.js +2 -1
  27. package/lib/src/extensions/exception-autocapture/index.js.map +1 -1
  28. package/lib/src/extensions/exception-autocapture/stack-trace.js +1 -1
  29. package/lib/src/extensions/exception-autocapture/stack-trace.js.map +1 -1
  30. package/lib/src/extensions/exception-autocapture/type-checking.js +1 -1
  31. package/lib/src/extensions/exception-autocapture/type-checking.js.map +1 -1
  32. package/lib/src/extensions/replay/sessionrecording-utils.js +1 -1
  33. package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -1
  34. package/lib/src/extensions/replay/sessionrecording.js +2 -1
  35. package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
  36. package/lib/src/extensions/replay/web-performance.js +3 -1
  37. package/lib/src/extensions/replay/web-performance.js.map +1 -1
  38. package/lib/src/extensions/surveys.js +1 -1
  39. package/lib/src/extensions/surveys.js.map +1 -1
  40. package/lib/src/extensions/toolbar.js +2 -1
  41. package/lib/src/extensions/toolbar.js.map +1 -1
  42. package/lib/src/gdpr-utils.js +2 -1
  43. package/lib/src/gdpr-utils.js.map +1 -1
  44. package/lib/src/loader-exception-autocapture.js +1 -1
  45. package/lib/src/loader-exception-autocapture.js.map +1 -1
  46. package/lib/src/loader-recorder-v2.js +1 -1
  47. package/lib/src/loader-recorder-v2.js.map +1 -1
  48. package/lib/src/loader-recorder.js +1 -1
  49. package/lib/src/loader-recorder.js.map +1 -1
  50. package/lib/src/loader-surveys.js +1 -1
  51. package/lib/src/loader-surveys.js.map +1 -1
  52. package/lib/src/posthog-core.js +7 -4
  53. package/lib/src/posthog-core.js.map +1 -1
  54. package/lib/src/posthog-featureflags.js +3 -2
  55. package/lib/src/posthog-featureflags.js.map +1 -1
  56. package/lib/src/posthog-persistence.js +3 -1
  57. package/lib/src/posthog-persistence.js.map +1 -1
  58. package/lib/src/posthog-surveys.js +1 -1
  59. package/lib/src/posthog-surveys.js.map +1 -1
  60. package/lib/src/request-queue.js +2 -1
  61. package/lib/src/request-queue.js.map +1 -1
  62. package/lib/src/retry-queue.js +2 -1
  63. package/lib/src/retry-queue.js.map +1 -1
  64. package/lib/src/send-request.js +9 -5
  65. package/lib/src/send-request.js.map +1 -1
  66. package/lib/src/sessionid.js +2 -1
  67. package/lib/src/sessionid.js.map +1 -1
  68. package/lib/src/storage.js +2 -1
  69. package/lib/src/storage.js.map +1 -1
  70. package/lib/src/utils/event-utils.d.ts +29 -0
  71. package/lib/src/utils/event-utils.js +297 -0
  72. package/lib/src/utils/event-utils.js.map +1 -0
  73. package/lib/src/{utils.d.ts → utils/index.d.ts} +5 -45
  74. package/lib/src/{utils.js → utils/index.js} +8 -402
  75. package/lib/src/utils/index.js.map +1 -0
  76. package/lib/src/utils/request-utils.d.ts +5 -0
  77. package/lib/src/utils/request-utils.js +58 -0
  78. package/lib/src/utils/request-utils.js.map +1 -0
  79. package/lib/src/utils/type-utils.d.ts +12 -0
  80. package/lib/src/utils/type-utils.js +64 -0
  81. package/lib/src/utils/type-utils.js.map +1 -0
  82. package/lib/src/uuidv7.js +2 -1
  83. package/lib/src/uuidv7.js.map +1 -1
  84. package/package.json +1 -1
  85. package/lib/src/utils.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ // eslint-disable-next-line posthog-js/no-direct-array-check
2
+ var nativeIsArray = Array.isArray;
3
+ var ObjProto = Object.prototype;
4
+ export var hasOwnProperty = ObjProto.hasOwnProperty;
5
+ var toString = ObjProto.toString;
6
+ export var _isArray = nativeIsArray ||
7
+ function (obj) {
8
+ return toString.call(obj) === '[object Array]';
9
+ };
10
+ export var _isUint8Array = function (x) {
11
+ return toString.call(x) === '[object Uint8Array]';
12
+ };
13
+ // from a comment on http://dbj.org/dbj/?p=286
14
+ // fails on only one very rare and deliberate custom object:
15
+ // let bomb = { toString : undefined, valueOf: function(o) { return "function BOMBA!"; }};
16
+ export var _isFunction = function (f) {
17
+ try {
18
+ // eslint-disable-next-line posthog-js/no-direct-function-check
19
+ return /^\s*\bfunction\b/.test(f);
20
+ }
21
+ catch (x) {
22
+ return false;
23
+ }
24
+ };
25
+ // Underscore Addons
26
+ export var _isObject = function (x) {
27
+ // eslint-disable-next-line posthog-js/no-direct-object-check
28
+ return x === Object(x) && !_isArray(x);
29
+ };
30
+ export var _isEmptyObject = function (x) {
31
+ if (_isObject(x)) {
32
+ for (var key in x) {
33
+ if (hasOwnProperty.call(x, key)) {
34
+ return false;
35
+ }
36
+ }
37
+ return true;
38
+ }
39
+ return false;
40
+ };
41
+ export var _isUndefined = function (x) {
42
+ return x === void 0;
43
+ };
44
+ export var _isString = function (x) {
45
+ // eslint-disable-next-line posthog-js/no-direct-string-check
46
+ return toString.call(x) == '[object String]';
47
+ };
48
+ export var _isNull = function (x) {
49
+ // eslint-disable-next-line posthog-js/no-direct-null-check
50
+ return x === null;
51
+ };
52
+ export var _isDate = function (x) {
53
+ // eslint-disable-next-line posthog-js/no-direct-date-check
54
+ return toString.call(x) == '[object Date]';
55
+ };
56
+ export var _isNumber = function (x) {
57
+ // eslint-disable-next-line posthog-js/no-direct-number-check
58
+ return toString.call(x) == '[object Number]';
59
+ };
60
+ export var _isBoolean = function (x) {
61
+ // eslint-disable-next-line posthog-js/no-direct-boolean-check
62
+ return toString.call(x) === '[object Boolean]';
63
+ };
64
+ //# sourceMappingURL=type-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/utils/type-utils.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,IAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;AACnC,IAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAA;AACjC,MAAM,CAAC,IAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;AACrD,IAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;AAElC,MAAM,CAAC,IAAM,QAAQ,GACjB,aAAa;IACb,UAAU,GAAQ;QACd,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAA;IAClD,CAAC,CAAA;AACL,MAAM,CAAC,IAAM,aAAa,GAAG,UAAU,CAAU;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAA;AACrD,CAAC,CAAA;AACD,8CAA8C;AAC9C,4DAA4D;AAC5D,0FAA0F;AAC1F,MAAM,CAAC,IAAM,WAAW,GAAG,UAAU,CAAM;IACvC,IAAI;QACA,+DAA+D;QAC/D,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACpC;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,KAAK,CAAA;KACf;AACL,CAAC,CAAA;AACD,oBAAoB;AACpB,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAU;IACzC,6DAA6D;IAC7D,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,cAAc,GAAG,UAAU,CAAU;IAC9C,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;QACd,KAAK,IAAM,GAAG,IAAI,CAAC,EAAE;YACjB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBAC7B,OAAO,KAAK,CAAA;aACf;SACJ;QACD,OAAO,IAAI,CAAA;KACd;IACD,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,YAAY,GAAG,UAAU,CAAU;IAC5C,OAAO,CAAC,KAAK,KAAK,CAAC,CAAA;AACvB,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAU;IACzC,6DAA6D;IAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAA;AAChD,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,OAAO,GAAG,UAAU,CAAU;IACvC,2DAA2D;IAC3D,OAAO,CAAC,KAAK,IAAI,CAAA;AACrB,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,OAAO,GAAG,UAAU,CAAU;IACvC,2DAA2D;IAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,eAAe,CAAA;AAC9C,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAU;IACzC,6DAA6D;IAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAA;AAChD,CAAC,CAAA;AACD,MAAM,CAAC,IAAM,UAAU,GAAG,UAAU,CAAU;IAC1C,8DAA8D;IAC9D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAA;AAClD,CAAC,CAAA","sourcesContent":["// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const _isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\nexport const _isUint8Array = function (x: unknown): x is Uint8Array {\n return toString.call(x) === '[object Uint8Array]'\n}\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const _isFunction = function (f: any): f is (...args: any[]) => any {\n try {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return /^\\s*\\bfunction\\b/.test(f)\n } catch (x) {\n return false\n }\n}\n// Underscore Addons\nexport const _isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !_isArray(x)\n}\nexport const _isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (_isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const _isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\nexport const _isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\nexport const _isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\nexport const _isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const _isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const _isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n"]}
package/lib/src/uuidv7.js CHANGED
@@ -8,7 +8,8 @@
8
8
  * from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts
9
9
  */
10
10
  // polyfill for IE11
11
- import { _isNumber, _isUndefined, window } from './utils';
11
+ import { window } from './utils';
12
+ import { _isNumber, _isUndefined } from './utils/type-utils';
12
13
  if (!Math.trunc) {
13
14
  Math.trunc = function (v) {
14
15
  return v < 0 ? Math.ceil(v) : Math.floor(v);
@@ -1 +1 @@
1
- {"version":3,"file":"uuidv7.js","sourceRoot":"","sources":["../../src/uuidv7.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEzD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACb,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAA;CACJ;AAED,oBAAoB;AACpB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;IACnB,MAAM,CAAC,SAAS,GAAG,UAAU,KAAK;QAC9B,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAA;IAC7E,CAAC,CAAA;CACJ;AAED,IAAM,MAAM,GAAG,kBAAkB,CAAA;AAEjC,iDAAiD;AACjD;IACI,4DAA4D;IAC5D,cAAqB,KAA2B;QAA3B,UAAK,GAAL,KAAK,CAAsB;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAA;SAC5C;IACL,CAAC;IAED;;;;;;;OAOG;IACI,iBAAY,GAAnB,UAAoB,QAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,OAAe;QACjF,IACI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC3B,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YACxB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;YAC1B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;YAC1B,QAAQ,GAAG,CAAC;YACZ,KAAK,GAAG,CAAC;YACT,OAAO,GAAG,CAAC;YACX,OAAO,GAAG,CAAC;YACX,QAAQ,GAAG,eAAgB;YAC3B,KAAK,GAAG,KAAK;YACb,OAAO,GAAG,UAAW;YACrB,OAAO,GAAG,UAAW,EACvB;YACE,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAA;SAC9C;QAED,IAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;QAChC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,CAAA;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,CAAA;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,CAAA;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,CAAA;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAA,CAAC,EAAI,CAAC,CAAA,CAAA;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAA;QAC/B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QAChB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;QAClC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,EAAE,CAAA;QACzB,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,CAAC,CAAA;QACzB,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAA;QACnB,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,EAAE,CAAA;QAC1B,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,EAAE,CAAA;QAC1B,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,CAAC,CAAA;QACzB,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAA;QACnB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,2EAA2E;IAC3E,uBAAQ,GAAR;QACI,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;YACrF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC1C,IAAI,IAAI,GAAG,CAAA;aACd;SACJ;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;YACpB,2EAA2E;YAC3E,yDAAyD;YACzD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAClD;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,qCAAqC;IACrC,oBAAK,GAAL;QACI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,uDAAuD;IACvD,qBAAM,GAAN,UAAO,KAAW;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,wBAAS,GAAT,UAAU,KAAW;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3C,IAAI,IAAI,KAAK,CAAC,EAAE;gBACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACzB;SACJ;QACD,OAAO,CAAC,CAAA;IACZ,CAAC;IACL,WAAC;AAAD,CAAC,AA/FD,IA+FC;;AAED,gDAAgD;AAChD;IAAA;QACY,cAAS,GAAG,CAAC,CAAA;QACb,YAAO,GAAG,CAAC,CAAA;QACF,WAAM,GAAG,IAAI,aAAa,EAAE,CAAA;IAqEjD,CAAC;IAnEG;;;;;;;;;OASG;IACH,8BAAQ,GAAR;QACI,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACpC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAA;SACf;aAAM;YACH,yBAAyB;YACzB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;YAClB,IAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;YAC9C,IAAI,YAAY,CAAC,eAAe,CAAC,EAAE;gBAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;aACnE;YACD,OAAO,eAAe,CAAA;SACzB;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,qCAAe,GAAf;QACI,IAAM,WAAW,GAAG,aAAe,CAAA;QACnC,IAAM,kBAAkB,GAAG,KAAM,CAAA,CAAC,aAAa;QAE/C,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;YACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;YACnB,IAAI,CAAC,YAAY,EAAE,CAAA;SACtB;aAAM,IAAI,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE;YACjD,+DAA+D;YAC/D,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE;gBAC5B,0CAA0C;gBAC1C,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,YAAY,EAAE,CAAA;aACtB;SACJ;aAAM;YACH,qDAAqD;YACrD,OAAO,SAAS,CAAA;SACnB;QAED,OAAO,IAAI,CAAC,YAAY,CACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,SAAA,CAAC,EAAI,EAAE,CAAA,CAAC,EAClC,IAAI,CAAC,OAAO,GAAG,CAAC,SAAA,CAAC,EAAI,EAAE,CAAA,GAAG,CAAC,CAAC,EAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAC3B,CAAA;IACL,CAAC;IAED,0DAA0D;IAClD,kCAAY,GAApB;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;IACxF,CAAC;IACL,kBAAC;AAAD,CAAC,AAxED,IAwEC;AAKD,sEAAsE;AACtE,IAAI,eAAe,GAAyD,UAAC,MAAM;IAC/E,4DAA4D;IAC5D,6EAA6E;IAC7E,IAAI,OAAO,oBAAoB,KAAK,WAAW,IAAI,oBAAoB,EAAE;QACrE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;KAC/D;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAQ,CAAC,GAAG,KAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAQ,CAAC,CAAA;KACrG;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,wBAAwB;AACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE;IACxD,eAAe,GAAG,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAA9B,CAA8B,CAAA;CAC/D;AAED;;;;GAIG;AACH;IAAA;QACqB,WAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,WAAM,GAAG,QAAQ,CAAA;IAQ7B,CAAC;IAPG,kCAAU,GAAV;QACI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACnC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;SAClB;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACrC,CAAC;IACL,oBAAC;AAAD,CAAC,AAVD,IAUC;AAED,IAAI,gBAAyC,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,IAAM,MAAM,GAAG,cAAc,OAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAtB,CAAsB,CAAA;AAE1D,iCAAiC;AACjC,IAAM,SAAS,GAAG,cAAY,OAAA,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAvE,CAAuE,CAAA","sourcesContent":["/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n *\n * from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts\n */\n\n// polyfill for IE11\nimport { _isNumber, _isUndefined, window } from './utils'\n\nif (!Math.trunc) {\n Math.trunc = function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v)\n }\n}\n\n// polyfill for IE11\nif (!Number.isInteger) {\n Number.isInteger = function (value) {\n return _isNumber(value) && isFinite(value) && Math.floor(value) === value\n }\n}\n\nconst DIGITS = '0123456789abcdef'\n\n/** Represents a UUID as a 16-byte byte array. */\nexport class UUID {\n /** @param bytes - The 16-byte byte array representation. */\n constructor(readonly bytes: Readonly<Uint8Array>) {\n if (bytes.length !== 16) {\n throw new TypeError('not 128-bit length')\n }\n }\n\n /**\n * Builds a byte array from UUIDv7 field values.\n *\n * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n * @param randA - A 12-bit `rand_a` field value.\n * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n */\n static fromFieldsV7(unixTsMs: number, randA: number, randBHi: number, randBLo: number): UUID {\n if (\n !Number.isInteger(unixTsMs) ||\n !Number.isInteger(randA) ||\n !Number.isInteger(randBHi) ||\n !Number.isInteger(randBLo) ||\n unixTsMs < 0 ||\n randA < 0 ||\n randBHi < 0 ||\n randBLo < 0 ||\n unixTsMs > 0xffff_ffff_ffff ||\n randA > 0xfff ||\n randBHi > 0x3fff_ffff ||\n randBLo > 0xffff_ffff\n ) {\n throw new RangeError('invalid field value')\n }\n\n const bytes = new Uint8Array(16)\n bytes[0] = unixTsMs / 2 ** 40\n bytes[1] = unixTsMs / 2 ** 32\n bytes[2] = unixTsMs / 2 ** 24\n bytes[3] = unixTsMs / 2 ** 16\n bytes[4] = unixTsMs / 2 ** 8\n bytes[5] = unixTsMs\n bytes[6] = 0x70 | (randA >>> 8)\n bytes[7] = randA\n bytes[8] = 0x80 | (randBHi >>> 24)\n bytes[9] = randBHi >>> 16\n bytes[10] = randBHi >>> 8\n bytes[11] = randBHi\n bytes[12] = randBLo >>> 24\n bytes[13] = randBLo >>> 16\n bytes[14] = randBLo >>> 8\n bytes[15] = randBLo\n return new UUID(bytes)\n }\n\n /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n toString(): string {\n let text = ''\n for (let i = 0; i < this.bytes.length; i++) {\n text = text + DIGITS.charAt(this.bytes[i] >>> 4) + DIGITS.charAt(this.bytes[i] & 0xf)\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n text += '-'\n }\n }\n\n if (text.length !== 36) {\n // We saw one customer whose bundling code was mangling the UUID generation\n // rather than accept a bad UUID, we throw an error here.\n throw new Error('Invalid UUIDv7 was generated')\n }\n return text\n }\n\n /** Creates an object from `this`. */\n clone(): UUID {\n return new UUID(this.bytes.slice(0))\n }\n\n /** Returns true if `this` is equivalent to `other`. */\n equals(other: UUID): boolean {\n return this.compareTo(other) === 0\n }\n\n /**\n * Returns a negative integer, zero, or positive integer if `this` is less\n * than, equal to, or greater than `other`, respectively.\n */\n compareTo(other: UUID): number {\n for (let i = 0; i < 16; i++) {\n const diff = this.bytes[i] - other.bytes[i]\n if (diff !== 0) {\n return Math.sign(diff)\n }\n }\n return 0\n }\n}\n\n/** Encapsulates the monotonic counter state. */\nclass V7Generator {\n private timestamp = 0\n private counter = 0\n private readonly random = new DefaultRandom()\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or resets the\n * generator upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method resets the generator and returns a new\n * UUID based on the current timestamp.\n */\n generate(): UUID {\n const value = this.generateOrAbort()\n if (!_isUndefined(value)) {\n return value\n } else {\n // reset state and resume\n this.timestamp = 0\n const valueAfterReset = this.generateOrAbort()\n if (_isUndefined(valueAfterReset)) {\n throw new Error('Could not generate UUID after timestamp reset')\n }\n return valueAfterReset\n }\n }\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or returns\n * `undefined` upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method aborts and returns `undefined`.\n */\n generateOrAbort(): UUID | undefined {\n const MAX_COUNTER = 0x3ff_ffff_ffff\n const ROLLBACK_ALLOWANCE = 10_000 // 10 seconds\n\n const ts = Date.now()\n if (ts > this.timestamp) {\n this.timestamp = ts\n this.resetCounter()\n } else if (ts + ROLLBACK_ALLOWANCE > this.timestamp) {\n // go on with previous timestamp if new one is not much smaller\n this.counter++\n if (this.counter > MAX_COUNTER) {\n // increment timestamp at counter overflow\n this.timestamp++\n this.resetCounter()\n }\n } else {\n // abort if clock went backwards to unbearable extent\n return undefined\n }\n\n return UUID.fromFieldsV7(\n this.timestamp,\n Math.trunc(this.counter / 2 ** 30),\n this.counter & (2 ** 30 - 1),\n this.random.nextUint32()\n )\n }\n\n /** Initializes the counter at a 42-bit random integer. */\n private resetCounter(): void {\n this.counter = this.random.nextUint32() * 0x400 + (this.random.nextUint32() & 0x3ff)\n }\n}\n\n/** A global flag to force use of cryptographically strong RNG. */\ndeclare const UUIDV7_DENY_WEAK_RNG: boolean\n\n/** Stores `crypto.getRandomValues()` available in the environment. */\nlet getRandomValues: <T extends Uint8Array | Uint32Array>(buffer: T) => T = (buffer) => {\n // fall back on Math.random() unless the flag is set to true\n // TRICKY: don't use the _isUndefined method here as can't pass the reference\n if (typeof UUIDV7_DENY_WEAK_RNG !== 'undefined' && UUIDV7_DENY_WEAK_RNG) {\n throw new Error('no cryptographically strong RNG available')\n }\n\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.trunc(Math.random() * 0x1_0000) * 0x1_0000 + Math.trunc(Math.random() * 0x1_0000)\n }\n return buffer\n}\n\n// detect Web Crypto API\nif (!_isUndefined(window.crypto) && crypto.getRandomValues) {\n getRandomValues = (buffer) => crypto.getRandomValues(buffer)\n}\n\n/**\n * Wraps `crypto.getRandomValues()` and compatibles to enable buffering; this\n * uses a small buffer by default to avoid unbearable throughput decline in some\n * environments as well as the waste of time and space for unused values.\n */\nclass DefaultRandom {\n private readonly buffer = new Uint32Array(8)\n private cursor = Infinity\n nextUint32(): number {\n if (this.cursor >= this.buffer.length) {\n getRandomValues(this.buffer)\n this.cursor = 0\n }\n return this.buffer[this.cursor++]\n }\n}\n\nlet defaultGenerator: V7Generator | undefined\n\n/**\n * Generates a UUIDv7 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv7 = (): string => uuidv7obj().toString()\n\n/** Generates a UUIDv7 object. */\nconst uuidv7obj = (): UUID => (defaultGenerator || (defaultGenerator = new V7Generator())).generate()\n"]}
1
+ {"version":3,"file":"uuidv7.js","sourceRoot":"","sources":["../../src/uuidv7.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n *\n * from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts\n */\n\n// polyfill for IE11\nimport { window } from './utils'\n\nimport { _isNumber, _isUndefined } from './utils/type-utils'\n\nif (!Math.trunc) {\n Math.trunc = function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v)\n }\n}\n\n// polyfill for IE11\nif (!Number.isInteger) {\n Number.isInteger = function (value) {\n return _isNumber(value) && isFinite(value) && Math.floor(value) === value\n }\n}\n\nconst DIGITS = '0123456789abcdef'\n\n/** Represents a UUID as a 16-byte byte array. */\nexport class UUID {\n /** @param bytes - The 16-byte byte array representation. */\n constructor(readonly bytes: Readonly<Uint8Array>) {\n if (bytes.length !== 16) {\n throw new TypeError('not 128-bit length')\n }\n }\n\n /**\n * Builds a byte array from UUIDv7 field values.\n *\n * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n * @param randA - A 12-bit `rand_a` field value.\n * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n */\n static fromFieldsV7(unixTsMs: number, randA: number, randBHi: number, randBLo: number): UUID {\n if (\n !Number.isInteger(unixTsMs) ||\n !Number.isInteger(randA) ||\n !Number.isInteger(randBHi) ||\n !Number.isInteger(randBLo) ||\n unixTsMs < 0 ||\n randA < 0 ||\n randBHi < 0 ||\n randBLo < 0 ||\n unixTsMs > 0xffff_ffff_ffff ||\n randA > 0xfff ||\n randBHi > 0x3fff_ffff ||\n randBLo > 0xffff_ffff\n ) {\n throw new RangeError('invalid field value')\n }\n\n const bytes = new Uint8Array(16)\n bytes[0] = unixTsMs / 2 ** 40\n bytes[1] = unixTsMs / 2 ** 32\n bytes[2] = unixTsMs / 2 ** 24\n bytes[3] = unixTsMs / 2 ** 16\n bytes[4] = unixTsMs / 2 ** 8\n bytes[5] = unixTsMs\n bytes[6] = 0x70 | (randA >>> 8)\n bytes[7] = randA\n bytes[8] = 0x80 | (randBHi >>> 24)\n bytes[9] = randBHi >>> 16\n bytes[10] = randBHi >>> 8\n bytes[11] = randBHi\n bytes[12] = randBLo >>> 24\n bytes[13] = randBLo >>> 16\n bytes[14] = randBLo >>> 8\n bytes[15] = randBLo\n return new UUID(bytes)\n }\n\n /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n toString(): string {\n let text = ''\n for (let i = 0; i < this.bytes.length; i++) {\n text = text + DIGITS.charAt(this.bytes[i] >>> 4) + DIGITS.charAt(this.bytes[i] & 0xf)\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n text += '-'\n }\n }\n\n if (text.length !== 36) {\n // We saw one customer whose bundling code was mangling the UUID generation\n // rather than accept a bad UUID, we throw an error here.\n throw new Error('Invalid UUIDv7 was generated')\n }\n return text\n }\n\n /** Creates an object from `this`. */\n clone(): UUID {\n return new UUID(this.bytes.slice(0))\n }\n\n /** Returns true if `this` is equivalent to `other`. */\n equals(other: UUID): boolean {\n return this.compareTo(other) === 0\n }\n\n /**\n * Returns a negative integer, zero, or positive integer if `this` is less\n * than, equal to, or greater than `other`, respectively.\n */\n compareTo(other: UUID): number {\n for (let i = 0; i < 16; i++) {\n const diff = this.bytes[i] - other.bytes[i]\n if (diff !== 0) {\n return Math.sign(diff)\n }\n }\n return 0\n }\n}\n\n/** Encapsulates the monotonic counter state. */\nclass V7Generator {\n private timestamp = 0\n private counter = 0\n private readonly random = new DefaultRandom()\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or resets the\n * generator upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method resets the generator and returns a new\n * UUID based on the current timestamp.\n */\n generate(): UUID {\n const value = this.generateOrAbort()\n if (!_isUndefined(value)) {\n return value\n } else {\n // reset state and resume\n this.timestamp = 0\n const valueAfterReset = this.generateOrAbort()\n if (_isUndefined(valueAfterReset)) {\n throw new Error('Could not generate UUID after timestamp reset')\n }\n return valueAfterReset\n }\n }\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or returns\n * `undefined` upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method aborts and returns `undefined`.\n */\n generateOrAbort(): UUID | undefined {\n const MAX_COUNTER = 0x3ff_ffff_ffff\n const ROLLBACK_ALLOWANCE = 10_000 // 10 seconds\n\n const ts = Date.now()\n if (ts > this.timestamp) {\n this.timestamp = ts\n this.resetCounter()\n } else if (ts + ROLLBACK_ALLOWANCE > this.timestamp) {\n // go on with previous timestamp if new one is not much smaller\n this.counter++\n if (this.counter > MAX_COUNTER) {\n // increment timestamp at counter overflow\n this.timestamp++\n this.resetCounter()\n }\n } else {\n // abort if clock went backwards to unbearable extent\n return undefined\n }\n\n return UUID.fromFieldsV7(\n this.timestamp,\n Math.trunc(this.counter / 2 ** 30),\n this.counter & (2 ** 30 - 1),\n this.random.nextUint32()\n )\n }\n\n /** Initializes the counter at a 42-bit random integer. */\n private resetCounter(): void {\n this.counter = this.random.nextUint32() * 0x400 + (this.random.nextUint32() & 0x3ff)\n }\n}\n\n/** A global flag to force use of cryptographically strong RNG. */\ndeclare const UUIDV7_DENY_WEAK_RNG: boolean\n\n/** Stores `crypto.getRandomValues()` available in the environment. */\nlet getRandomValues: <T extends Uint8Array | Uint32Array>(buffer: T) => T = (buffer) => {\n // fall back on Math.random() unless the flag is set to true\n // TRICKY: don't use the _isUndefined method here as can't pass the reference\n if (typeof UUIDV7_DENY_WEAK_RNG !== 'undefined' && UUIDV7_DENY_WEAK_RNG) {\n throw new Error('no cryptographically strong RNG available')\n }\n\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.trunc(Math.random() * 0x1_0000) * 0x1_0000 + Math.trunc(Math.random() * 0x1_0000)\n }\n return buffer\n}\n\n// detect Web Crypto API\nif (!_isUndefined(window.crypto) && crypto.getRandomValues) {\n getRandomValues = (buffer) => crypto.getRandomValues(buffer)\n}\n\n/**\n * Wraps `crypto.getRandomValues()` and compatibles to enable buffering; this\n * uses a small buffer by default to avoid unbearable throughput decline in some\n * environments as well as the waste of time and space for unused values.\n */\nclass DefaultRandom {\n private readonly buffer = new Uint32Array(8)\n private cursor = Infinity\n nextUint32(): number {\n if (this.cursor >= this.buffer.length) {\n getRandomValues(this.buffer)\n this.cursor = 0\n }\n return this.buffer[this.cursor++]\n }\n}\n\nlet defaultGenerator: V7Generator | undefined\n\n/**\n * Generates a UUIDv7 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv7 = (): string => uuidv7obj().toString()\n\n/** Generates a UUIDv7 object. */\nconst uuidv7obj = (): UUID => (defaultGenerator || (defaultGenerator = new V7Generator())).generate()\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "posthog-js",
3
- "version": "1.87.2",
3
+ "version": "1.87.3",
4
4
  "description": "Posthog-js allows you to automatically capture usage and send events to PostHog.",
5
5
  "repository": "https://github.com/PostHog/posthog-js",
6
6
  "author": "hey@posthog.com",
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import Config from './config'\nimport { Breaker, EventHandler, Properties } from './types'\n\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\nconst ArrayProto = Array.prototype\nconst ObjProto = Object.prototype\nconst toString = ObjProto.toString\nconst hasOwnProperty = ObjProto.hasOwnProperty\nconst win: Window & typeof globalThis = typeof window !== 'undefined' ? window : ({} as typeof window)\nconst navigator = win.navigator || { userAgent: '' }\nconst document = win.document || {}\nconst userAgent = navigator.userAgent\nconst localDomains = ['localhost', '127.0.0.1']\n\nconst nativeForEach = ArrayProto.forEach,\n nativeIndexOf = ArrayProto.indexOf,\n // eslint-disable-next-line posthog-js/no-direct-array-check\n nativeIsArray = Array.isArray,\n breaker: Breaker = {}\n\nconst LOGGER_PREFIX = '[PostHog.js]'\n\nexport const logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if ((Config.DEBUG || (window as any).POSTHOG_DEBUG) && !_isUndefined(window.console) && window.console) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(LOGGER_PREFIX, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(LOGGER_PREFIX, ...args)\n },\n\n unintializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n}\n\n// UNDERSCORE\n// Embed part of the Underscore Library\nexport const _trim = function (str: string): string {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n}\n\nexport const _bind_instance_methods = function (obj: Record<string, any>): void {\n for (const func in obj) {\n if (_isFunction(obj[func])) {\n obj[func] = obj[func].bind(obj)\n }\n }\n}\n\nexport function _eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (_isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function _each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (_isNull(obj) || _isUndefined(obj)) {\n return\n }\n if (_isArray(obj)) {\n return _eachArray(obj, iterator, thisArg)\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const _extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n _eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const _isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const _isFunction = function (f: any): f is (...args: any[]) => any {\n try {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return /^\\s*\\bfunction\\b/.test(f)\n } catch (x) {\n return false\n }\n}\n\nexport const _include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (_isNull(obj)) {\n return found\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1\n }\n _each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker\n }\n return\n })\n return found\n}\n\nexport function _includes<T = any>(str: T[] | string, needle: T): boolean {\n return (str as any).indexOf(needle) !== -1\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function _entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\n// Underscore Addons\nexport const _isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !_isArray(x)\n}\n\nexport const _isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (_isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\n\nexport const _isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\n\nexport const _isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const _isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\nexport const _isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const _isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\n\nexport const _isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const _isValidRegex = function (str: string): boolean {\n try {\n new RegExp(str)\n } catch (error) {\n return false\n }\n return true\n}\n\nexport const _isUrlMatchingRegex = function (url: string, pattern: string): boolean {\n if (!_isValidRegex(pattern)) return false\n return new RegExp(pattern).test(url)\n}\n\nexport const _encodeDates = function (obj: Properties): Properties {\n _each(obj, function (v, k) {\n if (_isDate(v)) {\n obj[k] = _formatDate(v)\n } else if (_isObject(v)) {\n obj[k] = _encodeDates(v) // recurse\n }\n })\n return obj\n}\n\nexport const _timestamp = function (): number {\n Date.now =\n Date.now ||\n function () {\n return +new Date()\n }\n return Date.now()\n}\n\nexport const _formatDate = function (d: Date): string {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n: number) {\n return n < 10 ? '0' + n : n\n }\n return (\n d.getUTCFullYear() +\n '-' +\n pad(d.getUTCMonth() + 1) +\n '-' +\n pad(d.getUTCDate()) +\n 'T' +\n pad(d.getUTCHours()) +\n ':' +\n pad(d.getUTCMinutes()) +\n ':' +\n pad(d.getUTCSeconds())\n )\n}\n\nexport const _try = function <T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch (e) {\n return undefined\n }\n}\n\nexport const _safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical('Implementation error. Please turn on debug and contact support@posthog.com.')\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const _safewrap_class = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = _safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const _safewrap_instance_methods = function (obj: Record<string, any>): void {\n for (const func in obj) {\n if (_isFunction(obj[func])) {\n obj[func] = _safewrap(obj[func])\n }\n }\n}\n\nexport const _strip_empty_properties = function (p: Properties): Properties {\n const ret: Properties = {}\n _each(p, function (v, k) {\n if (_isString(v) && v.length > 0) {\n ret[k] = v\n }\n })\n return ret\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (_isArray(value)) {\n result = [] as any as T\n _eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n _each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nconst LONG_STRINGS_ALLOW_LIST = ['$performance_raw']\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any, key) => {\n if (key && LONG_STRINGS_ALLOW_LIST.indexOf(key as string) > -1) {\n return value\n }\n if (_isString(value) && !_isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\nexport function _base64Encode(data: null): null\nexport function _base64Encode(data: undefined): undefined\nexport function _base64Encode(data: string): string\nexport function _base64Encode(data: string | null | undefined): string | null | undefined {\n const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n let o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = ''\n const tmp_arr: string[] = []\n\n if (!data) {\n return data\n }\n\n data = _utf8Encode(data)\n\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++)\n o2 = data.charCodeAt(i++)\n o3 = data.charCodeAt(i++)\n\n bits = (o1 << 16) | (o2 << 8) | o3\n\n h1 = (bits >> 18) & 0x3f\n h2 = (bits >> 12) & 0x3f\n h3 = (bits >> 6) & 0x3f\n h4 = bits & 0x3f\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4)\n } while (i < data.length)\n\n enc = tmp_arr.join('')\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '=='\n break\n case 2:\n enc = enc.slice(0, -1) + '='\n break\n }\n\n return enc\n}\n\nexport const _utf8Encode = function (string: string): string {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n\n let utftext = '',\n start,\n end\n let stringl = 0,\n n\n\n start = end = 0\n stringl = string.length\n\n for (n = 0; n < stringl; n++) {\n const c1 = string.charCodeAt(n)\n let enc = null\n\n if (c1 < 128) {\n end++\n } else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128)\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128)\n }\n if (!_isNull(enc)) {\n if (end > start) {\n utftext += string.substring(start, end)\n }\n utftext += enc\n start = end = n + 1\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length)\n }\n\n return utftext\n}\n\nexport const DEFAULT_BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'applebot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'bot.htm',\n 'bot.php',\n 'crawler',\n 'duckduckbot',\n 'facebookexternal',\n 'facebookcatalog',\n 'gptbot',\n 'hubspot',\n 'linkedinbot',\n 'mj12bot',\n 'petalbot',\n 'pinterest',\n 'prerender',\n 'rogerbot',\n 'screaming frog',\n 'semrushbot',\n 'sitebulb',\n 'twitterbot',\n 'yahoo! slurp',\n 'yandexbot',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google',\n]\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false capturing data\nexport const _isBlockedUA = function (ua: string, customBlockedUserAgents: string[]): boolean {\n if (!ua) {\n return false\n }\n const uaLower = ua.toLowerCase()\n return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents || []).some((blockedUA) => {\n const blockedUaLower = blockedUA.toLowerCase()\n if (uaLower.includes) {\n return uaLower.includes(blockedUaLower)\n } else {\n // IE 11 :/\n return uaLower.indexOf(blockedUaLower) !== -1\n }\n })\n}\n\nexport const _HTTPBuildQuery = function (formdata: Record<string, any>, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n _each(formdata, function (val, key) {\n use_val = encodeURIComponent(val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\nexport const _getQueryParam = function (url: string, param: string): string {\n // Expects a raw URL\n\n const cleanParam = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]')\n const regexS = '[\\\\?&]' + cleanParam + '=([^&#]*)'\n const regex = new RegExp(regexS)\n const results = regex.exec(url)\n if (_isNull(results) || (results && !_isString(results[1]) && (results[1] as any).length)) {\n return ''\n } else {\n let result = results[1]\n try {\n result = decodeURIComponent(result)\n } catch (err) {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const _register_event = (function () {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from PostHog\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n const register_event = function (\n element: Element | Window | Document | Node,\n type: string,\n handler: EventHandler,\n oldSchool?: boolean,\n useCapture?: boolean\n ) {\n if (!element) {\n logger.error('No valid element provided to register_event')\n return\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture)\n } else {\n const ontype = 'on' + type\n const old_handler = (element as any)[ontype] // can be undefined\n ;(element as any)[ontype] = makeHandler(element, handler, old_handler)\n }\n }\n\n function makeHandler(\n element: Element | Window | Document | Node,\n new_handler: EventHandler,\n old_handlers: EventHandler\n ) {\n return function (event: Event): boolean | void {\n event = event || fixEvent(window.event)\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined\n }\n\n let ret = true\n let old_result: any\n\n if (_isFunction(old_handlers)) {\n old_result = old_handlers(event)\n }\n const new_result = new_handler.call(element, event)\n\n if (false === old_result || false === new_result) {\n ret = false\n }\n\n return ret\n }\n }\n\n function fixEvent(event: Event | undefined): Event | undefined {\n if (event) {\n event.preventDefault = fixEvent.preventDefault\n event.stopPropagation = fixEvent.stopPropagation\n }\n return event\n }\n fixEvent.preventDefault = function () {\n ;(this as any as Event).returnValue = false\n }\n fixEvent.stopPropagation = function () {\n ;(this as any as Event).cancelBubble = true\n }\n\n return register_event\n})()\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n\nexport function loadScript(scriptUrlToLoad: string, callback: (error?: string | Event, event?: Event) => void): void {\n const addScript = () => {\n const scriptTag = document.createElement('script')\n scriptTag.type = 'text/javascript'\n scriptTag.src = scriptUrlToLoad\n scriptTag.onload = (event) => callback(undefined, event)\n scriptTag.onerror = (error) => callback(error)\n\n const scripts = document.querySelectorAll('body > script')\n if (scripts.length > 0) {\n scripts[0].parentNode?.insertBefore(scriptTag, scripts[0])\n } else {\n // In exceptional situations this call might load before the DOM is fully ready.\n document.body.appendChild(scriptTag)\n }\n }\n\n if (document.body) {\n addScript()\n } else {\n document.addEventListener('DOMContentLoaded', addScript)\n }\n}\n\nexport const _info = {\n campaignParams: function (customParams?: string[]): Record<string, any> {\n const campaign_keywords = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gclid',\n 'fbclid',\n 'msclkid',\n ].concat(customParams || [])\n\n const params: Record<string, any> = {}\n _each(campaign_keywords, function (kwkey) {\n const kw = _getQueryParam(document.URL, kwkey)\n if (kw.length) {\n params[kwkey] = kw\n }\n })\n\n return params\n },\n\n searchEngine: function (): string | null {\n const referrer = document.referrer\n if (!referrer) {\n return null\n } else if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google'\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing'\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo'\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo'\n } else {\n return null\n }\n },\n\n searchInfo: function (): Record<string, any> {\n const search = _info.searchEngine(),\n param = search != 'yahoo' ? 'q' : 'p',\n ret: Record<string, any> = {}\n\n if (!_isNull(search)) {\n ret['$search_engine'] = search\n\n const keyword = _getQueryParam(document.referrer, param)\n if (keyword.length) {\n ret['ph_keyword'] = keyword\n }\n }\n\n return ret\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function (user_agent: string, vendor: string, opera?: any): string {\n vendor = vendor || '' // vendor is undefined for at least IE9\n if (opera || _includes(user_agent, ' OPR/')) {\n if (_includes(user_agent, 'Mini')) {\n return 'Opera Mini'\n }\n return 'Opera'\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry'\n } else if (_includes(user_agent, 'IEMobile') || _includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile'\n } else if (_includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet'\n } else if (_includes(user_agent, 'Edge') || _includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge'\n } else if (_includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile'\n } else if (_includes(user_agent, 'Chrome')) {\n return 'Chrome'\n } else if (_includes(user_agent, 'CriOS')) {\n return 'Chrome iOS'\n } else if (_includes(user_agent, 'UCWEB') || _includes(user_agent, 'UCBrowser')) {\n return 'UC Browser'\n } else if (_includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS'\n } else if (_includes(vendor, 'Apple')) {\n if (_includes(user_agent, 'Mobile')) {\n return 'Mobile Safari'\n }\n return 'Safari'\n } else if (_includes(user_agent, 'Android')) {\n return 'Android Mobile'\n } else if (_includes(user_agent, 'Konqueror')) {\n return 'Konqueror'\n } else if (_includes(user_agent, 'Firefox')) {\n return 'Firefox'\n } else if (_includes(user_agent, 'MSIE') || _includes(user_agent, 'Trident/')) {\n return 'Internet Explorer'\n } else if (_includes(user_agent, 'Gecko')) {\n return 'Mozilla'\n } else {\n return ''\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function (userAgent: string, vendor: string, opera: string): number | null {\n const browser = _info.browser(userAgent, vendor, opera)\n const versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n Chrome: /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser': /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n Safari: /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n Opera: /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n Firefox: /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n Konqueror: /Konqueror:(\\d+(\\.\\d+)?)/,\n BlackBerry: /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n Mozilla: /rv:(\\d+(\\.\\d+)?)/,\n }\n const regex: RegExp | undefined = versionRegexs[browser as keyof typeof versionRegexs]\n if (_isUndefined(regex)) {\n return null\n }\n const matches = userAgent.match(regex)\n if (!matches) {\n return null\n }\n return parseFloat(matches[matches.length - 2])\n },\n\n browserLanguage: function (): string {\n return (\n navigator.language || // Any modern browser\n (navigator as Record<string, any>).userLanguage // IE11\n )\n },\n\n os: function (user_agent: string): { os_name: string; os_version: string } {\n if (/Windows/i.test(user_agent)) {\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return { os_name: 'Windows Phone', os_version: '' }\n }\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent)\n if (match && match[1]) {\n const version = match[1]\n return { os_name: 'Windows', os_version: version }\n }\n return { os_name: 'Windows', os_version: '' }\n } else if (/(iPhone|iPad|iPod)/.test(user_agent)) {\n const match = /OS (\\d+)_(\\d+)_?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'iOS', os_version: versionParts.join('.') }\n }\n return { os_name: 'iOS', os_version: '' }\n } else if (/Android/.test(user_agent)) {\n const match = /Android (\\d+)\\.(\\d+)\\.?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Android', os_version: versionParts.join('.') }\n }\n return { os_name: 'Android', os_version: '' }\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return { os_name: 'BlackBerry', os_version: '' }\n } else if (/Mac/i.test(user_agent)) {\n const match = /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i.exec(user_agent)\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n return { os_name: 'Mac OS X', os_version: versionParts.join('.') }\n }\n return { os_name: 'Mac OS X', os_version: '' }\n } else if (/Linux/.test(user_agent)) {\n return { os_name: 'Linux', os_version: '' }\n } else if (/CrOS/.test(user_agent)) {\n return { os_name: 'Chrome OS', os_version: '' }\n } else {\n return { os_name: '', os_version: '' }\n }\n },\n\n device: function (user_agent: string): string {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone'\n } else if (/iPad/.test(user_agent)) {\n return 'iPad'\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch'\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone'\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry'\n } else if (/Android/.test(user_agent) && !/Mobile/.test(user_agent)) {\n return 'Android Tablet'\n } else if (/Android/.test(user_agent)) {\n return 'Android'\n } else {\n return ''\n }\n },\n\n deviceType: function (user_agent: string): string {\n const device = this.device(user_agent)\n if (device === 'iPad' || device === 'Android Tablet') {\n return 'Tablet'\n } else if (device) {\n return 'Mobile'\n } else {\n return 'Desktop'\n }\n },\n\n referrer: function (): string {\n return document.referrer || '$direct'\n },\n\n referringDomain: function (): string {\n if (!document.referrer) {\n return '$direct'\n }\n const parser = document.createElement('a') // Unfortunately we cannot use new URL due to IE11\n parser.href = document.referrer\n return parser.host\n },\n\n properties: function (): Properties {\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, (win as any).opera),\n $device: _info.device(userAgent),\n $device_type: _info.deviceType(userAgent),\n }),\n {\n $current_url: win?.location.href,\n $host: win?.location.host,\n $pathname: win?.location.pathname,\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, (win as any).opera),\n $browser_language: _info.browserLanguage(),\n $screen_height: win?.screen.height,\n $screen_width: win?.screen.width,\n $viewport_height: win?.innerHeight,\n $viewport_width: win?.innerWidth,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: _timestamp() / 1000, // epoch time in seconds\n }\n )\n },\n\n people_properties: function (): Properties {\n const { os_name, os_version } = _info.os(userAgent)\n return _extend(\n _strip_empty_properties({\n $os: os_name,\n $os_version: os_version,\n $browser: _info.browser(userAgent, navigator.vendor, (win as any).opera),\n }),\n {\n $browser_version: _info.browserVersion(userAgent, navigator.vendor, (win as any).opera),\n }\n )\n },\n}\n\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!_isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n return hostname.split('.').slice(-2).join('.') !== 'herokuapp.com'\n}\n\nexport { win as window, userAgent, document }\n"]}