From 4319fe1019fa59975b9ba48c085effce71596d83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 23:29:08 +0000 Subject: [PATCH 01/19] chore(deps-dev): bump sinon from 16.1.1 to 16.1.3 (#3304) --- package-lock.json | 9 ++++----- package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47c727d487..3d9e2cf9e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "rimraf": "=5.0.5", "rollup": "=4.1.4", "rollup-plugin-dts": "=6.1.0", - "sinon": "=16.1.1", + "sinon": "=16.1.3", "terser-webpack-plugin": "=5.3.9", "ts-node": "=10.9.1", "typescript": "=5.2.2", @@ -28303,11 +28303,10 @@ } }, "node_modules/sinon": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.1.tgz", - "integrity": "sha512-tu0DS1g4Rm2xHT9mWK5g5aTogTXWwGGz3fQK/L5fnECPkcAQ3YcbAbJ4XxOkpDDnV4EV5n+lee5neq5QyVxoSg==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", + "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", "dev": true, - "hasInstallScript": true, "dependencies": { "@sinonjs/commons": "^3.0.0", "@sinonjs/fake-timers": "^10.3.0", diff --git a/package.json b/package.json index 4c8b8791ad..513a55c45b 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "rimraf": "=5.0.5", "rollup": "=4.1.4", "rollup-plugin-dts": "=6.1.0", - "sinon": "=16.1.1", + "sinon": "=16.1.3", "terser-webpack-plugin": "=5.3.9", "ts-node": "=10.9.1", "typescript": "=5.2.2", From 09592cb28e5d3a6dcd37dca2da8e9bbb0561d59a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 23:39:49 +0000 Subject: [PATCH 02/19] chore(deps-dev): bump @types/chai from 4.3.8 to 4.3.9 (#3303) --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d9e2cf9e3..6bbce52d55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@babel/register": "=7.22.15", "@commitlint/cli": "=17.8.0", "@commitlint/config-conventional": "=17.8.0", - "@types/chai": "=4.3.8", + "@types/chai": "=4.3.9", "@types/dedent": "=0.7.1", "@types/mocha": "=10.0.2", "@types/node": "=20.8.5", @@ -7059,9 +7059,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "node_modules/@types/connect": { diff --git a/package.json b/package.json index 513a55c45b..a05c68f4e6 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@babel/register": "=7.22.15", "@commitlint/cli": "=17.8.0", "@commitlint/config-conventional": "=17.8.0", - "@types/chai": "=4.3.8", + "@types/chai": "=4.3.9", "@types/dedent": "=0.7.1", "@types/mocha": "=10.0.2", "@types/node": "=20.8.5", From 4770077d09cc094cbf53ff036c7b97f2b136273b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Fri, 20 Oct 2023 16:24:58 +0200 Subject: [PATCH 03/19] feat(ns-openapi-2): add support for Operation Object (#3305) Refs #3097 --- packages/apidom-ns-openapi-2/README.md | 2 +- .../src/elements/Operation.ts | 103 ++++++++++++++++++ .../src/elements/nces/OperationConsumes.ts | 12 ++ .../src/elements/nces/OperationParameters.ts | 13 +++ .../src/elements/nces/OperationProduces.ts | 12 ++ .../src/elements/nces/OperationSchemes.ts | 12 ++ .../src/elements/nces/OperationSecurity.ts | 13 +++ .../src/elements/nces/OperationTags.ts | 12 ++ packages/apidom-ns-openapi-2/src/index.ts | 2 + packages/apidom-ns-openapi-2/src/namespace.ts | 2 + .../apidom-ns-openapi-2/src/predicates.ts | 12 ++ .../src/refractor/registration.ts | 9 ++ .../src/refractor/specification.ts | 28 +++++ .../open-api-2/operation/ConsumesVisitor.ts | 20 ++++ .../open-api-2/operation/ParametersVisitor.ts | 36 ++++++ .../open-api-2/operation/ProducesVisitor.ts | 20 ++++ .../open-api-2/operation/SchemesVisitor.ts | 20 ++++ .../open-api-2/operation/SecurityVisitor.ts | 26 +++++ .../open-api-2/operation/TagsVisitor.ts | 20 ++++ .../visitors/open-api-2/operation/index.ts | 17 +++ .../src/traversal/visitor.ts | 1 + .../apidom-ns-openapi-2/test/predicates.ts | 58 ++++++++++ .../Operation/__snapshots__/index.ts.snap | 53 +++++++++ .../refractor/elements/Operation/index.ts | 45 ++++++++ 24 files changed, 547 insertions(+), 1 deletion(-) create mode 100644 packages/apidom-ns-openapi-2/src/elements/Operation.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/OperationConsumes.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/OperationParameters.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/OperationProduces.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/OperationSchemes.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/OperationSecurity.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/OperationTags.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ParametersVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ProducesVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SchemesVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/TagsVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/index.ts create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/Operation/__snapshots__/index.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/Operation/index.ts diff --git a/packages/apidom-ns-openapi-2/README.md b/packages/apidom-ns-openapi-2/README.md index 992e530a46..25708d4869 100644 --- a/packages/apidom-ns-openapi-2/README.md +++ b/packages/apidom-ns-openapi-2/README.md @@ -190,7 +190,7 @@ Only fully implemented specification objects should be checked here. - [x] [License Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-license-object) - [ ] [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-paths-object) - [ ] [Path Item Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-path-item-object) -- [ ] [Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-operation-object) +- [x] [Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-operation-object) - [x] [External Documentation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-external-documentation-object) - [x] [Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-parameter-object) - [x] [Items Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-items-object) diff --git a/packages/apidom-ns-openapi-2/src/elements/Operation.ts b/packages/apidom-ns-openapi-2/src/elements/Operation.ts new file mode 100644 index 0000000000..75276ff691 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/Operation.ts @@ -0,0 +1,103 @@ +import { + ObjectElement, + ArrayElement, + BooleanElement, + StringElement, + Attributes, + Meta, +} from '@swagger-api/apidom-core'; + +import ExternalDocumentationElement from './ExternalDocumentation'; +import ResponsesElement from './Responses'; + +class Operation extends ObjectElement { + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.element = 'operation'; + } + + get tags(): ArrayElement | undefined { + return this.get('tags'); + } + + set tags(tags: ArrayElement | undefined) { + this.set('tags', tags); + } + + get summary(): StringElement | undefined { + return this.get('summary'); + } + + set summary(description: StringElement | undefined) { + this.set('summary', description); + } + + get description(): StringElement | undefined { + return this.get('description'); + } + + set description(description: StringElement | undefined) { + this.set('description', description); + } + + set externalDocs(externalDocs: ExternalDocumentationElement | undefined) { + this.set('externalDocs', externalDocs); + } + + get externalDocs(): ExternalDocumentationElement | undefined { + return this.get('externalDocs'); + } + + get operationId(): StringElement | undefined { + return this.get('operationId'); + } + + set operationId(operationId: StringElement | undefined) { + this.set('operationId', operationId); + } + + get parameters(): ArrayElement | undefined { + return this.get('parameters'); + } + + set parameters(parameters: ArrayElement | undefined) { + this.set('parameters', parameters); + } + + get responses(): ResponsesElement | undefined { + return this.get('responses'); + } + + set responses(responses: ResponsesElement | undefined) { + this.set('responses', responses); + } + + get schemes(): ArrayElement | undefined { + return this.get('schemes'); + } + + set schemes(schemes: ArrayElement | undefined) { + this.set('schemes', schemes); + } + + get deprecated(): BooleanElement { + if (this.hasKey('deprecated')) { + return this.get('deprecated'); + } + return new BooleanElement(false); + } + + set deprecated(deprecated: BooleanElement) { + this.set('deprecated', deprecated); + } + + get security(): ArrayElement | undefined { + return this.get('security'); + } + + set security(security: ArrayElement | undefined) { + this.set('security', security); + } +} + +export default Operation; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/OperationConsumes.ts b/packages/apidom-ns-openapi-2/src/elements/nces/OperationConsumes.ts new file mode 100644 index 0000000000..dc64ab24d4 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/OperationConsumes.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class OperationConsumes extends ArrayElement { + static primaryClass = 'operation-consumes'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(OperationConsumes.primaryClass); + } +} + +export default OperationConsumes; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/OperationParameters.ts b/packages/apidom-ns-openapi-2/src/elements/nces/OperationParameters.ts new file mode 100644 index 0000000000..a5e084e1af --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/OperationParameters.ts @@ -0,0 +1,13 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class OperationParameters extends ArrayElement { + static primaryClass = 'operation-parameters'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(OperationParameters.primaryClass); + this.classes.push('parameters'); + } +} + +export default OperationParameters; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/OperationProduces.ts b/packages/apidom-ns-openapi-2/src/elements/nces/OperationProduces.ts new file mode 100644 index 0000000000..d68ed100b7 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/OperationProduces.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class OperationProduces extends ArrayElement { + static primaryClass = 'operation-produces'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(OperationProduces.primaryClass); + } +} + +export default OperationProduces; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/OperationSchemes.ts b/packages/apidom-ns-openapi-2/src/elements/nces/OperationSchemes.ts new file mode 100644 index 0000000000..a22853088b --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/OperationSchemes.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class OperationSchemes extends ArrayElement { + static primaryClass = 'operation-schemes'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(OperationSchemes.primaryClass); + } +} + +export default OperationSchemes; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/OperationSecurity.ts b/packages/apidom-ns-openapi-2/src/elements/nces/OperationSecurity.ts new file mode 100644 index 0000000000..4c721004d8 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/OperationSecurity.ts @@ -0,0 +1,13 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class OperationSecurity extends ArrayElement { + static primaryClass = 'operation-security'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(OperationSecurity.primaryClass); + this.classes.push('security'); + } +} + +export default OperationSecurity; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/OperationTags.ts b/packages/apidom-ns-openapi-2/src/elements/nces/OperationTags.ts new file mode 100644 index 0000000000..1b9e773794 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/OperationTags.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class OperationTags extends ArrayElement { + static primaryClass = 'operation-tags'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(OperationTags.primaryClass); + } +} + +export default OperationTags; diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts index 00743e5252..4d25b74ff3 100644 --- a/packages/apidom-ns-openapi-2/src/index.ts +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -27,6 +27,7 @@ export { isInfoElement, isLicenseElement, isContactElement, + isOperationElement, isExternalDocumentationElement, isParameterElement, isItemsElement, @@ -55,6 +56,7 @@ export { InfoElement, LicenseElement, ContactElement, + OperationElement, ExternalDocumentationElement, ParameterElement, ItemsElement, diff --git a/packages/apidom-ns-openapi-2/src/namespace.ts b/packages/apidom-ns-openapi-2/src/namespace.ts index 9730ad9e39..8c9a480b0f 100644 --- a/packages/apidom-ns-openapi-2/src/namespace.ts +++ b/packages/apidom-ns-openapi-2/src/namespace.ts @@ -3,6 +3,7 @@ import { NamespacePluginOptions } from '@swagger-api/apidom-core'; import InfoElement from './elements/Info'; import LicenseElement from './elements/License'; import ContactElement from './elements/Contact'; +import OperationElement from './elements/Operation'; import ExternalDocumentation from './elements/ExternalDocumentation'; import ParameterElement from './elements/Parameter'; import ItemsElement from './elements/Items'; @@ -30,6 +31,7 @@ const openApi2 = { base.register('info', InfoElement); base.register('license', LicenseElement); base.register('contact', ContactElement); + base.register('operation', OperationElement); base.register('externalDocumentation', ExternalDocumentation); base.register('parameter', ParameterElement); base.register('items', ItemsElement); diff --git a/packages/apidom-ns-openapi-2/src/predicates.ts b/packages/apidom-ns-openapi-2/src/predicates.ts index 5c4ea7ae1b..66c234b141 100644 --- a/packages/apidom-ns-openapi-2/src/predicates.ts +++ b/packages/apidom-ns-openapi-2/src/predicates.ts @@ -3,6 +3,7 @@ import { createPredicate } from '@swagger-api/apidom-core'; import InfoElement from './elements/Info'; import LicenseElement from './elements/License'; import ContactElement from './elements/Contact'; +import OperationElement from './elements/Operation'; import ExternalDocumentationElement from './elements/ExternalDocumentation'; import ParameterElement from './elements/Parameter'; import ItemsElement from './elements/Items'; @@ -52,6 +53,17 @@ export const isContactElement = createPredicate( primitiveEq('object', element)); }, ); + +export const isOperationElement = createPredicate( + ({ hasBasicElementProps, isElementType, primitiveEq }) => { + return (element: unknown): element is OperationElement => + element instanceof OperationElement || + (hasBasicElementProps(element) && + isElementType('operation', element) && + primitiveEq('object', element)); + }, +); + export const isExternalDocumentationElement = createPredicate( ({ hasBasicElementProps, isElementType, primitiveEq }) => { return (element: unknown): element is ExternalDocumentationElement => diff --git a/packages/apidom-ns-openapi-2/src/refractor/registration.ts b/packages/apidom-ns-openapi-2/src/refractor/registration.ts index e6d970423c..7cd4a6655e 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/registration.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/registration.ts @@ -1,6 +1,7 @@ import InfoElement from '../elements/Info'; import LicenseElement from '../elements/License'; import ContactElement from '../elements/Contact'; +import OperationElement from '../elements/Operation'; import ExternalDocumentationElement from '../elements/ExternalDocumentation'; import ParameterElement from '../elements/Parameter'; import ItemsElement from '../elements/Items'; @@ -38,6 +39,13 @@ ContactElement.refract = createRefractor([ 'Contact', '$visitor', ]); +OperationElement.refract = createRefractor([ + 'visitors', + 'document', + 'objects', + 'Operation', + '$visitor', +]); ExternalDocumentationElement.refract = createRefractor([ 'visitors', 'document', @@ -140,6 +148,7 @@ export { InfoElement, LicenseElement, ContactElement, + OperationElement, ExternalDocumentationElement, ParameterElement, ItemsElement, diff --git a/packages/apidom-ns-openapi-2/src/refractor/specification.ts b/packages/apidom-ns-openapi-2/src/refractor/specification.ts index 93307f45ac..6010cbdcb5 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/specification.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/specification.ts @@ -5,6 +5,13 @@ import InfoVisitor from './visitors/open-api-2/info'; import InfoVersionVisitor from './visitors/open-api-2/info/VersionVisitor'; import LicenseVisitor from './visitors/open-api-2/license'; import ContactVisitor from './visitors/open-api-2/contact'; +import OperationVisitor from './visitors/open-api-2/operation'; +import OperationTagsVisitor from './visitors/open-api-2/operation/TagsVisitor'; +import OperationConsumesVisitor from './visitors/open-api-2/operation/ConsumesVisitor'; +import OperationProducesVisitor from './visitors/open-api-2/operation/ProducesVisitor'; +import OperationParametersVisitor from './visitors/open-api-2/operation/ParametersVisitor'; +import OperationSchemesVisitor from './visitors/open-api-2/operation/SchemesVisitor'; +import OperationSecurityVisitor from './visitors/open-api-2/operation/SecurityVisitor'; import ExternalDocumentationElement from './visitors/open-api-2/external-documentation'; import ParameterVisitor from './visitors/open-api-2/parameter'; import ItemsVisitor from './visitors/open-api-2/items'; @@ -79,6 +86,27 @@ const specification = { email: FallbackVisitor, }, }, + Operation: { + $visitor: OperationVisitor, + fixedFields: { + tags: OperationTagsVisitor, + summary: FallbackVisitor, + description: FallbackVisitor, + externalDocs: { + $ref: '#/visitors/document/objects/ExternalDocumentation', + }, + operationId: FallbackVisitor, + consumes: OperationConsumesVisitor, + produces: OperationProducesVisitor, + parameters: OperationParametersVisitor, + responses: { + $ref: '#/visitors/document/objects/Responses', + }, + schemes: OperationSchemesVisitor, + deprecated: FallbackVisitor, + security: OperationSecurityVisitor, + }, + }, ExternalDocumentation: { $visitor: ExternalDocumentationElement, fixedFields: { diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.ts new file mode 100644 index 0000000000..dec31f5984 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import OperationConsumesElement from '../../../../elements/nces/OperationConsumes'; +import FallbackVisitor from '../../FallbackVisitor'; + +const ConsumesVisitor = stampit(FallbackVisitor, { + init() { + this.element = new OperationConsumesElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default ConsumesVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ParametersVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ParametersVisitor.ts new file mode 100644 index 0000000000..e1672ae9a7 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ParametersVisitor.ts @@ -0,0 +1,36 @@ +import stampit from 'stampit'; +import { ArrayElement, Element, BREAK } from '@swagger-api/apidom-core'; + +import { isReferenceLikeElement } from '../../../predicates'; +import { isReferenceElement } from '../../../../predicates'; +import OperationParametersElement from '../../../../elements/nces/OperationParameters'; +import FallbackVisitor from '../../FallbackVisitor'; +import SpecificationVisitor from '../../SpecificationVisitor'; + +const ParametersVisitor = stampit(SpecificationVisitor, FallbackVisitor, { + init() { + this.element = new OperationParametersElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + arrayElement.forEach((item: Element): void => { + const specPath = isReferenceLikeElement(item) + ? ['document', 'objects', 'Reference'] + : ['document', 'objects', 'Parameter']; + const element = this.toRefractedElement(specPath, item); + + if (isReferenceElement(element)) { + element.setMetaProperty('referenced-element', 'parameter'); + } + + this.element.push(element); + }); + + this.copyMetaAndAttributes(arrayElement, this.element); + + return BREAK; + }, + }, +}); + +export default ParametersVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ProducesVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ProducesVisitor.ts new file mode 100644 index 0000000000..34ce858f67 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/ProducesVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import OperationProducesElement from '../../../../elements/nces/OperationProduces'; +import FallbackVisitor from '../../FallbackVisitor'; + +const ProducesVisitor = stampit(FallbackVisitor, { + init() { + this.element = new OperationProducesElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default ProducesVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SchemesVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SchemesVisitor.ts new file mode 100644 index 0000000000..2281b0eaa6 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SchemesVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import OperationSchemesElement from '../../../../elements/nces/OperationSchemes'; +import FallbackVisitor from '../../FallbackVisitor'; + +const SchemesVisitor = stampit(FallbackVisitor, { + init() { + this.element = new OperationSchemesElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default SchemesVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts new file mode 100644 index 0000000000..c7b3410abc --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts @@ -0,0 +1,26 @@ +import stampit from 'stampit'; +import { ArrayElement, Element, BREAK } from '@swagger-api/apidom-core'; + +import OperationSecurityElement from '../../../../elements/nces/OperationSecurity'; +import FallbackVisitor from '../../FallbackVisitor'; +import SpecificationVisitor from '../../SpecificationVisitor'; + +const SecurityRequirementVisitor = stampit(SpecificationVisitor, FallbackVisitor, { + init() { + this.element = new OperationSecurityElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + arrayElement.forEach((item: Element): void => { + const specPath = ['document', 'objects', 'SecurityRequirement']; + const element = this.toRefractedElement(specPath, item); + this.element.push(element); + }); + this.copyMetaAndAttributes(arrayElement, this.element); + + return BREAK; + }, + }, +}); + +export default SecurityRequirementVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/TagsVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/TagsVisitor.ts new file mode 100644 index 0000000000..47ae533c19 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/TagsVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import OperationTagsElement from '../../../../elements/nces/OperationTags'; +import FallbackVisitor from '../../FallbackVisitor'; + +const TagsVisitor = stampit(FallbackVisitor, { + init() { + this.element = new OperationTagsElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default TagsVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/index.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/index.ts new file mode 100644 index 0000000000..3232fd4822 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/index.ts @@ -0,0 +1,17 @@ +import stampit from 'stampit'; +import { always } from 'ramda'; + +import OperationElement from '../../../../elements/Operation'; +import FixedFieldsVisitor from '../../generics/FixedFieldsVisitor'; +import FallbackVisitor from '../../FallbackVisitor'; + +const OperationVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, { + props: { + specPath: always(['document', 'objects', 'Operation']), + }, + init() { + this.element = new OperationElement(); + }, +}); + +export default OperationVisitor; diff --git a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts index b5b0fb3479..b963e13953 100644 --- a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts +++ b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts @@ -22,6 +22,7 @@ export const keyMap = { InfoElement: ['content'], LicenseElement: ['content'], ContactElement: ['content'], + OperationElement: ['content'], ExternalDocumentationElement: ['content'], ParameterElement: ['content'], ItemsElement: ['content'], diff --git a/packages/apidom-ns-openapi-2/test/predicates.ts b/packages/apidom-ns-openapi-2/test/predicates.ts index 991ed701d8..d7729af347 100644 --- a/packages/apidom-ns-openapi-2/test/predicates.ts +++ b/packages/apidom-ns-openapi-2/test/predicates.ts @@ -4,6 +4,7 @@ import { InfoElement, LicenseElement, ContactElement, + OperationElement, ExternalDocumentationElement, ParameterElement, ItemsElement, @@ -26,6 +27,7 @@ import { isInfoElement, isLicenseElement, isContactElement, + isOperationElement, isExternalDocumentationElement, isParameterElement, isItemsElement, @@ -216,6 +218,62 @@ describe('predicates', function () { }); }); + context('isOperationElement', function () { + context("given OperationElement instance value with element 'get'", function () { + specify('should return true', function () { + const element = new OperationElement(); + + assert.isTrue(isOperationElement(element)); + }); + }); + + context('given subtype instance value', function () { + specify('should return true', function () { + class OperationSubElement extends OperationElement {} + + assert.isTrue(isOperationElement(new OperationSubElement())); + }); + }); + + context('given non OperationSubElement instance value', function () { + specify('should return false', function () { + assert.isFalse(isOperationElement(1)); + assert.isFalse(isOperationElement(null)); + assert.isFalse(isOperationElement(undefined)); + assert.isFalse(isOperationElement({})); + assert.isFalse(isOperationElement([])); + assert.isFalse(isOperationElement('string')); + }); + }); + + specify('should support duck-typing', function () { + const operationElementDuck = { + _storedElement: 'operation', + _content: [], + primitive() { + return 'object'; + }, + get element() { + return this._storedElement; + }, + }; + + const operationElementSwan = { + _storedElement: undefined, + _content: undefined, + primitive() { + return 'swan'; + }, + get length() { + return 0; + }, + }; + + assert.isTrue(isOperationElement(operationElementDuck)); + assert.isFalse(isOperationElement(operationElementSwan)); + }); + }); + context('isExternalDocumentationElement', function () { context('given ExternalDocumentationElement instance value', function () { specify('should return true', function () { diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/Operation/__snapshots__/index.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/elements/Operation/__snapshots__/index.ts.snap new file mode 100644 index 0000000000..4b755334d2 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/Operation/__snapshots__/index.ts.snap @@ -0,0 +1,53 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`refractor elements OperationElement given requestBody field of type RequestBodyElement should refract to semantic ApiDOM tree 1`] = ` +(OperationElement + (MemberElement + (StringElement) + (ArrayElement + (StringElement) + (StringElement))) + (MemberElement + (StringElement) + (StringElement)) + (MemberElement + (StringElement) + (StringElement)) + (MemberElement + (StringElement) + (ExternalDocumentationElement)) + (MemberElement + (StringElement) + (StringElement)) + (MemberElement + (StringElement) + (ArrayElement + (StringElement))) + (MemberElement + (StringElement) + (ArrayElement + (StringElement))) + (MemberElement + (StringElement) + (ArrayElement + (ParameterElement) + (ReferenceElement + (MemberElement + (StringElement) + (StringElement))))) + (MemberElement + (StringElement) + (ResponsesElement)) + (MemberElement + (StringElement) + (ArrayElement + (StringElement) + (StringElement))) + (MemberElement + (StringElement) + (BooleanElement)) + (MemberElement + (StringElement) + (ArrayElement + (SecurityRequirementElement)))) +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/Operation/index.ts b/packages/apidom-ns-openapi-2/test/refractor/elements/Operation/index.ts new file mode 100644 index 0000000000..0560693ba6 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/Operation/index.ts @@ -0,0 +1,45 @@ +import { assert, expect } from 'chai'; +import { includesClasses, sexprs } from '@swagger-api/apidom-core'; + +import { OperationElement } from '../../../../src'; + +describe('refractor', function () { + context('elements', function () { + context('OperationElement', function () { + context('given requestBody field of type RequestBodyElement', function () { + specify('should refract to semantic ApiDOM tree', function () { + const operationElement = OperationElement.refract({ + tags: ['tag1', 'tag2'], + summary: 'operation-summary', + description: 'operation-description', + externalDocs: {}, + operationId: 'operation-operationId', + consumes: ['application/json'], + produces: ['application/json'], + parameters: [{}, { $ref: '#/parameters/parameter1' }], + responses: {}, + schemes: ['http', 'https'], + deprecated: true, + security: [{}], + }); + + expect(sexprs(operationElement)).toMatchSnapshot(); + }); + + specify('should support specification extensions', function () { + const operationElement = OperationElement.refract({ + summary: 'operation-summary', + 'x-extension': 'extension', + }) as OperationElement; + + assert.isFalse( + includesClasses(['specification-extension'], operationElement.getMember('summary')), + ); + assert.isTrue( + includesClasses(['specification-extension'], operationElement.getMember('x-extension')), + ); + }); + }); + }); + }); +}); From e527222502e35a48f46b351e4d18fc9c38c2e14c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Fri, 20 Oct 2023 16:49:58 +0200 Subject: [PATCH 04/19] refactor(ns-openapi-2): use references in spec object (#3306) Refs #3097 --- .../src/refractor/specification.ts | 82 ++++++++++--------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/packages/apidom-ns-openapi-2/src/refractor/specification.ts b/packages/apidom-ns-openapi-2/src/refractor/specification.ts index 6010cbdcb5..780ce0ddd5 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/specification.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/specification.ts @@ -56,12 +56,18 @@ const specification = { value: FallbackVisitor, document: { objects: { + // JSON Schema Draft 4/5 specific visitors + JSONReference: JSONSchemaDraft4Specification.visitors.document.objects.JSONReference, + JSONSchema: { + $ref: '#/visitors/document/objects/Schema', + }, + // OpenAPI 2 specific visitors Info: { $visitor: InfoVisitor, fixedFields: { - title: FallbackVisitor, - description: FallbackVisitor, - termsOfService: FallbackVisitor, + title: { $ref: '#/visitors/value' }, + description: { $ref: '#/visitors/value' }, + termsOfService: { $ref: '#/visitors/value' }, contact: { $ref: '#/visitors/document/objects/Contact', }, @@ -74,28 +80,28 @@ const specification = { License: { $visitor: LicenseVisitor, fixedFields: { - name: FallbackVisitor, - url: FallbackVisitor, + name: { $ref: '#/visitors/value' }, + url: { $ref: '#/visitors/value' }, }, }, Contact: { $visitor: ContactVisitor, fixedFields: { - name: FallbackVisitor, - url: FallbackVisitor, - email: FallbackVisitor, + name: { $ref: '#/visitors/value' }, + url: { $ref: '#/visitors/value' }, + email: { $ref: '#/visitors/value' }, }, }, Operation: { $visitor: OperationVisitor, fixedFields: { tags: OperationTagsVisitor, - summary: FallbackVisitor, - description: FallbackVisitor, + summary: { $ref: '#/visitors/value' }, + description: { $ref: '#/visitors/value' }, externalDocs: { $ref: '#/visitors/document/objects/ExternalDocumentation', }, - operationId: FallbackVisitor, + operationId: { $ref: '#/visitors/value' }, consumes: OperationConsumesVisitor, produces: OperationProducesVisitor, parameters: OperationParametersVisitor, @@ -103,22 +109,22 @@ const specification = { $ref: '#/visitors/document/objects/Responses', }, schemes: OperationSchemesVisitor, - deprecated: FallbackVisitor, + deprecated: { $ref: '#/visitors/value' }, security: OperationSecurityVisitor, }, }, ExternalDocumentation: { $visitor: ExternalDocumentationElement, fixedFields: { - description: FallbackVisitor, - url: FallbackVisitor, + description: { $ref: '#/visitors/value' }, + url: { $ref: '#/visitors/value' }, }, }, Parameter: { $visitor: ParameterVisitor, fixedFields: { - name: FallbackVisitor, - in: FallbackVisitor, + name: { $ref: '#/visitors/value' }, + in: { $ref: '#/visitors/value' }, description: jsonSchemaFixedFields.description, required: jsonSchemaFixedFields.required, schema: SchemaOrJSONReferenceVisitor, @@ -127,7 +133,7 @@ const specification = { items: { $ref: '#/visitors/document/objects/Items', }, - collectionFormat: FallbackVisitor, + collectionFormat: { $ref: '#/visitors/value' }, default: jsonSchemaFixedFields.default, maximum: jsonSchemaFixedFields.maximum, exclusiveMaximum: jsonSchemaFixedFields.exclusiveMaximum, @@ -151,7 +157,7 @@ const specification = { items: { $ref: '#/visitors/document/objects/Items', }, - collectionFormat: FallbackVisitor, + collectionFormat: { $ref: '#/visitors/value' }, default: jsonSchemaFixedFields.default, maximum: jsonSchemaFixedFields.maximum, exclusiveMaximum: jsonSchemaFixedFields.exclusiveMaximum, @@ -176,7 +182,7 @@ const specification = { Response: { $visitor: ResponseVisitor, fixedFields: { - description: FallbackVisitor, + description: { $ref: '#/visitors/value' }, schema: SchemaOrJSONReferenceVisitor, headers: { $ref: '#/visitors/document/objects/Headers', @@ -201,7 +207,7 @@ const specification = { items: { $ref: '#/visitors/document/objects/Items', }, - collectionFormat: FallbackVisitor, + collectionFormat: { $ref: '#/visitors/value' }, default: jsonSchemaFixedFields.default, maximum: jsonSchemaFixedFields.maximum, exclusiveMaximum: jsonSchemaFixedFields.exclusiveMaximum, @@ -220,8 +226,8 @@ const specification = { Tag: { $visitor: TagVisitor, fixedFields: { - name: FallbackVisitor, - description: FallbackVisitor, + name: { $ref: '#/visitors/value' }, + description: { $ref: '#/visitors/value' }, externalDocs: { $ref: '#/visitors/document/objects/ExternalDocumentation', }, @@ -233,10 +239,6 @@ const specification = { $ref: Reference$RefVisitor, }, }, - JSONReference: JSONSchemaDraft4Specification.visitors.document.objects.JSONReference, - JSONSchema: { - $ref: '#/visitors/document/objects/Schema', - }, Schema: { $visitor: SchemaVisitor, fixedFields: { @@ -268,24 +270,24 @@ const specification = { properties: SchemaPropertiesVisitor, additionalProperties: SchemaOrJSONReferenceVisitor, // OpenAPI vocabulary - discriminator: FallbackVisitor, + discriminator: { $ref: '#/visitors/value' }, xml: { $ref: '#/visitors/document/objects/XML', }, externalDocs: { $ref: '#/visitors/document/objects/ExternalDocumentation', }, - example: FallbackVisitor, + example: { $ref: '#/visitors/value' }, }, }, XML: { $visitor: XmlVisitor, fixedFields: { - name: FallbackVisitor, - namespace: FallbackVisitor, - prefix: FallbackVisitor, - attribute: FallbackVisitor, - wrapped: FallbackVisitor, + name: { $ref: '#/visitors/value' }, + namespace: { $ref: '#/visitors/value' }, + prefix: { $ref: '#/visitors/value' }, + attribute: { $ref: '#/visitors/value' }, + wrapped: { $ref: '#/visitors/value' }, }, }, Definitions: { @@ -303,13 +305,13 @@ const specification = { SecurityScheme: { $visitor: SecuritySchemeVisitor, fixedFields: { - type: FallbackVisitor, - description: FallbackVisitor, - name: FallbackVisitor, - in: FallbackVisitor, - flow: FallbackVisitor, - authorizationUrl: FallbackVisitor, - token: FallbackVisitor, + type: { $ref: '#/visitors/value' }, + description: { $ref: '#/visitors/value' }, + name: { $ref: '#/visitors/value' }, + in: { $ref: '#/visitors/value' }, + flow: { $ref: '#/visitors/value' }, + authorizationUrl: { $ref: '#/visitors/value' }, + token: { $ref: '#/visitors/value' }, scopes: { $ref: '#/visitors/document/objects/Scopes', }, From 9ad49be86672170ab1cf5c148f01de84647599ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Fri, 20 Oct 2023 17:35:29 +0200 Subject: [PATCH 05/19] feat(ns-openapi-2): add support for PathItem Object (#3307) Refs #3097 --- packages/apidom-ns-openapi-2/README.md | 2 +- .../src/elements/PathItem.ts | 90 +++++++++++++++++++ .../src/elements/nces/PathItemParameters.ts | 13 +++ packages/apidom-ns-openapi-2/src/index.ts | 9 ++ packages/apidom-ns-openapi-2/src/namespace.ts | 2 + .../apidom-ns-openapi-2/src/predicates.ts | 11 +++ .../src/refractor/registration.ts | 9 ++ .../src/refractor/specification.ts | 31 +++++++ .../visitors/generics/AlternatingVisitor.ts | 9 +- .../open-api-2/path-item/$RefVisitor.ts | 17 ++++ .../open-api-2/path-item/ParametersVisitor.ts | 36 ++++++++ .../visitors/open-api-2/path-item/index.ts | 48 ++++++++++ .../src/traversal/visitor.ts | 1 + .../apidom-ns-openapi-2/test/predicates.ts | 58 ++++++++++++ .../PathItem/__snapshots__/index.ts.snap | 37 ++++++++ .../test/refractor/elements/PathItem/index.ts | 40 +++++++++ 16 files changed, 410 insertions(+), 3 deletions(-) create mode 100644 packages/apidom-ns-openapi-2/src/elements/PathItem.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/PathItemParameters.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/$RefVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/index.ts create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/__snapshots__/index.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/index.ts diff --git a/packages/apidom-ns-openapi-2/README.md b/packages/apidom-ns-openapi-2/README.md index 25708d4869..023188e9be 100644 --- a/packages/apidom-ns-openapi-2/README.md +++ b/packages/apidom-ns-openapi-2/README.md @@ -189,7 +189,7 @@ Only fully implemented specification objects should be checked here. - [x] [Contact Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-contact-object) - [x] [License Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-license-object) - [ ] [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-paths-object) -- [ ] [Path Item Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-path-item-object) +- [x] [Path Item Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-path-item-object) - [x] [Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-operation-object) - [x] [External Documentation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-external-documentation-object) - [x] [Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-parameter-object) diff --git a/packages/apidom-ns-openapi-2/src/elements/PathItem.ts b/packages/apidom-ns-openapi-2/src/elements/PathItem.ts new file mode 100644 index 0000000000..b865737907 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/PathItem.ts @@ -0,0 +1,90 @@ +import { + StringElement, + ObjectElement, + ArrayElement, + Attributes, + Meta, +} from '@swagger-api/apidom-core'; + +import OperationElement from './Operation'; + +class PathItem extends ObjectElement { + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.element = 'pathItem'; + } + + get $ref(): StringElement | undefined { + return this.get('$ref'); + } + + set $ref($ref: StringElement | undefined) { + this.set('$ref', $ref); + } + + get GET(): OperationElement { + return this.get('get'); + } + + set GET(operation: OperationElement | undefined) { + this.set('GET', operation); + } + + get PUT(): OperationElement { + return this.get('put'); + } + + set PUT(operation: OperationElement | undefined) { + this.set('PUT', operation); + } + + get POST(): OperationElement { + return this.get('post'); + } + + set POST(operation: OperationElement | undefined) { + this.set('POST', operation); + } + + get DELETE(): OperationElement { + return this.get('delete'); + } + + set DELETE(operation: OperationElement | undefined) { + this.set('DELETE', operation); + } + + get OPTIONS(): OperationElement { + return this.get('options'); + } + + set OPTIONS(operation: OperationElement | undefined) { + this.set('OPTIONS', operation); + } + + get HEAD(): OperationElement { + return this.get('head'); + } + + set HEAD(operation: OperationElement | undefined) { + this.set('HEAD', operation); + } + + get PATCH(): OperationElement { + return this.get('patch'); + } + + set PATCH(operation: OperationElement | undefined) { + this.set('PATCH', operation); + } + + get parameters(): ArrayElement { + return this.get('parameters'); + } + + set parameters(parameters: ArrayElement | undefined) { + this.set('parameters', parameters); + } +} + +export default PathItem; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/PathItemParameters.ts b/packages/apidom-ns-openapi-2/src/elements/nces/PathItemParameters.ts new file mode 100644 index 0000000000..c7cddea47c --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/PathItemParameters.ts @@ -0,0 +1,13 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class PathItemParameters extends ArrayElement { + static primaryClass = 'path-item-parameters'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(PathItemParameters.primaryClass); + this.classes.push('parameters'); + } +} + +export default PathItemParameters; diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts index 4d25b74ff3..2fbf570909 100644 --- a/packages/apidom-ns-openapi-2/src/index.ts +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -27,6 +27,7 @@ export { isInfoElement, isLicenseElement, isContactElement, + isPathItemElement, isOperationElement, isExternalDocumentationElement, isParameterElement, @@ -56,6 +57,7 @@ export { InfoElement, LicenseElement, ContactElement, + PathItemElement, OperationElement, ExternalDocumentationElement, ParameterElement, @@ -78,3 +80,10 @@ export { SecurityRequirementElement, } from './refractor/registration'; // NCE types +export { default as OperationConsumesElement } from './elements/nces/OperationConsumes'; +export { default as OperationParametersElement } from './elements/nces/OperationParameters'; +export { default as OperationProducesElement } from './elements/nces/OperationProduces'; +export { default as OperationSchemesElement } from './elements/nces/OperationSchemes'; +export { default as OperationSecurityElement } from './elements/nces/OperationSecurity'; +export { default as OperationTagsElement } from './elements/nces/OperationTags'; +export { default as PathItemParametersElement } from './elements/nces/PathItemParameters'; diff --git a/packages/apidom-ns-openapi-2/src/namespace.ts b/packages/apidom-ns-openapi-2/src/namespace.ts index 8c9a480b0f..71c773e85d 100644 --- a/packages/apidom-ns-openapi-2/src/namespace.ts +++ b/packages/apidom-ns-openapi-2/src/namespace.ts @@ -3,6 +3,7 @@ import { NamespacePluginOptions } from '@swagger-api/apidom-core'; import InfoElement from './elements/Info'; import LicenseElement from './elements/License'; import ContactElement from './elements/Contact'; +import PathItemElement from './elements/PathItem'; import OperationElement from './elements/Operation'; import ExternalDocumentation from './elements/ExternalDocumentation'; import ParameterElement from './elements/Parameter'; @@ -31,6 +32,7 @@ const openApi2 = { base.register('info', InfoElement); base.register('license', LicenseElement); base.register('contact', ContactElement); + base.register('pathItem', PathItemElement); base.register('operation', OperationElement); base.register('externalDocumentation', ExternalDocumentation); base.register('parameter', ParameterElement); diff --git a/packages/apidom-ns-openapi-2/src/predicates.ts b/packages/apidom-ns-openapi-2/src/predicates.ts index 66c234b141..60a97f6c78 100644 --- a/packages/apidom-ns-openapi-2/src/predicates.ts +++ b/packages/apidom-ns-openapi-2/src/predicates.ts @@ -3,6 +3,7 @@ import { createPredicate } from '@swagger-api/apidom-core'; import InfoElement from './elements/Info'; import LicenseElement from './elements/License'; import ContactElement from './elements/Contact'; +import PathItemElement from './elements/PathItem'; import OperationElement from './elements/Operation'; import ExternalDocumentationElement from './elements/ExternalDocumentation'; import ParameterElement from './elements/Parameter'; @@ -54,6 +55,16 @@ export const isContactElement = createPredicate( }, ); +export const isPathItemElement = createPredicate( + ({ hasBasicElementProps, isElementType, primitiveEq }) => { + return (element: unknown): element is PathItemElement => + element instanceof PathItemElement || + (hasBasicElementProps(element) && + isElementType('pathItem', element) && + primitiveEq('object', element)); + }, +); + export const isOperationElement = createPredicate( ({ hasBasicElementProps, isElementType, primitiveEq }) => { return (element: unknown): element is OperationElement => diff --git a/packages/apidom-ns-openapi-2/src/refractor/registration.ts b/packages/apidom-ns-openapi-2/src/refractor/registration.ts index 7cd4a6655e..b8e5325a5a 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/registration.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/registration.ts @@ -1,6 +1,7 @@ import InfoElement from '../elements/Info'; import LicenseElement from '../elements/License'; import ContactElement from '../elements/Contact'; +import PathItemElement from '../elements/PathItem'; import OperationElement from '../elements/Operation'; import ExternalDocumentationElement from '../elements/ExternalDocumentation'; import ParameterElement from '../elements/Parameter'; @@ -39,6 +40,13 @@ ContactElement.refract = createRefractor([ 'Contact', '$visitor', ]); +PathItemElement.refract = createRefractor([ + 'visitors', + 'document', + 'objects', + 'PathItem', + '$visitor', +]); OperationElement.refract = createRefractor([ 'visitors', 'document', @@ -148,6 +156,7 @@ export { InfoElement, LicenseElement, ContactElement, + PathItemElement, OperationElement, ExternalDocumentationElement, ParameterElement, diff --git a/packages/apidom-ns-openapi-2/src/refractor/specification.ts b/packages/apidom-ns-openapi-2/src/refractor/specification.ts index 780ce0ddd5..8e74c32f8f 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/specification.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/specification.ts @@ -5,6 +5,9 @@ import InfoVisitor from './visitors/open-api-2/info'; import InfoVersionVisitor from './visitors/open-api-2/info/VersionVisitor'; import LicenseVisitor from './visitors/open-api-2/license'; import ContactVisitor from './visitors/open-api-2/contact'; +import PathItemVisitor from './visitors/open-api-2/path-item'; +import PathItem$RefVisitor from './visitors/open-api-2/path-item/$RefVisitor'; +import PathItemParametersVisitor from './visitors/open-api-2/path-item/ParametersVisitor'; import OperationVisitor from './visitors/open-api-2/operation'; import OperationTagsVisitor from './visitors/open-api-2/operation/TagsVisitor'; import OperationConsumesVisitor from './visitors/open-api-2/operation/ConsumesVisitor'; @@ -92,6 +95,34 @@ const specification = { email: { $ref: '#/visitors/value' }, }, }, + PathItem: { + $visitor: PathItemVisitor, + fixedFields: { + $ref: PathItem$RefVisitor, + get: { + $ref: '#/visitors/document/objects/Operation', + }, + put: { + $ref: '#/visitors/document/objects/Operation', + }, + post: { + $ref: '#/visitors/document/objects/Operation', + }, + delete: { + $ref: '#/visitors/document/objects/Operation', + }, + options: { + $ref: '#/visitors/document/objects/Operation', + }, + head: { + $ref: '#/visitors/document/objects/Operation', + }, + patch: { + $ref: '#/visitors/document/objects/Operation', + }, + parameters: PathItemParametersVisitor, + }, + }, Operation: { $visitor: OperationVisitor, fixedFields: { diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/generics/AlternatingVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/generics/AlternatingVisitor.ts index 4bb711b3b1..e6032c7de8 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/visitors/generics/AlternatingVisitor.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/generics/AlternatingVisitor.ts @@ -12,8 +12,13 @@ const AlternatingVisitor = stampit(SpecificationVisitor, { methods: { enter(element: Element) { const functions = this.alternator.map( - ({ predicate, specPath }: { predicate: (element: any) => boolean; specPath: string[] }) => - ifElse(predicate, always(specPath), stubUndefined), + ({ + predicate, + specPath, + }: { + predicate: (element: unknown) => boolean; + specPath: string[]; + }) => ifElse(predicate, always(specPath), stubUndefined), ); const specPath = dispatch(functions)(element); diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/$RefVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/$RefVisitor.ts new file mode 100644 index 0000000000..b142b7a4ad --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/$RefVisitor.ts @@ -0,0 +1,17 @@ +import stampit from 'stampit'; +import { StringElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import FallbackVisitor from '../../FallbackVisitor'; + +const $RefVisitor = stampit(FallbackVisitor, { + methods: { + StringElement(stringElement: StringElement) { + this.element = cloneDeep(stringElement); + this.element.classes.push('reference-value'); + + return BREAK; + }, + }, +}); + +export default $RefVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.ts new file mode 100644 index 0000000000..d2a595263b --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.ts @@ -0,0 +1,36 @@ +import stampit from 'stampit'; +import { ArrayElement, Element, BREAK } from '@swagger-api/apidom-core'; + +import { isReferenceLikeElement } from '../../../predicates'; +import { isReferenceElement } from '../../../../predicates'; +import PathItemParametersElement from '../../../../elements/nces/PathItemParameters'; +import FallbackVisitor from '../../FallbackVisitor'; +import SpecificationVisitor from '../../SpecificationVisitor'; + +const ParametersVisitor = stampit(SpecificationVisitor, FallbackVisitor, { + init() { + this.element = new PathItemParametersElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + arrayElement.forEach((item: Element): void => { + const specPath = isReferenceLikeElement(item) + ? ['document', 'objects', 'Reference'] + : ['document', 'objects', 'Parameter']; + const element = this.toRefractedElement(specPath, item); + + if (isReferenceElement(element)) { + element.setMetaProperty('referenced-element', 'parameter'); + } + + this.element.push(element); + }); + + this.copyMetaAndAttributes(arrayElement, this.element); + + return BREAK; + }, + }, +}); + +export default ParametersVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/index.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/index.ts new file mode 100644 index 0000000000..90e86bcb35 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/path-item/index.ts @@ -0,0 +1,48 @@ +import stampit from 'stampit'; +import { always } from 'ramda'; +import { + StringElement, + ObjectElement, + isStringElement, + cloneDeep, + toValue, +} from '@swagger-api/apidom-core'; + +import PathItemElement from '../../../../elements/PathItem'; +import OperationElement from '../../../../elements/Operation'; +import { isOperationElement } from '../../../../predicates'; +import FixedFieldsVisitor from '../../generics/FixedFieldsVisitor'; +import FallbackVisitor from '../../FallbackVisitor'; + +const PathItemVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, { + props: { + specPath: always(['document', 'objects', 'PathItem']), + }, + init() { + this.element = new PathItemElement(); + }, + methods: { + ObjectElement(objectElement: ObjectElement) { + // @ts-ignore + const result = FixedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement); + + // decorate Operation elements with HTTP method + this.element + .filter(isOperationElement) + .forEach((operationElement: OperationElement, httpMethodElementCI: StringElement) => { + const httpMethodElementCS = cloneDeep(httpMethodElementCI); + httpMethodElementCS.content = toValue(httpMethodElementCS).toUpperCase(); + operationElement.setMetaProperty('http-method', httpMethodElementCS); + }); + + // mark this PathItemElement with reference metadata + if (isStringElement(this.element.$ref)) { + this.element.classes.push('reference-element'); + } + + return result; + }, + }, +}); + +export default PathItemVisitor; diff --git a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts index b963e13953..e1a07f01c4 100644 --- a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts +++ b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts @@ -22,6 +22,7 @@ export const keyMap = { InfoElement: ['content'], LicenseElement: ['content'], ContactElement: ['content'], + PathItemElement: ['content'], OperationElement: ['content'], ExternalDocumentationElement: ['content'], ParameterElement: ['content'], diff --git a/packages/apidom-ns-openapi-2/test/predicates.ts b/packages/apidom-ns-openapi-2/test/predicates.ts index d7729af347..7d5178ed5f 100644 --- a/packages/apidom-ns-openapi-2/test/predicates.ts +++ b/packages/apidom-ns-openapi-2/test/predicates.ts @@ -4,6 +4,7 @@ import { InfoElement, LicenseElement, ContactElement, + PathItemElement, OperationElement, ExternalDocumentationElement, ParameterElement, @@ -27,6 +28,7 @@ import { isInfoElement, isLicenseElement, isContactElement, + isPathItemElement, isOperationElement, isExternalDocumentationElement, isParameterElement, @@ -218,6 +220,62 @@ describe('predicates', function () { }); }); + context('isPathItemElement', function () { + context('given PathItemElement instance value', function () { + specify('should return true', function () { + const element = new PathItemElement(); + + assert.isTrue(isPathItemElement(element)); + }); + }); + + context('given subtype instance value', function () { + specify('should return true', function () { + class PathItemSubElement extends PathItemElement {} + + assert.isTrue(isPathItemElement(new PathItemSubElement())); + }); + }); + + context('given non PathItemSubElement instance value', function () { + specify('should return false', function () { + assert.isFalse(isPathItemElement(1)); + assert.isFalse(isPathItemElement(null)); + assert.isFalse(isPathItemElement(undefined)); + assert.isFalse(isPathItemElement({})); + assert.isFalse(isPathItemElement([])); + assert.isFalse(isPathItemElement('string')); + }); + }); + + specify('should support duck-typing', function () { + const pathItemElementDuck = { + _storedElement: 'pathItem', + _content: [], + primitive() { + return 'object'; + }, + get element() { + return this._storedElement; + }, + }; + + const pathItemElementSwan = { + _storedElement: undefined, + _content: undefined, + primitive() { + return 'swan'; + }, + get length() { + return 0; + }, + }; + + assert.isTrue(isPathItemElement(pathItemElementDuck)); + assert.isFalse(isPathItemElement(pathItemElementSwan)); + }); + }); + context('isOperationElement', function () { context("given OperationElement instance value with element 'get'", function () { specify('should return true', function () { diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/__snapshots__/index.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/__snapshots__/index.ts.snap new file mode 100644 index 0000000000..841ceccc29 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/__snapshots__/index.ts.snap @@ -0,0 +1,37 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`refractor elements PathItemElement should refract to semantic ApiDOM tree 1`] = ` +(PathItemElement + (MemberElement + (StringElement) + (StringElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (OperationElement)) + (MemberElement + (StringElement) + (ArrayElement + (ParameterElement) + (ReferenceElement + (MemberElement + (StringElement) + (StringElement)))))) +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/index.ts b/packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/index.ts new file mode 100644 index 0000000000..45a255b4bb --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/PathItem/index.ts @@ -0,0 +1,40 @@ +import { assert, expect } from 'chai'; +import { includesClasses, sexprs } from '@swagger-api/apidom-core'; + +import { PathItemElement } from '../../../../src'; + +describe('refractor', function () { + context('elements', function () { + context('PathItemElement', function () { + specify('should refract to semantic ApiDOM tree', function () { + const pathItemElement = PathItemElement.refract({ + $ref: 'https://example.com/PathItem1', + get: {}, + put: {}, + post: {}, + delete: {}, + options: {}, + head: {}, + patch: {}, + parameters: [{}, { $ref: '#/components/parameters/Parameter1' }], + }); + + expect(sexprs(pathItemElement)).toMatchSnapshot(); + }); + + specify('should support specification extensions', function () { + const pathItemElement = PathItemElement.refract({ + get: {}, + 'x-extension': 'extension', + }) as PathItemElement; + + assert.isFalse( + includesClasses(['specification-extension'], pathItemElement.getMember('get')), + ); + assert.isTrue( + includesClasses(['specification-extension'], pathItemElement.getMember('x-extension')), + ); + }); + }); + }); +}); From b68e363146d86a0f163520173096d52cbf1880df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 23:54:29 +0000 Subject: [PATCH 06/19] chore(deps-dev): bump eslint-plugin-import from 2.28.1 to 2.29.0 (#3311) --- package-lock.json | 49 +++++++++++++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6bbce52d55..aff0b533e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "eslint-config-airbnb-base": "=15.0.0", "eslint-config-airbnb-typescript": "=17.1.0", "eslint-config-prettier": "=9.0.0", - "eslint-plugin-import": "=2.28.1", + "eslint-plugin-import": "=2.29.0", "eslint-plugin-mocha": "=10.2.0", "eslint-plugin-prettier": "=5.0.1", "file-loader": "=6.2.0", @@ -12868,26 +12868,26 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -14523,7 +14523,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15126,6 +15125,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, "engines": { "node": ">= 0.4.0" } @@ -15204,6 +15204,17 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -16199,11 +16210,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" diff --git a/package.json b/package.json index a05c68f4e6..ee8fa5ccb5 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "eslint-config-airbnb-base": "=15.0.0", "eslint-config-airbnb-typescript": "=17.1.0", "eslint-config-prettier": "=9.0.0", - "eslint-plugin-import": "=2.28.1", + "eslint-plugin-import": "=2.29.0", "eslint-plugin-mocha": "=10.2.0", "eslint-plugin-prettier": "=5.0.1", "file-loader": "=6.2.0", From 080beef4b329a3c19501e59d4b30cc71cd3375e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:06:09 +0000 Subject: [PATCH 07/19] chore(deps-dev): bump @typescript-eslint/eslint-plugin (#3310) --- package-lock.json | 249 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 231 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index aff0b533e2..7e8cadf1d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "@types/mocha": "=10.0.2", "@types/node": "=20.8.5", "@types/sinon": "=10.0.19", - "@typescript-eslint/eslint-plugin": "=6.8.0", + "@typescript-eslint/eslint-plugin": "=6.9.0", "@typescript-eslint/parser": "=6.8.0", "babel-loader": "=9.1.3", "benchmark": "=2.1.4", @@ -7444,16 +7444,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -7478,6 +7478,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7731,13 +7778,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -7757,6 +7804,96 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/types": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", @@ -7831,17 +7968,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", "semver": "^7.5.4" }, "engines": { @@ -7855,6 +7992,80 @@ "eslint": "^7.0.0 || ^8.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", diff --git a/package.json b/package.json index ee8fa5ccb5..8f61417c00 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@types/mocha": "=10.0.2", "@types/node": "=20.8.5", "@types/sinon": "=10.0.19", - "@typescript-eslint/eslint-plugin": "=6.8.0", + "@typescript-eslint/eslint-plugin": "=6.9.0", "@typescript-eslint/parser": "=6.8.0", "babel-loader": "=9.1.3", "benchmark": "=2.1.4", From 470f7f1a645f761d1915c2b2d4bd97a13afdc9e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 09:47:16 +0200 Subject: [PATCH 08/19] chore(deps-dev): bump sinon from 16.1.3 to 17.0.0 (#3309) Bumps [sinon](https://github.com/sinonjs/sinon) from 16.1.3 to 17.0.0. - [Release notes](https://github.com/sinonjs/sinon/releases) - [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md) - [Commits](https://github.com/sinonjs/sinon/compare/v16.1.3...v17.0.0) --- updated-dependencies: - dependency-name: sinon dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 42 ++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e8cadf1d2..a1b6f3d097 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "rimraf": "=5.0.5", "rollup": "=4.1.4", "rollup-plugin-dts": "=6.1.0", - "sinon": "=16.1.3", + "sinon": "=17.0.0", "terser-webpack-plugin": "=5.3.9", "ts-node": "=10.9.1", "typescript": "=5.2.2", @@ -6177,9 +6177,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -22852,9 +22852,9 @@ "dev": true }, "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", + "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", "dev": true, "dependencies": { "@sinonjs/commons": "^2.0.0", @@ -22873,6 +22873,24 @@ "type-detect": "4.0.8" } }, + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/nise/node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -28525,16 +28543,16 @@ } }, "node_modules/sinon": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", - "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.0.tgz", + "integrity": "sha512-p4lJiYKBoOEVUxxVIC9H1MM2znG1/c8gud++I2BauJA5hsz7hHsst35eurNWXTusBsIq66FzOQbZ/uMdpvbPIQ==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/fake-timers": "^11.2.2", "@sinonjs/samsam": "^8.0.0", "diff": "^5.1.0", - "nise": "^5.1.4", + "nise": "^5.1.5", "supports-color": "^7.2.0" }, "funding": { diff --git a/package.json b/package.json index 8f61417c00..4e33229315 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "rimraf": "=5.0.5", "rollup": "=4.1.4", "rollup-plugin-dts": "=6.1.0", - "sinon": "=16.1.3", + "sinon": "=17.0.0", "terser-webpack-plugin": "=5.3.9", "ts-node": "=10.9.1", "typescript": "=5.2.2", From 5555667f3a0e7d503294db3803d689159430a8fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 09:47:35 +0200 Subject: [PATCH 09/19] chore(deps): bump actions/setup-node from 3 to 4 (#3308) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 10 +++++----- .github/workflows/nightly-build.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 20d2906f3f..0acf36c202 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: fetch-depth: 0 # necessary for linting commit messages ref: ${{ github.event.pull_request.head.sha }} # necessary to check out pull request HEAD commit instead of merge commit - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' @@ -40,7 +40,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' @@ -59,7 +59,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' @@ -77,7 +77,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' @@ -97,7 +97,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index c7be20308b..67ea63ce79 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91bf8cd975..c65098534a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: fetch-depth: 0 token: ${{ secrets.SWAGGER_BOT_GITHUB_TOKEN }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 registry-url: https://registry.npmjs.org From a3db4c2555e9b1ac95ee3b6836c8e7c6203cda61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Tue, 24 Oct 2023 10:19:31 +0200 Subject: [PATCH 10/19] feat(ns-openpai-2): add support for Paths Object (#3312) Refs #3097 --- packages/apidom-ns-openapi-2/README.md | 2 +- .../apidom-ns-openapi-2/src/elements/Paths.ts | 10 +++ packages/apidom-ns-openapi-2/src/index.ts | 6 +- packages/apidom-ns-openapi-2/src/namespace.ts | 6 +- .../apidom-ns-openapi-2/src/predicates.ts | 13 +++- .../src/refractor/registration.ts | 15 +++-- .../src/refractor/specification.ts | 16 +++-- .../visitors/open-api-2/paths/index.ts | 37 +++++++++++ .../src/traversal/visitor.ts | 3 +- .../apidom-ns-openapi-2/test/predicates.ts | 62 ++++++++++++++++++- .../Paths/__snapshots__/index.ts.snap | 11 ++++ .../test/refractor/elements/Paths/index.ts | 33 ++++++++++ 12 files changed, 193 insertions(+), 21 deletions(-) create mode 100644 packages/apidom-ns-openapi-2/src/elements/Paths.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/paths/index.ts create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/Paths/__snapshots__/index.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/Paths/index.ts diff --git a/packages/apidom-ns-openapi-2/README.md b/packages/apidom-ns-openapi-2/README.md index 023188e9be..ef1d5bc6d4 100644 --- a/packages/apidom-ns-openapi-2/README.md +++ b/packages/apidom-ns-openapi-2/README.md @@ -188,7 +188,7 @@ Only fully implemented specification objects should be checked here. - [x] [Info Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-info-object) - [x] [Contact Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-contact-object) - [x] [License Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-license-object) -- [ ] [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-paths-object) +- [x] [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-paths-object) - [x] [Path Item Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-path-item-object) - [x] [Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-operation-object) - [x] [External Documentation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-external-documentation-object) diff --git a/packages/apidom-ns-openapi-2/src/elements/Paths.ts b/packages/apidom-ns-openapi-2/src/elements/Paths.ts new file mode 100644 index 0000000000..f3bbf33afa --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/Paths.ts @@ -0,0 +1,10 @@ +import { ObjectElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class Paths extends ObjectElement { + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.element = 'paths'; + } +} + +export default Paths; diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts index 2fbf570909..0f208ac2de 100644 --- a/packages/apidom-ns-openapi-2/src/index.ts +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -25,8 +25,9 @@ export { default as specificationObj } from './refractor/specification'; export { isInfoElement, - isLicenseElement, isContactElement, + isLicenseElement, + isPathsElement, isPathItemElement, isOperationElement, isExternalDocumentationElement, @@ -55,8 +56,9 @@ export { keyMap, getNodeType } from './traversal/visitor'; // OpenAPI 2.0 elements export { InfoElement, - LicenseElement, ContactElement, + LicenseElement, + PathsElement, PathItemElement, OperationElement, ExternalDocumentationElement, diff --git a/packages/apidom-ns-openapi-2/src/namespace.ts b/packages/apidom-ns-openapi-2/src/namespace.ts index 71c773e85d..eff8e4c037 100644 --- a/packages/apidom-ns-openapi-2/src/namespace.ts +++ b/packages/apidom-ns-openapi-2/src/namespace.ts @@ -1,8 +1,9 @@ import { NamespacePluginOptions } from '@swagger-api/apidom-core'; import InfoElement from './elements/Info'; -import LicenseElement from './elements/License'; import ContactElement from './elements/Contact'; +import LicenseElement from './elements/License'; +import PathsElement from './elements/Paths'; import PathItemElement from './elements/PathItem'; import OperationElement from './elements/Operation'; import ExternalDocumentation from './elements/ExternalDocumentation'; @@ -30,8 +31,9 @@ const openApi2 = { const { base } = options; base.register('info', InfoElement); - base.register('license', LicenseElement); base.register('contact', ContactElement); + base.register('license', LicenseElement); + base.register('paths', PathsElement); base.register('pathItem', PathItemElement); base.register('operation', OperationElement); base.register('externalDocumentation', ExternalDocumentation); diff --git a/packages/apidom-ns-openapi-2/src/predicates.ts b/packages/apidom-ns-openapi-2/src/predicates.ts index 60a97f6c78..880a5cee14 100644 --- a/packages/apidom-ns-openapi-2/src/predicates.ts +++ b/packages/apidom-ns-openapi-2/src/predicates.ts @@ -1,8 +1,9 @@ import { createPredicate } from '@swagger-api/apidom-core'; import InfoElement from './elements/Info'; -import LicenseElement from './elements/License'; import ContactElement from './elements/Contact'; +import LicenseElement from './elements/License'; +import PathsElement from './elements/Paths'; import PathItemElement from './elements/PathItem'; import OperationElement from './elements/Operation'; import ExternalDocumentationElement from './elements/ExternalDocumentation'; @@ -55,6 +56,16 @@ export const isContactElement = createPredicate( }, ); +export const isPathsElement = createPredicate( + ({ hasBasicElementProps, isElementType, primitiveEq }) => { + return (element: unknown): element is PathsElement => + element instanceof PathsElement || + (hasBasicElementProps(element) && + isElementType('paths', element) && + primitiveEq('object', element)); + }, +); + export const isPathItemElement = createPredicate( ({ hasBasicElementProps, isElementType, primitiveEq }) => { return (element: unknown): element is PathItemElement => diff --git a/packages/apidom-ns-openapi-2/src/refractor/registration.ts b/packages/apidom-ns-openapi-2/src/refractor/registration.ts index b8e5325a5a..86bd35ffa2 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/registration.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/registration.ts @@ -1,6 +1,7 @@ import InfoElement from '../elements/Info'; -import LicenseElement from '../elements/License'; import ContactElement from '../elements/Contact'; +import LicenseElement from '../elements/License'; +import PathsElement from '../elements/Paths'; import PathItemElement from '../elements/PathItem'; import OperationElement from '../elements/Operation'; import ExternalDocumentationElement from '../elements/ExternalDocumentation'; @@ -26,20 +27,21 @@ import { createRefractor } from './index'; // register refractors specific to element types InfoElement.refract = createRefractor(['visitors', 'document', 'objects', 'Info', '$visitor']); -LicenseElement.refract = createRefractor([ +ContactElement.refract = createRefractor([ 'visitors', 'document', 'objects', - 'License', + 'Contact', '$visitor', ]); -ContactElement.refract = createRefractor([ +LicenseElement.refract = createRefractor([ 'visitors', 'document', 'objects', - 'Contact', + 'License', '$visitor', ]); +PathsElement.refract = createRefractor(['visitors', 'document', 'objects', 'Paths', '$visitor']); PathItemElement.refract = createRefractor([ 'visitors', 'document', @@ -154,8 +156,9 @@ SecurityRequirementElement.refract = createRefractor([ export { InfoElement, - LicenseElement, ContactElement, + LicenseElement, + PathsElement, PathItemElement, OperationElement, ExternalDocumentationElement, diff --git a/packages/apidom-ns-openapi-2/src/refractor/specification.ts b/packages/apidom-ns-openapi-2/src/refractor/specification.ts index 8e74c32f8f..61f9e25783 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/specification.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/specification.ts @@ -3,8 +3,9 @@ import { specificationObj as JSONSchemaDraft4Specification } from '@swagger-api/ import FallbackVisitor from './visitors/FallbackVisitor'; import InfoVisitor from './visitors/open-api-2/info'; import InfoVersionVisitor from './visitors/open-api-2/info/VersionVisitor'; -import LicenseVisitor from './visitors/open-api-2/license'; import ContactVisitor from './visitors/open-api-2/contact'; +import LicenseVisitor from './visitors/open-api-2/license'; +import PathsVisitor from './visitors/open-api-2/paths'; import PathItemVisitor from './visitors/open-api-2/path-item'; import PathItem$RefVisitor from './visitors/open-api-2/path-item/$RefVisitor'; import PathItemParametersVisitor from './visitors/open-api-2/path-item/ParametersVisitor'; @@ -80,21 +81,24 @@ const specification = { version: InfoVersionVisitor, }, }, - License: { - $visitor: LicenseVisitor, + Contact: { + $visitor: ContactVisitor, fixedFields: { name: { $ref: '#/visitors/value' }, url: { $ref: '#/visitors/value' }, + email: { $ref: '#/visitors/value' }, }, }, - Contact: { - $visitor: ContactVisitor, + License: { + $visitor: LicenseVisitor, fixedFields: { name: { $ref: '#/visitors/value' }, url: { $ref: '#/visitors/value' }, - email: { $ref: '#/visitors/value' }, }, }, + Paths: { + $visitor: PathsVisitor, + }, PathItem: { $visitor: PathItemVisitor, fixedFields: { diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/paths/index.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/paths/index.ts new file mode 100644 index 0000000000..269ab14cfb --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/paths/index.ts @@ -0,0 +1,37 @@ +import stampit from 'stampit'; +import { test, always } from 'ramda'; +import { ObjectElement, StringElement, cloneDeep } from '@swagger-api/apidom-core'; + +import PathsElement from '../../../../elements/Paths'; +import PathItemElement from '../../../../elements/PathItem'; +import PatternedFieldsVisitor from '../../generics/PatternedFieldsVisitor'; +import FallbackVisitor from '../../FallbackVisitor'; +import { isPathItemElement } from '../../../../predicates'; + +const PathsVisitor = stampit(PatternedFieldsVisitor, FallbackVisitor, { + props: { + fieldPatternPredicate: test(/^\/(?.*)$/), + specPath: always(['document', 'objects', 'PathItem']), + canSupportSpecificationExtensions: true, + }, + init() { + this.element = new PathsElement(); + }, + methods: { + ObjectElement(objectElement: ObjectElement) { + // @ts-ignore + const result = PatternedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement); + + // decorate every PathItemElement with path metadata + this.element + .filter(isPathItemElement) + .forEach((pathItemElement: PathItemElement, key: StringElement) => { + pathItemElement.setMetaProperty('path', cloneDeep(key)); + }); + + return result; + }, + }, +}); + +export default PathsVisitor; diff --git a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts index e1a07f01c4..ca34852f81 100644 --- a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts +++ b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts @@ -20,8 +20,9 @@ export const getNodeType = (element: T): string | undefined = export const keyMap = { InfoElement: ['content'], - LicenseElement: ['content'], ContactElement: ['content'], + LicenseElement: ['content'], + PathsElement: ['content'], PathItemElement: ['content'], OperationElement: ['content'], ExternalDocumentationElement: ['content'], diff --git a/packages/apidom-ns-openapi-2/test/predicates.ts b/packages/apidom-ns-openapi-2/test/predicates.ts index 7d5178ed5f..c2a3a0ac32 100644 --- a/packages/apidom-ns-openapi-2/test/predicates.ts +++ b/packages/apidom-ns-openapi-2/test/predicates.ts @@ -2,8 +2,9 @@ import { assert } from 'chai'; import { InfoElement, - LicenseElement, ContactElement, + LicenseElement, + PathsElement, PathItemElement, OperationElement, ExternalDocumentationElement, @@ -26,8 +27,9 @@ import { ScopesElement, SecurityRequirementElement, isInfoElement, - isLicenseElement, isContactElement, + isLicenseElement, + isPathsElement, isPathItemElement, isOperationElement, isExternalDocumentationElement, @@ -220,6 +222,62 @@ describe('predicates', function () { }); }); + context('isPathsElement', function () { + context("given PathsElement instance value with element 'paths'", function () { + specify('should return true', function () { + const element = new PathsElement(); + + assert.isTrue(isPathsElement(element)); + }); + }); + + context('given subtype instance value', function () { + specify('should return true', function () { + class PathsSubElement extends PathsElement {} + + assert.isTrue(isPathsElement(new PathsSubElement())); + }); + }); + + context('given non PathsSubElement instance value', function () { + specify('should return false', function () { + assert.isFalse(isPathsElement(1)); + assert.isFalse(isPathsElement(null)); + assert.isFalse(isPathsElement(undefined)); + assert.isFalse(isPathsElement({})); + assert.isFalse(isPathsElement([])); + assert.isFalse(isPathsElement('string')); + }); + }); + + specify('should support duck-typing', function () { + const pathsElementDuck = { + _storedElement: 'paths', + _content: [], + primitive() { + return 'object'; + }, + get element() { + return this._storedElement; + }, + }; + + const pathsElementSwan = { + _storedElement: undefined, + _content: undefined, + primitive() { + return 'swan'; + }, + get length() { + return 0; + }, + }; + + assert.isTrue(isPathsElement(pathsElementDuck)); + assert.isFalse(isPathsElement(pathsElementSwan)); + }); + }); + context('isPathItemElement', function () { context('given PathItemElement instance value', function () { specify('should return true', function () { diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/Paths/__snapshots__/index.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/elements/Paths/__snapshots__/index.ts.snap new file mode 100644 index 0000000000..b43f9bd3c0 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/Paths/__snapshots__/index.ts.snap @@ -0,0 +1,11 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`refractor elements PathsElement should refract to semantic ApiDOM tree 1`] = ` +(PathsElement + (MemberElement + (StringElement) + (PathItemElement)) + (MemberElement + (StringElement) + (PathItemElement))) +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/Paths/index.ts b/packages/apidom-ns-openapi-2/test/refractor/elements/Paths/index.ts new file mode 100644 index 0000000000..7aac115808 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/Paths/index.ts @@ -0,0 +1,33 @@ +import { assert, expect } from 'chai'; +import { includesClasses, sexprs } from '@swagger-api/apidom-core'; + +import { PathsElement } from '../../../../src'; + +describe('refractor', function () { + context('elements', function () { + context('PathsElement', function () { + specify('should refract to semantic ApiDOM tree', function () { + const pathsElement = PathsElement.refract({ + '/path1': {}, + '/path2': {}, + }); + + expect(sexprs(pathsElement)).toMatchSnapshot(); + }); + + specify('should support specification extensions', function () { + const pathsElement = PathsElement.refract({ + '/path1': {}, + 'x-extension': 'extension', + }) as PathsElement; + + assert.isFalse( + includesClasses(['specification-extension'], pathsElement.getMember('/path1')), + ); + assert.isTrue( + includesClasses(['specification-extension'], pathsElement.getMember('x-extension')), + ); + }); + }); + }); +}); From 81a036161f133eed144897de4119d31d20a089a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Tue, 24 Oct 2023 11:20:14 +0200 Subject: [PATCH 11/19] feat(ns-openapi-2): add support for Swagger Object (#3313) Refs #3097 --- packages/apidom-ns-openapi-2/README.md | 2 +- .../src/elements/Swagger.ts | 146 ++++++++++++++++++ .../src/elements/SwaggerVersion.ts | 12 ++ .../src/elements/nces/SwaggerConsumes.ts | 12 ++ .../src/elements/nces/SwaggerProduces.ts | 12 ++ .../src/elements/nces/SwaggerSchemes.ts | 12 ++ .../src/elements/nces/SwaggerSecurity.ts | 13 ++ .../src/elements/nces/SwaggerTags.ts | 12 ++ packages/apidom-ns-openapi-2/src/index.ts | 9 ++ packages/apidom-ns-openapi-2/src/namespace.ts | 4 + .../apidom-ns-openapi-2/src/predicates.ts | 22 +++ .../src/refractor/registration.ts | 18 +++ .../src/refractor/specification.ts | 41 +++++ .../visitors/open-api-2/ConsumesVisitor.ts | 20 +++ .../visitors/open-api-2/ProducesVisitor.ts | 20 +++ .../visitors/open-api-2/SchemesVisitor.ts | 20 +++ .../visitors/open-api-2/SecurityVisitor.ts | 26 ++++ .../visitors/open-api-2/SwaggerVisitor.ts | 21 +++ .../visitors/open-api-2/TagsVisitor.ts | 26 ++++ .../refractor/visitors/open-api-2/index.ts | 18 +++ .../open-api-2/operation/SecurityVisitor.ts | 4 +- .../src/traversal/visitor.ts | 1 + .../apidom-ns-openapi-2/test/predicates.ts | 116 ++++++++++++++ .../Swagger/__snapshots__/index.ts.snap | 70 +++++++++ .../test/refractor/elements/Swagger/index.ts | 56 +++++++ 25 files changed, 710 insertions(+), 3 deletions(-) create mode 100644 packages/apidom-ns-openapi-2/src/elements/Swagger.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/SwaggerVersion.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/SwaggerConsumes.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/SwaggerProduces.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSchemes.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSecurity.ts create mode 100644 packages/apidom-ns-openapi-2/src/elements/nces/SwaggerTags.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ConsumesVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ProducesVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SchemesVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SecurityVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SwaggerVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/TagsVisitor.ts create mode 100644 packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/index.ts create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/__snapshots__/index.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/index.ts diff --git a/packages/apidom-ns-openapi-2/README.md b/packages/apidom-ns-openapi-2/README.md index ef1d5bc6d4..05bc29a120 100644 --- a/packages/apidom-ns-openapi-2/README.md +++ b/packages/apidom-ns-openapi-2/README.md @@ -184,7 +184,7 @@ const swaggerElement = SwaggerElement.refract(apiDOM.result, { Only fully implemented specification objects should be checked here. -- [ ] [Swagger Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-swagger-object) +- [x] [Swagger Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-swagger-object) - [x] [Info Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-info-object) - [x] [Contact Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-contact-object) - [x] [License Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-license-object) diff --git a/packages/apidom-ns-openapi-2/src/elements/Swagger.ts b/packages/apidom-ns-openapi-2/src/elements/Swagger.ts new file mode 100644 index 0000000000..04b46b2255 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/Swagger.ts @@ -0,0 +1,146 @@ +import { + ObjectElement, + ArrayElement, + StringElement, + Attributes, + Meta, +} from '@swagger-api/apidom-core'; + +import SwaggerVersionElement from './SwaggerVersion'; +import InfoElement from './Info'; +import PathsElement from './Paths'; +import DefinitionsElement from './Definitions'; +import ParametersDefinitionsElement from './ParametersDefinitions'; +import ResponsesDefinitionsElement from './ResponsesDefinitions'; +import SecurityDefinitionsElement from './SecurityDefinitions'; +import ExternalDocumentationElement from './ExternalDocumentation'; + +class Swagger extends ObjectElement { + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.element = 'swagger'; + this.classes.push('api'); + } + + get swagger(): SwaggerVersionElement | undefined { + return this.get('swagger'); + } + + set swagger(swagger: SwaggerVersionElement | undefined) { + this.set('swagger', swagger); + } + + get info(): InfoElement | undefined { + return this.get('info'); + } + + set info(info: InfoElement | undefined) { + this.set('info', info); + } + + get host(): StringElement | undefined { + return this.get('host'); + } + + set host(host: StringElement | undefined) { + this.set('host', host); + } + + get basePath(): StringElement | undefined { + return this.get('basePath'); + } + + set basePath(basePath: StringElement | undefined) { + this.set('basePath', basePath); + } + + get schemes(): ArrayElement | undefined { + return this.get('schemes'); + } + + set schemes(schemes: ArrayElement | undefined) { + this.set('schemes', schemes); + } + + get consumes(): ArrayElement | undefined { + return this.get('consumes'); + } + + set consumes(consumes: ArrayElement | undefined) { + this.set('consumes', consumes); + } + + get produces(): ArrayElement | undefined { + return this.get('produces'); + } + + set produces(produces: ArrayElement | undefined) { + this.set('produces', produces); + } + + get paths(): PathsElement | undefined { + return this.get('paths'); + } + + set paths(paths: PathsElement | undefined) { + this.set('paths', paths); + } + + get definitions(): DefinitionsElement | undefined { + return this.get('definitions'); + } + + set definitions(definitions: DefinitionsElement | undefined) { + this.set('definitions', definitions); + } + + get parameters(): ParametersDefinitionsElement | undefined { + return this.get('parameters'); + } + + set parameters(parameters: ParametersDefinitionsElement | undefined) { + this.set('parameters', parameters); + } + + get responses(): ResponsesDefinitionsElement | undefined { + return this.get('responses'); + } + + set responses(responses: ResponsesDefinitionsElement | undefined) { + this.set('responses', responses); + } + + get securityDefinitions(): SecurityDefinitionsElement | undefined { + return this.get('securityDefinitions'); + } + + set securityDefinitions(securityDefinitions: SecurityDefinitionsElement | undefined) { + this.set('securityDefinitions', securityDefinitions); + } + + get security(): ArrayElement | undefined { + return this.get('security'); + } + + set security(security: ArrayElement | undefined) { + this.set('security', security); + } + + get tags(): ArrayElement | undefined { + return this.get('tags'); + } + + set tags(tags: ArrayElement | undefined) { + this.set('tags', tags); + } + + get externalDocs(): ExternalDocumentationElement | undefined { + return this.get('externalDocs'); + } + + set externalDocs(externalDocs: ExternalDocumentationElement | undefined) { + this.set('externalDocs', externalDocs); + } +} + +export default Swagger; diff --git a/packages/apidom-ns-openapi-2/src/elements/SwaggerVersion.ts b/packages/apidom-ns-openapi-2/src/elements/SwaggerVersion.ts new file mode 100644 index 0000000000..0c4fc2a27c --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/SwaggerVersion.ts @@ -0,0 +1,12 @@ +import { StringElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class SwaggerVersion extends StringElement { + constructor(content?: string, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.element = 'swaggerVersion'; + this.classes.push('spec-version'); + this.classes.push('version'); + } +} + +export default SwaggerVersion; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerConsumes.ts b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerConsumes.ts new file mode 100644 index 0000000000..8e21364d39 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerConsumes.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class SwaggerConsumes extends ArrayElement { + static primaryClass = 'swagger-consumes'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(SwaggerConsumes.primaryClass); + } +} + +export default SwaggerConsumes; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerProduces.ts b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerProduces.ts new file mode 100644 index 0000000000..9ca78d72c7 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerProduces.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class SwaggerProduces extends ArrayElement { + static primaryClass = 'swagger-produces'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(SwaggerProduces.primaryClass); + } +} + +export default SwaggerProduces; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSchemes.ts b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSchemes.ts new file mode 100644 index 0000000000..29086c6b3b --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSchemes.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class SwaggerSchemes extends ArrayElement { + static primaryClass = 'swagger-schemes'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(SwaggerSchemes.primaryClass); + } +} + +export default SwaggerSchemes; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSecurity.ts b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSecurity.ts new file mode 100644 index 0000000000..bb1695fcaa --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerSecurity.ts @@ -0,0 +1,13 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class SwaggerSecurity extends ArrayElement { + static primaryClass = 'swagger-security'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(SwaggerSecurity.primaryClass); + this.classes.push('security'); + } +} + +export default SwaggerSecurity; diff --git a/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerTags.ts b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerTags.ts new file mode 100644 index 0000000000..7bdc0871db --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/elements/nces/SwaggerTags.ts @@ -0,0 +1,12 @@ +import { ArrayElement, Attributes, Meta } from '@swagger-api/apidom-core'; + +class SwaggerTags extends ArrayElement { + static primaryClass = 'swagger-tags'; + + constructor(content?: Array, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(SwaggerTags.primaryClass); + } +} + +export default SwaggerTags; diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts index 0f208ac2de..28b6f23cb9 100644 --- a/packages/apidom-ns-openapi-2/src/index.ts +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -24,6 +24,8 @@ export { default as refract, createRefractor } from './refractor'; export { default as specificationObj } from './refractor/specification'; export { + isSwaggerElement, + isSwaggerVersionElement, isInfoElement, isContactElement, isLicenseElement, @@ -55,6 +57,8 @@ export { keyMap, getNodeType } from './traversal/visitor'; // OpenAPI 2.0 elements export { + SwaggerElement, + SwaggerVersionElement, InfoElement, ContactElement, LicenseElement, @@ -89,3 +93,8 @@ export { default as OperationSchemesElement } from './elements/nces/OperationSch export { default as OperationSecurityElement } from './elements/nces/OperationSecurity'; export { default as OperationTagsElement } from './elements/nces/OperationTags'; export { default as PathItemParametersElement } from './elements/nces/PathItemParameters'; +export { default as SwaggerSchemesElement } from './elements/nces/SwaggerSchemes'; +export { default as SwaggerConsumesElement } from './elements/nces/SwaggerConsumes'; +export { default as SwaggerProducesElement } from './elements/nces/SwaggerProduces'; +export { default as SwaggerSecurityElement } from './elements/nces/SwaggerSecurity'; +export { default as SwaggerTagsElement } from './elements/nces/SwaggerTags'; diff --git a/packages/apidom-ns-openapi-2/src/namespace.ts b/packages/apidom-ns-openapi-2/src/namespace.ts index eff8e4c037..3eb1aaae8f 100644 --- a/packages/apidom-ns-openapi-2/src/namespace.ts +++ b/packages/apidom-ns-openapi-2/src/namespace.ts @@ -1,5 +1,7 @@ import { NamespacePluginOptions } from '@swagger-api/apidom-core'; +import SwaggerElement from './elements/Swagger'; +import SwaggerVersionElement from './elements/SwaggerVersion'; import InfoElement from './elements/Info'; import ContactElement from './elements/Contact'; import LicenseElement from './elements/License'; @@ -30,6 +32,8 @@ const openApi2 = { namespace: (options: NamespacePluginOptions) => { const { base } = options; + base.register('swagger', SwaggerElement); + base.register('swaggerVersion', SwaggerVersionElement); base.register('info', InfoElement); base.register('contact', ContactElement); base.register('license', LicenseElement); diff --git a/packages/apidom-ns-openapi-2/src/predicates.ts b/packages/apidom-ns-openapi-2/src/predicates.ts index 880a5cee14..f2564227ef 100644 --- a/packages/apidom-ns-openapi-2/src/predicates.ts +++ b/packages/apidom-ns-openapi-2/src/predicates.ts @@ -1,5 +1,7 @@ import { createPredicate } from '@swagger-api/apidom-core'; +import SwaggerElement from './elements/Swagger'; +import SwaggerVersionElement from './elements/SwaggerVersion'; import InfoElement from './elements/Info'; import ContactElement from './elements/Contact'; import LicenseElement from './elements/License'; @@ -26,6 +28,26 @@ import SecuritySchemeElement from './elements/SecurityScheme'; import SecurityRequirementElement from './elements/SecurityRequirement'; import ScopesElement from './elements/Scopes'; +export const isSwaggerElement = createPredicate( + ({ hasBasicElementProps, isElementType, primitiveEq }) => { + return (element: unknown): element is SwaggerElement => + element instanceof SwaggerElement || + (hasBasicElementProps(element) && + isElementType('swagger', element) && + primitiveEq('object', element)); + }, +); + +export const isSwaggerVersionElement = createPredicate( + ({ hasBasicElementProps, isElementType, primitiveEq }) => { + return (element: unknown): element is SwaggerVersionElement => + element instanceof SwaggerVersionElement || + (hasBasicElementProps(element) && + isElementType('swaggerVersion', element) && + primitiveEq('string', element)); + }, +); + export const isInfoElement = createPredicate( ({ hasBasicElementProps, isElementType, primitiveEq }) => { return (element: unknown): element is InfoElement => diff --git a/packages/apidom-ns-openapi-2/src/refractor/registration.ts b/packages/apidom-ns-openapi-2/src/refractor/registration.ts index 86bd35ffa2..cb5ccaf6e6 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/registration.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/registration.ts @@ -1,3 +1,5 @@ +import SwaggerElement from '../elements/Swagger'; +import SwaggerVersionElement from '../elements/SwaggerVersion'; import InfoElement from '../elements/Info'; import ContactElement from '../elements/Contact'; import LicenseElement from '../elements/License'; @@ -26,6 +28,20 @@ import SecurityRequirementElement from '../elements/SecurityRequirement'; import { createRefractor } from './index'; // register refractors specific to element types +SwaggerElement.refract = createRefractor([ + 'visitors', + 'document', + 'objects', + 'Swagger', + '$visitor', +]); +SwaggerVersionElement.refract = createRefractor([ + 'visitors', + 'document', + 'objects', + 'SwaggerVersion', + '$visitor', +]); InfoElement.refract = createRefractor(['visitors', 'document', 'objects', 'Info', '$visitor']); ContactElement.refract = createRefractor([ 'visitors', @@ -155,6 +171,8 @@ SecurityRequirementElement.refract = createRefractor([ ]); export { + SwaggerElement, + SwaggerVersionElement, InfoElement, ContactElement, LicenseElement, diff --git a/packages/apidom-ns-openapi-2/src/refractor/specification.ts b/packages/apidom-ns-openapi-2/src/refractor/specification.ts index 61f9e25783..b3c3267b24 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/specification.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/specification.ts @@ -1,6 +1,13 @@ import { specificationObj as JSONSchemaDraft4Specification } from '@swagger-api/apidom-ns-json-schema-draft-4'; import FallbackVisitor from './visitors/FallbackVisitor'; +import SwaggerVisitor from './visitors/open-api-2'; +import SwaggerSwaggerVisitor from './visitors/open-api-2/SwaggerVisitor'; +import SwaggerSchemesVisitor from './visitors/open-api-2/SchemesVisitor'; +import SwaggerConsumesVisitor from './visitors/open-api-2/ConsumesVisitor'; +import SwaggerProducesVisitor from './visitors/open-api-2/ProducesVisitor'; +import SwaggerSecurityVisitor from './visitors/open-api-2/SecurityVisitor'; +import SwaggerTagsVisitor from './visitors/open-api-2/TagsVisitor'; import InfoVisitor from './visitors/open-api-2/info'; import InfoVersionVisitor from './visitors/open-api-2/info/VersionVisitor'; import ContactVisitor from './visitors/open-api-2/contact'; @@ -66,6 +73,40 @@ const specification = { $ref: '#/visitors/document/objects/Schema', }, // OpenAPI 2 specific visitors + Swagger: { + $visitor: SwaggerVisitor, + fixedFields: { + swagger: SwaggerSwaggerVisitor, + info: { + $ref: '#/visitors/document/objects/Info', + }, + host: { $ref: '#/visitors/value' }, + basePath: { $ref: '#/visitors/value' }, + schemes: SwaggerSchemesVisitor, + consumes: SwaggerConsumesVisitor, + produces: SwaggerProducesVisitor, + paths: { + $ref: '#/visitors/document/objects/Paths', + }, + definitions: { + $ref: '#/visitors/document/objects/Definitions', + }, + parameters: { + $ref: '#/visitors/document/objects/ParametersDefinitions', + }, + responses: { + $ref: '#/visitors/document/objects/ResponsesDefinitions', + }, + securityDefinitions: { + $ref: '#/visitors/document/objects/SecurityDefinitions', + }, + security: SwaggerSecurityVisitor, + tags: SwaggerTagsVisitor, + externalDocs: { + $ref: '#/visitors/document/objects/ExternalDocumentation', + }, + }, + }, Info: { $visitor: InfoVisitor, fixedFields: { diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ConsumesVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ConsumesVisitor.ts new file mode 100644 index 0000000000..f6c15e0f9d --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ConsumesVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import SwaggerConsumesElement from '../../../elements/nces/SwaggerConsumes'; +import FallbackVisitor from '../FallbackVisitor'; + +const ConsumesVisitor = stampit(FallbackVisitor, { + init() { + this.element = new SwaggerConsumesElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default ConsumesVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ProducesVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ProducesVisitor.ts new file mode 100644 index 0000000000..5774cce401 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/ProducesVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import SwaggerProducesElement from '../../../elements/nces/SwaggerProduces'; +import FallbackVisitor from '../FallbackVisitor'; + +const ProducesVisitor = stampit(FallbackVisitor, { + init() { + this.element = new SwaggerProducesElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default ProducesVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SchemesVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SchemesVisitor.ts new file mode 100644 index 0000000000..5a4ac64b48 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SchemesVisitor.ts @@ -0,0 +1,20 @@ +import stampit from 'stampit'; +import { ArrayElement, BREAK, cloneDeep } from '@swagger-api/apidom-core'; + +import SwaggerSchemesElement from '../../../elements/nces/SwaggerSchemes'; +import FallbackVisitor from '../FallbackVisitor'; + +const SchemesVisitor = stampit(FallbackVisitor, { + init() { + this.element = new SwaggerSchemesElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + this.element = this.element.concat(cloneDeep(arrayElement)); + + return BREAK; + }, + }, +}); + +export default SchemesVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SecurityVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SecurityVisitor.ts new file mode 100644 index 0000000000..71d848683b --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SecurityVisitor.ts @@ -0,0 +1,26 @@ +import stampit from 'stampit'; +import { ArrayElement, Element, BREAK } from '@swagger-api/apidom-core'; + +import SwaggerSecurityElement from '../../../elements/nces/SwaggerSecurity'; +import FallbackVisitor from '../FallbackVisitor'; +import SpecificationVisitor from '../SpecificationVisitor'; + +const SecurityVisitor = stampit(SpecificationVisitor, FallbackVisitor, { + init() { + this.element = new SwaggerSecurityElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + arrayElement.forEach((item: Element): void => { + const specPath = ['document', 'objects', 'SecurityRequirement']; + const element = this.toRefractedElement(specPath, item); + this.element.push(element); + }); + this.copyMetaAndAttributes(arrayElement, this.element); + + return BREAK; + }, + }, +}); + +export default SecurityVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SwaggerVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SwaggerVisitor.ts new file mode 100644 index 0000000000..4c720e49cc --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/SwaggerVisitor.ts @@ -0,0 +1,21 @@ +import stampit from 'stampit'; +import { StringElement, BREAK, toValue } from '@swagger-api/apidom-core'; + +import FallbackVisitor from '../FallbackVisitor'; +import SpecificationVisitor from '../SpecificationVisitor'; +import SwaggerVersionElement from '../../../elements/SwaggerVersion'; + +const SwaggerVisitor = stampit(SpecificationVisitor, FallbackVisitor, { + methods: { + StringElement(stringElement: StringElement) { + const swaggerVersionElement = new SwaggerVersionElement(toValue(stringElement)); + + this.copyMetaAndAttributes(stringElement, swaggerVersionElement); + + this.element = swaggerVersionElement; + return BREAK; + }, + }, +}); + +export default SwaggerVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/TagsVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/TagsVisitor.ts new file mode 100644 index 0000000000..359539ce8f --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/TagsVisitor.ts @@ -0,0 +1,26 @@ +import stampit from 'stampit'; +import { ArrayElement, Element, BREAK } from '@swagger-api/apidom-core'; + +import SwaggerTagsElement from '../../../elements/nces/SwaggerTags'; +import FallbackVisitor from '../FallbackVisitor'; +import SpecificationVisitor from '../SpecificationVisitor'; + +const TagsVisitor = stampit(SpecificationVisitor, FallbackVisitor, { + init() { + this.element = new SwaggerTagsElement(); + }, + methods: { + ArrayElement(arrayElement: ArrayElement) { + arrayElement.forEach((item: Element): void => { + const specPath = ['document', 'objects', 'Tag']; + const element = this.toRefractedElement(specPath, item); + this.element.push(element); + }); + this.copyMetaAndAttributes(arrayElement, this.element); + + return BREAK; + }, + }, +}); + +export default TagsVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/index.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/index.ts new file mode 100644 index 0000000000..dd373b9dce --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/index.ts @@ -0,0 +1,18 @@ +import stampit from 'stampit'; +import { always } from 'ramda'; + +import SwaggerElement from '../../../elements/Swagger'; +import FallbackVisitor from '../FallbackVisitor'; +import FixedFieldsVisitor from '../generics/FixedFieldsVisitor'; + +const SwaggerVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, { + props: { + specPath: always(['document', 'objects', 'Swagger']), + canSupportSpecificationExtensions: true, + }, + init() { + this.element = new SwaggerElement(); + }, +}); + +export default SwaggerVisitor; diff --git a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts index c7b3410abc..fb37023371 100644 --- a/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts +++ b/packages/apidom-ns-openapi-2/src/refractor/visitors/open-api-2/operation/SecurityVisitor.ts @@ -5,7 +5,7 @@ import OperationSecurityElement from '../../../../elements/nces/OperationSecurit import FallbackVisitor from '../../FallbackVisitor'; import SpecificationVisitor from '../../SpecificationVisitor'; -const SecurityRequirementVisitor = stampit(SpecificationVisitor, FallbackVisitor, { +const SecurityVisitor = stampit(SpecificationVisitor, FallbackVisitor, { init() { this.element = new OperationSecurityElement(); }, @@ -23,4 +23,4 @@ const SecurityRequirementVisitor = stampit(SpecificationVisitor, FallbackVisitor }, }); -export default SecurityRequirementVisitor; +export default SecurityVisitor; diff --git a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts index ca34852f81..5152d93159 100644 --- a/packages/apidom-ns-openapi-2/src/traversal/visitor.ts +++ b/packages/apidom-ns-openapi-2/src/traversal/visitor.ts @@ -19,6 +19,7 @@ export const getNodeType = (element: T): string | undefined = */ export const keyMap = { + SwaggerElement: ['content'], InfoElement: ['content'], ContactElement: ['content'], LicenseElement: ['content'], diff --git a/packages/apidom-ns-openapi-2/test/predicates.ts b/packages/apidom-ns-openapi-2/test/predicates.ts index c2a3a0ac32..e3f2a8e3ac 100644 --- a/packages/apidom-ns-openapi-2/test/predicates.ts +++ b/packages/apidom-ns-openapi-2/test/predicates.ts @@ -1,6 +1,8 @@ import { assert } from 'chai'; import { + SwaggerElement, + SwaggerVersionElement, InfoElement, ContactElement, LicenseElement, @@ -26,6 +28,8 @@ import { SecuritySchemeElement, ScopesElement, SecurityRequirementElement, + isSwaggerElement, + isSwaggerVersionElement, isInfoElement, isContactElement, isLicenseElement, @@ -54,6 +58,118 @@ import { } from '../src'; describe('predicates', function () { + context('isSwaggerElement', function () { + context('given SwaggerElement instance value', function () { + specify('should return true', function () { + const element = new SwaggerElement(); + + assert.isTrue(isSwaggerElement(element)); + }); + }); + + context('given subtype instance value', function () { + specify('should return true', function () { + class SwaggerSubElement extends SwaggerElement {} + + assert.isTrue(isSwaggerElement(new SwaggerSubElement())); + }); + }); + + context('given non SwaggerSubElement instance value', function () { + specify('should return false', function () { + assert.isFalse(isSwaggerElement(1)); + assert.isFalse(isSwaggerElement(null)); + assert.isFalse(isSwaggerElement(undefined)); + assert.isFalse(isSwaggerElement({})); + assert.isFalse(isSwaggerElement([])); + assert.isFalse(isSwaggerElement('string')); + }); + }); + + specify('should support duck-typing', function () { + const swaggerElementDuck = { + _storedElement: 'swagger', + _content: [], + primitive() { + return 'object'; + }, + get element() { + return this._storedElement; + }, + }; + + const swaggerElementSwan = { + _storedElement: undefined, + _content: undefined, + primitive() { + return 'swan'; + }, + get length() { + return 0; + }, + }; + + assert.isTrue(isSwaggerElement(swaggerElementDuck)); + assert.isFalse(isSwaggerElement(swaggerElementSwan)); + }); + }); + + context('isSwaggerVersionElement', function () { + context('given SwaggerVersionElement instance value', function () { + specify('should return true', function () { + const element = new SwaggerVersionElement(); + + assert.isTrue(isSwaggerVersionElement(element)); + }); + }); + + context('given subtype instance value', function () { + specify('should return true', function () { + class SwaggerVersionSubElement extends SwaggerVersionElement {} + + assert.isTrue(isSwaggerVersionElement(new SwaggerVersionSubElement())); + }); + }); + + context('given non SwaggerVersionSubElement instance value', function () { + specify('should return false', function () { + assert.isFalse(isSwaggerVersionElement(1)); + assert.isFalse(isSwaggerVersionElement(null)); + assert.isFalse(isSwaggerVersionElement(undefined)); + assert.isFalse(isSwaggerVersionElement({})); + assert.isFalse(isSwaggerVersionElement([])); + assert.isFalse(isSwaggerVersionElement('string')); + }); + }); + + specify('should support duck-typing', function () { + const swaggerVersionElementDuck = { + _storedElement: 'swaggerVersion', + _content: [], + primitive() { + return 'string'; + }, + get element() { + return this._storedElement; + }, + }; + + const swaggerVersionElementSwan = { + _storedElement: undefined, + _content: undefined, + primitive() { + return 'swan'; + }, + get length() { + return 0; + }, + }; + + assert.isTrue(isSwaggerVersionElement(swaggerVersionElementDuck)); + assert.isFalse(isSwaggerVersionElement(swaggerVersionElementSwan)); + }); + }); + context('isInfoElement', function () { context('given InfoElement instance value', function () { specify('should return true', function () { diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/__snapshots__/index.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/__snapshots__/index.ts.snap new file mode 100644 index 0000000000..22c6f1403b --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/__snapshots__/index.ts.snap @@ -0,0 +1,70 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`refractor elements SwaggerElement should refract to semantic ApiDOM tree 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (InfoElement)) + (MemberElement + (StringElement) + (StringElement)) + (MemberElement + (StringElement) + (StringElement)) + (MemberElement + (StringElement) + (ArrayElement + (StringElement))) + (MemberElement + (StringElement) + (ArrayElement + (StringElement))) + (MemberElement + (StringElement) + (ArrayElement + (StringElement))) + (MemberElement + (StringElement) + (PathsElement + (MemberElement + (StringElement) + (PathItemElement)))) + (MemberElement + (StringElement) + (DefinitionsElement + (MemberElement + (StringElement) + (SchemaElement)))) + (MemberElement + (StringElement) + (ParametersDefinitionsElement + (MemberElement + (StringElement) + (ParameterElement)))) + (MemberElement + (StringElement) + (ResponsesDefinitionsElement + (MemberElement + (StringElement) + (ResponseElement)))) + (MemberElement + (StringElement) + (SecurityDefinitionsElement + (MemberElement + (StringElement) + (SecuritySchemeElement)))) + (MemberElement + (StringElement) + (ArrayElement + (SecurityRequirementElement))) + (MemberElement + (StringElement) + (ArrayElement + (TagElement))) + (MemberElement + (StringElement) + (ExternalDocumentationElement))) +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/index.ts b/packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/index.ts new file mode 100644 index 0000000000..146d8e406e --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/elements/Swagger/index.ts @@ -0,0 +1,56 @@ +import { assert, expect } from 'chai'; +import { includesClasses, sexprs } from '@swagger-api/apidom-core'; + +import { SwaggerElement } from '../../../../src'; + +describe('refractor', function () { + context('elements', function () { + context('SwaggerElement', function () { + specify('should refract to semantic ApiDOM tree', function () { + const infoElement = SwaggerElement.refract({ + swagger: '2.0', + info: {}, + host: 'https://example.com/terms/', + basePath: '/base-path', + schemes: ['https'], + consumes: ['application/json'], + produces: ['application/json'], + paths: { + '/path': {}, + }, + definitions: { + schema: {}, + }, + parameters: { + parameter: {}, + }, + responses: { + response: {}, + }, + securityDefinitions: { + api_key: {}, + }, + security: [{}], + tags: [{}], + externalDocs: {}, + }); + + expect(sexprs(infoElement)).toMatchSnapshot(); + }); + + specify('should support specification extensions', function () { + const swaggerElement = SwaggerElement.refract({ + swagger: '2.0', + 'x-extension': 'extension', + }) as SwaggerElement; + + assert.isFalse( + includesClasses(['specification-extension'], swaggerElement.getMember('swagger')), + ); + assert.isTrue( + includesClasses(['specification-extension'], swaggerElement.getMember('x-extension')), + ); + }); + }); + }); +}); From 2a068b88fa2babb483ae2b4eee27b11d149556b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Tue, 24 Oct 2023 13:26:26 +0200 Subject: [PATCH 12/19] chore(ns-openapi-2): prepare package for releasing (#3314) Refs #3097 --- package.json | 2 +- packages/apidom-ns-openapi-2/package.json | 1 - packages/apidom-ns-openapi-2/src/index.ts | 11 + .../refractor/__snapshots__/index.ts.snap | 19078 ++++++++++++++++ .../test/refractor/fixtures/openapi.json | 1054 + .../test/refractor/index.ts | 276 + 6 files changed, 20420 insertions(+), 2 deletions(-) create mode 100644 packages/apidom-ns-openapi-2/test/refractor/__snapshots__/index.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/fixtures/openapi.json create mode 100644 packages/apidom-ns-openapi-2/test/refractor/index.ts diff --git a/package.json b/package.json index 4e33229315..f4b4bb572c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "clean": "lerna run clean", "test": "lerna run test", "link": "npm link --workspaces", - "unlink": "npm unlink --global @swagger-api/apidom-ast @swagger-api/apidom-core @swagger-api/apidom-error @swagger-api/apidom-json-path @swagger-api/apidom-json-pointer @swagger-api/apidom-json-pointer-relative @swagger-api/apidom-parser-adapter-json @swagger-api/apidom-ns-api-design-systems @swagger-api/apidom-ns-asyncapi-2 @swagger-api/apidom-ns-json-schema-draft-4 @swagger-api/apidom-ns-json-schema-draft-6 @swagger-api/apidom-ns-json-schema-draft-7 @swagger-api/apidom-ns-openapi-3-0 @swagger-api/apidom-ns-openapi-3-1 @swagger-api/apidom-parser-adapter-yaml-1-2 @swagger-api/apidom-parser-adapter-asyncapi-yaml-2 @swagger-api/apidom-parser-adapter-openapi-yaml-3-0 @swagger-api/apidom-parser-adapter-openapi-yaml-3-1 @swagger-api/apidom-parser @swagger-api/apidom-parser-adapter-api-design-systems-json @swagger-api/apidom-parser-adapter-api-design-systems-yaml @swagger-api/apidom-parser-adapter-asyncapi-json-2 @swagger-api/apidom-ls @swagger-api/apidom-reference @swagger-api/apidom-parser-adapter-openapi-json-3-0 @swagger-api/apidom-parser-adapter-openapi-json-3-1 @swagger-api/apidom-playground", + "unlink": "npm unlink --global @swagger-api/apidom-ast @swagger-api/apidom-core @swagger-api/apidom-error @swagger-api/apidom-json-path @swagger-api/apidom-json-pointer @swagger-api/apidom-json-pointer-relative @swagger-api/apidom-parser-adapter-json @swagger-api/apidom-ns-api-design-systems @swagger-api/apidom-ns-asyncapi-2 @swagger-api/apidom-ns-json-schema-draft-4 @swagger-api/apidom-ns-json-schema-draft-6 @swagger-api/apidom-ns-json-schema-draft-7 @swagger-api/apidom-ns-openapi-2 @swagger-api/apidom-ns-openapi-3-0 @swagger-api/apidom-ns-openapi-3-1 @swagger-api/apidom-parser-adapter-yaml-1-2 @swagger-api/apidom-parser-adapter-asyncapi-yaml-2 @swagger-api/apidom-parser-adapter-openapi-yaml-3-0 @swagger-api/apidom-parser-adapter-openapi-yaml-3-1 @swagger-api/apidom-parser @swagger-api/apidom-parser-adapter-api-design-systems-json @swagger-api/apidom-parser-adapter-api-design-systems-yaml @swagger-api/apidom-parser-adapter-asyncapi-json-2 @swagger-api/apidom-ls @swagger-api/apidom-reference @swagger-api/apidom-parser-adapter-openapi-json-3-0 @swagger-api/apidom-parser-adapter-openapi-json-3-1 @swagger-api/apidom-playground", "prepare": "chmod +x ./node_modules/husky/lib/bin.js && husky install" }, "repository": { diff --git a/packages/apidom-ns-openapi-2/package.json b/packages/apidom-ns-openapi-2/package.json index cccf82a46a..8cfcc93f8f 100644 --- a/packages/apidom-ns-openapi-2/package.json +++ b/packages/apidom-ns-openapi-2/package.json @@ -6,7 +6,6 @@ "access": "public", "registry": "https://registry.npmjs.org" }, - "private": true, "type": "module", "sideEffects": [ "./es/refractor/registration.mjs", diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts index 28b6f23cb9..42b3fd4fba 100644 --- a/packages/apidom-ns-openapi-2/src/index.ts +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -53,6 +53,17 @@ export { isSecurityRequirementElement, } from './predicates'; +export { isReferenceLikeElement, isSwaggerExtension } from './refractor/predicates'; + +export { default as AlternatingVisitor } from './refractor/visitors/generics/AlternatingVisitor'; +export { default as FixedFieldsVisitor } from './refractor/visitors/generics/FixedFieldsVisitor'; +export { default as MapVisitor } from './refractor/visitors/generics/MapVisitor'; +export { default as MixedFieldsVisitor } from './refractor/visitors/generics/MixedFieldsVisitor'; +export { default as PatternedFieldsVisitor } from './refractor/visitors/generics/PatternedFieldsVisitor'; +export { default as FallbackVisitor } from './refractor/visitors/FallbackVisitor'; +export { default as SpecificationVisitor } from './refractor/visitors/SpecificationVisitor'; +export { default as Visitor } from './refractor/visitors/Visitor'; + export { keyMap, getNodeType } from './traversal/visitor'; // OpenAPI 2.0 elements diff --git a/packages/apidom-ns-openapi-2/test/refractor/__snapshots__/index.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/__snapshots__/index.ts.snap new file mode 100644 index 0000000000..f68be004b4 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/__snapshots__/index.ts.snap @@ -0,0 +1,19078 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`refractor given generic ApiDOM object in OpenAPI 2.0 shape should refract to SwaggerElement 1`] = ` +{ + "element": "swagger", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "api" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "swagger" + }, + "value": { + "element": "swaggerVersion", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "spec-version" + }, + { + "element": "string", + "content": "version" + } + ] + } + }, + "content": "2.0" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "info" + }, + "value": { + "element": "info", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "info" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key \`special-key\` to test the authorization filters." + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "version" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "api-version" + }, + { + "element": "string", + "content": "version" + } + ] + } + }, + "content": "1.0.6" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "title" + }, + "value": { + "element": "string", + "content": "Swagger Petstore" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "termsOfService" + }, + "value": { + "element": "string", + "content": "http://swagger.io/terms/" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "contact" + }, + "value": { + "element": "contact", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "email" + }, + "value": { + "element": "string", + "content": "apiteam@swagger.io" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "license" + }, + "value": { + "element": "license", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "Apache 2.0" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "url" + }, + "value": { + "element": "string", + "content": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "host" + }, + "value": { + "element": "string", + "content": "petstore.swagger.io" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "basePath" + }, + "value": { + "element": "string", + "content": "/v2" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "swagger-tags" + } + ] + } + }, + "content": [ + { + "element": "tag", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Everything about your Pets" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "externalDocs" + }, + "value": { + "element": "externalDocumentation", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Find out more" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "url" + }, + "value": { + "element": "string", + "content": "http://swagger.io" + } + } + } + ] + } + } + } + ] + }, + { + "element": "tag", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "store" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Access to Petstore orders" + } + } + } + ] + }, + { + "element": "tag", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "user" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Operations about user" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "externalDocs" + }, + "value": { + "element": "externalDocumentation", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Find out more about our store" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "url" + }, + "value": { + "element": "string", + "content": "http://swagger.io" + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schemes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "swagger-schemes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "https" + }, + { + "element": "string", + "content": "http" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "paths" + }, + "value": { + "element": "paths", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/pet/{petId}/uploadImage" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/pet/{petId}/uploadImage" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "uploads an image" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "uploadFile" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "multipart/form-data" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "petId" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "ID of pet to update" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "additionalMetadata" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "formData" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Additional data to pass to server" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": false + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "file" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "formData" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "file to upload" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": false + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "file" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/ApiResponse" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/pet" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/pet" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Add a new pet to the store" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "addPet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Pet object that needs to be added to the store" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Pet" + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "405" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "405" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid input" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "put" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "PUT" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Update an existing pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "updatePet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Pet object that needs to be added to the store" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Pet" + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid ID supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Pet not found" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "405" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "405" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Validation exception" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/pet/findByStatus" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/pet/findByStatus" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Finds Pets by status" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Multiple status values can be provided with comma separated strings" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "findPetsByStatus" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "status" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "query" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Status values that need to be considered for filter" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "items", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "enum" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-enum" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "available" + }, + { + "element": "string", + "content": "pending" + }, + { + "element": "string", + "content": "sold" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "default" + }, + "value": { + "element": "string", + "content": "available" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "collectionFormat" + }, + "value": { + "element": "string", + "content": "multi" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Pet" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid status value" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/pet/findByTags" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/pet/findByTags" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Finds Pets by tags" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing." + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "findPetsByTags" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "tags" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "query" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Tags to filter by" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "items", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "collectionFormat" + }, + "value": { + "element": "string", + "content": "multi" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Pet" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid tag value" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "deprecated" + }, + "value": { + "element": "boolean", + "content": true + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/pet/{petId}" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/pet/{petId}" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Find pet by ID" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Returns a single pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "getPetById" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "petId" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "ID of pet to return" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Pet" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid ID supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Pet not found" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "api_key" + }, + "value": { + "element": "array" + } + } + } + ] + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Updates a pet in the store with form data" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "updatePetWithForm" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/x-www-form-urlencoded" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "petId" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "ID of pet that needs to be updated" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "name" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "formData" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Updated name of the pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": false + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "status" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "formData" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Updated status of the pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": false + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "405" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "405" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid input" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "delete" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "DELETE" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "pet" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Deletes a pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "deletePet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "api_key" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "header" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": false + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "petId" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Pet id to delete" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid ID supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Pet not found" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "array", + "content": [ + { + "element": "string", + "content": "write:pets" + }, + { + "element": "string", + "content": "read:pets" + } + ] + } + } + } + ] + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/store/order" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/store/order" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "store" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Place an order for a pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "placeOrder" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "order placed for purchasing the pet" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Order" + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Order" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid Order" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/store/order/{orderId}" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/store/order/{orderId}" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "store" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Find purchase order by ID" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "getOrderById" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "orderId" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "ID of pet that needs to be fetched" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "maximum" + }, + "value": { + "element": "number", + "content": 10 + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "minimum" + }, + "value": { + "element": "number", + "content": 1 + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Order" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid ID supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Order not found" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "delete" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "DELETE" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "store" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Delete purchase order by ID" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "deleteOrder" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "orderId" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "ID of the order that needs to be deleted" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "minimum" + }, + "value": { + "element": "number", + "content": 1 + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid ID supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Order not found" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/store/inventory" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/store/inventory" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "store" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Returns pet inventories by status" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Returns a map of status codes to quantities" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "getInventory" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + } + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "additionalProperties" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int32" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "security" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-security" + }, + { + "element": "string", + "content": "security" + } + ] + } + }, + "content": [ + { + "element": "securityRequirement", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "api_key" + }, + "value": { + "element": "array" + } + } + } + ] + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/user/createWithArray" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/user/createWithArray" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Creates list of users with given input array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "createUsersWithArrayInput" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "List of user object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/User" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "default" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "default" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/user/createWithList" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/user/createWithList" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Creates list of users with given input array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "createUsersWithListInput" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "List of user object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/User" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "default" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "default" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/user/{username}" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/user/{username}" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Get user by user name" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "getUserByName" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "username" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "The name that needs to be fetched. Use user1 for testing. " + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/User" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid username supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "User not found" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "put" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "PUT" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Updated user" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "This can only be done by the logged in user." + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "updateUser" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "username" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "name that need to be updated" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Updated user object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/User" + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid user supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "User not found" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "delete" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "DELETE" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Delete user" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "This can only be done by the logged in user." + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "deleteUser" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "username" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "path" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "The name that needs to be deleted" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid username supplied" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "404" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "404" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "User not found" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/user/login" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/user/login" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Logs user into the system" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "loginUser" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "username" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "query" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "The user name for login" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + }, + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "password" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "query" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "The password for login in clear text" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "200" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "200" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "headers" + }, + "value": { + "element": "headers", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "X-Expires-After" + }, + "value": { + "element": "header", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "date-time" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "date in UTC when token expires" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "X-Rate-Limit" + }, + "value": { + "element": "header", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int32" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "calls per hour allowed by the user" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "400" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "400" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Invalid username/password supplied" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/user/logout" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/user/logout" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "get" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "GET" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Logs out current logged in user session" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "logoutUser" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + } + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "default" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "default" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "/user" + }, + "value": { + "element": "pathItem", + "meta": { + "path": { + "element": "string", + "content": "/user" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "post" + }, + "value": { + "element": "operation", + "meta": { + "http-method": { + "element": "string", + "content": "POST" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-tags" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "user" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "summary" + }, + "value": { + "element": "string", + "content": "Create user" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "This can only be done by the logged in user." + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "operationId" + }, + "value": { + "element": "string", + "content": "createUser" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "consumes" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-consumes" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "produces" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-produces" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "application/json" + }, + { + "element": "string", + "content": "application/xml" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "parameters" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "operation-parameters" + }, + { + "element": "string", + "content": "parameters" + } + ] + } + }, + "content": [ + { + "element": "parameter", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "body" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Created user object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "boolean", + "content": true + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "schema" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/User" + } + } + } + ] + } + } + } + ] + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "responses" + }, + "value": { + "element": "responses", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "default" + }, + "value": { + "element": "response", + "meta": { + "http-status-code": { + "element": "string", + "content": "default" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "successful operation" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "securityDefinitions" + }, + "value": { + "element": "securityDefinitions", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "api_key" + }, + "value": { + "element": "securityScheme", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "content": "apiKey" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "api_key" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "in" + }, + "value": { + "element": "string", + "content": "header" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petstore_auth" + }, + "value": { + "element": "securityScheme", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "content": "oauth2" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "authorizationUrl" + }, + "value": { + "element": "string", + "content": "https://petstore.swagger.io/oauth/authorize" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "flow" + }, + "value": { + "element": "string", + "content": "implicit" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "scopes" + }, + "value": { + "element": "scopes", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "read:pets" + }, + "value": { + "element": "string", + "content": "read your pets" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "write:pets" + }, + "value": { + "element": "string", + "content": "modify pets in your account" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "definitions" + }, + "value": { + "element": "definitions", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "ApiResponse" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "properties" + }, + "value": { + "element": "object", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-properties" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "code" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int32" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "message" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "Category" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "properties" + }, + "value": { + "element": "object", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-properties" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "id" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "Category" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "Pet" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "required" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-required" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "name" + }, + { + "element": "string", + "content": "photoUrls" + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "properties" + }, + "value": { + "element": "object", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-properties" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "id" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "category" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Category" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "example" + }, + "value": { + "element": "string", + "content": "doggie" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "photoUrls" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "wrapped" + }, + "value": { + "element": "boolean", + "content": true + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "photoUrl" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "tags" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "array" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "wrapped" + }, + "value": { + "element": "boolean", + "content": true + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "items" + }, + "value": { + "element": "JSONReference", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-reference" + }, + { + "element": "string", + "content": "reference-element" + } + ] + }, + "referenced-element": { + "element": "string", + "content": "schema" + } + }, + "content": [ + { + "element": "member", + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "object", + "content": [ + { + "element": "member", + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "tag" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "$ref" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "reference-value" + } + ] + } + }, + "content": "#/definitions/Tag" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "status" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "pet status in the store" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "enum" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-enum" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "available" + }, + { + "element": "string", + "content": "pending" + }, + { + "element": "string", + "content": "sold" + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "Pet" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "Tag" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "properties" + }, + "value": { + "element": "object", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-properties" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "id" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "Tag" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "Order" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "properties" + }, + "value": { + "element": "object", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-properties" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "id" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "petId" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "quantity" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int32" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "shipDate" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "date-time" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "status" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Order Status" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "enum" + }, + "value": { + "element": "array", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-enum" + } + ] + } + }, + "content": [ + { + "element": "string", + "content": "placed" + }, + { + "element": "string", + "content": "approved" + }, + { + "element": "string", + "content": "delivered" + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "complete" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "boolean" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "Order" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "User" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "object" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "properties" + }, + "value": { + "element": "object", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-properties" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "id" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int64" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "username" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "firstName" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "lastName" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "email" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "password" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "phone" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "string" + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "patterned-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "userStatus" + }, + "value": { + "element": "schema", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-draft-4" + } + ] + } + }, + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "type" + }, + "value": { + "element": "string", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "json-schema-type" + } + ] + } + }, + "content": "integer" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "format" + }, + "value": { + "element": "string", + "content": "int32" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "User Status" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "xml" + }, + "value": { + "element": "xml", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "name" + }, + "value": { + "element": "string", + "content": "User" + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "externalDocs" + }, + "value": { + "element": "externalDocumentation", + "content": [ + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "description" + }, + "value": { + "element": "string", + "content": "Find out more about Swagger" + } + } + }, + { + "element": "member", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "fixed-field" + } + ] + } + }, + "content": { + "key": { + "element": "string", + "content": "url" + }, + "value": { + "element": "string", + "content": "http://swagger.io" + } + } + } + ] + } + } + } + ] +} +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/fixtures/openapi.json b/packages/apidom-ns-openapi-2/test/refractor/fixtures/openapi.json new file mode 100644 index 0000000000..daeb7f6b7c --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/fixtures/openapi.json @@ -0,0 +1,1054 @@ +{ + "swagger": "2.0", + "info": { + "description": "This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.", + "version": "1.0.6", + "title": "Swagger Petstore", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "email": "apiteam@swagger.io" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "host": "petstore.swagger.io", + "basePath": "/v2", + "tags": [ + { + "name": "pet", + "description": "Everything about your Pets", + "externalDocs": { + "description": "Find out more", + "url": "http://swagger.io" + } + }, + { + "name": "store", + "description": "Access to Petstore orders" + }, + { + "name": "user", + "description": "Operations about user", + "externalDocs": { + "description": "Find out more about our store", + "url": "http://swagger.io" + } + } + ], + "schemes": [ + "https", + "http" + ], + "paths": { + "/pet/{petId}/uploadImage": { + "post": { + "tags": [ + "pet" + ], + "summary": "uploads an image", + "description": "", + "operationId": "uploadFile", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "petId", + "in": "path", + "description": "ID of pet to update", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "additionalMetadata", + "in": "formData", + "description": "Additional data to pass to server", + "required": false, + "type": "string" + }, + { + "name": "file", + "in": "formData", + "description": "file to upload", + "required": false, + "type": "file" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/ApiResponse" + } + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] + } + }, + "/pet": { + "post": { + "tags": [ + "pet" + ], + "summary": "Add a new pet to the store", + "description": "", + "operationId": "addPet", + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Pet object that needs to be added to the store", + "required": true, + "schema": { + "$ref": "#/definitions/Pet" + } + } + ], + "responses": { + "405": { + "description": "Invalid input" + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] + }, + "put": { + "tags": [ + "pet" + ], + "summary": "Update an existing pet", + "description": "", + "operationId": "updatePet", + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Pet object that needs to be added to the store", + "required": true, + "schema": { + "$ref": "#/definitions/Pet" + } + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Pet not found" + }, + "405": { + "description": "Validation exception" + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] + } + }, + "/pet/findByStatus": { + "get": { + "tags": [ + "pet" + ], + "summary": "Finds Pets by status", + "description": "Multiple status values can be provided with comma separated strings", + "operationId": "findPetsByStatus", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "status", + "in": "query", + "description": "Status values that need to be considered for filter", + "required": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "available", + "pending", + "sold" + ], + "default": "available" + }, + "collectionFormat": "multi" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + } + }, + "400": { + "description": "Invalid status value" + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] + } + }, + "/pet/findByTags": { + "get": { + "tags": [ + "pet" + ], + "summary": "Finds Pets by tags", + "description": "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", + "operationId": "findPetsByTags", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "tags", + "in": "query", + "description": "Tags to filter by", + "required": true, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + } + }, + "400": { + "description": "Invalid tag value" + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ], + "deprecated": true + } + }, + "/pet/{petId}": { + "get": { + "tags": [ + "pet" + ], + "summary": "Find pet by ID", + "description": "Returns a single pet", + "operationId": "getPetById", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "petId", + "in": "path", + "description": "ID of pet to return", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Pet not found" + } + }, + "security": [ + { + "api_key": [] + } + ] + }, + "post": { + "tags": [ + "pet" + ], + "summary": "Updates a pet in the store with form data", + "description": "", + "operationId": "updatePetWithForm", + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "petId", + "in": "path", + "description": "ID of pet that needs to be updated", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "name", + "in": "formData", + "description": "Updated name of the pet", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "formData", + "description": "Updated status of the pet", + "required": false, + "type": "string" + } + ], + "responses": { + "405": { + "description": "Invalid input" + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] + }, + "delete": { + "tags": [ + "pet" + ], + "summary": "Deletes a pet", + "description": "", + "operationId": "deletePet", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "api_key", + "in": "header", + "required": false, + "type": "string" + }, + { + "name": "petId", + "in": "path", + "description": "Pet id to delete", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Pet not found" + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] + } + }, + "/store/order": { + "post": { + "tags": [ + "store" + ], + "summary": "Place an order for a pet", + "description": "", + "operationId": "placeOrder", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "order placed for purchasing the pet", + "required": true, + "schema": { + "$ref": "#/definitions/Order" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Order" + } + }, + "400": { + "description": "Invalid Order" + } + } + } + }, + "/store/order/{orderId}": { + "get": { + "tags": [ + "store" + ], + "summary": "Find purchase order by ID", + "description": "For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions", + "operationId": "getOrderById", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "ID of pet that needs to be fetched", + "required": true, + "type": "integer", + "maximum": 10, + "minimum": 1, + "format": "int64" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Order" + } + }, + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Order not found" + } + } + }, + "delete": { + "tags": [ + "store" + ], + "summary": "Delete purchase order by ID", + "description": "For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors", + "operationId": "deleteOrder", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "ID of the order that needs to be deleted", + "required": true, + "type": "integer", + "minimum": 1, + "format": "int64" + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Order not found" + } + } + } + }, + "/store/inventory": { + "get": { + "tags": [ + "store" + ], + "summary": "Returns pet inventories by status", + "description": "Returns a map of status codes to quantities", + "operationId": "getInventory", + "produces": [ + "application/json" + ], + "parameters": [], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + } + } + } + }, + "security": [ + { + "api_key": [] + } + ] + } + }, + "/user/createWithArray": { + "post": { + "tags": [ + "user" + ], + "summary": "Creates list of users with given input array", + "description": "", + "operationId": "createUsersWithArrayInput", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "List of user object", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/User" + } + } + } + ], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/user/createWithList": { + "post": { + "tags": [ + "user" + ], + "summary": "Creates list of users with given input array", + "description": "", + "operationId": "createUsersWithListInput", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "List of user object", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/User" + } + } + } + ], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/user/{username}": { + "get": { + "tags": [ + "user" + ], + "summary": "Get user by user name", + "description": "", + "operationId": "getUserByName", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "username", + "in": "path", + "description": "The name that needs to be fetched. Use user1 for testing. ", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/User" + } + }, + "400": { + "description": "Invalid username supplied" + }, + "404": { + "description": "User not found" + } + } + }, + "put": { + "tags": [ + "user" + ], + "summary": "Updated user", + "description": "This can only be done by the logged in user.", + "operationId": "updateUser", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "username", + "in": "path", + "description": "name that need to be updated", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "Updated user object", + "required": true, + "schema": { + "$ref": "#/definitions/User" + } + } + ], + "responses": { + "400": { + "description": "Invalid user supplied" + }, + "404": { + "description": "User not found" + } + } + }, + "delete": { + "tags": [ + "user" + ], + "summary": "Delete user", + "description": "This can only be done by the logged in user.", + "operationId": "deleteUser", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "username", + "in": "path", + "description": "The name that needs to be deleted", + "required": true, + "type": "string" + } + ], + "responses": { + "400": { + "description": "Invalid username supplied" + }, + "404": { + "description": "User not found" + } + } + } + }, + "/user/login": { + "get": { + "tags": [ + "user" + ], + "summary": "Logs user into the system", + "description": "", + "operationId": "loginUser", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "username", + "in": "query", + "description": "The user name for login", + "required": true, + "type": "string" + }, + { + "name": "password", + "in": "query", + "description": "The password for login in clear text", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "400": { + "description": "Invalid username/password supplied" + } + } + } + }, + "/user/logout": { + "get": { + "tags": [ + "user" + ], + "summary": "Logs out current logged in user session", + "description": "", + "operationId": "logoutUser", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/user": { + "post": { + "tags": [ + "user" + ], + "summary": "Create user", + "description": "This can only be done by the logged in user.", + "operationId": "createUser", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Created user object", + "required": true, + "schema": { + "$ref": "#/definitions/User" + } + } + ], + "responses": { + "default": { + "description": "successful operation" + } + } + } + } + }, + "securityDefinitions": { + "api_key": { + "type": "apiKey", + "name": "api_key", + "in": "header" + }, + "petstore_auth": { + "type": "oauth2", + "authorizationUrl": "https://petstore.swagger.io/oauth/authorize", + "flow": "implicit", + "scopes": { + "read:pets": "read your pets", + "write:pets": "modify pets in your account" + } + } + }, + "definitions": { + "ApiResponse": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "Category": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + }, + "xml": { + "name": "Category" + } + }, + "Pet": { + "type": "object", + "required": [ + "name", + "photoUrls" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "category": { + "$ref": "#/definitions/Category" + }, + "name": { + "type": "string", + "example": "doggie" + }, + "photoUrls": { + "type": "array", + "xml": { + "wrapped": true + }, + "items": { + "type": "string", + "xml": { + "name": "photoUrl" + } + } + }, + "tags": { + "type": "array", + "xml": { + "wrapped": true + }, + "items": { + "xml": { + "name": "tag" + }, + "$ref": "#/definitions/Tag" + } + }, + "status": { + "type": "string", + "description": "pet status in the store", + "enum": [ + "available", + "pending", + "sold" + ] + } + }, + "xml": { + "name": "Pet" + } + }, + "Tag": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + }, + "xml": { + "name": "Tag" + } + }, + "Order": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "petId": { + "type": "integer", + "format": "int64" + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "shipDate": { + "type": "string", + "format": "date-time" + }, + "status": { + "type": "string", + "description": "Order Status", + "enum": [ + "placed", + "approved", + "delivered" + ] + }, + "complete": { + "type": "boolean" + } + }, + "xml": { + "name": "Order" + } + }, + "User": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "password": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "userStatus": { + "type": "integer", + "format": "int32", + "description": "User Status" + } + }, + "xml": { + "name": "User" + } + } + }, + "externalDocs": { + "description": "Find out more about Swagger", + "url": "http://swagger.io" + } +} diff --git a/packages/apidom-ns-openapi-2/test/refractor/index.ts b/packages/apidom-ns-openapi-2/test/refractor/index.ts new file mode 100644 index 0000000000..6735b12d2b --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/index.ts @@ -0,0 +1,276 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { assert, expect } from 'chai'; +import sinon from 'sinon'; +import { ObjectElement, toValue, Namespace } from '@swagger-api/apidom-core'; + +import { SwaggerElement, SwaggerVersionElement, isSwaggerVersionElement } from '../../src'; +import * as predicates from '../../src/predicates'; + +describe('refractor', function () { + context('given generic ApiDOM object in OpenAPI 2.0 shape', function () { + specify('should refract to SwaggerElement', function () { + const openApiString = fs + .readFileSync(path.join(__dirname, 'fixtures', 'openapi.json')) + .toString(); + const openApiPojo = JSON.parse(openApiString); + const genericObjectElement = new ObjectElement(openApiPojo); + const swaggerElement = SwaggerElement.refract(genericObjectElement); + + expect(swaggerElement).toMatchSnapshot(); + }); + }); + + context('supports plugins', function () { + let plugin1Spec: any; + let plugin2Spec: any; + let plugin1: any; + let plugin2: any; + + beforeEach(function () { + plugin1Spec = { + name: 'plugin1', + pre() {}, + visitor: { + SwaggerVersionElement(element: SwaggerVersionElement) { + // @ts-ignore + element.content = '2.1'; // eslint-disable-line no-param-reassign + }, + }, + post() {}, + }; + plugin2Spec = { + name: 'plugin2', + pre() {}, + visitor: { + SwaggerVersionElement(element: SwaggerVersionElement) { + // @ts-ignore + element.meta.set('metaKey', 'metaValue'); + }, + }, + post() {}, + }; + plugin1 = sinon.spy(() => plugin1Spec); + plugin2 = sinon.spy(() => plugin2Spec); + + sinon.spy(plugin1Spec, 'pre'); + sinon.spy(plugin1Spec, 'post'); + sinon.spy(plugin1Spec.visitor, 'SwaggerVersionElement'); + + sinon.spy(plugin2Spec, 'pre'); + sinon.spy(plugin2Spec, 'post'); + sinon.spy(plugin2Spec.visitor, 'SwaggerVersionElement'); + }); + + context('plugin', function () { + specify('should be called with toolbox object', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.hasAllKeys(plugin1.firstCall.args[0], ['predicates', 'namespace']); + }); + + specify('should have predicates in toolbox object', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.hasAnyKeys(plugin1.firstCall.args[0].predicates, Object.keys(predicates)); + }); + + specify('should have namespace in toolbox object', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.instanceOf(plugin1.firstCall.args[0].namespace, Namespace); + }); + }); + + context('pre hook', function () { + specify('should call it once', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.isTrue(plugin1Spec.pre.calledOnce); + }); + + specify('should call it before other plugin pre hook', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue(plugin1Spec.pre.calledBefore(plugin2Spec.pre)); + }); + + specify('should call it before visiting', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue(plugin1Spec.pre.calledBefore(plugin1Spec.visitor.SwaggerVersionElement)); + assert.isTrue(plugin1Spec.pre.calledBefore(plugin2Spec.visitor.SwaggerVersionElement)); + }); + }); + + context('post hook', function () { + specify('should call it once', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.isTrue(plugin1Spec.post.calledOnce); + }); + + specify('should call it before other plugin post hook', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue(plugin1Spec.post.calledBefore(plugin2Spec.post)); + }); + + specify('should call it after visiting', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue(plugin1Spec.post.calledAfter(plugin1Spec.visitor.SwaggerVersionElement)); + assert.isTrue(plugin1Spec.post.calledAfter(plugin2Spec.visitor.SwaggerVersionElement)); + }); + }); + + context('visitor', function () { + specify('should be called once', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue(plugin1Spec.visitor.SwaggerVersionElement.calledOnce); + assert.isTrue(plugin2Spec.visitor.SwaggerVersionElement.calledOnce); + }); + + specify('should be called in proper order', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue( + plugin1Spec.visitor.SwaggerVersionElement.calledBefore( + plugin2Spec.visitor.SwaggerVersionElement, + ), + ); + }); + + context('first plugin', function () { + specify('should receive arguments', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.lengthOf(plugin1Spec.visitor.SwaggerVersionElement.firstCall.args, 5); + }); + + specify('should receive node as first argument', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.isTrue( + isSwaggerVersionElement(plugin1Spec.visitor.SwaggerVersionElement.firstCall.args[0]), + ); + }); + + specify('should augment openapi version', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + const swaggerElement = SwaggerElement.refract(genericObject, { + plugins: [plugin1], + }); + + assert.deepEqual(toValue(swaggerElement), { swagger: '2.1' }); + }); + }); + + context('second plugin', function () { + specify('should receive arguments', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.lengthOf(plugin2Spec.visitor.SwaggerVersionElement.firstCall.args, 5); + }); + + specify('should receive node as first argument', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + assert.isTrue( + isSwaggerVersionElement(plugin2Spec.visitor.SwaggerVersionElement.firstCall.args[0]), + ); + }); + + specify('should append metadata to openapi version', function () { + const genericObject = new ObjectElement({ + swagger: '2.0', + }); + const swaggerElement = SwaggerElement.refract(genericObject, { + plugins: [plugin1, plugin2], + }); + + // @ts-ignore + assert.strictEqual(toValue(swaggerElement.swagger.meta.get('metaKey')), 'metaValue'); + }); + }); + }); + }); +}); From ade3a67f18a6f4aa3aa69cea0537482e1a15cfdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Tue, 24 Oct 2023 19:25:53 +0200 Subject: [PATCH 13/19] feat(ns-openapi-2): add replace empty elements refractor plugin (#3315) Refs #3097 --- packages/apidom-ns-openapi-2/src/index.ts | 2 + .../plugins/replace-empty-element.ts | 398 ++++++++++++++++++ .../__snapshots__/mappings.ts.snap | 85 ++++ .../__snapshots__/sequences.ts.snap | 58 +++ .../plugins/replace-empty-element/mappings.ts | 132 ++++++ .../replace-empty-element/sequences.ts | 76 ++++ 6 files changed, 751 insertions(+) create mode 100644 packages/apidom-ns-openapi-2/src/refractor/plugins/replace-empty-element.ts create mode 100644 packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/mappings.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/sequences.ts.snap create mode 100644 packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/mappings.ts create mode 100644 packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/sequences.ts diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts index 42b3fd4fba..2cf6a7601d 100644 --- a/packages/apidom-ns-openapi-2/src/index.ts +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -20,6 +20,8 @@ export { default as mediaTypes, OpenAPIMediaTypes } from './media-types'; // eslint-disable-next-line no-restricted-exports export { default } from './namespace'; +export { default as refractorPluginReplaceEmptyElement } from './refractor/plugins/replace-empty-element'; + export { default as refract, createRefractor } from './refractor'; export { default as specificationObj } from './refractor/specification'; diff --git a/packages/apidom-ns-openapi-2/src/refractor/plugins/replace-empty-element.ts b/packages/apidom-ns-openapi-2/src/refractor/plugins/replace-empty-element.ts new file mode 100644 index 0000000000..0a7a80ed02 --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/refractor/plugins/replace-empty-element.ts @@ -0,0 +1,398 @@ +import { + MemberElement, + ArrayElement, + ObjectElement, + StringElement, + isStringElement, + includesClasses, + isArrayElement, + cloneDeep, + toValue, +} from '@swagger-api/apidom-core'; + +/** + * OpenAPI 2.0 specification elements. + */ +import InfoElement from '../../elements/Info'; +import ContactElement from '../../elements/Contact'; +import LicenseElement from '../../elements/License'; +import PathsElement from '../../elements/Paths'; +import PathItemElement from '../../elements/PathItem'; +import OperationElement from '../../elements/Operation'; +import ExternalDocumentationElement from '../../elements/ExternalDocumentation'; +import ParameterElement from '../../elements/Parameter'; +import ItemsElement from '../../elements/Items'; +import ResponsesElement from '../../elements/Responses'; +import ResponseElement from '../../elements/Response'; +import HeadersElement from '../../elements/Headers'; +import ExampleElement from '../../elements/Example'; +import HeaderElement from '../../elements/Header'; +import TagElement from '../../elements/Tag'; +import SchemaElement from '../../elements/Schema'; +import XmlElement from '../../elements/Xml'; +import DefinitionsElement from '../../elements/Definitions'; +import ParametersDefinitionsElement from '../../elements/ParametersDefinitions'; +import ResponsesDefinitionsElement from '../../elements/ResponsesDefinitions'; +import SecurityDefinitionsElement from '../../elements/SecurityDefinitions'; +import SecuritySchemeElement from '../../elements/SecurityScheme'; +import ScopesElement from '../../elements/Scopes'; +import SecurityRequirementElement from '../../elements/SecurityRequirement'; +// non-concrete Elements (NCEs) +import OperationConsumesElement from '../../elements/nces/OperationConsumes'; +import OperationParametersElement from '../../elements/nces/OperationParameters'; +import OperationProducesElement from '../../elements/nces/OperationProduces'; +import OperationSchemesElement from '../../elements/nces/OperationSchemes'; +import OperationSecurityElement from '../../elements/nces/OperationSecurity'; +import OperationTagsElement from '../../elements/nces/OperationTags'; +import PathItemParametersElement from '../../elements/nces/PathItemParameters'; +import SwaggerSchemesElement from '../../elements/nces/SwaggerSchemes'; +import SwaggerConsumesElement from '../../elements/nces/SwaggerConsumes'; +import SwaggerProducesElement from '../../elements/nces/SwaggerProduces'; +import SwaggerSecurityElement from '../../elements/nces/SwaggerSecurity'; +import SwaggerTagsElement from '../../elements/nces/SwaggerTags'; +import { getNodeType } from '../../traversal/visitor'; + +/** + * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs + * with empty key, empty value, or both. If the value is not provided in YAML format, + * this plugin compensates for this missing value with the most appropriate semantic element type. + * + * https://yaml.org/spec/1.2.2/#72-empty-nodes + * + * @example + * + * ```yaml + * swagger: "2.0" + * info: + * ``` + * Refracting result without this plugin: + * + * (SwaggerElement + * (MemberElement + * (StringElement) + * (SwaggerVersionElement)) + * (MemberElement + * (StringElement) + * (StringElement)) + * + * Refracting result with this plugin: + * + * (SwaggerElement + * (MemberElement + * (StringElement) + * (SwaggerVersionElement)) + * (MemberElement + * (StringElement) + * (InfoElement)) + */ + +const isEmptyElement = (element: unknown) => + isStringElement(element) && includesClasses(['yaml-e-node', 'yaml-e-scalar'], element); + +const schema = { + // concrete types handling (CTs) + SwaggerElement: { + info(...args: any[]) { + return new InfoElement(...args); + }, + schemes(...args: any[]) { + return new SwaggerSchemesElement(...args); + }, + consumes(...args: any[]) { + return new SwaggerConsumesElement(...args); + }, + produces(...args: any[]) { + return new SwaggerProducesElement(...args); + }, + paths(...args: any[]) { + return new PathsElement(...args); + }, + definitions(...args: any[]) { + return new DefinitionsElement(...args); + }, + parameters(...args: any[]) { + return new ParametersDefinitionsElement(...args); + }, + responses(...args: any[]) { + return new ResponsesDefinitionsElement(...args); + }, + securityDefinitions(...args: any[]) { + return new SecurityDefinitionsElement(...args); + }, + security(...args: any[]) { + return new SwaggerSecurityElement(...args); + }, + tags(...args: any[]) { + return new SwaggerTagsElement(...args); + }, + externalDocs(...args: any[]) { + return new ExternalDocumentationElement(...args); + }, + }, + InfoElement: { + contact(...args: any[]) { + return new ContactElement(...args); + }, + license(...args: any[]) { + return new LicenseElement(...args); + }, + }, + PathsElement: { + '[key: *]': function key(...args: any[]) { + return new PathItemElement(...args); + }, + }, + PathItemElement: { + get(...args: any[]) { + return new OperationElement(...args); + }, + put(...args: any[]) { + return new OperationElement(...args); + }, + post(...args: any[]) { + return new OperationElement(...args); + }, + delete(...args: any[]) { + return new OperationElement(...args); + }, + options(...args: any[]) { + return new OperationElement(...args); + }, + head(...args: any[]) { + return new OperationElement(...args); + }, + patch(...args: any[]) { + return new OperationElement(...args); + }, + parameters(...args: any[]) { + return new PathItemParametersElement(...args); + }, + }, + OperationElement: { + tags(...args: any[]) { + return new OperationTagsElement(...args); + }, + externalDocs(...args: any[]) { + return new ExternalDocumentationElement(...args); + }, + consumes(...args: any[]) { + return new OperationConsumesElement(...args); + }, + produces(...args: any[]) { + return new OperationProducesElement(...args); + }, + parameters(...args: any[]) { + return new OperationParametersElement(...args); + }, + responses(...args: any[]) { + return new ResponsesElement(...args); + }, + schemes(...args: any[]) { + return new OperationSchemesElement(...args); + }, + security(...args: any[]) { + return new OperationSecurityElement(...args); + }, + }, + ParameterElement: { + schema(...args: any[]) { + return new SchemaElement(...args); + }, + items(...args: any[]) { + return new ItemsElement(...args); + }, + }, + ItemsElement: { + items(...args: any[]) { + return new ItemsElement(...args); + }, + }, + ResponsesElement: { + '[key: *]': function key(...args: any[]) { + return new ResponseElement(...args); + }, + }, + ResponseElement: { + schema(...args: any[]) { + return new SchemaElement(...args); + }, + headers(...args: any[]) { + return new HeadersElement(...args); + }, + examples(...args: any[]) { + return new ExampleElement(...args); + }, + }, + HeadersElement: { + '[key: *]': function key(...args: any[]) { + return new HeaderElement(...args); + }, + }, + HeaderElement: { + items(...args: any[]) { + return new ItemsElement(...args); + }, + }, + TagElement: { + externalDocs(...args: any[]) { + return new ExternalDocumentationElement(...args); + }, + }, + SchemaElement: { + items(...args: any[]) { + return new SchemaElement(...args); + }, + allOf(...args: any[]) { + const element = new ArrayElement(...args); + element.classes.push('json-schema-allOf'); + return element; + }, + properties(...args: any[]) { + const element = new ObjectElement(...args); + element.classes.push('json-schema-properties'); + return element; + }, + additionalProperties(...args: any[]) { + return new SchemaElement(...args); + }, + xml(...args: any[]) { + return new XmlElement(...args); + }, + externalDocs(...args: any[]) { + return new ExternalDocumentationElement(...args); + }, + }, + DefinitionsElement: { + '[key: *]': function key(...args: any[]) { + return new SchemaElement(...args); + }, + }, + ParametersDefinitionsElement: { + '[key: *]': function key(...args: any[]) { + return new ParameterElement(...args); + }, + }, + ResponsesDefinitionsElement: { + '[key: *]': function key(...args: any[]) { + return new ResponseElement(...args); + }, + }, + SecurityDefinitionsElement: { + '[key: *]': function key(...args: any[]) { + return new SecuritySchemeElement(...args); + }, + }, + SecuritySchemeElement: { + scopes(...args: any[]) { + return new ScopesElement(...args); + }, + }, + SecurityRequirementElement: { + '[key: *]': function key(...args: any[]) { + return new ArrayElement(...args); + }, + }, + // non-concrete types handling (NCEs) + [OperationParametersElement.primaryClass]: { + '<*>': function asterisk(...args: any[]) { + return new ParameterElement(...args); + }, + }, + [OperationSecurityElement.primaryClass]: { + '<*>': function asterisk(...args: any[]) { + return new SecurityRequirementElement(...args); + }, + }, + [PathItemParametersElement.primaryClass]: { + '<*>': function asterisk(...args: any[]) { + return new ParameterElement(...args); + }, + }, + [SwaggerSecurityElement.primaryClass]: { + '<*>': function asterisk(...args: any[]) { + return new SecurityRequirementElement(...args); + }, + }, + [SwaggerTagsElement.primaryClass]: { + '<*>': function asterisk(...args: any[]) { + return new TagElement(...args); + }, + }, + 'json-schema-properties': { + '[key: *]': function key(...args: any[]) { + return new SchemaElement(...args); + }, + }, + 'json-schema-allOf': { + '<*>': function asterisk(...args: any[]) { + return new SchemaElement(...args); + }, + }, +}; + +const findElementFactory = (ancestor: any, keyName: string) => { + const elementType = getNodeType(ancestor); // @ts-ignore + const keyMapping = schema[elementType] || schema[toValue(ancestor.classes.first)]; + + return typeof keyMapping === 'undefined' + ? undefined + : Object.prototype.hasOwnProperty.call(keyMapping, '[key: *]') + ? keyMapping['[key: *]'] + : keyMapping[keyName]; +}; + +const plugin = () => () => { + return { + visitor: { + MemberElement(element: MemberElement, ...rest: any) { + // no empty Element, continue with next one + if (!isEmptyElement(element.value)) return undefined; + + const [, , , ancestors] = rest; + const ancestor = ancestors.at(-1); + const elementFactory = findElementFactory(ancestor, toValue(element.key)); + + // no element factory found + if (typeof elementFactory === 'undefined') return undefined; + + const originalValue = element.value as StringElement; + + return new MemberElement( + element.key, + elementFactory.call( + { context: ancestor }, + undefined, + cloneDeep(originalValue.meta), + cloneDeep(originalValue.attributes), + ), + cloneDeep(element.meta), + cloneDeep(element.attributes), + ); + }, + + StringElement(element: StringElement, ...rest: any) { + if (!isEmptyElement(element)) return undefined; + + const [, , , ancestors] = rest; + const ancestor = ancestors.at(-1); + + // we're only interested in empty elements in ArrayElements + if (!isArrayElement(ancestor)) return undefined; + + const elementFactory = findElementFactory(ancestor, '<*>'); + + // no element factory found + if (typeof elementFactory === 'undefined') return undefined; + + return elementFactory.call( + { context: element }, + undefined, + cloneDeep(element.meta), + cloneDeep(element.attributes), + ); + }, + }, + }; +}; + +export default plugin; diff --git a/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/mappings.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/mappings.ts.snap new file mode 100644 index 0000000000..69cd0911ab --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/mappings.ts.snap @@ -0,0 +1,85 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`given OpenAPI definition with no empty values should do nothing 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (InfoElement))) +`; + +exports[`given empty value instead for Operation.parameters should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (PathsElement + (MemberElement + (StringElement) + (PathItemElement + (MemberElement + (StringElement) + (OperationElement + (MemberElement + (StringElement) + (ArrayElement))))))))) +`; + +exports[`given empty value instead for Schema.properties.* should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (DefinitionsElement + (MemberElement + (StringElement) + (SchemaElement + (MemberElement + (StringElement) + (ObjectElement + (MemberElement + (StringElement) + (SchemaElement))))))))) +`; + +exports[`given empty value instead for Swagger.definitions.Schema1 should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (DefinitionsElement + (MemberElement + (StringElement) + (SchemaElement))))) +`; + +exports[`given empty value instead of ContactElement should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (InfoElement + (MemberElement + (StringElement) + (ContactElement))))) +`; + +exports[`given empty value instead of InfoElement should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (InfoElement))) +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/sequences.ts.snap b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/sequences.ts.snap new file mode 100644 index 0000000000..5a6bfa96e5 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/sequences.ts.snap @@ -0,0 +1,58 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`given empty value instead of SecurityRequirementElement should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (ArrayElement + (SecurityRequirementElement)))) +`; + +exports[`given empty value instead of TagElement should replace empty value with semantic element 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (ArrayElement + (TagElement)))) +`; + +exports[`given empty values instead of SchemaElement for allOf keyword should replace empty values with semantic elements 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (DefinitionsElement + (MemberElement + (StringElement) + (SchemaElement + (MemberElement + (StringElement) + (ArrayElement + (SchemaElement)))))))) +`; + +exports[`given multiple empty values instead of ParameterElement should replace empty values with semantic elements 1`] = ` +(SwaggerElement + (MemberElement + (StringElement) + (SwaggerVersionElement)) + (MemberElement + (StringElement) + (PathsElement + (MemberElement + (StringElement) + (PathItemElement + (MemberElement + (StringElement) + (ArrayElement + (ParameterElement) + (ParameterElement)))))))) +`; diff --git a/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/mappings.ts b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/mappings.ts new file mode 100644 index 0000000000..0b869341f3 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/mappings.ts @@ -0,0 +1,132 @@ +import { expect } from 'chai'; +import dedent from 'dedent'; +import { sexprs, SourceMapElement } from '@swagger-api/apidom-core'; +import { parse } from '@swagger-api/apidom-parser-adapter-yaml-1-2'; + +import { refractorPluginReplaceEmptyElement, SwaggerElement } from '../../../../src'; + +describe('given empty value instead of InfoElement', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + info: + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given empty value instead of ContactElement', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + info: + contact: + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given empty value instead for Operation.parameters', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + paths: + /path: + get: + parameters: + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }) as SwaggerElement; + const isOperationParameters = swaggerElement + .get('paths') + .get('/path') + .get('get') + .get('parameters') + .classes.includes('operation-parameters'); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + expect(isOperationParameters).to.be.true; + }); +}); + +describe('given empty value instead for Swagger.definitions.Schema1', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + definitions: + Schema1: + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }) as SwaggerElement; + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given empty value instead for Schema.properties.*', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + definitions: + User: + properties: + firstName: + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }) as SwaggerElement; + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given OpenAPI definition with no empty values', function () { + it('should do nothing', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + info: {} + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }) as SwaggerElement; + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given OpenAPI definition with empty values', function () { + it('should generate proper source maps', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + info: + `; + const apiDOM = await parse(yamlDefinition, { sourceMap: true }); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }) as SwaggerElement; + const { info: infoValue } = swaggerElement; + const sourceMap = infoValue?.meta.get('sourceMap'); + const { positionStart, positionEnd } = sourceMap; + const expectedPosition = [1, 5, 20]; + + expect(infoValue?.meta.get('sourceMap')).to.be.an.instanceof(SourceMapElement); + expect(positionStart.equals(expectedPosition)).to.be.true; + expect(positionEnd.equals(expectedPosition)).to.be.true; + }); +}); diff --git a/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/sequences.ts b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/sequences.ts new file mode 100644 index 0000000000..8dd20a2498 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/refractor/plugins/replace-empty-element/sequences.ts @@ -0,0 +1,76 @@ +import { expect } from 'chai'; +import dedent from 'dedent'; +import { sexprs } from '@swagger-api/apidom-core'; +import { parse } from '@swagger-api/apidom-parser-adapter-yaml-1-2'; + +import { refractorPluginReplaceEmptyElement, SwaggerElement } from '../../../../src'; + +describe('given empty value instead of SecurityRequirementElement', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + security: + - + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given empty value instead of TagElement', function () { + it('should replace empty value with semantic element', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + tags: + - + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given multiple empty values instead of ParameterElement', function () { + it('should replace empty values with semantic elements', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + paths: + /path: + parameters: + - + - + + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); + +describe('given empty values instead of SchemaElement for allOf keyword', function () { + it('should replace empty values with semantic elements', async function () { + const yamlDefinition = dedent` + swagger: "2.0" + definitions: + Schema1: + allOf: + - + `; + const apiDOM = await parse(yamlDefinition); + const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], + }); + + expect(sexprs(swaggerElement)).toMatchSnapshot(); + }); +}); From 8f93ee46d79e57833709f548fa6634f7e62d0aec Mon Sep 17 00:00:00 2001 From: swagger-bot Date: Tue, 24 Oct 2023 17:48:03 +0000 Subject: [PATCH 14/19] chore(release): cut the v0.79.0 release [skip ci] --- CHANGELOG.md | 20 ++ lerna.json | 2 +- package-lock.json | 254 +++++++++--------- packages/apidom-ast/CHANGELOG.md | 4 + packages/apidom-ast/package.json | 4 +- packages/apidom-core/CHANGELOG.md | 6 + packages/apidom-core/package.json | 6 +- packages/apidom-error/CHANGELOG.md | 4 + packages/apidom-error/package.json | 2 +- packages/apidom-json-path/CHANGELOG.md | 4 + packages/apidom-json-path/package.json | 8 +- .../apidom-json-pointer-relative/CHANGELOG.md | 4 + .../apidom-json-pointer-relative/package.json | 8 +- packages/apidom-json-pointer/CHANGELOG.md | 4 + packages/apidom-json-pointer/package.json | 6 +- packages/apidom-ls/CHANGELOG.md | 4 + packages/apidom-ls/package.json | 40 +-- .../apidom-ns-api-design-systems/CHANGELOG.md | 6 + .../apidom-ns-api-design-systems/package.json | 8 +- packages/apidom-ns-asyncapi-2/CHANGELOG.md | 6 + packages/apidom-ns-asyncapi-2/package.json | 6 +- .../CHANGELOG.md | 6 + .../package.json | 6 +- .../CHANGELOG.md | 6 + .../package.json | 8 +- .../CHANGELOG.md | 6 + .../package.json | 8 +- packages/apidom-ns-openapi-2/CHANGELOG.md | 24 ++ packages/apidom-ns-openapi-2/package.json | 8 +- packages/apidom-ns-openapi-3-0/CHANGELOG.md | 6 + packages/apidom-ns-openapi-3-0/package.json | 8 +- packages/apidom-ns-openapi-3-1/CHANGELOG.md | 6 + packages/apidom-ns-openapi-3-1/package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../apidom-parser-adapter-json/CHANGELOG.md | 4 + .../apidom-parser-adapter-json/package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- .../CHANGELOG.md | 4 + .../package.json | 8 +- packages/apidom-parser/CHANGELOG.md | 4 + packages/apidom-parser/package.json | 6 +- packages/apidom-reference/CHANGELOG.md | 6 + packages/apidom-reference/package.json | 34 +-- 57 files changed, 421 insertions(+), 255 deletions(-) create mode 100644 packages/apidom-ns-openapi-2/CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cdf07e536..afc005773e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Bug Fixes + +- **ns-openapi-2:** add support for JSONReferenceElement ([#3283](https://github.com/swagger-api/apidom/issues/3283)) ([b6e6d59](https://github.com/swagger-api/apidom/commit/b6e6d594efca0e102597790cdc89849b6803b1de)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) + +### Features + +- **ns-openapi-2:** add replace empty elements refractor plugin ([#3315](https://github.com/swagger-api/apidom/issues/3315)) ([ade3a67](https://github.com/swagger-api/apidom/commit/ade3a67f18a6f4aa3aa69cea0537482e1a15cfdb)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Definitions Object ([#3292](https://github.com/swagger-api/apidom/issues/3292)) ([2d5ac83](https://github.com/swagger-api/apidom/commit/2d5ac83c8407d7f4cfc31ada40a22c37b282c669)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Operation Object ([#3305](https://github.com/swagger-api/apidom/issues/3305)) ([4770077](https://github.com/swagger-api/apidom/commit/4770077d09cc094cbf53ff036c7b97f2b136273b)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Parameters Definitions Object ([#3291](https://github.com/swagger-api/apidom/issues/3291)) ([21a237c](https://github.com/swagger-api/apidom/commit/21a237cc7de6857c256f3b6b2934e67efa028603)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for PathItem Object ([#3307](https://github.com/swagger-api/apidom/issues/3307)) ([9ad49be](https://github.com/swagger-api/apidom/commit/9ad49be86672170ab1cf5c148f01de84647599ea)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Response Object ([#3293](https://github.com/swagger-api/apidom/issues/3293)) ([006ec69](https://github.com/swagger-api/apidom/commit/006ec698f77536cd1191a200653701d2edab6aef)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Responses Definitions Object ([#3294](https://github.com/swagger-api/apidom/issues/3294)) ([51b15fe](https://github.com/swagger-api/apidom/commit/51b15fe0d7460cd55737cc29b5fa49f3a1c82b67)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Responses Object ([#3295](https://github.com/swagger-api/apidom/issues/3295)) ([d8ea760](https://github.com/swagger-api/apidom/commit/d8ea76006089e2ef54cc910983fe546d09ddb59e)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Swagger Object ([#3313](https://github.com/swagger-api/apidom/issues/3313)) ([81a0361](https://github.com/swagger-api/apidom/commit/81a036161f133eed144897de4119d31d20a089a1)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openpai-2:** add support for Paths Object ([#3312](https://github.com/swagger-api/apidom/issues/3312)) ([a3db4c2](https://github.com/swagger-api/apidom/commit/a3db4c2555e9b1ac95ee3b6836c8e7c6203cda61)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/lerna.json b/lerna.json index c62107ec47..49fcb0cc02 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,7 @@ { "packages": ["packages/*"], "npmClient": "npm", - "version": "0.78.0", + "version": "0.79.0", "changelogPreset": "angular", "command": { "bootstrap": { diff --git a/package-lock.json b/package-lock.json index a1b6f3d097..c5edf814c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32298,11 +32298,11 @@ }, "packages/apidom-ast": { "name": "@swagger-api/apidom-ast", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32312,12 +32312,12 @@ }, "packages/apidom-core": { "name": "@swagger-api/apidom-core", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "minim": "~0.23.8", "ramda": "~0.29.0", @@ -32328,7 +32328,7 @@ }, "packages/apidom-error": { "name": "@swagger-api/apidom-error", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", @@ -32339,24 +32339,24 @@ }, "packages/apidom-json-path": { "name": "@swagger-api/apidom-json-path", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", "jsonpath-plus": "^7.2.0" } }, "packages/apidom-json-pointer": { "name": "@swagger-api/apidom-json-pointer", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32364,13 +32364,13 @@ }, "packages/apidom-json-pointer-relative": { "name": "@swagger-api/apidom-json-pointer-relative", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32398,29 +32398,29 @@ }, "packages/apidom-ls": { "name": "@swagger-api/apidom-ls", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-json-path": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", - "@swagger-api/apidom-reference": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-json-path": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", + "@swagger-api/apidom-reference": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32438,13 +32438,13 @@ }, "packages/apidom-ns-api-design-systems": { "name": "@swagger-api/apidom-ns-api-design-systems", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32453,12 +32453,12 @@ }, "packages/apidom-ns-asyncapi-2": { "name": "@swagger-api/apidom-ns-asyncapi-2", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-7": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32467,12 +32467,12 @@ }, "packages/apidom-ns-json-schema-draft-4": { "name": "@swagger-api/apidom-ns-json-schema-draft-4", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32481,13 +32481,13 @@ }, "packages/apidom-ns-json-schema-draft-6": { "name": "@swagger-api/apidom-ns-json-schema-draft-6", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32496,13 +32496,13 @@ }, "packages/apidom-ns-json-schema-draft-7": { "name": "@swagger-api/apidom-ns-json-schema-draft-7", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-6": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32511,13 +32511,13 @@ }, "packages/apidom-ns-openapi-2": { "name": "@swagger-api/apidom-ns-openapi-2", - "version": "0.77.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32526,13 +32526,13 @@ }, "packages/apidom-ns-openapi-3-0": { "name": "@swagger-api/apidom-ns-openapi-3-0", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32541,13 +32541,13 @@ }, "packages/apidom-ns-openapi-3-1": { "name": "@swagger-api/apidom-ns-openapi-3-1", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32569,12 +32569,12 @@ }, "packages/apidom-parser": { "name": "@swagger-api/apidom-parser", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32583,13 +32583,13 @@ }, "packages/apidom-parser-adapter-api-design-systems-json": { "name": "@swagger-api/apidom-parser-adapter-api-design-systems-json", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32597,13 +32597,13 @@ }, "packages/apidom-parser-adapter-api-design-systems-yaml": { "name": "@swagger-api/apidom-parser-adapter-api-design-systems-yaml", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32611,13 +32611,13 @@ }, "packages/apidom-parser-adapter-asyncapi-json-2": { "name": "@swagger-api/apidom-parser-adapter-asyncapi-json-2", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32625,13 +32625,13 @@ }, "packages/apidom-parser-adapter-asyncapi-yaml-2": { "name": "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32639,13 +32639,13 @@ }, "packages/apidom-parser-adapter-json": { "name": "@swagger-api/apidom-parser-adapter-json", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -32660,13 +32660,13 @@ }, "packages/apidom-parser-adapter-openapi-json-3-0": { "name": "@swagger-api/apidom-parser-adapter-openapi-json-3-0", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32674,13 +32674,13 @@ }, "packages/apidom-parser-adapter-openapi-json-3-1": { "name": "@swagger-api/apidom-parser-adapter-openapi-json-3-1", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32688,13 +32688,13 @@ }, "packages/apidom-parser-adapter-openapi-yaml-3-0": { "name": "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32702,13 +32702,13 @@ }, "packages/apidom-parser-adapter-openapi-yaml-3-1": { "name": "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" @@ -32716,13 +32716,13 @@ }, "packages/apidom-parser-adapter-yaml-1-2": { "name": "@swagger-api/apidom-parser-adapter-yaml-1-2", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", @@ -33117,11 +33117,11 @@ }, "packages/apidom-reference": { "name": "@swagger-api/apidom-reference", - "version": "0.78.0", + "version": "0.79.0", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", "@types/ramda": "~0.29.6", "axios": "^1.4.0", "minimatch": "^7.4.3", @@ -33148,21 +33148,21 @@ "axios-mock-adapter": "^1.21.4" }, "optionalDependencies": { - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0" + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0" } }, "packages/apidom-reference/node_modules/brace-expansion": { diff --git a/packages/apidom-ast/CHANGELOG.md b/packages/apidom-ast/CHANGELOG.md index 1e60cb7e8b..b7db9d28f1 100644 --- a/packages/apidom-ast/CHANGELOG.md +++ b/packages/apidom-ast/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-ast + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ast/package.json b/packages/apidom-ast/package.json index 57fb40542a..ddea2d27af 100644 --- a/packages/apidom-ast/package.json +++ b/packages/apidom-ast/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ast", - "version": "0.78.0", + "version": "0.79.0", "description": "Tools necessary for parsing stage of ApiDOM, specifically for syntactic analysis.", "publishConfig": { "access": "public", @@ -42,7 +42,7 @@ "homepage": "https://github.com/swagger-api/apidom#readme", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-core/CHANGELOG.md b/packages/apidom-core/CHANGELOG.md index 4e120d8d60..a295ccd9e5 100644 --- a/packages/apidom-core/CHANGELOG.md +++ b/packages/apidom-core/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-core/package.json b/packages/apidom-core/package.json index d254864425..321dce1758 100644 --- a/packages/apidom-core/package.json +++ b/packages/apidom-core/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-core", - "version": "0.78.0", + "version": "0.79.0", "description": "Tools for manipulating ApiDOM structures.", "publishConfig": { "access": "public", @@ -42,8 +42,8 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "minim": "~0.23.8", "ramda": "~0.29.0", diff --git a/packages/apidom-error/CHANGELOG.md b/packages/apidom-error/CHANGELOG.md index b65f5faf03..1677fbdb5c 100644 --- a/packages/apidom-error/CHANGELOG.md +++ b/packages/apidom-error/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-error + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-error/package.json b/packages/apidom-error/package.json index 7dbd57ea49..d87e3cc8f0 100644 --- a/packages/apidom-error/package.json +++ b/packages/apidom-error/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-error", - "version": "0.78.0", + "version": "0.79.0", "description": "Backward compatible custom ApiDOM errors with causes.", "publishConfig": { "access": "public", diff --git a/packages/apidom-json-path/CHANGELOG.md b/packages/apidom-json-path/CHANGELOG.md index 83588ff288..9cc719caf6 100644 --- a/packages/apidom-json-path/CHANGELOG.md +++ b/packages/apidom-json-path/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-json-path + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) **Note:** Version bump only for package @swagger-api/apidom-json-path diff --git a/packages/apidom-json-path/package.json b/packages/apidom-json-path/package.json index dcf8e4ee22..3b06363f1c 100644 --- a/packages/apidom-json-path/package.json +++ b/packages/apidom-json-path/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-json-path", - "version": "0.78.0", + "version": "0.79.0", "description": "Evaluate JSONPath expressions against ApiDOM.", "publishConfig": { "access": "public", @@ -38,9 +38,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", "jsonpath-plus": "^7.2.0" }, "files": [ diff --git a/packages/apidom-json-pointer-relative/CHANGELOG.md b/packages/apidom-json-pointer-relative/CHANGELOG.md index 50cd9c9025..fde68fdf8e 100644 --- a/packages/apidom-json-pointer-relative/CHANGELOG.md +++ b/packages/apidom-json-pointer-relative/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-json-pointer-relative + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-json-pointer-relative/package.json b/packages/apidom-json-pointer-relative/package.json index 3c66f942c2..f6d5993149 100644 --- a/packages/apidom-json-pointer-relative/package.json +++ b/packages/apidom-json-pointer-relative/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-json-pointer-relative", - "version": "0.78.0", + "version": "0.79.0", "description": "Evaluate Relative JSON Pointer expressions against ApiDOM.", "publishConfig": { "access": "public", @@ -38,9 +38,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-json-pointer/CHANGELOG.md b/packages/apidom-json-pointer/CHANGELOG.md index 3fac6f579f..cae65dc9fc 100644 --- a/packages/apidom-json-pointer/CHANGELOG.md +++ b/packages/apidom-json-pointer/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-json-pointer + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-json-pointer/package.json b/packages/apidom-json-pointer/package.json index 2ff932386e..20b0de738b 100644 --- a/packages/apidom-json-pointer/package.json +++ b/packages/apidom-json-pointer/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-json-pointer", - "version": "0.78.0", + "version": "0.79.0", "description": "Evaluate JSON Pointer expressions against ApiDOM.", "publishConfig": { "access": "public", @@ -38,8 +38,8 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-ls/CHANGELOG.md b/packages/apidom-ls/CHANGELOG.md index 3006459c3c..08ddcb19de 100644 --- a/packages/apidom-ls/CHANGELOG.md +++ b/packages/apidom-ls/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-ls + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ls/package.json b/packages/apidom-ls/package.json index 53e1bfc05d..c82eb6285a 100644 --- a/packages/apidom-ls/package.json +++ b/packages/apidom-ls/package.json @@ -1,7 +1,7 @@ { "name": "@swagger-api/apidom-ls", "description": "ApiDOM based language service library.", - "version": "0.78.0", + "version": "0.79.0", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -93,25 +93,25 @@ }, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-json-path": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", - "@swagger-api/apidom-reference": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-json-path": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", + "@swagger-api/apidom-reference": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-api-design-systems/CHANGELOG.md b/packages/apidom-ns-api-design-systems/CHANGELOG.md index 270e6d0a6a..a1d8b31558 100644 --- a/packages/apidom-ns-api-design-systems/CHANGELOG.md +++ b/packages/apidom-ns-api-design-systems/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-api-design-systems/package.json b/packages/apidom-ns-api-design-systems/package.json index a7fa4def89..8150ca710f 100644 --- a/packages/apidom-ns-api-design-systems/package.json +++ b/packages/apidom-ns-api-design-systems/package.json @@ -1,7 +1,7 @@ { "name": "@swagger-api/apidom-ns-api-design-systems", "description": "API Design Systems 2021-05-07 namespace for ApiDOM.", - "version": "0.78.0", + "version": "0.79.0", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -42,9 +42,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-asyncapi-2/CHANGELOG.md b/packages/apidom-ns-asyncapi-2/CHANGELOG.md index 1cfdbc7671..37e8f66e09 100644 --- a/packages/apidom-ns-asyncapi-2/CHANGELOG.md +++ b/packages/apidom-ns-asyncapi-2/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-asyncapi-2/package.json b/packages/apidom-ns-asyncapi-2/package.json index a10bd1cd77..5eee898277 100644 --- a/packages/apidom-ns-asyncapi-2/package.json +++ b/packages/apidom-ns-asyncapi-2/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-asyncapi-2", - "version": "0.78.0", + "version": "0.79.0", "description": "AsyncAPI 2.x.y namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -44,8 +44,8 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-7": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-json-schema-draft-4/CHANGELOG.md b/packages/apidom-ns-json-schema-draft-4/CHANGELOG.md index 32ca61c172..8c6bb6cdfa 100644 --- a/packages/apidom-ns-json-schema-draft-4/CHANGELOG.md +++ b/packages/apidom-ns-json-schema-draft-4/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-json-schema-draft-4/package.json b/packages/apidom-ns-json-schema-draft-4/package.json index cbfe9a4198..cae6d43326 100644 --- a/packages/apidom-ns-json-schema-draft-4/package.json +++ b/packages/apidom-ns-json-schema-draft-4/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-json-schema-draft-4", - "version": "0.78.0", + "version": "0.79.0", "description": "JSON Schema Draft 4 namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -42,8 +42,8 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-json-schema-draft-6/CHANGELOG.md b/packages/apidom-ns-json-schema-draft-6/CHANGELOG.md index 5439ece76e..2dd7d5db51 100644 --- a/packages/apidom-ns-json-schema-draft-6/CHANGELOG.md +++ b/packages/apidom-ns-json-schema-draft-6/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-json-schema-draft-6/package.json b/packages/apidom-ns-json-schema-draft-6/package.json index ed0e7026af..41d0392382 100644 --- a/packages/apidom-ns-json-schema-draft-6/package.json +++ b/packages/apidom-ns-json-schema-draft-6/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-json-schema-draft-6", - "version": "0.78.0", + "version": "0.79.0", "description": "JSON Schema Draft 6 namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -42,9 +42,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-json-schema-draft-7/CHANGELOG.md b/packages/apidom-ns-json-schema-draft-7/CHANGELOG.md index 6660975894..9f333a1612 100644 --- a/packages/apidom-ns-json-schema-draft-7/CHANGELOG.md +++ b/packages/apidom-ns-json-schema-draft-7/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-json-schema-draft-7/package.json b/packages/apidom-ns-json-schema-draft-7/package.json index b41c5ab45c..7e504bffa4 100644 --- a/packages/apidom-ns-json-schema-draft-7/package.json +++ b/packages/apidom-ns-json-schema-draft-7/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-json-schema-draft-7", - "version": "0.78.0", + "version": "0.79.0", "description": "JSON Schema Draft 7 namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -42,9 +42,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-6": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-openapi-2/CHANGELOG.md b/packages/apidom-ns-openapi-2/CHANGELOG.md new file mode 100644 index 0000000000..68ae61b848 --- /dev/null +++ b/packages/apidom-ns-openapi-2/CHANGELOG.md @@ -0,0 +1,24 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Bug Fixes + +- **ns-openapi-2:** add support for JSONReferenceElement ([#3283](https://github.com/swagger-api/apidom/issues/3283)) ([b6e6d59](https://github.com/swagger-api/apidom/commit/b6e6d594efca0e102597790cdc89849b6803b1de)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) + +### Features + +- **ns-openapi-2:** add replace empty elements refractor plugin ([#3315](https://github.com/swagger-api/apidom/issues/3315)) ([ade3a67](https://github.com/swagger-api/apidom/commit/ade3a67f18a6f4aa3aa69cea0537482e1a15cfdb)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Definitions Object ([#3292](https://github.com/swagger-api/apidom/issues/3292)) ([2d5ac83](https://github.com/swagger-api/apidom/commit/2d5ac83c8407d7f4cfc31ada40a22c37b282c669)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Operation Object ([#3305](https://github.com/swagger-api/apidom/issues/3305)) ([4770077](https://github.com/swagger-api/apidom/commit/4770077d09cc094cbf53ff036c7b97f2b136273b)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Parameters Definitions Object ([#3291](https://github.com/swagger-api/apidom/issues/3291)) ([21a237c](https://github.com/swagger-api/apidom/commit/21a237cc7de6857c256f3b6b2934e67efa028603)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for PathItem Object ([#3307](https://github.com/swagger-api/apidom/issues/3307)) ([9ad49be](https://github.com/swagger-api/apidom/commit/9ad49be86672170ab1cf5c148f01de84647599ea)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Response Object ([#3293](https://github.com/swagger-api/apidom/issues/3293)) ([006ec69](https://github.com/swagger-api/apidom/commit/006ec698f77536cd1191a200653701d2edab6aef)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Responses Definitions Object ([#3294](https://github.com/swagger-api/apidom/issues/3294)) ([51b15fe](https://github.com/swagger-api/apidom/commit/51b15fe0d7460cd55737cc29b5fa49f3a1c82b67)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Responses Object ([#3295](https://github.com/swagger-api/apidom/issues/3295)) ([d8ea760](https://github.com/swagger-api/apidom/commit/d8ea76006089e2ef54cc910983fe546d09ddb59e)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openapi-2:** add support for Swagger Object ([#3313](https://github.com/swagger-api/apidom/issues/3313)) ([81a0361](https://github.com/swagger-api/apidom/commit/81a036161f133eed144897de4119d31d20a089a1)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **ns-openpai-2:** add support for Paths Object ([#3312](https://github.com/swagger-api/apidom/issues/3312)) ([a3db4c2](https://github.com/swagger-api/apidom/commit/a3db4c2555e9b1ac95ee3b6836c8e7c6203cda61)), closes [#3097](https://github.com/swagger-api/apidom/issues/3097) +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) diff --git a/packages/apidom-ns-openapi-2/package.json b/packages/apidom-ns-openapi-2/package.json index 8cfcc93f8f..8be5b1e6fd 100644 --- a/packages/apidom-ns-openapi-2/package.json +++ b/packages/apidom-ns-openapi-2/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-openapi-2", - "version": "0.77.0", + "version": "0.79.0", "description": "OpenAPI 2.0 namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -42,9 +42,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-openapi-3-0/CHANGELOG.md b/packages/apidom-ns-openapi-3-0/CHANGELOG.md index 2741270c5f..2210ef1fe1 100644 --- a/packages/apidom-ns-openapi-3-0/CHANGELOG.md +++ b/packages/apidom-ns-openapi-3-0/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-openapi-3-0/package.json b/packages/apidom-ns-openapi-3-0/package.json index a0a168311b..1e12c504ef 100644 --- a/packages/apidom-ns-openapi-3-0/package.json +++ b/packages/apidom-ns-openapi-3-0/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-openapi-3-0", - "version": "0.78.0", + "version": "0.79.0", "description": "OpenAPI 3.0.x namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -42,9 +42,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-ns-openapi-3-1/CHANGELOG.md b/packages/apidom-ns-openapi-3-1/CHANGELOG.md index 4e68a91552..0a99e550a1 100644 --- a/packages/apidom-ns-openapi-3-1/CHANGELOG.md +++ b/packages/apidom-ns-openapi-3-1/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-ns-openapi-3-1/package.json b/packages/apidom-ns-openapi-3-1/package.json index 57ae566f64..368d091851 100644 --- a/packages/apidom-ns-openapi-3-1/package.json +++ b/packages/apidom-ns-openapi-3-1/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-ns-openapi-3-1", - "version": "0.78.0", + "version": "0.79.0", "description": "OpenAPI 3.1.x namespace for ApiDOM.", "publishConfig": { "access": "public", @@ -45,9 +45,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-parser-adapter-api-design-systems-json/CHANGELOG.md b/packages/apidom-parser-adapter-api-design-systems-json/CHANGELOG.md index 3d1817d205..623df3876b 100644 --- a/packages/apidom-parser-adapter-api-design-systems-json/CHANGELOG.md +++ b/packages/apidom-parser-adapter-api-design-systems-json/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-api-design-systems-json + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-api-design-systems-json/package.json b/packages/apidom-parser-adapter-api-design-systems-json/package.json index 5f79f01942..37651b2d34 100644 --- a/packages/apidom-parser-adapter-api-design-systems-json/package.json +++ b/packages/apidom-parser-adapter-api-design-systems-json/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-api-design-systems-json", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing JSON documents into API Design Systems namespace.", "publishConfig": { "access": "public", @@ -38,9 +38,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-api-design-systems-yaml/CHANGELOG.md b/packages/apidom-parser-adapter-api-design-systems-yaml/CHANGELOG.md index 030a4a1fe9..dc6eec6f2e 100644 --- a/packages/apidom-parser-adapter-api-design-systems-yaml/CHANGELOG.md +++ b/packages/apidom-parser-adapter-api-design-systems-yaml/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-api-design-systems-yaml + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-api-design-systems-yaml/package.json b/packages/apidom-parser-adapter-api-design-systems-yaml/package.json index 95d9756db4..69c2ea0a2d 100644 --- a/packages/apidom-parser-adapter-api-design-systems-yaml/package.json +++ b/packages/apidom-parser-adapter-api-design-systems-yaml/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-api-design-systems-yaml", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing YAML documents into API Design Systems namespace.", "publishConfig": { "access": "public", @@ -38,9 +38,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-asyncapi-json-2/CHANGELOG.md b/packages/apidom-parser-adapter-asyncapi-json-2/CHANGELOG.md index d51cd561ce..4b724114b7 100644 --- a/packages/apidom-parser-adapter-asyncapi-json-2/CHANGELOG.md +++ b/packages/apidom-parser-adapter-asyncapi-json-2/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-asyncapi-json-2 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-asyncapi-json-2/package.json b/packages/apidom-parser-adapter-asyncapi-json-2/package.json index 596c23776f..a9a8a0eb97 100644 --- a/packages/apidom-parser-adapter-asyncapi-json-2/package.json +++ b/packages/apidom-parser-adapter-asyncapi-json-2/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-asyncapi-json-2", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing JSON documents into AsyncAPI 2.x.y namespace.", "publishConfig": { "access": "public", @@ -43,9 +43,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-asyncapi-yaml-2/CHANGELOG.md b/packages/apidom-parser-adapter-asyncapi-yaml-2/CHANGELOG.md index 0a585bc058..2208f5ae6c 100644 --- a/packages/apidom-parser-adapter-asyncapi-yaml-2/CHANGELOG.md +++ b/packages/apidom-parser-adapter-asyncapi-yaml-2/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-asyncapi-yaml-2 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-asyncapi-yaml-2/package.json b/packages/apidom-parser-adapter-asyncapi-yaml-2/package.json index 9cf286be2a..2a35e386f4 100644 --- a/packages/apidom-parser-adapter-asyncapi-yaml-2/package.json +++ b/packages/apidom-parser-adapter-asyncapi-yaml-2/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing YAML documents into AsyncAPI 2.x.y namespace.", "publishConfig": { "access": "public", @@ -43,9 +43,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-json/CHANGELOG.md b/packages/apidom-parser-adapter-json/CHANGELOG.md index cc3cb3ed56..3a82d7439a 100644 --- a/packages/apidom-parser-adapter-json/CHANGELOG.md +++ b/packages/apidom-parser-adapter-json/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-json + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-json/package.json b/packages/apidom-parser-adapter-json/package.json index a25f5e06bc..336a8029ec 100644 --- a/packages/apidom-parser-adapter-json/package.json +++ b/packages/apidom-parser-adapter-json/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-json", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing JSON documents into base namespace.", "publishConfig": { "access": "public", @@ -53,9 +53,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-parser-adapter-openapi-json-3-0/CHANGELOG.md b/packages/apidom-parser-adapter-openapi-json-3-0/CHANGELOG.md index fdc6fc8b10..2556745b6c 100644 --- a/packages/apidom-parser-adapter-openapi-json-3-0/CHANGELOG.md +++ b/packages/apidom-parser-adapter-openapi-json-3-0/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-openapi-json-3-0 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-openapi-json-3-0/package.json b/packages/apidom-parser-adapter-openapi-json-3-0/package.json index cb9e2317d3..8dc0f501e9 100644 --- a/packages/apidom-parser-adapter-openapi-json-3-0/package.json +++ b/packages/apidom-parser-adapter-openapi-json-3-0/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-openapi-json-3-0", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing JSON documents into OpenAPI 3.0.x namespace.", "publishConfig": { "access": "public", @@ -38,9 +38,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-openapi-json-3-1/CHANGELOG.md b/packages/apidom-parser-adapter-openapi-json-3-1/CHANGELOG.md index ced1985ef0..8c2cefb5b1 100644 --- a/packages/apidom-parser-adapter-openapi-json-3-1/CHANGELOG.md +++ b/packages/apidom-parser-adapter-openapi-json-3-1/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-openapi-json-3-1 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-openapi-json-3-1/package.json b/packages/apidom-parser-adapter-openapi-json-3-1/package.json index bb1f1f4fb3..e23837f19a 100644 --- a/packages/apidom-parser-adapter-openapi-json-3-1/package.json +++ b/packages/apidom-parser-adapter-openapi-json-3-1/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-openapi-json-3-1", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing JSON documents into OpenAPI 3.1.x namespace.", "publishConfig": { "access": "public", @@ -43,9 +43,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-openapi-yaml-3-0/CHANGELOG.md b/packages/apidom-parser-adapter-openapi-yaml-3-0/CHANGELOG.md index 5233f6f074..72fc4d5aa9 100644 --- a/packages/apidom-parser-adapter-openapi-yaml-3-0/CHANGELOG.md +++ b/packages/apidom-parser-adapter-openapi-yaml-3-0/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-openapi-yaml-3-0 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-openapi-yaml-3-0/package.json b/packages/apidom-parser-adapter-openapi-yaml-3-0/package.json index 2d3dec964e..357f7ef8d0 100644 --- a/packages/apidom-parser-adapter-openapi-yaml-3-0/package.json +++ b/packages/apidom-parser-adapter-openapi-yaml-3-0/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing YAML documents into OpenAPI 3.0.x namespace.", "publishConfig": { "access": "public", @@ -38,9 +38,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-openapi-yaml-3-1/CHANGELOG.md b/packages/apidom-parser-adapter-openapi-yaml-3-1/CHANGELOG.md index 13f1679aa4..26aa0e0e05 100644 --- a/packages/apidom-parser-adapter-openapi-yaml-3-1/CHANGELOG.md +++ b/packages/apidom-parser-adapter-openapi-yaml-3-1/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-openapi-yaml-3-1 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-openapi-yaml-3-1/package.json b/packages/apidom-parser-adapter-openapi-yaml-3-1/package.json index 36932e2424..11ba10ce43 100644 --- a/packages/apidom-parser-adapter-openapi-yaml-3-1/package.json +++ b/packages/apidom-parser-adapter-openapi-yaml-3-1/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing YAML documents into OpenAPI 3.1.x namespace.", "publishConfig": { "access": "public", @@ -43,9 +43,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" diff --git a/packages/apidom-parser-adapter-yaml-1-2/CHANGELOG.md b/packages/apidom-parser-adapter-yaml-1-2/CHANGELOG.md index 56d4faa07d..89c09fd17c 100644 --- a/packages/apidom-parser-adapter-yaml-1-2/CHANGELOG.md +++ b/packages/apidom-parser-adapter-yaml-1-2/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser-adapter-yaml-1-2 + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser-adapter-yaml-1-2/package.json b/packages/apidom-parser-adapter-yaml-1-2/package.json index 83ff1d202e..17835fd233 100644 --- a/packages/apidom-parser-adapter-yaml-1-2/package.json +++ b/packages/apidom-parser-adapter-yaml-1-2/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser-adapter-yaml-1-2", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser adapter for parsing YAML documents into base namespace.", "publishConfig": { "access": "public", @@ -52,9 +52,9 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.78.0", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-ast": "^0.79.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-parser/CHANGELOG.md b/packages/apidom-parser/CHANGELOG.md index c75e3fc756..460a8c0375 100644 --- a/packages/apidom-parser/CHANGELOG.md +++ b/packages/apidom-parser/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +**Note:** Version bump only for package @swagger-api/apidom-parser + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-parser/package.json b/packages/apidom-parser/package.json index 346c65733b..0a42de281d 100644 --- a/packages/apidom-parser/package.json +++ b/packages/apidom-parser/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-parser", - "version": "0.78.0", + "version": "0.79.0", "description": "Parser consumes parser adapters and provides unified API for parsing.", "publishConfig": { "access": "public", @@ -38,8 +38,8 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", - "@swagger-api/apidom-error": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", + "@swagger-api/apidom-error": "^0.79.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.0", "ramda-adjunct": "^4.1.1", diff --git a/packages/apidom-reference/CHANGELOG.md b/packages/apidom-reference/CHANGELOG.md index c15cc4139c..c2f1603514 100644 --- a/packages/apidom-reference/CHANGELOG.md +++ b/packages/apidom-reference/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.79.0](https://github.com/swagger-api/apidom/compare/v0.78.0...v0.79.0) (2023-10-24) + +### Features + +- **predicates:** implement TypeScript type guards ([#3289](https://github.com/swagger-api/apidom/issues/3289)) ([0cae70a](https://github.com/swagger-api/apidom/commit/0cae70aa3edc17ecc628c21e30a6b2ac1e992372)), closes [#3280](https://github.com/swagger-api/apidom/issues/3280) + # [0.78.0](https://github.com/swagger-api/apidom/compare/v0.77.0...v0.78.0) (2023-10-17) ### Bug Fixes diff --git a/packages/apidom-reference/package.json b/packages/apidom-reference/package.json index 9f250b0151..23f9daa617 100644 --- a/packages/apidom-reference/package.json +++ b/packages/apidom-reference/package.json @@ -1,6 +1,6 @@ { "name": "@swagger-api/apidom-reference", - "version": "0.78.0", + "version": "0.79.0", "description": "Advanced algorithms for semantic ApiDOM manipulations like dereferencing or resolution.", "publishConfig": { "access": "public", @@ -203,7 +203,7 @@ "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.78.0", + "@swagger-api/apidom-core": "^0.79.0", "@types/ramda": "~0.29.6", "axios": "^1.4.0", "minimatch": "^7.4.3", @@ -213,21 +213,21 @@ "stampit": "^4.3.2" }, "optionalDependencies": { - "@swagger-api/apidom-error": "^0.78.0", - "@swagger-api/apidom-json-pointer": "^0.78.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.78.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.78.0", - "@swagger-api/apidom-parser-adapter-json": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.78.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.78.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.78.0" + "@swagger-api/apidom-error": "^0.79.0", + "@swagger-api/apidom-json-pointer": "^0.79.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.79.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.79.0", + "@swagger-api/apidom-parser-adapter-json": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.79.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.79.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.79.0" }, "devDependencies": { "@swagger-api/apidom-json-pointer": "*", From 73fd0119931d12fb46ed7fbd228217603ef171f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 18:00:20 +0000 Subject: [PATCH 15/19] chore(deps): bump @mui/icons-material from 5.14.13 to 5.14.15 (#3316) --- package-lock.json | 10 +++++----- packages/apidom-playground/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index c5edf814c6..42408ab8fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4797,11 +4797,11 @@ } }, "node_modules/@mui/icons-material": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.13.tgz", - "integrity": "sha512-fxKE1UrjI4xVxHe9IAGuVQZrc18dSBJg0P+Sqi2SZmcDUCShmgRq6Jq7l7GduvuMIkOSqAJdNgLtXmtmZkjtLg==", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.15.tgz", + "integrity": "sha512-Dqu21vN/mVNzebJ+ofnKG+CeJYIhHuDs5+0fMEpdpzRt6UojelzdrEkNv+XkO0e1JMclzeXIRx404FirK/CFRw==", "dependencies": { - "@babel/runtime": "^7.23.1" + "@babel/runtime": "^7.23.2" }, "engines": { "node": ">=12.0.0" @@ -32742,7 +32742,7 @@ "dependencies": { "@emotion/react": "=11.11.1", "@emotion/styled": "=11.11.0", - "@mui/icons-material": "=5.14.13", + "@mui/icons-material": "=5.14.15", "@mui/material": "=5.14.14", "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", diff --git a/packages/apidom-playground/package.json b/packages/apidom-playground/package.json index dd2b8eb013..b520def17f 100644 --- a/packages/apidom-playground/package.json +++ b/packages/apidom-playground/package.json @@ -24,7 +24,7 @@ "dependencies": { "@emotion/react": "=11.11.1", "@emotion/styled": "=11.11.0", - "@mui/icons-material": "=5.14.13", + "@mui/icons-material": "=5.14.15", "@mui/material": "=5.14.14", "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", From 8e6cd9bd19dda021e509f5c80aa15e644a828f5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 00:07:38 +0000 Subject: [PATCH 16/19] chore(deps-dev): bump core-js from 3.33.0 to 3.33.1 (#3318) --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 42408ab8fb..0ffcc22a95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "benchmark": "=2.1.4", "chai": "=4.3.10", "copyfiles": "=2.4.1", - "core-js": "=3.33.0", + "core-js": "=3.33.1", "cross-env": "=7.0.3", "dedent": "=1.5.1", "eslint": "=8.51.0", @@ -10930,9 +10930,9 @@ } }, "node_modules/core-js": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", - "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.1.tgz", + "integrity": "sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q==", "dev": true, "hasInstallScript": true, "funding": { diff --git a/package.json b/package.json index f4b4bb572c..e195b52b85 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "benchmark": "=2.1.4", "chai": "=4.3.10", "copyfiles": "=2.4.1", - "core-js": "=3.33.0", + "core-js": "=3.33.1", "cross-env": "=7.0.3", "dedent": "=1.5.1", "eslint": "=8.51.0", From 8e036b5609f841e00a4d4f616d4e5146b090a767 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 00:18:41 +0000 Subject: [PATCH 17/19] chore(deps-dev): bump @types/mocha from 10.0.2 to 10.0.3 (#3317) --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ffcc22a95..fc840d8da1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@commitlint/config-conventional": "=17.8.0", "@types/chai": "=4.3.9", "@types/dedent": "=0.7.1", - "@types/mocha": "=10.0.2", + "@types/mocha": "=10.0.3", "@types/node": "=20.8.5", "@types/sinon": "=10.0.19", "@typescript-eslint/eslint-plugin": "=6.9.0", @@ -7233,9 +7233,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.2.tgz", - "integrity": "sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "node_modules/@types/node": { diff --git a/package.json b/package.json index e195b52b85..fd601cf6f6 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@commitlint/config-conventional": "=17.8.0", "@types/chai": "=4.3.9", "@types/dedent": "=0.7.1", - "@types/mocha": "=10.0.2", + "@types/mocha": "=10.0.3", "@types/node": "=20.8.5", "@types/sinon": "=10.0.19", "@typescript-eslint/eslint-plugin": "=6.9.0", From 7aa833528f25676f5c19ddcbe37d136fa42d89ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 00:30:52 +0000 Subject: [PATCH 18/19] chore(deps): bump @mui/material from 5.14.14 to 5.14.15 (#3319) --- package-lock.json | 92 ++++++++++++------------- packages/apidom-playground/package.json | 2 +- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc840d8da1..d9aa4ae632 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4757,14 +4757,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.20", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.20.tgz", - "integrity": "sha512-CS2pUuqxST7ch9VNDCklRYDbJ3rru20Tx7na92QvVVKfu3RL4z/QLuVIc8jYGsdCnauMaeUSlFNLAJNb0yXe6w==", + "version": "5.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.21.tgz", + "integrity": "sha512-eTKWx3WV/nwmRUK4z4K1MzlMyWCsi3WJ3RtV4DiXZeRh4qd4JCyp1Zzzi8Wv9xM4dEBmqQntFoei716PzwmFfA==", "dependencies": { - "@babel/runtime": "^7.23.1", + "@babel/runtime": "^7.23.2", "@floating-ui/react-dom": "^2.0.2", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", + "@mui/types": "^7.2.7", + "@mui/utils": "^5.14.15", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -4788,9 +4788,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.14.tgz", - "integrity": "sha512-Rw/xKiTOUgXD8hdKqj60aC6QcGprMipG7ne2giK6Mz7b4PlhL/xog9xLeclY3BxsRLkZQ05egFnIEY1CSibTbw==", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.15.tgz", + "integrity": "sha512-ZCDzBWtCKjAYAlKKM3PA/jG/3uVIDT9ZitOtVixIVmTCQyc5jSV1qhJX8+qIGz4RQZ9KLzPWO2tXd0O5hvzouQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" @@ -4822,16 +4822,16 @@ } }, "node_modules/@mui/material": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.14.tgz", - "integrity": "sha512-cAmCwAHFQXxb44kWbVFkhKATN8tACgMsFwrXo8ro6WzYW73U/qsR5AcCiJIhCyYYg+gcftfkmNcpRaV3JjhHCg==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/base": "5.0.0-beta.20", - "@mui/core-downloads-tracker": "^5.14.14", - "@mui/system": "^5.14.14", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.15.tgz", + "integrity": "sha512-Gq65rHjvLzkxmhG8bvag851Oqsmru7qkUb/cCI2xu7dQzmY345f9xJRJi72sRGjhaqHXWeRKw/yIwp/7oQoeXg==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/base": "5.0.0-beta.21", + "@mui/core-downloads-tracker": "^5.14.15", + "@mui/system": "^5.14.15", + "@mui/types": "^7.2.7", + "@mui/utils": "^5.14.15", "@types/react-transition-group": "^4.4.7", "clsx": "^2.0.0", "csstype": "^3.1.2", @@ -4866,12 +4866,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.14.tgz", - "integrity": "sha512-n77au3CQj9uu16hak2Y+rvbGSBaJKxziG/gEbOLVGrAuqZ+ycVSkorCfN6Y/4XgYOpG/xvmuiY3JwhAEOzY3iA==", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.15.tgz", + "integrity": "sha512-V2Xh+Tu6A07NoSpup0P9m29GwvNMYl5DegsGWqlOTJyAV7cuuVjmVPqxgvL8xBng4R85xqIQJRMjtYYktoPNuQ==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/utils": "^5.14.13", + "@babel/runtime": "^7.23.2", + "@mui/utils": "^5.14.15", "prop-types": "^15.8.1" }, "engines": { @@ -4892,11 +4892,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.13.tgz", - "integrity": "sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA==", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.15.tgz", + "integrity": "sha512-mbOjRf867BysNpexe5Z/P8s3bWzDPNowmKhi7gtNDP/LPEeqAfiDSuC4WPTXmtvse1dCl30Nl755OLUYuoi7Mw==", "dependencies": { - "@babel/runtime": "^7.23.1", + "@babel/runtime": "^7.23.2", "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -4923,15 +4923,15 @@ } }, "node_modules/@mui/system": { - "version": "5.14.14", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.14.tgz", - "integrity": "sha512-y4InFmCgGGWXnz+iK4jRTWVikY0HgYnABjz4wgiUgEa2W1H8M4ow+27BegExUWPkj4TWthQ2qG9FOGSMtI+PKA==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/private-theming": "^5.14.14", - "@mui/styled-engine": "^5.14.13", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.15.tgz", + "integrity": "sha512-zr0Gdk1RgKiEk+tCMB900LaOpEC8NaGvxtkmMdL/CXgkqQZSVZOt2PQsxJWaw7kE4YVkIe4VukFVc43qcq9u3w==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/private-theming": "^5.14.15", + "@mui/styled-engine": "^5.14.15", + "@mui/types": "^7.2.7", + "@mui/utils": "^5.14.15", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -4962,9 +4962,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.6.tgz", - "integrity": "sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng==", + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.7.tgz", + "integrity": "sha512-sofpWmcBqOlTzRbr1cLQuUDKaUYVZTw8ENQrtL39TECRNENEzwgnNPh6WMfqMZlMvf1Aj9DLg74XPjnLr0izUQ==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -4975,12 +4975,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.13.tgz", - "integrity": "sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw==", + "version": "5.14.15", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.15.tgz", + "integrity": "sha512-QBfHovAvTa0J1jXuYDaXGk+Yyp7+Fm8GSqx6nK2JbezGqzCFfirNdop/+bL9Flh/OQ/64PeXcW4HGDdOge+n3A==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@types/prop-types": "^15.7.7", + "@babel/runtime": "^7.23.2", + "@types/prop-types": "^15.7.8", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -32743,7 +32743,7 @@ "@emotion/react": "=11.11.1", "@emotion/styled": "=11.11.0", "@mui/icons-material": "=5.14.15", - "@mui/material": "=5.14.14", + "@mui/material": "=5.14.15", "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", "@swagger-api/apidom-ns-asyncapi-2": "*", diff --git a/packages/apidom-playground/package.json b/packages/apidom-playground/package.json index b520def17f..ffd273875f 100644 --- a/packages/apidom-playground/package.json +++ b/packages/apidom-playground/package.json @@ -25,7 +25,7 @@ "@emotion/react": "=11.11.1", "@emotion/styled": "=11.11.0", "@mui/icons-material": "=5.14.15", - "@mui/material": "=5.14.14", + "@mui/material": "=5.14.15", "@swagger-api/apidom-ast": "*", "@swagger-api/apidom-core": "*", "@swagger-api/apidom-ns-asyncapi-2": "*", From 74b9ff66e758b99f94221e712429373f156c089c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 00:44:50 +0000 Subject: [PATCH 19/19] chore(deps): bump @types/ramda from 0.29.6 to 0.29.7 (#3320) --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9aa4ae632..924481867d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7282,9 +7282,9 @@ "dev": true }, "node_modules/@types/ramda": { - "version": "0.29.6", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.6.tgz", - "integrity": "sha512-4XQ9hYQhCwOxfkoTsIPvDVXc75fY5+MLQHUpExX6ByvU1q+0vOYRLSjWAt1IydkE1hOuhwMH6KvV/9rhzgrvRw==", + "version": "0.29.7", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.7.tgz", + "integrity": "sha512-IUl6U95qwlQtVvZkSX4ODj08oJVtPyWMFRtPVNqhxc2rt+Bh7lCzTrGMYMZ7dmRKcAjtot3xrPnYGwsjdt8gzQ==", "dependencies": { "types-ramda": "^0.29.5" }