Distributed cache * cache deleteKey now uses an options object instead of a lonely argument variable fuzzy * merge * remove debug logs and cleanup * cleanup * add fault handling * add fault handling * add pid when logging redis client creation * add identifier when logging redis client creation * cleanup * feat: add redis-api as it's own app * feature: use http wrapper for redis * feat: add the possibility to fallback to unstable_cache * Add error handling if redis cache is unresponsive * add logging for unstable_cache * merge * don't cache errors * fix: metadatabase on branchdeploys * Handle when /en/destinations throws add ErrorBoundary * Add sentry-logging when ErrorBoundary catches exception * Fix error handling for distributed cache * cleanup code * Added Application Insights back * Update generateApiKeys script and remove duplicate * Merge branch 'feature/redis' of bitbucket.org:scandic-swap/web into feature/redis * merge Approved-by: Linus Flood
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import { createEnv } from "@t3-oss/env-core";
|
|
import { z } from "zod";
|
|
|
|
const redisConnectionRegex =
|
|
/^((?<username>.*?):(?<password>.*?)@)?(?<host>.*?):(?<port>\d+)$/;
|
|
export const env = createEnv({
|
|
server: {
|
|
IS_PROD: z
|
|
.boolean()
|
|
.default(false)
|
|
.transform(
|
|
() =>
|
|
process.env.BUN_ENV === "production" ||
|
|
process.env.NODE_ENV === "production"
|
|
),
|
|
IS_DEV: z
|
|
.boolean()
|
|
.default(false)
|
|
.transform(
|
|
() =>
|
|
process.env.BUN_ENV === "development" ||
|
|
process.env.NODE_ENV === "development"
|
|
),
|
|
VERSION: z.string().min(1).default("development"),
|
|
PORT: z.coerce.number().default(3001),
|
|
REDIS_CONNECTION: z.string().regex(redisConnectionRegex),
|
|
|
|
PRIMARY_API_KEY:
|
|
process.env.NODE_ENV === "development"
|
|
? z.string().optional()
|
|
: z.string().min(10),
|
|
|
|
SECONDARY_API_KEY:
|
|
process.env.NODE_ENV === "development"
|
|
? z.string().optional()
|
|
: z.string().min(10),
|
|
},
|
|
runtimeEnv: {
|
|
...process.env,
|
|
},
|
|
});
|
|
|
|
const redisMatch = env.REDIS_CONNECTION.match(redisConnectionRegex);
|
|
if (!redisMatch?.groups) {
|
|
throw new Error("Invalid REDIS_CONNECTION format");
|
|
}
|
|
|
|
export const redisConfig = {
|
|
host: redisMatch.groups.host,
|
|
port: Number(redisMatch.groups.port),
|
|
username: redisMatch.groups.username,
|
|
password: redisMatch.groups.password,
|
|
};
|
|
|
|
console.log("env", env);
|
|
console.log("redisConfig", redisConfig);
|