@rivi-software/agentic-seo-check 0.1.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.
Files changed (119) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +65 -15
  3. package/dist/brand.d.ts +11 -0
  4. package/dist/brand.js +22 -0
  5. package/dist/brand.js.map +1 -0
  6. package/dist/cli.js +125 -80
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/audit.d.ts +16 -16
  9. package/dist/core/audit.js +363 -248
  10. package/dist/core/audit.js.map +1 -1
  11. package/dist/core/concurrency.d.ts +4 -4
  12. package/dist/core/concurrency.js +33 -23
  13. package/dist/core/concurrency.js.map +1 -1
  14. package/dist/core/crawl.d.ts +5 -5
  15. package/dist/core/crawl.js +250 -121
  16. package/dist/core/crawl.js.map +1 -1
  17. package/dist/core/fetch.d.ts +5 -5
  18. package/dist/core/fetch.js +151 -100
  19. package/dist/core/fetch.js.map +1 -1
  20. package/dist/core/html/dom.d.ts +13 -0
  21. package/dist/core/html/dom.js +17 -0
  22. package/dist/core/html/dom.js.map +1 -0
  23. package/dist/core/html/extract.d.ts +2 -2
  24. package/dist/core/html/extract.js +168 -111
  25. package/dist/core/html/extract.js.map +1 -1
  26. package/dist/core/html/structured-data.d.ts +16 -6
  27. package/dist/core/html/structured-data.js +180 -145
  28. package/dist/core/html/structured-data.js.map +1 -1
  29. package/dist/core/html/text.d.ts +14 -14
  30. package/dist/core/html/text.js +110 -107
  31. package/dist/core/html/text.js.map +1 -1
  32. package/dist/core/lighthouse.d.ts +26 -25
  33. package/dist/core/lighthouse.js +181 -105
  34. package/dist/core/lighthouse.js.map +1 -1
  35. package/dist/core/performance-rules.d.ts +2 -2
  36. package/dist/core/performance-rules.js +105 -33
  37. package/dist/core/performance-rules.js.map +1 -1
  38. package/dist/core/render-rules.d.ts +5 -4
  39. package/dist/core/render-rules.js +129 -62
  40. package/dist/core/render-rules.js.map +1 -1
  41. package/dist/core/render.d.ts +2 -2
  42. package/dist/core/render.js +29 -23
  43. package/dist/core/render.js.map +1 -1
  44. package/dist/core/report/markdown.d.ts +2 -2
  45. package/dist/core/report/markdown.js +110 -131
  46. package/dist/core/report/markdown.js.map +1 -1
  47. package/dist/core/robots.d.ts +5 -5
  48. package/dist/core/robots.js +31 -16
  49. package/dist/core/robots.js.map +1 -1
  50. package/dist/core/rules/canonical.d.ts +1 -1
  51. package/dist/core/rules/canonical.js +93 -57
  52. package/dist/core/rules/canonical.js.map +1 -1
  53. package/dist/core/rules/content.js +40 -26
  54. package/dist/core/rules/content.js.map +1 -1
  55. package/dist/core/rules/document.js +64 -41
  56. package/dist/core/rules/document.js.map +1 -1
  57. package/dist/core/rules/headings.js +58 -38
  58. package/dist/core/rules/headings.js.map +1 -1
  59. package/dist/core/rules/hreflang.js +70 -38
  60. package/dist/core/rules/hreflang.js.map +1 -1
  61. package/dist/core/rules/images.js +44 -26
  62. package/dist/core/rules/images.js.map +1 -1
  63. package/dist/core/rules/index.d.ts +6 -6
  64. package/dist/core/rules/index.js +36 -35
  65. package/dist/core/rules/index.js.map +1 -1
  66. package/dist/core/rules/indexing.d.ts +2 -2
  67. package/dist/core/rules/indexing.js +48 -26
  68. package/dist/core/rules/indexing.js.map +1 -1
  69. package/dist/core/rules/keyword.js +84 -47
  70. package/dist/core/rules/keyword.js.map +1 -1
  71. package/dist/core/rules/links.js +72 -37
  72. package/dist/core/rules/links.js.map +1 -1
  73. package/dist/core/rules/meta.js +55 -34
  74. package/dist/core/rules/meta.js.map +1 -1
  75. package/dist/core/rules/response.js +75 -41
  76. package/dist/core/rules/response.js.map +1 -1
  77. package/dist/core/rules/rule.d.ts +6 -6
  78. package/dist/core/rules/rule.js +36 -36
  79. package/dist/core/rules/rule.js.map +1 -1
  80. package/dist/core/rules/social.js +86 -45
  81. package/dist/core/rules/social.js.map +1 -1
  82. package/dist/core/rules/structured-data.d.ts +6 -4
  83. package/dist/core/rules/structured-data.js +314 -102
  84. package/dist/core/rules/structured-data.js.map +1 -1
  85. package/dist/core/rules/title.js +48 -33
  86. package/dist/core/rules/title.js.map +1 -1
  87. package/dist/core/score.d.ts +3 -3
  88. package/dist/core/score.js +11 -9
  89. package/dist/core/score.js.map +1 -1
  90. package/dist/core/site-rules.d.ts +3 -3
  91. package/dist/core/site-rules.js +409 -198
  92. package/dist/core/site-rules.js.map +1 -1
  93. package/dist/core/sitemap.d.ts +5 -5
  94. package/dist/core/sitemap.js +109 -64
  95. package/dist/core/sitemap.js.map +1 -1
  96. package/dist/core/static.d.ts +2 -2
  97. package/dist/core/static.js +209 -112
  98. package/dist/core/static.js.map +1 -1
  99. package/dist/core/summary.d.ts +2 -2
  100. package/dist/core/summary.js +11 -6
  101. package/dist/core/summary.js.map +1 -1
  102. package/dist/core/types.d.ts +14 -14
  103. package/dist/core/types.js +15 -8
  104. package/dist/core/types.js.map +1 -1
  105. package/dist/core/url.d.ts +11 -11
  106. package/dist/core/url.js +122 -70
  107. package/dist/core/url.js.map +1 -1
  108. package/dist/index.d.ts +11 -11
  109. package/dist/index.js +9 -9
  110. package/dist/index.js.map +1 -1
  111. package/dist/mcp-bin.js +7 -4
  112. package/dist/mcp-bin.js.map +1 -1
  113. package/dist/mcp.d.ts +3 -3
  114. package/dist/mcp.js +312 -122
  115. package/dist/mcp.js.map +1 -1
  116. package/dist/version.d.ts +0 -1
  117. package/dist/version.js +4 -2
  118. package/dist/version.js.map +1 -1
  119. package/package.json +27 -9
@@ -1,94 +1,187 @@
1
- import { load } from 'cheerio';
2
- import { isSameSite, resolveUrl, hostOf } from '../url.js';
3
- import { collapseWhitespace, wordCount } from './text.js';
4
- import { extractStructuredData } from './structured-data.js';
5
- export function extractPage(html, options) {
6
- const $ = load(html);
7
- const hasDoctype = /^\s*<!doctype\s+html/i.test(html);
8
- const baseHref = $('base[href]').first().attr('href');
1
+ import { isTag, isText, hasChildren } from "domhandler";
2
+ import { isSameSite, resolveUrl, hostOf } from "../url.js";
3
+ import { attr, parseDocument, queryAll, queryOne, text } from "./dom.js";
4
+ import { extractStructuredData } from "./structured-data.js";
5
+ import { collapseWhitespace, wordCount } from "./text.js";
6
+ const relList = (rel) => (rel ?? "").toLowerCase().split(/\s+/u).filter(Boolean);
7
+ const attrOrNull = (value) => value?.trim() || null;
8
+ const firstNonEmpty = (values) => {
9
+ for (const v of values) {
10
+ if (v) {
11
+ return v;
12
+ }
13
+ }
14
+ return null;
15
+ };
16
+ const detectCharset = (doc) => {
17
+ const metaCharset = queryOne(doc, "meta[charset]");
18
+ const direct = metaCharset ? attr(metaCharset, "charset") : undefined;
19
+ if (direct) {
20
+ return direct.trim();
21
+ }
22
+ const httpEquiv = queryAll(doc, "meta[http-equiv]").find((el) => (attr(el, "http-equiv") ?? "").toLowerCase() === "content-type");
23
+ const content = httpEquiv ? attr(httpEquiv, "content") : undefined;
24
+ const match = content?.match(/charset=(?<charset>[\w-]+)/iu);
25
+ return match?.groups?.charset ?? null;
26
+ };
27
+ /** Elements whose content is never visible page text. */
28
+ const HIDDEN_ELEMENTS = new Set([
29
+ "script",
30
+ "style",
31
+ "noscript",
32
+ "template",
33
+ "svg",
34
+ "iframe",
35
+ "head",
36
+ ]);
37
+ /** Elements that break words apart; padded with spaces so adjacent words don't fuse. */
38
+ const BLOCK_ELEMENTS = new Set([
39
+ "p",
40
+ "div",
41
+ "li",
42
+ "h1",
43
+ "h2",
44
+ "h3",
45
+ "h4",
46
+ "h5",
47
+ "h6",
48
+ "br",
49
+ "tr",
50
+ "td",
51
+ "th",
52
+ "section",
53
+ "article",
54
+ "header",
55
+ "footer",
56
+ "nav",
57
+ "blockquote",
58
+ "pre",
59
+ "dd",
60
+ "dt",
61
+ "figcaption",
62
+ ]);
63
+ const visibleText = (doc) => {
64
+ const body = queryOne(doc, "body");
65
+ if (!body) {
66
+ return "";
67
+ }
68
+ const parts = [];
69
+ const walk = (nodes) => {
70
+ for (const node of nodes) {
71
+ if (isText(node)) {
72
+ parts.push(node.data);
73
+ }
74
+ else if (isTag(node)) {
75
+ if (HIDDEN_ELEMENTS.has(node.name)) {
76
+ continue;
77
+ }
78
+ const block = BLOCK_ELEMENTS.has(node.name);
79
+ if (block) {
80
+ parts.push(" ");
81
+ }
82
+ walk(node.children);
83
+ if (block) {
84
+ parts.push(" ");
85
+ }
86
+ }
87
+ else if (hasChildren(node)) {
88
+ walk(node.children);
89
+ }
90
+ }
91
+ };
92
+ walk(body.children);
93
+ return collapseWhitespace(parts.join(""));
94
+ };
95
+ export const extractPage = (html, options) => {
96
+ const doc = parseDocument(html);
97
+ const hasDoctype = /^\s*<!doctype\s+html/iu.test(html);
98
+ const baseEl = queryOne(doc, "base[href]");
99
+ const baseHref = baseEl ? attr(baseEl, "href") : undefined;
9
100
  const base = (baseHref && resolveUrl(baseHref, options.url)) || options.url;
10
- const siteHost = options.siteHost ?? hostOf(options.url) ?? '';
11
- const titles = $('title')
12
- .toArray()
13
- .map((el) => collapseWhitespace($(el).text()));
14
- const metaDescriptions = $('meta[name]')
15
- .toArray()
16
- .filter((el) => ($(el).attr('name') ?? '').trim().toLowerCase() === 'description')
17
- .map((el) => collapseWhitespace($(el).attr('content') ?? ''));
18
- const metaRobots = $('meta[name]')
19
- .toArray()
20
- .filter((el) => ['robots', 'googlebot', 'googlebot-news', 'bingbot'].includes(($(el).attr('name') ?? '').trim().toLowerCase()))
21
- .map((el) => collapseWhitespace($(el).attr('content') ?? '').toLowerCase())
101
+ const siteHost = options.siteHost ?? hostOf(options.url) ?? "";
102
+ const titles = queryAll(doc, "title").map((el) => collapseWhitespace(text(el)));
103
+ const metaDescriptions = queryAll(doc, "meta[name]")
104
+ .filter((el) => (attr(el, "name") ?? "").trim().toLowerCase() === "description")
105
+ .map((el) => collapseWhitespace(attr(el, "content") ?? ""));
106
+ const metaRobots = queryAll(doc, "meta[name]")
107
+ .filter((el) => ["robots", "googlebot", "googlebot-news", "bingbot"].includes((attr(el, "name") ?? "").trim().toLowerCase()))
108
+ .map((el) => collapseWhitespace(attr(el, "content") ?? "").toLowerCase())
22
109
  .filter(Boolean);
23
- const canonicals = $('link[rel]')
24
- .toArray()
25
- .filter((el) => relList($(el).attr('rel')).includes('canonical'))
26
- .map((el) => ($(el).attr('href') ?? '').trim());
27
- const headings = $('h1, h2, h3, h4, h5, h6')
28
- .toArray()
29
- .map((el) => ({ level: Number(el.tagName.slice(1)), text: collapseWhitespace($(el).text()) }));
110
+ const canonicals = queryAll(doc, "link[rel]")
111
+ .filter((el) => relList(attr(el, "rel")).includes("canonical"))
112
+ .map((el) => (attr(el, "href") ?? "").trim());
113
+ const headings = queryAll(doc, "h1, h2, h3, h4, h5, h6").map((el) => ({
114
+ level: Number(el.name.slice(1)),
115
+ text: collapseWhitespace(text(el)),
116
+ }));
30
117
  const og = {};
31
118
  const twitter = {};
32
- $('meta[property], meta[name]').each((_, el) => {
33
- const key = ($(el).attr('property') ?? $(el).attr('name') ?? '').trim().toLowerCase();
34
- const content = collapseWhitespace($(el).attr('content') ?? '');
35
- if (!key)
36
- return;
37
- if (key.startsWith('og:') && !(key in og))
119
+ for (const el of queryAll(doc, "meta[property], meta[name]")) {
120
+ const key = (attr(el, "property") ?? attr(el, "name") ?? "")
121
+ .trim()
122
+ .toLowerCase();
123
+ const content = collapseWhitespace(attr(el, "content") ?? "");
124
+ if (!key) {
125
+ continue;
126
+ }
127
+ if (key.startsWith("og:") && !(key in og)) {
38
128
  og[key.slice(3)] = content;
39
- else if (key.startsWith('twitter:') && !(key in twitter))
129
+ }
130
+ else if (key.startsWith("twitter:") && !(key in twitter)) {
40
131
  twitter[key.slice(8)] = content;
41
- });
42
- const images = $('img')
43
- .toArray()
44
- .map((el) => ({
45
- src: $(el).attr('src') ?? $(el).attr('data-src') ?? null,
46
- alt: $(el).attr('alt') ?? null,
47
- width: $(el).attr('width') ?? null,
48
- height: $(el).attr('height') ?? null,
49
- loading: $(el).attr('loading') ?? null,
132
+ }
133
+ }
134
+ const images = queryAll(doc, "img").map((el) => ({
135
+ src: attr(el, "src") ?? attr(el, "data-src") ?? null,
136
+ alt: attr(el, "alt") ?? null,
137
+ width: attr(el, "width") ?? null,
138
+ height: attr(el, "height") ?? null,
139
+ loading: attr(el, "loading") ?? null,
50
140
  }));
51
- const links = $('a[href]')
52
- .toArray()
53
- .map((el) => {
54
- const href = ($(el).attr('href') ?? '').trim();
141
+ const links = queryAll(doc, "a[href]").map((el) => {
142
+ const href = (attr(el, "href") ?? "").trim();
55
143
  // Fragment-only and empty hrefs are not links to other documents.
56
- const url = href === '' || href.startsWith('#') ? null : resolveUrl(href, base);
57
- const rel = $(el).attr('rel') ?? null;
144
+ const url = href === "" || href.startsWith("#") ? null : resolveUrl(href, base);
145
+ const rel = attr(el, "rel") ?? null;
58
146
  const relTokens = relList(rel);
59
- const text = collapseWhitespace($(el).text());
60
- const ariaLabel = collapseWhitespace($(el).attr('aria-label') ?? '');
61
- const title = collapseWhitespace($(el).attr('title') ?? '');
62
- const imgAlt = $(el)
63
- .find('img[alt]')
64
- .toArray()
65
- .map((img) => collapseWhitespace($(img).attr('alt') ?? ''))
147
+ const linkText = collapseWhitespace(text(el));
148
+ const ariaLabel = collapseWhitespace(attr(el, "aria-label") ?? "");
149
+ const title = collapseWhitespace(attr(el, "title") ?? "");
150
+ const imgAlt = queryAll(el, "img[alt]")
151
+ .map((img) => collapseWhitespace(attr(img, "alt") ?? ""))
66
152
  .find(Boolean);
67
153
  return {
68
154
  href,
69
155
  url,
70
- text,
156
+ text: linkText,
71
157
  rel,
72
- internal: url ? isSameSite(url, siteHost, options.includeSubdomains) : false,
73
- nofollow: relTokens.includes('nofollow'),
74
- hasAccessibleName: Boolean(text || ariaLabel || title || imgAlt),
158
+ internal: url
159
+ ? isSameSite(url, siteHost, options.includeSubdomains)
160
+ : false,
161
+ nofollow: relTokens.includes("nofollow"),
162
+ hasAccessibleName: Boolean(linkText || ariaLabel || title || imgAlt),
75
163
  };
76
164
  });
77
- const hreflang = $('link[rel]')
78
- .toArray()
79
- .filter((el) => relList($(el).attr('rel')).includes('alternate') && $(el).attr('hreflang'))
165
+ const hreflang = queryAll(doc, "link[rel]")
166
+ .filter((el) => relList(attr(el, "rel")).includes("alternate") && attr(el, "hreflang"))
80
167
  .map((el) => {
81
- const href = ($(el).attr('href') ?? '').trim();
82
- return { lang: ($(el).attr('hreflang') ?? '').trim(), href, url: resolveUrl(href, base) };
168
+ const href = (attr(el, "href") ?? "").trim();
169
+ return {
170
+ lang: (attr(el, "hreflang") ?? "").trim(),
171
+ href,
172
+ url: resolveUrl(href, base),
173
+ };
83
174
  });
84
- const structured = extractStructuredData($);
85
- const text = visibleText($);
175
+ const structured = extractStructuredData(doc);
176
+ const bodyText = visibleText(doc);
177
+ const htmlEl = queryOne(doc, "html");
178
+ const viewportEl = queryOne(doc, 'meta[name="viewport" i]');
86
179
  return {
87
180
  url: options.url,
88
181
  hasDoctype,
89
- lang: attrOrNull($('html').attr('lang')),
90
- charset: detectCharset($),
91
- viewport: attrOrNull($('meta[name="viewport" i]').first().attr('content')),
182
+ lang: attrOrNull(htmlEl ? attr(htmlEl, "lang") : undefined),
183
+ charset: detectCharset(doc),
184
+ viewport: attrOrNull(viewportEl ? attr(viewportEl, "content") : undefined),
92
185
  titles,
93
186
  title: firstNonEmpty(titles),
94
187
  metaDescriptions,
@@ -97,7 +190,7 @@ export function extractPage(html, options) {
97
190
  canonicals,
98
191
  canonical: canonicals[0] ? resolveUrl(canonicals[0], base) : null,
99
192
  headings,
100
- h1s: headings.filter((h) => h.level === 1).map((h) => h.text),
193
+ h1s: headings.flatMap((h) => (h.level === 1 ? [h.text] : [])),
101
194
  og,
102
195
  twitter,
103
196
  images,
@@ -105,46 +198,10 @@ export function extractPage(html, options) {
105
198
  hreflang,
106
199
  structuredData: structured.items,
107
200
  structuredDataErrors: structured.errors,
108
- text,
109
- wordCount: wordCount(text),
110
- htmlBytes: Buffer.byteLength(html, 'utf8'),
201
+ text: bodyText,
202
+ wordCount: wordCount(bodyText),
203
+ htmlBytes: Buffer.byteLength(html, "utf-8"),
111
204
  hasBaseHref: Boolean(baseHref),
112
205
  };
113
- }
114
- function relList(rel) {
115
- return (rel ?? '')
116
- .toLowerCase()
117
- .split(/\s+/)
118
- .filter(Boolean);
119
- }
120
- function attrOrNull(value) {
121
- const v = value?.trim();
122
- return v ? v : null;
123
- }
124
- function firstNonEmpty(values) {
125
- for (const v of values)
126
- if (v)
127
- return v;
128
- return null;
129
- }
130
- function detectCharset($) {
131
- const direct = $('meta[charset]').first().attr('charset');
132
- if (direct)
133
- return direct.trim();
134
- const httpEquiv = $('meta[http-equiv]')
135
- .toArray()
136
- .find((el) => ($(el).attr('http-equiv') ?? '').toLowerCase() === 'content-type');
137
- const content = httpEquiv ? $(httpEquiv).attr('content') : undefined;
138
- const match = content?.match(/charset=([\w-]+)/i);
139
- return match?.[1] ?? null;
140
- }
141
- function visibleText($) {
142
- const body = $('body').clone();
143
- body.find('script, style, noscript, template, svg, iframe, head').remove();
144
- // Insert spaces at block boundaries so words don't fuse.
145
- body.find('p, div, li, h1, h2, h3, h4, h5, h6, br, tr, td, th, section, article, header, footer, nav, blockquote, pre, dd, dt, figcaption').each((_, el) => {
146
- $(el).prepend(' ').append(' ');
147
- });
148
- return collapseWhitespace(body.text());
149
- }
206
+ };
150
207
  //# sourceMappingURL=extract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/core/html/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAW7D,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAuB;IAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAE/D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;SACtB,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjD,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC;SACrC,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC;SACjF,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC;SAC/B,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9H,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;SAC1E,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC;SAC9B,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SAChE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAkB,CAAC,CAAC,wBAAwB,CAAC;SACxD,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjG,MAAM,EAAE,GAA2B,EAAE,CAAC;IACtC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACtF,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;aACjE,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAgB,CAAC,CAAC,KAAK,CAAC;SACjC,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACZ,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI;QACxD,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;QAClC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI;QACpC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI;KACvC,CAAC,CAAC,CAAC;IAEN,MAAM,KAAK,GAAe,CAAC,CAAC,SAAS,CAAC;SACnC,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,kEAAkE;QAClE,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;aACjB,IAAI,CAAC,UAAU,CAAC;aAChB,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;aAC1D,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO;YACL,IAAI;YACJ,GAAG;YACH,IAAI;YACJ,GAAG;YACH,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK;YAC5E,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxC,iBAAiB,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,MAAM,CAAC;SACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAmB,CAAC,CAAC,WAAW,CAAC;SAC5C,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC1F,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU;QACV,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QACzB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM;QACN,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;QAC5B,gBAAgB;QAChB,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC;QAChD,UAAU;QACV,UAAU;QACV,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QACjE,QAAQ;QACR,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,EAAE;QACF,OAAO;QACP,MAAM;QACN,KAAK;QACL,QAAQ;QACR,cAAc,EAAE,UAAU,CAAC,KAAK;QAChC,oBAAoB,EAAE,UAAU,CAAC,MAAM;QACvC,IAAI;QACJ,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAC1C,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,GAA8B;IAC7C,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;SACf,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IACxB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,MAAgB;IACrC,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,CAAa;IAClC,MAAM,MAAM,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,CAAC,CAAC,kBAAkB,CAAC;SACpC,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,CAAa;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3E,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAAC,gIAAgI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACzJ,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/core/html/extract.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,21 @@
1
- import type { CheerioAPI } from 'cheerio';
2
- import type { StructuredDataError, StructuredDataItem } from '../types.js';
1
+ import type { StructuredDataError, StructuredDataItem } from "../types.js";
2
+ import type { Document } from "./dom.js";
3
+ /** A value JSON.parse returns: all that a JSON-LD block or a microdata item can hold. */
4
+ export type JsonValue = string | number | boolean | null | JsonValue[] | JsonObject;
5
+ /** A JSON-LD node or a microdata item: whatever properties the page gave it. */
6
+ export interface JsonObject {
7
+ [property: string]: JsonValue;
8
+ }
9
+ /** Whether a structured-data value is a string. */
10
+ export declare const isString: (value: JsonValue | undefined) => value is string;
11
+ /** Whether a structured-data value is an object with properties, rather than a list or a scalar. */
12
+ export declare const isJsonObject: (value: JsonValue | undefined) => value is JsonObject;
3
13
  export interface StructuredDataExtraction {
4
14
  items: StructuredDataItem[];
5
15
  errors: StructuredDataError[];
6
16
  }
7
- export declare function extractStructuredData($: CheerioAPI): StructuredDataExtraction;
8
- export declare function contextString(value: unknown): string | null;
9
- export declare function typesOf(value: unknown): string[];
10
17
  /** `https://schema.org/Article` -> `Article`, `schema:Article` -> `Article`. */
11
- export declare function shortType(type: string): string;
18
+ export declare const shortType: (type: string) => string;
19
+ export declare const contextString: (value: JsonValue | undefined) => string | null;
20
+ export declare const typesOf: (value: JsonValue | undefined) => string[];
21
+ export declare const extractStructuredData: (doc: Document) => StructuredDataExtraction;