mirror of
https://github.com/langgenius/dify.git
synced 2026-02-09 23:20:12 -05:00
update
This commit is contained in:
@@ -5,7 +5,7 @@ import { Instrument_Serif } from 'next/font/google'
|
||||
import { NuqsAdapter } from 'nuqs/adapters/next/app'
|
||||
import GlobalPublicStoreProvider from '@/context/global-public-context'
|
||||
import { TanstackQueryInitializer } from '@/context/query-client'
|
||||
import { clientEnvKeys, env, getDatasetAttrKeyFromEnvKey } from '@/env'
|
||||
import { getDatasetMap } from '@/env'
|
||||
import { getLocaleOnServer } from '@/i18n-config/server'
|
||||
import { cn } from '@/utils/classnames'
|
||||
import { ToastProvider } from './components/base/toast'
|
||||
@@ -39,7 +39,7 @@ const LocaleLayout = async ({
|
||||
children: React.ReactNode
|
||||
}) => {
|
||||
const locale = await getLocaleOnServer()
|
||||
const datasetMap = Object.fromEntries(clientEnvKeys.map(envKey => [getDatasetAttrKeyFromEnvKey(envKey), env[envKey]]))
|
||||
const datasetMap = getDatasetMap()
|
||||
|
||||
return (
|
||||
<html lang={locale ?? 'en'} className={cn('h-full', instrumentSerif.variable)} suppressHydrationWarning>
|
||||
|
||||
29
web/env.ts
29
web/env.ts
@@ -50,23 +50,7 @@ const clientSchema = {
|
||||
NEXT_PUBLIC_ZENDESK_WIDGET_KEY: optionalString,
|
||||
} satisfies ClientSchema
|
||||
|
||||
export type ClientEnvKey = keyof typeof clientSchema
|
||||
|
||||
type SnakeToKebabCase<S extends string> = S extends `${infer Head}_${infer Tail}`
|
||||
? `${Lowercase<Head>}-${SnakeToKebabCase<Tail>}`
|
||||
: Lowercase<S>
|
||||
type DatasetAttrKeyFromEnvKey<K extends ClientEnvKey> = K extends `${typeof CLIENT_ENV_PREFIX}${infer Suffix}`
|
||||
? `data-${SnakeToKebabCase<Suffix>}`
|
||||
: never
|
||||
|
||||
export type ClientDatasetAttrKey = DatasetAttrKeyFromEnvKey<ClientEnvKey>
|
||||
|
||||
export const clientEnvKeys = Object.keys(clientSchema) as ReadonlyArray<ClientEnvKey>
|
||||
|
||||
export function getDatasetAttrKeyFromEnvKey<K extends ClientEnvKey>(key: K) {
|
||||
const suffix = kebabCase(replace(key, CLIENT_ENV_PREFIX, ''))
|
||||
return `data-${suffix}` as const
|
||||
}
|
||||
type ClientEnvKey = keyof typeof clientSchema
|
||||
|
||||
function getRuntimeEnvFromBody<K extends ClientEnvKey>(key: K) {
|
||||
if (typeof window === 'undefined') {
|
||||
@@ -134,3 +118,14 @@ export const env = createEnv({
|
||||
},
|
||||
emptyStringAsUndefined: true,
|
||||
})
|
||||
|
||||
function getDatasetAttrKeyFromEnvKey<K extends ClientEnvKey>(key: K) {
|
||||
const suffix = kebabCase(replace(key, CLIENT_ENV_PREFIX, ''))
|
||||
return `data-${suffix}` as const
|
||||
}
|
||||
|
||||
const clientEnvKeys = Object.keys(clientSchema) as ReadonlyArray<ClientEnvKey>
|
||||
|
||||
export function getDatasetMap() {
|
||||
return Object.fromEntries(clientEnvKeys.map(envKey => [getDatasetAttrKeyFromEnvKey(envKey), env[envKey]]))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user