fix(build): extract STORED_LOGO_SENTINEL to non-server module

Vite/React Router refused to bundle the client because
app/routes/app.settings.tsx imported the constant from a .server file
and used it inside the route component (not just loader/action), so it
could not be tree-shaken out.

Move the sentinel to logoCache.constants.ts, re-export from
logoCache.server.ts for backwards compatibility, and import the constant
from constants in the route while keeping the server-only functions
(deleteStoredLogo, storeUploadedLogo) imported from .server (they are
only referenced inside the action and get tree-shaken correctly).
This commit is contained in:
Gerhard Scheikl
2026-05-08 14:41:48 +02:00
parent 23246fe31f
commit 58cfc30cd7
3 changed files with 12 additions and 2 deletions
+5 -1
View File
@@ -1,4 +1,5 @@
import db from "../../db.server";
import { STORED_LOGO_SENTINEL } from "./logoCache.constants";
const MAX_BYTES = 5 * 1024 * 1024; // 5 MB cap
const STALE_AFTER_MS = 24 * 60 * 60 * 1000; // re-fetch once a day at most
@@ -7,8 +8,11 @@ const STALE_AFTER_MS = 24 * 60 * 60 * 1000; // re-fetch once a day at most
* Sentinel value stored in `ShopSettings.logoUrl` when the logo was uploaded
* directly through the settings UI (rather than fetched from a remote URL).
* The actual bytes live in `LogoCache` for that shop.
*
* Re-exported from `logoCache.constants` so existing server-side imports keep
* working; new client/route imports should use `logoCache.constants` directly.
*/
export const STORED_LOGO_SENTINEL = "stored://shop-logo";
export { STORED_LOGO_SENTINEL };
/**
* Returns a `data:` URL for the shop's logo bytes, fetching from the