@oneuptime/common 11.5.11 → 11.5.12

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.
Files changed (71) hide show
  1. package/Models/AnalyticsModels/NetworkFlow.ts +12 -1
  2. package/Server/API/StatusPageAPI.ts +14 -1
  3. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +0 -2
  4. package/Server/Services/IncidentService.ts +62 -67
  5. package/Server/Services/MonitorGroupService.ts +15 -2
  6. package/Server/Services/MonitorService.ts +91 -3
  7. package/Server/Services/MonitorStatusTimelineService.ts +285 -100
  8. package/Server/Services/StatusPageService.ts +59 -34
  9. package/Server/Utils/Monitor/MonitorResource.ts +43 -14
  10. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +32 -7
  11. package/Server/Utils/Monitor/MonitorStatusTimelineReconciler.ts +362 -0
  12. package/Tests/Server/Services/MonitorStatusTimelineService.test.ts +235 -0
  13. package/Tests/Server/Utils/Monitor/MonitorStatusTimelineReconciler.test.ts +555 -0
  14. package/Tests/Types/Database/CompareOperatorWireSerialization.test.ts +216 -0
  15. package/Tests/Types/Database/GreaterThan.test.ts +5 -1
  16. package/Tests/Types/Database/GreaterThanOrEqual.test.ts +5 -1
  17. package/Tests/Types/Database/GreaterThanOrNull.test.ts +24 -1
  18. package/Tests/Types/Database/LessThan.test.ts +5 -1
  19. package/Tests/Types/Database/LessThanOrEqual.test.ts +24 -1
  20. package/Tests/Types/Database/LessThanOrNull.test.ts +5 -1
  21. package/Tests/Utils/Uptime/UptimeUtil.test.ts +726 -0
  22. package/Types/BaseDatabase/GreaterThan.ts +8 -1
  23. package/Types/BaseDatabase/GreaterThanOrEqual.ts +8 -1
  24. package/Types/BaseDatabase/GreaterThanOrNull.ts +9 -1
  25. package/Types/BaseDatabase/LessThan.ts +8 -1
  26. package/Types/BaseDatabase/LessThanOrEqual.ts +9 -1
  27. package/Types/BaseDatabase/LessThanOrNull.ts +8 -1
  28. package/Utils/StatusPage/ResourceUptime.ts +11 -1
  29. package/Utils/Uptime/UptimeUtil.ts +142 -36
  30. package/build/dist/Models/AnalyticsModels/NetworkFlow.js +12 -1
  31. package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -1
  32. package/build/dist/Server/API/StatusPageAPI.js +12 -2
  33. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  34. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +0 -2
  35. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  36. package/build/dist/Server/Services/IncidentService.js +47 -56
  37. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  38. package/build/dist/Server/Services/MonitorGroupService.js +15 -2
  39. package/build/dist/Server/Services/MonitorGroupService.js.map +1 -1
  40. package/build/dist/Server/Services/MonitorService.js +66 -3
  41. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  42. package/build/dist/Server/Services/MonitorStatusTimelineService.js +244 -102
  43. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  44. package/build/dist/Server/Services/StatusPageService.js +57 -33
  45. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  46. package/build/dist/Server/Utils/Monitor/MonitorResource.js +34 -12
  47. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  48. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +25 -8
  49. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
  50. package/build/dist/Server/Utils/Monitor/MonitorStatusTimelineReconciler.js +268 -0
  51. package/build/dist/Server/Utils/Monitor/MonitorStatusTimelineReconciler.js.map +1 -0
  52. package/build/dist/Types/BaseDatabase/GreaterThan.js +8 -1
  53. package/build/dist/Types/BaseDatabase/GreaterThan.js.map +1 -1
  54. package/build/dist/Types/BaseDatabase/GreaterThanOrEqual.js +8 -1
  55. package/build/dist/Types/BaseDatabase/GreaterThanOrEqual.js.map +1 -1
  56. package/build/dist/Types/BaseDatabase/GreaterThanOrNull.js +9 -1
  57. package/build/dist/Types/BaseDatabase/GreaterThanOrNull.js.map +1 -1
  58. package/build/dist/Types/BaseDatabase/LessThan.js +8 -1
  59. package/build/dist/Types/BaseDatabase/LessThan.js.map +1 -1
  60. package/build/dist/Types/BaseDatabase/LessThanOrEqual.js +9 -1
  61. package/build/dist/Types/BaseDatabase/LessThanOrEqual.js.map +1 -1
  62. package/build/dist/Types/BaseDatabase/LessThanOrNull.js +8 -1
  63. package/build/dist/Types/BaseDatabase/LessThanOrNull.js.map +1 -1
  64. package/build/dist/Utils/StatusPage/ResourceUptime.js +4 -1
  65. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  66. package/build/dist/Utils/Uptime/UptimeUtil.js +86 -33
  67. package/build/dist/Utils/Uptime/UptimeUtil.js.map +1 -1
  68. package/package.json +1 -1
  69. package/Server/Infrastructure/Postgres/SchemaMigrations/1784401962564-MigrationName.ts +0 -101
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784401962564-MigrationName.js +0 -40
  71. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784401962564-MigrationName.js.map +0 -1
@@ -0,0 +1,268 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import PostgresAppInstance from "../../Infrastructure/PostgresDatabase";
11
+ import DatabaseNotConnectedException from "../../../Types/Exception/DatabaseNotConnectedException";
12
+ import ObjectID from "../../../Types/ObjectID";
13
+ import logger from "../Logger";
14
+ import CaptureSpan from "../Telemetry/CaptureSpan";
15
+ /*
16
+ * Bounded so a single run never loads a pathological monitor's whole backlog into memory.
17
+ * Production currently has ~67.5k stale rows, ~56k of them on ONE monitor.
18
+ */
19
+ export const DEFAULT_STALE_OPEN_ROW_BATCH_SIZE = 1000;
20
+ const MIN_BATCH_SIZE = 1;
21
+ const MAX_BATCH_SIZE = 10000;
22
+ /*
23
+ * Pure runaway guard. Every non-terminal round repairs exactly batchSize rows, so the loop
24
+ * is already guaranteed to terminate; this only bounds a run if that invariant is ever broken.
25
+ */
26
+ const MAX_ROUNDS = 100000;
27
+ export default class MonitorStatusTimelineReconciler {
28
+ /*
29
+ * Finds and repairs stale open rows. Idempotent: a second run over the same data repairs
30
+ * nothing, because a repaired row no longer matches endsAt IS NULL.
31
+ *
32
+ * Monitors are processed round-robin, one batch each per round, so a monitor with tens of
33
+ * thousands of stale rows cannot starve the rest of the fleet.
34
+ */
35
+ static async repairStaleOpenRows(options = {}) {
36
+ const batchSize = this.getBatchSize(options.batchSize);
37
+ const monitorIds = options.monitorId
38
+ ? [options.monitorId]
39
+ : await this.getMonitorIdsWithStaleOpenRows();
40
+ const result = {
41
+ scanned: 0,
42
+ repaired: 0,
43
+ monitorsWithStaleRows: monitorIds.length,
44
+ repairedMonitorIds: [],
45
+ failedMonitorIds: [],
46
+ };
47
+ if (monitorIds.length === 0) {
48
+ logger.debug("MonitorStatusTimelineReconciler: no monitors have stale open status timeline rows.");
49
+ return result;
50
+ }
51
+ logger.debug(`MonitorStatusTimelineReconciler: ${monitorIds.length} monitor(s) have stale open status timeline rows. Batch size ${batchSize}.`);
52
+ const repairedMonitorIds = new Set();
53
+ const failedMonitorIds = new Set();
54
+ let pendingMonitorIds = monitorIds;
55
+ let round = 0;
56
+ while (pendingMonitorIds.length > 0) {
57
+ round++;
58
+ if (round > MAX_ROUNDS) {
59
+ logger.error(`MonitorStatusTimelineReconciler: aborting after ${MAX_ROUNDS} rounds with ${pendingMonitorIds.length} monitor(s) still pending. This should be unreachable.`);
60
+ break;
61
+ }
62
+ const stillPendingMonitorIds = [];
63
+ for (const monitorId of pendingMonitorIds) {
64
+ /*
65
+ * Per-monitor try/catch, matching the sibling KeepCurrentStateConsistent jobs: one bad
66
+ * monitor is skipped for the remainder of the run instead of aborting it. It is not
67
+ * re-queued, so a monitor that fails deterministically cannot spin forever.
68
+ */
69
+ try {
70
+ const batch = await this.repairStaleOpenRowsBatch({
71
+ monitorId: monitorId,
72
+ batchSize: batchSize,
73
+ });
74
+ result.scanned += batch.scanned;
75
+ result.repaired += batch.repaired;
76
+ if (batch.repaired > 0) {
77
+ repairedMonitorIds.add(monitorId.toString());
78
+ }
79
+ /*
80
+ * A full batch of repairs means there may be more stale rows on this monitor. Anything
81
+ * short of a full batch means every open row on this monitor has now been examined -
82
+ * whatever is still open has no strictly later row and is therefore legitimate.
83
+ */
84
+ if (batch.repaired >= batchSize) {
85
+ stillPendingMonitorIds.push(monitorId);
86
+ }
87
+ }
88
+ catch (err) {
89
+ failedMonitorIds.add(monitorId.toString());
90
+ logger.error(`MonitorStatusTimelineReconciler: failed to repair stale open rows for monitor ${monitorId.toString()}.`);
91
+ logger.error(err);
92
+ continue;
93
+ }
94
+ }
95
+ pendingMonitorIds = stillPendingMonitorIds;
96
+ }
97
+ result.repairedMonitorIds = Array.from(repairedMonitorIds).map((id) => {
98
+ return new ObjectID(id);
99
+ });
100
+ result.failedMonitorIds = Array.from(failedMonitorIds).map((id) => {
101
+ return new ObjectID(id);
102
+ });
103
+ return result;
104
+ }
105
+ /*
106
+ * Counts stale open rows without repairing anything. Useful for telemetry and for asserting
107
+ * that a repair run actually converged.
108
+ */
109
+ static async countStaleOpenRows(options = {}) {
110
+ var _a;
111
+ const dataSource = this.getDataSource();
112
+ const parameters = [];
113
+ let monitorFilter = "";
114
+ if (options.monitorId) {
115
+ monitorFilter = `AND t."monitorId" = $1::uuid`;
116
+ parameters.push(options.monitorId.toString());
117
+ }
118
+ const sql = `
119
+ SELECT COUNT(*)::int AS "staleCount"
120
+ FROM "MonitorStatusTimeline" t
121
+ WHERE t."endsAt" IS NULL
122
+ AND t."deletedAt" IS NULL
123
+ AND t."startsAt" IS NOT NULL
124
+ ${monitorFilter}
125
+ AND EXISTS (
126
+ SELECT 1
127
+ FROM "MonitorStatusTimeline" n
128
+ WHERE n."monitorId" = t."monitorId"
129
+ AND n."deletedAt" IS NULL
130
+ AND n."startsAt" > t."startsAt"
131
+ )
132
+ `;
133
+ const rows = await dataSource.query(sql, parameters);
134
+ return ((_a = rows[0]) === null || _a === void 0 ? void 0 : _a.staleCount) || 0;
135
+ }
136
+ /*
137
+ * The set of monitors that currently have at least one stale open row.
138
+ *
139
+ * Note this is deliberately NOT "monitors with more than one open row". A monitor can have
140
+ * exactly one open row that is still stale, if the newest row on the monitor happens to be
141
+ * closed. Encoding the definition directly keeps both cases covered.
142
+ */
143
+ static async getMonitorIdsWithStaleOpenRows() {
144
+ const dataSource = this.getDataSource();
145
+ const sql = `
146
+ SELECT DISTINCT t."monitorId" AS "monitorId"
147
+ FROM "MonitorStatusTimeline" t
148
+ WHERE t."endsAt" IS NULL
149
+ AND t."deletedAt" IS NULL
150
+ AND t."startsAt" IS NOT NULL
151
+ AND EXISTS (
152
+ SELECT 1
153
+ FROM "MonitorStatusTimeline" n
154
+ WHERE n."monitorId" = t."monitorId"
155
+ AND n."deletedAt" IS NULL
156
+ AND n."startsAt" > t."startsAt"
157
+ )
158
+ ORDER BY t."monitorId" ASC
159
+ `;
160
+ const rows = await dataSource.query(sql);
161
+ return rows.map((row) => {
162
+ return new ObjectID(row.monitorId);
163
+ });
164
+ }
165
+ /*
166
+ * Repairs up to batchSize stale open rows on a single monitor, oldest first.
167
+ *
168
+ * Ordering is by startsAt, NEVER createdAt. createdAt is assigned DB-side by now() while
169
+ * startsAt is assigned by the worker pod's clock, so the two orderings genuinely disagree on
170
+ * real data. Two earlier migrations ordered by createdAt and produced wrong results.
171
+ */
172
+ static async repairStaleOpenRowsBatch(data) {
173
+ var _a, _b;
174
+ const dataSource = this.getDataSource();
175
+ /*
176
+ * candidates is materialised once (a data-modifying CTE forces materialisation), so the
177
+ * counts below and the UPDATE all see the same snapshot and one round trip yields both the
178
+ * scanned and the repaired count.
179
+ *
180
+ * nextStartsAt is NULL for an open row with no strictly later row. Those rows are the
181
+ * legitimate current-state row (or a startsAt tie at the head of the timeline) and are
182
+ * excluded from the UPDATE, so they stay open.
183
+ *
184
+ * The UPDATE re-checks m."endsAt" IS NULL even though candidates already filtered on it:
185
+ * the reconciler runs WITHOUT the per-monitor mutex, and under READ COMMITTED a live
186
+ * writer can close a candidate row between this statement's snapshot and the UPDATE
187
+ * taking the row lock. Postgres then re-evaluates only the UPDATE's own WHERE against
188
+ * the new row version (EvalPlanQual), so the openness check must live in the UPDATE
189
+ * itself - otherwise the reconciler would overwrite the endsAt the writer just committed
190
+ * with its stale snapshot-time value.
191
+ */
192
+ const sql = `
193
+ WITH candidates AS (
194
+ SELECT
195
+ t."_id" AS "_id",
196
+ (
197
+ SELECT MIN(n."startsAt")
198
+ FROM "MonitorStatusTimeline" n
199
+ WHERE n."monitorId" = t."monitorId"
200
+ AND n."deletedAt" IS NULL
201
+ AND n."startsAt" > t."startsAt"
202
+ ) AS "nextStartsAt"
203
+ FROM "MonitorStatusTimeline" t
204
+ WHERE t."monitorId" = $1::uuid
205
+ AND t."endsAt" IS NULL
206
+ AND t."deletedAt" IS NULL
207
+ AND t."startsAt" IS NOT NULL
208
+ ORDER BY t."startsAt" ASC
209
+ LIMIT $2
210
+ ),
211
+ repaired AS (
212
+ UPDATE "MonitorStatusTimeline" m
213
+ SET "endsAt" = c."nextStartsAt",
214
+ "updatedAt" = NOW(),
215
+ "version" = m."version" + 1
216
+ FROM candidates c
217
+ WHERE m."_id" = c."_id"
218
+ AND m."endsAt" IS NULL
219
+ AND c."nextStartsAt" IS NOT NULL
220
+ RETURNING m."_id"
221
+ )
222
+ SELECT
223
+ (SELECT COUNT(*) FROM candidates)::int AS "scanned",
224
+ (SELECT COUNT(*) FROM repaired)::int AS "repaired"
225
+ `;
226
+ const rows = await dataSource.query(sql, [
227
+ data.monitorId.toString(),
228
+ data.batchSize.toString(),
229
+ ]);
230
+ const scanned = ((_a = rows[0]) === null || _a === void 0 ? void 0 : _a.scanned) || 0;
231
+ const repaired = ((_b = rows[0]) === null || _b === void 0 ? void 0 : _b.repaired) || 0;
232
+ if (repaired > 0) {
233
+ logger.debug(`MonitorStatusTimelineReconciler: repaired ${repaired} of ${scanned} open row(s) examined on monitor ${data.monitorId.toString()}.`);
234
+ }
235
+ return {
236
+ scanned: scanned,
237
+ repaired: repaired,
238
+ };
239
+ }
240
+ static getBatchSize(batchSize) {
241
+ if (!batchSize ||
242
+ !Number.isFinite(batchSize) ||
243
+ batchSize < MIN_BATCH_SIZE) {
244
+ return DEFAULT_STALE_OPEN_ROW_BATCH_SIZE;
245
+ }
246
+ return Math.min(Math.floor(batchSize), MAX_BATCH_SIZE);
247
+ }
248
+ static getDataSource() {
249
+ const dataSource = PostgresAppInstance.getDataSource();
250
+ if (!dataSource) {
251
+ throw new DatabaseNotConnectedException();
252
+ }
253
+ return dataSource;
254
+ }
255
+ }
256
+ __decorate([
257
+ CaptureSpan(),
258
+ __metadata("design:type", Function),
259
+ __metadata("design:paramtypes", [Object]),
260
+ __metadata("design:returntype", Promise)
261
+ ], MonitorStatusTimelineReconciler, "repairStaleOpenRows", null);
262
+ __decorate([
263
+ CaptureSpan(),
264
+ __metadata("design:type", Function),
265
+ __metadata("design:paramtypes", [Object]),
266
+ __metadata("design:returntype", Promise)
267
+ ], MonitorStatusTimelineReconciler, "countStaleOpenRows", null);
268
+ //# sourceMappingURL=MonitorStatusTimelineReconciler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorStatusTimelineReconciler.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorStatusTimelineReconciler.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,14 @@ export default class GreaterThan extends CompareBase {
9
9
  toJSON() {
10
10
  return {
11
11
  _type: ObjectType.GreaterThan,
12
- value: this.toString(),
12
+ /*
13
+ * The RAW value is serialized (like InBetween), not toString():
14
+ * toString() collapses a Date to a local-timezone date-only string
15
+ * (asDateForDatabaseQuery), shifting Date bounds sent from the browser
16
+ * by up to a day. JSON.stringify emits a raw Date as its full ISO
17
+ * timestamp, which the server binds at full precision.
18
+ */
19
+ value: this.value,
13
20
  };
14
21
  }
15
22
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"GreaterThan.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/GreaterThan.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAmC,SAAQ,WAAc;IAC5E,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,WAAW;YAC7B,KAAK,EAAG,IAAuB,CAAC,QAAQ,EAAE;SAC3C,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"GreaterThan.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/GreaterThan.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAmC,SAAQ,WAAc;IAC5E,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,WAAW;YAC7B;;;;;;eAMG;YACH,KAAK,EAAG,IAAuB,CAAC,KAAK;SACtC,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -9,7 +9,14 @@ export default class GreaterThanOrEqual extends CompareBase {
9
9
  toJSON() {
10
10
  return {
11
11
  _type: ObjectType.GreaterThanOrEqual,
12
- value: this.toString(),
12
+ /*
13
+ * The RAW value is serialized (like InBetween), not toString():
14
+ * toString() collapses a Date to a local-timezone date-only string
15
+ * (asDateForDatabaseQuery), shifting Date bounds sent from the browser
16
+ * by up to a day. JSON.stringify emits a raw Date as its full ISO
17
+ * timestamp, which the server binds at full precision.
18
+ */
19
+ value: this.value,
13
20
  };
14
21
  }
15
22
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"GreaterThanOrEqual.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/GreaterThanOrEqual.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,kBAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,kBAAkB;YACpC,KAAK,EAAG,IAA8B,CAAC,QAAQ,EAAE;SAClD,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACpD,OAAO,IAAI,kBAAkB,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"GreaterThanOrEqual.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/GreaterThanOrEqual.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,kBAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,kBAAkB;YACpC;;;;;;eAMG;YACH,KAAK,EAAG,IAA8B,CAAC,KAAK;SAC7C,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACpD,OAAO,IAAI,kBAAkB,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -6,10 +6,18 @@ export default class GreaterThanOrNull extends CompareBase {
6
6
  constructor(value) {
7
7
  super(value);
8
8
  }
9
+ /*
10
+ * Serializes the RAW value (like InBetween does), not toString(): toString()
11
+ * collapses a Date to a date-only string in the LOCAL timezone
12
+ * (asDateForDatabaseQuery), so a Date bound would arrive at the server as
13
+ * midnight of the browser's calendar date and shift the query bound by up to
14
+ * a day. JSON.stringify turns a raw Date into its full ISO timestamp, which
15
+ * the server binds at full precision.
16
+ */
9
17
  toJSON() {
10
18
  return {
11
19
  _type: ObjectType.GreaterThanOrNull,
12
- value: this.toString(),
20
+ value: this.value,
13
21
  };
14
22
  }
15
23
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"GreaterThanOrNull.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/GreaterThanOrNull.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,iBAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,iBAAiB;YACnC,KAAK,EAAG,IAA6B,CAAC,QAAQ,EAAE;SACjD,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACnD,OAAO,IAAI,iBAAiB,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"GreaterThanOrNull.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/GreaterThanOrNull.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,iBAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACa,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,iBAAiB;YACnC,KAAK,EAAG,IAA6B,CAAC,KAAK;SAC5C,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACnD,OAAO,IAAI,iBAAiB,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -9,7 +9,14 @@ export default class LessThan extends CompareBase {
9
9
  toJSON() {
10
10
  return {
11
11
  _type: ObjectType.LessThan,
12
- value: this.toString(),
12
+ /*
13
+ * The RAW value is serialized (like InBetween), not toString():
14
+ * toString() collapses a Date to a local-timezone date-only string
15
+ * (asDateForDatabaseQuery), shifting Date bounds sent from the browser
16
+ * by up to a day. JSON.stringify emits a raw Date as its full ISO
17
+ * timestamp, which the server binds at full precision.
18
+ */
19
+ value: this.value,
13
20
  };
14
21
  }
15
22
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"LessThan.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/LessThan.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,QAAgC,SAAQ,WAAc;IACzE,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,QAAQ;YAC1B,KAAK,EAAG,IAAoB,CAAC,QAAQ,EAAE;SACxC,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"LessThan.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/LessThan.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,QAAgC,SAAQ,WAAc;IACzE,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,QAAQ;YAC1B;;;;;;eAMG;YACH,KAAK,EAAG,IAAoB,CAAC,KAAK;SACnC,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -6,10 +6,18 @@ export default class LessThanOrEqual extends CompareBase {
6
6
  constructor(value) {
7
7
  super(value);
8
8
  }
9
+ /*
10
+ * Serializes the RAW value (like InBetween does), not toString(): toString()
11
+ * collapses a Date to a date-only string in the LOCAL timezone
12
+ * (asDateForDatabaseQuery), so a bound of "now" would arrive at the server as
13
+ * midnight of the browser's calendar date and silently exclude every row from
14
+ * today. JSON.stringify turns a raw Date into its full ISO timestamp, which
15
+ * the server binds at full precision.
16
+ */
9
17
  toJSON() {
10
18
  return {
11
19
  _type: ObjectType.LessThanOrEqual,
12
- value: this.toString(),
20
+ value: this.value,
13
21
  };
14
22
  }
15
23
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"LessThanOrEqual.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/LessThanOrEqual.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,eAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,eAAe;YACjC,KAAK,EAAG,IAA2B,CAAC,QAAQ,EAAE;SAC/C,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;YACjD,OAAO,IAAI,eAAe,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"LessThanOrEqual.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/LessThanOrEqual.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,eAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACa,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,eAAe;YACjC,KAAK,EAAG,IAA2B,CAAC,KAAK;SAC1C,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;YACjD,OAAO,IAAI,eAAe,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -9,7 +9,14 @@ export default class LessThanOrNull extends CompareBase {
9
9
  toJSON() {
10
10
  return {
11
11
  _type: ObjectType.LessThanOrNull,
12
- value: this.toString(),
12
+ /*
13
+ * The RAW value is serialized (like InBetween), not toString():
14
+ * toString() collapses a Date to a local-timezone date-only string
15
+ * (asDateForDatabaseQuery), shifting Date bounds sent from the browser
16
+ * by up to a day. JSON.stringify emits a raw Date as its full ISO
17
+ * timestamp, which the server binds at full precision.
18
+ */
19
+ value: this.value,
13
20
  };
14
21
  }
15
22
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"LessThanOrNull.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/LessThanOrNull.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,cAAc;YAChC,KAAK,EAAG,IAA0B,CAAC,QAAQ,EAAE;SAC9C,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;YAChD,OAAO,IAAI,cAAc,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"LessThanOrNull.js","sourceRoot":"","sources":["../../../../Types/BaseDatabase/LessThanOrNull.ts"],"names":[],"mappings":"AAAA,OAAO,WAA4B,MAAM,yBAAyB,CAAC;AACnE,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAEnB,SAAQ,WAAc;IACtB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,cAAc;YAChC;;;;;;eAMG;YACH,KAAK,EAAG,IAA0B,CAAC,KAAK;SACzC,CAAC;IACJ,CAAC;IAEe,QAAQ;QACtB,IAAI,KAAK,GAAM,IAAI,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAM,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAU,QAAQ,CAC7B,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;YAChD,OAAO,IAAI,cAAc,CAAI,IAAI,CAAC,OAAO,CAAM,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -88,7 +88,7 @@ export default class StatusPageResourceUptimeUtil {
88
88
  monitorsInGroup: data.monitorsInGroup,
89
89
  });
90
90
  const downtimeMonitorStatuses = (data === null || data === void 0 ? void 0 : data.downtimeMonitorStatuses) || [];
91
- const uptimePercent = UptimeUtil.calculateUptimePercentage(monitorStatusTimelines, data.precision, downtimeMonitorStatuses);
91
+ const uptimePercent = UptimeUtil.calculateUptimePercentage(monitorStatusTimelines, data.precision, downtimeMonitorStatuses, data.uptimeWindow);
92
92
  return uptimePercent;
93
93
  }
94
94
  static calculateAvgUptimePercentOfStatusPageGroup(data) {
@@ -110,6 +110,7 @@ export default class StatusPageResourceUptimeUtil {
110
110
  precision: data.precision,
111
111
  downtimeMonitorStatuses: data.downtimeMonitorStatuses,
112
112
  monitorsInGroup: data.monitorsInGroup,
113
+ uptimeWindow: data.uptimeWindow,
113
114
  });
114
115
  if (calculateUptimePercentOfResource !== null) {
115
116
  uptimePercentPerResource.push(calculateUptimePercentOfResource);
@@ -161,6 +162,7 @@ export default class StatusPageResourceUptimeUtil {
161
162
  downtimeMonitorStatuses: data.downtimeMonitorStatuses,
162
163
  statusPageResources: data.statusPageResources,
163
164
  monitorsInGroup: data.monitorsInGroup,
165
+ uptimeWindow: data.uptimeWindow,
164
166
  });
165
167
  if (calculateAvgUptimePercentOfStatusPageGroup !== null) {
166
168
  allUptimePercent.push(calculateAvgUptimePercentOfStatusPageGroup);
@@ -177,6 +179,7 @@ export default class StatusPageResourceUptimeUtil {
177
179
  precision: data.precision,
178
180
  downtimeMonitorStatuses: data.downtimeMonitorStatuses,
179
181
  monitorsInGroup: data.monitorsInGroup,
182
+ uptimeWindow: data.uptimeWindow,
180
183
  });
181
184
  if (calculateUptimePercentOfResource !== null) {
182
185
  allUptimePercent.push(calculateUptimePercentOfResource);
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceUptime.js","sourceRoot":"","sources":["../../../../Utils/StatusPage/ResourceUptime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResourceUptime.js","sourceRoot":"","sources":["../../../../Utils/StatusPage/ResourceUptime.ts"],"names":[],"mappings":"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"}