UNPKG

@swagger-api/apidom-ns-openapi-3-1

Version:

OpenAPI 3.1.x namespace for ApiDOM.

32 lines (31 loc) 1.18 kB
import { isReferenceLikeElement, specificationObj as OpenApi3_1Specification } from '@swagger-api/apidom-ns-openapi-3-0'; import CallbackElement from "../../../../elements/Callback.mjs"; import { isReferenceElement } from "../../../../predicates.mjs"; /** * @public */ export const BaseCallbackVisitor = OpenApi3_1Specification.visitors.document.objects.Callback.$visitor; /** * @public */ class CallbackVisitor extends BaseCallbackVisitor { constructor(options) { super(options); this.element = new CallbackElement(); this.specPath = element => { // @ts-ignore return isReferenceLikeElement(element) ? ['document', 'objects', 'Reference'] : ['document', 'objects', 'PathItem']; }; } ObjectElement(objectElement) { const result = BaseCallbackVisitor.prototype.ObjectElement.call(this, objectElement); // decorate every ReferenceElement with metadata about their referencing type // @ts-ignore this.element.filter(isReferenceElement).forEach(referenceElement => { // @ts-ignore referenceElement.setMetaProperty('referenced-element', 'pathItem'); }); return result; } } export default CallbackVisitor;