UNPKG

link-exists

Version:

A super lightweight JavaScript / TypeScript library to check whether a given url is valid and exists or not.

100 lines (66 loc) 3.5 kB
![npm](https://img.shields.io/npm/v/link-exists?style=flat-square&color=success&logo=npm) ![npm](https://img.shields.io/npm/dm/link-exists?style=flat-square&color=success&logo=npm) ![GitHub](https://img.shields.io/github/license/stackblogger/link-exists?style=flat-square&logo=github&color=success) # link-exists A super lightweight JavaScript / TypeScript library to check whether a given url is valid and exists or not. ## Installation ```bash npm install link-exists ``` ## Features A super lightweight library to validate if a given url is valid or not. Some additional features are- - less than <b>1 kb</b> in size - additional configuration to validate as per custom requirement - supports node.js latest version - TypeScript and JavaScript support - built on ES6 modules - Jest test cases with <b>100% coverage</b> - Promise based result ## Usage **[Full documentation](https://opensource.stackblogger.com/link-exists/)** — API, config options, behavior notes, and more examples. ### TypeScript ```typescript import { linkExists } from 'link-exists'; await linkExists('https://stackblogger.com'); // true when any HTTP answer comes back // response: true await linkExists('www.stackblogger.com'); // false: no protocol in the string by default // response: false await linkExists('www.stackblogger.com', { ignoreProtocol: true }); // same host, protocol added // response: true await linkExists('https://example.com', { details: true }); // object, exists follows ok status // response: { exists: true, status: 200, url: 'https://example.com/' } await linkExists('stackblogger.com', { ignoreProtocol: true }); // allow link with no protocol // response: true await linkExists('https://example.com', { timeout: 5000 }); // stop after 5 seconds // response: true (or false on timeout / error) await linkExists('https://example.com', { method: 'GET' }); // use GET not HEAD // response: true await linkExists('https://example.com', { fallbackToGet: false }); // no GET retry after HEAD // response: true await linkExists('https://example.com', { details: true, timeout: 8000, method: 'HEAD' }); // mix of options // response: { exists: true, status: 200, url: 'https://example.com/' } ``` ### JavaScript ```javascript const { linkExists } = require('link-exists'); await linkExists('https://stackblogger.com'); // true when any HTTP answer comes back // response: true await linkExists('www.stackblogger.com'); // false: no protocol in the string by default // response: false await linkExists('www.stackblogger.com', { ignoreProtocol: true }); // same host, protocol added // response: true await linkExists('https://example.com', { details: true }); // object, exists follows ok status // response: { exists: true, status: 200, url: 'https://example.com/' } await linkExists('stackblogger.com', { ignoreProtocol: true }); // allow link with no protocol // response: true await linkExists('https://example.com', { timeout: 5000 }); // stop after 5 seconds // response: true (or false on timeout / error) await linkExists('https://example.com', { method: 'GET' }); // use GET not HEAD // response: true await linkExists('https://example.com', { fallbackToGet: false }); // no GET retry after HEAD // response: true await linkExists('https://example.com', { details: true, timeout: 8000, method: 'HEAD' }); // mix of options // response: { exists: true, status: 200, url: 'https://example.com/' } ``` ### License [MIT](https://choosealicense.com/licenses/mit/)