@ubio/webvision 2.1.1 → 2.3.0
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/build/page.mjs +30 -12
- package/package.json +1 -1
- package/out/page/counter.d.ts +0 -6
- package/out/page/counter.js +0 -13
- package/out/page/counter.js.map +0 -1
- package/out/page/dom.d.ts +0 -21
- package/out/page/dom.js +0 -172
- package/out/page/dom.js.map +0 -1
- package/out/page/frame.d.ts +0 -22
- package/out/page/frame.js +0 -69
- package/out/page/frame.js.map +0 -1
- package/out/page/index.d.ts +0 -11
- package/out/page/index.js +0 -12
- package/out/page/index.js.map +0 -1
- package/out/page/overlay.d.ts +0 -3
- package/out/page/overlay.js +0 -75
- package/out/page/overlay.js.map +0 -1
- package/out/page/parser.d.ts +0 -59
- package/out/page/parser.js +0 -249
- package/out/page/parser.js.map +0 -1
- package/out/page/probe.d.ts +0 -5
- package/out/page/probe.js +0 -36
- package/out/page/probe.js.map +0 -1
- package/out/page/render.d.ts +0 -13
- package/out/page/render.js +0 -86
- package/out/page/render.js.map +0 -1
- package/out/page/snapshot.d.ts +0 -10
- package/out/page/snapshot.js +0 -31
- package/out/page/snapshot.js.map +0 -1
- package/out/page/traverse.d.ts +0 -5
- package/out/page/traverse.js +0 -7
- package/out/page/traverse.js.map +0 -1
- package/out/page/tree.d.ts +0 -22
- package/out/page/tree.js +0 -59
- package/out/page/tree.js.map +0 -1
- package/out/page/util.d.ts +0 -3
- package/out/page/util.js +0 -9
- package/out/page/util.js.map +0 -1
package/build/page.mjs
CHANGED
@@ -311,6 +311,9 @@ var VxTreeParser = class {
|
|
311
311
|
parseDocument() {
|
312
312
|
return this.parseNode(document.documentElement, null);
|
313
313
|
}
|
314
|
+
getTree() {
|
315
|
+
return new VxTreeView(this.vxNodes, this.refRange);
|
316
|
+
}
|
314
317
|
getNodes() {
|
315
318
|
return this.vxNodes;
|
316
319
|
}
|
@@ -592,14 +595,32 @@ function* traverseVxNode(vxNode, depth = 0) {
|
|
592
595
|
function renderVxNode(scope, options = {}) {
|
593
596
|
const buffer = [];
|
594
597
|
const whitelistRefs = options.whitelistRefs ?? [];
|
598
|
+
const stack = [];
|
595
599
|
for (const { vxNode, depth } of traverseVxNode(scope)) {
|
596
600
|
if (whitelistRefs.length > 0) {
|
597
601
|
if (!whitelistRefs.includes(vxNode.ref)) {
|
598
602
|
continue;
|
599
603
|
}
|
600
604
|
}
|
601
|
-
|
602
|
-
|
605
|
+
while (depth < stack.length) {
|
606
|
+
stack.pop();
|
607
|
+
}
|
608
|
+
const parentState = stack[depth - 1];
|
609
|
+
const parentIndentLevel = parentState?.indentLevel ?? 0;
|
610
|
+
const parentContributes = parentState?.contributes ?? false;
|
611
|
+
let currentIndentLevel;
|
612
|
+
if (depth === 0) {
|
613
|
+
currentIndentLevel = 0;
|
614
|
+
} else {
|
615
|
+
currentIndentLevel = parentIndentLevel + (parentContributes ? 1 : 0);
|
616
|
+
}
|
617
|
+
const indent = " ".repeat(currentIndentLevel);
|
618
|
+
const line = renderIndentedLine(indent, vxNode, options);
|
619
|
+
if (line.trim()) {
|
620
|
+
buffer.push(line);
|
621
|
+
}
|
622
|
+
const contributes = !!(options.renderNonInteractive || vxNode.isInteractive);
|
623
|
+
stack.push({ indentLevel: currentIndentLevel, contributes });
|
603
624
|
}
|
604
625
|
return buffer.join("\n");
|
605
626
|
}
|
@@ -607,7 +628,7 @@ function renderIndentedLine(indent, vxNode, options = {}) {
|
|
607
628
|
if (!vxNode.tagName) {
|
608
629
|
return [indent, vxNode.textContent].filter(Boolean).join("");
|
609
630
|
}
|
610
|
-
const tagLine = renderTagLine(vxNode, options);
|
631
|
+
const tagLine = !options.renderNonInteractive && !vxNode.isInteractive ? "" : renderTagLine(vxNode, options);
|
611
632
|
const htmlStyle = options.renderStyle === "html";
|
612
633
|
return [
|
613
634
|
indent,
|
@@ -674,15 +695,11 @@ var VX_DOM_SYMBOL = Symbol("vx:dom");
|
|
674
695
|
var VX_TREE_SYMBOL = Symbol("vx:tree");
|
675
696
|
function captureSnapshot(options = {}) {
|
676
697
|
const parser = new VxTreeParser(options);
|
677
|
-
const vxNodes = parser.getNodes();
|
678
698
|
const domMap = parser.getDomMap();
|
679
|
-
const vxTree =
|
699
|
+
const vxTree = parser.getTree();
|
680
700
|
globalThis[VX_DOM_SYMBOL] = domMap;
|
681
701
|
globalThis[VX_TREE_SYMBOL] = vxTree;
|
682
|
-
return
|
683
|
-
nodes: vxNodes,
|
684
|
-
refRange: parser.getRefRange()
|
685
|
-
};
|
702
|
+
return vxTree;
|
686
703
|
}
|
687
704
|
function getSnapshot() {
|
688
705
|
const vxTree = globalThis[VX_TREE_SYMBOL];
|
@@ -701,8 +718,9 @@ function resolveDomNode(ref) {
|
|
701
718
|
|
702
719
|
// src/page/tree.ts
|
703
720
|
var VxTreeView = class {
|
704
|
-
constructor(nodes) {
|
721
|
+
constructor(nodes, refRange) {
|
705
722
|
this.nodes = nodes;
|
723
|
+
this.refRange = refRange;
|
706
724
|
this.refMap = /* @__PURE__ */ new Map();
|
707
725
|
this.buildRefMap(nodes);
|
708
726
|
}
|
@@ -734,7 +752,7 @@ var VxTreeView = class {
|
|
734
752
|
for (const ref of refs) {
|
735
753
|
const el = resolveDomNode(ref);
|
736
754
|
if (el instanceof Element) {
|
737
|
-
highlightEl(el);
|
755
|
+
highlightEl(el, ref);
|
738
756
|
}
|
739
757
|
}
|
740
758
|
return refs;
|
@@ -762,7 +780,7 @@ var VxPageView = class {
|
|
762
780
|
this.vxTreeMap = /* @__PURE__ */ new Map();
|
763
781
|
for (const frame of vxFrames) {
|
764
782
|
this.vxFrameMap.set(frame.frameId, frame);
|
765
|
-
this.vxTreeMap.set(frame.frameId, new VxTreeView(frame.nodes));
|
783
|
+
this.vxTreeMap.set(frame.frameId, new VxTreeView(frame.nodes, frame.refRange));
|
766
784
|
}
|
767
785
|
}
|
768
786
|
findFrameByFrameId(frameId) {
|
package/package.json
CHANGED
package/out/page/counter.d.ts
DELETED
package/out/page/counter.js
DELETED
package/out/page/counter.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"counter.js","sourceRoot":"","sources":["../../src/page/counter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAEhB,YAAmB,QAAQ,CAAC;QAAT,UAAK,GAAL,KAAK,CAAI;IAAG,CAAC;IAEhC,IAAI;QACA,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CAEJ"}
|
package/out/page/dom.d.ts
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
export declare const INTERACTIVE_TAGS: string[];
|
2
|
-
export declare const INTERACTIVE_ROLES: string[];
|
3
|
-
export interface Viewport {
|
4
|
-
width: number;
|
5
|
-
height: number;
|
6
|
-
}
|
7
|
-
export declare function isHidden(el: Element): boolean;
|
8
|
-
export declare function getNormalizedText(el: Element): string;
|
9
|
-
export declare function normalizeText(str: string): string;
|
10
|
-
export declare function truncateAttrValue(value: string, limit?: number): string;
|
11
|
-
export declare function escapeAttribute(value: string): string;
|
12
|
-
export declare function containsSelector(el: Element, selector: string): boolean;
|
13
|
-
export declare function getOffsetTop(node: Node): number;
|
14
|
-
export declare function hasVisibleArea(element: Element): boolean;
|
15
|
-
export declare function isDeepHidden(element: Element): boolean;
|
16
|
-
export declare function isInteractive(el: Element): boolean;
|
17
|
-
export declare function getViewportSize(): Viewport;
|
18
|
-
export declare function isRectInViewport(rect: DOMRect, viewport: Viewport): boolean;
|
19
|
-
export declare function makeOverlaysOpaque(el: HTMLElement): void;
|
20
|
-
export declare function isRandomIdentifier(str: string): boolean;
|
21
|
-
export declare function fixZIndex(el: HTMLElement): void;
|
package/out/page/dom.js
DELETED
@@ -1,172 +0,0 @@
|
|
1
|
-
const ORIGINAL_STYLE_SYMBOL = Symbol('vx:originalStyle');
|
2
|
-
export const INTERACTIVE_TAGS = ['a', 'button', 'input', 'textarea', 'select', 'label'];
|
3
|
-
export const INTERACTIVE_ROLES = [
|
4
|
-
'button', 'link', 'checkbox', 'radio', 'textbox', 'combobox', 'listbox', 'menu', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'optgroup', 'progressbar', 'scrollbar', 'slider', 'spinbutton', 'switch', 'tab', 'tablist', 'timer', 'toolbar'
|
5
|
-
];
|
6
|
-
export function isHidden(el) {
|
7
|
-
const style = getComputedStyle(el);
|
8
|
-
if (style.display === 'none') {
|
9
|
-
return true;
|
10
|
-
}
|
11
|
-
if (style.visibility === 'hidden') {
|
12
|
-
return true;
|
13
|
-
}
|
14
|
-
if (style.opacity === '0') {
|
15
|
-
return true;
|
16
|
-
}
|
17
|
-
return false;
|
18
|
-
}
|
19
|
-
export function getNormalizedText(el) {
|
20
|
-
return normalizeText(el.textContent ?? '');
|
21
|
-
}
|
22
|
-
export function normalizeText(str) {
|
23
|
-
return str
|
24
|
-
.replace(/\p{Cf}/gu, ' ')
|
25
|
-
.replace(/\s+/g, ' ')
|
26
|
-
.trim();
|
27
|
-
}
|
28
|
-
export function truncateAttrValue(value, limit = 100) {
|
29
|
-
if (value.match(/^(javascript:)?void/)) {
|
30
|
-
return '';
|
31
|
-
}
|
32
|
-
if (value.startsWith('data:')) {
|
33
|
-
return '';
|
34
|
-
}
|
35
|
-
if (value.length > limit) {
|
36
|
-
return value.slice(0, limit) + '…';
|
37
|
-
}
|
38
|
-
return value;
|
39
|
-
}
|
40
|
-
export function escapeAttribute(value) {
|
41
|
-
return value
|
42
|
-
.replace(/&/g, '&') // Escape ampersand first!
|
43
|
-
.replace(/"/g, '"') // Escape double quotes
|
44
|
-
.replace(/'/g, ''') // Escape single quotes
|
45
|
-
.replace(/</g, '<') // Escape less than
|
46
|
-
.replace(/>/g, '>') // Escape greater than
|
47
|
-
.replace(/\r?\n/g, ' '); // Replace newlines with space
|
48
|
-
}
|
49
|
-
export function containsSelector(el, selector) {
|
50
|
-
return el.matches(selector) || !!el.querySelector(selector);
|
51
|
-
}
|
52
|
-
export function getOffsetTop(node) {
|
53
|
-
let y = 0;
|
54
|
-
let current = node;
|
55
|
-
while (current) {
|
56
|
-
y += current.offsetTop ?? 0;
|
57
|
-
current = current.offsetParent;
|
58
|
-
}
|
59
|
-
return y;
|
60
|
-
}
|
61
|
-
export function hasVisibleArea(element) {
|
62
|
-
const rect = element.getBoundingClientRect();
|
63
|
-
const area = rect.width * rect.height;
|
64
|
-
return area > 64;
|
65
|
-
}
|
66
|
-
export function isDeepHidden(element) {
|
67
|
-
if (isHidden(element)) {
|
68
|
-
return true;
|
69
|
-
}
|
70
|
-
if (!hasVisibleArea(element)) {
|
71
|
-
return [...element.children].every(el => isDeepHidden(el));
|
72
|
-
}
|
73
|
-
return false;
|
74
|
-
}
|
75
|
-
export function isInteractive(el) {
|
76
|
-
const htmlEl = el;
|
77
|
-
if (INTERACTIVE_TAGS.includes(el.tagName.toLowerCase())) {
|
78
|
-
return true;
|
79
|
-
}
|
80
|
-
const tabindex = htmlEl.getAttribute('tabindex');
|
81
|
-
if (tabindex && parseInt(tabindex) >= 0) {
|
82
|
-
return true;
|
83
|
-
}
|
84
|
-
const role = htmlEl.getAttribute('role') ?? htmlEl.getAttribute('aria-role') ?? '';
|
85
|
-
if (INTERACTIVE_ROLES.includes(role)) {
|
86
|
-
return true;
|
87
|
-
}
|
88
|
-
if (htmlEl.onclick != null) {
|
89
|
-
return true;
|
90
|
-
}
|
91
|
-
return false;
|
92
|
-
}
|
93
|
-
export function getViewportSize() {
|
94
|
-
return {
|
95
|
-
width: window.innerWidth,
|
96
|
-
height: window.innerHeight,
|
97
|
-
};
|
98
|
-
}
|
99
|
-
export function isRectInViewport(rect, viewport) {
|
100
|
-
return rect.left < viewport.width &&
|
101
|
-
rect.right > 0 &&
|
102
|
-
rect.top < viewport.height &&
|
103
|
-
rect.bottom > 0;
|
104
|
-
}
|
105
|
-
export function makeOverlaysOpaque(el) {
|
106
|
-
if (!el[ORIGINAL_STYLE_SYMBOL]) {
|
107
|
-
el[ORIGINAL_STYLE_SYMBOL] = el.getAttribute('style');
|
108
|
-
}
|
109
|
-
// Only apply to big elements
|
110
|
-
const rect = el.getBoundingClientRect();
|
111
|
-
if (rect.width < 500 || rect.height < 500) {
|
112
|
-
return;
|
113
|
-
}
|
114
|
-
const style = getComputedStyle(el);
|
115
|
-
if (style.pointerEvents === 'none') {
|
116
|
-
return;
|
117
|
-
}
|
118
|
-
el.style.setProperty('animation', 'none', 'important');
|
119
|
-
el.style.setProperty('transition', 'none', 'important');
|
120
|
-
el.style.setProperty('backdrop-filter', 'none', 'important');
|
121
|
-
el.style.setProperty('mix-blend-mode', 'normal', 'important');
|
122
|
-
el.style.setProperty('opacity', '1', 'important');
|
123
|
-
el.style.setProperty('filter', 'none', 'important');
|
124
|
-
const bg = style.backgroundColor;
|
125
|
-
el.style.setProperty('background-color', removeAlpha(bg));
|
126
|
-
}
|
127
|
-
function removeAlpha(color) {
|
128
|
-
const rgba = color.match(/^rgba\((.*)\)$/);
|
129
|
-
if (!rgba) {
|
130
|
-
return color;
|
131
|
-
}
|
132
|
-
const [r, g, b, a] = rgba[1].split(',').map(parseFloat);
|
133
|
-
if (a > 0 && a < 1) {
|
134
|
-
return `rgba(${r},${g},${b},1)`;
|
135
|
-
}
|
136
|
-
return color;
|
137
|
-
}
|
138
|
-
export function isRandomIdentifier(str) {
|
139
|
-
const words = str.split(/[_-]/g);
|
140
|
-
return !words.some(w => isWordLike(w)) || words.some(w => isRandomString(w));
|
141
|
-
}
|
142
|
-
function isWordLike(str) {
|
143
|
-
if (str.length <= 2) {
|
144
|
-
return false;
|
145
|
-
}
|
146
|
-
// Words don't usually have a lot of vowels or consonants in a row
|
147
|
-
if (/[^eyuioa]{4,}/.test(str)) {
|
148
|
-
return false;
|
149
|
-
}
|
150
|
-
if (/[eyuioa]{4,}/.test(str)) {
|
151
|
-
return false;
|
152
|
-
}
|
153
|
-
return true;
|
154
|
-
}
|
155
|
-
function isRandomString(str) {
|
156
|
-
// Hex strings will often consist of at least one digit and A-F letters
|
157
|
-
if (/^[0-9a-f]+$/i.test(str) && /[0-9]/.test(str)) {
|
158
|
-
return true;
|
159
|
-
}
|
160
|
-
// Digits separated by non-digits are a sign of random ids
|
161
|
-
if (/[0-9][^0-9]+[0-9]/.test(str)) {
|
162
|
-
return true;
|
163
|
-
}
|
164
|
-
return false;
|
165
|
-
}
|
166
|
-
export function fixZIndex(el) {
|
167
|
-
const style = getComputedStyle(el);
|
168
|
-
if (Number(style.zIndex) > 2147483600) {
|
169
|
-
el.style.setProperty('z-index', '2147483600', 'important');
|
170
|
-
}
|
171
|
-
}
|
172
|
-
//# sourceMappingURL=dom.js.map
|
package/out/page/dom.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/page/dom.ts"],"names":[],"mappings":"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"}
|
package/out/page/frame.d.ts
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
import { VxNode } from './parser.js';
|
2
|
-
import { VxRenderOptions } from './render.js';
|
3
|
-
export interface VxFrame {
|
4
|
-
frameId: number;
|
5
|
-
iframeRef?: number;
|
6
|
-
refRange: [number, number];
|
7
|
-
nodes: VxNode[];
|
8
|
-
isOmitted?: boolean;
|
9
|
-
}
|
10
|
-
export declare class VxPageView<T extends VxFrame> {
|
11
|
-
readonly vxFrames: T[];
|
12
|
-
private vxFrameMap;
|
13
|
-
private vxTreeMap;
|
14
|
-
constructor(vxFrames: T[]);
|
15
|
-
findFrameByFrameId(frameId: number): T | null;
|
16
|
-
getFrameByFrameId(frameId: number): T;
|
17
|
-
findFrameByRef(ref: number): T | null;
|
18
|
-
getFrameByRef(ref: number): T;
|
19
|
-
findParentFrame(frameId: number): T | null;
|
20
|
-
isFrameShown(frameId: number): boolean;
|
21
|
-
renderAll(options: VxRenderOptions): string;
|
22
|
-
}
|
package/out/page/frame.js
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
import { VxTreeView } from './tree.js';
|
2
|
-
export class VxPageView {
|
3
|
-
constructor(vxFrames) {
|
4
|
-
this.vxFrames = vxFrames;
|
5
|
-
this.vxFrameMap = new Map();
|
6
|
-
this.vxTreeMap = new Map();
|
7
|
-
for (const frame of vxFrames) {
|
8
|
-
this.vxFrameMap.set(frame.frameId, frame);
|
9
|
-
this.vxTreeMap.set(frame.frameId, new VxTreeView(frame.nodes));
|
10
|
-
}
|
11
|
-
}
|
12
|
-
findFrameByFrameId(frameId) {
|
13
|
-
return this.vxFrameMap.get(frameId) ?? null;
|
14
|
-
}
|
15
|
-
getFrameByFrameId(frameId) {
|
16
|
-
const vxFrame = this.vxFrameMap.get(frameId);
|
17
|
-
if (vxFrame == null) {
|
18
|
-
throw new Error(`[VX] Frame not found for [frameId=${frameId}]`);
|
19
|
-
}
|
20
|
-
return vxFrame;
|
21
|
-
}
|
22
|
-
findFrameByRef(ref) {
|
23
|
-
const vxFrame = this.vxFrames.find(frame => ref >= frame.refRange[0] && ref <= frame.refRange[1]);
|
24
|
-
if (!vxFrame) {
|
25
|
-
return null;
|
26
|
-
}
|
27
|
-
return this.vxFrameMap.get(vxFrame.frameId) ?? null;
|
28
|
-
}
|
29
|
-
getFrameByRef(ref) {
|
30
|
-
const vxFrame = this.findFrameByRef(ref);
|
31
|
-
if (vxFrame == null) {
|
32
|
-
throw new Error(`[VX] Frame not found for [ref=${ref}]`);
|
33
|
-
}
|
34
|
-
return vxFrame;
|
35
|
-
}
|
36
|
-
findParentFrame(frameId) {
|
37
|
-
const frame = this.getFrameByFrameId(frameId);
|
38
|
-
const iframeRef = frame?.iframeRef;
|
39
|
-
if (iframeRef == null) {
|
40
|
-
return null;
|
41
|
-
}
|
42
|
-
return this.findFrameByRef(iframeRef);
|
43
|
-
}
|
44
|
-
isFrameShown(frameId) {
|
45
|
-
const frame = this.getFrameByFrameId(frameId);
|
46
|
-
if (!frame) {
|
47
|
-
return false;
|
48
|
-
}
|
49
|
-
const parentFrame = this.findParentFrame(frameId);
|
50
|
-
const { iframeRef } = frame;
|
51
|
-
if (parentFrame == null || iframeRef == null) {
|
52
|
-
return true;
|
53
|
-
}
|
54
|
-
const vxTree = this.vxTreeMap.get(frameId);
|
55
|
-
const existsInParent = !!vxTree?.findNode(iframeRef);
|
56
|
-
return existsInParent ? this.isFrameShown(parentFrame.frameId) : false;
|
57
|
-
}
|
58
|
-
renderAll(options) {
|
59
|
-
return this.vxFrames.map(frame => {
|
60
|
-
const vxTree = this.vxTreeMap.get(frame.frameId);
|
61
|
-
const rendered = vxTree?.render(options);
|
62
|
-
return [
|
63
|
-
`FRAME ${frame.frameId}`,
|
64
|
-
rendered,
|
65
|
-
].join('\n\n');
|
66
|
-
}).join('\n\n');
|
67
|
-
}
|
68
|
-
}
|
69
|
-
//# sourceMappingURL=frame.js.map
|
package/out/page/frame.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/page/frame.ts"],"names":[],"mappings":"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"}
|
package/out/page/index.d.ts
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
export * from './counter.js';
|
2
|
-
export * from './dom.js';
|
3
|
-
export * from './frame.js';
|
4
|
-
export * from './overlay.js';
|
5
|
-
export * from './parser.js';
|
6
|
-
export * from './probe.js';
|
7
|
-
export * from './render.js';
|
8
|
-
export * from './snapshot.js';
|
9
|
-
export * from './traverse.js';
|
10
|
-
export * from './tree.js';
|
11
|
-
export * from './util.js';
|
package/out/page/index.js
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
export * from './counter.js';
|
2
|
-
export * from './dom.js';
|
3
|
-
export * from './frame.js';
|
4
|
-
export * from './overlay.js';
|
5
|
-
export * from './parser.js';
|
6
|
-
export * from './probe.js';
|
7
|
-
export * from './render.js';
|
8
|
-
export * from './snapshot.js';
|
9
|
-
export * from './traverse.js';
|
10
|
-
export * from './tree.js';
|
11
|
-
export * from './util.js';
|
12
|
-
//# sourceMappingURL=index.js.map
|
package/out/page/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/page/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
|
package/out/page/overlay.d.ts
DELETED
package/out/page/overlay.js
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
import { VX_IGNORE_SYMBOL } from './parser.js';
|
2
|
-
export function showPoint(x, y, clear = true) {
|
3
|
-
if (clear) {
|
4
|
-
clearOverlay();
|
5
|
-
}
|
6
|
-
const point = document.createElement('div');
|
7
|
-
point.style.position = 'absolute';
|
8
|
-
point.style.left = `${x}px`;
|
9
|
-
point.style.top = `${y}px`;
|
10
|
-
point.style.width = '32px';
|
11
|
-
point.style.height = '32px';
|
12
|
-
point.style.transform = 'translate(-50%, -50%)';
|
13
|
-
point.style.backgroundColor = 'red';
|
14
|
-
point.style.borderRadius = '100%';
|
15
|
-
point.style.opacity = '0.5';
|
16
|
-
const container = getOverlayContainer();
|
17
|
-
container.appendChild(point);
|
18
|
-
}
|
19
|
-
export function clearOverlay() {
|
20
|
-
const container = getOverlayContainer();
|
21
|
-
container.remove();
|
22
|
-
}
|
23
|
-
export function highlightEl(el, ref = 0) {
|
24
|
-
if (!(el instanceof Element)) {
|
25
|
-
return;
|
26
|
-
}
|
27
|
-
const container = getOverlayContainer();
|
28
|
-
const color = getColor(ref);
|
29
|
-
const rect = el.getBoundingClientRect();
|
30
|
-
const overlay = document.createElement('div');
|
31
|
-
container.appendChild(overlay);
|
32
|
-
overlay.style.position = 'absolute';
|
33
|
-
overlay.style.top = `${rect.top}px`;
|
34
|
-
overlay.style.left = `${rect.left}px`;
|
35
|
-
overlay.style.width = `${rect.width}px`;
|
36
|
-
overlay.style.height = `${rect.height}px`;
|
37
|
-
overlay.style.border = `2px solid ${color}`;
|
38
|
-
const label = document.createElement('div');
|
39
|
-
overlay.appendChild(label);
|
40
|
-
label.style.position = 'absolute';
|
41
|
-
label.style.bottom = `100%`;
|
42
|
-
label.style.left = `0`;
|
43
|
-
label.style.backgroundColor = color;
|
44
|
-
label.style.color = 'white';
|
45
|
-
label.style.fontSize = '10px';
|
46
|
-
label.style.fontFamily = 'monospace';
|
47
|
-
label.style.fontWeight = 'normal';
|
48
|
-
label.style.fontStyle = 'normal';
|
49
|
-
label.style.opacity = '0.8';
|
50
|
-
label.style.padding = '0 2px';
|
51
|
-
label.style.transform = 'translateY(50%)';
|
52
|
-
label.textContent = String(ref);
|
53
|
-
}
|
54
|
-
function getOverlayContainer() {
|
55
|
-
let container = document.querySelector('#webvision-overlay');
|
56
|
-
if (!container) {
|
57
|
-
container = document.createElement('div');
|
58
|
-
container[VX_IGNORE_SYMBOL] = true;
|
59
|
-
container.id = 'webvision-overlay';
|
60
|
-
container.style.position = 'fixed';
|
61
|
-
container.style.top = '0';
|
62
|
-
container.style.left = '0';
|
63
|
-
container.style.bottom = '0';
|
64
|
-
container.style.right = '0';
|
65
|
-
container.style.zIndex = '2147483647'; // Maximum z-index value
|
66
|
-
container.style.pointerEvents = 'none';
|
67
|
-
document.body.appendChild(container);
|
68
|
-
}
|
69
|
-
return container;
|
70
|
-
}
|
71
|
-
function getColor(index) {
|
72
|
-
const hue = (index * 120 * .382) % 360;
|
73
|
-
return `hsl(${hue}, 85%, 50%)`;
|
74
|
-
}
|
75
|
-
//# sourceMappingURL=overlay.js.map
|
package/out/page/overlay.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/page/overlay.ts"],"names":[],"mappings":"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"}
|
package/out/page/parser.d.ts
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
export declare const VX_NODE_SYMBOL: unique symbol;
|
2
|
-
export declare const VX_IGNORE_SYMBOL: unique symbol;
|
3
|
-
export declare const VX_IGNORE_TAGS: string[];
|
4
|
-
export declare const VX_LABEL_ATTRS: string[];
|
5
|
-
export declare const VX_VALUE_ATTRS: string[];
|
6
|
-
export declare const VX_SRC_ATTRS: string[];
|
7
|
-
export declare const VX_TAG_PREFERENCE: string[];
|
8
|
-
export type VxDomNode = Element | Text;
|
9
|
-
export interface VxNode {
|
10
|
-
ref: number;
|
11
|
-
tagName?: string;
|
12
|
-
children?: VxNode[];
|
13
|
-
id?: string;
|
14
|
-
classList?: string[];
|
15
|
-
textContent?: string;
|
16
|
-
hasVisibleArea?: boolean;
|
17
|
-
isInteractive?: boolean;
|
18
|
-
isOutsideViewport?: boolean;
|
19
|
-
isProbeHit?: boolean;
|
20
|
-
isKept?: boolean;
|
21
|
-
srcAttrs?: Record<string, string>;
|
22
|
-
labelAttrs?: Record<string, string>;
|
23
|
-
valueAttrs?: Record<string, string>;
|
24
|
-
}
|
25
|
-
export interface VxTreeOptions {
|
26
|
-
startRef?: number;
|
27
|
-
skipImages?: boolean;
|
28
|
-
viewportOnly?: boolean;
|
29
|
-
probeViewport?: boolean;
|
30
|
-
opaqueOverlays?: boolean;
|
31
|
-
unnestDivs?: boolean;
|
32
|
-
}
|
33
|
-
export type VxTransform = (vxNode: VxNode) => VxNode;
|
34
|
-
export declare class VxTreeParser {
|
35
|
-
options: VxTreeOptions;
|
36
|
-
private counter;
|
37
|
-
private viewport;
|
38
|
-
private refRange;
|
39
|
-
private vxNodes;
|
40
|
-
private probeElements;
|
41
|
-
private domRefMap;
|
42
|
-
constructor(options?: VxTreeOptions);
|
43
|
-
private parseDocument;
|
44
|
-
getNodes(): VxNode[];
|
45
|
-
getRefRange(): [number, number];
|
46
|
-
getDomMap(): Map<number, Node>;
|
47
|
-
private parseNode;
|
48
|
-
private parseElement;
|
49
|
-
private makeNode;
|
50
|
-
private pruneRecursive;
|
51
|
-
private collapseSingleChild;
|
52
|
-
private collapsePreferParent;
|
53
|
-
private collapseMerge;
|
54
|
-
private shouldOmit;
|
55
|
-
private isProbeHit;
|
56
|
-
private collectLabelAttrs;
|
57
|
-
private collectValueAttrs;
|
58
|
-
private collectSrcAttrs;
|
59
|
-
}
|
package/out/page/parser.js
DELETED
@@ -1,249 +0,0 @@
|
|
1
|
-
import { Counter } from './counter.js';
|
2
|
-
import { fixZIndex, getViewportSize, hasVisibleArea, isInteractive, isRandomIdentifier, isRectInViewport, makeOverlaysOpaque, normalizeText, truncateAttrValue } from './dom.js';
|
3
|
-
import { isHidden } from './dom.js';
|
4
|
-
import { probeViewport } from './probe.js';
|
5
|
-
import { isObjectEmpty } from './util.js';
|
6
|
-
export const VX_NODE_SYMBOL = Symbol('vx:node');
|
7
|
-
export const VX_IGNORE_SYMBOL = Symbol('vx:ignore');
|
8
|
-
export const VX_IGNORE_TAGS = ['svg', 'script', 'noscript', 'style', 'link', 'meta'];
|
9
|
-
export const VX_LABEL_ATTRS = ['title', 'alt', 'placeholder', 'aria-label'];
|
10
|
-
export const VX_VALUE_ATTRS = ['value', 'checked', 'selected', 'disabled', 'readonly'];
|
11
|
-
export const VX_SRC_ATTRS = ['src', 'href'];
|
12
|
-
export const VX_TAG_PREFERENCE = [
|
13
|
-
'a', 'iframe', 'input', 'button', 'select', 'textarea', 'img', 'label',
|
14
|
-
'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
|
15
|
-
'ul', 'ol', 'li', 'dl', 'dt', 'dd',
|
16
|
-
'section', 'article', 'main', 'header', 'footer', 'nav', 'aside',
|
17
|
-
'form', 'input', 'textarea', 'select', 'option', 'fieldset', 'legend',
|
18
|
-
'p', 'pre', 'code', 'blockquote', 'figure', 'figcaption',
|
19
|
-
'table', 'thead', 'tbody', 'tr', 'td', 'th',
|
20
|
-
'strong', 'em', 'sub', 'sup',
|
21
|
-
];
|
22
|
-
const VX_KEEP_SELECTOR = 'a, button, input, textarea, select, label, iframe';
|
23
|
-
export class VxTreeParser {
|
24
|
-
constructor(options = {}) {
|
25
|
-
this.options = options;
|
26
|
-
this.probeElements = [];
|
27
|
-
this.domRefMap = new Map();
|
28
|
-
const { startRef = 0 } = options;
|
29
|
-
this.viewport = getViewportSize();
|
30
|
-
this.counter = new Counter(startRef);
|
31
|
-
if (options.probeViewport) {
|
32
|
-
this.probeElements = probeViewport(8);
|
33
|
-
}
|
34
|
-
const vxRoot = this.parseDocument();
|
35
|
-
this.refRange = [startRef, this.counter.current()];
|
36
|
-
this.vxNodes = this.pruneRecursive(vxRoot);
|
37
|
-
}
|
38
|
-
parseDocument() {
|
39
|
-
return this.parseNode(document.documentElement, null);
|
40
|
-
}
|
41
|
-
getNodes() {
|
42
|
-
return this.vxNodes;
|
43
|
-
}
|
44
|
-
getRefRange() {
|
45
|
-
return this.refRange;
|
46
|
-
}
|
47
|
-
getDomMap() {
|
48
|
-
return this.domRefMap;
|
49
|
-
}
|
50
|
-
parseNode(node, parent) {
|
51
|
-
if (node[VX_IGNORE_SYMBOL]) {
|
52
|
-
return null;
|
53
|
-
}
|
54
|
-
if (node instanceof Text) {
|
55
|
-
// Single instances of Text nodes can only occur in "text"
|
56
|
-
// (e.g. when regular text is interspersed with links and other elements)
|
57
|
-
const textContent = normalizeText(node.textContent ?? '');
|
58
|
-
if (textContent) {
|
59
|
-
return this.makeNode(node, {
|
60
|
-
textContent,
|
61
|
-
hasVisibleArea: parent?.hasVisibleArea,
|
62
|
-
isOutsideViewport: parent?.isOutsideViewport,
|
63
|
-
isProbeHit: parent?.isProbeHit,
|
64
|
-
});
|
65
|
-
}
|
66
|
-
return null;
|
67
|
-
}
|
68
|
-
if (node instanceof Element) {
|
69
|
-
if (this.options.opaqueOverlays) {
|
70
|
-
makeOverlaysOpaque(node);
|
71
|
-
}
|
72
|
-
fixZIndex(node);
|
73
|
-
return this.parseElement(node);
|
74
|
-
}
|
75
|
-
return null;
|
76
|
-
}
|
77
|
-
parseElement(el) {
|
78
|
-
if (VX_IGNORE_TAGS.includes(el.tagName.toLowerCase())) {
|
79
|
-
return null;
|
80
|
-
}
|
81
|
-
if (isHidden(el)) {
|
82
|
-
return null;
|
83
|
-
}
|
84
|
-
const rect = el.getBoundingClientRect();
|
85
|
-
const id = el.getAttribute('id') ?? '';
|
86
|
-
const vxNode = this.makeNode(el, {
|
87
|
-
tagName: el.tagName.toLowerCase(),
|
88
|
-
id: isRandomIdentifier(id) ? undefined : id,
|
89
|
-
classList: Array.from(el.classList)
|
90
|
-
.filter(cls => !isRandomIdentifier(cls))
|
91
|
-
.slice(0, 4),
|
92
|
-
labelAttrs: this.collectLabelAttrs(el),
|
93
|
-
valueAttrs: this.collectValueAttrs(el),
|
94
|
-
srcAttrs: this.collectSrcAttrs(el),
|
95
|
-
hasVisibleArea: hasVisibleArea(el),
|
96
|
-
isInteractive: isInteractive(el),
|
97
|
-
isOutsideViewport: !isRectInViewport(rect, this.viewport),
|
98
|
-
isProbeHit: this.isProbeHit(el),
|
99
|
-
isKept: el.matches(VX_KEEP_SELECTOR),
|
100
|
-
});
|
101
|
-
const children = [...el.childNodes]
|
102
|
-
.map(child => this.parseNode(child, vxNode))
|
103
|
-
.filter(_ => _ != null);
|
104
|
-
// Special case: if the only child is a text node, return a single node with the text content
|
105
|
-
if (children.length === 1 && !children[0]?.tagName) {
|
106
|
-
vxNode.textContent = normalizeText(children[0].textContent ?? '');
|
107
|
-
}
|
108
|
-
else {
|
109
|
-
vxNode.children = children;
|
110
|
-
}
|
111
|
-
return vxNode;
|
112
|
-
}
|
113
|
-
makeNode(node, spec) {
|
114
|
-
const ref = this.counter.next();
|
115
|
-
const vxNode = {
|
116
|
-
...spec,
|
117
|
-
ref,
|
118
|
-
};
|
119
|
-
this.domRefMap.set(ref, node);
|
120
|
-
node[VX_NODE_SYMBOL] = vxNode;
|
121
|
-
return vxNode;
|
122
|
-
}
|
123
|
-
pruneRecursive(vxNode) {
|
124
|
-
if (!vxNode) {
|
125
|
-
return [];
|
126
|
-
}
|
127
|
-
const children = vxNode.children ?? [];
|
128
|
-
// Recursively prune children
|
129
|
-
const newChildren = children.flatMap(child => this.pruneRecursive(child));
|
130
|
-
// If the node itself is omitted, replace it with children
|
131
|
-
if (this.shouldOmit(vxNode)) {
|
132
|
-
return newChildren;
|
133
|
-
}
|
134
|
-
vxNode.children = newChildren;
|
135
|
-
// Collapse single-child elements
|
136
|
-
if (newChildren.length === 1) {
|
137
|
-
const child = newChildren[0];
|
138
|
-
return this.collapseSingleChild(vxNode, child);
|
139
|
-
}
|
140
|
-
return [vxNode];
|
141
|
-
}
|
142
|
-
collapseSingleChild(parent, child) {
|
143
|
-
const preferParent = this.collapsePreferParent(parent, child);
|
144
|
-
const merged = preferParent ?
|
145
|
-
this.collapseMerge(parent, child) :
|
146
|
-
this.collapseMerge(child, parent);
|
147
|
-
return this.pruneRecursive({
|
148
|
-
...merged,
|
149
|
-
children: child.children,
|
150
|
-
textContent: child.textContent,
|
151
|
-
});
|
152
|
-
}
|
153
|
-
collapsePreferParent(parent, child) {
|
154
|
-
const parentRank = VX_TAG_PREFERENCE.indexOf(parent.tagName ?? '');
|
155
|
-
const childRank = VX_TAG_PREFERENCE.indexOf(child.tagName ?? '');
|
156
|
-
if (parentRank === -1 && childRank === -1) {
|
157
|
-
const parentAttrCount = Object.keys({
|
158
|
-
...parent.labelAttrs,
|
159
|
-
...parent.valueAttrs,
|
160
|
-
...parent.srcAttrs,
|
161
|
-
}).length;
|
162
|
-
const childAttrCount = Object.keys({
|
163
|
-
...child.labelAttrs,
|
164
|
-
...child.valueAttrs,
|
165
|
-
...child.srcAttrs,
|
166
|
-
}).length;
|
167
|
-
return parentAttrCount > childAttrCount;
|
168
|
-
}
|
169
|
-
return parentRank !== -1 && (childRank === -1 || parentRank < childRank);
|
170
|
-
}
|
171
|
-
collapseMerge(a, b) {
|
172
|
-
return {
|
173
|
-
...b,
|
174
|
-
...a,
|
175
|
-
labelAttrs: { ...b.labelAttrs, ...a.labelAttrs },
|
176
|
-
valueAttrs: { ...b.valueAttrs, ...a.valueAttrs },
|
177
|
-
srcAttrs: { ...b.srcAttrs, ...a.srcAttrs },
|
178
|
-
};
|
179
|
-
}
|
180
|
-
shouldOmit(vxNode) {
|
181
|
-
const tagName = vxNode.tagName ?? '';
|
182
|
-
if (!vxNode.hasVisibleArea) {
|
183
|
-
return true;
|
184
|
-
}
|
185
|
-
if (this.options.viewportOnly && vxNode.isOutsideViewport) {
|
186
|
-
return true;
|
187
|
-
}
|
188
|
-
if (this.options.probeViewport && !vxNode.isProbeHit) {
|
189
|
-
return true;
|
190
|
-
}
|
191
|
-
if (this.options.skipImages && vxNode.tagName === 'img') {
|
192
|
-
return true;
|
193
|
-
}
|
194
|
-
const hasText = !!vxNode.textContent;
|
195
|
-
const hasChildren = (vxNode.children ?? []).length > 0;
|
196
|
-
const hasAttrs = [vxNode.labelAttrs, vxNode.valueAttrs, vxNode.srcAttrs]
|
197
|
-
.some(attrs => !isObjectEmpty(attrs ?? {}));
|
198
|
-
if (this.options.unnestDivs) {
|
199
|
-
const isDivOrSpan = ['div', 'span'].includes(tagName);
|
200
|
-
if (isDivOrSpan && hasChildren && !hasAttrs) {
|
201
|
-
return true;
|
202
|
-
}
|
203
|
-
}
|
204
|
-
if (vxNode.isKept) {
|
205
|
-
return false;
|
206
|
-
}
|
207
|
-
return !hasText && !hasAttrs && !hasChildren;
|
208
|
-
}
|
209
|
-
isProbeHit(el) {
|
210
|
-
// TODO this is a bit brute-forcish, consider improving
|
211
|
-
for (const probeEl of this.probeElements) {
|
212
|
-
if (el.contains(probeEl) || probeEl.contains(el)) {
|
213
|
-
return true;
|
214
|
-
}
|
215
|
-
}
|
216
|
-
return false;
|
217
|
-
}
|
218
|
-
collectLabelAttrs(el) {
|
219
|
-
const attrs = {};
|
220
|
-
for (const attr of VX_LABEL_ATTRS) {
|
221
|
-
const value = truncateAttrValue(el.getAttribute(attr) ?? '');
|
222
|
-
if (value) {
|
223
|
-
attrs[attr] = value;
|
224
|
-
}
|
225
|
-
}
|
226
|
-
return attrs;
|
227
|
-
}
|
228
|
-
collectValueAttrs(el) {
|
229
|
-
const attrs = {};
|
230
|
-
for (const attr of VX_VALUE_ATTRS) {
|
231
|
-
const value = el[attr] ?? '';
|
232
|
-
if (value) {
|
233
|
-
attrs[attr] = String(value);
|
234
|
-
}
|
235
|
-
}
|
236
|
-
return attrs;
|
237
|
-
}
|
238
|
-
collectSrcAttrs(el) {
|
239
|
-
const attrs = {};
|
240
|
-
for (const attr of VX_SRC_ATTRS) {
|
241
|
-
const value = truncateAttrValue(el[attr] ?? '');
|
242
|
-
if (value) {
|
243
|
-
attrs[attr] = value;
|
244
|
-
}
|
245
|
-
}
|
246
|
-
return attrs;
|
247
|
-
}
|
248
|
-
}
|
249
|
-
//# sourceMappingURL=parser.js.map
|
package/out/page/parser.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/page/parser.ts"],"names":[],"mappings":"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"}
|
package/out/page/probe.d.ts
DELETED
package/out/page/probe.js
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
import { getViewportSize } from './dom.js';
|
2
|
-
/**
|
3
|
-
* Scans the viewport by picking elements in regular intervals.
|
4
|
-
*/
|
5
|
-
export function probeViewport(gridSize = 32) {
|
6
|
-
const { width, height } = getViewportSize();
|
7
|
-
const elements = [];
|
8
|
-
for (let y = (gridSize / 2); y < height; y += gridSize) {
|
9
|
-
for (let x = (gridSize / 2); x < width; x += gridSize) {
|
10
|
-
const element = document.elementFromPoint(x, y);
|
11
|
-
if (element && !elements.includes(element)) {
|
12
|
-
elements.push(element);
|
13
|
-
}
|
14
|
-
}
|
15
|
-
}
|
16
|
-
return elements;
|
17
|
-
}
|
18
|
-
export function checkOccluded(element, gridSize = 8) {
|
19
|
-
let total = 0;
|
20
|
-
let hits = 0;
|
21
|
-
const { top, left, width, height } = element.getBoundingClientRect();
|
22
|
-
for (let x = left + (gridSize / 2); x < left + width; x += gridSize) {
|
23
|
-
for (let y = top + (gridSize / 2); y < top + height; y += gridSize) {
|
24
|
-
total++;
|
25
|
-
const el = document.elementFromPoint(x, y);
|
26
|
-
if (!el) {
|
27
|
-
continue;
|
28
|
-
}
|
29
|
-
if (element.contains(el) || el.contains(element)) {
|
30
|
-
hits++;
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
return (hits / total) < 0.5;
|
35
|
-
}
|
36
|
-
//# sourceMappingURL=probe.js.map
|
package/out/page/probe.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/page/probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAQ,GAAG,EAAE;IACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,QAAQ,GAAG,CAAC;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAClE,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YACjE,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,SAAS;YACb,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,IAAI,EAAE,CAAC;YACX,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;AAChC,CAAC"}
|
package/out/page/render.d.ts
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
import { VxNode } from './parser.js';
|
2
|
-
export interface VxRenderOptions {
|
3
|
-
renderStyle?: 'html' | 'text';
|
4
|
-
renderTagNames?: boolean;
|
5
|
-
renderIds?: boolean;
|
6
|
-
renderClassNames?: boolean;
|
7
|
-
renderRefs?: boolean | 'all';
|
8
|
-
renderLabelAttrs?: boolean;
|
9
|
-
renderValueAttrs?: boolean;
|
10
|
-
renderSrcAttrs?: boolean;
|
11
|
-
whitelistRefs?: number[];
|
12
|
-
}
|
13
|
-
export declare function renderVxNode(scope: VxNode, options?: VxRenderOptions): string;
|
package/out/page/render.js
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
import { truncateAttrValue } from './dom.js';
|
2
|
-
import { traverseVxNode } from './traverse.js';
|
3
|
-
import { isContainerNode } from './util.js';
|
4
|
-
export function renderVxNode(scope, options = {}) {
|
5
|
-
const buffer = [];
|
6
|
-
const whitelistRefs = options.whitelistRefs ?? [];
|
7
|
-
for (const { vxNode, depth } of traverseVxNode(scope)) {
|
8
|
-
if (whitelistRefs.length > 0) {
|
9
|
-
if (!whitelistRefs.includes(vxNode.ref)) {
|
10
|
-
continue;
|
11
|
-
}
|
12
|
-
}
|
13
|
-
const indent = ' '.repeat(depth);
|
14
|
-
buffer.push(renderIndentedLine(indent, vxNode, options));
|
15
|
-
}
|
16
|
-
return buffer.join('\n');
|
17
|
-
}
|
18
|
-
function renderIndentedLine(indent, vxNode, options = {}) {
|
19
|
-
if (!vxNode.tagName) {
|
20
|
-
return [indent, vxNode.textContent].filter(Boolean).join('');
|
21
|
-
}
|
22
|
-
const tagLine = renderTagLine(vxNode, options);
|
23
|
-
const htmlStyle = options.renderStyle === 'html';
|
24
|
-
return [
|
25
|
-
indent,
|
26
|
-
tagLine,
|
27
|
-
htmlStyle ? '' : ' ',
|
28
|
-
vxNode.textContent ?? '',
|
29
|
-
].join('');
|
30
|
-
}
|
31
|
-
function renderTagLine(vxNode, options) {
|
32
|
-
const htmlStyle = options.renderStyle === 'html';
|
33
|
-
const components = [];
|
34
|
-
if (options.renderTagNames && vxNode.tagName) {
|
35
|
-
components.push(vxNode.tagName);
|
36
|
-
}
|
37
|
-
if (options.renderIds && vxNode.id) {
|
38
|
-
if (htmlStyle) {
|
39
|
-
components.push(`id="${vxNode.id}"`);
|
40
|
-
}
|
41
|
-
else {
|
42
|
-
components.push(`#${vxNode.id}`);
|
43
|
-
}
|
44
|
-
}
|
45
|
-
if (options.renderClassNames && vxNode.classList?.length) {
|
46
|
-
if (htmlStyle) {
|
47
|
-
components.push(`class="${vxNode.classList.join(' ')}"`);
|
48
|
-
}
|
49
|
-
else {
|
50
|
-
components.push('.' + vxNode.classList.join('.'));
|
51
|
-
}
|
52
|
-
}
|
53
|
-
if (options.renderRefs) {
|
54
|
-
const isRenderRef = [
|
55
|
-
options.renderRefs === 'all',
|
56
|
-
options.renderRefs === true && !isContainerNode(vxNode),
|
57
|
-
].some(Boolean);
|
58
|
-
if (isRenderRef) {
|
59
|
-
components.push(`[@${vxNode.ref}]`);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
const attrs = [];
|
63
|
-
if (options.renderLabelAttrs) {
|
64
|
-
for (const [attr, value] of Object.entries(vxNode.labelAttrs ?? {})) {
|
65
|
-
attrs.push(`${attr}="${truncateAttrValue(value)}"`);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
if (options.renderValueAttrs) {
|
69
|
-
for (const [attr, value] of Object.entries(vxNode.valueAttrs ?? {})) {
|
70
|
-
attrs.push(`${attr}="${truncateAttrValue(value)}"`);
|
71
|
-
}
|
72
|
-
}
|
73
|
-
if (options.renderSrcAttrs) {
|
74
|
-
for (const [attr, value] of Object.entries(vxNode.srcAttrs ?? {})) {
|
75
|
-
attrs.push(`${attr}="${truncateAttrValue(value)}"`);
|
76
|
-
}
|
77
|
-
}
|
78
|
-
if (htmlStyle) {
|
79
|
-
components.push(...attrs);
|
80
|
-
}
|
81
|
-
else {
|
82
|
-
components.push(...attrs.map(attr => `[${attr}]`));
|
83
|
-
}
|
84
|
-
return htmlStyle ? `<${components.join(' ')}>` : components.join('');
|
85
|
-
}
|
86
|
-
//# sourceMappingURL=render.js.map
|
package/out/page/render.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/page/render.ts"],"names":[],"mappings":"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"}
|
package/out/page/snapshot.d.ts
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
import { VxTreeOptions } from './parser.js';
|
2
|
-
import { VxTreeView } from './tree.js';
|
3
|
-
export declare const VX_DOM_SYMBOL: unique symbol;
|
4
|
-
export declare const VX_TREE_SYMBOL: unique symbol;
|
5
|
-
export declare function captureSnapshot(options?: VxTreeOptions): {
|
6
|
-
nodes: import("./parser.js").VxNode[];
|
7
|
-
refRange: [number, number];
|
8
|
-
};
|
9
|
-
export declare function getSnapshot(): VxTreeView;
|
10
|
-
export declare function resolveDomNode(ref: number): Node | null;
|
package/out/page/snapshot.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
import { VxTreeParser } from './parser.js';
|
2
|
-
import { VxTreeView } from './tree.js';
|
3
|
-
export const VX_DOM_SYMBOL = Symbol('vx:dom');
|
4
|
-
export const VX_TREE_SYMBOL = Symbol('vx:tree');
|
5
|
-
export function captureSnapshot(options = {}) {
|
6
|
-
const parser = new VxTreeParser(options);
|
7
|
-
const vxNodes = parser.getNodes();
|
8
|
-
const domMap = parser.getDomMap();
|
9
|
-
const vxTree = new VxTreeView(vxNodes);
|
10
|
-
globalThis[VX_DOM_SYMBOL] = domMap;
|
11
|
-
globalThis[VX_TREE_SYMBOL] = vxTree;
|
12
|
-
return {
|
13
|
-
nodes: vxNodes,
|
14
|
-
refRange: parser.getRefRange(),
|
15
|
-
};
|
16
|
-
}
|
17
|
-
export function getSnapshot() {
|
18
|
-
const vxTree = globalThis[VX_TREE_SYMBOL];
|
19
|
-
if (!vxTree) {
|
20
|
-
throw new Error('[VX] Snapshot not found');
|
21
|
-
}
|
22
|
-
return vxTree;
|
23
|
-
}
|
24
|
-
export function resolveDomNode(ref) {
|
25
|
-
const domMap = globalThis[VX_DOM_SYMBOL];
|
26
|
-
if (!domMap) {
|
27
|
-
return null;
|
28
|
-
}
|
29
|
-
return domMap.get(ref) ?? null;
|
30
|
-
}
|
31
|
-
//# sourceMappingURL=snapshot.js.map
|
package/out/page/snapshot.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/page/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,UAAyB,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,UAAkB,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;IAC3C,UAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;IAC7C,OAAO;QACH,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;KACjC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,MAAM,MAAM,GAAI,UAAkB,CAAC,cAAc,CAAe,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,MAAM,MAAM,GAAI,UAAkB,CAAC,aAAa,CAAsB,CAAC;IACvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
|
package/out/page/traverse.d.ts
DELETED
package/out/page/traverse.js
DELETED
package/out/page/traverse.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/page/traverse.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,CAAC,CAAC,cAAc,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACxB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC"}
|
package/out/page/tree.d.ts
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
import { VxNode } from './parser.js';
|
2
|
-
import { VxRenderOptions } from './render.js';
|
3
|
-
export interface VxHighlightOptions {
|
4
|
-
highlight?: boolean;
|
5
|
-
clearOverlay?: boolean;
|
6
|
-
includeAll?: boolean;
|
7
|
-
filterRefs?: number[];
|
8
|
-
}
|
9
|
-
export declare class VxTreeView {
|
10
|
-
readonly nodes: VxNode[];
|
11
|
-
private refMap;
|
12
|
-
constructor(nodes: VxNode[]);
|
13
|
-
traverse(): IterableIterator<{
|
14
|
-
vxNode: VxNode;
|
15
|
-
depth: number;
|
16
|
-
}>;
|
17
|
-
private buildRefMap;
|
18
|
-
findNode(ref: number): VxNode | null;
|
19
|
-
render(options?: VxRenderOptions): string;
|
20
|
-
highlight(options?: VxHighlightOptions): number[];
|
21
|
-
collectRefs(leafOnly?: boolean, filterRefs?: number[]): number[];
|
22
|
-
}
|
package/out/page/tree.js
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
import { clearOverlay, highlightEl } from './overlay.js';
|
2
|
-
import { renderVxNode } from './render.js';
|
3
|
-
import { resolveDomNode } from './snapshot.js';
|
4
|
-
import { traverseVxNode } from './traverse.js';
|
5
|
-
import { isContainerNode } from './util.js';
|
6
|
-
export class VxTreeView {
|
7
|
-
constructor(nodes) {
|
8
|
-
this.nodes = nodes;
|
9
|
-
this.refMap = new Map();
|
10
|
-
this.buildRefMap(nodes);
|
11
|
-
}
|
12
|
-
*traverse() {
|
13
|
-
for (const vxNode of this.nodes) {
|
14
|
-
yield* traverseVxNode(vxNode, 0);
|
15
|
-
}
|
16
|
-
}
|
17
|
-
buildRefMap(nodes) {
|
18
|
-
for (const node of nodes) {
|
19
|
-
this.refMap.set(node.ref, node);
|
20
|
-
this.buildRefMap(node.children ?? []);
|
21
|
-
}
|
22
|
-
}
|
23
|
-
findNode(ref) {
|
24
|
-
return this.refMap.get(ref) ?? null;
|
25
|
-
}
|
26
|
-
render(options = {}) {
|
27
|
-
return this.nodes.map(node => {
|
28
|
-
return renderVxNode(node, options);
|
29
|
-
}).join('\n');
|
30
|
-
}
|
31
|
-
highlight(options = {}) {
|
32
|
-
if (options.clearOverlay) {
|
33
|
-
clearOverlay();
|
34
|
-
}
|
35
|
-
const leafOnly = !options.includeAll;
|
36
|
-
const refs = this.collectRefs(leafOnly, options.filterRefs);
|
37
|
-
for (const ref of refs) {
|
38
|
-
const el = resolveDomNode(ref);
|
39
|
-
if (el instanceof Element) {
|
40
|
-
highlightEl(el);
|
41
|
-
}
|
42
|
-
}
|
43
|
-
return refs;
|
44
|
-
}
|
45
|
-
collectRefs(leafOnly = true, filterRefs) {
|
46
|
-
const refs = [];
|
47
|
-
for (const { vxNode } of this.traverse()) {
|
48
|
-
if (leafOnly && isContainerNode(vxNode)) {
|
49
|
-
continue;
|
50
|
-
}
|
51
|
-
if (filterRefs && !filterRefs.includes(vxNode.ref)) {
|
52
|
-
continue;
|
53
|
-
}
|
54
|
-
refs.push(vxNode.ref);
|
55
|
-
}
|
56
|
-
return refs;
|
57
|
-
}
|
58
|
-
}
|
59
|
-
//# sourceMappingURL=tree.js.map
|
package/out/page/tree.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/page/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAmB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAS5C,MAAM,OAAO,UAAU;IAInB,YAAqB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;QAF5B,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAGvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,CAAC,QAAQ;QACL,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,KAAe;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,UAA2B,EAAE;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,UAA8B,EAAE;QACtC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,YAAY,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,YAAY,OAAO,EAAE,CAAC;gBACxB,WAAW,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAQ,GAAG,IAAI,EAAE,UAAqB;QAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,IAAI,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,SAAS;YACb,CAAC;YACD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,SAAS;YACb,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ"}
|
package/out/page/util.d.ts
DELETED
package/out/page/util.js
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
export function isContainerNode(vxNode) {
|
2
|
-
const children = vxNode.children ?? [];
|
3
|
-
const hasTextChildren = children.some(child => !child.tagName);
|
4
|
-
return children.length > 0 && !hasTextChildren;
|
5
|
-
}
|
6
|
-
export function isObjectEmpty(obj) {
|
7
|
-
return !Object.values(obj).some(value => !!value);
|
8
|
-
}
|
9
|
-
//# sourceMappingURL=util.js.map
|
package/out/page/util.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/page/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAwB;IAClD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
|