mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-07-24 17:03:55 +10:00
Merge branch 'main' of github.com:amruthpillai/reactive-resume
This commit is contained in:
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "@reactive-resume/env",
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"exports": {
|
||||
"./server": "./src/server.ts"
|
||||
},
|
||||
"scripts": {
|
||||
"typecheck": "tsgo --noEmit",
|
||||
"test": "vitest run --passWithNoTests",
|
||||
"test:coverage": "vitest run --coverage --passWithNoTests",
|
||||
"test:ci": "vitest run --coverage --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests",
|
||||
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
|
||||
},
|
||||
"dependencies": {
|
||||
"@t3-oss/env-core": "^0.13.11",
|
||||
"zod": "^4.4.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@reactive-resume/config": "workspace:*",
|
||||
"@types/node": "^25.6.0",
|
||||
"@typescript/native-preview": "7.0.0-dev.20260507.1",
|
||||
"typescript": "^6.0.3"
|
||||
}
|
||||
}
|
||||
Vendored
+71
@@ -0,0 +1,71 @@
|
||||
import { createEnv } from "@t3-oss/env-core";
|
||||
import { z } from "zod";
|
||||
|
||||
export const env = createEnv({
|
||||
server: {
|
||||
// Application
|
||||
APP_URL: z.url({ protocol: /https?/ }),
|
||||
|
||||
// Database
|
||||
DATABASE_URL: z.url({ protocol: /postgres(ql)?/ }),
|
||||
|
||||
// Authentication
|
||||
AUTH_SECRET: z.string().min(1),
|
||||
BETTER_AUTH_API_KEY: z.string().min(1).optional(),
|
||||
|
||||
// Social Auth (Google)
|
||||
GOOGLE_CLIENT_ID: z.string().min(1).optional(),
|
||||
GOOGLE_CLIENT_SECRET: z.string().min(1).optional(),
|
||||
|
||||
// Social Auth (GitHub)
|
||||
GITHUB_CLIENT_ID: z.string().min(1).optional(),
|
||||
GITHUB_CLIENT_SECRET: z.string().min(1).optional(),
|
||||
|
||||
// Social Auth (LinkedIn)
|
||||
LINKEDIN_CLIENT_ID: z.string().min(1).optional(),
|
||||
LINKEDIN_CLIENT_SECRET: z.string().min(1).optional(),
|
||||
|
||||
// Custom OAuth Provider
|
||||
OAUTH_PROVIDER_NAME: z.string().min(1).optional(),
|
||||
OAUTH_CLIENT_ID: z.string().min(1).optional(),
|
||||
OAUTH_CLIENT_SECRET: z.string().min(1).optional(),
|
||||
OAUTH_DISCOVERY_URL: z.url({ protocol: /https?/ }).optional(),
|
||||
OAUTH_AUTHORIZATION_URL: z.url({ protocol: /https?/ }).optional(),
|
||||
OAUTH_TOKEN_URL: z.url({ protocol: /https?/ }).optional(),
|
||||
OAUTH_USER_INFO_URL: z.url({ protocol: /https?/ }).optional(),
|
||||
OAUTH_DYNAMIC_CLIENT_REDIRECT_HOSTS: z.string().optional(),
|
||||
OAUTH_SCOPES: z
|
||||
.string()
|
||||
.min(1)
|
||||
.transform((value) => value.split(" "))
|
||||
.default(["openid", "profile", "email"]),
|
||||
|
||||
// Email (SMTP)
|
||||
SMTP_HOST: z.string().min(1).optional(),
|
||||
SMTP_PORT: z.coerce.number().int().min(1).max(65535).default(587),
|
||||
SMTP_USER: z.string().min(1).optional(),
|
||||
SMTP_PASS: z.string().min(1).optional(),
|
||||
SMTP_FROM: z.string().min(1).optional(),
|
||||
SMTP_SECURE: z.stringbool().default(false),
|
||||
|
||||
// Storage (Optional)
|
||||
S3_ACCESS_KEY_ID: z.string().min(1).optional(),
|
||||
S3_SECRET_ACCESS_KEY: z.string().min(1).optional(),
|
||||
S3_REGION: z.string().default("us-east-1"),
|
||||
S3_ENDPOINT: z.url({ protocol: /https?/ }).optional(),
|
||||
S3_BUCKET: z.string().min(1).optional(),
|
||||
S3_FORCE_PATH_STYLE: z.stringbool().default(false),
|
||||
|
||||
// Feature Flags
|
||||
FLAG_DISABLE_SIGNUPS: z.stringbool().default(false),
|
||||
FLAG_DISABLE_EMAIL_AUTH: z.stringbool().default(false),
|
||||
FLAG_DISABLE_IMAGE_PROCESSING: z.stringbool().default(false),
|
||||
|
||||
// Crowdin (optional, for translation tooling)
|
||||
CROWDIN_PROJECT_ID: z.string().optional(),
|
||||
CROWDIN_API_TOKEN: z.string().optional(),
|
||||
GOOGLE_CLOUD_API_KEY: z.string().optional(),
|
||||
},
|
||||
runtimeEnv: process.env,
|
||||
emptyStringAsUndefined: true,
|
||||
});
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "@reactive-resume/config/tsconfig.base.json"
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { createVitestProjectConfig } from "../../vitest.shared";
|
||||
|
||||
export default createVitestProjectConfig({
|
||||
name: "@reactive-resume/env",
|
||||
dirname: fileURLToPath(new URL(".", import.meta.url)),
|
||||
});
|
||||
Reference in New Issue
Block a user