diff --git a/package-lock.json b/package-lock.json index c9b6641f5b..f82babe596 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30237,12 +30237,15 @@ "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", "@swagger-api/apidom-ns-asyncapi-2": "*", + "@swagger-api/apidom-ns-openapi-3-0": "*", "@swagger-api/apidom-ns-openapi-3-1": "*", "@swagger-api/apidom-parser": "*", "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "*", "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "*", "@swagger-api/apidom-parser-adapter-json": "*", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "*", "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "*", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "*", "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "*", "@swagger-api/apidom-parser-adapter-yaml-1-2": "*", "@swagger-api/apidom-reference": "*", @@ -35773,12 +35776,15 @@ "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", "@swagger-api/apidom-ns-asyncapi-2": "*", + "@swagger-api/apidom-ns-openapi-3-0": "*", "@swagger-api/apidom-ns-openapi-3-1": "*", "@swagger-api/apidom-parser": "*", "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "*", "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "*", "@swagger-api/apidom-parser-adapter-json": "*", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "*", "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "*", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "*", "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "*", "@swagger-api/apidom-parser-adapter-yaml-1-2": "*", "@swagger-api/apidom-reference": "*", diff --git a/packages/apidom-playground/package.json b/packages/apidom-playground/package.json index 184f365e4f..02b7cab8e7 100644 --- a/packages/apidom-playground/package.json +++ b/packages/apidom-playground/package.json @@ -28,11 +28,14 @@ "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", "@swagger-api/apidom-ns-asyncapi-2": "*", + "@swagger-api/apidom-ns-openapi-3-0": "*", "@swagger-api/apidom-ns-openapi-3-1": "*", "@swagger-api/apidom-parser": "*", "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "*", "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "*", "@swagger-api/apidom-parser-adapter-json": "*", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "*", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "*", "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "*", "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "*", "@swagger-api/apidom-parser-adapter-yaml-1-2": "*", diff --git a/packages/apidom-playground/src/playground/apidom.worker.js b/packages/apidom-playground/src/playground/apidom.worker.js index adb51fc7a5..2ab4554c21 100644 --- a/packages/apidom-playground/src/playground/apidom.worker.js +++ b/packages/apidom-playground/src/playground/apidom.worker.js @@ -4,6 +4,8 @@ import { dehydrate, from, sexprs, toValue } from '@swagger-api/apidom-core'; import ApiDOMParser from '@swagger-api/apidom-parser'; import * as jsonAdapter from '@swagger-api/apidom-parser-adapter-json'; import * as yamlAdapter from '@swagger-api/apidom-parser-adapter-yaml-1-2'; +import * as openapi3_0AdapterJson from '@swagger-api/apidom-parser-adapter-openapi-json-3-0'; +import * as openapi3_0AdapterYaml from '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0'; import * as openapi3_1AdapterJson from '@swagger-api/apidom-parser-adapter-openapi-json-3-1'; import * as openapi3_1AdapterYaml from '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1'; import * as asyncapi2AdapterJson from '@swagger-api/apidom-parser-adapter-asyncapi-json-2'; @@ -17,6 +19,8 @@ import { const parser = ApiDOMParser() .use(jsonAdapter) .use(yamlAdapter) + .use(openapi3_0AdapterJson) + .use(openapi3_0AdapterYaml) .use(openapi3_1AdapterJson) .use(openapi3_1AdapterYaml) .use(asyncapi2AdapterJson) diff --git a/packages/apidom-playground/src/playground/components/left-pane/EditorControls.jsx b/packages/apidom-playground/src/playground/components/left-pane/EditorControls.jsx index 41e808a10a..bc0bc9ee2e 100644 --- a/packages/apidom-playground/src/playground/components/left-pane/EditorControls.jsx +++ b/packages/apidom-playground/src/playground/components/left-pane/EditorControls.jsx @@ -93,9 +93,6 @@ const EditorControls = () => { value={mediaType} onChange={handleMediaTypeChange} > - application/json - application/yaml - text/yaml {mediaTypes.map((medType) => ( {medType} diff --git a/packages/apidom-playground/src/playground/selectors.js b/packages/apidom-playground/src/playground/selectors.js index 7f083380dd..a2385e4afa 100644 --- a/packages/apidom-playground/src/playground/selectors.js +++ b/packages/apidom-playground/src/playground/selectors.js @@ -2,12 +2,17 @@ import { createSelector } from 'swagger-adjust'; import { isEmptyString, isNonEmptyString, isNull } from 'ramda-adjunct'; import { from, traverse, createNamespace, sexprs, toValue } from '@swagger-api/apidom-core'; /* eslint-disable camelcase */ +import openApi3_0NsPlugin, { + mediaTypes as openApi3_0MediaTypes, +} from '@swagger-api/apidom-ns-openapi-3-0'; import openApi3_1NsPlugin, { mediaTypes as openApi3_1MediaTypes, } from '@swagger-api/apidom-ns-openapi-3-1'; import asyncApi2NsPlugin, { mediaTypes as asyncApi2MediaTypes, } from '@swagger-api/apidom-ns-asyncapi-2'; +import { mediaTypes as jsonMediaTypes } from '@swagger-api/apidom-parser-adapter-json'; +import { mediaTypes as yamlMediaTypes } from '@swagger-api/apidom-parser-adapter-yaml-1-2'; export const selectSource = (state) => state.source; @@ -31,6 +36,9 @@ export const selectApiDOMNamespace = createSelector(selectMediaType, (mediaType) if (isEmptyString(mediaType)) { return null; } + if (openApi3_0MediaTypes.includes(mediaType)) { + return createNamespace(openApi3_0NsPlugin); + } if (openApi3_1MediaTypes.includes(mediaType)) { return createNamespace(openApi3_1NsPlugin); } @@ -104,7 +112,13 @@ export const selectCanDereference = createSelector( ); export const selectMediaTypes = (() => { - const allMediaTypes = [...openApi3_1MediaTypes, ...asyncApi2MediaTypes]; + const allMediaTypes = [ + ...jsonMediaTypes, + ...yamlMediaTypes, + ...openApi3_0MediaTypes, + ...openApi3_1MediaTypes, + ...asyncApi2MediaTypes, + ]; return () => allMediaTypes; })(); /* eslint-enable */ diff --git a/packages/apidom-reference/src/index.ts b/packages/apidom-reference/src/index.ts index ad5f87157b..fdbb2dc7e1 100644 --- a/packages/apidom-reference/src/index.ts +++ b/packages/apidom-reference/src/index.ts @@ -29,9 +29,11 @@ export { default as HttpResolver } from './resolve/resolvers/HttpResolver'; export { default as Resolver } from './resolve/resolvers/Resolver'; export { default as ResolveStrategy } from './resolve/strategies/ResolveStrategy'; export { default as AsyncApi2ResolveStrategy } from './resolve/strategies/asyncapi-2'; +export { default as OpenApi3_0ResolveStrategy } from './resolve/strategies/openapi-3-0'; export { default as OpenApi3_1ResolveStrategy } from './resolve/strategies/openapi-3-1'; export { default as AsyncApi2DereferenceStrategy } from './dereference/strategies/asyncapi-2'; +export { default as OpenApi3_0DereferenceStrategy } from './dereference/strategies/openapi-3-0'; export { default as OpenApi3_1DereferenceStrategy } from './dereference/strategies/openapi-3-1'; export { default as options } from './options';