ax-grep 0.0.0 → 0.1.1
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/LICENSE +21 -0
- package/README.md +106 -1
- package/dist/browser.d.ts +11 -0
- package/dist/browser.js +12 -0
- package/dist/browser.js.map +1 -0
- package/dist/chunk-HPZ32BKV.js +612 -0
- package/dist/chunk-HPZ32BKV.js.map +1 -0
- package/dist/chunk-ZXTURCRT.js +925 -0
- package/dist/chunk-ZXTURCRT.js.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.js +22364 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +436 -0
- package/dist/index.js.map +1 -0
- package/dist/static.d.ts +6 -0
- package/dist/static.js +8 -0
- package/dist/static.js.map +1 -0
- package/dist/types-gwHWhYmw.d.ts +3660 -0
- package/docs/README.md +19 -0
- package/docs/agent-handoff.md +95 -0
- package/docs/agent-readiness.md +38 -0
- package/docs/assets/ax-grep-benchmark.png +0 -0
- package/docs/assets/ax-grep-og.png +0 -0
- package/docs/assets/ax-grep-search.png +0 -0
- package/docs/benchmarks.md +123 -0
- package/docs/cli-agent.md +194 -0
- package/docs/comparison-baseline.md +625 -0
- package/docs/features.md +28 -0
- package/docs/library-api.md +211 -0
- package/docs/progress.md +1306 -0
- package/package.json +92 -6
- package/skills/ax-grep-cli/SKILL.md +89 -0
- package/skills.sh +24 -0
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/static.ts"],"sourcesContent":["import { DomUtils, parseDocument } from \"htmlparser2\";\nimport { Element as DomElement } from \"domhandler\";\nimport type { AnyNode, Element, Text } from \"domhandler\";\nimport type { SemanticNode, SemanticNodeState, SemanticTreeOptions } from \"./types\";\n\ntype DescendantTextOptions = {\n excludeIds?: Set<string>;\n};\n\ntype StaticContext = {\n options: Required<Pick<\n SemanticTreeOptions,\n \"excludeLikelyAds\" | \"excludeLikelyBoilerplate\" | \"includeAttributes\" | \"includeHidden\" | \"includeSelectOptions\" | \"includeTextNodes\" | \"maxChildrenPerNode\" | \"maxLinkFarmChildren\" | \"maxRepeatedSubtreeInstances\" | \"maxTextLength\" | \"mode\" | \"pruneCollapsedSubtrees\" | \"pruneLikelyClosedOverlays\" | \"summarizeLargeSubtrees\" | \"summarizeLikelyLinkFarms\" | \"summarizeRepeatedSubtrees\"\n >>;\n nextId: number;\n ids: Map<string, Element>;\n referencedIds: Set<string>;\n collapsedControlledIds: Set<string>;\n labelsByFor: Map<string, Element>;\n slotAssignments: Map<string, AnyNode[]> | undefined;\n};\n\nconst defaultOptions = {\n includeAttributes: true,\n excludeLikelyAds: false,\n includeHidden: false,\n includeSelectOptions: true,\n includeTextNodes: false,\n maxTextLength: 240,\n mode: \"compact\",\n excludeLikelyBoilerplate: false,\n maxChildrenPerNode: 80,\n maxLinkFarmChildren: 24,\n maxRepeatedSubtreeInstances: 3,\n pruneCollapsedSubtrees: true,\n pruneLikelyClosedOverlays: true,\n summarizeLargeSubtrees: true,\n summarizeLikelyLinkFarms: true,\n summarizeRepeatedSubtrees: true,\n} satisfies StaticContext[\"options\"];\n\nconst interactiveRoles = new Set([\n \"button\",\n \"checkbox\",\n \"combobox\",\n \"link\",\n \"listbox\",\n \"menuitem\",\n \"menuitemcheckbox\",\n \"menuitemradio\",\n \"option\",\n \"radio\",\n \"searchbox\",\n \"slider\",\n \"spinbutton\",\n \"switch\",\n \"tab\",\n \"textbox\",\n \"treeitem\",\n]);\n\nconst landmarkTags: Record<string, string> = {\n article: \"article\",\n aside: \"complementary\",\n footer: \"contentinfo\",\n header: \"banner\",\n main: \"main\",\n nav: \"navigation\",\n section: \"region\",\n};\n\nconst rolesNamedFromContents = new Set([\n \"button\",\n \"cell\",\n \"checkbox\",\n \"columnheader\",\n \"heading\",\n \"link\",\n \"listitem\",\n \"menuitem\",\n \"menuitemcheckbox\",\n \"menuitemradio\",\n \"option\",\n \"radio\",\n \"rowheader\",\n \"switch\",\n \"tab\",\n \"treeitem\",\n]);\n\nconst hiddenStylePattern = /(?:^|;)\\s*(display\\s*:\\s*none|visibility\\s*:\\s*hidden|content-visibility\\s*:\\s*hidden|opacity\\s*:\\s*0(?:\\.0+)?)(?:;|$)/i;\nconst nonSemanticTags = new Set([\"head\", \"link\", \"meta\", \"script\", \"style\", \"template\"]);\n\nexport type StaticSemanticTreeOptions = Pick<\n SemanticTreeOptions,\n \"excludeLikelyAds\" | \"excludeLikelyBoilerplate\" | \"includeAttributes\" | \"includeHidden\" | \"includeSelectOptions\" | \"includeTextNodes\" | \"maxChildrenPerNode\" | \"maxLinkFarmChildren\" | \"maxRepeatedSubtreeInstances\" | \"maxTextLength\" | \"mode\" | \"pruneCollapsedSubtrees\" | \"pruneLikelyClosedOverlays\" | \"summarizeLargeSubtrees\" | \"summarizeLikelyLinkFarms\" | \"summarizeRepeatedSubtrees\"\n>;\n\nexport function extractStaticSemanticTree(html: string, options: StaticSemanticTreeOptions = {}): SemanticNode {\n const document = parseDocument(html, {\n lowerCaseAttributeNames: true,\n lowerCaseTags: true,\n recognizeSelfClosing: true,\n });\n const context: StaticContext = {\n options: resolveStaticOptions(document.children, html, options),\n nextId: 1,\n ids: new Map(),\n referencedIds: new Set(),\n collapsedControlledIds: new Set(),\n labelsByFor: new Map(),\n slotAssignments: undefined,\n };\n indexDocument(document.children, context);\n const root = findElement(document.children, \"body\") ?? findElement(document.children, \"html\") ?? fragmentRoot(document.children);\n return walkElement(root, context) ?? unavailableNode(context, \"document\", \"HTML has no inspectable root\");\n}\n\nexport { extractStaticSemanticTree as extract };\n\nfunction resolveStaticOptions(nodes: AnyNode[], html: string, options: StaticSemanticTreeOptions): StaticContext[\"options\"] {\n const inferred = inferStaticSourceProfile(nodes, html);\n const resolved = { ...defaultOptions };\n\n if (inferred.wikiLike) {\n resolved.maxChildrenPerNode = 400;\n resolved.maxLinkFarmChildren = 80;\n }\n if (inferred.forumLike) {\n resolved.maxLinkFarmChildren = 19;\n }\n\n return { ...resolved, ...options };\n}\n\nfunction inferStaticSourceProfile(nodes: AnyNode[], html: string): { wikiLike: boolean; forumLike: boolean } {\n const root = findElement(nodes, \"html\") ?? fragmentRoot(nodes);\n const body = findElement(nodes, \"body\");\n const profileText = [\n attr(root, \"class\"),\n attr(root, \"id\"),\n body ? attr(body, \"class\") : \"\",\n body ? attr(body, \"id\") : \"\",\n firstMetaContent(root, \"generator\"),\n firstMetaContent(root, \"application-name\"),\n firstMetaContent(root, \"twitter:site\"),\n ].filter(Boolean).join(\" \").toLowerCase();\n\n return {\n wikiLike: /\\b(mediawiki|mw-parser-output|wikipedia|wikimedia)\\b/.test(profileText)\n || /\\b(?:id|class)=[\"'][^\"']*\\bmw-parser-output\\b/i.test(html),\n forumLike: /\\b(5ch|2ch|dcinside|ruliweb|clien|bbs|board|forum|gallery|gall|thread|subback)\\b/.test(profileText)\n || /\\b(?:id|class)=[\"'][^\"']*\\b(?:gall_list|threadlist|thread-list|board-list|article-list|subback|bbs|forum)\\b/i.test(html)\n || /(?:갤러리|게시판|댓글|개념글|스레드|レス|話題度)/.test(html),\n };\n}\n\nfunction firstMetaContent(root: Element | undefined, name: string): string {\n /* v8 ignore next -- internal callers pass a fragment fallback when html is absent. */\n if (!root) return \"\";\n const stack = [...root.children];\n while (stack.length > 0) {\n const node = stack.shift();\n /* v8 ignore next -- guarded for noUncheckedIndexedAccess; loop condition prevents this. */\n if (!node) continue;\n if (!isElement(node)) continue;\n if (node.name === \"meta\" && (attr(node, \"name\") === name || attr(node, \"property\") === name)) {\n return attr(node, \"content\") ?? \"\";\n }\n stack.unshift(...node.children);\n }\n return \"\";\n}\n\nfunction indexDocument(nodes: AnyNode[], context: StaticContext): void {\n for (const node of nodes) {\n if (!isElement(node)) continue;\n const id = attr(node, \"id\");\n if (id) context.ids.set(id, node);\n for (const referencedId of referencedIds(node)) {\n context.referencedIds.add(referencedId);\n }\n if (attr(node, \"aria-expanded\") === \"false\") {\n for (const controlledId of (attr(node, \"aria-controls\") ?? \"\").split(/\\s+/)) {\n if (controlledId) context.collapsedControlledIds.add(controlledId);\n }\n }\n if (node.name === \"label\") {\n const target = attr(node, \"for\");\n if (target) context.labelsByFor.set(target, node);\n }\n indexDocument(node.children, context);\n }\n}\n\nfunction referencedIds(element: Element): string[] {\n return [\n attr(element, \"aria-labelledby\"),\n attr(element, \"aria-describedby\"),\n attr(element, \"aria-details\"),\n attr(element, \"aria-errormessage\"),\n attr(element, \"aria-controls\"),\n attr(element, \"aria-owns\"),\n attr(element, \"aria-flowto\"),\n attr(element, \"aria-activedescendant\"),\n ]\n .filter((value): value is string => Boolean(value))\n .flatMap((value) => value.split(/\\s+/).map((item) => item.trim()).filter(Boolean));\n}\n\nfunction descriptionReferenceIds(element: Element): Set<string> {\n return new Set([\n attr(element, \"aria-describedby\"),\n attr(element, \"aria-details\"),\n attr(element, \"aria-errormessage\"),\n ]\n .filter((value): value is string => Boolean(value))\n .flatMap((value) => value.split(/\\s+/).map((item) => item.trim()).filter(Boolean)));\n}\n\nfunction walkElement(element: Element | undefined, context: StaticContext): SemanticNode | null {\n /* v8 ignore next -- public extraction always supplies body/html or a fragment root. */\n if (!element) return null;\n if (shouldSkipElement(element, context)) return null;\n if (!context.options.includeHidden && isHidden(element)) return null;\n if (context.options.excludeLikelyAds && isLikelyAd(element)) return null;\n if (context.options.excludeLikelyBoilerplate && isLikelyBoilerplateTable(element)) return flattenBoilerplateTable(element, context);\n if (context.options.excludeLikelyBoilerplate && isLikelyBoilerplate(element)) return null;\n if (!context.options.includeHidden && isCollapsedControlledElement(element, context)) return null;\n if (!context.options.includeHidden && isLikelyClosedOverlay(element, context)) return null;\n\n const role = getRole(element);\n const state = getState(element);\n const focusable = isFocusable(element, role);\n const interactive = isInteractive(element, role, focusable);\n const name = role ? computeName(element, role, context) : \"\";\n const tag = element.name;\n const children = shouldSkipChildrenForCollapsedElement(element, context) ? [] : collectChildren(element, context);\n if (tag === \"iframe\" && children.length === 0 && attr(element, \"src\") && !attr(element, \"srcdoc\")) {\n children.push(unavailableNode(context, \"iframe\", \"iframe content unavailable in static HTML\"));\n }\n\n if (context.options.mode === \"interactive\" && !interactive) {\n return children.length > 0 ? containerNode(context, tag, children) : null;\n }\n if (shouldPruneCustomElementWrapper(element, role, name, interactive, children, context)) {\n return children.length === 1 ? children[0] ?? null : containerNode(context, \"fragment\", children);\n }\n if (shouldPruneListItemWrapper(role, children, context)) {\n return children.length === 1 ? children[0] ?? null : containerNode(context, tag, children);\n }\n if (shouldPrune(element, role, name, interactive, children, context)) {\n if (children.length === 0) return null;\n return children.length === 1 ? children[0] ?? null : containerNode(context, tag, children);\n }\n\n const node: SemanticNode = {\n id: nextId(context),\n tag,\n role,\n name,\n interactive,\n focusable,\n selector: getSelector(element),\n xpath: getXPath(element),\n children,\n };\n const description = computeDescription(element, context);\n if (description) node.description = description;\n const text = directText(element, context.options.maxTextLength);\n if (text) node.text = text;\n const value = getValue(element);\n if (value) node.value = value;\n if (Object.keys(state).length > 0) node.state = state;\n if (context.options.includeAttributes) node.attributes = { ...element.attribs };\n return node;\n}\n\nfunction collectChildren(element: Element, context: StaticContext): SemanticNode[] {\n const children: SemanticNode[] = [];\n const repeatedSignatures = new Map<string, number>();\n let omitted = 0;\n const shadowTemplate = element.children.find((child): child is Element => isElement(child) && isDeclarativeShadowTemplate(child));\n if (shadowTemplate) {\n const previousAssignments = context.slotAssignments;\n context.slotAssignments = collectSlotAssignments(element);\n for (const child of shadowTemplate.children) {\n if (!isElement(child)) continue;\n const semanticChild = walkElement(child, context);\n omitted += appendSemanticChild(element, semanticChild, children, repeatedSignatures, context);\n }\n context.slotAssignments = previousAssignments;\n const linkFarmSummary = summarizeLikelyLinkFarmChildren(element, children, context);\n if (linkFarmSummary.omitted > 0) {\n children.splice(0, children.length, ...linkFarmSummary.children);\n omitted += linkFarmSummary.omitted;\n }\n if (omitted > 0) children.push(omittedNode(context, omitted));\n return children;\n }\n\n if (element.name === \"slot\" && context.slotAssignments) {\n const slotName = attr(element, \"name\") ?? \"\";\n const assignedChildren = context.slotAssignments.get(slotName) ?? [];\n const projectedChildren = assignedChildren.length > 0 ? assignedChildren : element.children.filter(isElement);\n for (const child of projectedChildren) {\n if (isElement(child)) {\n const semanticChild = walkElement(child, context);\n omitted += appendSemanticChild(element, semanticChild, children, repeatedSignatures, context);\n } else if (context.options.includeTextNodes && isText(child)) {\n const text = normalizeText(child.data, context.options.maxTextLength);\n if (text) {\n children.push({\n id: nextId(context),\n tag: \"#text\",\n role: \"text\",\n name: text,\n text,\n interactive: false,\n focusable: false,\n children: [],\n });\n }\n }\n }\n if (omitted > 0) children.push(omittedNode(context, omitted));\n return children;\n }\n\n for (const child of element.children) {\n if (isElement(child)) {\n if (!context.options.includeSelectOptions && element.name === \"select\") continue;\n const semanticChild = walkElement(child, context);\n omitted += appendSemanticChild(element, semanticChild, children, repeatedSignatures, context);\n } else if (context.options.includeTextNodes && isText(child)) {\n const text = normalizeText(child.data, context.options.maxTextLength);\n if (text) {\n const textNode: SemanticNode = {\n id: nextId(context),\n tag: \"#text\",\n role: \"text\",\n name: text,\n text,\n interactive: false,\n focusable: false,\n children: [],\n };\n if (shouldSummarizeMoreChildren(element, children, context)) {\n omitted += 1;\n } else {\n children.push(textNode);\n }\n }\n }\n }\n const linkFarmSummary = summarizeLikelyLinkFarmChildren(element, children, context);\n if (linkFarmSummary.omitted > 0) {\n children.splice(0, children.length, ...linkFarmSummary.children);\n omitted += linkFarmSummary.omitted;\n }\n if (omitted > 0) children.push(omittedNode(context, omitted));\n return children;\n}\n\nfunction collectSlotAssignments(host: Element): Map<string, AnyNode[]> {\n const assignments = new Map<string, AnyNode[]>();\n for (const child of host.children) {\n if (!isUsefulSlotAssignment(child)) continue;\n const slotName = isElement(child) ? attr(child, \"slot\") ?? \"\" : \"\";\n const assigned = assignments.get(slotName) ?? [];\n assigned.push(child);\n assignments.set(slotName, assigned);\n }\n return assignments;\n}\n\nfunction isUsefulSlotAssignment(node: AnyNode): boolean {\n if (isText(node)) return normalizeText(node.data, 120) !== \"\";\n if (!isElement(node)) return false;\n return !isDeclarativeShadowTemplate(node);\n}\n\nfunction appendSemanticChild(\n parent: Element,\n child: SemanticNode | null,\n children: SemanticNode[],\n repeatedSignatures: Map<string, number>,\n context: StaticContext,\n): number {\n if (!child) return 0;\n if (shouldSummarizeRepeatedChild(parent, child, repeatedSignatures, context)) {\n return countSemanticNodes(child);\n }\n if (shouldSummarizeMoreChildren(parent, children, context)) {\n return countSemanticNodes(child);\n }\n children.push(child);\n return 0;\n}\n\nfunction shouldSkipElement(element: Element, context: StaticContext): boolean {\n if (context.options.mode === \"full\") return false;\n if (isDeclarativeShadowTemplate(element)) return false;\n if (nonSemanticTags.has(element.name)) return true;\n if (element.name === \"noscript\") return true;\n return false;\n}\n\nfunction isDeclarativeShadowTemplate(element: Element): boolean {\n if (element.name !== \"template\") return false;\n const mode = attr(element, \"shadowrootmode\") ?? attr(element, \"shadowroot\");\n return mode === \"open\" || mode === \"closed\";\n}\n\nfunction shouldSummarizeMoreChildren(element: Element, children: SemanticNode[], context: StaticContext): boolean {\n if (!context.options.summarizeLargeSubtrees || context.options.mode === \"full\") return false;\n if (!isLargeSubtreeCandidate(element)) return false;\n return children.length >= context.options.maxChildrenPerNode;\n}\n\nfunction isLargeSubtreeCandidate(element: Element): boolean {\n return [\"nav\", \"ul\", \"ol\", \"div\", \"section\", \"footer\", \"header\", \"main\"].includes(element.name);\n}\n\nfunction summarizeLikelyLinkFarmChildren(\n element: Element,\n children: SemanticNode[],\n context: StaticContext,\n): { children: SemanticNode[]; omitted: number } {\n if (!context.options.summarizeLikelyLinkFarms || context.options.mode === \"full\") return { children, omitted: 0 };\n if (children.length <= context.options.maxLinkFarmChildren) return { children, omitted: 0 };\n if (!isLikelyLinkFarmContainer(element)) return { children, omitted: 0 };\n const stats = childLinkFarmStats(children);\n if (stats.linkishChildren < Math.max(8, Math.floor(children.length * 0.65))) return { children, omitted: 0 };\n if (stats.contentRichChildren > Math.max(2, Math.floor(children.length * 0.2))) return { children, omitted: 0 };\n\n const kept: SemanticNode[] = [];\n let omitted = 0;\n let keptLinkish = 0;\n for (const child of children) {\n /* v8 ignore next 4 -- covered by link-farm tests, but V8 maps this continue branch unreliably through TS output. */\n if (!isLinkishSummaryChild(child)) {\n kept.push(child);\n continue;\n }\n if (keptLinkish < context.options.maxLinkFarmChildren) {\n kept.push(child);\n keptLinkish += 1;\n } else {\n omitted += countSemanticNodes(child);\n }\n }\n return omitted > 0 ? { children: kept, omitted } : { children, omitted: 0 };\n}\n\nfunction isLikelyLinkFarmContainer(element: Element): boolean {\n if ([\"nav\", \"ul\", \"ol\", \"aside\", \"footer\", \"header\"].includes(element.name)) return true;\n if (![\"div\", \"section\"].includes(element.name)) return false;\n const value = [\n attr(element, \"id\"),\n attr(element, \"class\"),\n attr(element, \"role\"),\n attr(element, \"aria-label\"),\n attr(element, \"title\"),\n ].filter(Boolean).join(\" \").toLowerCase();\n if (/\\b(article|body|content|contents|entry|main|post|story|text|view)\\b/.test(value)) return false;\n return /\\b(board|category|comment|footer|gallery|gnb|header|issue|list|menu|nav|popular|recent|recommend|related|reply|sidebar|tab)\\b/.test(value)\n || /갤러리|댓글|개념글|관련|목록|베스트|인기|최근|추천|카테고리/.test(value);\n}\n\nfunction childLinkFarmStats(children: SemanticNode[]): { linkishChildren: number; contentRichChildren: number } {\n let linkishChildren = 0;\n let contentRichChildren = 0;\n for (const child of children) {\n if (isLinkishSummaryChild(child)) linkishChildren += 1;\n if (isContentRichSummaryChild(child)) contentRichChildren += 1;\n }\n return { linkishChildren, contentRichChildren };\n}\n\nfunction isLinkishSummaryChild(node: SemanticNode): boolean {\n const stats = semanticRoleStats(node);\n return stats.links > 0\n && stats.formControls === 0\n && stats.tables === 0\n && stats.paragraphs <= 1\n && stats.contentContainers === 0;\n}\n\nfunction isContentRichSummaryChild(node: SemanticNode): boolean {\n const stats = semanticRoleStats(node);\n return stats.paragraphs > 1 || stats.tables > 0 || stats.contentContainers > 0 || stats.formControls > 0;\n}\n\nfunction semanticRoleStats(node: SemanticNode): {\n links: number;\n paragraphs: number;\n tables: number;\n formControls: number;\n contentContainers: number;\n} {\n const role = node.role ?? node.tag;\n const stats = {\n links: role === \"link\" ? 1 : 0,\n paragraphs: role === \"p\" || role === \"text\" ? 1 : 0,\n tables: role === \"table\" || role === \"row\" || role === \"cell\" ? 1 : 0,\n formControls: role === \"textbox\" || role === \"searchbox\" || role === \"combobox\" || role === \"listbox\" || role === \"checkbox\" || role === \"radio\" || role === \"slider\" || role === \"spinbutton\" || role === \"switch\" ? 1 : 0,\n contentContainers: role === \"article\" || role === \"main\" ? 1 : 0,\n };\n for (const child of node.children) {\n const childStats = semanticRoleStats(child);\n stats.links += childStats.links;\n stats.paragraphs += childStats.paragraphs;\n stats.tables += childStats.tables;\n stats.formControls += childStats.formControls;\n stats.contentContainers += childStats.contentContainers;\n }\n return stats;\n}\n\nfunction shouldSummarizeRepeatedChild(\n parent: Element,\n child: SemanticNode,\n signatures: Map<string, number>,\n context: StaticContext,\n): boolean {\n if (!context.options.summarizeRepeatedSubtrees || context.options.mode === \"full\") return false;\n if (!isRepeatedSubtreeCandidate(parent)) return false;\n const signature = semanticSignature(child);\n const count = signatures.get(signature) ?? 0;\n signatures.set(signature, count + 1);\n return count >= context.options.maxRepeatedSubtreeInstances;\n}\n\nfunction isRepeatedSubtreeCandidate(element: Element): boolean {\n return [\"body\", \"main\", \"nav\", \"ul\", \"ol\", \"div\", \"section\", \"footer\", \"header\", \"aside\"].includes(element.name);\n}\n\nfunction semanticSignature(node: SemanticNode): string {\n const childSignatures = node.children.map(semanticSignature).join(\",\");\n return `${node.tag}|${node.role ?? \"\"}|${node.name}|${node.text ?? \"\"}|${node.value ?? \"\"}|${node.interactive ? \"i\" : \"\"}[${childSignatures}]`;\n}\n\nfunction countSemanticNodes(node: SemanticNode): number {\n let count = 1;\n for (const child of node.children) count += countSemanticNodes(child);\n return count;\n}\n\nfunction shouldSkipChildrenForCollapsedElement(element: Element, context: StaticContext): boolean {\n if (!context.options.pruneCollapsedSubtrees || context.options.includeHidden) return false;\n if (attr(element, \"aria-expanded\") === \"false\") return true;\n if (element.name === \"details\" && attr(element, \"open\") === null) return true;\n if (element.name === \"dialog\" && attr(element, \"open\") === null) return true;\n if (attr(element, \"popover\") !== null && attr(element, \"open\") === null) return true;\n return false;\n}\n\nfunction isCollapsedControlledElement(element: Element, context: StaticContext): boolean {\n const id = attr(element, \"id\");\n return Boolean(id && context.options.pruneCollapsedSubtrees && context.collapsedControlledIds.has(id));\n}\n\nfunction isLikelyClosedOverlay(element: Element, context: StaticContext): boolean {\n if (!context.options.pruneLikelyClosedOverlays || context.options.mode === \"full\") return false;\n if (hasUsefulOpenSignal(element)) return false;\n if (!hasOverlaySignal(element)) return false;\n if (hasDirectFocusableIntent(element)) return false;\n return hasOffscreenOrClosedStyle(element) || hasClosedClassSignal(element) || hasInertSignal(element);\n}\n\nfunction hasUsefulOpenSignal(element: Element): boolean {\n return attr(element, \"open\") !== null\n || attr(element, \"aria-expanded\") === \"true\"\n || attr(element, \"aria-modal\") === \"true\"\n || attr(element, \"data-open\") === \"true\"\n || attr(element, \"data-state\") === \"open\";\n}\n\nfunction hasOverlaySignal(element: Element): boolean {\n const value = [element.name, attr(element, \"id\"), attr(element, \"class\"), attr(element, \"role\"), attr(element, \"aria-label\")]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return /\\b(drawer|modal|dialog|popover|overlay|hamburger|menu|sidebar|sheet|flyout|dropdown)\\b/.test(value);\n}\n\nfunction hasDirectFocusableIntent(element: Element): boolean {\n const tabindex = attr(element, \"tabindex\");\n return tabindex !== null && Number(tabindex) >= 0;\n}\n\nfunction hasInertSignal(element: Element): boolean {\n return attr(element, \"inert\") !== null || attr(element, \"aria-hidden\") === \"true\";\n}\n\nfunction hasClosedClassSignal(element: Element): boolean {\n const className = attr(element, \"class\") ?? \"\";\n return /\\b(closed|collapsed|hidden|inactive|is-closed|is-hidden)\\b/i.test(className);\n}\n\nfunction hasOffscreenOrClosedStyle(element: Element): boolean {\n const style = attr(element, \"style\") ?? \"\";\n if (!style) return false;\n const normalized = style.replace(/\\s+/g, \"\").toLowerCase();\n return /(?:^|;)(?:left|right|top|bottom):-\\d{2,}(?:px|rem|em|vw|vh|%)/.test(normalized)\n || /(?:^|;)transform:translate[xy]?\\(-[1-9]\\d*%/.test(normalized)\n || /(?:^|;)(?:max-height|height):0(?:px|rem|em|%)?/.test(normalized)\n || /(?:^|;)pointer-events:none/.test(normalized);\n}\n\nfunction shouldPrune(\n element: Element,\n role: string | null,\n name: string,\n interactive: boolean,\n children: SemanticNode[],\n context: StaticContext,\n): boolean {\n if (context.options.mode === \"full\") return false;\n if (role === \"none\" || role === \"presentation\") return true;\n if (interactive) return false;\n if (role && role !== \"generic\") return false;\n if (name) return false;\n if (isReferencedIdTarget(element, context)) return false;\n if (children.length === 0) return true;\n if (attr(element, \"id\") || attr(element, \"aria-label\") || attr(element, \"aria-labelledby\")) return false;\n return children.length > 0;\n}\n\nfunction isReferencedIdTarget(element: Element, context: StaticContext): boolean {\n const id = attr(element, \"id\");\n return Boolean(id && context.referencedIds.has(id));\n}\n\nfunction shouldPruneListItemWrapper(role: string | null, children: SemanticNode[], context: StaticContext): boolean {\n if (context.options.mode === \"full\") return false;\n if (role !== \"listitem\") return false;\n return children.some((child) => child.role === \"link\" || child.role === \"button\");\n}\n\nfunction shouldPruneCustomElementWrapper(\n element: Element,\n role: string | null,\n name: string,\n interactive: boolean,\n children: SemanticNode[],\n context: StaticContext,\n): boolean {\n if (context.options.mode === \"full\") return false;\n if (!isCustomElement(element)) return false;\n if (interactive) return false;\n if (role && role !== \"generic\") return false;\n if (name) return false;\n if (children.length === 0) return false;\n if (hasUsefulHostSignal(element)) return false;\n return true;\n}\n\nfunction isCustomElement(element: Element): boolean {\n return element.name.includes(\"-\");\n}\n\nfunction hasUsefulHostSignal(element: Element): boolean {\n return Boolean(\n attr(element, \"id\")\n || attr(element, \"aria-label\")\n || attr(element, \"aria-labelledby\")\n || attr(element, \"aria-describedby\")\n || attr(element, \"aria-controls\")\n || attr(element, \"aria-expanded\")\n || attr(element, \"aria-selected\")\n || attr(element, \"aria-current\")\n || attr(element, \"tabindex\")\n );\n}\n\nfunction getRole(element: Element): string | null {\n const explicit = firstToken(attr(element, \"role\"));\n if (explicit) return explicit;\n const tag = element.name;\n if (tag === \"section\" && !hasExplicitNameSource(element)) return null;\n if (tag === \"form\" && !hasExplicitNameSource(element)) return null;\n if (tag in landmarkTags) return landmarkTags[tag] ?? null;\n if (/^h[1-6]$/.test(tag)) return \"heading\";\n if (tag === \"a\" || tag === \"area\") return attr(element, \"href\") ? \"link\" : null;\n if (tag === \"button\") return \"button\";\n if (tag === \"details\" || tag === \"fieldset\") return \"group\";\n if (tag === \"dialog\") return \"dialog\";\n if (tag === \"figure\") return \"figure\";\n if (tag === \"form\") return \"form\";\n if (tag === \"iframe\") return \"iframe\";\n if (tag === \"img\") return \"img\";\n if (tag === \"input\") return inputRole(element);\n if (tag === \"li\") return \"listitem\";\n if (tag === \"ol\" || tag === \"ul\") return \"list\";\n if (tag === \"option\") return \"option\";\n if (tag === \"p\") return \"p\";\n if (tag === \"progress\") return \"progressbar\";\n if (tag === \"select\") return attr(element, \"multiple\") !== null ? \"listbox\" : \"combobox\";\n if (tag === \"summary\") return \"button\";\n if (tag === \"table\") return \"table\";\n if (tag === \"td\") return \"cell\";\n if (tag === \"textarea\") return \"textbox\";\n if (tag === \"th\") return attr(element, \"scope\") === \"row\" ? \"rowheader\" : \"columnheader\";\n if (tag === \"tr\") return \"row\";\n return null;\n}\n\nfunction inputRole(element: Element): string | null {\n const type = (attr(element, \"type\") ?? \"text\").toLowerCase();\n if (type === \"hidden\") return null;\n if (type === \"button\" || type === \"submit\" || type === \"reset\") return \"button\";\n if (type === \"checkbox\") return \"checkbox\";\n if (type === \"image\") return \"button\";\n if (type === \"radio\") return \"radio\";\n if (type === \"range\") return \"slider\";\n if (type === \"search\") return \"searchbox\";\n if (type === \"number\") return \"spinbutton\";\n return \"textbox\";\n}\n\nfunction computeName(element: Element, role: string, context: StaticContext): string {\n const labelledBy = attr(element, \"aria-labelledby\");\n if (labelledBy) {\n const value = labelledBy\n .split(/\\s+/)\n .map((id) => context.ids.get(id))\n .filter((item): item is Element => Boolean(item))\n .map((item) => descendantText(item, context))\n .join(\" \");\n const normalized = normalizeText(value, context.options.maxTextLength);\n if (normalized) return normalized;\n }\n\n const ariaLabel = normalizeText(attr(element, \"aria-label\") ?? \"\", context.options.maxTextLength);\n if (ariaLabel) return ariaLabel;\n\n const labelled = labelName(element, context);\n if (labelled) return labelled;\n\n const valueName = elementValueName(element);\n if (valueName) return normalizeText(valueName, context.options.maxTextLength);\n\n if (role === \"img\") {\n const alt = normalizeText(attr(element, \"alt\") ?? \"\", context.options.maxTextLength);\n if (alt) return alt;\n }\n\n if (rolesNamedFromContents.has(role)) {\n const contents = normalizeText(descendantText(element, context, { excludeIds: descriptionReferenceIds(element) }), context.options.maxTextLength);\n if (contents) return contents;\n }\n\n const title = normalizeText(attr(element, \"title\") ?? \"\", context.options.maxTextLength);\n if (title) return title;\n\n return \"\";\n}\n\nfunction labelName(element: Element, context: StaticContext): string {\n const id = attr(element, \"id\");\n if (id) {\n const label = context.labelsByFor.get(id);\n if (label) {\n const value = normalizeText(descendantText(label, context), context.options.maxTextLength);\n if (value) return value;\n }\n }\n const label = findClosestLabel(element);\n return label ? normalizeText(descendantText(label, context), context.options.maxTextLength) : \"\";\n}\n\nfunction findClosestLabel(element: Element): Element | null {\n let parent = element.parent;\n while (parent) {\n if (isElement(parent) && parent.name === \"label\") return parent;\n parent = parent.parent;\n }\n return null;\n}\n\nfunction elementValueName(element: Element): string {\n if (element.name === \"input\") {\n const type = (attr(element, \"type\") ?? \"text\").toLowerCase();\n if (type === \"button\" || type === \"submit\" || type === \"reset\") return attr(element, \"value\") ?? \"\";\n }\n return \"\";\n}\n\nfunction getState(element: Element): SemanticNodeState {\n const state: SemanticNodeState = {};\n if (attr(element, \"disabled\") !== null || attr(element, \"aria-disabled\") === \"true\") state.disabled = true;\n const busy = attr(element, \"aria-busy\");\n if (busy === \"true\") state.busy = true;\n if (busy === \"false\") state.busy = false;\n const multiselectable = attr(element, \"aria-multiselectable\");\n if (multiselectable === \"true\") state.multiselectable = true;\n if (multiselectable === \"false\") state.multiselectable = false;\n const sort = attr(element, \"aria-sort\");\n if (sort) state.sort = normalizeText(sort, 40);\n const grabbed = attr(element, \"aria-grabbed\");\n if (grabbed === \"true\") state.grabbed = true;\n if (grabbed === \"false\") state.grabbed = false;\n const dropEffect = attr(element, \"aria-dropeffect\");\n if (dropEffect) state.dropEffect = normalizeText(dropEffect, 80);\n if (attr(element, \"required\") !== null || attr(element, \"aria-required\") === \"true\") state.required = true;\n if (attr(element, \"readonly\") !== null || attr(element, \"aria-readonly\") === \"true\") state.readonly = true;\n const checked = attr(element, \"aria-checked\") ?? (attr(element, \"checked\") !== null ? \"true\" : null);\n if (checked === \"true\") state.checked = true;\n if (checked === \"false\") state.checked = false;\n if (checked === \"mixed\") state.checked = \"mixed\";\n if (attr(element, \"selected\") !== null || attr(element, \"aria-selected\") === \"true\") state.selected = true;\n const expanded = attr(element, \"aria-expanded\");\n if (expanded === \"true\") state.expanded = true;\n if (expanded === \"false\") state.expanded = false;\n const pressed = attr(element, \"aria-pressed\");\n if (pressed === \"true\") state.pressed = true;\n if (pressed === \"false\") state.pressed = false;\n if (pressed === \"mixed\") state.pressed = \"mixed\";\n const invalid = attr(element, \"aria-invalid\");\n if (invalid && invalid !== \"false\") state.invalid = invalid === \"true\" ? true : invalid;\n const current = attr(element, \"aria-current\");\n if (current && current !== \"false\") state.current = current === \"true\" ? true : current;\n const haspopup = attr(element, \"aria-haspopup\");\n if (haspopup && haspopup !== \"false\") state.haspopup = haspopup === \"true\" ? true : haspopup;\n const controls = attr(element, \"aria-controls\");\n if (controls) state.controls = normalizeText(controls, 120);\n const live = attr(element, \"aria-live\");\n if (live) state.live = normalizeText(live, 120);\n if (attr(element, \"aria-modal\") === \"true\") state.modal = true;\n const orientation = attr(element, \"aria-orientation\");\n if (orientation) state.orientation = normalizeText(orientation, 40);\n const valueMin = ariaNumber(attr(element, \"aria-valuemin\"));\n if (typeof valueMin === \"number\") state.valueMin = valueMin;\n const valueMax = ariaNumber(attr(element, \"aria-valuemax\"));\n if (typeof valueMax === \"number\") state.valueMax = valueMax;\n const valueNow = ariaNumber(attr(element, \"aria-valuenow\"));\n if (typeof valueNow === \"number\") state.valueNow = valueNow;\n const valueText = attr(element, \"aria-valuetext\");\n if (valueText) state.valueText = normalizeText(valueText, 120);\n return state;\n}\n\nfunction ariaNumber(value: string | null): number | undefined {\n if (value === null || value.trim() === \"\") return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction isInteractive(element: Element, role: string | null, focusable: boolean): boolean {\n if (role && interactiveRoles.has(role)) return true;\n if (focusable) return true;\n return [\"button\", \"input\", \"select\", \"textarea\"].includes(element.name);\n}\n\nfunction isFocusable(element: Element, role: string | null): boolean {\n if (attr(element, \"disabled\") !== null) return false;\n const tabindex = attr(element, \"tabindex\");\n if (tabindex !== null && Number(tabindex) >= 0) return true;\n if (role && interactiveRoles.has(role)) return true;\n return element.name === \"a\" && attr(element, \"href\") !== null;\n}\n\nfunction isHidden(element: Element): boolean {\n if (attr(element, \"hidden\") !== null) return true;\n if (attr(element, \"aria-hidden\") === \"true\") return true;\n const style = attr(element, \"style\");\n return style ? hiddenStylePattern.test(style) : false;\n}\n\nfunction isLikelyAd(element: Element): boolean {\n const value = [\n attr(element, \"id\"),\n attr(element, \"class\"),\n attr(element, \"aria-label\"),\n attr(element, \"title\"),\n attr(element, \"data-testid\"),\n ].filter(Boolean).join(\" \").toLowerCase();\n return /\\b(ad|ads|advert|advertisement|banner|sponsor|sponsored|promotion|promoted|powerlink)\\b/.test(value)\n || /파워링크|광고|직접홍보|홍보/.test(value);\n}\n\nfunction isLikelyBoilerplate(element: Element): boolean {\n if (element.name === \"footer\") return true;\n if (element.name === \"main\" || element.name === \"article\") return false;\n const role = firstToken(attr(element, \"role\"));\n if (role === \"main\" || role === \"article\") return false;\n const value = [\n attr(element, \"id\"),\n attr(element, \"class\"),\n attr(element, \"aria-label\"),\n attr(element, \"title\"),\n ].filter(Boolean).join(\" \").toLowerCase();\n if (!value) return false;\n if (/\\b(content|contents|entry|post-body|article-body|story-body|view-content)\\b/.test(value)) return false;\n return /\\b(footer|sidebar)\\b/.test(value) || /푸터/.test(value);\n}\n\nfunction isLikelyBoilerplateTable(element: Element): boolean {\n if (element.name !== \"table\") return false;\n const value = [\n attr(element, \"id\"),\n attr(element, \"class\"),\n attr(element, \"aria-label\"),\n attr(element, \"title\"),\n ].filter(Boolean).join(\" \").toLowerCase();\n return /\\bgall[_-]?list\\b/.test(value) || /\\bbottom[_-]?list\\w*\\b/.test(value);\n}\n\nfunction flattenBoilerplateTable(element: Element, context: StaticContext): SemanticNode | null {\n const children = collectFlattenedBoilerplateItems(element, context);\n if (children.length === 0) return null;\n return containerNode(context, element.name, children);\n}\n\nfunction collectFlattenedBoilerplateItems(element: Element, context: StaticContext): SemanticNode[] {\n const children: SemanticNode[] = [];\n for (const child of element.children) {\n if (!isElement(child)) continue;\n if (shouldSkipElement(child, context)) continue;\n if (!context.options.includeHidden && isHidden(child)) continue;\n if (context.options.excludeLikelyAds && isLikelyAd(child)) continue;\n const role = getRole(child);\n const focusable = isFocusable(child, role);\n const interactive = isInteractive(child, role, focusable);\n const name = role ? computeName(child, role, context) : \"\";\n if (role && name && (interactive || role === \"heading\" || role === \"img\")) {\n const node: SemanticNode = {\n id: nextId(context),\n tag: child.name,\n role,\n name,\n interactive,\n focusable,\n selector: getSelector(child),\n xpath: getXPath(child),\n children: [],\n };\n const description = computeDescription(child, context);\n if (description) node.description = description;\n const value = getValue(child);\n if (value) node.value = value;\n const state = getState(child);\n if (Object.keys(state).length > 0) node.state = state;\n if (context.options.includeAttributes) node.attributes = { ...child.attribs };\n children.push(node);\n continue;\n }\n children.push(...collectFlattenedBoilerplateItems(child, context));\n }\n return children;\n}\n\nfunction hasExplicitNameSource(element: Element): boolean {\n return attr(element, \"aria-label\") !== null || attr(element, \"aria-labelledby\") !== null || attr(element, \"title\") !== null;\n}\n\nfunction directText(element: Element, maxLength: number): string {\n return normalizeText(\n element.children\n .filter(isText)\n .map((node) => node.data)\n .join(\" \"),\n maxLength,\n );\n}\n\nfunction descendantText(element: Element, context?: StaticContext, options: DescendantTextOptions = {}): string {\n const parts: string[] = [];\n const shadowTemplate = element.children.find((child): child is Element => isElement(child) && isDeclarativeShadowTemplate(child));\n if (shadowTemplate && context) {\n const previousAssignments = context.slotAssignments;\n context.slotAssignments = collectSlotAssignments(element);\n collectDescendantText(shadowTemplate.children, parts, context, options);\n context.slotAssignments = previousAssignments;\n return parts.join(\" \");\n }\n collectDescendantText(element.children, parts, context, options);\n return parts.join(\" \");\n}\n\nfunction collectDescendantText(nodes: AnyNode[], parts: string[], context?: StaticContext, options: DescendantTextOptions = {}): void {\n for (const node of nodes) {\n if (isText(node)) {\n parts.push(node.data);\n continue;\n }\n if (!isElement(node)) continue;\n const nodeId = attr(node, \"id\");\n if (nodeId && options.excludeIds?.has(nodeId)) continue;\n if (node.name === \"slot\" && context?.slotAssignments) {\n const slotName = attr(node, \"name\") ?? \"\";\n const assigned = context.slotAssignments.get(slotName) ?? [];\n collectDescendantText(assigned.length > 0 ? assigned : node.children, parts, context, options);\n continue;\n }\n if (nonSemanticTags.has(node.name) || node.name === \"noscript\") continue;\n collectDescendantText(node.children, parts, context, options);\n }\n}\n\nfunction normalizeText(value: string, maxLength: number): string {\n const normalized = value.replace(/\\s+/g, \" \").trim();\n return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}...` : normalized;\n}\n\nfunction computeDescription(element: Element, context: StaticContext): string {\n const describedBy = attr(element, \"aria-describedby\");\n if (describedBy) {\n const text = describedBy\n .split(/\\s+/)\n .map((id) => context.ids.get(id))\n .filter((item): item is Element => Boolean(item))\n .map((item) => descendantText(item, context))\n .filter(Boolean)\n .join(\" \");\n if (text) return normalizeText(text, context.options.maxTextLength);\n }\n return normalizeText(attr(element, \"title\") ?? \"\", context.options.maxTextLength);\n}\n\nfunction getValue(element: Element): string {\n return normalizeText(attr(element, \"value\") ?? attr(element, \"aria-valuetext\") ?? attr(element, \"aria-valuenow\") ?? \"\", 240);\n}\n\nfunction getSelector(element: Element): string {\n const id = attr(element, \"id\");\n if (id) return `#${cssEscape(id)}`;\n const parent = element.parent;\n if (!parent || !(\"children\" in parent)) return element.name;\n const siblings = parent.children.filter((node): node is Element => isElement(node) && node.name === element.name);\n const index = siblings.indexOf(element);\n return index > 0 ? `${element.name}:nth-of-type(${index + 1})` : element.name;\n}\n\nfunction getXPath(element: Element): string {\n const parts: string[] = [];\n let current: Element | null = element;\n while (current) {\n const parent: AnyNode | null = current.parent;\n /* v8 ignore next 4 -- htmlparser2 assigns parents for nodes returned by the public extract API. */\n if (!parent || !(\"children\" in parent)) {\n parts.unshift(current.name);\n break;\n }\n const siblings = parent.children.filter((node): node is Element => isElement(node) && node.name === current?.name);\n const index = siblings.indexOf(current) + 1;\n parts.unshift(`${current.name}[${index}]`);\n current = isElement(parent) ? parent : null;\n }\n return `/${parts.join(\"/\")}`;\n}\n\nfunction containerNode(context: StaticContext, tag: string, children: SemanticNode[]): SemanticNode {\n return {\n id: nextId(context),\n tag,\n role: null,\n name: \"\",\n interactive: false,\n focusable: false,\n children,\n };\n}\n\n/* v8 ignore start -- defensive fallback for impossible parser roots. */\nfunction unavailableNode(context: StaticContext, tag: string, unavailableReason: string): SemanticNode {\n return {\n id: nextId(context),\n tag,\n role: null,\n name: \"\",\n interactive: false,\n focusable: false,\n children: [],\n unavailableReason,\n };\n}\n/* v8 ignore stop */\n\nfunction omittedNode(context: StaticContext, omitted: number): SemanticNode {\n return {\n id: nextId(context),\n tag: \"omitted\",\n role: \"note\",\n name: `${omitted} static nodes omitted`,\n interactive: false,\n focusable: false,\n children: [],\n };\n}\n\nfunction nextId(context: StaticContext): string {\n return `static-${context.nextId++}`;\n}\n\nfunction attr(element: Element, name: string): string | null {\n return Object.prototype.hasOwnProperty.call(element.attribs, name) ? element.attribs[name] ?? \"\" : null;\n}\n\nfunction firstToken(value: string | null): string | null {\n return value?.trim().split(/\\s+/)[0] || null;\n}\n\nfunction cssEscape(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, (char) => `\\\\${char}`);\n}\n\nfunction isElement(node: AnyNode): node is Element {\n return node.type === \"tag\" || node.type === \"script\" || node.type === \"style\";\n}\n\nfunction isText(node: AnyNode): node is Text {\n return node.type === \"text\";\n}\n\nfunction findElement(nodes: AnyNode[], name: string): Element | undefined {\n for (const node of nodes) {\n if (!isElement(node)) continue;\n if (node.name === name) return node;\n const child = findElement(node.children, name);\n if (child) return child;\n }\n return undefined;\n}\n\nfunction fragmentRoot(children: AnyNode[]): Element {\n return new DomElement(\"fragment\", {}, children);\n}\n"],"mappings":"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","names":["linkFarmSummary","label"]}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
type CliIO = {
|
|
3
|
+
fetch?: typeof fetch;
|
|
4
|
+
stdin?: NodeJS.ReadStream;
|
|
5
|
+
stdout?: Pick<NodeJS.WriteStream, "write">;
|
|
6
|
+
stderr?: Pick<NodeJS.WriteStream, "write">;
|
|
7
|
+
};
|
|
8
|
+
declare function runCli(argv: string[], io?: CliIO): Promise<number>;
|
|
9
|
+
|
|
10
|
+
export { runCli };
|