@productivemark/snipcss 1.0.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/.claude-plugin/marketplace.json +17 -0
- package/.claude-plugin/plugin.json +10 -0
- package/.mcp.json +8 -0
- package/dist/auth/config-manager.d.ts +13 -0
- package/dist/auth/config-manager.d.ts.map +1 -0
- package/dist/auth/config-manager.js +48 -0
- package/dist/auth/config-manager.js.map +1 -0
- package/dist/auth/usage-gate.d.ts +13 -0
- package/dist/auth/usage-gate.d.ts.map +1 -0
- package/dist/auth/usage-gate.js +69 -0
- package/dist/auth/usage-gate.js.map +1 -0
- package/dist/browser/browser-manager.d.ts +15 -0
- package/dist/browser/browser-manager.d.ts.map +1 -0
- package/dist/browser/browser-manager.js +61 -0
- package/dist/browser/browser-manager.js.map +1 -0
- package/dist/browser/viewport-manager.d.ts +8 -0
- package/dist/browser/viewport-manager.d.ts.map +1 -0
- package/dist/browser/viewport-manager.js +50 -0
- package/dist/browser/viewport-manager.js.map +1 -0
- package/dist/extraction/css-variable-resolver.d.ts +27 -0
- package/dist/extraction/css-variable-resolver.d.ts.map +1 -0
- package/dist/extraction/css-variable-resolver.js +105 -0
- package/dist/extraction/css-variable-resolver.js.map +1 -0
- package/dist/extraction/dom-labeler.d.ts +26 -0
- package/dist/extraction/dom-labeler.d.ts.map +1 -0
- package/dist/extraction/dom-labeler.js +124 -0
- package/dist/extraction/dom-labeler.js.map +1 -0
- package/dist/extraction/element-discovery.d.ts +59 -0
- package/dist/extraction/element-discovery.d.ts.map +1 -0
- package/dist/extraction/element-discovery.js +525 -0
- package/dist/extraction/element-discovery.js.map +1 -0
- package/dist/extraction/extraction-pipeline.d.ts +26 -0
- package/dist/extraction/extraction-pipeline.d.ts.map +1 -0
- package/dist/extraction/extraction-pipeline.js +200 -0
- package/dist/extraction/extraction-pipeline.js.map +1 -0
- package/dist/extraction/font-collector.d.ts +26 -0
- package/dist/extraction/font-collector.d.ts.map +1 -0
- package/dist/extraction/font-collector.js +160 -0
- package/dist/extraction/font-collector.js.map +1 -0
- package/dist/extraction/html-cleaner.d.ts +16 -0
- package/dist/extraction/html-cleaner.d.ts.map +1 -0
- package/dist/extraction/html-cleaner.js +149 -0
- package/dist/extraction/html-cleaner.js.map +1 -0
- package/dist/extraction/keyframe-collector.d.ts +16 -0
- package/dist/extraction/keyframe-collector.d.ts.map +1 -0
- package/dist/extraction/keyframe-collector.js +62 -0
- package/dist/extraction/keyframe-collector.js.map +1 -0
- package/dist/extraction/pseudo-state-handler.d.ts +36 -0
- package/dist/extraction/pseudo-state-handler.d.ts.map +1 -0
- package/dist/extraction/pseudo-state-handler.js +210 -0
- package/dist/extraction/pseudo-state-handler.js.map +1 -0
- package/dist/extraction/result-builder.d.ts +25 -0
- package/dist/extraction/result-builder.d.ts.map +1 -0
- package/dist/extraction/result-builder.js +136 -0
- package/dist/extraction/result-builder.js.map +1 -0
- package/dist/extraction/rule-deduplicator.d.ts +39 -0
- package/dist/extraction/rule-deduplicator.d.ts.map +1 -0
- package/dist/extraction/rule-deduplicator.js +107 -0
- package/dist/extraction/rule-deduplicator.js.map +1 -0
- package/dist/extraction/selector-fixer.d.ts +25 -0
- package/dist/extraction/selector-fixer.d.ts.map +1 -0
- package/dist/extraction/selector-fixer.js +111 -0
- package/dist/extraction/selector-fixer.js.map +1 -0
- package/dist/extraction/specificity.d.ts +17 -0
- package/dist/extraction/specificity.d.ts.map +1 -0
- package/dist/extraction/specificity.js +88 -0
- package/dist/extraction/specificity.js.map +1 -0
- package/dist/extraction/style-matcher.d.ts +33 -0
- package/dist/extraction/style-matcher.d.ts.map +1 -0
- package/dist/extraction/style-matcher.js +199 -0
- package/dist/extraction/style-matcher.js.map +1 -0
- package/dist/extraction/stylesheet-collector.d.ts +33 -0
- package/dist/extraction/stylesheet-collector.d.ts.map +1 -0
- package/dist/extraction/stylesheet-collector.js +71 -0
- package/dist/extraction/stylesheet-collector.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +235 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +349 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tailwind/css-to-tailwind.d.ts +17 -0
- package/dist/tailwind/css-to-tailwind.d.ts.map +1 -0
- package/dist/tailwind/css-to-tailwind.js +1583 -0
- package/dist/tailwind/css-to-tailwind.js.map +1 -0
- package/dist/tailwind/shorthand-expander.d.ts +27 -0
- package/dist/tailwind/shorthand-expander.d.ts.map +1 -0
- package/dist/tailwind/shorthand-expander.js +812 -0
- package/dist/tailwind/shorthand-expander.js.map +1 -0
- package/dist/tailwind/tailwind-converter.d.ts +35 -0
- package/dist/tailwind/tailwind-converter.d.ts.map +1 -0
- package/dist/tailwind/tailwind-converter.js +1223 -0
- package/dist/tailwind/tailwind-converter.js.map +1 -0
- package/dist/tailwind/tailwind-helpers.d.ts +95 -0
- package/dist/tailwind/tailwind-helpers.d.ts.map +1 -0
- package/dist/tailwind/tailwind-helpers.js +593 -0
- package/dist/tailwind/tailwind-helpers.js.map +1 -0
- package/dist/tailwind/tailwind-reducer.d.ts +36 -0
- package/dist/tailwind/tailwind-reducer.d.ts.map +1 -0
- package/dist/tailwind/tailwind-reducer.js +189 -0
- package/dist/tailwind/tailwind-reducer.js.map +1 -0
- package/dist/types/index.d.ts +239 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +94 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/helpers.d.ts +34 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +120 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/parsel.d.ts +41 -0
- package/dist/utils/parsel.d.ts.map +1 -0
- package/dist/utils/parsel.js +314 -0
- package/dist/utils/parsel.js.map +1 -0
- package/package.json +41 -0
- package/skills/workflow/SKILL.md +95 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { randomLetters } from '../utils/helpers.js';
|
|
2
|
+
/**
|
|
3
|
+
* Labels DOM elements with unique snipcss marker classes.
|
|
4
|
+
* Replaces the content script's snipcssLabelSubelements function.
|
|
5
|
+
* Runs entirely via page.evaluate() - no content script needed.
|
|
6
|
+
*/
|
|
7
|
+
export class DomLabeler {
|
|
8
|
+
/**
|
|
9
|
+
* Label the target element and all its descendants with unique snipcss classes.
|
|
10
|
+
* Returns the list of classnames and the HTML.
|
|
11
|
+
*
|
|
12
|
+
* Port of snipcssLabelSubelements from sniptools.js
|
|
13
|
+
*/
|
|
14
|
+
async labelElements(page, selector) {
|
|
15
|
+
const snipId = randomLetters(4);
|
|
16
|
+
const result = await page.evaluate(({ selector, snipId }) => {
|
|
17
|
+
const root = document.querySelector(selector);
|
|
18
|
+
if (!root) {
|
|
19
|
+
return {
|
|
20
|
+
error: `Element not found: ${selector}`,
|
|
21
|
+
allClassnamesArr: [],
|
|
22
|
+
allElementOuterHtml: '',
|
|
23
|
+
allLabelOuterHtml: '',
|
|
24
|
+
rootSelector: selector,
|
|
25
|
+
rootClassname: '',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const allClassnamesArr = [];
|
|
29
|
+
let idCounter = 0;
|
|
30
|
+
function labelElement(elem, parentId, level) {
|
|
31
|
+
if (elem.nodeType !== 1)
|
|
32
|
+
return; // Element nodes only
|
|
33
|
+
const tagName = elem.tagName.toLowerCase();
|
|
34
|
+
// Skip script/style/noscript
|
|
35
|
+
if (['script', 'style', 'noscript', 'link', 'meta'].includes(tagName))
|
|
36
|
+
return;
|
|
37
|
+
const currId = idCounter++;
|
|
38
|
+
const className = `snipcss${snipId}-${level}-${parentId}-${currId}`;
|
|
39
|
+
elem.classList.add(className);
|
|
40
|
+
allClassnamesArr.push(className);
|
|
41
|
+
// Label children recursively
|
|
42
|
+
const children = elem.children;
|
|
43
|
+
for (let i = 0; i < children.length; i++) {
|
|
44
|
+
labelElement(children[i], currId, level + 1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Label root and all descendants
|
|
48
|
+
labelElement(root, 0, 0);
|
|
49
|
+
const rootClassname = allClassnamesArr[0] || '';
|
|
50
|
+
// Capture HTML after labeling
|
|
51
|
+
const allElementOuterHtml = root.outerHTML;
|
|
52
|
+
// Also capture a version with just the labels for Tailwind
|
|
53
|
+
const allLabelOuterHtml = root.outerHTML;
|
|
54
|
+
return {
|
|
55
|
+
allClassnamesArr,
|
|
56
|
+
allElementOuterHtml,
|
|
57
|
+
allLabelOuterHtml,
|
|
58
|
+
rootSelector: selector,
|
|
59
|
+
rootClassname,
|
|
60
|
+
};
|
|
61
|
+
}, { selector, snipId });
|
|
62
|
+
if ('error' in result && result.error) {
|
|
63
|
+
throw new Error(result.error);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Remove all snipcss marker classes from the page DOM.
|
|
69
|
+
* Called after extraction is complete.
|
|
70
|
+
*/
|
|
71
|
+
async removeLabels(page) {
|
|
72
|
+
await page.evaluate(() => {
|
|
73
|
+
const elements = document.querySelectorAll('[class*="snipcss"]');
|
|
74
|
+
elements.forEach((elem) => {
|
|
75
|
+
const classes = [...elem.classList];
|
|
76
|
+
classes.forEach((cls) => {
|
|
77
|
+
if (cls.startsWith('snipcss')) {
|
|
78
|
+
elem.classList.remove(cls);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Clean up empty class attributes
|
|
82
|
+
if (elem.classList.length === 0) {
|
|
83
|
+
elem.removeAttribute('class');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the outerHTML of an element after labels have been removed.
|
|
90
|
+
*/
|
|
91
|
+
async getCleanHtml(page, selector) {
|
|
92
|
+
return await page.evaluate((sel) => {
|
|
93
|
+
const elem = document.querySelector(sel);
|
|
94
|
+
if (!elem)
|
|
95
|
+
return '';
|
|
96
|
+
// Clone and remove snipcss classes
|
|
97
|
+
const clone = elem.cloneNode(true);
|
|
98
|
+
const labeled = clone.querySelectorAll('[class*="snipcss"]');
|
|
99
|
+
labeled.forEach((el) => {
|
|
100
|
+
const classes = [...el.classList];
|
|
101
|
+
classes.forEach((cls) => {
|
|
102
|
+
if (cls.startsWith('snipcss')) {
|
|
103
|
+
el.classList.remove(cls);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
if (el.classList.length === 0) {
|
|
107
|
+
el.removeAttribute('class');
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
// Also clean the root
|
|
111
|
+
const rootClasses = [...clone.classList];
|
|
112
|
+
rootClasses.forEach((cls) => {
|
|
113
|
+
if (cls.startsWith('snipcss')) {
|
|
114
|
+
clone.classList.remove(cls);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
if (clone.classList.length === 0) {
|
|
118
|
+
clone.removeAttribute('class');
|
|
119
|
+
}
|
|
120
|
+
return clone.outerHTML;
|
|
121
|
+
}, selector);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=dom-labeler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-labeler.js","sourceRoot":"","sources":["../../src/extraction/dom-labeler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Page } from 'playwright';
|
|
2
|
+
/**
|
|
3
|
+
* Discovered element with semantic information for agent-driven extraction.
|
|
4
|
+
*/
|
|
5
|
+
export interface DiscoveredElement {
|
|
6
|
+
/** Numeric label (1, 2, 3...) for referencing in screenshots */
|
|
7
|
+
label: number;
|
|
8
|
+
/** Unique CSS selector guaranteed to match exactly one element */
|
|
9
|
+
selector: string;
|
|
10
|
+
/** HTML tag name */
|
|
11
|
+
tag: string;
|
|
12
|
+
/** Semantic role inferred from tag, ARIA role, class names, and position */
|
|
13
|
+
semanticType: string;
|
|
14
|
+
/** Parent chain context (e.g., "inside main > .content") */
|
|
15
|
+
parentContext: string;
|
|
16
|
+
/** Bounding box (absolute, accounting for scroll) */
|
|
17
|
+
rect: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
};
|
|
23
|
+
/** Background color (computed) */
|
|
24
|
+
backgroundColor: string;
|
|
25
|
+
/** Number of child elements */
|
|
26
|
+
childCount: number;
|
|
27
|
+
/** Text content preview (first 80 chars) */
|
|
28
|
+
textPreview: string;
|
|
29
|
+
/** Element's class list */
|
|
30
|
+
classes: string;
|
|
31
|
+
/** Element's id */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Nesting depth from body */
|
|
34
|
+
depth: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Discover page segments using the SnipCSS page segmenter approach:
|
|
38
|
+
* 1. Sample visible elements via grid-point probing (elementFromPoint)
|
|
39
|
+
* 2. Scroll the page to catch all content including lazy-loaded
|
|
40
|
+
* 3. Bottom-up merge: consolidate small elements into parent containers
|
|
41
|
+
* 4. Smart filter: split oversized parents, remove redundant wrappers
|
|
42
|
+
* 5. Generate unique selectors and enrich with semantic metadata
|
|
43
|
+
*
|
|
44
|
+
* Ported from snip-extension/js/page_segmenter.js
|
|
45
|
+
*/
|
|
46
|
+
export declare function discoverElements(page: Page): Promise<DiscoveredElement[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Inject numbered badge overlay into the page at each element's position.
|
|
49
|
+
*/
|
|
50
|
+
export declare function injectLabelOverlay(page: Page, elements: DiscoveredElement[]): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Remove the label overlay from the page.
|
|
53
|
+
*/
|
|
54
|
+
export declare function removeLabelOverlay(page: Page): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Format discovered elements as a human-readable legend.
|
|
57
|
+
*/
|
|
58
|
+
export declare function formatElementLegend(elements: DiscoveredElement[]): string;
|
|
59
|
+
//# sourceMappingURL=element-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-discovery.d.ts","sourceRoot":"","sources":["../../src/extraction/element-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAWD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA6W/E;AA2DD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAuDf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CASlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAUzE"}
|