File: /home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/utils/cjs/browser.js.map
{"version":3,"file":"browser.js","sources":["../../src/browser.ts"],"sourcesContent":["import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n if (!elem) {\n return '<unknown>';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\n}\n"],"names":["getGlobalObject","isString"],"mappings":"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"}