@posthog/browser-common 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +17 -4
  2. package/dist/config.d.ts +9 -0
  3. package/dist/config.js +43 -0
  4. package/dist/config.mjs +9 -0
  5. package/dist/constants.d.ts +3 -0
  6. package/dist/constants.js +44 -0
  7. package/dist/constants.mjs +4 -0
  8. package/dist/utils/array-at-polyfill.d.ts +1 -0
  9. package/dist/utils/array-at-polyfill.js +16 -0
  10. package/dist/utils/array-at-polyfill.mjs +11 -0
  11. package/dist/utils/autocapture-utils.d.ts +23 -0
  12. package/dist/utils/autocapture-utils.js +479 -0
  13. package/dist/utils/autocapture-utils.mjs +385 -0
  14. package/dist/utils/blocked-uas.d.ts +17 -0
  15. package/dist/utils/blocked-uas.js +54 -0
  16. package/dist/utils/blocked-uas.mjs +14 -0
  17. package/dist/utils/cookie-utils.d.ts +1 -0
  18. package/dist/utils/cookie-utils.js +49 -0
  19. package/dist/utils/cookie-utils.mjs +15 -0
  20. package/dist/utils/device-model-utils.d.ts +8 -0
  21. package/dist/utils/device-model-utils.js +52 -0
  22. package/dist/utils/device-model-utils.mjs +18 -0
  23. package/dist/utils/element-utils.d.ts +5 -0
  24. package/dist/utils/element-utils.js +67 -0
  25. package/dist/utils/element-utils.mjs +21 -0
  26. package/dist/utils/elements-chain-utils.d.ts +4 -0
  27. package/dist/utils/elements-chain-utils.js +79 -0
  28. package/dist/utils/elements-chain-utils.mjs +36 -0
  29. package/dist/utils/encode-utils.d.ts +8 -0
  30. package/dist/utils/encode-utils.js +39 -0
  31. package/dist/utils/encode-utils.mjs +5 -0
  32. package/dist/utils/event-utils.d.ts +24 -0
  33. package/dist/utils/event-utils.js +344 -0
  34. package/dist/utils/event-utils.mjs +246 -0
  35. package/dist/utils/general-utils.d.ts +30 -0
  36. package/dist/utils/general-utils.js +191 -0
  37. package/dist/utils/general-utils.mjs +118 -0
  38. package/dist/utils/globals.d.ts +25 -0
  39. package/dist/utils/globals.js +75 -0
  40. package/dist/utils/globals.mjs +14 -0
  41. package/dist/utils/logger.d.ts +16 -0
  42. package/dist/utils/logger.js +83 -0
  43. package/dist/utils/logger.mjs +36 -0
  44. package/dist/utils/matcher-utils.d.ts +3 -0
  45. package/dist/utils/matcher-utils.js +63 -0
  46. package/dist/utils/matcher-utils.mjs +26 -0
  47. package/dist/utils/property-utils.d.ts +23 -0
  48. package/dist/utils/property-utils.js +108 -0
  49. package/dist/utils/property-utils.mjs +65 -0
  50. package/dist/utils/prototype-utils.d.ts +7 -0
  51. package/dist/utils/prototype-utils.js +64 -0
  52. package/dist/utils/prototype-utils.mjs +27 -0
  53. package/dist/utils/regex-utils.d.ts +2 -0
  54. package/dist/utils/regex-utils.js +54 -0
  55. package/dist/utils/regex-utils.mjs +17 -0
  56. package/dist/utils/request-utils.d.ts +15 -0
  57. package/dist/utils/request-utils.js +153 -0
  58. package/dist/utils/request-utils.mjs +95 -0
  59. package/dist/utils/simple-event-emitter.d.ts +5 -0
  60. package/dist/utils/simple-event-emitter.js +51 -0
  61. package/dist/utils/simple-event-emitter.mjs +17 -0
  62. package/dist/utils/stylesheet-loader.d.ts +7 -0
  63. package/dist/utils/stylesheet-loader.js +53 -0
  64. package/dist/utils/stylesheet-loader.mjs +19 -0
  65. package/dist/utils/type-utils.d.ts +2 -0
  66. package/dist/utils/type-utils.js +41 -0
  67. package/dist/utils/type-utils.mjs +4 -0
  68. package/dist/utils/url-targeting-utils.d.ts +28 -0
  69. package/dist/utils/url-targeting-utils.js +56 -0
  70. package/dist/utils/url-targeting-utils.mjs +19 -0
  71. package/dist/utils/uuidv7.d.ts +43 -0
  72. package/dist/utils/uuidv7.js +172 -0
  73. package/dist/utils/uuidv7.js.LICENSE.txt +9 -0
  74. package/dist/utils/uuidv7.mjs +132 -0
  75. package/dist/utils/uuidv7.mjs.LICENSE.txt +9 -0
  76. package/package.json +37 -3
  77. package/LICENSE +0 -353
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ jsonStringify: ()=>jsonStringify,
28
+ formDataToQuery: ()=>formDataToQuery,
29
+ getQueryParam: ()=>getQueryParam,
30
+ _getHashParam: ()=>_getHashParam,
31
+ convertToURL: ()=>convertToURL,
32
+ isLocalhost: ()=>isLocalhost,
33
+ updateStatusZeroFailureCount: ()=>updateStatusZeroFailureCount,
34
+ isStatusZeroFailureCircuitBreakerTripped: ()=>isStatusZeroFailureCircuitBreakerTripped,
35
+ maskQueryParams: ()=>maskQueryParams
36
+ });
37
+ const core_namespaceObject = require("@posthog/core");
38
+ const external_general_utils_js_namespaceObject = require("./general-utils.js");
39
+ const external_globals_js_namespaceObject = require("./globals.js");
40
+ const external_logger_js_namespaceObject = require("./logger.js");
41
+ const localDomains = [
42
+ 'localhost',
43
+ '127.0.0.1'
44
+ ];
45
+ const jsonStringify = (data, space)=>{
46
+ try {
47
+ return JSON.stringify(data, (_, value)=>'bigint' == typeof value ? value.toString() : value, space);
48
+ } catch {
49
+ return (0, core_namespaceObject.safeJsonStringify)(data);
50
+ }
51
+ };
52
+ const convertToURL = (url)=>{
53
+ const location = external_globals_js_namespaceObject.document?.createElement('a');
54
+ if ((0, core_namespaceObject.isUndefined)(location)) return null;
55
+ location.href = url;
56
+ return location;
57
+ };
58
+ const formDataToQuery = function(formdata, arg_separator = '&') {
59
+ let use_val;
60
+ let use_key;
61
+ const tph_arr = [];
62
+ (0, external_general_utils_js_namespaceObject.each)(formdata, function(val, key) {
63
+ if ((0, core_namespaceObject.isUndefined)(val) || (0, core_namespaceObject.isUndefined)(key) || 'undefined' === key) return;
64
+ use_val = encodeURIComponent((0, core_namespaceObject.isFile)(val) ? val.name : val.toString());
65
+ use_key = encodeURIComponent(key);
66
+ tph_arr[tph_arr.length] = use_key + '=' + use_val;
67
+ });
68
+ return tph_arr.join(arg_separator);
69
+ };
70
+ const getQueryParam = function(url, param) {
71
+ const withoutHash = url.split('#')[0] || '';
72
+ const queryParams = withoutHash.split(/\?(.*)/)[1] || '';
73
+ const cleanedQueryParams = queryParams.replace(/^\?+/g, '');
74
+ const queryParts = cleanedQueryParams.split('&');
75
+ let keyValuePair;
76
+ for(let i = 0; i < queryParts.length; i++){
77
+ const parts = queryParts[i].split('=');
78
+ if (parts[0] === param) {
79
+ keyValuePair = parts;
80
+ break;
81
+ }
82
+ }
83
+ if (!(0, core_namespaceObject.isArray)(keyValuePair) || keyValuePair.length < 2) return '';
84
+ {
85
+ let result = keyValuePair[1];
86
+ try {
87
+ result = decodeURIComponent(result);
88
+ } catch {
89
+ external_logger_js_namespaceObject.logger.error('Skipping decoding for malformed query param: ' + result);
90
+ }
91
+ return result.replace(/\+/g, ' ');
92
+ }
93
+ };
94
+ const maskQueryParams = function(url, maskedParams, mask) {
95
+ if (!url || !maskedParams || !maskedParams.length) return url;
96
+ const splitHash = url.split('#');
97
+ const withoutHash = splitHash[0] || '';
98
+ const hash = splitHash[1];
99
+ const splitQuery = withoutHash.split('?');
100
+ const queryString = splitQuery[1];
101
+ const urlWithoutQueryAndHash = splitQuery[0];
102
+ const queryParts = (queryString || '').split('&');
103
+ const paramStrings = [];
104
+ for(let i = 0; i < queryParts.length; i++){
105
+ const keyValuePair = queryParts[i].split('=');
106
+ if ((0, core_namespaceObject.isArray)(keyValuePair)) if (maskedParams.includes(keyValuePair[0])) paramStrings.push(keyValuePair[0] + '=' + mask);
107
+ else paramStrings.push(queryParts[i]);
108
+ }
109
+ let result = urlWithoutQueryAndHash;
110
+ if (null != queryString) result += '?' + paramStrings.join('&');
111
+ if (null != hash) result += '#' + hash;
112
+ return result;
113
+ };
114
+ const _getHashParam = function(hash, param) {
115
+ const matches = hash.match(new RegExp(param + '=([^&]*)'));
116
+ return matches ? matches[1] : null;
117
+ };
118
+ const isLocalhost = ()=>localDomains.includes(external_globals_js_namespaceObject.location.hostname);
119
+ const isStatusZeroFailureCircuitBreakerTripped = (consecutiveStatusZeroFailures, maxConsecutiveStatusZeroFailures)=>consecutiveStatusZeroFailures >= maxConsecutiveStatusZeroFailures && (0, external_globals_js_namespaceObject.isBrowserOnline)();
120
+ const updateStatusZeroFailureCount = (statusCode, consecutiveStatusZeroFailures, maxConsecutiveStatusZeroFailures, onCircuitBreakerTripped)=>{
121
+ if (0 === statusCode) {
122
+ if ((0, external_globals_js_namespaceObject.isBrowserOnline)()) {
123
+ const updatedConsecutiveStatusZeroFailures = consecutiveStatusZeroFailures + 1;
124
+ if (updatedConsecutiveStatusZeroFailures === maxConsecutiveStatusZeroFailures) onCircuitBreakerTripped();
125
+ return updatedConsecutiveStatusZeroFailures;
126
+ }
127
+ return consecutiveStatusZeroFailures;
128
+ }
129
+ return 0;
130
+ };
131
+ exports._getHashParam = __webpack_exports__._getHashParam;
132
+ exports.convertToURL = __webpack_exports__.convertToURL;
133
+ exports.formDataToQuery = __webpack_exports__.formDataToQuery;
134
+ exports.getQueryParam = __webpack_exports__.getQueryParam;
135
+ exports.isLocalhost = __webpack_exports__.isLocalhost;
136
+ exports.isStatusZeroFailureCircuitBreakerTripped = __webpack_exports__.isStatusZeroFailureCircuitBreakerTripped;
137
+ exports.jsonStringify = __webpack_exports__.jsonStringify;
138
+ exports.maskQueryParams = __webpack_exports__.maskQueryParams;
139
+ exports.updateStatusZeroFailureCount = __webpack_exports__.updateStatusZeroFailureCount;
140
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
141
+ "_getHashParam",
142
+ "convertToURL",
143
+ "formDataToQuery",
144
+ "getQueryParam",
145
+ "isLocalhost",
146
+ "isStatusZeroFailureCircuitBreakerTripped",
147
+ "jsonStringify",
148
+ "maskQueryParams",
149
+ "updateStatusZeroFailureCount"
150
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
151
+ Object.defineProperty(exports, '__esModule', {
152
+ value: true
153
+ });
@@ -0,0 +1,95 @@
1
+ import { isArray, isFile, isUndefined, safeJsonStringify } from "@posthog/core";
2
+ import { each } from "./general-utils.mjs";
3
+ import { document as external_globals_mjs_document, isBrowserOnline, location as external_globals_mjs_location } from "./globals.mjs";
4
+ import { logger } from "./logger.mjs";
5
+ const localDomains = [
6
+ 'localhost',
7
+ '127.0.0.1'
8
+ ];
9
+ const jsonStringify = (data, space)=>{
10
+ try {
11
+ return JSON.stringify(data, (_, value)=>'bigint' == typeof value ? value.toString() : value, space);
12
+ } catch {
13
+ return safeJsonStringify(data);
14
+ }
15
+ };
16
+ const convertToURL = (url)=>{
17
+ const location = external_globals_mjs_document?.createElement('a');
18
+ if (isUndefined(location)) return null;
19
+ location.href = url;
20
+ return location;
21
+ };
22
+ const formDataToQuery = function(formdata, arg_separator = '&') {
23
+ let use_val;
24
+ let use_key;
25
+ const tph_arr = [];
26
+ each(formdata, function(val, key) {
27
+ if (isUndefined(val) || isUndefined(key) || 'undefined' === key) return;
28
+ use_val = encodeURIComponent(isFile(val) ? val.name : val.toString());
29
+ use_key = encodeURIComponent(key);
30
+ tph_arr[tph_arr.length] = use_key + '=' + use_val;
31
+ });
32
+ return tph_arr.join(arg_separator);
33
+ };
34
+ const getQueryParam = function(url, param) {
35
+ const withoutHash = url.split('#')[0] || '';
36
+ const queryParams = withoutHash.split(/\?(.*)/)[1] || '';
37
+ const cleanedQueryParams = queryParams.replace(/^\?+/g, '');
38
+ const queryParts = cleanedQueryParams.split('&');
39
+ let keyValuePair;
40
+ for(let i = 0; i < queryParts.length; i++){
41
+ const parts = queryParts[i].split('=');
42
+ if (parts[0] === param) {
43
+ keyValuePair = parts;
44
+ break;
45
+ }
46
+ }
47
+ if (!isArray(keyValuePair) || keyValuePair.length < 2) return '';
48
+ {
49
+ let result = keyValuePair[1];
50
+ try {
51
+ result = decodeURIComponent(result);
52
+ } catch {
53
+ logger.error('Skipping decoding for malformed query param: ' + result);
54
+ }
55
+ return result.replace(/\+/g, ' ');
56
+ }
57
+ };
58
+ const maskQueryParams = function(url, maskedParams, mask) {
59
+ if (!url || !maskedParams || !maskedParams.length) return url;
60
+ const splitHash = url.split('#');
61
+ const withoutHash = splitHash[0] || '';
62
+ const hash = splitHash[1];
63
+ const splitQuery = withoutHash.split('?');
64
+ const queryString = splitQuery[1];
65
+ const urlWithoutQueryAndHash = splitQuery[0];
66
+ const queryParts = (queryString || '').split('&');
67
+ const paramStrings = [];
68
+ for(let i = 0; i < queryParts.length; i++){
69
+ const keyValuePair = queryParts[i].split('=');
70
+ if (isArray(keyValuePair)) if (maskedParams.includes(keyValuePair[0])) paramStrings.push(keyValuePair[0] + '=' + mask);
71
+ else paramStrings.push(queryParts[i]);
72
+ }
73
+ let result = urlWithoutQueryAndHash;
74
+ if (null != queryString) result += '?' + paramStrings.join('&');
75
+ if (null != hash) result += '#' + hash;
76
+ return result;
77
+ };
78
+ const _getHashParam = function(hash, param) {
79
+ const matches = hash.match(new RegExp(param + '=([^&]*)'));
80
+ return matches ? matches[1] : null;
81
+ };
82
+ const isLocalhost = ()=>localDomains.includes(external_globals_mjs_location.hostname);
83
+ const isStatusZeroFailureCircuitBreakerTripped = (consecutiveStatusZeroFailures, maxConsecutiveStatusZeroFailures)=>consecutiveStatusZeroFailures >= maxConsecutiveStatusZeroFailures && isBrowserOnline();
84
+ const updateStatusZeroFailureCount = (statusCode, consecutiveStatusZeroFailures, maxConsecutiveStatusZeroFailures, onCircuitBreakerTripped)=>{
85
+ if (0 === statusCode) {
86
+ if (isBrowserOnline()) {
87
+ const updatedConsecutiveStatusZeroFailures = consecutiveStatusZeroFailures + 1;
88
+ if (updatedConsecutiveStatusZeroFailures === maxConsecutiveStatusZeroFailures) onCircuitBreakerTripped();
89
+ return updatedConsecutiveStatusZeroFailures;
90
+ }
91
+ return consecutiveStatusZeroFailures;
92
+ }
93
+ return 0;
94
+ };
95
+ export { _getHashParam, convertToURL, formDataToQuery, getQueryParam, isLocalhost, isStatusZeroFailureCircuitBreakerTripped, jsonStringify, maskQueryParams, updateStatusZeroFailureCount };
@@ -0,0 +1,5 @@
1
+ export declare class SimpleEventEmitter {
2
+ private _events;
3
+ on(event: string, listener: (...args: any[]) => void): () => void;
4
+ emit(event: string, payload: any): void;
5
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ SimpleEventEmitter: ()=>SimpleEventEmitter
28
+ });
29
+ class SimpleEventEmitter {
30
+ on(event, listener) {
31
+ if (!this._events[event]) this._events[event] = [];
32
+ this._events[event].push(listener);
33
+ return ()=>{
34
+ this._events[event] = this._events[event].filter((x)=>x !== listener);
35
+ };
36
+ }
37
+ emit(event, payload) {
38
+ for (const listener of this._events[event] || [])listener(payload);
39
+ for (const listener of this._events['*'] || [])listener(event, payload);
40
+ }
41
+ constructor(){
42
+ this._events = {};
43
+ }
44
+ }
45
+ exports.SimpleEventEmitter = __webpack_exports__.SimpleEventEmitter;
46
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
47
+ "SimpleEventEmitter"
48
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
49
+ Object.defineProperty(exports, '__esModule', {
50
+ value: true
51
+ });
@@ -0,0 +1,17 @@
1
+ class SimpleEventEmitter {
2
+ on(event, listener) {
3
+ if (!this._events[event]) this._events[event] = [];
4
+ this._events[event].push(listener);
5
+ return ()=>{
6
+ this._events[event] = this._events[event].filter((x)=>x !== listener);
7
+ };
8
+ }
9
+ emit(event, payload) {
10
+ for (const listener of this._events[event] || [])listener(payload);
11
+ for (const listener of this._events['*'] || [])listener(event, payload);
12
+ }
13
+ constructor(){
14
+ this._events = {};
15
+ }
16
+ }
17
+ export { SimpleEventEmitter };
@@ -0,0 +1,7 @@
1
+ export type StylesheetPreparer = (stylesheet: HTMLStyleElement) => HTMLStyleElement | null;
2
+ export type StylesheetPreparationContext = StylesheetPreparer | {
3
+ config?: {
4
+ prepare_external_dependency_stylesheet?: StylesheetPreparer;
5
+ };
6
+ };
7
+ export declare const prepareStylesheet: (document: Document, innerText: string, context?: StylesheetPreparationContext) => HTMLStyleElement | null;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ prepareStylesheet: ()=>prepareStylesheet
28
+ });
29
+ const core_namespaceObject = require("@posthog/core");
30
+ const external_logger_js_namespaceObject = require("./logger.js");
31
+ const logger = (0, external_logger_js_namespaceObject.createLogger)('[Stylesheet Loader]');
32
+ const getStylesheetPreparer = (context)=>{
33
+ if ((0, core_namespaceObject.isFunction)(context)) return context;
34
+ return context?.config?.prepare_external_dependency_stylesheet;
35
+ };
36
+ const prepareStylesheet = (document, innerText, context)=>{
37
+ let stylesheet = document.createElement('style');
38
+ stylesheet.innerText = innerText;
39
+ const prepareExternalDependencyStylesheet = getStylesheetPreparer(context);
40
+ if (prepareExternalDependencyStylesheet) stylesheet = prepareExternalDependencyStylesheet(stylesheet);
41
+ if (!stylesheet) {
42
+ logger.error('prepare_external_dependency_stylesheet returned null');
43
+ return null;
44
+ }
45
+ return stylesheet;
46
+ };
47
+ exports.prepareStylesheet = __webpack_exports__.prepareStylesheet;
48
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
49
+ "prepareStylesheet"
50
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
51
+ Object.defineProperty(exports, '__esModule', {
52
+ value: true
53
+ });
@@ -0,0 +1,19 @@
1
+ import { isFunction } from "@posthog/core";
2
+ import { createLogger } from "./logger.mjs";
3
+ const logger = createLogger('[Stylesheet Loader]');
4
+ const getStylesheetPreparer = (context)=>{
5
+ if (isFunction(context)) return context;
6
+ return context?.config?.prepare_external_dependency_stylesheet;
7
+ };
8
+ const prepareStylesheet = (document, innerText, context)=>{
9
+ let stylesheet = document.createElement('style');
10
+ stylesheet.innerText = innerText;
11
+ const prepareExternalDependencyStylesheet = getStylesheetPreparer(context);
12
+ if (prepareExternalDependencyStylesheet) stylesheet = prepareExternalDependencyStylesheet(stylesheet);
13
+ if (!stylesheet) {
14
+ logger.error('prepare_external_dependency_stylesheet returned null');
15
+ return null;
16
+ }
17
+ return stylesheet;
18
+ };
19
+ export { prepareStylesheet };
@@ -0,0 +1,2 @@
1
+ export declare const isAngularZonePresent: () => boolean;
2
+ export declare const isDocument: (x: unknown) => x is Document;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ isAngularZonePresent: ()=>isAngularZonePresent,
28
+ isDocument: ()=>isDocument
29
+ });
30
+ const external_globals_js_namespaceObject = require("./globals.js");
31
+ const isAngularZonePresent = ()=>!!external_globals_js_namespaceObject.window?.Zone;
32
+ const isDocument = (x)=>'undefined' != typeof Document && x instanceof Document;
33
+ exports.isAngularZonePresent = __webpack_exports__.isAngularZonePresent;
34
+ exports.isDocument = __webpack_exports__.isDocument;
35
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
36
+ "isAngularZonePresent",
37
+ "isDocument"
38
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
39
+ Object.defineProperty(exports, '__esModule', {
40
+ value: true
41
+ });
@@ -0,0 +1,4 @@
1
+ import { window as external_globals_mjs_window } from "./globals.mjs";
2
+ const isAngularZonePresent = ()=>!!external_globals_mjs_window?.Zone;
3
+ const isDocument = (x)=>'undefined' != typeof Document && x instanceof Document;
4
+ export { isAngularZonePresent, isDocument };
@@ -0,0 +1,28 @@
1
+ import type { PostHogConfig } from '@posthog/types';
2
+ export type UrlTargetingInstance = {
3
+ config: Pick<PostHogConfig, 'get_current_url'>;
4
+ };
5
+ /**
6
+ * Applies the `get_current_url` config hook to an already-resolved URL. Returns `defaultUrl`
7
+ * unchanged when no override is configured, or if the override throws or returns a
8
+ * non-string/empty value.
9
+ *
10
+ * Use this when the caller already has its own URL source (e.g. web experiments read
11
+ * `window.location` via a mockable indirection); otherwise prefer `getTargetingUrl`.
12
+ */
13
+ export declare function applyUrlTargetingOverride(instance: UrlTargetingInstance | undefined, defaultUrl: string): string;
14
+ /**
15
+ * Resolves the URL used for client-side URL targeting: session replay URL triggers, the
16
+ * session replay URL blocklist, survey URL conditions, product tour URL conditions, and web
17
+ * experiment URL conditions.
18
+ *
19
+ * Defaults to `window.location.href`, but honors the `get_current_url` config hook so apps
20
+ * that rewrite their URL (e.g. Electron/desktop builds, or `$current_url` rewrites in
21
+ * `before_send`) can make targeting match the logical URL instead of the raw browser URL.
22
+ *
23
+ * Returns `undefined` when there is no URL available (e.g. non-browser environments).
24
+ *
25
+ * Called on every rrweb event by the replay URL triggers/blocklist, so a configured
26
+ * `get_current_url` override should stay cheap.
27
+ */
28
+ export declare function getTargetingUrl(instance: UrlTargetingInstance | undefined): string | undefined;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getTargetingUrl: ()=>getTargetingUrl,
28
+ applyUrlTargetingOverride: ()=>applyUrlTargetingOverride
29
+ });
30
+ const core_namespaceObject = require("@posthog/core");
31
+ const external_globals_js_namespaceObject = require("./globals.js");
32
+ const external_logger_js_namespaceObject = require("./logger.js");
33
+ function applyUrlTargetingOverride(instance, defaultUrl) {
34
+ const override = instance?.config?.get_current_url;
35
+ if (!(0, core_namespaceObject.isFunction)(override)) return defaultUrl;
36
+ try {
37
+ const result = override(defaultUrl);
38
+ return (0, core_namespaceObject.isString)(result) && result ? result : defaultUrl;
39
+ } catch (e) {
40
+ external_logger_js_namespaceObject.logger.error('Error in get_current_url, falling back to window.location.href', e);
41
+ return defaultUrl;
42
+ }
43
+ }
44
+ function getTargetingUrl(instance) {
45
+ const defaultUrl = external_globals_js_namespaceObject.window?.location?.href;
46
+ return (0, core_namespaceObject.isUndefined)(defaultUrl) ? void 0 : applyUrlTargetingOverride(instance, defaultUrl);
47
+ }
48
+ exports.applyUrlTargetingOverride = __webpack_exports__.applyUrlTargetingOverride;
49
+ exports.getTargetingUrl = __webpack_exports__.getTargetingUrl;
50
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
51
+ "applyUrlTargetingOverride",
52
+ "getTargetingUrl"
53
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
54
+ Object.defineProperty(exports, '__esModule', {
55
+ value: true
56
+ });
@@ -0,0 +1,19 @@
1
+ import { isFunction, isString, isUndefined } from "@posthog/core";
2
+ import { window as external_globals_mjs_window } from "./globals.mjs";
3
+ import { logger } from "./logger.mjs";
4
+ function applyUrlTargetingOverride(instance, defaultUrl) {
5
+ const override = instance?.config?.get_current_url;
6
+ if (!isFunction(override)) return defaultUrl;
7
+ try {
8
+ const result = override(defaultUrl);
9
+ return isString(result) && result ? result : defaultUrl;
10
+ } catch (e) {
11
+ logger.error('Error in get_current_url, falling back to window.location.href', e);
12
+ return defaultUrl;
13
+ }
14
+ }
15
+ function getTargetingUrl(instance) {
16
+ const defaultUrl = external_globals_mjs_window?.location?.href;
17
+ return isUndefined(defaultUrl) ? void 0 : applyUrlTargetingOverride(instance, defaultUrl);
18
+ }
19
+ export { applyUrlTargetingOverride, getTargetingUrl };
@@ -0,0 +1,43 @@
1
+ /**
2
+ * uuidv7: An experimental implementation of the proposed UUID Version 7
3
+ *
4
+ * @license Apache-2.0
5
+ * @copyright 2021-2023 LiosK
6
+ * @packageDocumentation
7
+ *
8
+ * from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts
9
+ */
10
+ /** Represents a UUID as a 16-byte byte array. */
11
+ export declare class UUID {
12
+ readonly bytes: Readonly<Uint8Array>;
13
+ /** @param bytes - The 16-byte byte array representation. */
14
+ constructor(bytes: Readonly<Uint8Array>);
15
+ /**
16
+ * Builds a byte array from UUIDv7 field values.
17
+ *
18
+ * @param unixTsMs - A 48-bit `unix_ts_ms` field value.
19
+ * @param randA - A 12-bit `rand_a` field value.
20
+ * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.
21
+ * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.
22
+ */
23
+ static fromFieldsV7(unixTsMs: number, randA: number, randBHi: number, randBLo: number): UUID;
24
+ /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */
25
+ toString(): string;
26
+ /** Creates an object from `this`. */
27
+ clone(): UUID;
28
+ /** Returns true if `this` is equivalent to `other`. */
29
+ equals(other: UUID): boolean;
30
+ /**
31
+ * Returns a negative integer, zero, or positive integer if `this` is less
32
+ * than, equal to, or greater than `other`, respectively.
33
+ */
34
+ compareTo(other: UUID): number;
35
+ }
36
+ /**
37
+ * Generates a UUIDv7 string.
38
+ *
39
+ * @returns The 8-4-4-4-12 canonical hexadecimal string representation
40
+ * ("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").
41
+ */
42
+ export declare const uuidv7: () => string;
43
+ export declare const uuid7ToTimestampMs: (uuid: string) => number;