@j0hanz/fetch-url-mcp 1.10.19 → 1.10.20
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/transform/metadata.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAoCnE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAkBR;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/transform/metadata.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAoCnE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAkBR;AAgKD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAYnB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,GAAG,IAAI,CAY1B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAC/B,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAmBnB;AA2GD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAOpB;AACD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAuCxE;AAmBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAczD;AAaD,wBAAgB,mBAAmB,CACjC,QAAQ,CAAC,EAAE,aAAa,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAmBR"}
|
|
@@ -136,6 +136,13 @@ function resolveMetadataFromContext(ctx) {
|
|
|
136
136
|
// ---------------------------------------------------------------------------
|
|
137
137
|
// Favicon resolution
|
|
138
138
|
// ---------------------------------------------------------------------------
|
|
139
|
+
/** Ordered by preference: exact 32×32, SVG, any generic icon, legacy shortcut. */
|
|
140
|
+
const FAVICON_SELECTORS = [
|
|
141
|
+
'link[rel="icon"][sizes="32x32"]',
|
|
142
|
+
'link[rel="icon"][type="image/svg+xml"]',
|
|
143
|
+
'link[rel="icon"]',
|
|
144
|
+
'link[rel="shortcut icon"]',
|
|
145
|
+
];
|
|
139
146
|
function resolveFaviconUrl(href, baseUrl) {
|
|
140
147
|
const trimmed = href.trim();
|
|
141
148
|
if (!trimmed)
|
|
@@ -151,6 +158,19 @@ function resolveFaviconUrl(href, baseUrl) {
|
|
|
151
158
|
}
|
|
152
159
|
return resolved.toString();
|
|
153
160
|
}
|
|
161
|
+
function extractFavicon(document, baseUrl) {
|
|
162
|
+
for (const selector of FAVICON_SELECTORS) {
|
|
163
|
+
for (const el of document.querySelectorAll(selector)) {
|
|
164
|
+
const href = el.getAttribute('href');
|
|
165
|
+
if (href) {
|
|
166
|
+
const resolved = resolveFaviconUrl(href, baseUrl);
|
|
167
|
+
if (resolved)
|
|
168
|
+
return resolved;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
154
174
|
// ---------------------------------------------------------------------------
|
|
155
175
|
// Public interface
|
|
156
176
|
// ---------------------------------------------------------------------------
|
|
@@ -161,13 +181,9 @@ export function extractMetadata(document, baseUrl) {
|
|
|
161
181
|
metadata.title = normalizeDocumentTitle(metadata.title, baseUrl);
|
|
162
182
|
}
|
|
163
183
|
if (baseUrl) {
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const resolved = resolveFaviconUrl(href, baseUrl);
|
|
168
|
-
if (resolved)
|
|
169
|
-
metadata.favicon = resolved;
|
|
170
|
-
}
|
|
184
|
+
const favicon = extractFavicon(document, baseUrl);
|
|
185
|
+
if (favicon)
|
|
186
|
+
metadata.favicon = favicon;
|
|
171
187
|
}
|
|
172
188
|
return metadata;
|
|
173
189
|
}
|
package/package.json
CHANGED