Skip to content

Graphorin API reference v0.1.0


Graphorin API reference / @graphorin/server / config / ServerConfigSchema

Variable: ServerConfigSchema

ts
const ServerConfigSchema: ZodDefault<ZodObject<{
  audit: ZodDefault<ZodObject<{
     cipher: ZodOptional<ZodString>;
     enabled: ZodDefault<ZodBoolean>;
     passphraseRef: ZodOptional<ZodString>;
     path: ZodOptional<ZodString>;
   }, "strict", ZodTypeAny, {
     cipher?: string;
     enabled: boolean;
     passphraseRef?: string;
     path?: string;
   }, {
     cipher?: string;
     enabled?: boolean;
     passphraseRef?: string;
     path?: string;
  }>>;
  auth: ZodDefault<ZodObject<{
     kind: ZodDefault<ZodEnum<["token", "none"]>>;
     pepperRef: ZodOptional<ZodString>;
     perIpFailureThreshold: ZodOptional<ZodNumber>;
     perIpLockoutMs: ZodOptional<ZodNumber>;
     tokenEnvironments: ZodDefault<ZodArray<ZodString, "many">>;
     tokenPrefix: ZodDefault<ZodString>;
   }, "strict", ZodTypeAny, {
     kind: "token" | "none";
     pepperRef?: string;
     perIpFailureThreshold?: number;
     perIpLockoutMs?: number;
     tokenEnvironments: string[];
     tokenPrefix: string;
   }, {
     kind?: "token" | "none";
     pepperRef?: string;
     perIpFailureThreshold?: number;
     perIpLockoutMs?: number;
     tokenEnvironments?: string[];
     tokenPrefix?: string;
  }>>;
  hardening: ZodDefault<ZodObject<{
     applyOnStart: ZodDefault<ZodBoolean>;
     refuseRoot: ZodDefault<ZodBoolean>;
     umask: ZodDefault<ZodNumber>;
   }, "strict", ZodTypeAny, {
     applyOnStart: boolean;
     refuseRoot: boolean;
     umask: number;
   }, {
     applyOnStart?: boolean;
     refuseRoot?: boolean;
     umask?: number;
  }>>;
  health: ZodDefault<ZodObject<{
     walWarnThresholdBytes: ZodDefault<ZodNumber>;
   }, "strict", ZodTypeAny, {
     walWarnThresholdBytes: number;
   }, {
     walWarnThresholdBytes?: number;
  }>>;
  metrics: ZodDefault<ZodObject<{
     enabled: ZodDefault<ZodBoolean>;
     path: ZodDefault<ZodString>;
     requireAuth: ZodDefault<ZodBoolean>;
   }, "strict", ZodTypeAny, {
     enabled: boolean;
     path: string;
     requireAuth: boolean;
   }, {
     enabled?: boolean;
     path?: string;
     requireAuth?: boolean;
  }>>;
  observability: ZodDefault<ZodObject<{
     logger: ZodDefault<ZodEnum<["json", "pretty", "silent"]>>;
   }, "strict", ZodTypeAny, {
     logger: "json" | "pretty" | "silent";
   }, {
     logger?: "json" | "pretty" | "silent";
  }>>;
  secrets: ZodDefault<ZodObject<{
     source: ZodDefault<ZodEnum<["auto", "keyring", "encrypted-file", "env"]>>;
     strict: ZodDefault<ZodBoolean>;
   }, "strict", ZodTypeAny, {
     source: "auto" | "keyring" | "encrypted-file" | "env";
     strict: boolean;
   }, {
     source?: "auto" | "keyring" | "encrypted-file" | "env";
     strict?: boolean;
  }>>;
  server: ZodDefault<ZodObject<{
     basePath: ZodDefault<ZodString>;
     cors: ZodDefault<ZodObject<{
        allowCredentials: ZodDefault<ZodBoolean>;
        allowHeaders: ZodDefault<ZodArray<..., ...>>;
        allowMethods: ZodDefault<ZodArray<..., ...>>;
        allowOrigins: ZodDefault<ZodArray<..., ...>>;
        maxAgeSeconds: ZodDefault<ZodNumber>;
      }, "strict", ZodTypeAny, {
        allowCredentials: boolean;
        allowHeaders: string[];
        allowMethods: string[];
        allowOrigins: string[];
        maxAgeSeconds: number;
      }, {
        allowCredentials?: boolean;
        allowHeaders?: ...[];
        allowMethods?: ...[];
        allowOrigins?: ...[];
        maxAgeSeconds?: number;
     }>>;
     csrf: ZodDefault<ZodObject<{
        cookieName: ZodDefault<ZodString>;
        enabled: ZodDefault<ZodBoolean>;
        headerName: ZodDefault<ZodString>;
        safeMethods: ZodDefault<ZodArray<..., ...>>;
      }, "strict", ZodTypeAny, {
        cookieName: string;
        enabled: boolean;
        headerName: string;
        safeMethods: string[];
      }, {
        cookieName?: string;
        enabled?: boolean;
        headerName?: string;
        safeMethods?: ...[];
     }>>;
     host: ZodDefault<ZodString>;
     idempotency: ZodDefault<ZodObject<{
        checkBodyFingerprint: ZodDefault<ZodBoolean>;
        enabled: ZodDefault<ZodBoolean>;
        lruCacheSize: ZodDefault<ZodNumber>;
        requireKey: ZodDefault<ZodEnum<...>>;
        ttlSeconds: ZodDefault<ZodNumber>;
      }, "strict", ZodTypeAny, {
        checkBodyFingerprint: boolean;
        enabled: boolean;
        lruCacheSize: number;
        requireKey: "off" | "warn" | "enforce";
        ttlSeconds: number;
      }, {
        checkBodyFingerprint?: boolean;
        enabled?: boolean;
        lruCacheSize?: number;
        requireKey?: "off" | "warn" | "enforce";
        ttlSeconds?: number;
     }>>;
     port: ZodDefault<ZodNumber>;
     rateLimit: ZodDefault<ZodObject<{
        enabled: ZodDefault<ZodBoolean>;
        perIpRequests: ZodDefault<ZodNumber>;
        windowMs: ZodDefault<ZodNumber>;
      }, "strict", ZodTypeAny, {
        enabled: boolean;
        perIpRequests: number;
        windowMs: number;
      }, {
        enabled?: boolean;
        perIpRequests?: number;
        windowMs?: number;
     }>>;
     shutdown: ZodDefault<ZodObject<{
        drainTimeoutMs: ZodDefault<ZodNumber>;
      }, "strict", ZodTypeAny, {
        drainTimeoutMs: number;
      }, {
        drainTimeoutMs?: number;
     }>>;
     sse: ZodDefault<ZodObject<{
        enabled: ZodDefault<ZodBoolean>;
        keepAliveMs: ZodDefault<ZodNumber>;
        path: ZodDefault<ZodString>;
      }, "strict", ZodTypeAny, {
        enabled: boolean;
        keepAliveMs: number;
        path: string;
      }, {
        enabled?: boolean;
        keepAliveMs?: number;
        path?: string;
     }>>;
     stream: ZodDefault<ZodObject<{
        disconnectGracePeriodMs: ZodDefault<ZodNumber>;
        disconnectPolicy: ZodDefault<ZodEnum<...>>;
        perConnectionQueueLimit: ZodDefault<ZodNumber>;
        replayBuffer: ZodDefault<ZodObject<..., ..., ..., ..., ...>>;
      }, "strict", ZodTypeAny, {
        disconnectGracePeriodMs: number;
        disconnectPolicy: "continue" | "pause-on-disconnect" | "abort-on-disconnect";
        perConnectionQueueLimit: number;
        replayBuffer: {
           maxEvents: number;
           ttlSeconds: number;
        };
      }, {
        disconnectGracePeriodMs?: number;
        disconnectPolicy?: "continue" | "pause-on-disconnect" | "abort-on-disconnect";
        perConnectionQueueLimit?: number;
        replayBuffer?: {
           maxEvents?: ...;
           ttlSeconds?: ...;
        };
     }>>;
     trustProxy: ZodDefault<ZodBoolean>;
     ws: ZodDefault<ZodObject<{
        commentarySanitization: ZodDefault<ZodObject<..., ..., ..., ..., ...>>;
        enabled: ZodDefault<ZodBoolean>;
        path: ZodDefault<ZodString>;
        ticketTtlMs: ZodDefault<ZodNumber>;
      }, "strict", ZodTypeAny, {
        commentarySanitization: {
           applyToEvents: ...[];
           policy: ... | ... | ...;
        };
        enabled: boolean;
        path: string;
        ticketTtlMs: number;
      }, {
        commentarySanitization?: {
           applyToEvents?: ...;
           policy?: ...;
        };
        enabled?: boolean;
        path?: string;
        ticketTtlMs?: number;
     }>>;
   }, "strict", ZodTypeAny, {
     basePath: string;
     cors: {
        allowCredentials: boolean;
        allowHeaders: string[];
        allowMethods: string[];
        allowOrigins: string[];
        maxAgeSeconds: number;
     };
     csrf: {
        cookieName: string;
        enabled: boolean;
        headerName: string;
        safeMethods: string[];
     };
     host: string;
     idempotency: {
        checkBodyFingerprint: boolean;
        enabled: boolean;
        lruCacheSize: number;
        requireKey: "off" | "warn" | "enforce";
        ttlSeconds: number;
     };
     port: number;
     rateLimit: {
        enabled: boolean;
        perIpRequests: number;
        windowMs: number;
     };
     shutdown: {
        drainTimeoutMs: number;
     };
     sse: {
        enabled: boolean;
        keepAliveMs: number;
        path: string;
     };
     stream: {
        disconnectGracePeriodMs: number;
        disconnectPolicy: "continue" | "pause-on-disconnect" | "abort-on-disconnect";
        perConnectionQueueLimit: number;
        replayBuffer: {
           maxEvents: number;
           ttlSeconds: number;
        };
     };
     trustProxy: boolean;
     ws: {
        commentarySanitization: {
           applyToEvents: string[];
           policy: "wrap" | "strip" | "pass-through";
        };
        enabled: boolean;
        path: string;
        ticketTtlMs: number;
     };
   }, {
     basePath?: string;
     cors?: {
        allowCredentials?: boolean;
        allowHeaders?: string[];
        allowMethods?: string[];
        allowOrigins?: string[];
        maxAgeSeconds?: number;
     };
     csrf?: {
        cookieName?: string;
        enabled?: boolean;
        headerName?: string;
        safeMethods?: string[];
     };
     host?: string;
     idempotency?: {
        checkBodyFingerprint?: boolean;
        enabled?: boolean;
        lruCacheSize?: number;
        requireKey?: "off" | "warn" | "enforce";
        ttlSeconds?: number;
     };
     port?: number;
     rateLimit?: {
        enabled?: boolean;
        perIpRequests?: number;
        windowMs?: number;
     };
     shutdown?: {
        drainTimeoutMs?: number;
     };
     sse?: {
        enabled?: boolean;
        keepAliveMs?: number;
        path?: string;
     };
     stream?: {
        disconnectGracePeriodMs?: number;
        disconnectPolicy?: "continue" | "pause-on-disconnect" | "abort-on-disconnect";
        perConnectionQueueLimit?: number;
        replayBuffer?: {
           maxEvents?: ... | ...;
           ttlSeconds?: ... | ...;
        };
     };
     trustProxy?: boolean;
     ws?: {
        commentarySanitization?: {
           applyToEvents?: ... | ...;
           policy?: ... | ... | ... | ...;
        };
        enabled?: boolean;
        path?: string;
        ticketTtlMs?: number;
     };
  }>>;
  storage: ZodDefault<ZodObject<{
     encryption: ZodDefault<ZodObject<{
        cipher: ZodOptional<ZodString>;
        enabled: ZodDefault<ZodBoolean>;
        passphraseRef: ZodOptional<ZodString>;
      }, "strict", ZodTypeAny, {
        cipher?: string;
        enabled: boolean;
        passphraseRef?: string;
      }, {
        cipher?: string;
        enabled?: boolean;
        passphraseRef?: string;
     }>>;
     mode: ZodDefault<ZodEnum<["lib", "server"]>>;
     path: ZodDefault<ZodString>;
     walCheckpointIntervalMs: ZodOptional<ZodNumber>;
   }, "strict", ZodTypeAny, {
     encryption: {
        cipher?: string;
        enabled: boolean;
        passphraseRef?: string;
     };
     mode: "lib" | "server";
     path: string;
     walCheckpointIntervalMs?: number;
   }, {
     encryption?: {
        cipher?: string;
        enabled?: boolean;
        passphraseRef?: string;
     };
     mode?: "lib" | "server";
     path?: string;
     walCheckpointIntervalMs?: number;
  }>>;
}, "strict", ZodTypeAny, {
  audit: {
     cipher?: string;
     enabled: boolean;
     passphraseRef?: string;
     path?: string;
  };
  auth: {
     kind: "token" | "none";
     pepperRef?: string;
     perIpFailureThreshold?: number;
     perIpLockoutMs?: number;
     tokenEnvironments: string[];
     tokenPrefix: string;
  };
  hardening: {
     applyOnStart: boolean;
     refuseRoot: boolean;
     umask: number;
  };
  health: {
     walWarnThresholdBytes: number;
  };
  metrics: {
     enabled: boolean;
     path: string;
     requireAuth: boolean;
  };
  observability: {
     logger: "json" | "pretty" | "silent";
  };
  secrets: {
     source: "auto" | "keyring" | "encrypted-file" | "env";
     strict: boolean;
  };
  server: {
     basePath: string;
     cors: {
        allowCredentials: boolean;
        allowHeaders: string[];
        allowMethods: string[];
        allowOrigins: string[];
        maxAgeSeconds: number;
     };
     csrf: {
        cookieName: string;
        enabled: boolean;
        headerName: string;
        safeMethods: string[];
     };
     host: string;
     idempotency: {
        checkBodyFingerprint: boolean;
        enabled: boolean;
        lruCacheSize: number;
        requireKey: "off" | "warn" | "enforce";
        ttlSeconds: number;
     };
     port: number;
     rateLimit: {
        enabled: boolean;
        perIpRequests: number;
        windowMs: number;
     };
     shutdown: {
        drainTimeoutMs: number;
     };
     sse: {
        enabled: boolean;
        keepAliveMs: number;
        path: string;
     };
     stream: {
        disconnectGracePeriodMs: number;
        disconnectPolicy: "continue" | "pause-on-disconnect" | "abort-on-disconnect";
        perConnectionQueueLimit: number;
        replayBuffer: {
           maxEvents: number;
           ttlSeconds: number;
        };
     };
     trustProxy: boolean;
     ws: {
        commentarySanitization: {
           applyToEvents: string[];
           policy: "wrap" | "strip" | "pass-through";
        };
        enabled: boolean;
        path: string;
        ticketTtlMs: number;
     };
  };
  storage: {
     encryption: {
        cipher?: string;
        enabled: boolean;
        passphraseRef?: string;
     };
     mode: "lib" | "server";
     path: string;
     walCheckpointIntervalMs?: number;
  };
}, {
  audit?: {
     cipher?: string;
     enabled?: boolean;
     passphraseRef?: string;
     path?: string;
  };
  auth?: {
     kind?: "token" | "none";
     pepperRef?: string;
     perIpFailureThreshold?: number;
     perIpLockoutMs?: number;
     tokenEnvironments?: string[];
     tokenPrefix?: string;
  };
  hardening?: {
     applyOnStart?: boolean;
     refuseRoot?: boolean;
     umask?: number;
  };
  health?: {
     walWarnThresholdBytes?: number;
  };
  metrics?: {
     enabled?: boolean;
     path?: string;
     requireAuth?: boolean;
  };
  observability?: {
     logger?: "json" | "pretty" | "silent";
  };
  secrets?: {
     source?: "auto" | "keyring" | "encrypted-file" | "env";
     strict?: boolean;
  };
  server?: {
     basePath?: string;
     cors?: {
        allowCredentials?: boolean;
        allowHeaders?: string[];
        allowMethods?: string[];
        allowOrigins?: string[];
        maxAgeSeconds?: number;
     };
     csrf?: {
        cookieName?: string;
        enabled?: boolean;
        headerName?: string;
        safeMethods?: string[];
     };
     host?: string;
     idempotency?: {
        checkBodyFingerprint?: boolean;
        enabled?: boolean;
        lruCacheSize?: number;
        requireKey?: "off" | "warn" | "enforce";
        ttlSeconds?: number;
     };
     port?: number;
     rateLimit?: {
        enabled?: boolean;
        perIpRequests?: number;
        windowMs?: number;
     };
     shutdown?: {
        drainTimeoutMs?: number;
     };
     sse?: {
        enabled?: boolean;
        keepAliveMs?: number;
        path?: string;
     };
     stream?: {
        disconnectGracePeriodMs?: number;
        disconnectPolicy?: "continue" | "pause-on-disconnect" | "abort-on-disconnect";
        perConnectionQueueLimit?: number;
        replayBuffer?: {
           maxEvents?: number;
           ttlSeconds?: number;
        };
     };
     trustProxy?: boolean;
     ws?: {
        commentarySanitization?: {
           applyToEvents?: ...[];
           policy?: "wrap" | "strip" | "pass-through";
        };
        enabled?: boolean;
        path?: string;
        ticketTtlMs?: number;
     };
  };
  storage?: {
     encryption?: {
        cipher?: string;
        enabled?: boolean;
        passphraseRef?: string;
     };
     mode?: "lib" | "server";
     path?: string;
     walCheckpointIntervalMs?: number;
  };
}>>;

Defined in: packages/server/src/config.ts:363

Zod schema for the resolved ServerConfigSpec. Exposed for advanced users that want to validate other config sources (env-only launch, CLI overrides, etc.).

Stable