Skip to content

grantila/core-types-json-schema

Repository files navigation

npm version downloads build status coverage status Node.JS version

core-types-json-schema

This package provides conversion functions between core-types and JSON Schema (and Open API through the openapi-json-schema package).

You probably don't want to use this package directly, but rather typeconv which uses this package to convert between TypeScript, JSON Schema, GraphQL and Open API.

See

Other conversion packages:

Usage

There are four main conversion functions, convertCoreTypesToJsonSchema, convertJsonSchemaToCoreTypes, convertCoreTypesToOpenApi and convertOpenApiTpCoreTypes, all returning a wrapped value, of the type ConversionResult.

This package also re-exports jsonSchemaTypeToOpenApi and openApiToJsonSchemaType from openapi-json-schema.

core-types to JSON Schema

import { convertCoreTypesToJsonSchema } from 'core-types-json-schema'

let doc; // This core-types document comes from somewhere

const { data: jsonSchema } = convertCoreTypesToJsonSchema( doc );

You can provide options as a second argument on the type:

interface ConvertCoreTypesToJsonSchemaOptions
{
    sourceFilename?: string;
    filename?: string;
    userPackage?: string;
    userPackageUrl?: string;
}

These fields will be used when constructing a comment ($comment) at the root of the JSON Schema, describing the context of where the schema comes from.

JSON Schema to core-types

import { convertJsonSchemaToCoreTypes } from 'core-types-json-schema'

let jsonSchema; // This JSON Schema comes from somewhere

const { data: doc } = convertJsonSchemaToCoreTypes( jsonSchema );

core-types to Open API

import { convertCoreTypesToOpenApi } from 'core-types-json-schema'

let doc; // This core-types document comes from somewhere

const { data: jsonSchema } = convertCoreTypesToOpenApi( doc );

You can provide options as a second argument on the type:

interface CoreTypesToOpenApiOptions extends ConvertCoreTypesToJsonSchemaOptions
{
    title: string;
    version: string;
    schemaVersion?: string;
}

The title and version are required for Open API. The schemaVersion defaults to 3.0.0.

Open API to core-types

import { convertOpenApiTpCoreTypes } from 'core-types-json-schema'

let openApiSchema; // This Open API schema comes from somewhere

const { data: doc } = convertOpenApiTpCoreTypes( openApiSchema );