File size: 1,159 Bytes
68d7816 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import { z } from 'zod';
import {
type EnvBindings,
envBindings,
stripEnvBoundFields,
} from '#/app/config/config';
import { registerConfigSection } from '#/app/config/configSectionContributions';
export const IDENTITY_SECTION = 'identity';
export const IdentityConfigSchema = z.object({
name: z.string().optional(),
slug: z.string().optional(),
});
export type IdentityConfig = z.infer<typeof IdentityConfigSchema>;
export const IDENTITY_NAME_ENV = 'KIMI_CODE_IDENTITY_NAME';
export const IDENTITY_SLUG_ENV = 'KIMI_CODE_IDENTITY_SLUG';
function parseIdentityEnv(raw: string): string | undefined {
const trimmed = raw.trim();
return trimmed.length > 0 ? trimmed : undefined;
}
export const identityEnvBindings: EnvBindings<IdentityConfig> = envBindings(
IdentityConfigSchema,
{
name: { env: IDENTITY_NAME_ENV, parse: parseIdentityEnv },
slug: { env: IDENTITY_SLUG_ENV, parse: parseIdentityEnv },
},
);
export const stripIdentityEnv = stripEnvBoundFields(identityEnvBindings);
registerConfigSection(IDENTITY_SECTION, IdentityConfigSchema, {
defaultValue: {},
env: identityEnvBindings,
stripEnv: stripIdentityEnv,
});
|