@drowlink/aeo-linter-core 0.1.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/dist/__tests__/audit-contract.test.d.ts +2 -0
- package/dist/__tests__/audit-contract.test.d.ts.map +1 -0
- package/dist/__tests__/audit-contract.test.js +120 -0
- package/dist/__tests__/audit-contract.test.js.map +1 -0
- package/dist/__tests__/gatherers.test.d.ts +2 -0
- package/dist/__tests__/gatherers.test.d.ts.map +1 -0
- package/dist/__tests__/gatherers.test.js +139 -0
- package/dist/__tests__/gatherers.test.js.map +1 -0
- package/dist/__tests__/runner.test.d.ts +2 -0
- package/dist/__tests__/runner.test.d.ts.map +1 -0
- package/dist/__tests__/runner.test.js +77 -0
- package/dist/__tests__/runner.test.js.map +1 -0
- package/dist/audits/ai-accessibility/ai-bot-sitemap.d.ts +10 -0
- package/dist/audits/ai-accessibility/ai-bot-sitemap.d.ts.map +1 -0
- package/dist/audits/ai-accessibility/ai-bot-sitemap.js +27 -0
- package/dist/audits/ai-accessibility/ai-bot-sitemap.js.map +1 -0
- package/dist/audits/ai-accessibility/ai-robots-txt.d.ts +10 -0
- package/dist/audits/ai-accessibility/ai-robots-txt.d.ts.map +1 -0
- package/dist/audits/ai-accessibility/ai-robots-txt.js +54 -0
- package/dist/audits/ai-accessibility/ai-robots-txt.js.map +1 -0
- package/dist/audits/ai-accessibility/ai-x-robots-tag.d.ts +10 -0
- package/dist/audits/ai-accessibility/ai-x-robots-tag.d.ts.map +1 -0
- package/dist/audits/ai-accessibility/ai-x-robots-tag.js +36 -0
- package/dist/audits/ai-accessibility/ai-x-robots-tag.js.map +1 -0
- package/dist/audits/audit.d.ts +56 -0
- package/dist/audits/audit.d.ts.map +1 -0
- package/dist/audits/audit.js +86 -0
- package/dist/audits/audit.js.map +1 -0
- package/dist/audits/content-chunking/chunk-token-density.d.ts +10 -0
- package/dist/audits/content-chunking/chunk-token-density.d.ts.map +1 -0
- package/dist/audits/content-chunking/chunk-token-density.js +44 -0
- package/dist/audits/content-chunking/chunk-token-density.js.map +1 -0
- package/dist/audits/content-chunking/heading-hierarchy.d.ts +10 -0
- package/dist/audits/content-chunking/heading-hierarchy.d.ts.map +1 -0
- package/dist/audits/content-chunking/heading-hierarchy.js +54 -0
- package/dist/audits/content-chunking/heading-hierarchy.js.map +1 -0
- package/dist/audits/content-chunking/semantic-containers.d.ts +10 -0
- package/dist/audits/content-chunking/semantic-containers.d.ts.map +1 -0
- package/dist/audits/content-chunking/semantic-containers.js +34 -0
- package/dist/audits/content-chunking/semantic-containers.js.map +1 -0
- package/dist/audits/direct-answer-density/concise-answer-wordcount.d.ts +10 -0
- package/dist/audits/direct-answer-density/concise-answer-wordcount.d.ts.map +1 -0
- package/dist/audits/direct-answer-density/concise-answer-wordcount.js +42 -0
- package/dist/audits/direct-answer-density/concise-answer-wordcount.js.map +1 -0
- package/dist/audits/direct-answer-density/direct-definition-answering.d.ts +10 -0
- package/dist/audits/direct-answer-density/direct-definition-answering.d.ts.map +1 -0
- package/dist/audits/direct-answer-density/direct-definition-answering.js +43 -0
- package/dist/audits/direct-answer-density/direct-definition-answering.js.map +1 -0
- package/dist/audits/direct-answer-density/question-heading-alignment.d.ts +10 -0
- package/dist/audits/direct-answer-density/question-heading-alignment.d.ts.map +1 -0
- package/dist/audits/direct-answer-density/question-heading-alignment.js +35 -0
- package/dist/audits/direct-answer-density/question-heading-alignment.js.map +1 -0
- package/dist/audits/index.d.ts +19 -0
- package/dist/audits/index.d.ts.map +1 -0
- package/dist/audits/index.js +36 -0
- package/dist/audits/index.js.map +1 -0
- package/dist/audits/structured-data/entity-sameas-links.d.ts +10 -0
- package/dist/audits/structured-data/entity-sameas-links.d.ts.map +1 -0
- package/dist/audits/structured-data/entity-sameas-links.js +43 -0
- package/dist/audits/structured-data/entity-sameas-links.js.map +1 -0
- package/dist/audits/structured-data/jsonld-syntax-validity.d.ts +10 -0
- package/dist/audits/structured-data/jsonld-syntax-validity.d.ts.map +1 -0
- package/dist/audits/structured-data/jsonld-syntax-validity.js +43 -0
- package/dist/audits/structured-data/jsonld-syntax-validity.js.map +1 -0
- package/dist/audits/structured-data/rag-schema-presence.d.ts +10 -0
- package/dist/audits/structured-data/rag-schema-presence.d.ts.map +1 -0
- package/dist/audits/structured-data/rag-schema-presence.js +48 -0
- package/dist/audits/structured-data/rag-schema-presence.js.map +1 -0
- package/dist/config/default-config.d.ts +7 -0
- package/dist/config/default-config.d.ts.map +1 -0
- package/dist/config/default-config.js +71 -0
- package/dist/config/default-config.js.map +1 -0
- package/dist/gather/driver/cheerio-driver.d.ts +27 -0
- package/dist/gather/driver/cheerio-driver.d.ts.map +1 -0
- package/dist/gather/driver/cheerio-driver.js +64 -0
- package/dist/gather/driver/cheerio-driver.js.map +1 -0
- package/dist/gather/gatherer.d.ts +12 -0
- package/dist/gather/gatherer.d.ts.map +1 -0
- package/dist/gather/gatherer.js +6 -0
- package/dist/gather/gatherer.js.map +1 -0
- package/dist/gather/gatherers/content-chunks-gatherer.d.ts +10 -0
- package/dist/gather/gatherers/content-chunks-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/content-chunks-gatherer.js +100 -0
- package/dist/gather/gatherers/content-chunks-gatherer.js.map +1 -0
- package/dist/gather/gatherers/direct-answers-gatherer.d.ts +10 -0
- package/dist/gather/gatherers/direct-answers-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/direct-answers-gatherer.js +58 -0
- package/dist/gather/gatherers/direct-answers-gatherer.js.map +1 -0
- package/dist/gather/gatherers/headings-hierarchy-gatherer.d.ts +10 -0
- package/dist/gather/gatherers/headings-hierarchy-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/headings-hierarchy-gatherer.js +60 -0
- package/dist/gather/gatherers/headings-hierarchy-gatherer.js.map +1 -0
- package/dist/gather/gatherers/http-headers-gatherer.d.ts +10 -0
- package/dist/gather/gatherers/http-headers-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/http-headers-gatherer.js +25 -0
- package/dist/gather/gatherers/http-headers-gatherer.js.map +1 -0
- package/dist/gather/gatherers/jsonld-gatherer.d.ts +11 -0
- package/dist/gather/gatherers/jsonld-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/jsonld-gatherer.js +110 -0
- package/dist/gather/gatherers/jsonld-gatherer.js.map +1 -0
- package/dist/gather/gatherers/meta-tags-gatherer.d.ts +10 -0
- package/dist/gather/gatherers/meta-tags-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/meta-tags-gatherer.js +45 -0
- package/dist/gather/gatherers/meta-tags-gatherer.js.map +1 -0
- package/dist/gather/gatherers/robots-txt-gatherer.d.ts +12 -0
- package/dist/gather/gatherers/robots-txt-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/robots-txt-gatherer.js +139 -0
- package/dist/gather/gatherers/robots-txt-gatherer.js.map +1 -0
- package/dist/gather/gatherers/url-gatherer.d.ts +10 -0
- package/dist/gather/gatherers/url-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/url-gatherer.js +19 -0
- package/dist/gather/gatherers/url-gatherer.js.map +1 -0
- package/dist/gather/index.d.ts +14 -0
- package/dist/gather/index.d.ts.map +1 -0
- package/dist/gather/index.js +14 -0
- package/dist/gather/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/report/html-reporter.d.ts +11 -0
- package/dist/report/html-reporter.d.ts.map +1 -0
- package/dist/report/html-reporter.js +285 -0
- package/dist/report/html-reporter.js.map +1 -0
- package/dist/report/index.d.ts +6 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/index.js +6 -0
- package/dist/report/index.js.map +1 -0
- package/dist/report/terminal-reporter.d.ts +8 -0
- package/dist/report/terminal-reporter.d.ts.map +1 -0
- package/dist/report/terminal-reporter.js +50 -0
- package/dist/report/terminal-reporter.js.map +1 -0
- package/dist/runner/aggregator.d.ts +17 -0
- package/dist/runner/aggregator.d.ts.map +1 -0
- package/dist/runner/aggregator.js +59 -0
- package/dist/runner/aggregator.js.map +1 -0
- package/dist/runner/runner.d.ts +29 -0
- package/dist/runner/runner.d.ts.map +1 -0
- package/dist/runner/runner.js +125 -0
- package/dist/runner/runner.js.map +1 -0
- package/dist/types/artifacts.d.ts +188 -0
- package/dist/types/artifacts.d.ts.map +1 -0
- package/dist/types/artifacts.js +7 -0
- package/dist/types/artifacts.js.map +1 -0
- package/dist/types/audit.d.ts +122 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +6 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/config.d.ts +74 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/gatherer.d.ts +32 -0
- package/dist/types/gatherer.d.ts.map +1 -0
- package/dist/types/gatherer.js +5 -0
- package/dist/types/gatherer.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tipos y contratos para los artefactos recolectados por los Gatherers.
|
|
3
|
+
* Siguiendo el patrón de Google Lighthouse, los Gatherers extraen datos crudos del DOM/red
|
|
4
|
+
* y producen un objeto tipado `Artifacts` que las auditorías consumen como funciones puras.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Información de URL navegada y redirigida
|
|
8
|
+
*/
|
|
9
|
+
export interface URLArtifact {
|
|
10
|
+
requestedUrl: string;
|
|
11
|
+
finalUrl: string;
|
|
12
|
+
domain: string;
|
|
13
|
+
pathname: string;
|
|
14
|
+
protocol: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Regla de acceso para un User-Agent específico en robots.txt
|
|
18
|
+
*/
|
|
19
|
+
export interface RobotsAgentRule {
|
|
20
|
+
userAgent: string;
|
|
21
|
+
allow: string[];
|
|
22
|
+
disallow: string[];
|
|
23
|
+
crawlDelay?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Artefacto con el contenido e interpretación del archivo robots.txt
|
|
27
|
+
*/
|
|
28
|
+
export interface RobotsTxtArtifact {
|
|
29
|
+
rawContent: string | null;
|
|
30
|
+
statusCode: number | null;
|
|
31
|
+
exists: boolean;
|
|
32
|
+
sitemaps: string[];
|
|
33
|
+
/** Reglas por User-Agent mapeadas por nombre en minúsculas */
|
|
34
|
+
rulesByAgent: Record<string, RobotsAgentRule>;
|
|
35
|
+
/** Directivas específicas identificadas para bots de IA conocidos */
|
|
36
|
+
aiBotsStatus: {
|
|
37
|
+
gptBot?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
38
|
+
perplexityBot?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
39
|
+
claudeBot?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
40
|
+
googleExtended?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
41
|
+
ccBot?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
42
|
+
bytespider?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
43
|
+
cohereAi?: 'allowed' | 'disallowed' | 'partially_disallowed' | 'not_specified';
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Encabezados HTTP recolectados de la respuesta principal
|
|
48
|
+
*/
|
|
49
|
+
export interface HttpHeadersArtifact {
|
|
50
|
+
statusCode: number;
|
|
51
|
+
headers: Record<string, string | string[]>;
|
|
52
|
+
xRobotsTag: string | null;
|
|
53
|
+
contentType: string | null;
|
|
54
|
+
cacheControl: string | null;
|
|
55
|
+
contentEncoding: string | null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Item o nodo JSON-LD individual extraído del documento
|
|
59
|
+
*/
|
|
60
|
+
export interface JSONLDItem {
|
|
61
|
+
raw: string;
|
|
62
|
+
parsed: Record<string, unknown> | null;
|
|
63
|
+
type: string | string[] | null;
|
|
64
|
+
context: string | null;
|
|
65
|
+
isValid: boolean;
|
|
66
|
+
syntaxErrors?: string[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Artefacto de datos estructurados JSON-LD
|
|
70
|
+
*/
|
|
71
|
+
export interface JSONLDArtifact {
|
|
72
|
+
items: JSONLDItem[];
|
|
73
|
+
schemasCountByType: Record<string, number>;
|
|
74
|
+
hasFAQPage: boolean;
|
|
75
|
+
hasHowTo: boolean;
|
|
76
|
+
hasArticle: boolean;
|
|
77
|
+
hasQAPage: boolean;
|
|
78
|
+
hasOrganization: boolean;
|
|
79
|
+
hasProduct: boolean;
|
|
80
|
+
hasSameAs: boolean;
|
|
81
|
+
sameAsUrls: string[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Meta etiquetas y atributos de cabecera HTML
|
|
85
|
+
*/
|
|
86
|
+
export interface MetaTagsArtifact {
|
|
87
|
+
title: string | null;
|
|
88
|
+
description: string | null;
|
|
89
|
+
canonicalUrl: string | null;
|
|
90
|
+
viewport: string | null;
|
|
91
|
+
charset: string | null;
|
|
92
|
+
openGraph: Record<string, string>;
|
|
93
|
+
twitterCard: Record<string, string>;
|
|
94
|
+
robotsMeta: string | null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Elemento de encabezado en la jerarquía del DOM
|
|
98
|
+
*/
|
|
99
|
+
export interface HeadingNode {
|
|
100
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
101
|
+
text: string;
|
|
102
|
+
id?: string;
|
|
103
|
+
index: number;
|
|
104
|
+
parentHeadingIndex?: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Artefacto con el análisis de jerarquía de encabezados (H1-H6)
|
|
108
|
+
*/
|
|
109
|
+
export interface HeadingsHierarchyArtifact {
|
|
110
|
+
headings: HeadingNode[];
|
|
111
|
+
h1Count: number;
|
|
112
|
+
h2Count: number;
|
|
113
|
+
h3Count: number;
|
|
114
|
+
hasSingleH1: boolean;
|
|
115
|
+
isHierarchySequential: boolean;
|
|
116
|
+
skippedLevels: Array<{
|
|
117
|
+
from: number;
|
|
118
|
+
to: number;
|
|
119
|
+
text: string;
|
|
120
|
+
}>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Bloque o chunk de contenido semántico orientado a ingestión RAG / LLM
|
|
124
|
+
*/
|
|
125
|
+
export interface ContentChunk {
|
|
126
|
+
id: string;
|
|
127
|
+
headingText?: string;
|
|
128
|
+
headingLevel?: number;
|
|
129
|
+
text: string;
|
|
130
|
+
wordCount: number;
|
|
131
|
+
estimatedTokens: number;
|
|
132
|
+
parentTag: string;
|
|
133
|
+
hasList: boolean;
|
|
134
|
+
hasTable: boolean;
|
|
135
|
+
hasCode: boolean;
|
|
136
|
+
isSemanticContainer: boolean;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Artefacto de fragmentación de contenido semántico (Chunking)
|
|
140
|
+
*/
|
|
141
|
+
export interface ContentChunksArtifact {
|
|
142
|
+
chunks: ContentChunk[];
|
|
143
|
+
totalWordCount: number;
|
|
144
|
+
totalEstimatedTokens: number;
|
|
145
|
+
averageChunkTokenCount: number;
|
|
146
|
+
semanticTagsUsed: string[];
|
|
147
|
+
hasSemanticMain: boolean;
|
|
148
|
+
hasSemanticArticle: boolean;
|
|
149
|
+
hasSemanticSections: boolean;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Detección de patrones de pregunta y respuesta directa en el contenido
|
|
153
|
+
*/
|
|
154
|
+
export interface DirectAnswerPair {
|
|
155
|
+
question: string;
|
|
156
|
+
questionSource: 'heading' | 'bold_text' | 'faq_schema' | 'paragraph';
|
|
157
|
+
answerText: string;
|
|
158
|
+
answerWordCount: number;
|
|
159
|
+
isConcise: boolean;
|
|
160
|
+
hasDirectDefinition: boolean;
|
|
161
|
+
confidenceScore: number;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Artefacto con la densidad de respuestas directas identificadas
|
|
165
|
+
*/
|
|
166
|
+
export interface DirectAnswersArtifact {
|
|
167
|
+
pairs: DirectAnswerPair[];
|
|
168
|
+
directAnswerRatio: number;
|
|
169
|
+
conciseAnswersCount: number;
|
|
170
|
+
definitionPatternsFound: number;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Contrato principal de artefactos recopilados por el pipeline de Gatherers.
|
|
174
|
+
* Este objeto es inmutable y se entrega a cada Audit.
|
|
175
|
+
*/
|
|
176
|
+
export interface Artifacts {
|
|
177
|
+
URL: URLArtifact;
|
|
178
|
+
RobotsTxt: RobotsTxtArtifact;
|
|
179
|
+
HttpHeaders: HttpHeadersArtifact;
|
|
180
|
+
JSONLD: JSONLDArtifact;
|
|
181
|
+
MetaTags: MetaTagsArtifact;
|
|
182
|
+
HeadingsHierarchy: HeadingsHierarchyArtifact;
|
|
183
|
+
ContentChunks: ContentChunksArtifact;
|
|
184
|
+
DirectAnswers: DirectAnswersArtifact;
|
|
185
|
+
/** Espacio para artefactos personalizados de extensiones o plugins */
|
|
186
|
+
[customArtifact: string]: unknown;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/types/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tipos y contratos para los artefactos recolectados por los Gatherers.
|
|
3
|
+
* Siguiendo el patrón de Google Lighthouse, los Gatherers extraen datos crudos del DOM/red
|
|
4
|
+
* y producen un objeto tipado `Artifacts` que las auditorías consumen como funciones puras.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/types/artifacts.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tipos y contratos para las auditorías, resultados y detalles.
|
|
3
|
+
* Diseñado replicando fielmente la estructura de Google Lighthouse.
|
|
4
|
+
*/
|
|
5
|
+
import type { Artifacts } from './artifacts.js';
|
|
6
|
+
/**
|
|
7
|
+
* Modo de presentación visual del puntaje
|
|
8
|
+
*/
|
|
9
|
+
export type ScoreDisplayMode = 'binary' | 'numeric' | 'informative' | 'notApplicable' | 'error' | 'manual';
|
|
10
|
+
/**
|
|
11
|
+
* Encabezado de columna para detalles tabulares
|
|
12
|
+
*/
|
|
13
|
+
export interface TableHeading {
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
valueType?: 'text' | 'url' | 'numeric' | 'code' | 'bytes' | 'ms' | 'status';
|
|
17
|
+
subItemsHeading?: {
|
|
18
|
+
key: string;
|
|
19
|
+
valueType?: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Detalle tipo tabla para mostrar elementos evaluados
|
|
24
|
+
*/
|
|
25
|
+
export interface TableDetails {
|
|
26
|
+
type: 'table';
|
|
27
|
+
headings: TableHeading[];
|
|
28
|
+
items: Array<Record<string, unknown>>;
|
|
29
|
+
summary?: {
|
|
30
|
+
wastedMs?: number;
|
|
31
|
+
wastedBytes?: number;
|
|
32
|
+
totalItems?: number;
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detalle tipo lista simple de hallazgos
|
|
38
|
+
*/
|
|
39
|
+
export interface ListDetails {
|
|
40
|
+
type: 'list';
|
|
41
|
+
items: Array<string | {
|
|
42
|
+
text: string;
|
|
43
|
+
subItems?: string[];
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Detalle para datos de depuración / inspección cruda
|
|
48
|
+
*/
|
|
49
|
+
export interface DebugDataDetails {
|
|
50
|
+
type: 'debugdata';
|
|
51
|
+
data: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Detalle para oportunidades de mejora con ahorros o ganancias
|
|
55
|
+
*/
|
|
56
|
+
export interface OpportunityDetails {
|
|
57
|
+
type: 'opportunity';
|
|
58
|
+
headings: TableHeading[];
|
|
59
|
+
items: Array<Record<string, unknown>>;
|
|
60
|
+
potentialGain?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Unión de tipos de detalles admitidos en el resultado de auditoría
|
|
64
|
+
*/
|
|
65
|
+
export type AuditDetails = TableDetails | ListDetails | DebugDataDetails | OpportunityDetails;
|
|
66
|
+
/**
|
|
67
|
+
* Resultado formal retornado por la ejecución de una auditoría
|
|
68
|
+
*/
|
|
69
|
+
export interface AuditResult {
|
|
70
|
+
/** Identificador único de la auditoría (e.g. 'ai-robots-txt') */
|
|
71
|
+
id: string;
|
|
72
|
+
/** Puntaje normalizado entre 0 y 1 (o null si es notApplicable / informative) */
|
|
73
|
+
score: number | null;
|
|
74
|
+
/** Modo de visualización del score */
|
|
75
|
+
scoreDisplayMode: ScoreDisplayMode;
|
|
76
|
+
/** Título descriptivo (en estado exitoso o general) */
|
|
77
|
+
title: string;
|
|
78
|
+
/** Explicación detallada de la auditoría y por qué es importante para AEO */
|
|
79
|
+
description: string;
|
|
80
|
+
/** Valor numérico crudo asociado (e.g. 85 para 85 palabras o 3 para 3 errores) */
|
|
81
|
+
numericValue?: number;
|
|
82
|
+
/** Unidad del valor numérico (e.g. 'words', 'ms', 'items', '%') */
|
|
83
|
+
numericUnit?: string;
|
|
84
|
+
/** Texto formateado para presentación directa (e.g. "3 direct answers found") */
|
|
85
|
+
displayValue?: string;
|
|
86
|
+
/** Razón por la cual la auditoría falló o dio este score */
|
|
87
|
+
explanation?: string;
|
|
88
|
+
/** Mensaje de error si la auditoría falló al ejecutarse */
|
|
89
|
+
errorMessage?: string;
|
|
90
|
+
/** Detalles estructurados para rendering en UI/CLI */
|
|
91
|
+
details?: AuditDetails;
|
|
92
|
+
/** Advertencias opcionales que no invalidan el score pero informan al usuario */
|
|
93
|
+
warnings?: string[];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Metadatos estáticos requeridos por cada definición de auditoría
|
|
97
|
+
*/
|
|
98
|
+
export interface AuditMeta {
|
|
99
|
+
/** ID único de la auditoría */
|
|
100
|
+
id: string;
|
|
101
|
+
/** Título cuando pasa o título neutral */
|
|
102
|
+
title: string;
|
|
103
|
+
/** Título cuando la auditoría falla o no alcanza el score deseado */
|
|
104
|
+
failureTitle?: string;
|
|
105
|
+
/** Explicación y enlaces de documentación (Markdown) */
|
|
106
|
+
description: string;
|
|
107
|
+
/** Artefactos que esta auditoría requiere para poder ejecutarse */
|
|
108
|
+
requiredArtifacts: Array<keyof Artifacts>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Contexto de ejecución pasado a la función de auditoría
|
|
112
|
+
*/
|
|
113
|
+
export interface AuditContext {
|
|
114
|
+
options?: Record<string, unknown>;
|
|
115
|
+
settings?: {
|
|
116
|
+
locale?: string;
|
|
117
|
+
maxWaitForFulfill?: number;
|
|
118
|
+
[key: string]: unknown;
|
|
119
|
+
};
|
|
120
|
+
computedCache?: Map<string, unknown>;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/types/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/types/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tipos para la configuración, categorías y cálculo ponderado de scores.
|
|
3
|
+
*/
|
|
4
|
+
import type { AuditMeta } from './audit.js';
|
|
5
|
+
/**
|
|
6
|
+
* Referencia a una auditoría dentro de una categoría, con su peso específico
|
|
7
|
+
*/
|
|
8
|
+
export interface AuditRef {
|
|
9
|
+
/** Identificador de la auditoría */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Peso relativo de la auditoría en la categoría (e.g. 1 a 10) */
|
|
12
|
+
weight: number;
|
|
13
|
+
/** Grupo visual opcional para organizar en la UI / reporte */
|
|
14
|
+
group?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Categoría que agrupa auditorías temáticas
|
|
18
|
+
*/
|
|
19
|
+
export interface CategoryConfig {
|
|
20
|
+
/** Título de la categoría */
|
|
21
|
+
title: string;
|
|
22
|
+
/** Descripción del propósito y su relevancia en AEO */
|
|
23
|
+
description: string;
|
|
24
|
+
/** Lista de auditorías ponderadas que pertenecen a esta categoría */
|
|
25
|
+
auditRefs: AuditRef[];
|
|
26
|
+
/** Peso global de la categoría respecto al score total (opcional) */
|
|
27
|
+
weight?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configuración completa del linter
|
|
31
|
+
*/
|
|
32
|
+
export interface LinterConfig {
|
|
33
|
+
/** Categorías configuradas */
|
|
34
|
+
categories: Record<string, CategoryConfig>;
|
|
35
|
+
/** Auditorías registradas en esta configuración (IDs o Metas) */
|
|
36
|
+
audits?: Array<string | AuditMeta>;
|
|
37
|
+
/** Configuración global y banderas */
|
|
38
|
+
settings?: {
|
|
39
|
+
locale?: string;
|
|
40
|
+
maxWaitForFulfill?: number;
|
|
41
|
+
userAgent?: string;
|
|
42
|
+
[key: string]: unknown;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resultado evaluado de una categoría con su puntaje ponderado
|
|
47
|
+
*/
|
|
48
|
+
export interface CategoryResult {
|
|
49
|
+
id: string;
|
|
50
|
+
title: string;
|
|
51
|
+
description: string;
|
|
52
|
+
/** Score ponderado de la categoría (0 - 1) */
|
|
53
|
+
score: number | null;
|
|
54
|
+
/** Auditorías ejecutadas asociadas a esta categoría con sus resultados */
|
|
55
|
+
auditRefs: Array<AuditRef & {
|
|
56
|
+
result: import('./audit.js').AuditResult;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resultado completo del análisis AEO
|
|
61
|
+
*/
|
|
62
|
+
export interface AeoReportResult {
|
|
63
|
+
url: string;
|
|
64
|
+
fetchTime: string;
|
|
65
|
+
aeoVersion: string;
|
|
66
|
+
userAgent: string;
|
|
67
|
+
/** Puntuación general agregada (0 - 100) */
|
|
68
|
+
overallScore: number;
|
|
69
|
+
/** Resultados por categoría */
|
|
70
|
+
categories: Record<string, CategoryResult>;
|
|
71
|
+
/** Mapa directo de auditorías por id */
|
|
72
|
+
audits: Record<string, import('./audit.js').AuditResult>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,iEAAiE;IACjE,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnC,sCAAsC;IACtC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG;QAAE,MAAM,EAAE,OAAO,YAAY,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,WAAW,CAAC,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tipos y contratos para la fase de Gatherers (recolección).
|
|
3
|
+
*/
|
|
4
|
+
import type { Artifacts } from './artifacts.js';
|
|
5
|
+
/**
|
|
6
|
+
* Driver abstracto o adaptador de protocolo para extraer información de la página/DOM
|
|
7
|
+
*/
|
|
8
|
+
export interface Driver {
|
|
9
|
+
evaluate<T>(script: string | (() => T)): Promise<T>;
|
|
10
|
+
fetch(url: string, init?: RequestInit): Promise<Response>;
|
|
11
|
+
getUrl(): Promise<string>;
|
|
12
|
+
getHtml(): Promise<string>;
|
|
13
|
+
getHttpHeaders(): Promise<Record<string, string | string[]>>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Contexto de recolección entregado a cada Gatherer
|
|
17
|
+
*/
|
|
18
|
+
export interface GathererContext {
|
|
19
|
+
url: string;
|
|
20
|
+
driver: Driver;
|
|
21
|
+
settings?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Interfaz base para un Gatherer
|
|
25
|
+
*/
|
|
26
|
+
export interface IGatherer<K extends keyof Artifacts = keyof Artifacts> {
|
|
27
|
+
/** Nombre del artefacto que produce */
|
|
28
|
+
name: K;
|
|
29
|
+
/** Método de recolección */
|
|
30
|
+
getArtifact(context: GathererContext): Promise<Artifacts[K]>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=gatherer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gatherer.d.ts","sourceRoot":"","sources":["../../src/types/gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS;IACpE,uCAAuC;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,4BAA4B;IAC5B,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gatherer.js","sourceRoot":"","sources":["../../src/types/gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@drowlink/aeo-linter-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core engine and audit pipeline for AEO/GEO linter (Lighthouse architecture)",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./types": {
|
|
14
|
+
"types": "./dist/types/index.d.ts",
|
|
15
|
+
"import": "./dist/types/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./config": {
|
|
18
|
+
"types": "./dist/config/default-config.d.ts",
|
|
19
|
+
"import": "./dist/config/default-config.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"prepublishOnly": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
],
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/DrowLink/aeo-audit-linter.git",
|
|
34
|
+
"directory": "core"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"aeo",
|
|
38
|
+
"geo",
|
|
39
|
+
"linter",
|
|
40
|
+
"lighthouse",
|
|
41
|
+
"seo",
|
|
42
|
+
"ai-search",
|
|
43
|
+
"rag"
|
|
44
|
+
],
|
|
45
|
+
"author": "DrowLink",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"typescript": "^5.4.5",
|
|
49
|
+
"vitest": "^1.6.0"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"cheerio": "^1.2.0"
|
|
53
|
+
}
|
|
54
|
+
}
|