feat: extract constants module (P2-10)

Centralises magic numbers and string literals into src/config/constants.ts
(FEED_MAX_BYTES, MAX_FEED_ITEMS, MAX_METADATA_EMAILS, ADMIN_COOKIE_MAX_AGE,
FORWARD_EMAIL_IPS_CACHE_TTL_MS, DEFAULT_LEASE_SECONDS, MAX_LEASE_SECONDS,
FEEDS_LIST_KEY). Consumers updated in storage.ts and feed-fetcher.ts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Julien Herr
2026-05-22 10:55:01 +02:00
parent 582108a8e3
commit 0c0669c473
3 changed files with 31 additions and 5 deletions
+1 -2
View File
@@ -1,6 +1,5 @@
import { Env, FeedConfig, FeedMetadata, EmailData } from "../types";
const MAX_FEED_ITEMS = 20;
import { MAX_FEED_ITEMS } from "../config/constants";
export interface FeedData {
feedConfig: FeedConfig;
+7 -3
View File
@@ -5,6 +5,7 @@ import {
FeedList,
EmailMetadata,
} from "../types";
import { MAX_METADATA_EMAILS } from "../config/constants";
/**
* Store email data in KV
@@ -49,10 +50,13 @@ async function updateFeedMetadata(
// Add new email to the beginning of the list
metadata.emails.unshift(emailMetadata);
// Keep only the last 50 emails in the metadata; delete orphaned KV entries
const toDelete = metadata.emails.length > 50 ? metadata.emails.slice(50) : [];
// Keep only the last MAX_METADATA_EMAILS in the metadata; delete orphaned KV entries
const toDelete =
metadata.emails.length > MAX_METADATA_EMAILS
? metadata.emails.slice(MAX_METADATA_EMAILS)
: [];
if (toDelete.length > 0) {
metadata.emails = metadata.emails.slice(0, 50);
metadata.emails = metadata.emails.slice(0, MAX_METADATA_EMAILS);
}
await Promise.all([