highlight.run
Advanced tools
Comparing version 8.10.0 to 8.11.0
# highlight.run | ||
## 8.11.0 | ||
### Minor Changes | ||
- 4574c8dfa: lazy load client bundle from node modules to avoid ad blockers | ||
## 8.10.1 | ||
### Patch Changes | ||
- bd410081e: switch replay to using highlight backend for font cors proxying | ||
## 8.10.0 | ||
@@ -4,0 +16,0 @@ |
@@ -62,7 +62,2 @@ import { ConsoleMethods, DebugOptions, IntegrationOptions, NetworkRecordingOptions, SessionShortcutOptions } from './client.js'; | ||
/** | ||
* Do not use this. | ||
* @private | ||
*/ | ||
scriptUrl?: string; | ||
/** | ||
* Specifies where to send Highlight session data. | ||
@@ -69,0 +64,0 @@ * You should not have to set this unless you are running an on-premise instance. |
@@ -1,2 +0,2 @@ | ||
declare const _default: "8.10.0"; | ||
declare const _default: "8.11.0"; | ||
export default _default; |
@@ -1,2 +0,2 @@ | ||
import { HighlightOptions, HighlightPublicInterface } from '../../client/src/types/types.js'; | ||
import type { HighlightOptions, HighlightPublicInterface } from '../../client/src/types/types.js'; | ||
import { HighlightSegmentMiddleware } from './integrations/segment.js'; | ||
@@ -3,0 +3,0 @@ import configureElectronHighlight from './environments/electron.js'; |
1049
dist/index.js
@@ -1,1045 +0,8 @@ | ||
var __defProp = Object.defineProperty; | ||
var __defProps = Object.defineProperties; | ||
var __getOwnPropDescs = Object.getOwnPropertyDescriptors; | ||
var __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __spreadValues = (a2, b2) => { | ||
for (var prop in b2 || (b2 = {})) | ||
if (__hasOwnProp.call(b2, prop)) | ||
__defNormalProp(a2, prop, b2[prop]); | ||
if (__getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(b2)) { | ||
if (__propIsEnum.call(b2, prop)) | ||
__defNormalProp(a2, prop, b2[prop]); | ||
} | ||
return a2; | ||
}; | ||
var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); | ||
var __objRest = (source, exclude) => { | ||
var target = {}; | ||
for (var prop in source) | ||
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) | ||
target[prop] = source[prop]; | ||
if (source != null && __getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(source)) { | ||
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) | ||
target[prop] = source[prop]; | ||
} | ||
return target; | ||
}; | ||
var __publicField = (obj, key, value) => { | ||
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); | ||
return value; | ||
}; | ||
var __async = (__this, __arguments, generator) => { | ||
return new Promise((resolve, reject) => { | ||
var fulfilled = (value) => { | ||
try { | ||
step(generator.next(value)); | ||
} catch (e2) { | ||
reject(e2); | ||
} | ||
}; | ||
var rejected = (value) => { | ||
try { | ||
step(generator.throw(value)); | ||
} catch (e2) { | ||
reject(e2); | ||
} | ||
}; | ||
var step = (x2) => x2.done ? resolve(x2.value) : Promise.resolve(x2.value).then(fulfilled, rejected); | ||
step((generator = generator.apply(__this, __arguments)).next()); | ||
}); | ||
}; | ||
var _a, _b; | ||
const e = ({ apiKey: e2 }) => { | ||
!function(t2, n2) { | ||
var r2 = t2.amplitude || { _q: [], _iq: {} }, o2 = n2.createElement("script"); | ||
o2.type = "text/javascript", o2.integrity = "sha384-+EO59vL/X7v6VE2s6/F4HxfHlK0nDUVWKVg8K9oUlvffAeeaShVBmbORTC2D3UF+", o2.crossOrigin = "anonymous", o2.async = true, o2.src = "https://cdn.amplitude.com/libs/amplitude-8.17.0-min.gz.js", o2.onload = function() { | ||
t2.amplitude.runQueuedFunctions || console.log("[Amplitude] Error: could not load SDK"), amplitude.getInstance().init(e2); | ||
}; | ||
var i2 = n2.getElementsByTagName("script")[0]; | ||
function s2(e3, t3) { | ||
e3.prototype[t3] = function() { | ||
return this._q.push([t3].concat(Array.prototype.slice.call(arguments, 0))), this; | ||
}; | ||
} | ||
i2.parentNode.insertBefore(o2, i2); | ||
for (var a2 = function() { | ||
return this._q = [], this; | ||
}, c2 = ["add", "append", "clearAll", "prepend", "set", "setOnce", "unset", "preInsert", "postInsert", "remove"], l2 = 0; l2 < c2.length; l2++) | ||
s2(a2, c2[l2]); | ||
r2.Identify = a2; | ||
for (var d2 = function() { | ||
return this._q = [], this; | ||
}, u2 = ["setProductId", "setQuantity", "setPrice", "setRevenueType", "setEventProperties"], h2 = 0; h2 < u2.length; h2++) | ||
s2(d2, u2[h2]); | ||
r2.Revenue = d2; | ||
var p2 = ["init", "logEvent", "logRevenue", "setUserId", "setUserProperties", "setOptOut", "setVersionName", "setDomain", "setDeviceId", "enableTracking", "setGlobalUserProperties", "identify", "clearUserProperties", "setGroup", "logRevenueV2", "regenerateDeviceId", "groupIdentify", "onInit", "logEventWithTimestamp", "logEventWithGroups", "setSessionId", "resetSessionId"]; | ||
function g2(e3) { | ||
function t3(t4) { | ||
e3[t4] = function() { | ||
e3._q.push([t4].concat(Array.prototype.slice.call(arguments, 0))); | ||
}; | ||
} | ||
for (var n3 = 0; n3 < p2.length; n3++) | ||
t3(p2[n3]); | ||
} | ||
g2(r2), r2.getInstance = function(e3) { | ||
return e3 = (e3 && 0 !== e3.length ? e3 : "$default_instance").toLowerCase(), Object.prototype.hasOwnProperty.call(r2._iq, e3) || (r2._iq[e3] = { _q: [] }, g2(r2._iq[e3])), r2._iq[e3]; | ||
}, t2.amplitude = r2; | ||
}(window, document); | ||
}; | ||
var t, n; | ||
(n = t || (t = {})).RECORDING_START_TIME = "highlightRecordingStartTime", n.SEGMENT_LAST_SENT_HASH_KEY = "HIGHLIGHT_SEGMENT_LAST_SENT_HASH_KEY", n.SESSION_DATA = "sessionData", n.SESSION_SECURE_ID = "sessionSecureID", n.USER_IDENTIFIER = "highlightIdentifier", n.USER_OBJECT = "highlightUserObject", n.PAYLOAD_ID = "payloadId"; | ||
const r = "https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js"; | ||
function o(e2) { | ||
if (!e2 || !e2.outerHTML) | ||
return ""; | ||
let t2 = ""; | ||
for (; e2.parentElement; ) { | ||
let n2 = e2.localName; | ||
if (!n2) | ||
break; | ||
n2 = n2.toLowerCase(); | ||
let r2 = e2.parentElement, o2 = []; | ||
if (r2.children && r2.children.length > 0) | ||
for (let e3 = 0; e3 < r2.children.length; e3++) { | ||
let t3 = r2.children[e3]; | ||
t3.localName && t3.localName.toLowerCase && t3.localName.toLowerCase() === n2 && o2.push(t3); | ||
} | ||
o2.length > 1 && (n2 += ":eq(" + o2.indexOf(e2) + ")"), t2 = n2 + (t2 ? ">" + t2 : ""), e2 = r2; | ||
} | ||
return t2; | ||
} | ||
function i(e2) { | ||
return "[object Object]" === Object.prototype.toString.call(e2); | ||
} | ||
function s(e2, t2) { | ||
if (0 === t2) | ||
return true; | ||
const n2 = Object.keys(e2); | ||
for (const r2 of n2) | ||
if (i(e2[r2]) && s(e2[r2], t2 - 1)) | ||
return true; | ||
return false; | ||
} | ||
function a(e2, t2) { | ||
const n2 = { numOfKeysLimit: 50, depthOfLimit: 4 }; | ||
Object.assign(n2, t2); | ||
const r2 = [], a2 = []; | ||
return JSON.stringify(e2, function(e3, t3) { | ||
if (r2.length > 0) { | ||
const n3 = r2.indexOf(this); | ||
~n3 ? r2.splice(n3 + 1) : r2.push(this), ~n3 ? a2.splice(n3, 1 / 0, e3) : a2.push(e3), ~r2.indexOf(t3) && (t3 = r2[0] === t3 ? "[Circular ~]" : "[Circular ~." + a2.slice(0, r2.indexOf(t3)).join(".") + "]"); | ||
} else | ||
r2.push(t3); | ||
if (null == t3) | ||
return t3; | ||
if (function(e4) { | ||
if (i(e4) && Object.keys(e4).length > n2.numOfKeysLimit) | ||
return true; | ||
if ("function" == typeof e4) | ||
return true; | ||
if (e4 instanceof Event && false === e4.isTrusted) { | ||
return 1 === Object.keys(e4).length; | ||
} | ||
if (i(e4) && s(e4, n2.depthOfLimit)) | ||
return true; | ||
return false; | ||
}(t3)) | ||
return function(e4) { | ||
let t4 = e4.toString(); | ||
n2.stringLengthLimit && t4.length > n2.stringLengthLimit && (t4 = `${t4.slice(0, n2.stringLengthLimit)}...`); | ||
return t4; | ||
}(t3); | ||
if (t3 instanceof Event) { | ||
const e4 = {}; | ||
for (const n3 in t3) { | ||
const r3 = t3[n3]; | ||
Array.isArray(r3) ? e4[n3] = o(r3.length ? r3[0] : null) : e4[n3] = r3; | ||
} | ||
return e4; | ||
} | ||
return t3 instanceof Node ? t3 instanceof HTMLElement ? t3 ? t3.outerHTML : "" : t3.nodeName : t3 instanceof Error ? t3.name + ": " + t3.message : t3; | ||
}); | ||
} | ||
"undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self && self; | ||
function c(e2) { | ||
return e2 && e2.__esModule && Object.prototype.hasOwnProperty.call(e2, "default") ? e2.default : e2; | ||
} | ||
var l, d, u, h, p, g = { exports: {} }, f = { exports: {} }; | ||
function w() { | ||
return l ? f.exports : (l = 1, f.exports = function() { | ||
function e2(e3) { | ||
return !isNaN(parseFloat(e3)) && isFinite(e3); | ||
} | ||
function t2(e3) { | ||
return e3.charAt(0).toUpperCase() + e3.substring(1); | ||
} | ||
function n2(e3) { | ||
return function() { | ||
return this[e3]; | ||
}; | ||
} | ||
var r2 = ["isConstructor", "isEval", "isNative", "isToplevel"], o2 = ["columnNumber", "lineNumber"], i2 = ["fileName", "functionName", "source"], s2 = ["args"], a2 = ["evalOrigin"], c2 = r2.concat(o2, i2, s2, a2); | ||
function l2(e3) { | ||
if (e3) | ||
for (var n3 = 0; n3 < c2.length; n3++) | ||
void 0 !== e3[c2[n3]] && this["set" + t2(c2[n3])](e3[c2[n3]]); | ||
} | ||
l2.prototype = { getArgs: function() { | ||
return this.args; | ||
}, setArgs: function(e3) { | ||
if ("[object Array]" !== Object.prototype.toString.call(e3)) | ||
throw new TypeError("Args must be an Array"); | ||
this.args = e3; | ||
}, getEvalOrigin: function() { | ||
return this.evalOrigin; | ||
}, setEvalOrigin: function(e3) { | ||
if (e3 instanceof l2) | ||
this.evalOrigin = e3; | ||
else { | ||
if (!(e3 instanceof Object)) | ||
throw new TypeError("Eval Origin must be an Object or StackFrame"); | ||
this.evalOrigin = new l2(e3); | ||
} | ||
}, toString: function() { | ||
var e3 = this.getFileName() || "", t3 = this.getLineNumber() || "", n3 = this.getColumnNumber() || "", r3 = this.getFunctionName() || ""; | ||
return this.getIsEval() ? e3 ? "[eval] (" + e3 + ":" + t3 + ":" + n3 + ")" : "[eval]:" + t3 + ":" + n3 : r3 ? r3 + " (" + e3 + ":" + t3 + ":" + n3 + ")" : e3 + ":" + t3 + ":" + n3; | ||
} }, l2.fromString = function(e3) { | ||
var t3 = e3.indexOf("("), n3 = e3.lastIndexOf(")"), r3 = e3.substring(0, t3), o3 = e3.substring(t3 + 1, n3).split(","), i3 = e3.substring(n3 + 1); | ||
if (0 === i3.indexOf("@")) | ||
var s3 = /@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(i3, ""), a3 = s3[1], c3 = s3[2], d3 = s3[3]; | ||
return new l2({ functionName: r3, args: o3 || void 0, fileName: a3, lineNumber: c3 || void 0, columnNumber: d3 || void 0 }); | ||
}; | ||
for (var d2 = 0; d2 < r2.length; d2++) | ||
l2.prototype["get" + t2(r2[d2])] = n2(r2[d2]), l2.prototype["set" + t2(r2[d2])] = /* @__PURE__ */ function(e3) { | ||
return function(t3) { | ||
this[e3] = Boolean(t3); | ||
}; | ||
}(r2[d2]); | ||
for (var u2 = 0; u2 < o2.length; u2++) | ||
l2.prototype["get" + t2(o2[u2])] = n2(o2[u2]), l2.prototype["set" + t2(o2[u2])] = /* @__PURE__ */ function(t3) { | ||
return function(n3) { | ||
if (!e2(n3)) | ||
throw new TypeError(t3 + " must be a Number"); | ||
this[t3] = Number(n3); | ||
}; | ||
}(o2[u2]); | ||
for (var h2 = 0; h2 < i2.length; h2++) | ||
l2.prototype["get" + t2(i2[h2])] = n2(i2[h2]), l2.prototype["set" + t2(i2[h2])] = /* @__PURE__ */ function(e3) { | ||
return function(t3) { | ||
this[e3] = String(t3); | ||
}; | ||
}(i2[h2]); | ||
return l2; | ||
}()); | ||
} | ||
const m = c(g.exports = (d = w(), u = /(^|@)\S+:\d+/, h = /^\s*at .*(\S+:\d+|\(native\))/m, p = /^(eval@)?(\[native code])?$/, { parse: function(e2) { | ||
if (void 0 !== e2.stacktrace || void 0 !== e2["opera#sourceloc"]) | ||
return this.parseOpera(e2); | ||
if (e2.stack && e2.stack.match(h)) | ||
return this.parseV8OrIE(e2); | ||
if (e2.stack) | ||
return this.parseFFOrSafari(e2); | ||
throw new Error("Cannot parse given Error object"); | ||
}, extractLocation: function(e2) { | ||
if (-1 === e2.indexOf(":")) | ||
return [e2]; | ||
var t2 = /(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e2.replace(/[()]/g, "")); | ||
return [t2[1], t2[2] || void 0, t2[3] || void 0]; | ||
}, parseV8OrIE: function(e2) { | ||
return e2.stack.split("\n").filter(function(e3) { | ||
return !!e3.match(h); | ||
}, this).map(function(e3) { | ||
e3.indexOf("(eval ") > -1 && (e3 = e3.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(\),.*$)/g, "")); | ||
var t2 = e3.replace(/^\s+/, "").replace(/\(eval code/g, "("), n2 = t2.match(/ (\((.+):(\d+):(\d+)\)$)/), r2 = (t2 = n2 ? t2.replace(n2[0], "") : t2).split(/\s+/).slice(1), o2 = this.extractLocation(n2 ? n2[1] : r2.pop()), i2 = r2.join(" ") || void 0, s2 = ["eval", "<anonymous>"].indexOf(o2[0]) > -1 ? void 0 : o2[0]; | ||
return new d({ functionName: i2, fileName: s2, lineNumber: o2[1], columnNumber: o2[2], source: e3 }); | ||
}, this); | ||
}, parseFFOrSafari: function(e2) { | ||
return e2.stack.split("\n").filter(function(e3) { | ||
return !e3.match(p); | ||
}, this).map(function(e3) { | ||
if (e3.indexOf(" > eval") > -1 && (e3 = e3.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1")), -1 === e3.indexOf("@") && -1 === e3.indexOf(":")) | ||
return new d({ functionName: e3 }); | ||
var t2 = /((.*".+"[^@]*)?[^@]*)(?:@)/, n2 = e3.match(t2), r2 = n2 && n2[1] ? n2[1] : void 0, o2 = this.extractLocation(e3.replace(t2, "")); | ||
return new d({ functionName: r2, fileName: o2[0], lineNumber: o2[1], columnNumber: o2[2], source: e3 }); | ||
}, this); | ||
}, parseOpera: function(e2) { | ||
return !e2.stacktrace || e2.message.indexOf("\n") > -1 && e2.message.split("\n").length > e2.stacktrace.split("\n").length ? this.parseOpera9(e2) : e2.stack ? this.parseOpera11(e2) : this.parseOpera10(e2); | ||
}, parseOpera9: function(e2) { | ||
for (var t2 = /Line (\d+).*script (?:in )?(\S+)/i, n2 = e2.message.split("\n"), r2 = [], o2 = 2, i2 = n2.length; o2 < i2; o2 += 2) { | ||
var s2 = t2.exec(n2[o2]); | ||
s2 && r2.push(new d({ fileName: s2[2], lineNumber: s2[1], source: n2[o2] })); | ||
} | ||
return r2; | ||
}, parseOpera10: function(e2) { | ||
for (var t2 = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i, n2 = e2.stacktrace.split("\n"), r2 = [], o2 = 0, i2 = n2.length; o2 < i2; o2 += 2) { | ||
var s2 = t2.exec(n2[o2]); | ||
s2 && r2.push(new d({ functionName: s2[3] || void 0, fileName: s2[2], lineNumber: s2[1], source: n2[o2] })); | ||
} | ||
return r2; | ||
}, parseOpera11: function(e2) { | ||
return e2.stack.split("\n").filter(function(e3) { | ||
return !!e3.match(u) && !e3.match(/^Error created at/); | ||
}, this).map(function(e3) { | ||
var t2, n2 = e3.split("@"), r2 = this.extractLocation(n2.pop()), o2 = n2.shift() || "", i2 = o2.replace(/<anonymous function(: (\w+))?>/, "$2").replace(/\([^)]*\)/g, "") || void 0; | ||
o2.match(/\(([^)]*)\)/) && (t2 = o2.replace(/^[^(]+\(([^)]*)\)$/, "$1")); | ||
var s2 = void 0 === t2 || "[arguments not available]" === t2 ? void 0 : t2.split(","); | ||
return new d({ functionName: i2, args: s2, fileName: r2[0], lineNumber: r2[1], columnNumber: r2[2], source: e3 }); | ||
}, this); | ||
} })); | ||
function y(e2, t2) { | ||
const n2 = t2.logger; | ||
if (!n2) | ||
return () => { | ||
}; | ||
let r2; | ||
r2 = "string" == typeof n2 ? window[n2] : n2; | ||
const o2 = []; | ||
if (t2.level.includes("error") && window) { | ||
const n3 = (n4) => { | ||
const { message: r3, error: o3 } = n4; | ||
let i3 = []; | ||
o3 && (i3 = m.parse(o3)); | ||
const s2 = [a(r3, t2.stringifyOptions)]; | ||
e2({ type: "Error", trace: i3, time: Date.now(), value: s2 }); | ||
}; | ||
window.addEventListener("error", n3), o2.push(() => { | ||
window && window.removeEventListener("error", n3); | ||
}); | ||
} | ||
for (const e3 of t2.level) | ||
o2.push(i2(r2, e3)); | ||
return () => { | ||
o2.forEach((e3) => e3()); | ||
}; | ||
function i2(n3, r3) { | ||
return n3[r3] ? function(e3, t3, n4) { | ||
try { | ||
if (!(t3 in e3)) | ||
return () => { | ||
}; | ||
const r4 = e3[t3], o3 = n4(r4); | ||
return "function" == typeof o3 && (o3.prototype = o3.prototype || {}, Object.defineProperties(o3, { __rrweb_original__: { enumerable: false, value: r4 } })), e3[t3] = o3, () => { | ||
e3[t3] = r4; | ||
}; | ||
} catch (e4) { | ||
return () => { | ||
}; | ||
} | ||
}(n3, r3, (n4) => (...o3) => { | ||
n4.apply(this, o3); | ||
try { | ||
const n5 = m.parse(new Error()), i3 = t2.serializeConsoleAttributes ? o3.map((e3) => "object" == typeof e3 ? a(e3, t2.stringifyOptions) : e3) : o3.filter((e3) => "object" != typeof e3).map((e3) => `${e3}`); | ||
e2({ type: r3, trace: n5.slice(1), value: i3, attributes: a(o3.filter((e3) => "object" == typeof e3).reduce((e3, t3) => __spreadValues(__spreadValues({}, e3), t3), {}), t2.stringifyOptions), time: Date.now() }); | ||
} catch (e3) { | ||
n4("highlight logger error:", e3, ...o3); | ||
} | ||
}) : () => { | ||
}; | ||
} | ||
} | ||
var b = { exports: {} }; | ||
!function(e2, t2) { | ||
function n2(e3, t3) { | ||
var n3 = [], r2 = []; | ||
return null == t3 && (t3 = function(e4, t4) { | ||
return n3[0] === t4 ? "[Circular ~]" : "[Circular ~." + r2.slice(0, n3.indexOf(t4)).join(".") + "]"; | ||
}), function(o2, i2) { | ||
if (n3.length > 0) { | ||
var s2 = n3.indexOf(this); | ||
~s2 ? n3.splice(s2 + 1) : n3.push(this), ~s2 ? r2.splice(s2, 1 / 0, o2) : r2.push(o2), ~n3.indexOf(i2) && (i2 = t3.call(this, o2, i2)); | ||
} else | ||
n3.push(i2); | ||
return null == e3 ? i2 : e3.call(this, o2, i2); | ||
}; | ||
} | ||
(b.exports = function(e3, t3, r2, o2) { | ||
return JSON.stringify(e3, n2(t3, o2), r2); | ||
}).getSerialize = n2; | ||
}(); | ||
const k = c(b.exports); | ||
function v(e2, t2, n2, r2) { | ||
var _a2, _b2, _c, _d; | ||
let o2 = []; | ||
try { | ||
o2 = m.parse(r2 != null ? r2 : t2); | ||
} catch (e3) { | ||
o2 = m.parse(new Error()); | ||
} | ||
let i2 = {}; | ||
t2 instanceof Error && (t2 = t2.message).cause && (i2 = { "exception.cause": t2.cause }); | ||
const s2 = S(o2); | ||
e2({ event: k(t2), type: "window.onerror", url: window.location.href, source: n2 != null ? n2 : "", lineNumber: ((_a2 = s2[0]) == null ? void 0 : _a2.lineNumber) ? (_b2 = s2[0]) == null ? void 0 : _b2.lineNumber : 0, columnNumber: ((_c = s2[0]) == null ? void 0 : _c.columnNumber) ? (_d = s2[0]) == null ? void 0 : _d.columnNumber : 0, stackTrace: s2, timestamp: (/* @__PURE__ */ new Date()).toISOString(), payload: i2 ? k(i2) : void 0 }); | ||
} | ||
const R = (e2, { enablePromisePatch: t2 }) => { | ||
if ("undefined" == typeof window) | ||
return () => { | ||
}; | ||
const n2 = window.onerror = (t3, n3, r3, o3, i3) => { | ||
v(e2, t3, n3, i3); | ||
}, r2 = window.onunhandledrejection = (t3) => { | ||
if (t3.reason) { | ||
const n3 = t3.promise; | ||
n3.getStack ? v(e2, t3.reason, t3.type, n3.getStack()) : v(e2, t3.reason, t3.type); | ||
} | ||
}, o2 = window.Promise, i2 = class extends o2 { | ||
constructor(e3) { | ||
super(e3); | ||
__publicField(this, "promiseCreationError"); | ||
this.promiseCreationError = new Error(); | ||
} | ||
getStack() { | ||
return this.promiseCreationError; | ||
} | ||
static shouldPatch() { | ||
const e3 = void 0 === window.Zone; | ||
return t2 && e3; | ||
} | ||
}; | ||
return i2.shouldPatch() && (window.Promise = i2), () => { | ||
window.Promise = o2, window.onunhandledrejection = r2, window.onerror = n2; | ||
}; | ||
}, S = (e2) => { | ||
var _a2, _b2; | ||
if (0 === e2.length) | ||
return e2; | ||
const t2 = e2[0]; | ||
return ((_a2 = t2.fileName) == null ? void 0 : _a2.includes("highlight.run")) || ((_b2 = t2.fileName) == null ? void 0 : _b2.includes("highlight.io")) || "new highlightPromise" === t2.functionName ? e2.slice(1) : e2; | ||
}, E = ["assert", "count", "countReset", "debug", "dir", "dirxml", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "table", "time", "timeEnd", "timeLog", "trace", "warn"]; | ||
var N, C, O, _; | ||
(C = N || (N = {})).DeviceMemory = "DeviceMemory", C.ViewportHeight = "ViewportHeight", C.ViewportWidth = "ViewportWidth", C.ViewportArea = "ViewportArea", (_ = O || (O = {})).Device = "Device", _.WebVital = "WebVital", _.Performance = "Performance", _.Frontend = "Frontend", _.Backend = "Backend"; | ||
const T = ['["\\"Script error.\\""]', '"Script error."', '["\\"Load failed.\\""]', '"Load failed."', '["\\"Network request failed.\\""]', '"Network request failed."', '["\\"Document is not focused.\\""]', '"Document is not focused."', '["\\"Failed to fetch\\""]', '"Failed to fetch"', '[{"isTrusted":true}]', '{"isTrusted":true}', '["{}"]', '"{}"', '[""]', '""', '["\\"\\""]', '""'], L = ["websocket error", '\\"ResizeObserver loop'], x = (e2, t2, n2) => { | ||
const r2 = I(t2, e2.headers, n2); | ||
return __spreadProps(__spreadValues({}, e2), { headers: r2 }); | ||
}, I = (e2, t2, n2) => { | ||
var _a2, _b2; | ||
const r2 = __spreadValues({}, t2); | ||
return n2 ? ((_a2 = Object.keys(r2)) == null ? void 0 : _a2.forEach((e3) => { | ||
[...n2].includes(e3 == null ? void 0 : e3.toLowerCase()) || (r2[e3] = "[REDACTED]"); | ||
}), r2) : ((_b2 = Object.keys(r2)) == null ? void 0 : _b2.forEach((t3) => { | ||
[...H, ...e2].includes(t3 == null ? void 0 : t3.toLowerCase()) && (r2[t3] = "[REDACTED]"); | ||
}), r2); | ||
}, H = ["authorization", "cookie", "proxy-authorization", "token"], P = ["https://www.googleapis.com/identitytoolkit", "https://securetoken.googleapis.com"], q = "X-Highlight-Request", j = (e2) => { | ||
let t2 = e2; | ||
return e2.startsWith("https://") || e2.startsWith("http://") || (t2 = `${window.location.origin}${t2}`), t2.replace(/\/+$/, ""); | ||
}, D = (e2, t2, n2, r2) => { | ||
e2.sort((e3, t3) => e3.responseEnd - t3.responseEnd); | ||
const o2 = e2.reduce((e3, t3) => { | ||
const r3 = j(t3.name); | ||
return t3.initiatorType === n2 ? e3[n2][r3] = [...e3[n2][r3] || [], t3] : e3.others[r3] = [...e3.others[r3] || [], t3], e3; | ||
}, { xmlhttprequest: {}, others: {}, fetch: {} }); | ||
let i2 = {}; | ||
i2 = t2.reduce((e3, t3) => { | ||
const n3 = j(t3.request.url); | ||
return e3[n3] = [...e3[n3] || [], t3], e3; | ||
}, i2); | ||
for (let e3 in o2[n2]) { | ||
const t3 = o2[n2][e3], r3 = i2[e3]; | ||
if (!r3) | ||
continue; | ||
const s3 = Math.max(t3.length - r3.length, 0); | ||
for (let e4 = s3; e4 < t3.length; e4++) | ||
t3[e4] && (t3[e4].requestResponsePair = r3[e4 - s3]); | ||
} | ||
let s2 = []; | ||
for (let e3 in o2) | ||
for (let t3 in o2[e3]) | ||
s2 = s2.concat(o2[e3][t3]); | ||
return s2.sort((e3, t3) => e3.fetchStart - t3.fetchStart).reduce((e3, t3) => { | ||
let n3 = t3.requestResponsePair; | ||
return n3 && (n3 = ((e4, { headersToRedact: t4, headersToRecord: n4, requestResponseSanitizer: r3 }) => { | ||
var _a2, _b2; | ||
let o3 = e4; | ||
if (r3) { | ||
let e5 = true; | ||
try { | ||
o3.request.body = JSON.parse(o3.request.body); | ||
} catch (t6) { | ||
e5 = false; | ||
} | ||
let t5 = true; | ||
try { | ||
o3.response.body = JSON.parse(o3.response.body); | ||
} catch (e6) { | ||
t5 = false; | ||
} | ||
try { | ||
o3 = r3(o3); | ||
} catch (e6) { | ||
} finally { | ||
e5 = e5 && !!((_a2 = o3 == null ? void 0 : o3.request) == null ? void 0 : _a2.body), t5 = t5 && !!((_b2 = o3 == null ? void 0 : o3.response) == null ? void 0 : _b2.body), e5 && (o3.request.body = JSON.stringify(o3.request.body)), t5 && (o3.response.body = JSON.stringify(o3.response.body)); | ||
} | ||
if (!o3) | ||
return null; | ||
} | ||
const _c = o3, { request: i3, response: s3 } = _c, a2 = __objRest(_c, ["request", "response"]); | ||
return __spreadValues({ request: x(i3, t4, n4), response: x(s3, t4, n4) }, a2); | ||
})(t3.requestResponsePair, r2), !n3) || (t3.toJSON = function() { | ||
return { initiatorType: this.initiatorType, startTimeAbs: window.performance.timeOrigin + this.startTime, responseEndAbs: window.performance.timeOrigin + this.responseEnd, name: this.name, transferSize: this.transferSize, encodedBodySize: this.encodedBodySize, requestResponsePairs: n3 }; | ||
}, e3.push(t3)), e3; | ||
}, []); | ||
}, A = (e2, t2, n2) => { | ||
return o2 = t2, !((r2 = e2).toLocaleLowerCase().includes("https://pub.highlight.run") || r2.toLocaleLowerCase().includes("highlight.io") || r2.toLocaleLowerCase().includes(o2)) || B(e2, n2); | ||
var r2, o2; | ||
}, B = (e2, t2) => { | ||
var _a2; | ||
let n2 = []; | ||
true === t2 ? (n2 = ["localhost", /^\//], ((_a2 = window == null ? void 0 : window.location) == null ? void 0 : _a2.host) && n2.push(window.location.host)) : t2 instanceof Array && (n2 = t2); | ||
let r2 = false; | ||
return n2.forEach((t3) => { | ||
e2.match(t3) && (r2 = true); | ||
}), r2; | ||
}; | ||
const U = () => function(e2) { | ||
for (var t2 = "", n2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", r2 = 0; r2 < e2; r2++) | ||
t2 += n2.charAt(Math.floor(62 * Math.random())); | ||
return t2; | ||
}(10), W = (e2, t2) => e2 + "/" + t2, K = (e2, t2, n2, r2, o2, i2, s2) => { | ||
const a2 = XMLHttpRequest.prototype, c2 = a2.open, l2 = a2.send, d2 = a2.setRequestHeader; | ||
return a2.open = function(e3, t3) { | ||
return this._method = e3, this._url = t3, this._requestHeaders = {}, this._shouldRecordHeaderAndBody = !r2.some((e4) => t3.toLowerCase().includes(e4)), c2.apply(this, arguments); | ||
}, a2.setRequestHeader = function(e3, t3) { | ||
return this._requestHeaders[e3] = t3, d2.apply(this, arguments); | ||
}, a2.send = function(r3) { | ||
if (!A(this._url, t2, n2)) | ||
return l2.apply(this, arguments); | ||
const a3 = U(); | ||
B(this._url, n2) && this.setRequestHeader(q, W(o2, a3)); | ||
const c3 = this._shouldRecordHeaderAndBody, d3 = { id: a3, url: this._url, verb: this._method, headers: c3 ? this._requestHeaders : {}, body: void 0 }; | ||
if (c3 && r3) { | ||
const e3 = z(r3, d3.url); | ||
e3 && (d3.body = M(e3, i2, s2, d3.headers)); | ||
} | ||
return this.addEventListener("load", function() { | ||
return __async(this, null, function* () { | ||
const t3 = { status: this.status, headers: {}, body: void 0 }; | ||
if (c3) { | ||
const e3 = this.getAllResponseHeaders().trim().split(/[\r\n]+/), n3 = {}; | ||
if (e3.forEach(function(e4) { | ||
const t4 = e4.split(": "), r4 = t4.shift(); | ||
n3[r4] = t4.join(": "); | ||
}), t3.headers = n3, r3) { | ||
const e4 = z(r3, d3.url); | ||
e4 && (d3.body = M(e4, i2, s2, t3.headers)); | ||
} | ||
if ("" === this.responseType || "text" === this.responseType) | ||
t3.body = M(this.responseText, i2, s2, t3.headers), t3.size = 8 * this.responseText.length; | ||
else if ("blob" === this.responseType) { | ||
if (this.response instanceof Blob) | ||
try { | ||
const e4 = yield this.response.text(); | ||
t3.body = M(e4, i2, s2, t3.headers), t3.size = this.response.size; | ||
} catch (e4) { | ||
} | ||
} else | ||
try { | ||
t3.body = M(this.response, i2, s2, t3.headers); | ||
} catch (e4) { | ||
} | ||
} | ||
e2({ request: d3, response: t3, urlBlocked: !c3 }); | ||
}); | ||
}), this.addEventListener("error", function() { | ||
return __async(this, null, function* () { | ||
const t3 = { status: this.status, headers: void 0, body: void 0 }; | ||
e2({ request: d3, response: t3, urlBlocked: false }); | ||
}); | ||
}), l2.apply(this, arguments); | ||
}, () => { | ||
a2.open = c2, a2.send = l2, a2.setRequestHeader = d2; | ||
}; | ||
}, z = (e2, t2) => { | ||
if ("string" == typeof e2) { | ||
if (!(t2 == null ? void 0 : t2.includes("localhost")) && !(t2 == null ? void 0 : t2.includes("highlight.run")) || !e2.includes("pushPayload")) | ||
return e2; | ||
} else if ("object" == typeof e2 || "number" == typeof e2 || "boolean" == typeof e2) | ||
return k(e2); | ||
return null; | ||
}, F = { "application/json": 67108864, "text/plain": 67108864 }, M = (e2, t2, n2, r2) => { | ||
var _a2, _b2, _c; | ||
let o2 = 65536; | ||
if (r2) { | ||
let e3 = ""; | ||
e3 = "function" == typeof r2.get ? (_a2 = r2.get("content-type")) != null ? _a2 : "" : (_b2 = r2["content-type"]) != null ? _b2 : ""; | ||
try { | ||
e3 = e3.split(";")[0]; | ||
} catch (e4) { | ||
} | ||
o2 = (_c = F[e3]) != null ? _c : 65536; | ||
} | ||
if (e2) { | ||
if (t2) | ||
try { | ||
const n3 = JSON.parse(e2); | ||
Array.isArray(n3) ? n3.forEach((e3) => { | ||
Object.keys(e3).forEach((n4) => { | ||
t2.includes(n4.toLocaleLowerCase()) && (e3[n4] = "[REDACTED]"); | ||
}); | ||
}) : Object.keys(n3).forEach((e3) => { | ||
t2.includes(e3.toLocaleLowerCase()) && (n3[e3] = "[REDACTED]"); | ||
}), e2 = JSON.stringify(n3); | ||
} catch (e3) { | ||
} | ||
if (n2) | ||
try { | ||
const t3 = JSON.parse(e2); | ||
Object.keys(t3).forEach((e3) => { | ||
n2.includes(e3.toLocaleLowerCase()) || (t3[e3] = "[REDACTED]"); | ||
}), e2 = JSON.stringify(t3); | ||
} catch (e3) { | ||
} | ||
} | ||
try { | ||
e2 = e2.slice(0, o2); | ||
} catch (e3) { | ||
} | ||
return e2; | ||
}, V = (e2, t2, n2, r2, o2, i2, s2) => { | ||
const a2 = window._fetchProxy; | ||
return window._fetchProxy = function(c2, l2) { | ||
const { method: d2, url: u2 } = $(c2, l2); | ||
if (!A(u2, t2, n2)) | ||
return a2.call(this, c2, l2); | ||
const h2 = U(); | ||
if (B(u2, n2)) { | ||
l2 = l2 || {}; | ||
let e3 = new Headers(l2.headers); | ||
c2 instanceof Request && [...c2.headers].forEach(([t3, n3]) => e3.set(t3, n3)), e3.set(q, W(o2, h2)), l2.headers = Object.fromEntries(e3.entries()); | ||
} | ||
const p2 = { id: h2, headers: {}, body: void 0, url: u2, verb: d2 }, g2 = !r2.some((e3) => u2.toLowerCase().includes(e3)); | ||
g2 && (p2.headers = Object.fromEntries(new Headers(l2 == null ? void 0 : l2.headers).entries()), p2.body = M(l2 == null ? void 0 : l2.body, i2, s2, l2 == null ? void 0 : l2.headers)); | ||
let f2 = a2.call(this, c2, l2); | ||
return J(f2, p2, e2, g2, i2, s2), f2; | ||
}, () => { | ||
window._fetchProxy = a2; | ||
}; | ||
}, $ = (e2, t2) => { | ||
const n2 = t2 && t2.method || "object" == typeof e2 && "method" in e2 && e2.method || "GET"; | ||
let r2; | ||
return r2 = "object" == typeof e2 ? "url" in e2 && e2.url ? e2.url : e2.toString() : e2, { method: n2, url: r2 }; | ||
}, J = (e2, t2, n2, r2, o2, i2) => { | ||
e2.then((e3) => __async(void 0, null, function* () { | ||
let s2 = { body: void 0, headers: void 0, status: 0, size: 0 }, a2 = false; | ||
if ("stack" in e3 || e3 instanceof Error) | ||
s2 = __spreadProps(__spreadValues({}, s2), { body: e3.message, status: 0, size: void 0 }), a2 = true; | ||
else if ("status" in e3) { | ||
if (s2 = __spreadProps(__spreadValues({}, s2), { status: e3.status }), r2) { | ||
let t3; | ||
try { | ||
const n3 = e3.clone().body; | ||
if (n3) { | ||
let r3, s3 = n3.getReader(), a3 = new TextDecoder(), c2 = ""; | ||
for (; !(r3 = yield s3.read()).done; ) { | ||
let e4 = r3.value; | ||
c2 += a3.decode(e4); | ||
} | ||
t3 = c2, t3 = M(t3, o2, i2, e3.headers); | ||
} else | ||
t3 = ""; | ||
} catch (e4) { | ||
t3 = `Unable to clone response: ${e4}`; | ||
} | ||
s2.body = t3, s2.headers = Object.fromEntries(e3.headers.entries()), s2.size = 8 * t3.length; | ||
} | ||
a2 = true; | ||
} | ||
if (a2) { | ||
n2({ request: t2, response: s2, urlBlocked: !r2 }); | ||
} | ||
})).catch(() => { | ||
}); | ||
}, G = ({ xhrCallback: e2, fetchCallback: t2, webSocketRequestCallback: n2, webSocketEventCallback: r2, disableWebSocketRecording: o2, bodyKeysToRedact: i2, backendUrl: s2, tracingOrigins: a2, urlBlocklist: c2, sessionSecureID: l2, bodyKeysToRecord: d2 }) => { | ||
const u2 = K(e2, s2, a2, c2, l2, i2, d2), h2 = V(t2, s2, a2, c2, l2, i2, d2), p2 = o2 ? () => { | ||
} : ((e3, t3, n3) => { | ||
const r3 = window._highlightWebSocketRequestCallback; | ||
window._highlightWebSocketRequestCallback = e3; | ||
const o3 = window._highlightWebSocketEventCallback; | ||
return window._highlightWebSocketEventCallback = (e4) => { | ||
const _a2 = e4, { message: r4, size: o4 } = _a2, i3 = __objRest(_a2, ["message", "size"]), s3 = n3.some((t4) => e4.name.toLowerCase().includes(t4)); | ||
t3(s3 ? i3 : e4); | ||
}, () => { | ||
window._highlightWebSocketRequestCallback = r3, window._highlightWebSocketEventCallback = o3; | ||
}; | ||
})(n2, r2, c2); | ||
return () => { | ||
u2(), h2(), p2(); | ||
}; | ||
}; | ||
class X { | ||
constructor(e2) { | ||
__publicField(this, "disableConsoleRecording"); | ||
__publicField(this, "reportConsoleErrors"); | ||
__publicField(this, "enablePromisePatch"); | ||
__publicField(this, "consoleMethodsToRecord"); | ||
__publicField(this, "listeners"); | ||
__publicField(this, "errors"); | ||
__publicField(this, "messages"); | ||
__publicField(this, "options"); | ||
__publicField(this, "hasNetworkRecording", true); | ||
__publicField(this, "_backendUrl"); | ||
__publicField(this, "disableNetworkRecording"); | ||
__publicField(this, "enableRecordingNetworkContents"); | ||
__publicField(this, "xhrNetworkContents"); | ||
__publicField(this, "fetchNetworkContents"); | ||
__publicField(this, "disableRecordingWebSocketContents"); | ||
__publicField(this, "webSocketNetworkContents"); | ||
__publicField(this, "webSocketEventContents"); | ||
__publicField(this, "tracingOrigins"); | ||
__publicField(this, "networkHeadersToRedact"); | ||
__publicField(this, "networkBodyKeysToRedact"); | ||
__publicField(this, "networkBodyKeysToRecord"); | ||
__publicField(this, "networkHeaderKeysToRecord"); | ||
__publicField(this, "urlBlocklist"); | ||
__publicField(this, "requestResponseSanitizer"); | ||
var _a2, _b2; | ||
this.options = e2, this.disableConsoleRecording = !!e2.disableConsoleRecording, this.reportConsoleErrors = (_a2 = e2.reportConsoleErrors) != null ? _a2 : false, this.enablePromisePatch = (_b2 = e2.enablePromisePatch) != null ? _b2 : true, this.consoleMethodsToRecord = e2.consoleMethodsToRecord || [...E], this.listeners = [], this.errors = [], this.messages = []; | ||
} | ||
isListening() { | ||
return this.listeners.length > 0; | ||
} | ||
startListening() { | ||
if (this.isListening()) | ||
return; | ||
const e2 = this; | ||
this.disableConsoleRecording || this.listeners.push(y((t2) => { | ||
var _a2, _b2, _c; | ||
if (this.reportConsoleErrors && ("Error" === t2.type || "error" === t2.type) && t2.value && t2.trace) { | ||
const n2 = k(t2.value); | ||
if (T.includes(n2) || L.some((e3) => n2.includes(e3))) | ||
return; | ||
e2.errors.push({ event: n2, type: "console.error", url: window.location.href, source: ((_a2 = t2.trace[0]) == null ? void 0 : _a2.fileName) ? t2.trace[0].fileName : "", lineNumber: ((_b2 = t2.trace[0]) == null ? void 0 : _b2.lineNumber) ? t2.trace[0].lineNumber : 0, columnNumber: ((_c = t2.trace[0]) == null ? void 0 : _c.columnNumber) ? t2.trace[0].columnNumber : 0, stackTrace: t2.trace, timestamp: (/* @__PURE__ */ new Date()).toISOString() }); | ||
} | ||
e2.messages.push(t2); | ||
}, { level: this.consoleMethodsToRecord, logger: "console", stringifyOptions: { depthOfLimit: 10, numOfKeysLimit: 100, stringLengthLimit: 1e3 } })), this.listeners.push(R((t2) => { | ||
T.includes(t2.event) || L.some((e3) => t2.event.includes(e3)) || e2.errors.push(t2); | ||
}, { enablePromisePatch: this.enablePromisePatch })), X.setupNetworkListener(this, this.options); | ||
} | ||
stopListening() { | ||
this.listeners.forEach((e2) => e2()), this.listeners = []; | ||
} | ||
static setupNetworkListener(e2, t2) { | ||
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; | ||
e2._backendUrl = (t2 == null ? void 0 : t2.backendUrl) || "https://pub.highlight.run", e2.xhrNetworkContents = [], e2.fetchNetworkContents = [], e2.webSocketNetworkContents = [], e2.webSocketEventContents = [], e2.networkHeadersToRedact = [], e2.urlBlocklist = [], e2.tracingOrigins = t2.tracingOrigins || [], void 0 !== (t2 == null ? void 0 : t2.disableNetworkRecording) ? (e2.disableNetworkRecording = t2 == null ? void 0 : t2.disableNetworkRecording, e2.enableRecordingNetworkContents = false, e2.disableRecordingWebSocketContents = true, e2.networkHeadersToRedact = [], e2.networkBodyKeysToRedact = [], e2.urlBlocklist = [], e2.networkBodyKeysToRecord = [], e2.networkBodyKeysToRecord = []) : "boolean" == typeof (t2 == null ? void 0 : t2.networkRecording) ? (e2.disableNetworkRecording = !t2.networkRecording, e2.enableRecordingNetworkContents = false, e2.disableRecordingWebSocketContents = true, e2.networkHeadersToRedact = [], e2.networkBodyKeysToRedact = [], e2.urlBlocklist = []) : (void 0 !== ((_a2 = t2.networkRecording) == null ? void 0 : _a2.enabled) ? e2.disableNetworkRecording = !t2.networkRecording.enabled : e2.disableNetworkRecording = false, e2.enableRecordingNetworkContents = ((_b2 = t2.networkRecording) == null ? void 0 : _b2.recordHeadersAndBody) || false, e2.disableRecordingWebSocketContents = ((_c = t2.networkRecording) == null ? void 0 : _c.disableWebSocketEventRecordings) || false, e2.networkHeadersToRedact = ((_e = (_d = t2.networkRecording) == null ? void 0 : _d.networkHeadersToRedact) == null ? void 0 : _e.map((e3) => e3.toLowerCase())) || [], e2.networkBodyKeysToRedact = ((_g = (_f = t2.networkRecording) == null ? void 0 : _f.networkBodyKeysToRedact) == null ? void 0 : _g.map((e3) => e3.toLowerCase())) || [], e2.urlBlocklist = ((_i = (_h = t2.networkRecording) == null ? void 0 : _h.urlBlocklist) == null ? void 0 : _i.map((e3) => e3.toLowerCase())) || [], e2.urlBlocklist = [...e2.urlBlocklist, ...P], e2.requestResponseSanitizer = (_j = t2.networkRecording) == null ? void 0 : _j.requestResponseSanitizer, e2.networkHeaderKeysToRecord = (_k = t2.networkRecording) == null ? void 0 : _k.headerKeysToRecord, e2.networkHeaderKeysToRecord && (e2.networkHeadersToRedact = [], e2.networkHeaderKeysToRecord = e2.networkHeaderKeysToRecord.map((e3) => e3.toLocaleLowerCase())), e2.networkBodyKeysToRecord = (_l = t2.networkRecording) == null ? void 0 : _l.bodyKeysToRecord, e2.networkBodyKeysToRecord && (e2.networkBodyKeysToRedact = [], e2.networkBodyKeysToRecord = e2.networkBodyKeysToRecord.map((e3) => e3.toLocaleLowerCase()))), !e2.disableNetworkRecording && e2.enableRecordingNetworkContents && e2.listeners.push(G({ xhrCallback: (t3) => { | ||
e2.xhrNetworkContents.push(t3); | ||
}, fetchCallback: (t3) => { | ||
e2.fetchNetworkContents.push(t3); | ||
}, webSocketRequestCallback: (t3) => { | ||
e2.webSocketNetworkContents && e2.webSocketNetworkContents.push(t3); | ||
}, webSocketEventCallback: (t3) => { | ||
e2.webSocketEventContents.push(t3); | ||
}, disableWebSocketRecording: e2.disableRecordingWebSocketContents, bodyKeysToRedact: e2.networkBodyKeysToRedact, backendUrl: e2._backendUrl, tracingOrigins: e2.tracingOrigins, urlBlocklist: e2.urlBlocklist, sessionSecureID: t2.sessionSecureID, bodyKeysToRecord: e2.networkBodyKeysToRecord })); | ||
} | ||
static getRecordedNetworkResources(e2, t2) { | ||
var _a2; | ||
let n2 = [], r2 = []; | ||
if (!e2.disableNetworkRecording) { | ||
const r3 = ((_a2 = window == null ? void 0 : window.performance) == null ? void 0 : _a2.timeOrigin) || 0; | ||
n2 = performance.getEntriesByType("resource"); | ||
const o2 = 2 * (t2 - r3); | ||
if (n2 = n2.filter((t3) => A(t3.name, e2._backendUrl, e2.tracingOrigins)).map((e3) => __spreadProps(__spreadValues({}, e3.toJSON()), { offsetStartTime: e3.startTime - o2, offsetResponseEnd: e3.responseEnd - o2, offsetFetchStart: e3.fetchStart - o2 })), e2.enableRecordingNetworkContents) { | ||
const t3 = { headersToRedact: e2.networkHeadersToRedact, headersToRecord: e2.networkHeaderKeysToRecord, requestResponseSanitizer: e2.requestResponseSanitizer }; | ||
n2 = D(n2, e2.xhrNetworkContents, "xmlhttprequest", t3), n2 = D(n2, e2.fetchNetworkContents, "fetch", t3); | ||
} | ||
} | ||
return e2.disableRecordingWebSocketContents || (r2 = e2.webSocketNetworkContents || []), [...n2, ...r2]; | ||
} | ||
static getRecordedWebSocketEvents(e2) { | ||
let t2 = []; | ||
return e2.disableNetworkRecording || e2.disableRecordingWebSocketContents || (t2 = e2.webSocketEventContents), t2; | ||
} | ||
static clearRecordedNetworkResources(e2) { | ||
e2.disableNetworkRecording || (e2.xhrNetworkContents = [], e2.fetchNetworkContents = [], e2.webSocketNetworkContents = [], e2.webSocketEventContents = [], performance.clearResourceTimings()); | ||
} | ||
} | ||
const Y = ({ next: e2, payload: t2 }) => { | ||
if ("undefined" != typeof window && "undefined" != typeof document && "H" in window) { | ||
if ("track" === t2.obj.type) { | ||
const e3 = t2.obj.event, n2 = t2.obj.properties; | ||
window.H.track(e3, n2); | ||
} else if ("identify" === t2.obj.type) { | ||
const e3 = t2.obj.userId; | ||
if (e3 == null ? void 0 : e3.length) { | ||
const n2 = t2.obj.traits; | ||
window.H.identify(e3, n2); | ||
} | ||
} | ||
} | ||
e2(t2); | ||
}; | ||
function Q(e2) { | ||
var _a2; | ||
e2.on && ((_a2 = e2.webContents) == null ? void 0 : _a2.send) && (e2.on("focus", () => { | ||
e2.webContents.send("highlight.run", { visible: true }); | ||
}), e2.on("blur", () => { | ||
e2.webContents.send("highlight.run", { visible: false }); | ||
}), e2.on("close", () => { | ||
e2.webContents.send("highlight.run", { visible: false }); | ||
})); | ||
} | ||
const Z = "8.10.0"; | ||
let ee = new class { | ||
constructor() { | ||
__publicField(this, "storage", {}); | ||
} | ||
getItem(e2) { | ||
var _a2; | ||
return (_a2 = this.storage[e2]) != null ? _a2 : ""; | ||
} | ||
setItem(e2, t2) { | ||
this.storage[e2] = t2; | ||
} | ||
removeItem(e2) { | ||
delete this.storage[e2]; | ||
} | ||
}(); | ||
const te = () => { | ||
try { | ||
return window.localStorage; | ||
} catch (e2) { | ||
return ee; | ||
} | ||
}, ne = () => { | ||
let e2 = JSON.parse((n2 = t.SESSION_DATA, te().getItem(n2) || "{}")); | ||
var n2; | ||
if (e2 && e2.lastPushTime && Date.now() - e2.lastPushTime < 55e3) | ||
return e2; | ||
}, re = () => null; | ||
var oe; | ||
!function(e2) { | ||
e2.Device = "Device", e2.WebVital = "WebVital", e2.Frontend = "Frontend", e2.Backend = "Backend"; | ||
}(oe || (oe = {})); | ||
const ie = (e2, t2) => { | ||
console.warn(`highlight.run warning: (${e2}): `, t2); | ||
}; | ||
let se, ae, ce, le, de = [], ue = false; | ||
const he = { options: void 0, init: (n2, o2) => { | ||
var _a2, _b2, _c, _d, _e, _f, _g, _h; | ||
try { | ||
if (he.options = o2, "undefined" == typeof window || "undefined" == typeof document) | ||
return; | ||
if (!n2) | ||
return void console.info("Highlight is not initializing because projectID was passed undefined."); | ||
let c2 = ne(), l2 = (() => { | ||
var _a3; | ||
const e2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; | ||
var t2 = ""; | ||
const n3 = "undefined" != typeof window && ((_a3 = window.crypto) == null ? void 0 : _a3.getRandomValues), r2 = new Uint32Array(28); | ||
n3 && window.crypto.getRandomValues(r2); | ||
for (let o3 = 0; o3 < 28; o3++) | ||
t2 += e2.charAt(n3 ? r2[o3] % 62 : Math.floor(62 * Math.random())); | ||
return t2; | ||
})(); | ||
if (c2 == null ? void 0 : c2.sessionSecureID) | ||
l2 = c2.sessionSecureID; | ||
else { | ||
const e2 = __spreadProps(__spreadValues({}, c2), { projectID: +n2, sessionSecureID: l2 }); | ||
s2 = t.SESSION_DATA, a2 = JSON.stringify(e2), te().setItem(s2, a2); | ||
} | ||
if (ue) | ||
return { sessionSecureID: l2 }; | ||
ue = true, ae = document.createElement("script"); | ||
var i2 = (o2 == null ? void 0 : o2.scriptUrl) ? o2.scriptUrl : `https://static.highlight.io/v${Z}/index.js`; | ||
ae.setAttribute("src", i2), ae.setAttribute("type", "text/javascript"), document.getElementsByTagName("head")[0].appendChild(ae); | ||
const d2 = { organizationID: n2, debug: o2 == null ? void 0 : o2.debug, backendUrl: o2 == null ? void 0 : o2.backendUrl, tracingOrigins: o2 == null ? void 0 : o2.tracingOrigins, disableNetworkRecording: o2 == null ? void 0 : o2.disableNetworkRecording, networkRecording: o2 == null ? void 0 : o2.networkRecording, disableBackgroundRecording: o2 == null ? void 0 : o2.disableBackgroundRecording, disableConsoleRecording: o2 == null ? void 0 : o2.disableConsoleRecording, disableSessionRecording: o2 == null ? void 0 : o2.disableSessionRecording, reportConsoleErrors: o2 == null ? void 0 : o2.reportConsoleErrors, consoleMethodsToRecord: o2 == null ? void 0 : o2.consoleMethodsToRecord, privacySetting: o2 == null ? void 0 : o2.privacySetting, enableSegmentIntegration: o2 == null ? void 0 : o2.enableSegmentIntegration, enableCanvasRecording: o2 == null ? void 0 : o2.enableCanvasRecording, enablePerformanceRecording: o2 == null ? void 0 : o2.enablePerformanceRecording, enablePromisePatch: o2 == null ? void 0 : o2.enablePromisePatch, samplingStrategy: o2 == null ? void 0 : o2.samplingStrategy, inlineImages: o2 == null ? void 0 : o2.inlineImages, inlineStylesheet: o2 == null ? void 0 : o2.inlineStylesheet, recordCrossOriginIframe: o2 == null ? void 0 : o2.recordCrossOriginIframe, firstloadVersion: Z, environment: (o2 == null ? void 0 : o2.environment) || "production", appVersion: o2 == null ? void 0 : o2.version, serviceName: o2 == null ? void 0 : o2.serviceName, sessionShortcut: o2 == null ? void 0 : o2.sessionShortcut, sessionSecureID: l2, storageMode: o2 == null ? void 0 : o2.storageMode, sendMode: o2 == null ? void 0 : o2.sendMode }; | ||
return le = new X(d2), (o2 == null ? void 0 : o2.manualStart) || le.startListening(), ae.addEventListener("load", () => { | ||
const e2 = () => { | ||
ce = new window.HighlightIO(d2, le), (o2 == null ? void 0 : o2.manualStart) || ce.initialize(); | ||
}; | ||
if ("HighlightIO" in window) | ||
e2(); | ||
else { | ||
const t2 = () => { | ||
"HighlightIO" in window ? e2() : setTimeout(t2, 200); | ||
}; | ||
t2(); | ||
} | ||
}), !((_b2 = (_a2 = o2 == null ? void 0 : o2.integrations) == null ? void 0 : _a2.mixpanel) == null ? void 0 : _b2.disabled) && ((_d = (_c = o2 == null ? void 0 : o2.integrations) == null ? void 0 : _c.mixpanel) == null ? void 0 : _d.projectToken) && (({ projectToken: e2 }) => { | ||
if (window.mixpanel) | ||
return; | ||
var t2, n3, o3; | ||
document, (t2 = window.mixpanel || []).__SV || (window.mixpanel = t2, t2._i = [], t2.init = function(e3, r2, i4) { | ||
function s3(e4, t3) { | ||
var n4 = t3.split("."); | ||
2 == n4.length && (e4 = e4[n4[0]], t3 = n4[1]), e4[t3] = function() { | ||
e4.push([t3].concat(Array.prototype.slice.call(arguments, 0))); | ||
}; | ||
} | ||
var a3 = t2; | ||
for (void 0 !== i4 ? a3 = t2[i4] = [] : i4 = "mixpanel", a3.people = a3.people || [], a3.toString = function(e4) { | ||
var t3 = "mixpanel"; | ||
return "mixpanel" !== i4 && (t3 += "." + i4), e4 || (t3 += " (stub)"), t3; | ||
}, a3.people.toString = function() { | ||
return a3.toString(1) + ".people (stub)"; | ||
}, n3 = "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split(" "), o3 = 0; o3 < n3.length; o3++) | ||
s3(a3, n3[o3]); | ||
var c3 = "set set_once union unset remove delete".split(" "); | ||
a3.get_group = function() { | ||
function e4(e5) { | ||
t3[e5] = function() { | ||
call2_args = arguments, call2 = [e5].concat(Array.prototype.slice.call(call2_args, 0)), a3.push([n4, call2]); | ||
}; | ||
} | ||
for (var t3 = {}, n4 = ["get_group"].concat(Array.prototype.slice.call(arguments, 0)), r3 = 0; r3 < c3.length; r3++) | ||
e4(c3[r3]); | ||
return t3; | ||
}, t2._i.push([e3, r2, i4]); | ||
}, t2.__SV = 1.2); | ||
const i3 = document.createElement("script"); | ||
i3.src = r, document.head.appendChild(i3), i3.addEventListener("load", () => { | ||
var _a3; | ||
(_a3 = window.mixpanel) == null ? void 0 : _a3.init(e2); | ||
}); | ||
})(o2.integrations.mixpanel), !((_f = (_e = o2 == null ? void 0 : o2.integrations) == null ? void 0 : _e.amplitude) == null ? void 0 : _f.disabled) && ((_h = (_g = o2 == null ? void 0 : o2.integrations) == null ? void 0 : _g.amplitude) == null ? void 0 : _h.apiKey) && e(o2.integrations.amplitude), { sessionSecureID: l2 }; | ||
} catch (e2) { | ||
ie("init", e2); | ||
} | ||
var s2, a2; | ||
}, snapshot: (e2) => __async(void 0, null, function* () { | ||
try { | ||
if (ce && ce.ready) | ||
return yield ce.snapshot(e2); | ||
} catch (e3) { | ||
ie("snapshot", e3); | ||
} | ||
}), addSessionFeedback: ({ verbatim: e2, userName: t2, userEmail: n2, timestampOverride: r2 }) => { | ||
try { | ||
he.onHighlightReady(() => ce.addSessionFeedback({ verbatim: e2, timestamp: r2 || (/* @__PURE__ */ new Date()).toISOString(), user_email: n2, user_name: t2 })); | ||
} catch (e3) { | ||
ie("error", e3); | ||
} | ||
}, consumeError: (e2, t2, n2) => { | ||
try { | ||
he.onHighlightReady(() => ce.consumeCustomError(e2, t2, JSON.stringify(n2))); | ||
} catch (e3) { | ||
ie("error", e3); | ||
} | ||
}, error: (e2, t2) => { | ||
try { | ||
he.onHighlightReady(() => ce.pushCustomError(e2, JSON.stringify(t2))); | ||
} catch (e3) { | ||
ie("error", e3); | ||
} | ||
}, track: (e2, t2 = {}) => { | ||
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k; | ||
try { | ||
he.onHighlightReady(() => ce.addProperties(__spreadProps(__spreadValues({}, t2), { event: e2 }))); | ||
const n2 = ce == null ? void 0 : ce.getCurrentSessionURL(); | ||
((_c = (_b2 = (_a2 = he.options) == null ? void 0 : _a2.integrations) == null ? void 0 : _b2.mixpanel) == null ? void 0 : _c.disabled) || ((_d = window.mixpanel) == null ? void 0 : _d.track) && window.mixpanel.track(e2, __spreadProps(__spreadValues({}, t2), { highlightSessionURL: n2 })), ((_g = (_f = (_e = he.options) == null ? void 0 : _e.integrations) == null ? void 0 : _f.amplitude) == null ? void 0 : _g.disabled) || ((_h = window.amplitude) == null ? void 0 : _h.getInstance) && window.amplitude.getInstance().logEvent(e2, __spreadProps(__spreadValues({}, t2), { highlightSessionURL: n2 })), ((_k = (_j = (_i = he.options) == null ? void 0 : _i.integrations) == null ? void 0 : _j.intercom) == null ? void 0 : _k.disabled) || window.Intercom && window.Intercom("trackEvent", e2, t2); | ||
} catch (e3) { | ||
ie("track", e3); | ||
} | ||
}, start: (e2) => { | ||
"Recording" === (ce == null ? void 0 : ce.state) ? (e2 == null ? void 0 : e2.silent) || console.warn("Highlight is already recording. Please `H.stop()` the current session before starting a new one.") : (le.startListening(), he.onHighlightReady(() => __async(void 0, null, function* () { | ||
yield ce.initialize(e2); | ||
}), { waitForReady: false })); | ||
}, stop: (e2) => { | ||
"Recording" !== (ce == null ? void 0 : ce.state) ? (e2 == null ? void 0 : e2.silent) || console.warn("Highlight is already stopped. Please call `H.start()`.") : he.onHighlightReady(() => ce.stopRecording(true)); | ||
}, identify: (e2, t2 = {}) => { | ||
var _a2, _b2, _c, _d, _e, _f, _g, _h; | ||
try { | ||
he.onHighlightReady(() => ce.identify(e2, t2)); | ||
} catch (e3) { | ||
ie("identify", e3); | ||
} | ||
if (((_c = (_b2 = (_a2 = he.options) == null ? void 0 : _a2.integrations) == null ? void 0 : _b2.mixpanel) == null ? void 0 : _c.disabled) || ((_d = window.mixpanel) == null ? void 0 : _d.identify) && (window.mixpanel.identify("string" == typeof (t2 == null ? void 0 : t2.email) ? t2 == null ? void 0 : t2.email : e2), t2 && (window.mixpanel.track("identify", t2), window.mixpanel.people.set(t2))), !((_g = (_f = (_e = he.options) == null ? void 0 : _e.integrations) == null ? void 0 : _f.amplitude) == null ? void 0 : _g.disabled) && ((_h = window.amplitude) == null ? void 0 : _h.getInstance) && (window.amplitude.getInstance().setUserId(e2), Object.keys(t2).length > 0)) { | ||
const e3 = Object.keys(t2).reduce((e4, n2) => (e4.set(n2, t2[n2]), e4), new window.amplitude.Identify()); | ||
window.amplitude.getInstance().identify(e3); | ||
} | ||
}, metrics: (e2) => { | ||
try { | ||
he.onHighlightReady(() => ce.recordMetric(e2.map((e3) => __spreadProps(__spreadValues({}, e3), { category: oe.Frontend })))); | ||
} catch (e3) { | ||
ie("metrics", e3); | ||
} | ||
}, getSessionURL: () => new Promise((e2, t2) => { | ||
he.onHighlightReady(() => { | ||
const n2 = ce.getCurrentSessionURL(); | ||
n2 ? e2(n2) : t2(new Error("Unable to get session URL")); | ||
}); | ||
}), getSessionDetails: () => new Promise((e2, t2) => { | ||
he.onHighlightReady(() => { | ||
const n2 = ce.getCurrentSessionURL(); | ||
if (n2) { | ||
const t3 = ce.getCurrentSessionTimestamp(), r2 = (/* @__PURE__ */ new Date()).getTime(), o2 = new URL(n2), i2 = new URL(n2); | ||
i2.searchParams.set("ts", ((r2 - t3) / 1e3).toString()), e2({ url: o2.toString(), urlWithTimestamp: i2.toString() }); | ||
} else | ||
t2(new Error("Could not get session URL")); | ||
}); | ||
}), onHighlightReady: (e2, t2) => __async(void 0, null, function* () { | ||
if (de.push({ options: t2, func: e2 }), void 0 === se) { | ||
const e3 = () => __async(void 0, null, function* () { | ||
var _a2; | ||
const t3 = []; | ||
for (const e4 of de) | ||
if (ce && (false === ((_a2 = e4.options) == null ? void 0 : _a2.waitForReady) || ce.ready)) | ||
try { | ||
yield e4.func(); | ||
} catch (e5) { | ||
ie("onHighlightReady", e5); | ||
} | ||
else | ||
t3.push(e4); | ||
se = void 0, de = t3, de.length > 0 && (se = setTimeout(e3, 200)); | ||
}); | ||
yield e3(); | ||
} | ||
}) }; | ||
"undefined" != typeof window && (window.H = he), "undefined" != typeof chrome && ((_a = chrome == null ? void 0 : chrome.runtime) == null ? void 0 : _a.onMessage) && ((_b = chrome == null ? void 0 : chrome.runtime) == null ? void 0 : _b.onMessage.addListener((e2, t2, n2) => { | ||
const r2 = e2.action; | ||
switch (console.log(`[highlight] received '${r2}' event from extension.`), r2) { | ||
case "init": { | ||
const e3 = "http://localhost:8080/dist/index.js"; | ||
console.log("url", e3), he.init(1, { debug: true, scriptUrl: e3 }), he.getSessionURL().then((e4) => { | ||
n2({ url: e4 }); | ||
}); | ||
break; | ||
} | ||
case "stop": | ||
he.stop(), n2({ success: true }); | ||
} | ||
return true; | ||
})), (() => { | ||
if ("undefined" != typeof window) { | ||
if (void 0 !== window._highlightFetchPatch) | ||
return; | ||
window._originalFetch = window.fetch, window._fetchProxy = (e2, t2) => window._originalFetch(e2, t2), window._highlightFetchPatch = (e2, t2) => window._fetchProxy.call(window || global, e2, t2), window.fetch = window._highlightFetchPatch; | ||
} | ||
})(), (() => { | ||
if ("undefined" != typeof window) { | ||
if (void 0 !== window._highlightWebSocketRequestCallback) | ||
return; | ||
window._highlightWebSocketRequestCallback = re, window._highlightWebSocketEventCallback = re; | ||
const e2 = new Proxy(window.WebSocket, { construct(e3, t2) { | ||
const n2 = U(), r2 = new e3(...t2), o2 = (e4) => { | ||
window._highlightWebSocketRequestCallback({ socketId: n2, initiatorType: "websocket", type: "open", name: r2.url, startTimeAbs: performance.timeOrigin + e4.timeStamp }); | ||
}, i2 = (e4) => { | ||
window._highlightWebSocketRequestCallback({ socketId: n2, initiatorType: "websocket", type: "close", name: r2.url, responseEndAbs: performance.timeOrigin + e4.timeStamp }), r2.removeEventListener("open", o2), r2.removeEventListener("error", a2), r2.removeEventListener("message", s2), r2.removeEventListener("close", i2); | ||
}, s2 = (e4) => { | ||
const { data: t3 } = e4, o3 = "string" == typeof t3 ? e4.data : void 0; | ||
let i3; | ||
i3 = "string" == typeof t3 ? t3.length : t3 instanceof Blob ? t3.size : t3.byteLength || 0, window._highlightWebSocketEventCallback({ socketId: n2, type: "received", name: r2.url, timeStamp: performance.timeOrigin + e4.timeStamp, size: i3, message: o3 }); | ||
}, a2 = (e4) => { | ||
window._highlightWebSocketEventCallback({ socketId: n2, type: "error", name: r2.url, timeStamp: performance.timeOrigin + e4.timeStamp, size: 0 }); | ||
}; | ||
r2.addEventListener("open", o2), r2.addEventListener("error", a2), r2.addEventListener("message", s2), r2.addEventListener("close", i2); | ||
const c2 = new Proxy(r2.send, { apply: function(e4, t3, o3) { | ||
const i3 = o3[0], s3 = "string" == typeof i3 ? i3 : void 0; | ||
let a3; | ||
a3 = "string" == typeof i3 ? i3.length : i3 instanceof Blob ? i3.size : i3.byteLength || 0, window._highlightWebSocketEventCallback({ socketId: n2, type: "sent", name: r2.url, timeStamp: performance.timeOrigin + performance.now(), size: a3, message: s3 }), e4.apply(t3, o3); | ||
} }); | ||
return r2.send = c2, r2; | ||
} }); | ||
window.WebSocket = e2; | ||
} | ||
})(); | ||
import { H as i, a as r, M as t, b as a } from "./index-eQAWVLSK.js"; | ||
export { | ||
he as H, | ||
Y as HighlightSegmentMiddleware, | ||
oe as MetricCategory, | ||
Q as configureElectronHighlight | ||
i as H, | ||
r as HighlightSegmentMiddleware, | ||
t as MetricCategory, | ||
a as configureElectronHighlight | ||
}; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "highlight.run", | ||
"version": "8.10.0", | ||
"version": "8.11.0", | ||
"description": "Open source, fullstack monitoring. Capture frontend errors, record server side logs, and visualize what broke with session replay.", | ||
@@ -46,4 +46,2 @@ "keywords": [ | ||
"import": "./dist/index.js", | ||
"require": "./dist/index.cjs", | ||
"node": "./dist/index.cjs", | ||
"default": "./dist/index.js" | ||
@@ -59,14 +57,13 @@ }, | ||
"@rollup/plugin-commonjs": "^25.0.7", | ||
"@rollup/plugin-json": "^6.0.1", | ||
"@rollup/plugin-json": "^6.1.0", | ||
"@rollup/plugin-node-resolve": "^15.2.3", | ||
"@rollup/plugin-terser": "^0.4.4", | ||
"@rollup/plugin-typescript": "^11.1.5", | ||
"@size-limit/file": "^8.1.0", | ||
"@types/chrome": "^0.0.144", | ||
"@rollup/plugin-typescript": "^11.1.6", | ||
"@size-limit/file": "^11.1.2", | ||
"@types/chrome": "^0.0.263", | ||
"readdirp": "^3.6.0", | ||
"size-limit": "^8.1.0", | ||
"tslib": "^2.4.0", | ||
"typescript": "^5.0.4", | ||
"vite": "^4.3.9", | ||
"vitest": "^0.32.0" | ||
"size-limit": "^11.1.2", | ||
"tslib": "^2.6.2", | ||
"typescript": "^5.4.3", | ||
"vite": "^5.2.7", | ||
"vitest": "^1.4.0" | ||
}, | ||
@@ -76,3 +73,3 @@ "size-limit": [ | ||
"path": "dist/**.js", | ||
"limit": "100 kB", | ||
"limit": "256 kB", | ||
"brotli": true | ||
@@ -79,0 +76,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2816354
12
66
12708
3
1