perf: optimize widget integration requests

This commit is contained in:
ajnart committed 2026-08-14 11:32:11 +02:00
1 parent f65969053a
commit dcef36ffa7
14 files changed
+517 -48

No files matched your search

@@ -1,3 +1,5 @@
// @vitest-environment node
import { Request, Response } from "undici";
import { beforeEach, describe, expect, test, vi } from "vitest";
@@ -76,6 +78,7 @@ describe("UmamiIntegration", () => {
expect(requestedUrls).toHaveLength(1);
expect(requestedUrls[0]?.path).toContain("/metrics");
expect(requestedUrls[0]?.params.get("type")).toBe("event");
expect(requestedUrls[0]?.params.get("limit")).toBe("5000");
expect(requestedUrls.some((requested) => requested.path.endsWith("/events"))).toBe(false);
});
@@ -29,6 +29,7 @@ import {
// Umami event type ID for custom events (type 1 = page view, type 2 = custom event)
const UMAMI_CUSTOM_EVENT_TYPE = 2;
const UMAMI_EVENT_NAME_LIMIT = 5_000;
const UMAMI_EVENT_PAGE_SIZE = 5_000;
const UMAMI_EVENT_PAGE_MAX = 20;
@@ -184,7 +185,14 @@ export class UmamiIntegration extends Integration {
const authHeaders = await this.getAuthHeadersAsync();
const endAt = Date.now();
const startAt = dayjs().subtract(30, "day").valueOf();
const metrics = await this.getWebsiteMetricsAsync(websiteId, startAt, endAt, "event", authHeaders);
const metrics = await this.getWebsiteMetricsAsync(
websiteId,
startAt,
endAt,
"event",
authHeaders,
UMAMI_EVENT_NAME_LIMIT,
);
const names = new Set<string>();
for (const metric of metrics) {
if (metric.x) names.add(metric.x);