reachy-reachable-url
Version:
Drop in replacement for reachable-url in deno env using reachy-url
65 lines (64 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: ()=>_default
});
const _url = require("url");
const _http = _interopRequireDefault(require("http"));
const _https = _interopRequireDefault(require("https"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const isReachableUrl = (url, timeout = 2000, requestOptions)=>{
return new Promise((resolve, reject)=>{
const { host , protocol , pathname } = (0, _url.parse)(url);
if (!host) {
reject({
statusCode: 500
});
}
const isHttps = protocol === "https:";
const options = {
host,
timeout,
method: "HEAD",
path: pathname,
port: isHttps ? 443 : 80,
...requestOptions
};
const network = isHttps ? _https.default : _http.default;
const req = network.request(options, (res)=>{
const { headers , } = res;
const statusCode = res.statusCode ?? 404;
const isStatusOk = statusCode < 400;
if (isStatusOk) {
return resolve({
statusCode: res.statusCode,
headers
});
}
resolve({
statusCode: 500
});
});
req.end();
req.on("timeout", ()=>{
resolve({
statusCode: 500
});
});
req.on("error", (err)=>{
resolve({
statusCode: 500
});
});
});
};
const _default = isReachableUrl;
isReachableUrl.isReachable = ({ statusCode })=>statusCode >= 200 && statusCode < 400;
module.exports = exports.default; /*#__PURE__*/ /*#__PURE__*/