env.ts
import { createEnv } from "@t3-oss/env-core";
import { minLength, optional, pipe, string, url } from "valibot";
const requiredString = () => pipe(string(), minLength(1));
const requiredUrl = () => pipe(string(), url());
type RuntimeEnv = NodeJS.ProcessEnv;
export const createServerAlchemyEnv = (runtimeEnv: RuntimeEnv = process.env) => {
return createEnv({
runtimeEnvStrict: {
ADMIN_BOT_TOKEN: runtimeEnv.ADMIN_BOT_TOKEN,
CORS_ORIGIN: runtimeEnv.CORS_ORIGIN,
DASH_URL: runtimeEnv.DASH_URL,
DELIVERY_API_URL: runtimeEnv.DELIVERY_API_URL,
DELIVERY_PASSWORD: runtimeEnv.DELIVERY_PASSWORD,
DELIVERY_SENDERID: runtimeEnv.DELIVERY_SENDERID,
DELIVERY_USERNAME: runtimeEnv.DELIVERY_USERNAME,
DOMAIN: runtimeEnv.DOMAIN,
FIRECRAWL_API_KEY: runtimeEnv.FIRECRAWL_API_KEY,
GOOGLE_CALLBACK_URL: runtimeEnv.GOOGLE_CALLBACK_URL,
GOOGLE_CLIENT_ID: runtimeEnv.GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET: runtimeEnv.GOOGLE_CLIENT_SECRET,
IMAGE_UPLOAD_TOKEN: runtimeEnv.IMAGE_UPLOAD_TOKEN,
KHAAN_ACCOUNT_NAME: runtimeEnv.KHAAN_ACCOUNT_NAME,
KHAAN_ACCOUNT_NUMBER: runtimeEnv.KHAAN_ACCOUNT_NUMBER,
KHAAN_BRANCH_CODE: runtimeEnv.KHAAN_BRANCH_CODE,
KHAAN_DEVICE_ID: runtimeEnv.KHAAN_DEVICE_ID,
KHAAN_PASSWORD: runtimeEnv.KHAAN_PASSWORD,
KHAAN_USER_AGENT: runtimeEnv.KHAAN_USER_AGENT,
KHAAN_USERNAME: runtimeEnv.KHAAN_USERNAME,
MESSENGER_ACCESS_TOKEN: runtimeEnv.MESSENGER_ACCESS_TOKEN,
MESSENGER_VERIFY_TOKEN: runtimeEnv.MESSENGER_VERIFY_TOKEN,
OPENCODE_GO_API_KEY: runtimeEnv.OPENCODE_GO_API_KEY,
PLANETSCALE_DATABASE: runtimeEnv.PLANETSCALE_DATABASE,
PLANETSCALE_HOST: runtimeEnv.PLANETSCALE_HOST,
PLANETSCALE_PASSWORD: runtimeEnv.PLANETSCALE_PASSWORD,
PLANETSCALE_USER: runtimeEnv.PLANETSCALE_USER,
POSTHOG_API_KEY: runtimeEnv.POSTHOG_API_KEY,
POSTHOG_HOST: runtimeEnv.POSTHOG_HOST,
POSTHOG_PROJECT_API_KEY: runtimeEnv.POSTHOG_PROJECT_API_KEY,
POSTHOG_PROJECT_ID: runtimeEnv.POSTHOG_PROJECT_ID,
QPAY_CALLBACK_URL: runtimeEnv.QPAY_CALLBACK_URL,
QPAY_PASSWORD: runtimeEnv.QPAY_PASSWORD,
QPAY_URL: runtimeEnv.QPAY_URL,
QPAY_USERNAME: runtimeEnv.QPAY_USERNAME,
RESTOCK_FROM_EMAIL: runtimeEnv.RESTOCK_FROM_EMAIL,
SMS_GATEWAY_LOGIN: runtimeEnv.SMS_GATEWAY_LOGIN,
SMS_GATEWAY_PASSWORD: runtimeEnv.SMS_GATEWAY_PASSWORD,
TELEGRAM_ADMIN_BOT_TOKEN: runtimeEnv.TELEGRAM_ADMIN_BOT_TOKEN,
TELEGRAM_ADMIN_CHAT_ID: runtimeEnv.TELEGRAM_ADMIN_CHAT_ID,
UPSTASH_REDIS_REST_TOKEN: runtimeEnv.UPSTASH_REDIS_REST_TOKEN,
UPSTASH_REDIS_REST_URL: runtimeEnv.UPSTASH_REDIS_REST_URL,
UPSTASH_SEARCH_TOKEN: runtimeEnv.UPSTASH_SEARCH_TOKEN,
UPSTASH_SEARCH_URL: runtimeEnv.UPSTASH_SEARCH_URL,
},
server: {
ADMIN_BOT_TOKEN: optional(string()),
CORS_ORIGIN: requiredString(),
DASH_URL: requiredUrl(),
DELIVERY_API_URL: requiredUrl(),
DELIVERY_PASSWORD: requiredString(),
DELIVERY_SENDERID: requiredString(),
DELIVERY_USERNAME: requiredString(),
DOMAIN: requiredString(),
FIRECRAWL_API_KEY: requiredString(),
GOOGLE_CALLBACK_URL: requiredUrl(),
GOOGLE_CLIENT_ID: requiredString(),
GOOGLE_CLIENT_SECRET: requiredString(),
IMAGE_UPLOAD_TOKEN: requiredString(),
KHAAN_ACCOUNT_NAME: optional(requiredString(), "Aviddaram Bazarragchaa"),
KHAAN_ACCOUNT_NUMBER: requiredString(),
KHAAN_BRANCH_CODE: optional(requiredString(), "5041"),
KHAAN_DEVICE_ID: requiredString(),
KHAAN_PASSWORD: requiredString(),
KHAAN_USER_AGENT: optional(requiredString()),
KHAAN_USERNAME: requiredString(),
MESSENGER_ACCESS_TOKEN: requiredString(),
MESSENGER_VERIFY_TOKEN: requiredString(),
OPENCODE_GO_API_KEY: requiredString(),
PLANETSCALE_DATABASE: requiredString(),
PLANETSCALE_HOST: requiredString(),
PLANETSCALE_PASSWORD: requiredString(),
PLANETSCALE_USER: requiredString(),
POSTHOG_API_KEY: requiredString(),
POSTHOG_HOST: optional(requiredUrl(), "https://us.i.posthog.com"),
POSTHOG_PROJECT_API_KEY: requiredString(),
POSTHOG_PROJECT_ID: requiredString(),
QPAY_CALLBACK_URL: optional(requiredUrl()),
QPAY_PASSWORD: requiredString(),
QPAY_URL: requiredUrl(),
QPAY_USERNAME: requiredString(),
RESTOCK_FROM_EMAIL: requiredString(),
SMS_GATEWAY_LOGIN: requiredString(),
SMS_GATEWAY_PASSWORD: requiredString(),
TELEGRAM_ADMIN_BOT_TOKEN: optional(requiredString()),
TELEGRAM_ADMIN_CHAT_ID: optional(requiredString()),
UPSTASH_REDIS_REST_TOKEN: requiredString(),
UPSTASH_REDIS_REST_URL: requiredUrl(),
UPSTASH_SEARCH_TOKEN: requiredString(),
UPSTASH_SEARCH_URL: requiredUrl(),
},
});
};
export const createAdminAlchemyEnv = (runtimeEnv: RuntimeEnv = process.env) => {
return createEnv({
runtimeEnvStrict: {
VITE_SERVER_URL: runtimeEnv.VITE_SERVER_URL,
},
server: {
VITE_SERVER_URL: requiredUrl(),
},
});
};
export const createStoreAlchemyEnv = (runtimeEnv: RuntimeEnv = process.env) => {
return createEnv({
runtimeEnvStrict: {
PUBLIC_API_URL: runtimeEnv.PUBLIC_API_URL,
},
server: {
PUBLIC_API_URL: requiredUrl(),
},
});
};