Added env check on compile time
This commit is contained in:
parent
7c03370f53
commit
f038485cb7
|
|
@ -1,11 +1,8 @@
|
|||
import "dotenv/config";
|
||||
import type { Config } from "drizzle-kit";
|
||||
import appEnv from "./src/appEnv";
|
||||
|
||||
const databaseUrl = process.env.DATABASE_URL;
|
||||
|
||||
if (!databaseUrl) {
|
||||
throw new Error("DATABASE_URL is not set");
|
||||
}
|
||||
const databaseUrl = appEnv.DATABASE_URL;
|
||||
|
||||
export default {
|
||||
schema: "./src/drizzle/schema/*",
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
"db:push": "drizzle-kit push",
|
||||
"db:seed": "tsx src/drizzle/seed.ts",
|
||||
"db:migrate": "tsx src/drizzle/migration.ts",
|
||||
"db:studio": "drizzle-kit studio"
|
||||
"db:studio": "drizzle-kit studio",
|
||||
"start": "tsc -p tsconfig.json && tsx src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hono/node-server": "^1.11.1",
|
||||
|
|
|
|||
20
apps/backend/src/appEnv.ts
Normal file
20
apps/backend/src/appEnv.ts
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import dotenv from "dotenv";
|
||||
import { z } from "zod";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const envSchema = z.object({
|
||||
APP_PORT: z.coerce.number().int(),
|
||||
DATABASE_URL: z.string(),
|
||||
ACCESS_TOKEN_SECRET: z.string(),
|
||||
REFRESH_TOKEN_SECRET: z.string(),
|
||||
COOKIE_SECRET: z.string(),
|
||||
});
|
||||
|
||||
const parsedEnv = envSchema.safeParse(process.env);
|
||||
|
||||
if (!parsedEnv.success) {
|
||||
throw new Error(parsedEnv.error.toString());
|
||||
}
|
||||
|
||||
export default parsedEnv.data;
|
||||
|
|
@ -7,10 +7,11 @@ import * as rolesSchema from "./schema/roles";
|
|||
import * as permissionsToRolesSchema from "./schema/permissionsToRoles";
|
||||
import * as permissionsToUsersSchema from "./schema/permissionsToUsers";
|
||||
import * as rolesToUsersSchema from "./schema/rolesToUsers";
|
||||
import appEnv from "../appEnv";
|
||||
|
||||
configDotenv();
|
||||
|
||||
const dbUrl = process.env.DATABASE_URL;
|
||||
const dbUrl = appEnv.DATABASE_URL;
|
||||
|
||||
if (!dbUrl) throw new Error("DATABASE_URL is not set");
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,11 @@ import { configDotenv } from "dotenv";
|
|||
import { drizzle } from "drizzle-orm/postgres-js";
|
||||
import { migrate } from "drizzle-orm/postgres-js/migrator";
|
||||
import postgres from "postgres";
|
||||
import appEnv from "../appEnv";
|
||||
|
||||
configDotenv();
|
||||
|
||||
const dbUrl = process.env.DATABASE_URL;
|
||||
const dbUrl = appEnv.DATABASE_URL;
|
||||
|
||||
if (!dbUrl) throw new Error("DATABASE_URL is not set");
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import { logger } from "hono/logger";
|
|||
import DashboardError from "./errors/DashboardError";
|
||||
import HonoEnv from "./types/HonoEnv";
|
||||
import devRoutes from "./routes/dev/route";
|
||||
import appEnv from "./appEnv";
|
||||
|
||||
configDotenv();
|
||||
|
||||
|
|
@ -27,7 +28,7 @@ const routes = app
|
|||
})
|
||||
)
|
||||
.use(async (c, next) => {
|
||||
const cookieSecret = process.env.COOKIE_SECRET;
|
||||
const cookieSecret = appEnv.COOKIE_SECRET;
|
||||
|
||||
if (!cookieSecret)
|
||||
throw new HTTPException(500, {
|
||||
|
|
@ -108,7 +109,7 @@ const routes = app
|
|||
}
|
||||
});
|
||||
|
||||
const port = +(process.env.APP_PORT ?? 3000);
|
||||
const port = appEnv.APP_PORT;
|
||||
console.log(`Server is running on port ${port}`);
|
||||
|
||||
serve({
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import { permissionsSchema } from "../../drizzle/schema/permissions";
|
|||
import { SpecificPermissionCode } from "../../data/permissions";
|
||||
import authInfo from "../../middlewares/authInfo";
|
||||
import { unauthorized } from "../../errors/DashboardError";
|
||||
import appEnv from "../../appEnv";
|
||||
|
||||
const authRoutes = new Hono<HonoEnv>()
|
||||
.post(
|
||||
|
|
@ -98,7 +99,7 @@ const authRoutes = new Hono<HonoEnv>()
|
|||
uid: user[0].users.id,
|
||||
});
|
||||
|
||||
const cookieSecret = process.env.COOKIE_SECRET;
|
||||
const cookieSecret = appEnv.COOKIE_SECRET;
|
||||
|
||||
if (!cookieSecret)
|
||||
throw new HTTPException(500, {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
import jwt from "jsonwebtoken";
|
||||
import appEnv from "../appEnv";
|
||||
|
||||
// Environment variables for secrets, defaulting to a random secret if not set.
|
||||
const accessTokenSecret =
|
||||
process.env.ACCESS_TOKEN_SECRET ?? "some-random-secret";
|
||||
const refreshTokenSecret =
|
||||
process.env.REFRESH_TOKEN_SECRET ?? "some-very-random-secret";
|
||||
const accessTokenSecret = appEnv.ACCESS_TOKEN_SECRET;
|
||||
const refreshTokenSecret = appEnv.REFRESH_TOKEN_SECRET;
|
||||
|
||||
// Algorithm to be used for JWT encoding.
|
||||
const algorithm: jwt.Algorithm = "HS256";
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@
|
|||
"strict": true,
|
||||
"types": ["node"],
|
||||
"jsx": "react-jsx",
|
||||
"jsxImportSource": "hono/jsx"
|
||||
}
|
||||
"jsxImportSource": "hono/jsx",
|
||||
"noEmit": true,
|
||||
"skipLibCheck": true
|
||||
},
|
||||
"include": ["src/**/*"]
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user