diff options
| author | Dhravya <[email protected]> | 2024-02-21 16:11:35 -0700 |
|---|---|---|
| committer | Dhravya <[email protected]> | 2024-02-21 16:11:35 -0700 |
| commit | cdceb1bc87dc2d5ef42a7f172ea5dc2263c5c526 (patch) | |
| tree | e0234f7fff63b312f18c945bed37a430d1e68755 /apps/web/src/env.js | |
| download | supermemory-cdceb1bc87dc2d5ef42a7f172ea5dc2263c5c526.tar.xz supermemory-cdceb1bc87dc2d5ef42a7f172ea5dc2263c5c526.zip | |
initialised monorepo with auth and extension communication
Diffstat (limited to 'apps/web/src/env.js')
| -rw-r--r-- | apps/web/src/env.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/apps/web/src/env.js b/apps/web/src/env.js new file mode 100644 index 00000000..7bc15152 --- /dev/null +++ b/apps/web/src/env.js @@ -0,0 +1,65 @@ +import { createEnv } from "@t3-oss/env-nextjs"; +import { z } from "zod"; + +export const env = createEnv({ + /** + * Specify your server-side environment variables schema here. This way you can ensure the app + * isn't built with invalid env vars. + */ + server: { + DATABASE_URL: z + .string() + .refine( + (str) => !str.includes("YOUR_MYSQL_URL_HERE"), + "You forgot to change the default URL" + ), + NODE_ENV: z + .enum(["development", "test", "production"]) + .default("development"), + NEXTAUTH_SECRET: + process.env.NODE_ENV === "production" + ? z.string() + : z.string().optional(), + NEXTAUTH_URL: z.preprocess( + // This makes Vercel deployments not fail if you don't set NEXTAUTH_URL + // Since NextAuth.js automatically uses the VERCEL_URL if present. + (str) => process.env.VERCEL_URL ?? str, + // VERCEL_URL doesn't include `https` so it cant be validated as a URL + process.env.VERCEL ? z.string() : z.string().url() + ), + GOOGLE_CLIENT_ID: z.string(), + GOOGLE_CLIENT_SECRET: z.string(), + }, + + /** + * Specify your client-side environment variables schema here. This way you can ensure the app + * isn't built with invalid env vars. To expose them to the client, prefix them with + * `NEXT_PUBLIC_`. + */ + client: { + // NEXT_PUBLIC_CLIENTVAR: z.string(), + }, + + /** + * You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g. + * middlewares) or client-side so we need to destruct manually. + */ + runtimeEnv: { + DATABASE_URL: process.env.DATABASE_URL, + NODE_ENV: process.env.NODE_ENV, + NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET, + NEXTAUTH_URL: process.env.NEXTAUTH_URL, + GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID, + GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET, + }, + /** + * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially + * useful for Docker builds. + */ + skipValidation: !!process.env.SKIP_ENV_VALIDATION, + /** + * Makes it so that empty strings are treated as undefined. `SOME_VAR: z.string()` and + * `SOME_VAR=''` will throw an error. + */ + emptyStringAsUndefined: true, +}); |