Skip to content

Commit a1d00fd

Browse files
committedMar 28, 2024
chore: tidy env vars
1 parent dbfa604 commit a1d00fd

File tree

12 files changed

+45
-39
lines changed

12 files changed

+45
-39
lines changed
 

‎next.config.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ const nextConfig = {
88
experimental: {
99
instrumentationHook: true,
1010
},
11-
webpack: (
12-
config,
13-
{ isServer },
14-
) => {
11+
webpack: (config, { isServer }) => {
1512
config.externals.push('@node-rs/argon2', '@node-rs/bcrypt');
1613
if (isServer) {
1714
config.ignoreWarnings = [{ module: /opentelemetry/ }];

‎scripts/create-bucket.mjs

+2-6
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ if (
66
!process.env.S3_USE_SSL ||
77
!process.env.S3_ACCESS_KEY ||
88
!process.env.S3_SECRET_KEY ||
9-
!process.env.S3_BUCKET_NAME ||
10-
!process.env.S3_BUCKET_REGION
9+
!process.env.S3_BUCKET_NAME
1110
) {
1211
throw new Error('S3 environment variables are not set');
1312
}
@@ -27,10 +26,7 @@ const main = async () => {
2726
} else {
2827
console.info(`Bucket ${process.env.S3_BUCKET_NAME} does not exist.`);
2928
console.info(`Creating bucket ${process.env.S3_BUCKET_NAME}...`);
30-
await fileStorage.makeBucket(
31-
process.env.S3_BUCKET_NAME,
32-
process.env.S3_BUCKET_REGION,
33-
);
29+
await fileStorage.makeBucket(process.env.S3_BUCKET_NAME);
3430
console.info(`Bucket ${process.env.S3_BUCKET_NAME} created.`);
3531
}
3632
process.exit(0);

‎src/app/api/healthcheck/route.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { redis, db, fileStorage } from '@/infra';
1+
import { db, fileStorage, redis } from '@/infra';
22
import { withErrorHandling } from '@/lib/error';
33
import { HttpResponse } from '@/lib/response';
44
import { sql } from 'drizzle-orm';

‎src/app/auth/sign-in/_facebook/route.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// });
1515
// cookies().set('facebook_oauth_state', state, {
1616
// path: '/',
17-
// secure: env.NODE_ENV === 'production',
17+
// secure: process.env.NODE_ENV === 'production',
1818
// httpOnly: true,
1919
// maxAge: env.AUTH_COOKIE_DURATION_S,
2020
// sameSite: 'lax',

‎src/app/auth/sign-in/github/route.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export const GET = withErrorHandling(async () => {
1414
});
1515
cookies().set('github_oauth_state', state, {
1616
path: '/',
17-
secure: env.NODE_ENV === 'production',
17+
secure: process.env.NODE_ENV === 'production',
1818
httpOnly: true,
1919
maxAge: env.AUTH_COOKIE_DURATION_S,
2020
sameSite: 'lax',

‎src/app/auth/sign-in/google/route.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ export const GET = withErrorHandling(async () => {
1515
});
1616
cookies().set('google_oauth_code_verifier', codeVerifier, {
1717
path: '/',
18-
secure: env.NODE_ENV === 'production',
18+
secure: process.env.NODE_ENV === 'production',
1919
httpOnly: true,
2020
maxAge: env.AUTH_COOKIE_DURATION_S,
2121
sameSite: 'lax',
2222
});
2323
cookies().set('google_oauth_state', state, {
2424
path: '/',
25-
secure: env.NODE_ENV === 'production',
25+
secure: process.env.NODE_ENV === 'production',
2626
httpOnly: true,
2727
maxAge: env.AUTH_COOKIE_DURATION_S,
2828
sameSite: 'lax',

‎src/app/layout.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const fontSans = FontSans({
2121

2222
export const metadata: Metadata = {
2323
metadataBase:
24-
env.NODE_ENV === 'development'
24+
process.env.NODE_ENV === 'development'
2525
? new URL(env.ORIGIN)
2626
: new URL(siteConfig.url),
2727
title: {

‎src/components/ui/spotlight.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const Spotlight = ({ className, fill }: SpotlightProps) => {
1010
return (
1111
<svg
1212
className={cn(
13-
'animate-spotlight pointer-events-none absolute z-[1] h-[169%] w-[138%] opacity-0 lg:w-[84%]',
13+
'pointer-events-none absolute z-[1] h-[169%] w-[138%] animate-spotlight opacity-0 lg:w-[84%]',
1414
className,
1515
)}
1616
xmlns="http://www.w3.org/2000/svg"

‎src/config/env.ts

+32-19
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,24 @@ const isBoolean = isString.transform((value) => value === 'true');
66
const isNumber = isString.transform(Number);
77

88
const envSchema = z.object({
9-
// Node.js
10-
NODE_ENV: z.enum(['development', 'production', 'test']),
11-
12-
// Express
9+
// General
10+
NEXT_MANUAL_SIG_HANDLE: isBoolean,
1311
PROTOCOL: z.enum(['http', 'https']),
14-
APP_PORT: isNumber,
1512
HOST: isString,
13+
APP_PORT: isNumber,
1614

17-
// General
15+
// Authentication
16+
AUTH_COOKIE_DURATION_S: isNumber,
17+
GOOGLE_CLIENT_ID: isString,
18+
GOOGLE_CLIENT_SECRET: isString,
19+
GOOGLE_REDIRECT_URI: isString,
20+
// FACEBOOK_CLIENT_ID: isString,
21+
// FACEBOOK_CLIENT_SECRET: isString,
22+
// FACEBOOK_REDIRECT_URI: isString,
23+
GITHUB_CLIENT_ID: isString,
24+
GITHUB_CLIENT_SECRET: isString,
25+
26+
// Logging
1827
APP_LOGGING: isBoolean,
1928
LOG_LEVEL: z.enum([
2029
'error',
@@ -25,25 +34,39 @@ const envSchema = z.object({
2534
'debug',
2635
'silly',
2736
]),
28-
ENABLE_EMAIL: isBoolean,
37+
38+
// Rate limiting
2939
ENABLE_RATE_LIMIT: isBoolean,
30-
ENABLE_ANALYTICS: isBoolean,
31-
AUTH_COOKIE_DURATION_S: isNumber,
40+
41+
// Captcha
42+
NEXT_PUBLIC_ENABLE_CAPTCHA: isBoolean.optional(),
43+
NEXT_PUBLIC_CAPTCHA_SITE_KEY: isString.optional(),
3244
CAPTCHA_SECRET_KEY: isString.optional(),
45+
46+
// Email
47+
ENABLE_EMAIL: isBoolean,
3348
AWS_ACCESS_KEY_ID: isString.optional(),
3449
AWS_SECRET_ACCESS_KEY: isString.optional(),
3550

3651
// Analytics
52+
ENABLE_ANALYTICS: isBoolean,
3753
UMAMI_SCRIPT_URL: isString.optional(),
3854
UMAMI_ANALYTICS_ID: isString.optional(),
3955

4056
// Instrumentation
4157
ENABLE_INSTRUMENTATION: isBoolean,
58+
OTEL_EXPORTER_OTLP_ENDPOINT: isString.optional(),
59+
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: isString.optional(),
60+
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: isString.optional(),
61+
NEXT_OTEL_VERBOSE: isNumber.optional(),
62+
OTEL_LOG_LEVEL: isString.optional(),
4263

4364
// Database
4465
DATABASE_LOGGING: isBoolean,
4566
DATABASE_URL: isString,
4667
REDIS_URL: isString,
68+
69+
// S3
4770
S3_ENDPOINT: isString,
4871
S3_PORT: isNumber,
4972
S3_USE_SSL: isBoolean,
@@ -52,16 +75,6 @@ const envSchema = z.object({
5275
S3_BUCKET_NAME: isString,
5376
S3_PRESIGNED_URL_EXPIRATION_S: isNumber,
5477

55-
// Auth
56-
GOOGLE_CLIENT_ID: isString,
57-
GOOGLE_CLIENT_SECRET: isString,
58-
GOOGLE_REDIRECT_URI: isString,
59-
// FACEBOOK_CLIENT_ID: isString,
60-
// FACEBOOK_CLIENT_SECRET: isString,
61-
// FACEBOOK_REDIRECT_URI: isString,
62-
GITHUB_CLIENT_ID: isString,
63-
GITHUB_CLIENT_SECRET: isString,
64-
6578
// Replicate
6679
REPLICATE_API_TOKEN: isString,
6780
REPLICATE_WEBHOOK_SECRET: isString,

‎src/infra/database.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ declare global {
1919

2020
let db: PostgresJsDatabase<typeof schema>;
2121

22-
if (env.NODE_ENV === 'production') {
22+
if (process.env.NODE_ENV === 'production') {
2323
db = drizzle(postgres(env.DATABASE_URL), {
2424
logger: env.DATABASE_LOGGING && new DatabaseLogger(),
2525
schema,

‎src/infra/redis.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ declare global {
1111

1212
let redis: RedisClientType;
1313

14-
if (env.NODE_ENV === 'production') {
14+
if (process.env.NODE_ENV === 'production') {
1515
redis = createClient({ url: env.REDIS_URL, disableOfflineQueue: true });
1616
} else {
1717
if (!global.redis) {

‎src/lib/auth.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const auth = new Lucia(adapter, {
1616
expires: false,
1717
attributes: {
1818
// set to `true` when using HTTPS
19-
secure: env.NODE_ENV === 'production',
19+
secure: process.env.NODE_ENV === 'production',
2020
},
2121
},
2222
getUserAttributes: (attributes) => {

0 commit comments

Comments
 (0)
Please sign in to comment.