json-schema-strictly-typed v0.0.14
json-schema-strictly-typed
JSON Schema is a useful way to define input and output schemas.
Typescript is a useful way to verify the types of JavaScript objects.
json-schema-strictly-typed implements a strict flavor of the JSON Schema 7 specification for typing. By strict, we mean that it is organized into logical types that represent real usage, disallowing certain "nonsense" combinations of fields.
Example
import { JSSTInteger } from "json-schema-strictly-typed";
test("my schema is an integer", () => {
JSSTInteger.is({ type: "integer" });
});API
Here are all of the types in the API. Some of them also have sub-types for useful validation. In addition to canonical JSON Schema 6, we have added an optional faker field to the string type to use faker-like packages.
JSSTEmptyJSSTConstJSSTReferenceJSSTNullJSSTBooleanJSSTIntegerJSSTSimpleIntegerJSSTIntegerWithMinimumJSSTIntegerWithMaximumJSSTIntegerWithBoundsJSSTIntegerWithNumericExclusiveBoundsJSSTIntegerWithNumericExclusiveMaximumJSSTIntegerWithNumericExclusiveMinimumJSSTIntegerEnum
JSSTNumberJSSTSimpleNumberJSSTNumberEnum
JSSTStringJSSTSimpleStringJSSTRegexJSSTStringEnum
JSSTArrayJSSTListJSSTTuple
JSSTObjectJSSTOneOfJSSTAnyOfJSSTAllOfJSSTNot
Additionally, top-level versions of all of these are available by adding TopLevel to the definition. Top-level JSON Schema objects contain optional fields like $id, $schema and definitions.
Todo
There is plenty of stuff that is not implemented yet. I'd really appreciate your help!
- finish implementing the JSON Schema 7 Specification
- add various schema extensions
- use XOR combinator instead of
|for types to avoid nonsense unoins