API reference / @evolu/common / local-first / ValidateSchema

Type Alias: ValidateSchema<S>

type ValidateSchema<S> =
  ValidateSchemaHasId<S> extends never
    ? ValidateIdColumnType<S> extends never
      ? ValidateNoSystemColumns<S> extends never
        ? ValidateColumnTypes<S> extends never
          ? S
          : ValidateColumnTypes<S>
        : ValidateNoSystemColumns<S>
      : ValidateIdColumnType<S>
    : ValidateSchemaHasId<S>;

Defined in: packages/common/src/local-first/Schema.ts:107

Validates an EvoluSchema at compile time, returning the first error found as a readable string literal type. This approach provides much clearer and more actionable TypeScript errors than the default, which are often hard to read.

Validates the following schema requirements:

  1. All tables must have an 'id' column
  2. The 'id' column must be a branded ID type (created with id() function)
  3. Tables cannot use system column names (createdAt, updatedAt, isDeleted)
  4. All column types must be compatible with SQLite (extend SqliteValue)

Type Parameters

Type Parameter
S extends EvoluSchema

Was this page helpful?