@polishd/next 0.2.2 → 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 -0
- package/README.md +32 -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-review-card.d.ts.map +1 -1
- package/dist/dashboard/design-review-card.js +3 -3
- package/dist/dashboard/design-review-card.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 +24 -19
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/installs.d.ts.map +1 -1
- package/dist/dashboard/installs.js +2 -1
- package/dist/dashboard/installs.js.map +1 -1
- package/dist/dashboard/journeys.d.ts.map +1 -1
- package/dist/dashboard/journeys.js +3 -2
- package/dist/dashboard/journeys.js.map +1 -1
- package/dist/dashboard/pages.d.ts.map +1 -1
- package/dist/dashboard/pages.js +1 -1
- package/dist/dashboard/pages.js.map +1 -1
- package/dist/dashboard/settings.d.ts.map +1 -1
- package/dist/dashboard/settings.js +6 -2
- package/dist/dashboard/settings.js.map +1 -1
- package/dist/dashboard/show-more.d.ts.map +1 -1
- package/dist/dashboard/show-more.js +1 -1
- package/dist/dashboard/show-more.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/summary.d.ts.map +1 -1
- package/dist/dashboard/summary.js +11 -6
- package/dist/dashboard/summary.js.map +1 -1
- package/dist/dashboard/telemetry.d.ts +3 -1
- package/dist/dashboard/telemetry.d.ts.map +1 -1
- package/dist/dashboard/telemetry.js +50 -8
- package/dist/dashboard/telemetry.js.map +1 -1
- package/dist/dashboard.css +79 -2
- 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 +23 -11
- package/dist/server/queries.d.ts.map +1 -1
- package/dist/server/queries.js +98 -34
- 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/server/telemetry.d.ts +13 -0
- package/dist/server/telemetry.d.ts.map +1 -1
- package/dist/server/telemetry.js +28 -7
- package/dist/server/telemetry.js.map +1 -1
- 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/dist/shared/types.d.ts +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +4 -0
- package/dist/shared/types.js.map +1 -1
- package/docs/SETUP.md +25 -0
- package/package.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/dashboard/telemetry.tsx"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAUxE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,OAAO,CAAC;KACrC;CACF;AA4PD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,YAAmB,GACpB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;CACpD,QAQA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,uCAwDtC"}
|
|
@@ -36,8 +36,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
36
36
|
*/
|
|
37
37
|
import { useRouter } from "next/navigation";
|
|
38
38
|
import { useEffect, useState, useTransition } from "react";
|
|
39
|
+
import { isIgnorableError } from "../shared/error-noise";
|
|
39
40
|
import { componentOf, deviceCategory, hasTextSelection, isInteractive, labelOf, selectorOf, } from "../client/dom";
|
|
40
41
|
import { scheduleDesignScan } from "../client/design-scan";
|
|
42
|
+
import { errorOrigin, startScriptProvenance } from "../client/script-provenance";
|
|
41
43
|
import { denyPolishdTelemetry, grantPolishdTelemetry } from "./telemetry-consent";
|
|
42
44
|
const PATH_PREFIX = "/~polishd";
|
|
43
45
|
const SESSION_KEY = "polishd_telemetry_session";
|
|
@@ -65,7 +67,7 @@ function sessionId() {
|
|
|
65
67
|
return crypto.randomUUID();
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
|
-
function start(endpoint) {
|
|
70
|
+
function start(endpoint, installState) {
|
|
69
71
|
const sid = sessionId();
|
|
70
72
|
// The route the dashboard is mounted at, learned from where we woke up.
|
|
71
73
|
// Capture is suspended whenever the URL wanders off it — the listeners
|
|
@@ -156,15 +158,25 @@ function start(endpoint) {
|
|
|
156
158
|
maxScrollPct = 0;
|
|
157
159
|
};
|
|
158
160
|
// ---- errors ---------------------------------------------------------------
|
|
161
|
+
// Extension throws reach `window` here too — and the dashboard is a page the
|
|
162
|
+
// owner keeps open, so its tab collects them for as long as it's up. Same
|
|
163
|
+
// provenance test as first-party capture.
|
|
164
|
+
startScriptProvenance();
|
|
159
165
|
addEventListener("error", (ev) => {
|
|
160
166
|
if (!onDashboard())
|
|
161
167
|
return;
|
|
168
|
+
const message = String(ev.message);
|
|
169
|
+
const source = ev.filename || "";
|
|
170
|
+
const origin = errorOrigin(source, ev.error?.stack);
|
|
171
|
+
if (origin === "extension" || isIgnorableError({ message, source }))
|
|
172
|
+
return;
|
|
162
173
|
push({
|
|
163
174
|
type: "js_error",
|
|
164
175
|
meta: {
|
|
165
|
-
message:
|
|
166
|
-
source
|
|
176
|
+
message: message.slice(0, 300),
|
|
177
|
+
source,
|
|
167
178
|
line: ev.lineno || 0,
|
|
179
|
+
...(origin === "site" ? {} : { origin }),
|
|
168
180
|
},
|
|
169
181
|
});
|
|
170
182
|
}, true);
|
|
@@ -172,11 +184,16 @@ function start(endpoint) {
|
|
|
172
184
|
if (!onDashboard())
|
|
173
185
|
return;
|
|
174
186
|
const reason = ev.reason;
|
|
187
|
+
const message = String(reason?.message ?? reason);
|
|
188
|
+
const origin = errorOrigin(undefined, reason?.stack);
|
|
189
|
+
if (origin === "extension" || isIgnorableError({ message }))
|
|
190
|
+
return;
|
|
175
191
|
push({
|
|
176
192
|
type: "js_error",
|
|
177
193
|
meta: {
|
|
178
|
-
message:
|
|
194
|
+
message: message.slice(0, 300),
|
|
179
195
|
kind: "unhandledrejection",
|
|
196
|
+
...(origin === "site" ? {} : { origin }),
|
|
180
197
|
},
|
|
181
198
|
});
|
|
182
199
|
});
|
|
@@ -229,6 +246,31 @@ function start(endpoint) {
|
|
|
229
246
|
if (w > 0) {
|
|
230
247
|
push({ type: "viewport", value: w, text: deviceCategory(w) });
|
|
231
248
|
}
|
|
249
|
+
// One install-state snapshot per session: whether a model is connected and
|
|
250
|
+
// which provider/model — the product questions ("how many installs actually
|
|
251
|
+
// configure AI?") that click events can't answer. Server-resolved, no key.
|
|
252
|
+
if (installState) {
|
|
253
|
+
const STATE_KEY = "polishd_telemetry_state";
|
|
254
|
+
let sent = false;
|
|
255
|
+
try {
|
|
256
|
+
sent = sessionStorage.getItem(STATE_KEY) !== null;
|
|
257
|
+
if (!sent)
|
|
258
|
+
sessionStorage.setItem(STATE_KEY, "1");
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
/* storage blocked — a duplicate per page load is tolerable */
|
|
262
|
+
}
|
|
263
|
+
if (!sent) {
|
|
264
|
+
push({
|
|
265
|
+
type: "install_state",
|
|
266
|
+
meta: {
|
|
267
|
+
hasModel: installState.hasModel,
|
|
268
|
+
provider: installState.provider,
|
|
269
|
+
model: installState.model,
|
|
270
|
+
},
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
232
274
|
push({ type: "page_view", path: currentPath });
|
|
233
275
|
emitDesignScan();
|
|
234
276
|
}
|
|
@@ -237,15 +279,15 @@ function start(endpoint) {
|
|
|
237
279
|
* starts the capture singleton once per page load (the listeners are global
|
|
238
280
|
* and deliberately never torn down — capture suspends off-dashboard instead).
|
|
239
281
|
*/
|
|
240
|
-
export function PolishdTelemetryEmitter({ endpoint }) {
|
|
282
|
+
export function PolishdTelemetryEmitter({ endpoint, installState = null, }) {
|
|
241
283
|
useEffect(() => {
|
|
242
284
|
if (window.__polishdTelemetryStarted)
|
|
243
285
|
return;
|
|
244
286
|
if (navigator.doNotTrack === "1")
|
|
245
287
|
return;
|
|
246
288
|
window.__polishdTelemetryStarted = true;
|
|
247
|
-
start(endpoint);
|
|
248
|
-
}, [endpoint]);
|
|
289
|
+
start(endpoint, installState);
|
|
290
|
+
}, [endpoint, installState]);
|
|
249
291
|
return null;
|
|
250
292
|
}
|
|
251
293
|
/**
|
|
@@ -275,6 +317,6 @@ export function PolishdTelemetryConsent() {
|
|
|
275
317
|
}
|
|
276
318
|
setDismissed(true);
|
|
277
319
|
});
|
|
278
|
-
return (_jsxs("div", { role: "dialog", "aria-label": "Polishd telemetry consent", className: "fixed bottom-4 right-4 z-50 w-[340px] max-w-[calc(100vw-2rem)] rounded-xl border border-[#2e2e2e] bg-[#111] p-4 shadow-2xl", children: [_jsx("p", { className: "text-[13px] font-medium text-white", children: "Help improve polishd?" }), _jsxs("p", { className: "mt-1.5 text-[12px] leading-relaxed text-[#888]", children: ["Share anonymous usage of ", _jsx("span", { className: "text-[#aaa]", children: "this dashboard" }), " \u2014 clicks and tab views inside it, reported under your site's domain. Never your site's analytics, never your visitors' data. Opt out any time with", " ", _jsx("code", { className: "font-mono text-[11px] text-[#aaa]", children: "POLISHD_TELEMETRY=off" }), "."] }), _jsxs("div", { className: "mt-3 flex gap-2", children: [_jsx("button", { type: "button", disabled: pending, onClick: () => decide(true), className: "rounded-lg bg-white px-3 py-1.5 text-[12px] font-medium text-black transition-opacity hover:opacity-90 disabled:opacity-50", children: "Share" }), _jsx("button", { type: "button", disabled: pending, onClick: () => decide(false), className: "rounded-lg border border-[#2e2e2e] px-3 py-1.5 text-[12px] text-[#888] transition-colors hover:text-white disabled:opacity-50", children: "No thanks" })] })] }));
|
|
320
|
+
return (_jsxs("div", { role: "dialog", "aria-label": "Polishd telemetry consent", className: "fixed bottom-4 right-4 z-50 w-[340px] max-w-[calc(100vw-2rem)] rounded-xl border border-[#2e2e2e] bg-[#111] p-4 shadow-2xl", children: [_jsx("p", { className: "text-[13px] font-medium text-white", children: "Help improve polishd?" }), _jsxs("p", { className: "mt-1.5 text-[12px] leading-relaxed text-[#888]", children: ["Share anonymous usage of ", _jsx("span", { className: "text-[#aaa]", children: "this dashboard" }), " \u2014 clicks and tab views inside it, plus which model provider you've connected (never the key) \u2014 reported under your site's domain. Never your site's analytics, never your visitors' data. Opt out any time with", " ", _jsx("code", { className: "font-mono text-[11px] text-[#aaa]", children: "POLISHD_TELEMETRY=off" }), "."] }), _jsxs("div", { className: "mt-3 flex gap-2", children: [_jsx("button", { type: "button", disabled: pending, onClick: () => decide(true), className: "rounded-lg bg-white px-3 py-1.5 text-[12px] font-medium text-black transition-opacity hover:opacity-90 disabled:opacity-50", children: "Share" }), _jsx("button", { type: "button", disabled: pending, onClick: () => decide(false), className: "rounded-lg border border-[#2e2e2e] px-3 py-1.5 text-[12px] text-[#888] transition-colors hover:text-white disabled:opacity-50", children: "No thanks" })] })] }));
|
|
279
321
|
}
|
|
280
322
|
//# sourceMappingURL=telemetry.js.map
|
|
@@ -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":"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;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEjF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAElF,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,cAAc,GAAG,GAAG,CAAC;AAQ3B,2DAA2D;AAC3D,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,GAAG,WAAW,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;QAC/D,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,QAAgB,EAAE,YAAiD;IAChF,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACpC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC;IAE1D,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,aAAa,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,EAAE;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,EAAE;gBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,KAAK,CAAC,QAAQ,EAAE;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;YACzC,IAAI;YACJ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CACX,CAAiF,EACjF,EAAE;QACF,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,EAAkB,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;YAAE,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,6EAA6E;IAE7E,IAAI,SAAS,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAEpD,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EACP,CAAC,EAAE,EAAE,EAAE;QACL,MAAM,MAAM,GAAG,EAAE,CAAC,MAAwB,CAAC;QAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,QAAQ,KAAK,SAAS,CAAC,QAAQ,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;YAC7E,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;YACrB,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,gBAAgB,EAAE;gBAAE,OAAO;YAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CACjC,CAAC;IAEF,8EAA8E;IAE9E,0EAA0E;IAC1E,2EAA2E;IAC3E,gDAAgD;IAChD,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,QAAQ,CAAC,gBAAgB,CACvB,QAAQ,EACR,CAAC,EAAE,EAAE,EAAE;QACL,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC/D,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;QACrD,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzE,IAAI,GAAG,GAAG,YAAY;YAAE,YAAY,GAAG,GAAG,CAAC;IAC7C,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CACjC,CAAC;IAEF,uEAAuE;IACvE,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,YAAY,IAAI,CAAC;YAAE,OAAO;QAC9B,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACpD,YAAY,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,8EAA8E;IAE9E,6EAA6E;IAC7E,0EAA0E;IAC1E,0CAA0C;IAC1C,qBAAqB,EAAE,CAAC;IAExB,gBAAgB,CACd,OAAO,EACP,CAAC,EAAE,EAAE,EAAE;QACL,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,WAAW,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAAE,OAAO;QAC5E,IAAI,CAAC;YACH,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE;gBACJ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9B,MAAM;gBACN,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC;gBACpB,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;aACzC;SACF,CAAC,CAAC;IACL,CAAC,EACD,IAAI,CACL,CAAC;IACF,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE;QAC5C,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,WAAW,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;YAAE,OAAO;QACpE,IAAI,CAAC;YACH,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE;gBACJ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9B,IAAI,EAAE,oBAAoB;gBAC1B,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;aACzC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,wEAAwE;IACxE,4EAA4E;IAC5E,uCAAuC;IACvC,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC;QACzB,kBAAkB,CAChB,IAAI,EACJ,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;YACxB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClF,KAAK,EAAE,CAAC;QACV,CAAC,EACD,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE,KAAK,IAAI,EAAE,CACvF,CAAC;IACJ,CAAC,CAAC;IAEF,6EAA6E;IAE7E,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC3B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO;QACjC,gBAAgB,EAAE,CAAC;QACnB,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/C,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAoC,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,GAAG,UAAyB,GAAG,IAAsC;YAClF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,UAAU,EAAE,CAAC;YACb,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,WAAW,CAAC,WAAW,CAAC,CAAC;IACzB,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5B,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEzC,6EAA6E;IAE7E,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;QAChC,gBAAgB,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IACH,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAEnD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,yBAAyB,CAAC;QAC5C,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;YAClD,IAAI,CAAC,IAAI;gBAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE;oBACJ,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;iBAC1B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,QAAQ,EACR,YAAY,GAAG,IAAI,GAIpB;IACC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,CAAC,yBAAyB;YAAE,OAAO;QAC7C,IAAI,SAAS,CAAC,UAAU,KAAK,GAAG;YAAE,OAAO;QACzC,MAAM,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;IACnD,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,EAAE,CAClC,eAAe,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,qBAAqB,EAAE,CAAC;gBAC9B,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,oBAAoB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,oDAAoD;QACtD,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEL,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,gBACF,2BAA2B,EACtC,SAAS,EAAC,4HAA4H,aAEtI,YAAG,SAAS,EAAC,oCAAoC,sCAA0B,EAC3E,aAAG,SAAS,EAAC,gDAAgD,0CAClC,eAAM,SAAS,EAAC,aAAa,+BAAsB,gOAGjC,GAAG,EAC9C,eAAM,SAAS,EAAC,mCAAmC,sCAA6B,SAC9E,EACJ,eAAK,SAAS,EAAC,iBAAiB,aAC9B,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC3B,SAAS,EAAC,4HAA4H,sBAG/H,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B,SAAS,EAAC,+HAA+H,0BAGlI,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
|
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
|
}
|
|
@@ -867,8 +876,8 @@
|
|
|
867
876
|
min-width: 560px;
|
|
868
877
|
}
|
|
869
878
|
|
|
870
|
-
.polishd-root.polishd-root .min-w-\[
|
|
871
|
-
min-width:
|
|
879
|
+
.polishd-root.polishd-root .min-w-\[760px\] {
|
|
880
|
+
min-width: 760px;
|
|
872
881
|
}
|
|
873
882
|
|
|
874
883
|
.polishd-root.polishd-root .min-w-\[820px\] {
|
|
@@ -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. */
|
|
@@ -292,6 +299,11 @@ export interface TelemetryInstall {
|
|
|
292
299
|
deadClicks: number;
|
|
293
300
|
/** Server receive time of the most recent event, ms since epoch. */
|
|
294
301
|
lastSeen: number;
|
|
302
|
+
/** Whether a model is connected there; null = never reported (old emitter). */
|
|
303
|
+
hasModel: boolean | null;
|
|
304
|
+
/** Provider/model in use, from the latest install_state report. */
|
|
305
|
+
provider: string | null;
|
|
306
|
+
model: string | null;
|
|
295
307
|
}
|
|
296
308
|
/** One row per reporting installation, most recently active first. */
|
|
297
309
|
export declare function getTelemetryInstalls(limit?: number): Promise<TelemetryInstall[]>;
|
|
@@ -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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"}
|