summaryrefslogtreecommitdiff
path: root/packages/integrations/vercel/src/lib/speed-insights.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/vercel/src/lib/speed-insights.ts')
-rw-r--r--packages/integrations/vercel/src/lib/speed-insights.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/integrations/vercel/src/lib/speed-insights.ts b/packages/integrations/vercel/src/lib/speed-insights.ts
new file mode 100644
index 000000000..8e3639536
--- /dev/null
+++ b/packages/integrations/vercel/src/lib/speed-insights.ts
@@ -0,0 +1,29 @@
+export type VercelSpeedInsightsConfig = {
+ enabled: boolean;
+};
+
+export function getSpeedInsightsViteConfig(enabled?: boolean) {
+ if (enabled) {
+ return {
+ define: exposeEnv(['VERCEL_ANALYTICS_ID']),
+ };
+ }
+
+ return {};
+}
+
+/**
+ * While Vercel adds the `PUBLIC_` prefix for their `VERCEL_` env vars by default, some env vars
+ * like `VERCEL_ANALYTICS_ID` aren't, so handle them here so that it works correctly in runtime.
+ */
+export function exposeEnv(envs: string[]): Record<string, unknown> {
+ const mapped: Record<string, unknown> = {};
+
+ envs
+ .filter((env) => process.env[env])
+ .forEach((env) => {
+ mapped[`import.meta.env.PUBLIC_${env}`] = JSON.stringify(process.env[env]);
+ });
+
+ return mapped;
+}