...

Package jsonschema

import "cuelang.org/go/encoding/jsonschema"
Overview
Index

Overview ▾

Package jsonschema converts JSON Schema to CUE

JSON Schema data is presented in CUE, so any of the supported encodings that can represent JSON Schema data can be used as a source.

Package jsonschema implements the JSON schema standard.

Mapping and Linking

JSON Schema are often defined in a single file. CUE, on the other hand idiomatically defines schema as a definition.

CUE:

$schema: which schema is used for validation.
$id: which validation does this schema provide.

Foo: _ @jsonschema(sc)
@source(https://...) // What schema is used to validate.

NOTE: JSON Schema is a draft standard and may undergo backwards incompatible changes.

func Extract

func Extract(data cue.InstanceOrValue, cfg *Config) (f *ast.File, err error)

Extract converts JSON Schema data into an equivalent CUE representation.

The generated CUE schema is guaranteed to deem valid any value that is a valid instance of the source JSON schema.

type Config

A Config configures a JSON Schema encoding or decoding.

type Config struct {
    PkgName string

    // ID sets the URL of the original source, corresponding to the $id field.
    ID string

    // JSON reference of location containing schema. The empty string indicates
    // that there is a single schema at the root.
    //
    // Examples:
    //  "#/"                     top-level fields are schemas.
    //  "#/components/schemas"   the canonical OpenAPI location.
    Root string

    // Map maps the locations of schemas and definitions to a new location.
    // References are updated accordingly. A returned label must be
    // an identifier or string literal.
    //
    // The default mapping is
    //    {}                     {}
    //    {"definitions", foo}   {#foo} or {#, foo}
    //    {"$defs", foo}         {#foo} or {#, foo}
    Map func(pos token.Pos, path []string) ([]ast.Label, error)

    // Strict reports an error for unsupported features, rather than ignoring
    // them.
    Strict bool
    // contains filtered or unexported fields
}