feat(SW-2859): Create trpc package * Add isEdge, safeTry and dataCache to new common package * Add eslint and move prettier config * Clean up tests * Create trpc package and move initialization * Move errors and a few procedures * Move telemetry to common package * Move tokenManager to common package * Add Sentry to procedures * Clean up procedures * Fix self-referencing imports * Add exports to packages and lint rule to prevent relative imports * Add env to trpc package * Add eslint to trpc package * Apply lint rules * Use direct imports from trpc package * Add lint-staged config to trpc * Move lang enum to common * Restructure trpc package folder structure * Fix lang imports Approved-by: Linus Flood
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { createEnv } from "@t3-oss/env-nextjs"
|
|
import { z } from "zod"
|
|
|
|
import { getLiveStatus } from "./getLiveStatus"
|
|
import { isLangLive } from "./isLangLive"
|
|
|
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
|
|
|
const _env = createEnv({
|
|
client: {
|
|
NEXT_PUBLIC_NODE_ENV: z.enum(["development", "test", "production"]),
|
|
NEXT_PUBLIC_PORT: z.string().default("3000"),
|
|
NEXT_PUBLIC_SENTRY_ENVIRONMENT: z.string().default("development"),
|
|
NEXT_PUBLIC_SENTRY_CLIENT_SAMPLERATE: z.coerce.number().default(0.001),
|
|
NEXT_PUBLIC_NEW_SITE_LIVE_FOR_LANGS: z
|
|
.string()
|
|
.regex(/^([a-z]{2},)*([a-z]{2}){0,1}$/)
|
|
.transform((val) => {
|
|
return val.split(",")
|
|
})
|
|
.default(""),
|
|
NEXT_PUBLIC_PUBLIC_URL: z.string().optional(),
|
|
},
|
|
emptyStringAsUndefined: true,
|
|
runtimeEnv: {
|
|
NEXT_PUBLIC_NODE_ENV: process.env.NODE_ENV,
|
|
NEXT_PUBLIC_PORT: process.env.NEXT_PUBLIC_PORT,
|
|
NEXT_PUBLIC_SENTRY_ENVIRONMENT: process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT,
|
|
NEXT_PUBLIC_SENTRY_CLIENT_SAMPLERATE:
|
|
process.env.NEXT_PUBLIC_SENTRY_CLIENT_SAMPLERATE,
|
|
NEXT_PUBLIC_NEW_SITE_LIVE_FOR_LANGS:
|
|
process.env.NEXT_PUBLIC_NEW_SITE_LIVE_FOR_LANGS,
|
|
NEXT_PUBLIC_PUBLIC_URL: process.env.NEXT_PUBLIC_PUBLIC_URL,
|
|
},
|
|
})
|
|
|
|
export const env = {
|
|
..._env,
|
|
NEW_SITE_LIVE_STATUS: getLiveStatus(_env),
|
|
isLangLive: (lang: Lang) =>
|
|
isLangLive(lang, _env.NEXT_PUBLIC_NEW_SITE_LIVE_FOR_LANGS),
|
|
}
|