pf

parse-favicon

🌲 Parse HTML to get icon information

Showing:

Popularity

Downloads/wk

41

GitHub Stars

21

Maintenance

Last Commit

7d ago

Contributors

2

Package

Dependencies

14

License

MIT

Type Definitions

Built-In

Tree-Shakeable

No?

Categories

Readme

parse-favicon npm GitHub license

Parse HTML to get icon information.

Install

npm install --save parse-favicon
# or
yarn add parse-favicon

Usage

import { parseFavicon } from 'parse-favicon'

const pageUrl = 'https://github.com'

parseFavicon(pageUrl, textFetcher, bufferFetcher).subscribe(icon => console.log(icon))

async function textFetcher(url) {
  return await fetch(resolveUrl(url, pageUrl)).then(res => res.text())
}

async function bufferFetcher(url) {
  return await fetch(resolveUrl(url, pageUrl)).then(res => res.arrayBuffer())
}

function resolveUrl(url, base) {
  return new URL(url, base).href
}

API

parseFavicon

parseFavicon(
  url: string
, textFetcher: TextFetcher
, bufferFetcher?: BufferFetcher
): Observable<Icon>

type TextFetcher = (url: string) => PromiseLike<string>
type BufferFetcher = (url: string) => PromiseLike<ArrayBuffer>

interface Icon {
  url: string
  reference: string
  type: null | string
  size: null | 'any' | Size | Size[]
}

interface Size {
  width: number
  height: number
}

parseFavicon accepts textFetcher and bufferFetcher for further fetching requests when parsing icons, bufferFetcher is optional. If you need actual icon sizes and type, should provide bufferFetcher.

References related to textFetcher:

  • <meta name="msapplication-config" content="path/to/ieconfig.xml">
  • <link rel="manifest" href="path/to/manifest.webmanifest">

References related to bufferFetcher:

  • /favicon.ico
  • /apple-touch-icon-57x57-precomposed.png
  • /apple-touch-icon-57x57.png
  • /apple-touch-icon-72x72-precomposed.png
  • /apple-touch-icon-72x72.png
  • /apple-touch-icon-114x114-precomposed.png
  • /apple-touch-icon-114x114.png
  • /apple-touch-icon-120x120-precomposed.png
  • /apple-touch-icon-120x120.png
  • /apple-touch-icon-144x144-precomposed.png
  • /apple-touch-icon-144x144.png
  • /apple-touch-icon-152x152-precomposed.png
  • /apple-touch-icon-152x152.png
  • /apple-touch-icon-180x180-precomposed.png
  • /apple-touch-icon-180x180.png
  • /apple-touch-icon-precomposed.png
  • /apple-touch-icon.png

Support references

  • <link rel="icon" href="path/to/icon.png">
  • <link rel="shortcut icon" href="path/to/icon.ico">
  • <link rel="apple-touch-icon" href="path/to/icon.png">
  • <link rel="apple-touch-icon-precomposed" href="path/to/icon.png">
  • <link rel="manifest" href="path/to/manifest.webmanifest">
  • <link rel="fluid-icon" href="path/to/icon.png">
  • <link rel="mask-icon" href="path/to/icon.svg">
  • <meta name="msapplication-TileImage" content="path/to/icon.png">
  • <meta name="msapplication-config" content="path/to/ieconfig.xml">
  • <meta name="msapplication-square70x70logo" content="path/to/icon.png">
  • <meta name="msapplication-square150x150logo" content="path/to/icon.png">
  • <meta name="msapplication-square310x310logo" content="path/to/icon.png">
  • <meta name="msapplication-wide310x150logo" content="path/to/icon.png">
  • /favicon.ico
  • /apple-touch-icon-57x57-precomposed.png
  • /apple-touch-icon-57x57.png
  • /apple-touch-icon-72x72-precomposed.png
  • /apple-touch-icon-72x72.png
  • /apple-touch-icon-114x114-precomposed.png
  • /apple-touch-icon-114x114.png
  • /apple-touch-icon-120x120-precomposed.png
  • /apple-touch-icon-120x120.png
  • /apple-touch-icon-144x144-precomposed.png
  • /apple-touch-icon-144x144.png
  • /apple-touch-icon-152x152-precomposed.png
  • /apple-touch-icon-152x152.png
  • /apple-touch-icon-180x180-precomposed.png
  • /apple-touch-icon-180x180.png
  • /apple-touch-icon-precomposed.png
  • /apple-touch-icon.png

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100