JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 152
  • Score
    100M100P100Q114040F
  • License Apache-2.0

Parser adapter for parsing JSON documents into JSON Schema 2020-12 namespace.

Package Exports

  • @speclynx/apidom-parser-adapter-json-schema-json-2020-12

Readme

@speclynx/apidom-parser-adapter-json-schema-json-2020-12

@speclynx/apidom-parser-adapter-json-schema-json-2020-12 is a parser adapter for the JSON Schema 2020-12 in JSON format. Under the hood this adapter uses apidom-parser-adapter-json to parse a source string into generic ApiDOM in base ApiDOM namespace which is then refracted with JSON Schema 2020-12 Refractors.

Installation

You can install @speclynx/apidom-parser-adapter-json-schema-json-2020-12 via npm CLI by running the following command:

 $ npm install @speclynx/apidom-parser-adapter-json-schema-json-2020-12

Parser adapter API

This parser adapter is fully compatible with parser adapter interface required by @speclynx/apidom-parser and implements all required properties.

mediaTypes

Defines list of media types that this parser adapter recognizes.

[
  'application/schema;version=2020-12',
  'application/schema+json;version=2020-12',
]

detect

Detection is based on a regular expression matching required JSON Schema 2020-12 symbols in JSON format.

namespace

This adapter exposes an instance of JSON Schema 2020-12 ApiDOM namespace.

parse

parse function consumes various options as a second argument. Here is a list of these options:

Option Type Default Description
specObj Object Specification Object This specification object drives the JSON AST transformation to JSON Schema 2020-12 ApiDOM namespace.
sourceMap Boolean false Indicate whether to generate source maps.
refractorOpts Object {} Refractor options are passed to refractors during refracting phase.

All unrecognized arbitrary options will be ignored.

Usage

This parser adapter can be used directly or indirectly via @speclynx/apidom-parser.

Direct usage

During direct usage you don't need to provide mediaType as the parse function is already pre-bound with supported media types.

import { parse, detect } from '@speclynx/apidom-parser-adapter-json-schema-json-2020-12';

// detecting
await detect('{"$schema": "https://json-schema.org/draft/2020-12/schema"}'); // => true
await detect('test'); // => false

// parsing
const parseResult = await parse('{"$schema": "https://json-schema.org/draft/2020-12/schema"}', {
  sourceMap: true,
});

Indirect usage

You can omit the mediaType option here, but please read Word on detect vs mediaTypes before you do so.

import ApiDOMParser from '@speclynx/apidom-parser';
import * as jsonSchemaJsonAdapter from '@speclynx/apidom-parser-adapter-json-schema-json-2020-12';

const parser = new ApiDOMParser();

parser.use(jsonSchemaJsonAdapter);

const parseResult = await parser.parse(
  '{"$schema": "https://json-schema.org/draft/2020-12/schema"}',
  { mediaType: jsonSchemaJsonAdapter.mediaTypes.latest('json') },
);