diff --git a/package.json b/package.json index b7682983..205ecdab 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "dependencies": { "@stoplight/json": "^3.18.1", "@stoplight/json-schema-generator": "1.0.2", - "@stoplight/types": "^13.6.0", + "@stoplight/types": "^13.12.0", "@types/json-schema": "7.0.11", "@types/swagger-schema-official": "~2.0.22", "@types/type-is": "^1.6.3", diff --git a/src/oas/__tests__/__snapshots__/operation.test.ts.snap b/src/oas/__tests__/__snapshots__/operation.test.ts.snap index c06da44f..94eada12 100644 --- a/src/oas/__tests__/__snapshots__/operation.test.ts.snap +++ b/src/oas/__tests__/__snapshots__/operation.test.ts.snap @@ -178,6 +178,7 @@ Array [ }, ], ], + "securityDeclarationType": "declared", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -257,6 +258,7 @@ Array [ }, ], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -365,6 +367,7 @@ Array [ }, ], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -409,6 +412,7 @@ Array [ }, ], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -670,6 +674,7 @@ Array [ }, ], ], + "securityDeclarationType": "declared", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -888,6 +893,7 @@ Array [ }, ], ], + "securityDeclarationType": "declared", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -971,6 +977,7 @@ Array [ }, ], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", @@ -1228,6 +1235,7 @@ Array [ }, ], ], + "securityDeclarationType": "declared", "servers": Array [ Object { "id": "http_server-abc-https://petstore.swagger.io/v2", diff --git a/src/oas/__tests__/operation.test.ts b/src/oas/__tests__/operation.test.ts index 5e4bc4a9..f579cec1 100644 --- a/src/oas/__tests__/operation.test.ts +++ b/src/oas/__tests__/operation.test.ts @@ -141,6 +141,7 @@ describe('oas operation', () => { extensions: {}, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], summary: '/Update', tags: [], diff --git a/src/oas/operation.ts b/src/oas/operation.ts index 535efa30..8df8ba1c 100644 --- a/src/oas/operation.ts +++ b/src/oas/operation.ts @@ -9,6 +9,7 @@ import type { Fragment, HttpOperationTransformer } from '../types'; import { TransformerContext, TranslateFunction } from '../types'; import { getExtensions } from './accessors'; import { translateToTags } from './tags'; +import { translateToSecurityDeclarationType } from './transformers'; const DEFAULT_METHODS = ['get', 'post', 'put', 'delete', 'options', 'head', 'patch', 'trace']; @@ -95,5 +96,7 @@ export const transformOasOperation: TranslateFunction< }, isString, ), + + securityDeclarationType: translateToSecurityDeclarationType(operation), }; }; diff --git a/src/oas/transformers/index.ts b/src/oas/transformers/index.ts index 1a495f35..0940c13c 100644 --- a/src/oas/transformers/index.ts +++ b/src/oas/transformers/index.ts @@ -1,2 +1,3 @@ export { convertSchema, translateSchemaObject } from './schema/index'; +export { translateToSecurityDeclarationType } from './securities'; export { translateLogo } from './translateLogo'; diff --git a/src/oas/transformers/securities.ts b/src/oas/transformers/securities.ts new file mode 100644 index 00000000..fae03f77 --- /dev/null +++ b/src/oas/transformers/securities.ts @@ -0,0 +1,18 @@ +import { HttpOperationSecurityDeclarationTypes, IHttpOperation } from '@stoplight/types'; +import type { OperationObject } from 'openapi3-ts/src/model/OpenApi'; +import type { Operation } from 'swagger-schema-official'; + +export function translateToSecurityDeclarationType({ + security, +}: Partial): IHttpOperation['securityDeclarationType'] { + let securityDeclarationType = HttpOperationSecurityDeclarationTypes.InheritedFromService; + + if (Array.isArray(security)) { + securityDeclarationType = + security.length === 0 + ? HttpOperationSecurityDeclarationTypes.None + : HttpOperationSecurityDeclarationTypes.Declared; + } + + return securityDeclarationType; +} diff --git a/src/oas2/__tests__/__fixtures__/id/bundled.ts b/src/oas2/__tests__/__fixtures__/id/bundled.ts index bcac7049..7ec9f544 100644 --- a/src/oas2/__tests__/__fixtures__/id/bundled.ts +++ b/src/oas2/__tests__/__fixtures__/id/bundled.ts @@ -227,6 +227,7 @@ export default { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [ { id: 'http_server-service_abc-http://localhost:3000', @@ -369,6 +370,7 @@ export default { }, ], ], + securityDeclarationType: 'declared', servers: [ { id: 'http_server-service_abc-http://localhost:3000', diff --git a/src/oas2/__tests__/__snapshots__/operation.test.ts.snap b/src/oas2/__tests__/__snapshots__/operation.test.ts.snap index f92c4c2a..df9020b0 100644 --- a/src/oas2/__tests__/__snapshots__/operation.test.ts.snap +++ b/src/oas2/__tests__/__snapshots__/operation.test.ts.snap @@ -78,6 +78,7 @@ Object { }, ], ], + "securityDeclarationType": "declared", "servers": Array [], "summary": "osum", "tags": Array [], diff --git a/src/oas2/__tests__/bundle.test.ts b/src/oas2/__tests__/bundle.test.ts index a7f62d69..319e1e0c 100644 --- a/src/oas2/__tests__/bundle.test.ts +++ b/src/oas2/__tests__/bundle.test.ts @@ -109,6 +109,7 @@ describe('bundleOas2Service', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -129,6 +130,7 @@ describe('bundleOas2Service', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -151,6 +153,7 @@ describe('bundleOas2Service', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -269,6 +272,7 @@ describe('bundleOas2Service', () => { }, ], ], + securityDeclarationType: 'declared', servers: [], tags: [], }, diff --git a/src/oas2/__tests__/operation.test.ts b/src/oas2/__tests__/operation.test.ts index 627b65f0..a3b4722b 100644 --- a/src/oas2/__tests__/operation.test.ts +++ b/src/oas2/__tests__/operation.test.ts @@ -210,6 +210,7 @@ describe('transformOas2Operation', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], extensions: {}, @@ -259,6 +260,7 @@ describe('transformOas2Operation', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], extensions: {}, diff --git a/src/oas3/__tests__/__fixtures__/examples/bundled.ts b/src/oas3/__tests__/__fixtures__/examples/bundled.ts index 7931419a..4f5150f9 100644 --- a/src/oas3/__tests__/__fixtures__/examples/bundled.ts +++ b/src/oas3/__tests__/__fixtures__/examples/bundled.ts @@ -55,6 +55,7 @@ export default { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [ { id: 'http_server-service_abc-http://localhost:3000', diff --git a/src/oas3/__tests__/__fixtures__/examples/legacy.ts b/src/oas3/__tests__/__fixtures__/examples/legacy.ts index 90b0ad42..02a2ac1c 100644 --- a/src/oas3/__tests__/__fixtures__/examples/legacy.ts +++ b/src/oas3/__tests__/__fixtures__/examples/legacy.ts @@ -72,6 +72,7 @@ export default [ url: 'http://localhost:3000', }, ], + securityDeclarationType: 'inheritedFromService', tags: [], }, ]; diff --git a/src/oas3/__tests__/__fixtures__/id/bundled.ts b/src/oas3/__tests__/__fixtures__/id/bundled.ts index 33a456e7..b1c349e3 100644 --- a/src/oas3/__tests__/__fixtures__/id/bundled.ts +++ b/src/oas3/__tests__/__fixtures__/id/bundled.ts @@ -251,6 +251,7 @@ export default { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [ { id: 'http_server-service_abc-http://localhost:3000', @@ -365,6 +366,7 @@ export default { }, ], ], + securityDeclarationType: 'declared', servers: [ { id: 'http_server-service_abc-http://localhost:3000', diff --git a/src/oas3/__tests__/__fixtures__/id/legacy.ts b/src/oas3/__tests__/__fixtures__/id/legacy.ts index dd4bdb03..98099b5d 100644 --- a/src/oas3/__tests__/__fixtures__/id/legacy.ts +++ b/src/oas3/__tests__/__fixtures__/id/legacy.ts @@ -235,6 +235,7 @@ export default [ }, ], security: [], + securityDeclarationType: 'inheritedFromService', extensions: {}, }, @@ -470,6 +471,7 @@ export default [ }, ], ], + securityDeclarationType: 'declared', extensions: {}, }, ]; diff --git a/src/oas3/__tests__/__fixtures__/shared-components/bundled.ts b/src/oas3/__tests__/__fixtures__/shared-components/bundled.ts index f7c55b52..f9b2199a 100644 --- a/src/oas3/__tests__/__fixtures__/shared-components/bundled.ts +++ b/src/oas3/__tests__/__fixtures__/shared-components/bundled.ts @@ -26,6 +26,7 @@ export default { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], summary: 'Get a organization repository', tags: [], @@ -55,6 +56,7 @@ export default { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], summary: 'Create a organization repository', tags: [], diff --git a/src/oas3/__tests__/__fixtures__/shared-components/legacy.ts b/src/oas3/__tests__/__fixtures__/shared-components/legacy.ts index 51c66562..2103b760 100644 --- a/src/oas3/__tests__/__fixtures__/shared-components/legacy.ts +++ b/src/oas3/__tests__/__fixtures__/shared-components/legacy.ts @@ -130,6 +130,7 @@ export default [ }, tags: [], security: [], + securityDeclarationType: 'inheritedFromService', extensions: {}, }, /** @@ -276,6 +277,7 @@ export default [ }, tags: [], security: [], + securityDeclarationType: 'inheritedFromService', extensions: {}, }, ]; diff --git a/src/oas3/__tests__/__snapshots__/operation.test.ts.snap b/src/oas3/__tests__/__snapshots__/operation.test.ts.snap index 40d67068..4fc8c192 100644 --- a/src/oas3/__tests__/__snapshots__/operation.test.ts.snap +++ b/src/oas3/__tests__/__snapshots__/operation.test.ts.snap @@ -18,6 +18,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [], "tags": Array [], }, @@ -58,6 +59,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [], "tags": Array [], } @@ -80,6 +82,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [], "summary": "summary", "tags": Array [], @@ -103,6 +106,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": Any, @@ -132,6 +136,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": Any, @@ -161,6 +166,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [], "summary": "summary", "tags": Array [ @@ -189,6 +195,7 @@ Object { }, "responses": Array [], "security": Array [], + "securityDeclarationType": "inheritedFromService", "servers": Array [ Object { "id": Any, diff --git a/src/oas3/__tests__/accessors.test.ts b/src/oas3/__tests__/accessors.test.ts index 7eb418bf..533bf32e 100644 --- a/src/oas3/__tests__/accessors.test.ts +++ b/src/oas3/__tests__/accessors.test.ts @@ -46,6 +46,7 @@ describe('getOas3Securities', () => { 'operationScheme', { type: 'apiKey', + extensions: {}, }, ], ], @@ -72,6 +73,7 @@ describe('getOas3Securities', () => { 'specScheme', { type: 'apiKey', + extensions: {}, }, ], ], @@ -102,6 +104,7 @@ describe('getOas3Securities', () => { 'specScheme', { type: 'apiKey', + extensions: {}, }, ], ], diff --git a/src/oas3/__tests__/bundle.test.ts b/src/oas3/__tests__/bundle.test.ts index 9b673506..4e8f2766 100644 --- a/src/oas3/__tests__/bundle.test.ts +++ b/src/oas3/__tests__/bundle.test.ts @@ -107,6 +107,7 @@ describe('bundleOas3Service', () => { ], }, security: [], + securityDeclarationType: 'inheritedFromService', servers: [], }, ], @@ -684,6 +685,7 @@ describe('bundleOas3Service', () => { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -743,6 +745,7 @@ describe('bundleOas3Service', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -849,6 +852,7 @@ describe('bundleOas3Service', () => { }, ], ], + securityDeclarationType: 'declared', servers: [], tags: [], }, diff --git a/src/oas3/__tests__/operation.test.ts b/src/oas3/__tests__/operation.test.ts index 23544df4..e6087452 100644 --- a/src/oas3/__tests__/operation.test.ts +++ b/src/oas3/__tests__/operation.test.ts @@ -728,6 +728,7 @@ describe('transformOas3Operation', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], extensions: {}, @@ -809,6 +810,7 @@ describe('transformOas3Operation', () => { }, responses: [], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], extensions: {}, @@ -1055,6 +1057,7 @@ describe('transformOas3Operation', () => { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], extensions: {}, @@ -1284,6 +1287,7 @@ describe('transformOas3Operation', () => { }, tags: [], security: [], + securityDeclarationType: 'inheritedFromService', extensions: {}, }); }); diff --git a/src/oas3/accessors.ts b/src/oas3/accessors.ts index 79ea47bb..cd8c5621 100644 --- a/src/oas3/accessors.ts +++ b/src/oas3/accessors.ts @@ -4,6 +4,7 @@ import pickBy = require('lodash.pickby'); import type { OpenAPIObject } from 'openapi3-ts'; import { isNonNullable } from '../guards'; +import { getExtensions } from '../oas/accessors'; import { entries } from '../utils'; import { isSecurityScheme } from './guards'; @@ -39,11 +40,18 @@ export function getSecurities( }, ]), ), + extensions: getExtensions(definition), }, ]; } - return [opScheme, definition]; + return [ + opScheme, + { + ...definition, + extensions: getExtensions(definition), + }, + ]; }) .filter(isNonNullable); }); diff --git a/src/oas3/operation.ts b/src/oas3/operation.ts index a71a7b99..c67cd82f 100644 --- a/src/oas3/operation.ts +++ b/src/oas3/operation.ts @@ -1,4 +1,4 @@ -import type { DeepPartial, IHttpOperation } from '@stoplight/types'; +import { DeepPartial, IHttpOperation } from '@stoplight/types'; import pickBy = require('lodash.pickby'); import type { OpenAPIObject } from 'openapi3-ts'; diff --git a/src/oas3/transformers/__tests__/callbacks.test.ts b/src/oas3/transformers/__tests__/callbacks.test.ts index f96f217c..c4d3de88 100644 --- a/src/oas3/transformers/__tests__/callbacks.test.ts +++ b/src/oas3/transformers/__tests__/callbacks.test.ts @@ -142,6 +142,7 @@ describe('translateToCallbacks', () => { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -193,6 +194,7 @@ describe('translateToCallbacks', () => { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, @@ -244,6 +246,7 @@ describe('translateToCallbacks', () => { }, ], security: [], + securityDeclarationType: 'inheritedFromService', servers: [], tags: [], }, diff --git a/src/oas3/transformers/securities.ts b/src/oas3/transformers/securities.ts index b8231ea7..4944422f 100644 --- a/src/oas3/transformers/securities.ts +++ b/src/oas3/transformers/securities.ts @@ -29,17 +29,16 @@ export const translateToSingleSecurity = withContext< Optional > >(function ([key, securityScheme]) { - const baseObject: { id: string; key: string; description?: string; extensions?: Extensions } = { + const baseObject: { id: string; key: string; description?: string; extensions: Extensions } = { id: this.generateId.httpSecurity({ keyOrName: key }), key, + extensions: getExtensions(securityScheme), }; if (securityScheme.description) { baseObject.description = securityScheme.description; } - baseObject.extensions = getExtensions(securityScheme); - if (securityScheme.type === 'apiKey') { return { ...baseObject, diff --git a/src/postman/__tests__/operation.test.ts b/src/postman/__tests__/operation.test.ts index f003a330..7ebc730b 100644 --- a/src/postman/__tests__/operation.test.ts +++ b/src/postman/__tests__/operation.test.ts @@ -95,7 +95,15 @@ describe('transformPostmanCollectionOperation()', () => { ).toEqual( expect.objectContaining({ security: [ - [{ id: expect.stringMatching(/^_gen_[0-9a-f]{6}$/), key: 'http-0', scheme: 'basic', type: 'http' }], + [ + { + id: expect.stringMatching(/^_gen_[0-9a-f]{6}$/), + key: 'http-0', + scheme: 'basic', + type: 'http', + extensions: {}, + }, + ], ], }), ); diff --git a/src/postman/__tests__/service.test.ts b/src/postman/__tests__/service.test.ts index 6d111dbf..9ae4c343 100644 --- a/src/postman/__tests__/service.test.ts +++ b/src/postman/__tests__/service.test.ts @@ -34,6 +34,7 @@ describe('transformPostmanCollectionService()', () => { key: 'http-0', scheme: 'basic', type: 'http', + extensions: {}, }, ], }, diff --git a/src/postman/transformers/__tests__/securitySchemes.spec.ts b/src/postman/transformers/__tests__/securitySchemes.spec.ts index 396c4fa4..f81cb2ff 100644 --- a/src/postman/transformers/__tests__/securitySchemes.spec.ts +++ b/src/postman/transformers/__tests__/securitySchemes.spec.ts @@ -37,6 +37,7 @@ describe('transformSecurityScheme()', () => { key: 'auth-http', type: 'http', scheme: 'basic', + extensions: {}, }, }); }); @@ -75,6 +76,7 @@ describe('transformSecurityScheme()', () => { key: 'auth-http', type: 'http', scheme: 'digest', + extensions: {}, }, }); }); @@ -103,6 +105,7 @@ describe('transformSecurityScheme()', () => { key: 'auth-http', type: 'http', scheme: 'bearer', + extensions: {}, }, }); }); @@ -143,6 +146,7 @@ describe('transformSecurityScheme()', () => { type: 'apiKey', name: 'TestApiKey', in: 'query', + extensions: {}, }, }); }); @@ -177,6 +181,7 @@ describe('transformSecurityScheme()', () => { type: 'apiKey', name: 'TestApiKey', in: 'header', + extensions: {}, }, }); }); @@ -437,6 +442,7 @@ describe('transformSecurityScheme()', () => { description: 'OAuth2 Access Token', scheme: 'bearer', type: 'http', + extensions: {}, }, }); }); @@ -677,6 +683,7 @@ describe('transformPostmanSecuritySchemes()', () => { key: 'http-0', scheme: 'basic', type: 'http', + extensions: {}, }, type: 'securityScheme', }, @@ -686,6 +693,7 @@ describe('transformPostmanSecuritySchemes()', () => { key: 'http-1', scheme: 'digest', type: 'http', + extensions: {}, }, type: 'securityScheme', }, @@ -785,6 +793,7 @@ describe('transformPostmanSecuritySchemes()', () => { key: 'http-0', scheme: 'basic', type: 'http', + extensions: {}, }, type: 'securityScheme', }, @@ -796,20 +805,26 @@ describe('transformPostmanSecuritySchemes()', () => { describe.each<[string, PostmanSecurityScheme, PostmanSecurityScheme, boolean]>([ [ 'two equal security schemes', - { type: 'securityScheme', securityScheme: { id: '', key: '1', type: 'http', scheme: 'basic' } }, - { type: 'securityScheme', securityScheme: { id: '', key: '2', type: 'http', scheme: 'basic' } }, + { type: 'securityScheme', securityScheme: { id: '', key: '1', type: 'http', scheme: 'basic', extensions: {} } }, + { type: 'securityScheme', securityScheme: { id: '', key: '2', type: 'http', scheme: 'basic', extensions: {} } }, true, ], [ 'different types', - { type: 'securityScheme', securityScheme: { id: '', key: '1', type: 'http', scheme: 'basic' } }, + { type: 'securityScheme', securityScheme: { id: '', key: '1', type: 'http', scheme: 'basic', extensions: {} } }, { type: 'headerParams', headerParams: [] }, false, ], [ 'two different', - { type: 'securityScheme', securityScheme: { id: '', key: '1', type: 'http', scheme: 'basic' } }, - { type: 'securityScheme', securityScheme: { id: '', key: '2', type: 'http', scheme: 'digest' } }, + { + type: 'securityScheme', + securityScheme: { id: '', key: '1', type: 'http', scheme: 'basic', extensions: {} }, + }, + { + type: 'securityScheme', + securityScheme: { id: '', key: '2', type: 'http', scheme: 'digest', extensions: {} }, + }, false, ], [ diff --git a/src/postman/transformers/securityScheme.ts b/src/postman/transformers/securityScheme.ts index ba48f408..835669b7 100644 --- a/src/postman/transformers/securityScheme.ts +++ b/src/postman/transformers/securityScheme.ts @@ -131,6 +131,7 @@ export function transformSecurityScheme( type: 'http', scheme: 'bearer', description: 'OAuth2 Access Token', + extensions: {}, }, }; } @@ -144,6 +145,7 @@ export function transformSecurityScheme( type: 'apiKey', name: parameters.get('key'), in: parameters.get('in') || 'header', + extensions: {}, }, }; @@ -157,6 +159,7 @@ export function transformSecurityScheme( key: nextKey('http'), type: 'http', scheme: auth.type, + extensions: {}, }, }; diff --git a/yarn.lock b/yarn.lock index 1d484b07..f187b77b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1491,10 +1491,10 @@ "@types/json-schema" "^7.0.4" utility-types "^3.10.0" -"@stoplight/types@^13.6.0": - version "13.6.0" - resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-13.6.0.tgz#96c6aaae05858b36f589821cd52c95aa9b205ce7" - integrity sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ== +"@stoplight/types@^13.12.0": + version "13.12.0" + resolved "https://registry.yarnpkg.com/@stoplight/types/-/types-13.12.0.tgz#6ea1c6a27d6664217398d6378dad93b88e65422e" + integrity sha512-lpyB8b5cNcg/CyQ9W7Q2BxPkHhBA8+9byviGT6uL2Ok/5iao0poCnFUH++Cd7VN1/RaXrv0LT9fyOg4fJIl0iA== dependencies: "@types/json-schema" "^7.0.4" utility-types "^3.10.0"