Start
Interval
Delta
@@ -119,13 +143,66 @@ function ServerTrace({ trace }: ServerTraceProps) {
return (
-
+
{lines.map(line => (
{line}
))}
-
+
+ );
+}
+
+function TTIAnalytics() {
+ const analytics = TTITracker.serializeTTITracker();
+ const filteredAnalytics = Object.entries(analytics).filter(([key, value]) => value != null && !/_start$|_end$/.test(key));
+
+ return (
+
+
+
+
+ {filteredAnalytics.map(([key, value]) => (
+
+ {key}
+ {`${value}`}
+
+ ))}
+
+
+
+
+ );
+}
+
+interface TTITimingsProps {
+ records: [string, ITTITrackerEvent][];
+ title: string;
+ type: "registered" | "unregistered";
+}
+
+function TTITimings({ records, title, type }: TTITimingsProps) {
+ const isRegistered = type === "registered";
+
+ return (
+
+
+
+
+ {isRegistered &&
Duration}
+
Key
+
Event
+ {records.map(([key, event]) => (
+
+ {isRegistered && {event.end - event.start}ms
}
+ {key}
+ {event.emoji} {event.name}
+
+ ))}
+
+
+
+
);
}
@@ -134,6 +211,12 @@ function StartupTimingPage() {
const serverTrace = AppStartPerformance.logGroups.find(g => g.serverTrace)?.serverTrace;
+ const registeredTTITimings: [string, ITTITrackerEvent][] = (Object.entries(TTITracker))
+ .filter(([, value]) => value?.hasData?.());
+
+ const unregisteredTTITimings: [string, ITTITrackerEvent][] = (Object.entries(TTITracker))
+ .filter(([, value]) => value?.hasData && !value.hasData());
+
return (
- {/* Lazy Divider */}
-
+
+
{serverTrace && }
+
+
+
+
+
+
+
+
+
);
}