dowwntime 1.1.0 → 1.2.1
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 +59 -14
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +58 -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
|
|
|
@@ -14671,7 +14672,7 @@ var require_dayjs_min = /* @__PURE__ */ __commonJS({ "node_modules/dayjs/dayjs.m
|
|
|
14671
14672
|
|
|
14672
14673
|
//#endregion
|
|
14673
14674
|
//#region node_modules/p-throttle/index.js
|
|
14674
|
-
var import_dayjs_min = /* @__PURE__ */ __toESM(require_dayjs_min()
|
|
14675
|
+
var import_dayjs_min = /* @__PURE__ */ __toESM(require_dayjs_min());
|
|
14675
14676
|
const states = /* @__PURE__ */ new WeakMap();
|
|
14676
14677
|
const signalThrottleds = /* @__PURE__ */ new WeakMap();
|
|
14677
14678
|
const finalizationRegistry = new FinalizationRegistry(({ signalWeakRef, weakReference }) => {
|
|
@@ -14877,6 +14878,51 @@ 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 firstByteAt;
|
|
14890
|
+
let endAt;
|
|
14891
|
+
let dnsLookupAt;
|
|
14892
|
+
let tcpConnectionAt;
|
|
14893
|
+
let tlsHandshakeAt;
|
|
14894
|
+
let statusCode;
|
|
14895
|
+
http.request(url$2, options, (res) => {
|
|
14896
|
+
statusCode = res.statusCode || 0;
|
|
14897
|
+
res.once("readable", () => {
|
|
14898
|
+
firstByteAt = Date.now();
|
|
14899
|
+
});
|
|
14900
|
+
res.on("end", () => {
|
|
14901
|
+
endAt = Date.now();
|
|
14902
|
+
resolve$1({
|
|
14903
|
+
statusCode,
|
|
14904
|
+
dnsLookupMs: dnsLookupAt - startAt,
|
|
14905
|
+
tcpConnectionMs: tcpConnectionAt - dnsLookupAt,
|
|
14906
|
+
tlsHandshakeMs: tlsHandshakeAt - tcpConnectionAt,
|
|
14907
|
+
timeToFirstByteMs: firstByteAt - tlsHandshakeAt,
|
|
14908
|
+
contentTransferMs: endAt - firstByteAt,
|
|
14909
|
+
totalTimeMs: endAt - startAt
|
|
14910
|
+
});
|
|
14911
|
+
});
|
|
14912
|
+
}).on("socket", (socket) => {
|
|
14913
|
+
socket.on("lookup", () => {
|
|
14914
|
+
dnsLookupAt = Date.now();
|
|
14915
|
+
});
|
|
14916
|
+
socket.on("connect", () => {
|
|
14917
|
+
tcpConnectionAt = Date.now();
|
|
14918
|
+
});
|
|
14919
|
+
socket.on("secureConnect", () => {
|
|
14920
|
+
tlsHandshakeAt = Date.now();
|
|
14921
|
+
});
|
|
14922
|
+
});
|
|
14923
|
+
});
|
|
14924
|
+
};
|
|
14925
|
+
|
|
14880
14926
|
//#endregion
|
|
14881
14927
|
//#region node_modules/devalue/src/utils.js
|
|
14882
14928
|
/** @type {Record<string, string>} */
|
|
@@ -23773,7 +23819,7 @@ var require_form_data = /* @__PURE__ */ __commonJS({ "node_modules/form-data/lib
|
|
|
23773
23819
|
var CombinedStream = require_combined_stream();
|
|
23774
23820
|
var util$1 = __require("util");
|
|
23775
23821
|
var path$2 = __require("path");
|
|
23776
|
-
var http$
|
|
23822
|
+
var http$3 = __require("http");
|
|
23777
23823
|
var https$2 = __require("https");
|
|
23778
23824
|
var parseUrl$2 = __require("url").parse;
|
|
23779
23825
|
var fs$2 = __require("fs");
|
|
@@ -23967,7 +24013,7 @@ var require_form_data = /* @__PURE__ */ __commonJS({ "node_modules/form-data/lib
|
|
|
23967
24013
|
}
|
|
23968
24014
|
options.headers = this.getHeaders(params.headers);
|
|
23969
24015
|
if (options.protocol === "https:") request = https$2.request(options);
|
|
23970
|
-
else request = http$
|
|
24016
|
+
else request = http$3.request(options);
|
|
23971
24017
|
this.getLength(function(err, length) {
|
|
23972
24018
|
if (err && err !== "Unknown stream") {
|
|
23973
24019
|
this._error(err);
|
|
@@ -24093,7 +24139,7 @@ var require_debug = /* @__PURE__ */ __commonJS({ "node_modules/follow-redirects/
|
|
|
24093
24139
|
var require_follow_redirects = /* @__PURE__ */ __commonJS({ "node_modules/follow-redirects/index.js": ((exports, module) => {
|
|
24094
24140
|
var url$1 = __require("url");
|
|
24095
24141
|
var URL$1 = url$1.URL;
|
|
24096
|
-
var http$
|
|
24142
|
+
var http$2 = __require("http");
|
|
24097
24143
|
var https$1 = __require("https");
|
|
24098
24144
|
var Writable = __require("stream").Writable;
|
|
24099
24145
|
var assert = __require("assert");
|
|
@@ -24515,7 +24561,7 @@ var require_follow_redirects = /* @__PURE__ */ __commonJS({ "node_modules/follow
|
|
|
24515
24561
|
return URL$1 && value instanceof URL$1;
|
|
24516
24562
|
}
|
|
24517
24563
|
module.exports = wrap({
|
|
24518
|
-
http: http$
|
|
24564
|
+
http: http$2,
|
|
24519
24565
|
https: https$1
|
|
24520
24566
|
});
|
|
24521
24567
|
module.exports.wrap = wrap;
|
|
@@ -24529,7 +24575,7 @@ var require_axios = /* @__PURE__ */ __commonJS({ "node_modules/axios/dist/node/a
|
|
|
24529
24575
|
const crypto = __require("crypto");
|
|
24530
24576
|
const url = __require("url");
|
|
24531
24577
|
const proxyFromEnv = require_proxy_from_env();
|
|
24532
|
-
const http = __require("http");
|
|
24578
|
+
const http$1 = __require("http");
|
|
24533
24579
|
const https = __require("https");
|
|
24534
24580
|
const http2 = __require("http2");
|
|
24535
24581
|
const util = __require("util");
|
|
@@ -24544,7 +24590,7 @@ var require_axios = /* @__PURE__ */ __commonJS({ "node_modules/axios/dist/node/a
|
|
|
24544
24590
|
const crypto__default = /* @__PURE__ */ _interopDefaultLegacy(crypto);
|
|
24545
24591
|
const url__default = /* @__PURE__ */ _interopDefaultLegacy(url);
|
|
24546
24592
|
const proxyFromEnv__default = /* @__PURE__ */ _interopDefaultLegacy(proxyFromEnv);
|
|
24547
|
-
const http__default = /* @__PURE__ */ _interopDefaultLegacy(http);
|
|
24593
|
+
const http__default = /* @__PURE__ */ _interopDefaultLegacy(http$1);
|
|
24548
24594
|
const https__default = /* @__PURE__ */ _interopDefaultLegacy(https);
|
|
24549
24595
|
const http2__default = /* @__PURE__ */ _interopDefaultLegacy(http2);
|
|
24550
24596
|
const util__default = /* @__PURE__ */ _interopDefaultLegacy(util);
|
|
@@ -28315,18 +28361,17 @@ const run = async (options) => {
|
|
|
28315
28361
|
const measure = async (path$4) => {
|
|
28316
28362
|
const url$2 = fetchConfigurations.get(path$4);
|
|
28317
28363
|
if (!url$2) return;
|
|
28318
|
-
const start = Date.now();
|
|
28319
28364
|
let status = "down";
|
|
28320
28365
|
let durationMs;
|
|
28366
|
+
const start = Date.now();
|
|
28321
28367
|
try {
|
|
28322
|
-
const
|
|
28323
|
-
const response = await fetch(url$2, {
|
|
28368
|
+
const metrics = await measureRequest(url$2, {
|
|
28324
28369
|
method: "GET",
|
|
28325
|
-
|
|
28370
|
+
timeout: options.timeoutMs ?? 5e3
|
|
28326
28371
|
});
|
|
28327
|
-
durationMs =
|
|
28328
|
-
if (options.getStatus) status = options.getStatus(
|
|
28329
|
-
else status =
|
|
28372
|
+
durationMs = metrics.timeToFirstByteMs;
|
|
28373
|
+
if (options.getStatus) status = options.getStatus(metrics.statusCode, path$4, metrics.contentTransferMs);
|
|
28374
|
+
else status = metrics.statusCode >= 200 && metrics.statusCode < 300 ? "up" : "down";
|
|
28330
28375
|
} catch (_error) {
|
|
28331
28376
|
durationMs = Date.now() - start;
|
|
28332
28377
|
status = "down";
|