Skip to content

Commit

Permalink
feat: use zod to parse client env vars
Browse files Browse the repository at this point in the history
  • Loading branch information
swh00tw committed Feb 28, 2024
1 parent d5f3c2b commit ea17b86
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 8 deletions.
6 changes: 0 additions & 6 deletions apps/recnet/src/clientConfig.ts

This file was deleted.

32 changes: 32 additions & 0 deletions apps/recnet/src/clientEnv.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { z } from "zod";

export const clientEnvSchema = z.object({
NEXT_PUBLIC_FIREBASE_API_KEY: z.string(),
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: z.string(),
NEXT_PUBLIC_FIREBASE_PROJECT_ID: z.string(),
NEXT_PUBLIC_FIREBASE_APP_ID: z.string(),
NEXT_PUBLIC_GA_TRACKING_ID: z.string(),
});

const clientEnvRes = clientEnvSchema.safeParse({
NEXT_PUBLIC_FIREBASE_API_KEY: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN:
process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
NEXT_PUBLIC_FIREBASE_PROJECT_ID: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
NEXT_PUBLIC_FIREBASE_APP_ID: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
NEXT_PUBLIC_GA_TRACKING_ID: process.env.NEXT_PUBLIC_GA_TRACKING_ID,
});

if (!clientEnvRes.success) {
// console.error(clientEnvRes.error.issues);
throw new Error("There is an error with the CLIENT environment variables");
}

export const clientEnv = clientEnvRes.data;

export const firebaseClientEnv = {
apiKey: clientEnvRes.data.NEXT_PUBLIC_FIREBASE_API_KEY,
authDomain: clientEnvRes.data.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
projectId: clientEnvRes.data.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
appId: clientEnvRes.data.NEXT_PUBLIC_FIREBASE_APP_ID,
};
4 changes: 2 additions & 2 deletions apps/recnet/src/firebase/client.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { initializeApp, getApp, getApps } from "firebase/app";
import { getAuth } from "firebase/auth";
import { clientConfig } from "@/clientConfig";
import { firebaseClientEnv } from "@/clientEnv";

export const getFirebaseApp = () => {
if (getApps().length) {
return getApp();
}

const app = initializeApp(clientConfig);
const app = initializeApp(firebaseClientEnv);

return app;
};
Expand Down

0 comments on commit ea17b86

Please sign in to comment.