@lvce-editor/renderer-process 30.58.1 → 30.58.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.
@@ -4,30 +4,79 @@ var __export = (target, all) => {
4
4
  __defProp(target, name, { get: all[name], enumerable: true });
5
5
  };
6
6
 
7
- // ../session-replay-worker/src/api/transfer.ts
8
- var getTransferrables = (value) => {
9
- const seen = /* @__PURE__ */ new Set();
10
- const result = /* @__PURE__ */ new Set();
11
- const visit = (item) => {
12
- if (!item || typeof item !== "object" || seen.has(item)) return;
13
- seen.add(item);
14
- if (Object.prototype.toString.call(item) === "[object ArrayBuffer]") result.add(item);
15
- else if (ArrayBuffer.isView(item)) visit(item.buffer);
16
- else if (["MessagePort", "OffscreenCanvas", "ImageBitmap", "AudioData", "VideoFrame", "ReadableStream", "WritableStream", "TransformStream"].some(
17
- (name) => typeof globalThis[name] === "function" && item instanceof globalThis[name]
18
- ))
19
- result.add(item);
20
- else if (Object.prototype.toString.call(item) === "[object Map]") {
21
- for (const [key, entry] of item) {
22
- visit(key);
23
- visit(entry);
7
+ // ../session-replay-worker/src/parts/ReplayCommand/ReplayCommand.ts
8
+ var replayCommands = [
9
+ "Css.addCssStyleSheet",
10
+ "Css.removeCssStyleSheet",
11
+ "Viewlet.addCss",
12
+ "Viewlet.append",
13
+ "Viewlet.appendToBody",
14
+ "Viewlet.appendToRoot",
15
+ "Viewlet.commitPending",
16
+ "Viewlet.create",
17
+ "Viewlet.createFunctionalRoot",
18
+ "Viewlet.createPlaceholder",
19
+ "Viewlet.dispose",
20
+ "Viewlet.executeCommands",
21
+ "Viewlet.patchCss",
22
+ "Viewlet.queueCommands",
23
+ "Viewlet.replaceChildren",
24
+ "Viewlet.scrollSelectorBy",
25
+ "Viewlet.sendMultiple",
26
+ "Viewlet.setBounds",
27
+ "Viewlet.setCheckBoxValue",
28
+ "Viewlet.setComponentDom",
29
+ "Viewlet.setCss",
30
+ "Viewlet.setDom",
31
+ "Viewlet.setDom2",
32
+ "Viewlet.setInputValues",
33
+ "Viewlet.setPatches",
34
+ "Viewlet.setProperty",
35
+ "Viewlet.setTreePatches",
36
+ "Viewlet.setValueByName",
37
+ "Viewlet.show"
38
+ ];
39
+
40
+ // ../session-replay-worker/src/parts/FilterReplayMessage/FilterReplayMessage.ts
41
+ var createReplayMessageFilter = () => {
42
+ const replies = /* @__PURE__ */ Object.create(null);
43
+ return ({ connection, direction, message, renderer }) => {
44
+ if (!renderer || !message || typeof message !== "object") return false;
45
+ const { id, method } = message;
46
+ if (direction === "to-renderer") {
47
+ if (!replayCommands.includes(method)) return false;
48
+ if (method === "Viewlet.queueCommands" && id !== void 0) {
49
+ const pending3 = replies[connection] ||= [];
50
+ if (!pending3.includes(id)) pending3.push(id);
24
51
  }
25
- } else if (Object.prototype.toString.call(item) === "[object Set]") {
26
- for (const entry of item) visit(entry);
27
- } else for (const entry of Object.values(item)) visit(entry);
52
+ return true;
53
+ }
54
+ if (method || id === void 0) return false;
55
+ const pending2 = replies[connection];
56
+ const index = pending2?.indexOf(id) ?? -1;
57
+ if (index === -1) return false;
58
+ pending2.splice(index, 1);
59
+ if (pending2.length === 0) delete replies[connection];
60
+ return true;
28
61
  };
29
- visit(value);
30
- return [...result];
62
+ };
63
+
64
+ // ../session-replay-worker/src/parts/Activity/Activity.ts
65
+ var getActivity = (events, duration) => {
66
+ const length = Math.max(1, Math.min(240, Math.ceil(duration / 250)));
67
+ const counts = Array.from({ length });
68
+ counts.fill(0);
69
+ if (duration <= 0) return counts;
70
+ let initialFrame = true;
71
+ for (const event of events) {
72
+ if (event.type === "frame" && initialFrame) {
73
+ initialFrame = false;
74
+ continue;
75
+ }
76
+ const index = Math.min(counts.length - 1, Math.floor(event.timestamp / duration * counts.length));
77
+ counts[index]++;
78
+ }
79
+ return counts;
31
80
  };
32
81
 
33
82
  // ../../node_modules/@lvce-editor/constants/dist/parts/ElementTagMap/ElementTagMap.js
@@ -374,9 +423,9 @@ var getElementTag = (type) => {
374
423
  throw new Error(`element tag not found ${type}`);
375
424
  };
376
425
 
377
- // ../session-replay-worker/src/visualDom.ts
426
+ // ../session-replay-worker/src/parts/VisualDom/VisualDom.ts
378
427
  var element = (tag = "div") => ({ attrs: {}, children: [], tag });
379
- var styleKeys = /* @__PURE__ */ new Set(["width", "height", "top", "left", "translate", "marginTop", "paddingLeft", "paddingRight"]);
428
+ var styleKeys = ["width", "height", "top", "left", "translate", "marginTop", "paddingLeft", "paddingRight"];
380
429
  var attributes = { className: "class", htmlFor: "for", inputType: "type" };
381
430
  var setStyle = (node, key, value) => {
382
431
  node.attrs ||= {};
@@ -402,7 +451,7 @@ var property = (node, key, value) => {
402
451
  default:
403
452
  break;
404
453
  }
405
- if (styleKeys.has(key)) {
454
+ if (styleKeys.includes(key)) {
406
455
  setStyle(
407
456
  node,
408
457
  key.replaceAll(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`),
@@ -444,7 +493,7 @@ var expandPatches = (patches) => patches.flatMap((value) => {
444
493
  return result;
445
494
  });
446
495
  var createVisualDom = () => {
447
- const views = /* @__PURE__ */ new Map();
496
+ const views = /* @__PURE__ */ Object.create(null);
448
497
  const parents = /* @__PURE__ */ new WeakMap();
449
498
  const owners = /* @__PURE__ */ new WeakMap();
450
499
  let nodeCount = 0;
@@ -477,14 +526,14 @@ var createVisualDom = () => {
477
526
  if (parent) append(parent, next, index);
478
527
  const uid = owners.get(node);
479
528
  if (uid !== void 0) {
480
- views.set(uid, next);
529
+ views[uid] = next;
481
530
  owners.set(next, uid);
482
531
  }
483
532
  return next;
484
533
  };
485
534
  const renderNode = (value) => {
486
535
  let node;
487
- if (value.type === VirtualDomElements_exports.Reference) node = views.get(value.uid) || { text: "Reference node not found" };
536
+ if (value.type === VirtualDomElements_exports.Reference) node = views[value.uid] || { text: "Reference node not found" };
488
537
  else if (value.type === VirtualDomElements_exports.Text) node = { text: value.text };
489
538
  else {
490
539
  node = element(ElementTagMap_exports.getElementTag(value.type));
@@ -513,7 +562,7 @@ var createVisualDom = () => {
513
562
  };
514
563
  const patch = (uid, input) => {
515
564
  const patches = expandPatches(input);
516
- let current = views.get(uid);
565
+ let current = views[uid];
517
566
  if (!current) return;
518
567
  owners.set(current, uid);
519
568
  const mutations = {
@@ -523,7 +572,7 @@ var createVisualDom = () => {
523
572
  },
524
573
  10: (node, value) => parents.get(node)?.children?.[value.index],
525
574
  11: (node, value) => {
526
- const next = views.get(value.uid);
575
+ const next = views[value.uid];
527
576
  return next ? replace(node, next) : node;
528
577
  },
529
578
  2: (node, value) => {
@@ -563,21 +612,21 @@ var createVisualDom = () => {
563
612
  return { append, clear, detach, element, find, patch, property, render, replace, views };
564
613
  };
565
614
 
566
- // ../session-replay-worker/src/visualState.ts
615
+ // ../session-replay-worker/src/parts/VisualState/VisualState.ts
567
616
  var createVisualState = (initial) => {
568
617
  const frame = structuredClone(initial);
569
618
  const dom = createVisualDom();
570
619
  const { append, clear, detach, element: element2, find: find2, patch, property: property2, render, replace, views } = dom;
571
- const sheets = new Map((frame.styles || []).map((text, index) => [`initial-${index}`, text]));
572
- const calls = /* @__PURE__ */ new Map();
573
- const batches = /* @__PURE__ */ new Map();
620
+ let sheets = (frame.styles || []).map((text, index) => ({ text, uid: `initial-${index}` }));
621
+ const calls = /* @__PURE__ */ Object.create(null);
622
+ const batches = [];
574
623
  const setDom = (uid, nodes) => {
575
- const view = views.get(uid);
624
+ const view = views[uid];
576
625
  if (!view) return;
577
626
  const next = render(nodes)[0];
578
627
  if (next) {
579
628
  replace(view, next);
580
- views.set(uid, next);
629
+ views[uid] = next;
581
630
  }
582
631
  };
583
632
  const apply = (method, params = []) => {
@@ -587,26 +636,28 @@ var createVisualState = (initial) => {
587
636
  for (const [method, ...params] of commands2) apply(method, params);
588
637
  };
589
638
  const commit = (uid, transaction) => {
590
- const batch = batches.get(transaction);
639
+ const batch = batches.find((entry) => entry.transaction === transaction);
591
640
  if (!batch || batch.uid !== uid) return;
592
641
  batch.committed = true;
593
- for (const [key, pending2] of batches) {
642
+ for (let index = 0; index < batches.length; index++) {
643
+ const pending2 = batches[index];
594
644
  if (pending2.uid !== uid) continue;
595
645
  if (!pending2.committed) return;
596
646
  execute(pending2.commands);
597
- batches.delete(key);
647
+ batches.splice(index, 1);
648
+ index--;
598
649
  }
599
650
  };
600
651
  const appendView = (uid, childId, references) => {
601
- const view = views.get(uid);
602
- const child = views.get(childId);
652
+ const view = views[uid];
653
+ const child = views[childId];
603
654
  if (!view || !child) return;
604
655
  const nextReferences = references?.slice(references.indexOf(childId) + 1) || [];
605
- const next = nextReferences.map((id) => views.get(id)).find((node) => node && view.children?.includes(node));
656
+ const next = nextReferences.map((id) => views[id]).find((node) => node && view.children?.includes(node));
606
657
  append(view, child, next ? view.children.indexOf(next) : void 0);
607
658
  };
608
659
  const setProperty = (uid, selector, key, value) => {
609
- const view = views.get(uid);
660
+ const view = views[uid];
610
661
  const node = view && find2(view, selector);
611
662
  if (!node) return;
612
663
  if (key === "textContent") {
@@ -615,29 +666,31 @@ var createVisualState = (initial) => {
615
666
  } else property2(node, key, value);
616
667
  };
617
668
  const setBounds = (uid, left, top, width, height) => {
618
- const view = views.get(uid);
669
+ const view = views[uid];
619
670
  const bounds = Object.entries({ height, left, top, width });
620
671
  for (const [key, value] of bounds) property2(view, key, value);
621
672
  };
622
673
  const setCss = (uid, text) => {
623
- sheets.set(uid, text);
674
+ const sheet = sheets.find((entry) => [entry.uid].includes(uid));
675
+ if (sheet) sheet.text = text;
676
+ else sheets.push({ text, uid });
624
677
  };
625
678
  const create = (_id, uid = Number(_id)) => {
626
- views.set(uid, element2());
679
+ views[uid] = element2();
627
680
  };
628
681
  const handlers = {
629
682
  "Css.addCssStyleSheet": setCss,
630
683
  "Css.removeCssStyleSheet": (uid) => {
631
- sheets.delete(uid);
684
+ sheets = sheets.filter((entry) => ![entry.uid].includes(uid));
632
685
  },
633
686
  "Viewlet.addCss": setCss,
634
687
  "Viewlet.append": appendView,
635
688
  "Viewlet.appendToBody": (uid) => {
636
- const view = views.get(uid);
689
+ const view = views[uid];
637
690
  if (view) append(frame.dom, view);
638
691
  },
639
692
  "Viewlet.appendToRoot": (uid, root) => {
640
- const view = views.get(uid);
693
+ const view = views[uid];
641
694
  const parent = find2(frame.dom, `#${root}`);
642
695
  if (view && parent) append(parent, view);
643
696
  },
@@ -645,33 +698,33 @@ var createVisualState = (initial) => {
645
698
  "Viewlet.create": create,
646
699
  "Viewlet.createFunctionalRoot": create,
647
700
  "Viewlet.createPlaceholder": (uid, parentId, top, left, width, height) => {
648
- views.set(uid, element2());
649
- property2(views.get(uid), "className", `Viewlet ${uid}`);
701
+ views[uid] = element2();
702
+ property2(views[uid], "className", `Viewlet ${uid}`);
650
703
  setBounds(uid, left, top, width, height);
651
704
  appendView(parentId, uid);
652
705
  },
653
706
  "Viewlet.dispose": (uid) => {
654
- const view = views.get(uid);
707
+ const view = views[uid];
655
708
  if (view) detach(view);
656
- views.delete(uid);
657
- sheets.delete(uid);
709
+ delete views[uid];
710
+ sheets = sheets.filter((entry) => ![entry.uid].includes(uid));
658
711
  },
659
712
  "Viewlet.executeCommands": execute,
660
713
  "Viewlet.patchCss": (uid, start, count, replacement) => {
661
- const text = sheets.get(uid);
662
- if (typeof text === "string") sheets.set(uid, text.slice(0, start) + replacement + text.slice(start + count));
714
+ const sheet = sheets.find((entry) => [entry.uid].includes(uid));
715
+ if (sheet) sheet.text = sheet.text.slice(0, start) + replacement + sheet.text.slice(start + count);
663
716
  },
664
717
  "Viewlet.replaceChildren": (uid, children) => {
665
- const view = views.get(uid);
718
+ const view = views[uid];
666
719
  if (!view) return;
667
720
  clear(view);
668
721
  for (const id of children) {
669
- const child = views.get(id);
722
+ const child = views[id];
670
723
  if (child) append(view, child);
671
724
  }
672
725
  },
673
726
  "Viewlet.scrollSelectorBy": (uid, selector, delta) => {
674
- const view = views.get(uid);
727
+ const view = views[uid];
675
728
  const node = view && find2(view, selector);
676
729
  if (node) property2(node, "scrollLeft", (node.scroll?.[0] || 0) + delta);
677
730
  },
@@ -681,7 +734,7 @@ var createVisualState = (initial) => {
681
734
  "Viewlet.setComponentDom": setDom,
682
735
  "Viewlet.setCss": setCss,
683
736
  "Viewlet.setDom": (uid, nodes) => {
684
- const view = views.get(uid);
737
+ const view = views[uid];
685
738
  if (!view) return;
686
739
  clear(view);
687
740
  const children = render(nodes);
@@ -699,7 +752,7 @@ var createVisualState = (initial) => {
699
752
  "Viewlet.setTreePatches": patch,
700
753
  "Viewlet.setValueByName": (uid, name, value) => setProperty(uid, `[name="${name}"]`, "value", value),
701
754
  "Viewlet.show": (uid) => {
702
- const view = views.get(uid);
755
+ const view = views[uid];
703
756
  if (view) append(find2(frame.dom, "#Workbench") || frame.dom, view);
704
757
  }
705
758
  };
@@ -709,21 +762,27 @@ var createVisualState = (initial) => {
709
762
  const { connection, direction, message } = data;
710
763
  const key = `${connection}:${message.id}`;
711
764
  if (direction === "to-renderer") {
712
- if (message.method === "Viewlet.queueCommands") calls.set(key, message.params);
765
+ if (message.method === "Viewlet.queueCommands") calls[key] = message.params;
713
766
  else apply(message.method, message.params);
714
- } else if (calls.has(key)) {
715
- const [uid, commands2] = calls.get(key);
716
- calls.delete(key);
717
- if (Number.isSafeInteger(message.result)) batches.set(message.result, { commands: commands2, committed: false, uid });
767
+ } else if (Object.hasOwn(calls, key)) {
768
+ const [uid, commands2] = calls[key];
769
+ delete calls[key];
770
+ if (Number.isSafeInteger(message.result)) {
771
+ const transaction = message.result;
772
+ const batch = { commands: commands2, committed: false, transaction, uid };
773
+ const index = batches.findIndex((entry) => entry.transaction === transaction);
774
+ if (index === -1) batches.push(batch);
775
+ else batches[index] = batch;
776
+ }
718
777
  }
719
778
  },
720
779
  frame() {
721
- return { ...frame, styles: [...sheets.values()] };
780
+ return { ...frame, styles: sheets.map((sheet) => sheet.text) };
722
781
  }
723
782
  };
724
783
  };
725
784
 
726
- // ../session-replay-worker/src/protocol.ts
785
+ // ../session-replay-worker/src/parts/Protocol/Protocol.ts
727
786
  var version = 1;
728
787
  var maxEventBytes = 75e4;
729
788
  var maxSessionBytes = 64 * 1024 * 1024;
@@ -774,19 +833,46 @@ var loadContent = (value) => {
774
833
  }
775
834
  return { duration, frame: frames[Math.max(0, low - 1)].data, position };
776
835
  };
777
- return { duration, seek };
836
+ return { activity: getActivity(session.events, duration), duration, seek };
778
837
  };
779
838
 
780
- // ../session-replay-worker/src/proxy.ts
781
- var wrapPorts = (value, replacePort, seen = /* @__PURE__ */ new Map()) => {
839
+ // ../session-replay-worker/src/parts/Transfer/Transfer.ts
840
+ var getTransferrables = (value) => {
841
+ const seen = [];
842
+ const result = [];
843
+ const visit = (item) => {
844
+ if (!item || typeof item !== "object" || seen.includes(item)) return;
845
+ seen.push(item);
846
+ if (Object.prototype.toString.call(item) === "[object ArrayBuffer]") result.push(item);
847
+ else if (ArrayBuffer.isView(item)) visit(item.buffer);
848
+ else if (["MessagePort", "OffscreenCanvas", "ImageBitmap", "AudioData", "VideoFrame", "ReadableStream", "WritableStream", "TransformStream"].some(
849
+ (name) => typeof globalThis[name] === "function" && item instanceof globalThis[name]
850
+ ))
851
+ result.push(item);
852
+ else if (Object.prototype.toString.call(item) === "[object Map]") {
853
+ for (const [key, entry] of item) {
854
+ visit(key);
855
+ visit(entry);
856
+ }
857
+ } else if (Object.prototype.toString.call(item) === "[object Set]") {
858
+ for (const entry of item) visit(entry);
859
+ } else for (const entry of Object.values(item)) visit(entry);
860
+ };
861
+ visit(value);
862
+ return result;
863
+ };
864
+
865
+ // ../session-replay-worker/src/parts/Proxy/Proxy.ts
866
+ var wrapPorts = (value, replacePort, seen = []) => {
782
867
  if (!value || typeof value !== "object") return value;
783
- if (seen.has(value)) return seen.get(value);
868
+ const previous = seen.find((entry) => entry.original === value);
869
+ if (previous) return previous.replacement;
784
870
  if (value instanceof MessagePort) {
785
871
  const replacement = replacePort(value);
786
- seen.set(value, replacement);
872
+ seen.push({ original: value, replacement });
787
873
  return replacement;
788
874
  }
789
- seen.set(value, value);
875
+ seen.push({ original: value, replacement: value });
790
876
  if (value instanceof Map) {
791
877
  const entries = [...value];
792
878
  value.clear();
@@ -801,12 +887,18 @@ var wrapPorts = (value, replacePort, seen = /* @__PURE__ */ new Map()) => {
801
887
  }
802
888
  return value;
803
889
  };
890
+ var consumeReply = (replies, id) => {
891
+ const index = replies.findIndex((reply) => [reply].includes(id));
892
+ if (index === -1) return false;
893
+ replies.splice(index, 1);
894
+ return true;
895
+ };
804
896
  var createProxyRegistry = ({
805
897
  record,
806
898
  report: report2 = () => {
807
899
  }
808
900
  }) => {
809
- const connections = /* @__PURE__ */ new Set();
901
+ const connections = /* @__PURE__ */ Object.create(null);
810
902
  let nextId = 0;
811
903
  const createNestedPort = (connection, renderer, port) => create(port, `${connection}/port`, renderer);
812
904
  const create = (port, label = "renderer", renderer = true) => {
@@ -820,16 +912,16 @@ var createProxyRegistry = ({
820
912
  endpoint.onmessageerror = null;
821
913
  endpoint.close();
822
914
  }
823
- connections.delete(close);
915
+ delete connections[connection];
824
916
  };
825
- connections.add(close);
826
- const ignoredReplies = { "from-renderer": /* @__PURE__ */ new Set(), "to-renderer": /* @__PURE__ */ new Set() };
917
+ connections[connection] = close;
918
+ const ignoredReplies = { "from-renderer": [], "to-renderer": [] };
827
919
  const forward = (source, target, direction) => {
828
920
  source.onmessage = ({ data }) => {
829
921
  const opposite = direction === "to-renderer" ? "from-renderer" : "to-renderer";
830
922
  const ignored = typeof data?.method === "string" && data.method.startsWith("SessionReplay.");
831
- if (ignored && data.id !== void 0) ignoredReplies[opposite].add(data.id);
832
- const ignoredReply = !data?.method && ignoredReplies[direction].delete(data?.id);
923
+ if (ignored && data.id !== void 0 && !ignoredReplies[opposite].includes(data.id)) ignoredReplies[opposite].push(data.id);
924
+ const ignoredReply = !data?.method && consumeReply(ignoredReplies[direction], data?.id);
833
925
  if (!ignored && !ignoredReply) {
834
926
  try {
835
927
  record({ connection, direction, label, message: data, renderer });
@@ -853,14 +945,15 @@ var createProxyRegistry = ({
853
945
  return {
854
946
  create,
855
947
  dispose() {
856
- for (const close of connections) close();
948
+ for (const close of Object.values(connections)) close();
857
949
  }
858
950
  };
859
951
  };
860
952
 
861
- // ../session-replay-worker/src/recorder.ts
953
+ // ../session-replay-worker/src/parts/Recorder/Recorder.ts
862
954
  var createRecorder = ({
863
955
  fetch: request = globalThis.fetch,
956
+ navigator = globalThis.navigator,
864
957
  now = () => performance.now(),
865
958
  storage: storage2
866
959
  }) => {
@@ -879,7 +972,13 @@ var createRecorder = ({
879
972
  if (metadata) throw new Error("A session is already recording");
880
973
  options = config;
881
974
  origin = now();
882
- metadata = { createdAt: (/* @__PURE__ */ new Date()).toISOString(), id: crypto.randomUUID(), version };
975
+ metadata = {
976
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
977
+ id: crypto.randomUUID(),
978
+ platform: navigator?.platform || "",
979
+ userAgent: navigator?.userAgent || "",
980
+ version
981
+ };
883
982
  if (options.local) await storage2.save(metadata, []);
884
983
  return metadata.id;
885
984
  };
@@ -913,7 +1012,8 @@ var createRecorder = ({
913
1012
  if (!response.ok) throw new Error(`Session replay upload failed (${response.status})`);
914
1013
  return response.json();
915
1014
  };
916
- if (!remote) remote = await send(endpoint, { createdAt: metadata.createdAt, version });
1015
+ if (!remote)
1016
+ remote = await send(endpoint, { createdAt: metadata.createdAt, platform: metadata.platform, userAgent: metadata.userAgent, version });
917
1017
  while (pending2.length > 0) {
918
1018
  const batch = [];
919
1019
  let batchBytes = 0;
@@ -961,7 +1061,7 @@ var createRecorder = ({
961
1061
  };
962
1062
  };
963
1063
 
964
- // ../session-replay-worker/src/api/capture.ts
1064
+ // ../session-replay-worker/src/parts/Capture/Capture.ts
965
1065
  var serializeMessage = (message) => {
966
1066
  const ancestors = [];
967
1067
  let count = 0;
@@ -982,13 +1082,13 @@ var serializeMessage = (message) => {
982
1082
  );
983
1083
  };
984
1084
 
985
- // ../session-replay-worker/src/serializeProxyMessage.ts
1085
+ // ../session-replay-worker/src/parts/SerializeProxyMessage/SerializeProxyMessage.ts
986
1086
  var redacted = "[redacted]";
987
1087
  var isMasked = (node) => node.inputType === "password" || Object.hasOwn(node, "data-session-replay-mask") || Object.hasOwn(node, "data-session-replay-ignore");
988
- var structuralKeys = /* @__PURE__ */ new Set(["type", "childCount", "uid"]);
1088
+ var structuralKeys = ["type", "childCount", "uid"];
989
1089
  var redactNode = (node) => {
990
1090
  for (const key of Object.keys(node)) {
991
- if (structuralKeys.has(key)) continue;
1091
+ if (structuralKeys.includes(key)) continue;
992
1092
  if (["text", "value", "textContent"].includes(key)) node[key] = redacted;
993
1093
  else if (key === "inputType" && node[key] === "password") continue;
994
1094
  else if (["data-session-replay-mask", "data-session-replay-ignore"].includes(key)) node[key] = "";
@@ -1007,14 +1107,14 @@ var redactUpdates = (method, params) => {
1007
1107
  }
1008
1108
  };
1009
1109
  var createMessageSerializer = () => {
1010
- const maskedViews = /* @__PURE__ */ new Set();
1110
+ const maskedViews = /* @__PURE__ */ Object.create(null);
1011
1111
  const sanitizeCommand = (method, params, masked) => {
1012
1112
  if (!method.startsWith("Viewlet.") || typeof params[0] !== "number") return;
1013
1113
  const uid = params[0];
1014
1114
  const patches = params[1];
1015
1115
  const masksInput = Array.isArray(patches) && patches.some((patch) => patch?.key === "inputType" && patch.value === "password");
1016
- if (masked || masksInput) maskedViews.add(uid);
1017
- if (maskedViews.has(uid)) redactUpdates(method, params);
1116
+ if (masked || masksInput) maskedViews[uid] = true;
1117
+ if (maskedViews[uid]) redactUpdates(method, params);
1018
1118
  };
1019
1119
  const sanitizeArray = (array) => {
1020
1120
  let remaining = 0;
@@ -1054,7 +1154,7 @@ var createMessageSerializer = () => {
1054
1154
  };
1055
1155
  };
1056
1156
 
1057
- // ../session-replay-worker/src/storage.ts
1157
+ // ../session-replay-worker/src/parts/Storage/Storage.ts
1058
1158
  var withoutSessionId = ({ sessionId, ...event }) => event;
1059
1159
  var open = () => new Promise((resolve, reject) => {
1060
1160
  const request = indexedDB.open("lvce-session-replays", 1);
@@ -1089,7 +1189,7 @@ var createStorage = async () => {
1089
1189
  };
1090
1190
  };
1091
1191
 
1092
- // ../session-replay-worker/src/worker.ts
1192
+ // ../session-replay-worker/src/parts/Worker/Worker.ts
1093
1193
  var storage;
1094
1194
  var recorder;
1095
1195
  var content;
@@ -1105,9 +1205,10 @@ var report = (error) => {
1105
1205
  recording = false;
1106
1206
  };
1107
1207
  var serializeMessage2 = createMessageSerializer();
1208
+ var shouldRecord = createReplayMessageFilter();
1108
1209
  var proxies = createProxyRegistry({
1109
1210
  record(message) {
1110
- if (!recording) return;
1211
+ if (!recording || !shouldRecord(message)) return;
1111
1212
  if (pending >= 500) {
1112
1213
  report(new Error("Recording cannot keep up with worker messages"));
1113
1214
  return;
@@ -1139,7 +1240,7 @@ var commands = {
1139
1240
  session = await response.json();
1140
1241
  } else ({ session } = source);
1141
1242
  content = loadContent(session);
1142
- return content.seek(0);
1243
+ return { ...content.seek(0), activity: content.activity };
1143
1244
  },
1144
1245
  proxy: (port) => proxies.create(port),
1145
1246
  record: (...params) => recorder.record(...params),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/renderer-process",
3
- "version": "30.58.1",
3
+ "version": "30.58.3",
4
4
  "keywords": [
5
5
  "lvce-editor",
6
6
  "renderer-process"