@swagger-api/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.
After prerequisites for installing this package are satisfied, you can install it via npm CLI by running the following command:
$ npm install @swagger-api/apidom-parser-adapter-json-schema-json-2020-12
This parser adapter is fully compatible with parser adapter interface required by @swagger-api/apidom-parser and implements all required properties.
Defines list of media types that this parser adapter recognizes.
[
'application/schema;version=2020-12',
'application/schema+json;version=2020-12',
]
Detection is based on a regular expression matching required JSON Schema 2020-12 symbols in JSON format.
This adapter exposes an instance of JSON Schema 2020-12 ApiDOM namespace.
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.
This parser adapter can be used directly or indirectly via @swagger-api/apidom-parser.
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 '@swagger-api/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,
});
You can omit the mediaType
option here, but please read Word on detect vs mediaTypes before you do so.
import ApiDOMParser from '@swagger-api/apidom-parser';
import * as jsonSchemaJsonAdapter from '@swagger-api/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') },
);