@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;AAwID,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAkBnB;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"}
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 icon32 = document.querySelector('link[rel="icon"][sizes="32x32"]');
165
- const href = icon32?.getAttribute('href');
166
- if (href) {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@j0hanz/fetch-url-mcp",
3
- "version": "1.10.19",
3
+ "version": "1.10.20",
4
4
  "mcpName": "io.github.j0hanz/fetch-url-mcp",
5
5
  "description": "A web content fetcher MCP server that converts HTML to clean, AI and human readable markdown.",
6
6
  "type": "module",