dowwntime 1.4.0 → 1.5.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/index.d.mts CHANGED
@@ -42,7 +42,7 @@ type DowwntimeOptions = {
42
42
  /** Function to get example values for parameters */
43
43
  getExampleValue?: (paramName: string, path: string) => string | undefined;
44
44
  /** Function to determine status based on response */
45
- getStatus?: (statusCode: number, path: string, durationMs: number) => "up" | "down" | "degraded";
45
+ getStatus?: (statusCode: number, path: string, durationMs: number, body?: unknown) => "up" | "down" | "degraded";
46
46
  /** Request timeout in milliseconds */
47
47
  timeoutMs?: number;
48
48
  /** Maximum storage space usage in bytes */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/alert.ts","../src/index.ts"],"sourcesContent":[],"mappings":";KAEK,KAAA;EAAA,SAAK,EAAA,MAAA;EAOO,MAAA,EAAK,IAAA,GAAA,MAAA,GAAA,UAAA;EAEO,UAAA,EAAA,MAAA;EAAU,GAAA,EAAA,MAAA;CACR;AAAU,UAHxB,KAAA,CAGwB;EACN,IAAA,EAAA,MAAA;EAAU,IAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAFhB,KAEgB,EAAA,GAFN,OAEM,CAAA,IAAA,CAAA,GAAA,IAAA;EAAO,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EADrB,KACqB,EAAA,GADX,OACW,CAAA,IAAA,CAAA,GAAA,IAAA;EAGvC,UAAA,EAAA,CAAA,IAAa,EAAA,MAAA,EAAA,KAAA,EAHS,KAGT,EAAA,GAHmB,OAGnB,CAAA,IAAA,CAAA,GAAA,IAAA;;AAGe,cAH5B,YAAA,YAAwB,KAGI,CAAA;EAKN,IAAA,EAAA,MAAA;EAAQ,IAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EALV,KAKU,CAAA,EALF,OAKE,CAAA,IAAA,CAAA;EAOJ,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAPJ,KAOI,CAAA,EAPI,OAOJ,CAAA,IAAA,CAAA;EAAQ,UAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAR,KAAQ,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;;AAfL,cAuB7B,UAAA,YAAsB,KAvBO,CAAA;EAuB7B,IAAA,EAAA,MAAA;EAwBoB,QAAA,OAAA;EAAQ,WAAA,CAAA,UAAA,EAAA,MAAA;EAON,QAAA,gBAAA;EAAQ,IAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAPV,KAOU,CAAA,EAPF,OAOE,CAAA,IAAA,CAAA;EAOJ,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAPJ,KAOI,CAAA,EAPI,OAOJ,CAAA,IAAA,CAAA;EAAQ,UAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAR,KAAQ,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;;;;AA3E1C,KCaO,gBAAA,GDbF;EAOO;EAEY,cAAA,EAAA,MAAA;EAAU;EACR,WAAA,EAAA,MAAA;EAAU;EACN,WAAA,CAAA,EAAA,MAAA;EAAU;EAAO,OAAA,CAAA,EAAA,MAAA;EAGvC;EAGoB,OAAA,CAAA,EAAA,MAAA;EAAQ;EAKN,eAAA,CAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;EAAQ;EAOJ,SAAA,CAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,GAAA,IAAA,GAAA,MAAA,GAAA,UAAA;EAAQ;EAfV,SAAA,CAAA,EAAA,MAAA;EAAK;EAuB7B,kBAAW,CAAA,EAAA,MAAA;EAwBS;EAAQ,MAAA,ECxBhC,KDwBgC,EAAA;CAON;AAAQ,cC5B9B,YD4B8B,EAAA,CAAA,OAAA,EC5BL,gBD4BK,EAAA,GC5BW,gBD4BX;AAOJ,cC/B1B,GD+B0B,EAAA,CAAA,OAAA,EC/BJ,UD+BI,CAAA,OC/Bc,YD+Bd,CAAA,EAAA,GC/B2B,OD+B3B,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/alert.ts","../src/index.ts"],"sourcesContent":[],"mappings":";KAEK,KAAA;EAAA,SAAK,EAAA,MAAA;EAOO,MAAA,EAAK,IAAA,GAAA,MAAA,GAAA,UAAA;EAEO,UAAA,EAAA,MAAA;EAAU,GAAA,EAAA,MAAA;CACR;AAAU,UAHxB,KAAA,CAGwB;EACN,IAAA,EAAA,MAAA;EAAU,IAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAFhB,KAEgB,EAAA,GAFN,OAEM,CAAA,IAAA,CAAA,GAAA,IAAA;EAAO,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EADrB,KACqB,EAAA,GADX,OACW,CAAA,IAAA,CAAA,GAAA,IAAA;EAGvC,UAAA,EAAA,CAAA,IAAa,EAAA,MAAA,EAAA,KAAA,EAHS,KAGT,EAAA,GAHmB,OAGnB,CAAA,IAAA,CAAA,GAAA,IAAA;;AAGe,cAH5B,YAAA,YAAwB,KAGI,CAAA;EAKN,IAAA,EAAA,MAAA;EAAQ,IAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EALV,KAKU,CAAA,EALF,OAKE,CAAA,IAAA,CAAA;EAOJ,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAPJ,KAOI,CAAA,EAPI,OAOJ,CAAA,IAAA,CAAA;EAAQ,UAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAR,KAAQ,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;;AAfL,cAuB7B,UAAA,YAAsB,KAvBO,CAAA;EAuB7B,IAAA,EAAA,MAAA;EAwBoB,QAAA,OAAA;EAAQ,WAAA,CAAA,UAAA,EAAA,MAAA;EAON,QAAA,gBAAA;EAAQ,IAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAPV,KAOU,CAAA,EAPF,OAOE,CAAA,IAAA,CAAA;EAOJ,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAPJ,KAOI,CAAA,EAPI,OAOJ,CAAA,IAAA,CAAA;EAAQ,UAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAR,KAAQ,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;;;;AA3E1C,KCaO,gBAAA,GDbF;EAOO;EAEY,cAAA,EAAA,MAAA;EAAU;EACR,WAAA,EAAA,MAAA;EAAU;EACN,WAAA,CAAA,EAAA,MAAA;EAAU;EAAO,OAAA,CAAA,EAAA,MAAA;EAGvC;EAGoB,OAAA,CAAA,EAAA,MAAA;EAAQ;EAKN,eAAA,CAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;EAAQ;EAOJ,SAAA,CAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,GAAA,IAAA,GAAA,MAAA,GAAA,UAAA;EAAQ;EAfV,SAAA,CAAA,EAAA,MAAA;EAAK;EAuB7B,kBAAW,CAAA,EAAA,MAAA;EAwBS;EAAQ,MAAA,ECvBhC,KDuBgC,EAAA;CAON;AAAQ,cC3B9B,YD2B8B,EAAA,CAAA,OAAA,EC3BL,gBD2BK,EAAA,GC3BW,gBD2BX;AAOJ,cC9B1B,GD8B0B,EAAA,CAAA,OAAA,EC9BJ,UD8BI,CAAA,OC9Bc,YD8Bd,CAAA,EAAA,GC9B2B,OD8B3B,CAAA,IAAA,CAAA"}
package/dist/index.mjs CHANGED
@@ -14888,14 +14888,23 @@ const measureRequest = async (url$2, options) => {
14888
14888
  let tlsHandshakeAt;
14889
14889
  let firstByteAt;
14890
14890
  const req = ((typeof url$2 === "string" ? new URL(url$2) : url$2).protocol === "https:" ? https : http).request(url$2, options, (res) => {
14891
- res.on("data", () => {
14891
+ const chunks = [];
14892
+ res.on("data", (chunk) => {
14892
14893
  if (!firstByteAt) firstByteAt = Date.now();
14894
+ chunks.push(chunk);
14893
14895
  });
14894
14896
  res.on("end", () => {
14895
14897
  const durationMs = (firstByteAt ? firstByteAt - startAt : 0) - (tlsHandshakeAt ? tlsHandshakeAt - startAt : 0);
14898
+ let body;
14899
+ try {
14900
+ body = JSON.parse(Buffer.concat(chunks).toString());
14901
+ } catch {
14902
+ body = void 0;
14903
+ }
14896
14904
  resolve$1({
14897
14905
  statusCode: res.statusCode || 0,
14898
- durationMs: Math.max(0, durationMs)
14906
+ durationMs: Math.max(0, durationMs),
14907
+ body
14899
14908
  });
14900
14909
  });
14901
14910
  });
@@ -28412,6 +28421,7 @@ const run = async (options) => {
28412
28421
  return {
28413
28422
  statusCode: 0,
28414
28423
  durationMs: Date.now() - start,
28424
+ body: void 0,
28415
28425
  url: url$2.toString(),
28416
28426
  timestamp: start
28417
28427
  };
@@ -28426,7 +28436,8 @@ const run = async (options) => {
28426
28436
  const durationMs = Math.round(results.reduce((acc, curr) => acc + (curr?.durationMs ?? 0), 0) / results.length);
28427
28437
  let status = "down";
28428
28438
  const statusCode = Math.max(...results.map((r) => r?.statusCode ?? 0));
28429
- if (options.getStatus) status = options.getStatus(statusCode, path$2, durationMs);
28439
+ const lastBody = results.findLast((r) => r?.body !== void 0)?.body;
28440
+ if (options.getStatus) status = options.getStatus(statusCode, path$2, durationMs, lastBody);
28430
28441
  else status = statusCode >= 200 && statusCode < 300 ? "up" : "down";
28431
28442
  const measurement = {
28432
28443
  status,