perf: reduce repeated collection traversal

This commit is contained in:
2026-06-05 19:11:43 +08:00
parent 13893bc3a9
commit a1fd24a5f6
10 changed files with 90 additions and 32 deletions
+12 -7
View File
@@ -376,13 +376,18 @@ function createWorkflowFingerprint(workflow: WebCanvasWorkflow): string {
function toActivePackages(value: unknown): WebUserSession["user"]["activePackages"] {
if (!Array.isArray(value)) return undefined;
return value.filter(isRecord).map((entry) => ({
name: toStringValue(entry.name, "Preview package"),
expiresAt: toStringValue(entry.expiresAt ?? entry.expires_at, ""),
remainingImage: toNumber(entry.remainingImage ?? entry.remaining_image),
remainingVideo: toNumber(entry.remainingVideo ?? entry.remaining_video),
remainingText: toNumber(entry.remainingText ?? entry.remaining_text),
}));
const packages: NonNullable<WebUserSession["user"]["activePackages"]> = [];
for (const entry of value) {
if (!isRecord(entry)) continue;
packages.push({
name: toStringValue(entry.name, "Preview package"),
expiresAt: toStringValue(entry.expiresAt ?? entry.expires_at, ""),
remainingImage: toNumber(entry.remainingImage ?? entry.remaining_image),
remainingVideo: toNumber(entry.remainingVideo ?? entry.remaining_video),
remainingText: toNumber(entry.remainingText ?? entry.remaining_text),
});
}
return packages;
}
function normalizeUser(raw: unknown): WebUserSession["user"] | null {