dowwntime 1.1.0 → 1.2.0
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.
- package/dist/cli.mjs +50 -13
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +50 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from "module";
|
|
3
3
|
import { debug } from "util";
|
|
4
|
+
import http from "http";
|
|
4
5
|
import fs from "fs";
|
|
5
6
|
import path from "path";
|
|
6
7
|
|
|
@@ -14877,6 +14878,43 @@ function pThrottle({ limit, interval, strict, signal, onDelay, weight }) {
|
|
|
14877
14878
|
//#region src/debug.ts
|
|
14878
14879
|
const debug$1 = debug("dowwntime");
|
|
14879
14880
|
|
|
14881
|
+
//#endregion
|
|
14882
|
+
//#region src/request.ts
|
|
14883
|
+
/**
|
|
14884
|
+
* Measure detailed timing of an HTTP request
|
|
14885
|
+
*/
|
|
14886
|
+
const measureRequest = async (url$2, options) => {
|
|
14887
|
+
const startAt = Date.now();
|
|
14888
|
+
return await new Promise((resolve$1) => {
|
|
14889
|
+
let dnsLookupAt;
|
|
14890
|
+
let tcpConnectionAt;
|
|
14891
|
+
let tlsHandshakeAt;
|
|
14892
|
+
let statusCode;
|
|
14893
|
+
http.request(url$2, options, (res) => {
|
|
14894
|
+
statusCode = res.statusCode || 0;
|
|
14895
|
+
res.once("readable", () => {
|
|
14896
|
+
resolve$1({
|
|
14897
|
+
statusCode,
|
|
14898
|
+
dnsLookupMs: dnsLookupAt - startAt,
|
|
14899
|
+
tcpConnectionMs: tcpConnectionAt - dnsLookupAt,
|
|
14900
|
+
tlsHandshakeMs: tlsHandshakeAt - tcpConnectionAt,
|
|
14901
|
+
timeToFirstByteMs: Date.now() - tlsHandshakeAt
|
|
14902
|
+
});
|
|
14903
|
+
});
|
|
14904
|
+
}).on("socket", (socket) => {
|
|
14905
|
+
socket.on("lookup", () => {
|
|
14906
|
+
dnsLookupAt = Date.now();
|
|
14907
|
+
});
|
|
14908
|
+
socket.on("connect", () => {
|
|
14909
|
+
tcpConnectionAt = Date.now();
|
|
14910
|
+
});
|
|
14911
|
+
socket.on("secureConnect", () => {
|
|
14912
|
+
tlsHandshakeAt = Date.now();
|
|
14913
|
+
});
|
|
14914
|
+
});
|
|
14915
|
+
});
|
|
14916
|
+
};
|
|
14917
|
+
|
|
14880
14918
|
//#endregion
|
|
14881
14919
|
//#region node_modules/devalue/src/utils.js
|
|
14882
14920
|
/** @type {Record<string, string>} */
|
|
@@ -23773,7 +23811,7 @@ var require_form_data = /* @__PURE__ */ __commonJS({ "node_modules/form-data/lib
|
|
|
23773
23811
|
var CombinedStream = require_combined_stream();
|
|
23774
23812
|
var util$1 = __require("util");
|
|
23775
23813
|
var path$2 = __require("path");
|
|
23776
|
-
var http$
|
|
23814
|
+
var http$3 = __require("http");
|
|
23777
23815
|
var https$2 = __require("https");
|
|
23778
23816
|
var parseUrl$2 = __require("url").parse;
|
|
23779
23817
|
var fs$2 = __require("fs");
|
|
@@ -23967,7 +24005,7 @@ var require_form_data = /* @__PURE__ */ __commonJS({ "node_modules/form-data/lib
|
|
|
23967
24005
|
}
|
|
23968
24006
|
options.headers = this.getHeaders(params.headers);
|
|
23969
24007
|
if (options.protocol === "https:") request = https$2.request(options);
|
|
23970
|
-
else request = http$
|
|
24008
|
+
else request = http$3.request(options);
|
|
23971
24009
|
this.getLength(function(err, length) {
|
|
23972
24010
|
if (err && err !== "Unknown stream") {
|
|
23973
24011
|
this._error(err);
|
|
@@ -24093,7 +24131,7 @@ var require_debug = /* @__PURE__ */ __commonJS({ "node_modules/follow-redirects/
|
|
|
24093
24131
|
var require_follow_redirects = /* @__PURE__ */ __commonJS({ "node_modules/follow-redirects/index.js": ((exports, module) => {
|
|
24094
24132
|
var url$1 = __require("url");
|
|
24095
24133
|
var URL$1 = url$1.URL;
|
|
24096
|
-
var http$
|
|
24134
|
+
var http$2 = __require("http");
|
|
24097
24135
|
var https$1 = __require("https");
|
|
24098
24136
|
var Writable = __require("stream").Writable;
|
|
24099
24137
|
var assert = __require("assert");
|
|
@@ -24515,7 +24553,7 @@ var require_follow_redirects = /* @__PURE__ */ __commonJS({ "node_modules/follow
|
|
|
24515
24553
|
return URL$1 && value instanceof URL$1;
|
|
24516
24554
|
}
|
|
24517
24555
|
module.exports = wrap({
|
|
24518
|
-
http: http$
|
|
24556
|
+
http: http$2,
|
|
24519
24557
|
https: https$1
|
|
24520
24558
|
});
|
|
24521
24559
|
module.exports.wrap = wrap;
|
|
@@ -24529,7 +24567,7 @@ var require_axios = /* @__PURE__ */ __commonJS({ "node_modules/axios/dist/node/a
|
|
|
24529
24567
|
const crypto = __require("crypto");
|
|
24530
24568
|
const url = __require("url");
|
|
24531
24569
|
const proxyFromEnv = require_proxy_from_env();
|
|
24532
|
-
const http = __require("http");
|
|
24570
|
+
const http$1 = __require("http");
|
|
24533
24571
|
const https = __require("https");
|
|
24534
24572
|
const http2 = __require("http2");
|
|
24535
24573
|
const util = __require("util");
|
|
@@ -24544,7 +24582,7 @@ var require_axios = /* @__PURE__ */ __commonJS({ "node_modules/axios/dist/node/a
|
|
|
24544
24582
|
const crypto__default = /* @__PURE__ */ _interopDefaultLegacy(crypto);
|
|
24545
24583
|
const url__default = /* @__PURE__ */ _interopDefaultLegacy(url);
|
|
24546
24584
|
const proxyFromEnv__default = /* @__PURE__ */ _interopDefaultLegacy(proxyFromEnv);
|
|
24547
|
-
const http__default = /* @__PURE__ */ _interopDefaultLegacy(http);
|
|
24585
|
+
const http__default = /* @__PURE__ */ _interopDefaultLegacy(http$1);
|
|
24548
24586
|
const https__default = /* @__PURE__ */ _interopDefaultLegacy(https);
|
|
24549
24587
|
const http2__default = /* @__PURE__ */ _interopDefaultLegacy(http2);
|
|
24550
24588
|
const util__default = /* @__PURE__ */ _interopDefaultLegacy(util);
|
|
@@ -28315,18 +28353,17 @@ const run = async (options) => {
|
|
|
28315
28353
|
const measure = async (path$4) => {
|
|
28316
28354
|
const url$2 = fetchConfigurations.get(path$4);
|
|
28317
28355
|
if (!url$2) return;
|
|
28318
|
-
const start = Date.now();
|
|
28319
28356
|
let status = "down";
|
|
28320
28357
|
let durationMs;
|
|
28358
|
+
const start = Date.now();
|
|
28321
28359
|
try {
|
|
28322
|
-
const
|
|
28323
|
-
const response = await fetch(url$2, {
|
|
28360
|
+
const metrics = await measureRequest(url$2, {
|
|
28324
28361
|
method: "GET",
|
|
28325
|
-
|
|
28362
|
+
timeout: options.timeoutMs ?? 5e3
|
|
28326
28363
|
});
|
|
28327
|
-
durationMs =
|
|
28328
|
-
if (options.getStatus) status = options.getStatus(
|
|
28329
|
-
else status =
|
|
28364
|
+
durationMs = metrics.timeToFirstByteMs;
|
|
28365
|
+
if (options.getStatus) status = options.getStatus(metrics.statusCode, path$4, metrics.timeToFirstByteMs);
|
|
28366
|
+
else status = metrics.statusCode >= 200 && metrics.statusCode < 300 ? "up" : "down";
|
|
28330
28367
|
} catch (_error) {
|
|
28331
28368
|
durationMs = Date.now() - start;
|
|
28332
28369
|
status = "down";
|