README.md

@cutticat/json-schema-types

TypeScript type library for all JSON Schema specification versions (Draft 3, 4, 6, 7, 2019-09, 2020-12).

Contents

Overview

This library provides strictly typed definitions for JSON Schema objects according to official specifications. All major drafts are supported: Draft 3, 4, 6, 7, 2019-09, and 2020-12. Types include inline JSDoc for all fields.

Installation

pnpm i @cutticat/json-schema-types

Quick start

import type {
  JsonSchemaDraft07,
  JsonSchemaDraft202012,
  AnyJsonSchema,
  JsonSchemaByDraft,
  JsonSchemaDraftVersion,
} from "@cutticat/json-schema-types"

// Typing a schema for a specific draft
const schema07: JsonSchemaDraft07 = {
  $schema: "http://json-schema.org/draft-07/schema#",
  type: "object",
  properties: {
    name: { type: "string" },
    age: { type: "integer", minimum: 0 },
  },
  required: ["name"],
}

// Union of all supported schemas
function validateSchema(schema: AnyJsonSchema) {
  // ...
}

// Type by draft identifier
type SchemaForDraft<V extends JsonSchemaDraftVersion> = JsonSchemaByDraft[V]

API

Shared types

  • JsonPrimitive — primitive JSON values (string | number | boolean | null)
  • JsonValue — any valid JSON value
  • JsonObject, JsonArray — object and array
  • JsonSchemaPrimitiveType, JsonSchemaTypetype keyword values
  • JsonSchemaCommonKeywords — common metadata and annotations
  • JsonSchemaNumericKeywords — number validation
  • JsonSchemaStringKeywords — string validation
  • JsonSchemaArrayKeywords — array validation
  • JsonSchemaObjectKeywords — object validation
  • JsonSchemaCompositionKeywords — allOf, anyOf, oneOf, not, if/then/else
  • JsonSchemaConditionalKeywords — dependencies, dependentRequired, dependentSchemas
  • JsonSchemaDefinitionKeywords — definitions, $defs, $ref, $anchor, etc.
  • JsonSchemaLike, JsonSchemaDictionary — boolean schema or object

Types by draft

  • JsonSchemaDraft03, JsonSchemaDraft03Type, JsonSchemaDraft03Like
  • JsonSchemaDraft04, JsonSchemaDraft04Type, JsonSchemaDraft04Like
  • JsonSchemaDraft06, JsonSchemaDraft06Object, JsonSchemaDraft06Like
  • JsonSchemaDraft07, JsonSchemaDraft07Object, JsonSchemaDraft07Like
  • JsonSchemaDraft201909, JsonSchemaDraft201909Object, JsonSchemaDraft201909Like
  • JsonSchemaDraft202012, JsonSchemaDraft202012Object, JsonSchemaDraft202012Like

Registry and aggregates

  • JsonSchemaDraftVersion — union of draft identifiers
  • JsonSchemaByDraft — maps a draft to its schema type
  • AnyJsonSchema — union of all schema types

Documentation

Detailed documentation:

Full API documentation is available in JSDoc comments. Use IDE autocomplete to browse it.

Requirements

  • Node.js >= 22.0.0
  • pnpm >= 10.17.0
  • TypeScript >= 5.9.0
Описание
Library with JSON schema types
Конвейеры
9 успешных
1 с ошибкой
Разработчики