R2 storage, media preconnect, filename normalization, graph email
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* Emits <link rel="preconnect"> + <link rel="dns-prefetch"> for the media CDN
|
||||
* domain (R2_PUBLIC_URL), so the browser opens the TLS/DNS connection to the
|
||||
* media host early — before it hits the first <img>. Saves ~150–300ms on the
|
||||
* first image load.
|
||||
*
|
||||
* Reads the domain from R2_PUBLIC_URL (the same env var buildR2Storage uses),
|
||||
* so there's ONE source of truth — no per-project hardcoded domain. Renders
|
||||
* nothing when R2_PUBLIC_URL isn't set (local disk / no CDN → nothing to
|
||||
* preconnect).
|
||||
*
|
||||
* Server Component — drop it in the <head> of your locale layout:
|
||||
*
|
||||
* import { MediaPreconnect } from '@intecion/ipal-kit/rsc'
|
||||
* // in <head> (or top of <body> — Next hoists link tags):
|
||||
* <MediaPreconnect />
|
||||
*/
|
||||
export declare function MediaPreconnect(): import("react/jsx-runtime").JSX.Element | null;
|
||||
export default MediaPreconnect;
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
||||
/**
|
||||
* Emits <link rel="preconnect"> + <link rel="dns-prefetch"> for the media CDN
|
||||
* domain (R2_PUBLIC_URL), so the browser opens the TLS/DNS connection to the
|
||||
* media host early — before it hits the first <img>. Saves ~150–300ms on the
|
||||
* first image load.
|
||||
*
|
||||
* Reads the domain from R2_PUBLIC_URL (the same env var buildR2Storage uses),
|
||||
* so there's ONE source of truth — no per-project hardcoded domain. Renders
|
||||
* nothing when R2_PUBLIC_URL isn't set (local disk / no CDN → nothing to
|
||||
* preconnect).
|
||||
*
|
||||
* Server Component — drop it in the <head> of your locale layout:
|
||||
*
|
||||
* import { MediaPreconnect } from '@intecion/ipal-kit/rsc'
|
||||
* // in <head> (or top of <body> — Next hoists link tags):
|
||||
* <MediaPreconnect />
|
||||
*/ export function MediaPreconnect() {
|
||||
const publicUrl = process.env.R2_PUBLIC_URL?.replace(/\/$/, '');
|
||||
if (!publicUrl) {
|
||||
return null;
|
||||
}
|
||||
// Origin only (scheme + host) — preconnect targets an origin, not a path.
|
||||
let origin;
|
||||
try {
|
||||
origin = new URL(publicUrl).origin;
|
||||
} catch {
|
||||
return null // malformed URL → skip rather than emit a broken tag
|
||||
;
|
||||
}
|
||||
return /*#__PURE__*/ _jsxs(_Fragment, {
|
||||
children: [
|
||||
/*#__PURE__*/ _jsx("link", {
|
||||
crossOrigin: "anonymous",
|
||||
href: origin,
|
||||
rel: "preconnect"
|
||||
}),
|
||||
/*#__PURE__*/ _jsx("link", {
|
||||
href: origin,
|
||||
rel: "dns-prefetch"
|
||||
})
|
||||
]
|
||||
});
|
||||
}
|
||||
export default MediaPreconnect;
|
||||
|
||||
//# sourceMappingURL=MediaPreconnect.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../src/modules/storage/MediaPreconnect.tsx"],"sourcesContent":["/**\n * Emits <link rel=\"preconnect\"> + <link rel=\"dns-prefetch\"> for the media CDN\n * domain (R2_PUBLIC_URL), so the browser opens the TLS/DNS connection to the\n * media host early — before it hits the first <img>. Saves ~150–300ms on the\n * first image load.\n *\n * Reads the domain from R2_PUBLIC_URL (the same env var buildR2Storage uses),\n * so there's ONE source of truth — no per-project hardcoded domain. Renders\n * nothing when R2_PUBLIC_URL isn't set (local disk / no CDN → nothing to\n * preconnect).\n *\n * Server Component — drop it in the <head> of your locale layout:\n *\n * import { MediaPreconnect } from '@intecion/ipal-kit/rsc'\n * // in <head> (or top of <body> — Next hoists link tags):\n * <MediaPreconnect />\n */\nexport function MediaPreconnect() {\n const publicUrl = process.env.R2_PUBLIC_URL?.replace(/\\/$/, '')\n if (!publicUrl) {return null}\n\n // Origin only (scheme + host) — preconnect targets an origin, not a path.\n let origin: string\n try {\n origin = new URL(publicUrl).origin\n } catch {\n return null // malformed URL → skip rather than emit a broken tag\n }\n\n return (\n <>\n <link crossOrigin=\"anonymous\" href={origin} rel=\"preconnect\" />\n <link href={origin} rel=\"dns-prefetch\" />\n </>\n )\n}\n\nexport default MediaPreconnect\n"],"names":["MediaPreconnect","publicUrl","process","env","R2_PUBLIC_URL","replace","origin","URL","link","crossOrigin","href","rel"],"mappings":";AAAA;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,SAASA;IACd,MAAMC,YAAYC,QAAQC,GAAG,CAACC,aAAa,EAAEC,QAAQ,OAAO;IAC5D,IAAI,CAACJ,WAAW;QAAC,OAAO;IAAI;IAE5B,0EAA0E;IAC1E,IAAIK;IACJ,IAAI;QACFA,SAAS,IAAIC,IAAIN,WAAWK,MAAM;IACpC,EAAE,OAAM;QACN,OAAO,KAAK,qDAAqD;;IACnE;IAEA,qBACE;;0BACE,KAACE;gBAAKC,aAAY;gBAAYC,MAAMJ;gBAAQK,KAAI;;0BAChD,KAACH;gBAAKE,MAAMJ;gBAAQK,KAAI;;;;AAG9B;AAEA,eAAeX,gBAAe"}
|
||||
Reference in New Issue
Block a user