@polishd/next 0.2.2-dev.4 → 0.2.3-dev.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/AGENTS.md +1 -1
- package/CHANGELOG.md +102 -12
- package/README.md +29 -0
- package/bin/doctor.mjs +8 -1
- package/dist/client/init.d.ts.map +1 -1
- package/dist/client/init.js +39 -8
- package/dist/client/init.js.map +1 -1
- package/dist/client/script-provenance.d.ts +21 -0
- package/dist/client/script-provenance.d.ts.map +1 -0
- package/dist/client/script-provenance.js +127 -0
- package/dist/client/script-provenance.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard/design.d.ts +3 -1
- package/dist/dashboard/design.d.ts.map +1 -1
- package/dist/dashboard/design.js +3 -2
- package/dist/dashboard/design.js.map +1 -1
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +23 -18
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/snapshot-actions.d.ts +16 -0
- package/dist/dashboard/snapshot-actions.d.ts.map +1 -0
- package/dist/dashboard/snapshot-actions.js +79 -0
- package/dist/dashboard/snapshot-actions.js.map +1 -0
- package/dist/dashboard/snapshots.d.ts +6 -0
- package/dist/dashboard/snapshots.d.ts.map +1 -0
- package/dist/dashboard/snapshots.js +86 -0
- package/dist/dashboard/snapshots.js.map +1 -0
- package/dist/dashboard/telemetry.d.ts.map +1 -1
- package/dist/dashboard/telemetry.js +20 -3
- package/dist/dashboard/telemetry.js.map +1 -1
- package/dist/dashboard.css +77 -0
- package/dist/server/ingest.d.ts +2 -5
- package/dist/server/ingest.d.ts.map +1 -1
- package/dist/server/ingest.js +40 -10
- package/dist/server/ingest.js.map +1 -1
- package/dist/server/queries.d.ts +18 -11
- package/dist/server/queries.d.ts.map +1 -1
- package/dist/server/queries.js +64 -24
- package/dist/server/queries.js.map +1 -1
- package/dist/server/snapshots.d.ts +65 -0
- package/dist/server/snapshots.d.ts.map +1 -0
- package/dist/server/snapshots.js +194 -0
- package/dist/server/snapshots.js.map +1 -0
- package/dist/shared/capture-status.d.ts +99 -0
- package/dist/shared/capture-status.d.ts.map +1 -0
- package/dist/shared/capture-status.js +133 -0
- package/dist/shared/capture-status.js.map +1 -0
- package/dist/shared/error-noise.d.ts +39 -0
- package/dist/shared/error-noise.d.ts.map +1 -0
- package/dist/shared/error-noise.js +101 -0
- package/dist/shared/error-noise.js.map +1 -0
- package/docs/SETUP.md +25 -0
- package/package.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"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"}
|
package/dist/dashboard.css
CHANGED
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
--container-md: 28rem;
|
|
100
100
|
--container-lg: 32rem;
|
|
101
101
|
--container-xl: 36rem;
|
|
102
|
+
--container-3xl: 48rem;
|
|
102
103
|
--container-5xl: 64rem;
|
|
103
104
|
--container-6xl: 72rem;
|
|
104
105
|
--font-weight-normal: 400;
|
|
@@ -551,6 +552,10 @@
|
|
|
551
552
|
display: table;
|
|
552
553
|
}
|
|
553
554
|
|
|
555
|
+
.polishd-root.polishd-root .aspect-\[4\/5\] {
|
|
556
|
+
aspect-ratio: 4 / 5;
|
|
557
|
+
}
|
|
558
|
+
|
|
554
559
|
.polishd-root.polishd-root .h-1 {
|
|
555
560
|
height: var(--spacing);
|
|
556
561
|
}
|
|
@@ -775,6 +780,10 @@
|
|
|
775
780
|
width: 1px;
|
|
776
781
|
}
|
|
777
782
|
|
|
783
|
+
.polishd-root.polishd-root .max-w-3xl {
|
|
784
|
+
max-width: var(--container-3xl);
|
|
785
|
+
}
|
|
786
|
+
|
|
778
787
|
.polishd-root.polishd-root .max-w-5xl {
|
|
779
788
|
max-width: var(--container-5xl);
|
|
780
789
|
}
|
|
@@ -952,6 +961,10 @@
|
|
|
952
961
|
cursor: pointer;
|
|
953
962
|
}
|
|
954
963
|
|
|
964
|
+
.polishd-root.polishd-root .cursor-zoom-out {
|
|
965
|
+
cursor: zoom-out;
|
|
966
|
+
}
|
|
967
|
+
|
|
955
968
|
.polishd-root.polishd-root .resize {
|
|
956
969
|
resize: both;
|
|
957
970
|
}
|
|
@@ -1240,6 +1253,10 @@
|
|
|
1240
1253
|
border-color: #2e2e2e;
|
|
1241
1254
|
}
|
|
1242
1255
|
|
|
1256
|
+
.polishd-root.polishd-root .border-\[\#333\] {
|
|
1257
|
+
border-color: #333;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1243
1260
|
.polishd-root.polishd-root .border-\[\#444\] {
|
|
1244
1261
|
border-color: #444;
|
|
1245
1262
|
}
|
|
@@ -1308,6 +1325,10 @@
|
|
|
1308
1325
|
background-color: #0d0d0d;
|
|
1309
1326
|
}
|
|
1310
1327
|
|
|
1328
|
+
.polishd-root.polishd-root .bg-\[\#0f0f0f\] {
|
|
1329
|
+
background-color: #0f0f0f;
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1311
1332
|
.polishd-root.polishd-root .bg-\[\#1a1a1a\] {
|
|
1312
1333
|
background-color: #1a1a1a;
|
|
1313
1334
|
}
|
|
@@ -1316,6 +1337,10 @@
|
|
|
1316
1337
|
background-color: #1c1c1c;
|
|
1317
1338
|
}
|
|
1318
1339
|
|
|
1340
|
+
.polishd-root.polishd-root .bg-\[\#1e1e1e\] {
|
|
1341
|
+
background-color: #1e1e1e;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1319
1344
|
.polishd-root.polishd-root .bg-\[\#2e2e2e\] {
|
|
1320
1345
|
background-color: #2e2e2e;
|
|
1321
1346
|
}
|
|
@@ -1444,6 +1469,16 @@
|
|
|
1444
1469
|
}
|
|
1445
1470
|
}
|
|
1446
1471
|
|
|
1472
|
+
.polishd-root.polishd-root .bg-black\/85 {
|
|
1473
|
+
background-color: #000000d9;
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1477
|
+
.polishd-root.polishd-root .bg-black\/85 {
|
|
1478
|
+
background-color: color-mix(in oklab, var(--color-black) 85%, transparent);
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1447
1482
|
.polishd-root.polishd-root .bg-blue-500 {
|
|
1448
1483
|
background-color: var(--color-blue-500);
|
|
1449
1484
|
}
|
|
@@ -1528,6 +1563,14 @@
|
|
|
1528
1563
|
background-color: var(--color-white);
|
|
1529
1564
|
}
|
|
1530
1565
|
|
|
1566
|
+
.polishd-root.polishd-root .object-cover {
|
|
1567
|
+
object-fit: cover;
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
.polishd-root.polishd-root .object-top {
|
|
1571
|
+
object-position: top;
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1531
1574
|
.polishd-root.polishd-root .p-4 {
|
|
1532
1575
|
padding: calc(var(--spacing) * 4);
|
|
1533
1576
|
}
|
|
@@ -1536,6 +1579,10 @@
|
|
|
1536
1579
|
padding: calc(var(--spacing) * 5);
|
|
1537
1580
|
}
|
|
1538
1581
|
|
|
1582
|
+
.polishd-root.polishd-root .p-6 {
|
|
1583
|
+
padding: calc(var(--spacing) * 6);
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1539
1586
|
.polishd-root.polishd-root .px-1 {
|
|
1540
1587
|
padding-inline: var(--spacing);
|
|
1541
1588
|
}
|
|
@@ -2052,6 +2099,10 @@
|
|
|
2052
2099
|
color: #7fb2e5;
|
|
2053
2100
|
}
|
|
2054
2101
|
|
|
2102
|
+
.polishd-root.polishd-root .text-\[\#8a6a6a\] {
|
|
2103
|
+
color: #8a6a6a;
|
|
2104
|
+
}
|
|
2105
|
+
|
|
2055
2106
|
.polishd-root.polishd-root .text-\[\#444\] {
|
|
2056
2107
|
color: #444;
|
|
2057
2108
|
}
|
|
@@ -2108,6 +2159,16 @@
|
|
|
2108
2159
|
color: var(--color-amber-400);
|
|
2109
2160
|
}
|
|
2110
2161
|
|
|
2162
|
+
.polishd-root.polishd-root .text-amber-400\/80 {
|
|
2163
|
+
color: #fcbb00cc;
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2167
|
+
.polishd-root.polishd-root .text-amber-400\/80 {
|
|
2168
|
+
color: color-mix(in oklab, var(--color-amber-400) 80%, transparent);
|
|
2169
|
+
}
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2111
2172
|
.polishd-root.polishd-root .text-black {
|
|
2112
2173
|
color: var(--color-black);
|
|
2113
2174
|
}
|
|
@@ -2376,6 +2437,10 @@
|
|
|
2376
2437
|
color: #888;
|
|
2377
2438
|
}
|
|
2378
2439
|
|
|
2440
|
+
.polishd-root.polishd-root .hover\:text-\[\#aaa\]:hover {
|
|
2441
|
+
color: #aaa;
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2379
2444
|
.polishd-root.polishd-root .hover\:text-\[\#ccc\]:hover {
|
|
2380
2445
|
color: #ccc;
|
|
2381
2446
|
}
|
|
@@ -2406,6 +2471,10 @@
|
|
|
2406
2471
|
border-color: #777;
|
|
2407
2472
|
}
|
|
2408
2473
|
|
|
2474
|
+
.polishd-root.polishd-root .disabled\:cursor-default:disabled {
|
|
2475
|
+
cursor: default;
|
|
2476
|
+
}
|
|
2477
|
+
|
|
2409
2478
|
.polishd-root.polishd-root .disabled\:cursor-not-allowed:disabled {
|
|
2410
2479
|
cursor: not-allowed;
|
|
2411
2480
|
}
|
|
@@ -2499,6 +2568,10 @@
|
|
|
2499
2568
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
2500
2569
|
}
|
|
2501
2570
|
|
|
2571
|
+
.polishd-root.polishd-root .sm\:grid-cols-5 {
|
|
2572
|
+
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
2573
|
+
}
|
|
2574
|
+
|
|
2502
2575
|
.polishd-root.polishd-root .sm\:grid-cols-6 {
|
|
2503
2576
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
2504
2577
|
}
|
|
@@ -2599,6 +2672,10 @@
|
|
|
2599
2672
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
2600
2673
|
}
|
|
2601
2674
|
|
|
2675
|
+
.polishd-root.polishd-root .lg\:grid-cols-4 {
|
|
2676
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
2677
|
+
}
|
|
2678
|
+
|
|
2602
2679
|
.polishd-root.polishd-root .lg\:grid-cols-6 {
|
|
2603
2680
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
2604
2681
|
}
|
package/dist/server/ingest.d.ts
CHANGED
|
@@ -18,11 +18,8 @@ import { type PolishdConfig } from "../config";
|
|
|
18
18
|
* so out loud.
|
|
19
19
|
*/
|
|
20
20
|
export declare const NO_SESSION_META_KEY = "no_session_rejects";
|
|
21
|
-
/**
|
|
22
|
-
export
|
|
23
|
-
count: number;
|
|
24
|
-
lastAt: number;
|
|
25
|
-
}
|
|
21
|
+
/** Re-exported so callers keep importing the record shape from ingest. */
|
|
22
|
+
export type { NoSessionRecord } from "../shared/capture-status";
|
|
26
23
|
export interface IngestResult {
|
|
27
24
|
ok: boolean;
|
|
28
25
|
stored: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/server/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/server/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAiBnB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,0EAA0E;AAC1E,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA4DhE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAElF;AAkCD;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC,OAAO,CAAC,YAAY,CAAC,CA6BvB;AAcD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAc5F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC,OAAO,CAAC,YAAY,CAAC,CAsBvB"}
|
package/dist/server/ingest.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* body, so events are always attributed to the bearer of the cookie.
|
|
7
7
|
*/
|
|
8
8
|
import { defaultPolishdConfig, isDashboardPath, resolveDashboardRoute, } from "../config";
|
|
9
|
+
import { foldNoSessionDrop, parseNoSessionRecord } from "../shared/capture-status";
|
|
10
|
+
import { isIgnorableError } from "../shared/error-noise";
|
|
9
11
|
import { CLIENT_EVENT_TYPES } from "../shared/types";
|
|
10
12
|
import { getMeta, insertEvents, setMeta } from "./store";
|
|
11
13
|
const MAX_EVENTS_PER_BATCH = 200;
|
|
@@ -33,6 +35,17 @@ export const NO_SESSION_META_KEY = "no_session_rejects";
|
|
|
33
35
|
// A broken proxy means *every* beacon is rejected, so writing per rejection
|
|
34
36
|
// would answer a diagnostic with a write storm. Collapse them instead: count
|
|
35
37
|
// in memory, persist at most once a minute.
|
|
38
|
+
//
|
|
39
|
+
// The in-memory half of that only works while the module stays alive. On
|
|
40
|
+
// serverless every cold start resets it, so sparse traffic — scattered bot
|
|
41
|
+
// POSTs, exactly the noise the throttle exists to absorb — used to persist
|
|
42
|
+
// roughly 1:1. The stored `lastAt` is the half that survives, so it gates the
|
|
43
|
+
// write too: a fresh instance reads what the last one wrote and stays quiet
|
|
44
|
+
// if the minute isn't up. Its own tally is then lost with the instance, which
|
|
45
|
+
// is the right trade — this counter is a health signal, not an audit log, and
|
|
46
|
+
// under-reporting scattered noise is the behaviour that was intended all
|
|
47
|
+
// along. A genuinely broken proxy still writes every minute, and the
|
|
48
|
+
// dashboard's real evidence there is that nothing is being stored at all.
|
|
36
49
|
const RECORD_INTERVAL_MS = 60_000;
|
|
37
50
|
let lastPersistedAt = 0;
|
|
38
51
|
let unpersisted = 0;
|
|
@@ -45,21 +58,38 @@ async function recordNoSession() {
|
|
|
45
58
|
const batch = unpersisted;
|
|
46
59
|
unpersisted = 0;
|
|
47
60
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
const prev = parseNoSessionRecord(await getMeta(NO_SESSION_META_KEY));
|
|
62
|
+
if (prev && now - prev.lastAt < RECORD_INTERVAL_MS) {
|
|
63
|
+
// Another invocation (or this one) wrote inside the minute. Hand the
|
|
64
|
+
// tally back so a warm instance folds it into the next write.
|
|
65
|
+
unpersisted += batch;
|
|
66
|
+
return;
|
|
54
67
|
}
|
|
55
|
-
|
|
56
|
-
await setMeta(NO_SESSION_META_KEY, JSON.stringify(next));
|
|
68
|
+
await setMeta(NO_SESSION_META_KEY, JSON.stringify(foldNoSessionDrop(prev, now, batch)));
|
|
57
69
|
}
|
|
58
70
|
catch {
|
|
59
71
|
// Diagnostics must never take ingest down with them. A store that can't
|
|
60
72
|
// record the rejection still returns a clean result to the beacon.
|
|
61
73
|
}
|
|
62
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* True for a `js_error` the client should already have dropped: an extension's
|
|
77
|
+
* throw, not the site's. The client filters these at capture, but a cached
|
|
78
|
+
* bundle can predate that filter by a full session — and the endpoint is a
|
|
79
|
+
* public POST — so the rule that actually holds lives here too, the same way
|
|
80
|
+
* the dashboard-path exclusion does.
|
|
81
|
+
*
|
|
82
|
+
* Only `message` and `source` survive into the event; the stack the client
|
|
83
|
+
* inspects is not sent, so this catches less than the client does. That's the
|
|
84
|
+
* intended split: the client is the precise filter, this is the backstop.
|
|
85
|
+
*/
|
|
86
|
+
function isNoisyError(e, ignore) {
|
|
87
|
+
if (e.type !== "js_error")
|
|
88
|
+
return false;
|
|
89
|
+
const message = typeof e.meta?.message === "string" ? e.meta.message : "";
|
|
90
|
+
const source = typeof e.meta?.source === "string" ? e.meta.source : "";
|
|
91
|
+
return isIgnorableError({ message, source, ignore });
|
|
92
|
+
}
|
|
63
93
|
/**
|
|
64
94
|
* Pull the anonymous session id from the cookie. Returns null when absent —
|
|
65
95
|
* the middleware normally guarantees one, but a client with cookies disabled
|
|
@@ -132,7 +162,7 @@ export async function ingest(body, cookieValue, config = {}) {
|
|
|
132
162
|
const events = rawEvents
|
|
133
163
|
.slice(0, MAX_EVENTS_PER_BATCH)
|
|
134
164
|
.map(sanitize)
|
|
135
|
-
.filter((e) => e !== null && !isDashboardPath(e.path, dashboardRoute));
|
|
165
|
+
.filter((e) => e !== null && !isDashboardPath(e.path, dashboardRoute) && !isNoisyError(e, cfg.ignoreErrors));
|
|
136
166
|
const stored = await insertEvents(sessionId, events);
|
|
137
167
|
return { ok: true, stored };
|
|
138
168
|
}
|
|
@@ -211,7 +241,7 @@ export async function ingestTelemetry(body, installId, config = {}) {
|
|
|
211
241
|
const events = rawEvents
|
|
212
242
|
.slice(0, MAX_EVENTS_PER_BATCH)
|
|
213
243
|
.map(sanitize)
|
|
214
|
-
.filter((e) => e !== null);
|
|
244
|
+
.filter((e) => e !== null && !isNoisyError(e, cfg.ignoreErrors));
|
|
215
245
|
const stored = await insertEvents(sessionId, events, installId);
|
|
216
246
|
return { ok: true, stored };
|
|
217
247
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/server/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,qBAAqB,GAEtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/server/ingest.ts"],"names":[],"mappings":"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"}
|
package/dist/server/queries.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CaptureHealth } from "../shared/capture-status";
|
|
1
2
|
import type { PolishdEventType } from "../shared/types";
|
|
2
3
|
/**
|
|
3
4
|
* The events table with the dashboard's own route filtered out, aliased back to
|
|
@@ -46,6 +47,13 @@ export interface RecentError {
|
|
|
46
47
|
message: string;
|
|
47
48
|
component?: string;
|
|
48
49
|
ts: number;
|
|
50
|
+
/**
|
|
51
|
+
* Who the client attributed the throw to. Absent means the site's own code —
|
|
52
|
+
* the common case, left unlabeled. `foreign` is a script this page never
|
|
53
|
+
* loaded (injected from somewhere), `unknown` is an error with nothing
|
|
54
|
+
* attributable at all. Confident extension errors never make it this far.
|
|
55
|
+
*/
|
|
56
|
+
origin?: "foreign" | "unknown";
|
|
49
57
|
}
|
|
50
58
|
export interface ElementStat {
|
|
51
59
|
/** The DOM selector this element was interacted with as. */
|
|
@@ -247,19 +255,18 @@ export interface MonitoredComponent {
|
|
|
247
255
|
* matching how `getSessionJourneys` and `getTopPages` keep their SQL portable.
|
|
248
256
|
*/
|
|
249
257
|
export declare function getMonitoredComponents(): Promise<MonitoredComponent[]>;
|
|
250
|
-
|
|
251
|
-
export interface CaptureHealth {
|
|
252
|
-
/** Beacons dropped because the request carried no session cookie. */
|
|
253
|
-
noSessionCount: number;
|
|
254
|
-
/** When the most recent such drop happened (ms epoch), or null for none. */
|
|
255
|
-
lastNoSessionAt: number | null;
|
|
256
|
-
}
|
|
258
|
+
export type { CaptureHealth } from "../shared/capture-status";
|
|
257
259
|
/**
|
|
258
|
-
* Read the proxy-health
|
|
260
|
+
* Read the proxy-health counters: the drop record ingest writes, plus what
|
|
261
|
+
* the events table says about storing over the same window.
|
|
259
262
|
*
|
|
260
|
-
*
|
|
261
|
-
* "everybody
|
|
262
|
-
*
|
|
263
|
+
* The pair is the point. A drop count on its own cannot tell "nobody has
|
|
264
|
+
* visited yet" from "everybody visited and every event was thrown away" —
|
|
265
|
+
* that is why it is recorded — but neither can it tell a broken proxy from a
|
|
266
|
+
* crawler POSTing at a public endpoint. `lastStoredAt` settles that outright:
|
|
267
|
+
* every event is attributed to the cookie the proxy mints, so a store dated
|
|
268
|
+
* after the most recent drop means the proxy is minting right now. The
|
|
269
|
+
* windowed counts let the dashboard describe the rest in proportion.
|
|
263
270
|
*/
|
|
264
271
|
export declare function getCaptureHealth(): Promise<CaptureHealth>;
|
|
265
272
|
/** Everything the dashboard (and the AI summary) reads, in one shape. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/server/queries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/server/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/server/queries.js
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
* spelled `SUM(CASE WHEN … THEN 1 ELSE 0 END)` rather than SQLite's `SUM(x = y)`.
|
|
11
11
|
*/
|
|
12
12
|
import { getMeta, parseMeta, query, storeReady } from "./store";
|
|
13
|
+
import { CAPTURE_WINDOW_MS, noSessionCountSince, parseNoSessionRecord, } from "../shared/capture-status";
|
|
13
14
|
import { NO_SESSION_META_KEY } from "./ingest";
|
|
14
15
|
import { resolveAnalyticsSource } from "./telemetry";
|
|
15
16
|
import { resolveDashboardRoute } from "../config";
|
|
17
|
+
import { isIgnorableError } from "../shared/error-noise";
|
|
16
18
|
/**
|
|
17
19
|
* The events table with the dashboard's own route filtered out, aliased back to
|
|
18
20
|
* `events` so every query below reads from it unchanged.
|
|
@@ -563,29 +565,57 @@ export async function getMonitoredComponents() {
|
|
|
563
565
|
});
|
|
564
566
|
}
|
|
565
567
|
/**
|
|
566
|
-
* Read the proxy-health
|
|
568
|
+
* Read the proxy-health counters: the drop record ingest writes, plus what
|
|
569
|
+
* the events table says about storing over the same window.
|
|
567
570
|
*
|
|
568
|
-
*
|
|
569
|
-
* "everybody
|
|
570
|
-
*
|
|
571
|
+
* The pair is the point. A drop count on its own cannot tell "nobody has
|
|
572
|
+
* visited yet" from "everybody visited and every event was thrown away" —
|
|
573
|
+
* that is why it is recorded — but neither can it tell a broken proxy from a
|
|
574
|
+
* crawler POSTing at a public endpoint. `lastStoredAt` settles that outright:
|
|
575
|
+
* every event is attributed to the cookie the proxy mints, so a store dated
|
|
576
|
+
* after the most recent drop means the proxy is minting right now. The
|
|
577
|
+
* windowed counts let the dashboard describe the rest in proportion.
|
|
571
578
|
*/
|
|
572
579
|
export async function getCaptureHealth() {
|
|
573
|
-
const
|
|
580
|
+
const windowMs = CAPTURE_WINDOW_MS;
|
|
581
|
+
const empty = {
|
|
582
|
+
noSessionCount: 0,
|
|
583
|
+
recentNoSessionCount: 0,
|
|
584
|
+
lastNoSessionAt: null,
|
|
585
|
+
lastStoredAt: null,
|
|
586
|
+
recentEvents: 0,
|
|
587
|
+
recentBatches: 0,
|
|
588
|
+
windowMs,
|
|
589
|
+
};
|
|
574
590
|
if (!(await storeReady()))
|
|
575
591
|
return empty;
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
592
|
+
const since = Date.now() - windowMs;
|
|
593
|
+
// `received_at` is stamped once per insert call, so distinct values count
|
|
594
|
+
// batches — approximately: two batches landing in the same millisecond
|
|
595
|
+
// collapse into one. Good enough for a percentage, and it costs no schema.
|
|
596
|
+
const [rows, raw] = await Promise.all([
|
|
597
|
+
query(`SELECT
|
|
598
|
+
MAX(received_at) AS "lastStoredAt",
|
|
599
|
+
SUM(CASE WHEN received_at >= ? THEN 1 ELSE 0 END) AS "recentEvents",
|
|
600
|
+
COUNT(DISTINCT CASE WHEN received_at >= ? THEN received_at END) AS "recentBatches"
|
|
601
|
+
FROM ${polishdEventsSource()}`, [since, since]),
|
|
602
|
+
getMeta(NO_SESSION_META_KEY),
|
|
603
|
+
]);
|
|
604
|
+
const row = rows[0];
|
|
605
|
+
// MAX() over an empty table is NULL, which `num` would flatten to 0 — and a
|
|
606
|
+
// stored-at of 0 reads as "stored in 1970", i.e. older than any drop. Keep
|
|
607
|
+
// the absence.
|
|
608
|
+
const everStored = row?.lastStoredAt !== null && row?.lastStoredAt !== undefined;
|
|
609
|
+
const rec = parseNoSessionRecord(raw);
|
|
610
|
+
return {
|
|
611
|
+
noSessionCount: rec?.count ?? 0,
|
|
612
|
+
recentNoSessionCount: noSessionCountSince(rec, since),
|
|
613
|
+
lastNoSessionAt: rec && rec.lastAt > 0 ? rec.lastAt : null,
|
|
614
|
+
lastStoredAt: everStored ? num(row, "lastStoredAt") : null,
|
|
615
|
+
recentEvents: num(row, "recentEvents"),
|
|
616
|
+
recentBatches: num(row, "recentBatches"),
|
|
617
|
+
windowMs,
|
|
618
|
+
};
|
|
589
619
|
}
|
|
590
620
|
/**
|
|
591
621
|
* Fetch every dashboard query in parallel. Server-only. Lives here (not in the
|
|
@@ -606,21 +636,31 @@ export async function loadPolishdDashboardData() {
|
|
|
606
636
|
return { overview, health, pages, elements, devices, topUsed, journeys, errors, monitored };
|
|
607
637
|
}
|
|
608
638
|
export async function getRecentErrors(limit = 10) {
|
|
639
|
+
// Extension errors are dropped at capture and again at ingest, but rows
|
|
640
|
+
// written before that filter existed are still in the table — and this list
|
|
641
|
+
// is where they were loudest. Over-fetch and drop them on the way out, so
|
|
642
|
+
// the fix applies to history and not just to new sessions.
|
|
609
643
|
const rows = await query(`SELECT path, component, meta, ts
|
|
610
644
|
FROM ${polishdEventsSource()} WHERE type = 'js_error'
|
|
611
|
-
ORDER BY id DESC LIMIT ?`, [limit]);
|
|
612
|
-
return rows
|
|
613
|
-
|
|
645
|
+
ORDER BY id DESC LIMIT ?`, [limit * 4]);
|
|
646
|
+
return rows
|
|
647
|
+
.map((r) => {
|
|
614
648
|
const meta = parseMeta(r.meta);
|
|
615
|
-
|
|
616
|
-
|
|
649
|
+
const message = meta && typeof meta.message === "string" ? meta.message : "Unknown error";
|
|
650
|
+
const source = meta && typeof meta.source === "string" ? meta.source : "";
|
|
651
|
+
const origin = meta?.origin === "foreign" || meta?.origin === "unknown" ? meta.origin : undefined;
|
|
617
652
|
return {
|
|
618
653
|
path: r.path,
|
|
619
654
|
component: r.component ?? undefined,
|
|
620
655
|
message,
|
|
656
|
+
source,
|
|
657
|
+
origin,
|
|
621
658
|
ts: num(r, "ts"),
|
|
622
659
|
};
|
|
623
|
-
})
|
|
660
|
+
})
|
|
661
|
+
.filter(({ message, source }) => !isIgnorableError({ message, source }))
|
|
662
|
+
.slice(0, limit)
|
|
663
|
+
.map(({ source: _source, ...error }) => error);
|
|
624
664
|
}
|
|
625
665
|
/** One row per reporting installation, most recently active first. */
|
|
626
666
|
export async function getTelemetryInstalls(limit = 100) {
|