UNPKG

posthog-js

Version:

Posthog-js allows you to automatically capture usage and send events to PostHog.

78 lines • 3.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RESTORE_QUERY_PARAM = void 0; exports.isCurrentDomainAllowed = isCurrentDomainAllowed; exports.getRestoreTokenFromUrl = getRestoreTokenFromUrl; exports.clearRestoreTokenFromUrl = clearRestoreTokenFromUrl; var logger_1 = require("@posthog/browser-common/utils/logger"); var globals_1 = require("@posthog/browser-common/utils/globals"); var logger = (0, logger_1.createLogger)('[ConversationsManager]'); exports.RESTORE_QUERY_PARAM = 'ph_conv_restore'; /** * Extract hostname from a domain string (handles URLs and plain hostnames) */ function extractHostname(domain) { var hostname = domain.replace(/^https?:\/\//, ''); hostname = hostname.split('/')[0].split('?')[0].split(':')[0]; return hostname || null; } /** * Check if the current domain matches the allowed domains list. * Returns true if: * - domains is empty or not present (no restriction) * - current hostname matches any allowed domain */ function isCurrentDomainAllowed(domains) { var _a; if (!domains || domains.length === 0) { return true; } var currentHostname = (_a = globals_1.window === null || globals_1.window === void 0 ? void 0 : globals_1.window.location) === null || _a === void 0 ? void 0 : _a.hostname; if (!currentHostname) { return true; } return domains.some(function (domain) { var allowedHostname = extractHostname(domain); if (!allowedHostname) { return false; } if (allowedHostname.startsWith('*.')) { var pattern = allowedHostname.slice(2); return currentHostname.endsWith(".".concat(pattern)) || currentHostname === pattern; } return currentHostname === allowedHostname; }); } function getRestoreTokenFromUrl() { var _a; if (!((_a = globals_1.window === null || globals_1.window === void 0 ? void 0 : globals_1.window.location) === null || _a === void 0 ? void 0 : _a.search)) { return null; } try { // oxlint-disable-next-line compat/compat var params = new URLSearchParams(globals_1.window.location.search); var token = params.get(exports.RESTORE_QUERY_PARAM); return (token === null || token === void 0 ? void 0 : token.trim()) || null; } catch (error) { logger.warn('Failed to parse restore token from URL', error); return null; } } function clearRestoreTokenFromUrl() { var _a; if (!(globals_1.window === null || globals_1.window === void 0 ? void 0 : globals_1.window.location) || !((_a = globals_1.window === null || globals_1.window === void 0 ? void 0 : globals_1.window.history) === null || _a === void 0 ? void 0 : _a.replaceState)) { return; } try { // oxlint-disable-next-line compat/compat var url = new URL(globals_1.window.location.href); url.searchParams.delete(exports.RESTORE_QUERY_PARAM); var newUrl = "".concat(url.pathname).concat(url.search).concat(url.hash); globals_1.window.history.replaceState(globals_1.window.history.state, '', newUrl); } catch (error) { logger.warn('Failed to clear restore token from URL', error); } } //# sourceMappingURL=url-utils.js.map