@hasna/uptime 0.1.2 → 0.1.4

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/paths.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export declare function uptimeHome(): string;
2
2
  export declare function uptimeDbPath(): string;
3
+ export declare function uptimeHostedFallbackDbPath(): string;
3
4
  export declare function ensureUptimeHome(): string;
4
5
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC"}
package/dist/paths.js CHANGED
@@ -9,12 +9,16 @@ function uptimeHome() {
9
9
  function uptimeDbPath() {
10
10
  return process.env.HASNA_UPTIME_DB || join(uptimeHome(), "uptime.db");
11
11
  }
12
+ function uptimeHostedFallbackDbPath() {
13
+ return process.env.HASNA_UPTIME_HOSTED_FALLBACK_DB || join(uptimeHome(), "hosted-fallback", "uptime.db");
14
+ }
12
15
  function ensureUptimeHome() {
13
16
  const home = uptimeHome();
14
17
  mkdirSync(home, { recursive: true });
15
18
  return home;
16
19
  }
17
20
  export {
21
+ uptimeHostedFallbackDbPath,
18
22
  uptimeHome,
19
23
  uptimeDbPath,
20
24
  ensureUptimeHome
@@ -0,0 +1,13 @@
1
+ import type { ProbeResultSubmission } from "./types.js";
2
+ export interface ProbeKeyPair {
3
+ publicKeyPem: string;
4
+ privateKeyPem: string;
5
+ publicKeyFingerprint: string;
6
+ }
7
+ export type ProbeSigningInput = Omit<ProbeResultSubmission, "signature">;
8
+ export declare function generateProbeKeyPair(): ProbeKeyPair;
9
+ export declare function probePublicKeyFingerprint(publicKeyPem: string): string;
10
+ export declare function signProbeResult(input: ProbeSigningInput, privateKeyPem: string): string;
11
+ export declare function verifyProbeResultSignature(input: ProbeResultSubmission, publicKeyPem: string): boolean;
12
+ export declare function probeResultSigningPayload(input: ProbeSigningInput): string;
13
+ //# sourceMappingURL=probes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AAEzE,wBAAgB,oBAAoB,IAAI,YAAY,CASnD;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAWtG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAkB1E"}
package/dist/probes.js ADDED
@@ -0,0 +1,62 @@
1
+ // @bun
2
+ // src/probes.ts
3
+ import { createHash, generateKeyPairSync, sign, verify } from "crypto";
4
+ function generateProbeKeyPair() {
5
+ const { publicKey, privateKey } = generateKeyPairSync("ed25519");
6
+ const publicKeyPem = publicKey.export({ format: "pem", type: "spki" }).toString();
7
+ const privateKeyPem = privateKey.export({ format: "pem", type: "pkcs8" }).toString();
8
+ return {
9
+ publicKeyPem,
10
+ privateKeyPem,
11
+ publicKeyFingerprint: probePublicKeyFingerprint(publicKeyPem)
12
+ };
13
+ }
14
+ function probePublicKeyFingerprint(publicKeyPem) {
15
+ return createHash("sha256").update(publicKeyPem.trim()).digest("hex");
16
+ }
17
+ function signProbeResult(input, privateKeyPem) {
18
+ return sign(null, Buffer.from(probeResultSigningPayload(input)), privateKeyPem).toString("base64url");
19
+ }
20
+ function verifyProbeResultSignature(input, publicKeyPem) {
21
+ try {
22
+ return verify(null, Buffer.from(probeResultSigningPayload(input)), publicKeyPem, Buffer.from(input.signature, "base64url"));
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+ function probeResultSigningPayload(input) {
28
+ return stableJson({
29
+ version: "open-uptime.probe-result.v1",
30
+ probeId: input.probeId,
31
+ jobId: input.jobId,
32
+ scheduleSlot: input.scheduleSlot,
33
+ fencingToken: input.fencingToken,
34
+ monitorId: input.monitorId,
35
+ nonce: input.nonce,
36
+ checkedAt: input.checkedAt,
37
+ status: input.status,
38
+ latencyMs: input.latencyMs,
39
+ statusCode: input.statusCode ?? null,
40
+ error: input.error ?? null,
41
+ attemptCount: input.attemptCount ?? 1,
42
+ monitorRevision: input.monitorRevision,
43
+ evidenceSha256: createHash("sha256").update(stableJson(input.evidence ?? null)).digest("hex")
44
+ });
45
+ }
46
+ function stableJson(value) {
47
+ if (value === undefined)
48
+ return "null";
49
+ if (value === null || typeof value !== "object")
50
+ return JSON.stringify(value);
51
+ if (Array.isArray(value))
52
+ return `[${value.map(stableJson).join(",")}]`;
53
+ const entries = Object.entries(value).filter(([, entryValue]) => entryValue !== undefined).sort(([left], [right]) => left.localeCompare(right));
54
+ return `{${entries.map(([key, entryValue]) => `${JSON.stringify(key)}:${stableJson(entryValue)}`).join(",")}}`;
55
+ }
56
+ export {
57
+ verifyProbeResultSignature,
58
+ signProbeResult,
59
+ probeResultSigningPayload,
60
+ probePublicKeyFingerprint,
61
+ generateProbeKeyPair
62
+ };
package/dist/report.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { UptimeSummary } from "./types.js";
1
+ import type { ReportDeliveryRecord, UptimeSummary } from "./types.js";
2
2
  export interface BuildUptimeReportOptions {
3
3
  subject?: string;
4
4
  }
@@ -37,12 +37,7 @@ export interface UptimeLogsReportTarget {
37
37
  environment?: string;
38
38
  service?: string;
39
39
  }
40
- export interface UptimeReportDelivery {
41
- channel: "email" | "sms" | "logs";
42
- ok: boolean;
43
- status?: number;
44
- id?: string;
45
- error?: string;
40
+ export interface UptimeReportDelivery extends ReportDeliveryRecord {
46
41
  }
47
42
  export declare function buildUptimeReport(summary: UptimeSummary, options?: BuildUptimeReportOptions): UptimeReport;
48
43
  export declare function sendUptimeReport(summary: UptimeSummary, options?: SendUptimeReportOptions): Promise<UptimeReportDelivery[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,KAAK,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC1C,GAAG,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,wBAA6B,GAAG,YAAY,CAyB9G;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAyBrI"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,KAAK,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC1C,GAAG,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;CAAG;AAOrE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,wBAA6B,GAAG,YAAY,CAyB9G;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAyBrI"}
package/dist/report.js CHANGED
@@ -68,7 +68,7 @@ function renderMonitorLine(item) {
68
68
  return `- ${item.monitor.status.toUpperCase()} ${item.monitor.name} (${targetLabel(item)}): uptime ${uptime}, latency ${latency}${incident}`;
69
69
  }
70
70
  function targetLabel(item) {
71
- return item.monitor.kind === "http" ? item.monitor.url ?? "" : `${item.monitor.host}:${item.monitor.port}`;
71
+ return item.monitor.kind === "tcp" ? `${item.monitor.host}:${item.monitor.port}` : item.monitor.url ?? "";
72
72
  }
73
73
  function resolveEmailTarget(value) {
74
74
  const target = typeof value === "boolean" ? {} : value;
package/dist/service.d.ts CHANGED
@@ -1,15 +1,113 @@
1
- import { UptimeStore, type UptimeStoreOptions } from "./store.js";
1
+ import { type ImportApplyResult, type ImportPreview, type ImportRequest, type ImportRollbackResult } from "./imports.js";
2
+ import { type MonitorProvenance, type SaveImportBatchInput, type StoredImportBatch, type UpsertMonitorProvenanceInput, type UptimeBackup, type UptimeBackupCheck, type UptimeStoreOptions } from "./store.js";
2
3
  import { type BuildUptimeReportOptions, type SendUptimeReportOptions, type UptimeReport, type UptimeReportDelivery } from "./report.js";
3
- import type { CheckAttemptResult, CheckResult, CreateMonitorInput, Incident, ListResultsOptions, Monitor, SchedulerHandle, UpdateMonitorInput, UptimeSummary } from "./types.js";
4
+ import type { AuditEvent, CheckAttemptResult, CheckResult, CreateReportScheduleInput, CreateProbeInput, CreateProbeResult, CreateMonitorInput, Incident, ImportedMonitorInput, ImportedUpdateMonitorInput, ListAuditEventsOptions, ListReportRunsOptions, ListResultsOptions, Monitor, ProbeCheckJob, ProbeIdentity, ProbeResultSubmission, ProbeSubmissionReceipt, RecordAuditEventInput, ReportDeliveryRecord, ReportRun, ReportSchedule, SchedulerHandle, UpdateMonitorInput, UpdateReportScheduleInput, UptimeSummary } from "./types.js";
4
5
  export interface UptimeServiceOptions extends UptimeStoreOptions {
5
- store?: UptimeStore;
6
+ store?: UptimeStoreLike;
6
7
  checkRunner?: (monitor: Monitor) => Promise<CheckAttemptResult>;
7
8
  }
9
+ export interface UptimeStoreLike {
10
+ readonly dbPath: string;
11
+ readonly mode: "local" | "hosted";
12
+ readonly dataMode: "local-sqlite" | "hosted-local-sqlite";
13
+ close(): void;
14
+ createMonitor(input: ImportedMonitorInput, options?: {
15
+ allowBrowserPage?: boolean;
16
+ }): Monitor;
17
+ updateMonitor(idOrName: string, input: ImportedUpdateMonitorInput, options?: {
18
+ allowBrowserPage?: boolean;
19
+ }): Monitor;
20
+ deleteMonitor(idOrName: string): boolean;
21
+ listMonitors(options?: {
22
+ includeDisabled?: boolean;
23
+ }): Monitor[];
24
+ getMonitor(idOrName: string): Monitor | null;
25
+ getCheckResult?(id: string): CheckResult | null;
26
+ listResults(options?: ListResultsOptions): CheckResult[];
27
+ listIncidents(options?: {
28
+ status?: "open" | "closed";
29
+ monitorId?: string;
30
+ limit?: number;
31
+ }): Incident[];
32
+ summary(): UptimeSummary;
33
+ backup(destinationPath?: string): UptimeBackup;
34
+ verifyBackup(backupPath: string): UptimeBackupCheck;
35
+ acquireCheckLease(monitorId: string, owner: string, ttlMs: number): boolean;
36
+ releaseCheckLease(monitorId: string, owner: string): void;
37
+ recordCheckResult(input: Omit<CheckResult, "id" | "checkedAt"> & {
38
+ checkedAt?: string;
39
+ expectedMonitorRevision?: number;
40
+ }): CheckResult;
41
+ getProvenance(source: string, sourceId: string): MonitorProvenance | null;
42
+ upsertMonitorProvenance(input: UpsertMonitorProvenanceInput): MonitorProvenance;
43
+ saveImportBatch(input: SaveImportBatchInput): StoredImportBatch;
44
+ getImportBatch(batchId: string): StoredImportBatch | null;
45
+ markImportBatchRolledBack(batchId: string): StoredImportBatch;
46
+ createProbeIdentity?(input: {
47
+ name: string;
48
+ publicKeyPem: string;
49
+ publicKeyFingerprint: string;
50
+ enabled?: boolean;
51
+ }): ProbeIdentity;
52
+ listProbeIdentities?(options?: {
53
+ includeDisabled?: boolean;
54
+ }): ProbeIdentity[];
55
+ getProbeIdentity?(idOrName: string): ProbeIdentity | null;
56
+ updateProbeIdentity?(idOrName: string, input: {
57
+ enabled?: boolean;
58
+ name?: string;
59
+ }): ProbeIdentity;
60
+ touchProbeIdentity?(idOrName: string, seenAt?: string): void;
61
+ createProbeCheckJob?(input: {
62
+ monitorId: string;
63
+ scheduleSlot: string;
64
+ dueAt?: string;
65
+ }): ProbeCheckJob;
66
+ getProbeCheckJob?(id: string): ProbeCheckJob | null;
67
+ claimProbeCheckJob?(input: {
68
+ jobId: string;
69
+ probeId: string;
70
+ leaseTtlMs?: number;
71
+ }): ProbeCheckJob;
72
+ completeProbeCheckJob?(input: {
73
+ jobId: string;
74
+ probeId: string;
75
+ fencingToken: string;
76
+ checkResultId: string;
77
+ submittedAt?: string;
78
+ }): ProbeCheckJob;
79
+ getProbeSubmission?(probeId: string, nonce: string): ProbeSubmissionReceipt | null;
80
+ recordProbeSubmission?(input: Omit<ProbeSubmissionReceipt, "id" | "submittedAt"> & {
81
+ submittedAt?: string;
82
+ }): ProbeSubmissionReceipt;
83
+ createReportSchedule?(input: CreateReportScheduleInput): ReportSchedule;
84
+ listReportSchedules?(options?: {
85
+ includeDisabled?: boolean;
86
+ }): ReportSchedule[];
87
+ listDueReportSchedules?(nowIso?: string): ReportSchedule[];
88
+ getReportSchedule?(idOrName: string): ReportSchedule | null;
89
+ updateReportSchedule?(idOrName: string, input: UpdateReportScheduleInput): ReportSchedule;
90
+ deleteReportSchedule?(idOrName: string): boolean;
91
+ recordReportRun?(input: {
92
+ scheduleId?: string | null;
93
+ status: "success" | "failed";
94
+ startedAt?: string;
95
+ finishedAt?: string;
96
+ deliveries?: ReportDeliveryRecord[];
97
+ error?: string | null;
98
+ reportJson?: Record<string, unknown> | null;
99
+ }): ReportRun;
100
+ listReportRuns?(options?: ListReportRunsOptions): ReportRun[];
101
+ recordAuditEvent?(input: RecordAuditEventInput): AuditEvent;
102
+ listAuditEvents?(options?: ListAuditEventsOptions): AuditEvent[];
103
+ runInTransaction?<T>(fn: () => T): T;
104
+ }
8
105
  export declare class UptimeService {
9
- readonly store: UptimeStore;
106
+ readonly store: UptimeStoreLike;
10
107
  private readonly checkRunner;
11
108
  private readonly leaseOwner;
12
109
  private readonly inFlightChecks;
110
+ private readonly inFlightReportSchedules;
13
111
  constructor(options?: UptimeServiceOptions);
14
112
  close(): void;
15
113
  createMonitor(input: CreateMonitorInput): Monitor;
@@ -26,15 +124,65 @@ export declare class UptimeService {
26
124
  limit?: number;
27
125
  }): Incident[];
28
126
  summary(): UptimeSummary;
127
+ createProbe(input: CreateProbeInput): CreateProbeResult;
128
+ listProbes(options?: {
129
+ includeDisabled?: boolean;
130
+ }): ProbeIdentity[];
131
+ getProbe(idOrName: string): ProbeIdentity | null;
132
+ updateProbe(idOrName: string, input: {
133
+ enabled?: boolean;
134
+ name?: string;
135
+ }): ProbeIdentity;
136
+ createProbeCheckJob(input: {
137
+ monitorId: string;
138
+ scheduleSlot: string;
139
+ dueAt?: string;
140
+ }): ProbeCheckJob;
141
+ getProbeCheckJob(id: string): ProbeCheckJob | null;
142
+ claimProbeCheckJob(input: {
143
+ jobId: string;
144
+ probeId: string;
145
+ leaseTtlMs?: number;
146
+ }): ProbeCheckJob;
147
+ submitProbeResult(input: ProbeResultSubmission): {
148
+ result: CheckResult;
149
+ receipt: ProbeSubmissionReceipt;
150
+ };
151
+ previewImport(request: ImportRequest): ImportPreview;
152
+ applyImport(request: ImportRequest): ImportApplyResult;
153
+ rollbackImport(batchId: string): ImportRollbackResult;
154
+ backup(destinationPath?: string): UptimeBackup;
155
+ verifyBackup(backupPath: string): UptimeBackupCheck;
29
156
  buildReport(options?: BuildUptimeReportOptions): UptimeReport;
30
157
  sendReport(options?: SendUptimeReportOptions): Promise<UptimeReportDelivery[]>;
158
+ createReportSchedule(input: CreateReportScheduleInput): ReportSchedule;
159
+ listReportSchedules(options?: {
160
+ includeDisabled?: boolean;
161
+ }): ReportSchedule[];
162
+ getReportSchedule(idOrName: string): ReportSchedule | null;
163
+ updateReportSchedule(idOrName: string, input: UpdateReportScheduleInput): ReportSchedule;
164
+ deleteReportSchedule(idOrName: string): boolean;
165
+ listReportRuns(options?: ListReportRunsOptions): ReportRun[];
166
+ listAuditEvents(options?: ListAuditEventsOptions): AuditEvent[];
167
+ recordAuditEvent(input: RecordAuditEventInput): AuditEvent;
168
+ runReportSchedule(idOrName: string, options?: {
169
+ fetchImpl?: typeof fetch;
170
+ }): Promise<ReportRun>;
171
+ runDueReportSchedules(now?: Date, options?: {
172
+ fetchImpl?: typeof fetch;
173
+ }): Promise<ReportRun[]>;
31
174
  checkMonitor(idOrName: string): Promise<CheckResult>;
32
175
  checkAll(): Promise<CheckResult[]>;
33
176
  startScheduler(options?: {
34
177
  tickMs?: number;
178
+ reportFetchImpl?: typeof fetch;
35
179
  }): SchedulerHandle;
36
180
  runDueChecks(now?: Date): Promise<CheckResult[]>;
37
181
  private isDue;
182
+ private probeStore;
183
+ private reportStore;
184
+ private audit;
185
+ private submitProbeResultInTransaction;
38
186
  }
39
187
  export declare function createUptimeClient(options?: UptimeServiceOptions): UptimeService;
40
188
  export declare class MonitorCheckBusyError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAuC,KAAK,wBAAwB,EAAE,KAAK,uBAAuB,EAAE,KAAK,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC7K,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjE;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoD;IAChF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwD;IACnF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,OAAO,GAAE,oBAAyB;IAK9C,KAAK,IAAI,IAAI;IAIb,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO;IAIjD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO;IAInE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC,YAAY,CAAC,OAAO,GAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,EAAE;IAIpE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAI5C,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,EAAE;IAI5D,aAAa,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,QAAQ,EAAE;IAI3G,OAAO,IAAI,aAAa;IAIxB,WAAW,CAAC,OAAO,GAAE,wBAA6B,GAAG,YAAY;IAI3D,UAAU,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIlF,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkCpD,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IASxC,cAAc,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IAY5D,YAAY,CAAC,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBlE,OAAO,CAAC,KAAK;CAOd;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAEpF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}