@pendo/agent 2.279.1 → 2.279.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dom.esm.js CHANGED
@@ -7228,7 +7228,7 @@ function getScreenPosition(element) {
7228
7228
  };
7229
7229
  }
7230
7230
 
7231
- var VERSION = '2.279.1_';
7231
+ var VERSION = '2.279.3_';
7232
7232
  function isExtensionAgent() {
7233
7233
  var installType = getPendoConfigValue('installType') || getPendoConfigFromEnclosingScope().installType;
7234
7234
  return installType === EXTENSION_INSTALL_TYPE;
@@ -3891,8 +3891,8 @@ var SERVER = '';
3891
3891
  var ASSET_HOST = '';
3892
3892
  var ASSET_PATH = '';
3893
3893
  var DESIGNER_ENV = '';
3894
- var VERSION = '2.279.1_';
3895
- var PACKAGE_VERSION = '2.279.1';
3894
+ var VERSION = '2.279.3_';
3895
+ var PACKAGE_VERSION = '2.279.3';
3896
3896
  var LOADER = 'xhr';
3897
3897
  /* eslint-enable agent-eslint-rules/no-gulp-env-references */
3898
3898
  /**
@@ -37580,6 +37580,7 @@ class DOMPrompt {
37580
37580
  *
37581
37581
  * Built-in Plugin adding optional support for monitoring a Prompt like a search box or chat text box.
37582
37582
  */
37583
+ const PENDO_HEADERS_KEY = '_pendoHeaders';
37583
37584
  class PromptPlugin {
37584
37585
  constructor() {
37585
37586
  this.name = 'PromptAnalytics';
@@ -37645,6 +37646,14 @@ class PromptPlugin {
37645
37646
  if (pluginInstance._networkPatched)
37646
37647
  return;
37647
37648
  pluginInstance._networkPatched = true;
37649
+ if (!pluginInstance._originalSetRequestHeader) {
37650
+ pluginInstance._originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
37651
+ XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
37652
+ this[PENDO_HEADERS_KEY] = this[PENDO_HEADERS_KEY] || {};
37653
+ this[PENDO_HEADERS_KEY][header] = value;
37654
+ return pluginInstance._originalSetRequestHeader.apply(this, arguments);
37655
+ };
37656
+ }
37648
37657
  pluginInstance._originalFetch = window.fetch;
37649
37658
  window.fetch = function (...args) {
37650
37659
  return __awaiter(this, void 0, void 0, function* () {
@@ -37745,6 +37754,10 @@ class PromptPlugin {
37745
37754
  }
37746
37755
  this._networkPatched = false;
37747
37756
  this._.each(this.prompts, (prompt) => prompt.teardown());
37757
+ if (this._originalSetRequestHeader) {
37758
+ XMLHttpRequest.prototype.setRequestHeader = this._originalSetRequestHeader;
37759
+ this._originalSetRequestHeader = null;
37760
+ }
37748
37761
  }
37749
37762
  }
37750
37763
  function safelySerializeBody(body) {
@@ -37780,14 +37793,8 @@ function extractHeaders(headers = {}) {
37780
37793
  }
37781
37794
  return result;
37782
37795
  }
37783
- const originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
37784
- XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
37785
- this._headers = this._headers || {};
37786
- this._headers[header] = value;
37787
- return originalSetRequestHeader.apply(this, arguments);
37788
- };
37789
37796
  function extractXHRHeaders(xhr) {
37790
- return xhr._headers || {};
37797
+ return xhr[PENDO_HEADERS_KEY] || {};
37791
37798
  }
37792
37799
  var PromptAnalytics = new PromptPlugin();
37793
37800
 
@@ -49207,32 +49214,6 @@ function initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {
49207
49214
  handlers.forEach((h) => h());
49208
49215
  };
49209
49216
  }
49210
- const encodedJs = "KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=";
49211
- const decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));
49212
- const blob = typeof window !== "undefined" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: "text/javascript;charset=utf-8" });
49213
- function WorkerWrapper(options) {
49214
- let objURL;
49215
- try {
49216
- objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
49217
- if (!objURL) throw "";
49218
- const worker = new Worker(objURL, {
49219
- name: options == null ? void 0 : options.name
49220
- });
49221
- worker.addEventListener("error", () => {
49222
- (window.URL || window.webkitURL).revokeObjectURL(objURL);
49223
- });
49224
- return worker;
49225
- } catch (e2) {
49226
- return new Worker(
49227
- "data:text/javascript;base64," + encodedJs,
49228
- {
49229
- name: options == null ? void 0 : options.name
49230
- }
49231
- );
49232
- } finally {
49233
- objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
49234
- }
49235
- }
49236
49217
  class CanvasManager {
49237
49218
  constructor(options) {
49238
49219
  __publicField(this, "pendingCanvasMutations", /* @__PURE__ */ new Map());
@@ -49263,10 +49244,6 @@ class CanvasManager {
49263
49244
  this.mirror = options.mirror;
49264
49245
  if (recordCanvas && sampling === "all")
49265
49246
  this.initCanvasMutationObserver(win, blockClass, blockSelector);
49266
- if (recordCanvas && typeof sampling === "number")
49267
- this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {
49268
- dataURLOptions
49269
- });
49270
49247
  }
49271
49248
  reset() {
49272
49249
  this.pendingCanvasMutations.clear();
@@ -49284,100 +49261,6 @@ class CanvasManager {
49284
49261
  unlock() {
49285
49262
  this.locked = false;
49286
49263
  }
49287
- initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {
49288
- const canvasContextReset = initCanvasContextObserver(
49289
- win,
49290
- blockClass,
49291
- blockSelector,
49292
- true
49293
- );
49294
- const snapshotInProgressMap = /* @__PURE__ */ new Map();
49295
- const worker = new WorkerWrapper();
49296
- worker.onmessage = (e2) => {
49297
- const { id } = e2.data;
49298
- snapshotInProgressMap.set(id, false);
49299
- if (!("base64" in e2.data)) return;
49300
- const { base64, type, width, height } = e2.data;
49301
- this.mutationCb({
49302
- id,
49303
- type: CanvasContext["2D"],
49304
- commands: [
49305
- {
49306
- property: "clearRect",
49307
- // wipe canvas
49308
- args: [0, 0, width, height]
49309
- },
49310
- {
49311
- property: "drawImage",
49312
- // draws (semi-transparent) image
49313
- args: [
49314
- {
49315
- rr_type: "ImageBitmap",
49316
- args: [
49317
- {
49318
- rr_type: "Blob",
49319
- data: [{ rr_type: "ArrayBuffer", base64 }],
49320
- type
49321
- }
49322
- ]
49323
- },
49324
- 0,
49325
- 0
49326
- ]
49327
- }
49328
- ]
49329
- });
49330
- };
49331
- const timeBetweenSnapshots = 1e3 / fps;
49332
- let lastSnapshotTime = 0;
49333
- let rafId;
49334
- const getCanvas = () => {
49335
- const matchedCanvas = [];
49336
- win.document.querySelectorAll("canvas").forEach((canvas) => {
49337
- if (!isBlocked(canvas, blockClass, blockSelector, true)) {
49338
- matchedCanvas.push(canvas);
49339
- }
49340
- });
49341
- return matchedCanvas;
49342
- };
49343
- const takeCanvasSnapshots = (timestamp) => {
49344
- if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {
49345
- rafId = requestAnimationFrame(takeCanvasSnapshots);
49346
- return;
49347
- }
49348
- lastSnapshotTime = timestamp;
49349
- getCanvas().forEach(async (canvas) => {
49350
- var _a2;
49351
- const id = this.mirror.getId(canvas);
49352
- if (snapshotInProgressMap.get(id)) return;
49353
- if (canvas.width === 0 || canvas.height === 0) return;
49354
- snapshotInProgressMap.set(id, true);
49355
- if (["webgl", "webgl2"].includes(canvas.__context)) {
49356
- const context = canvas.getContext(canvas.__context);
49357
- if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {
49358
- context.clear(context.COLOR_BUFFER_BIT);
49359
- }
49360
- }
49361
- const bitmap = await createImageBitmap(canvas);
49362
- worker.postMessage(
49363
- {
49364
- id,
49365
- bitmap,
49366
- width: canvas.width,
49367
- height: canvas.height,
49368
- dataURLOptions: options.dataURLOptions
49369
- },
49370
- [bitmap]
49371
- );
49372
- });
49373
- rafId = requestAnimationFrame(takeCanvasSnapshots);
49374
- };
49375
- rafId = requestAnimationFrame(takeCanvasSnapshots);
49376
- this.resetObservers = () => {
49377
- canvasContextReset();
49378
- cancelAnimationFrame(rafId);
49379
- };
49380
- }
49381
49264
  initCanvasMutationObserver(win, blockClass, blockSelector) {
49382
49265
  this.startRAFTimestamping();
49383
49266
  this.startPendingCanvasMutationFlusher();