@veltdev/sdk 4.5.6-beta.15 → 4.5.6-beta.16
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.
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content hash for secure, privacy-preserving element validation.
|
|
3
|
+
*/
|
|
4
|
+
export interface ContentHash {
|
|
5
|
+
/** MD5 hash value (base36 encoded, ~12 characters) */
|
|
6
|
+
value: string;
|
|
7
|
+
/** Hashing algorithm (always 'md5') */
|
|
8
|
+
algorithm: 'md5';
|
|
9
|
+
/** Source of hash (always 'textContent') */
|
|
10
|
+
source: 'textContent';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Robust anchor record for reliable DOM element re-location.
|
|
14
|
+
*
|
|
15
|
+
* Survives:
|
|
16
|
+
* - Page reloads
|
|
17
|
+
* - Framework re-renders (React, Vue, Angular)
|
|
18
|
+
* - Dynamic ID changes
|
|
19
|
+
* - Minor DOM restructuring
|
|
20
|
+
*
|
|
21
|
+
* Does not survive:
|
|
22
|
+
* - Major redesigns
|
|
23
|
+
* - Content reordering (sort, filter)
|
|
24
|
+
* - Element removal
|
|
25
|
+
*
|
|
26
|
+
* **Resolution Strategy (priority order):**
|
|
27
|
+
* 1. id (90) - Stable, non-dynamic ID
|
|
28
|
+
* 2. css (80/60) - Attribute selector
|
|
29
|
+
* 3. robustXPath (50) - Attribute-based path
|
|
30
|
+
* 4. containerHints (40) - Scoped search
|
|
31
|
+
* 5. xPath variants (32-28) - Structural fallback
|
|
32
|
+
* 6. contentHash (15) - Hash-based scan
|
|
33
|
+
*
|
|
34
|
+
* **Validation boosts:** tagName (+10), contentHash (+30)
|
|
35
|
+
*
|
|
36
|
+
* **Security:** No plaintext storage, MD5 hash only.
|
|
37
|
+
*/
|
|
38
|
+
export interface AnchorRecord {
|
|
39
|
+
/** Schema version (current: "1.0") */
|
|
40
|
+
version: '1.0';
|
|
41
|
+
/**
|
|
42
|
+
* Stable element ID (non-dynamic only).
|
|
43
|
+
*
|
|
44
|
+
* Excluded patterns:
|
|
45
|
+
* - yui_* (YUI framework)
|
|
46
|
+
*/
|
|
47
|
+
id?: string;
|
|
48
|
+
/** Tag name (uppercase, e.g., 'DIV', 'BUTTON') */
|
|
49
|
+
tagName: string;
|
|
50
|
+
/**
|
|
51
|
+
* CSS selector from stable attributes.
|
|
52
|
+
*
|
|
53
|
+
* Example: `[data-testid='submit-btn'][role='button']`
|
|
54
|
+
*/
|
|
55
|
+
elementSelector?: string;
|
|
56
|
+
/**
|
|
57
|
+
* XPath variants (in order of stability):
|
|
58
|
+
*
|
|
59
|
+
* 1. robustXPath - Attribute-based (MOST STABLE)
|
|
60
|
+
* - Prioritizes: data-* > role > stable ID > aria-* > position
|
|
61
|
+
* - Example: `//div[@role='main']/.../li[5]/span`
|
|
62
|
+
* - Ignores dynamic IDs
|
|
63
|
+
* - Stops at landmarks (main, nav, etc.)
|
|
64
|
+
*
|
|
65
|
+
* 2. xPath - Basic XPath (uses IDs when available)
|
|
66
|
+
* 3. cfXPath - Positional with class hints
|
|
67
|
+
* 4. fXPath - Pure positional (most fragile)
|
|
68
|
+
*/
|
|
69
|
+
robustXPath?: string;
|
|
70
|
+
xPath?: string;
|
|
71
|
+
fXPath?: string;
|
|
72
|
+
cfXPath?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Content hash for secure validation.
|
|
75
|
+
*/
|
|
76
|
+
contentHash?: ContentHash;
|
|
77
|
+
/** Creation timestamp (milliseconds since epoch) */
|
|
78
|
+
createdAt?: number;
|
|
79
|
+
/** Parent element anchor record */
|
|
80
|
+
parent?: AnchorRecord;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Result of anchor resolution.
|
|
84
|
+
*/
|
|
85
|
+
export interface AnchorResolution {
|
|
86
|
+
/** Resolved element (null if not found) */
|
|
87
|
+
element: Element | null;
|
|
88
|
+
/**
|
|
89
|
+
* Resolution method used.
|
|
90
|
+
* Values: 'id', 'css', 'robustXPath', 'xPath', 'cfXPath', 'fXPath', 'contentHash', 'ancestor+tag'
|
|
91
|
+
*/
|
|
92
|
+
matchedBy?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Confidence score (0-120+).
|
|
95
|
+
*
|
|
96
|
+
* - 90+: High (unique ID)
|
|
97
|
+
* - 80-89: Good (unique CSS, stable attributes)
|
|
98
|
+
* - 40-79: Moderate (scoped search, multiple candidates)
|
|
99
|
+
* - 15-39: Low (XPath, hash-based fallback)
|
|
100
|
+
*/
|
|
101
|
+
score?: number;
|
|
102
|
+
/**
|
|
103
|
+
* Score breakdown.
|
|
104
|
+
*/
|
|
105
|
+
scoreBreakdown?: {
|
|
106
|
+
method: string;
|
|
107
|
+
score: number;
|
|
108
|
+
}[];
|
|
109
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AnchorRecord } from './anchor-record.data.model';
|
|
1
2
|
export declare class TargetElement {
|
|
2
3
|
/**
|
|
3
4
|
* Xpath of target element
|
|
@@ -19,4 +20,8 @@ export declare class TargetElement {
|
|
|
19
20
|
* Relative left position of cursor on target element
|
|
20
21
|
*/
|
|
21
22
|
leftPercentage: number;
|
|
23
|
+
/**
|
|
24
|
+
* Robust anchor descriptor for the element
|
|
25
|
+
*/
|
|
26
|
+
anchor?: AnchorRecord | null;
|
|
22
27
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AnchorRecord } from "./anchor-record.data.model";
|
|
1
2
|
export declare class TargetTextRange {
|
|
2
3
|
/**
|
|
3
4
|
* Xpath of common Ancestor Container
|
|
@@ -11,6 +12,10 @@ export declare class TargetTextRange {
|
|
|
11
12
|
* Full xpath of common Ancestor Container with class names
|
|
12
13
|
*/
|
|
13
14
|
commonAncestorContainerCFXpath?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Anchor of common Ancestor Container
|
|
17
|
+
*/
|
|
18
|
+
commonAncestorContainerAnchor?: AnchorRecord;
|
|
14
19
|
/**
|
|
15
20
|
* Selected text
|
|
16
21
|
*/
|
package/models.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './app/utils/enums';
|
|
2
|
+
export * from './app/models/data/anchor-record.data.model';
|
|
2
3
|
export * from './app/models/data/attachment.model';
|
|
3
4
|
export * from './app/models/data/area-annotation.data.model';
|
|
4
5
|
export * from './app/models/data/arrow-annotation.data.model';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veltdev/sdk",
|
|
3
|
-
"version": "4.5.6-beta.
|
|
3
|
+
"version": "4.5.6-beta.16",
|
|
4
4
|
"description": "Velt is an SDK to add collaborative features to your product within minutes. Example: Comments like Figma, Frame.io, Google docs or sheets, Recording like Loom, Huddles like Slack and much more.",
|
|
5
5
|
"homepage": "https://velt.dev",
|
|
6
6
|
"keywords": [
|