import type { Location } from './ref-utils.js'; import type { NormalizedNodeType } from './types/index.js'; import type { ArazzoDefinition, ArazzoSourceDescription, CriterionObject, ExtendedOperation, InfoObject, OnFailureObject, OnSuccessObject, OpenAPISourceDescription, Parameter, Replacement, RequestBody, SourceDescription, Step, Workflow } from './typings/arazzo.js'; import type { Async2Definition } from './typings/asyncapi.js'; import type { Async3Definition } from './typings/asyncapi3.js'; import type { Oas3Definition, Oas3_1Definition, Oas3_2Definition, Oas3ExternalDocs, Oas3Info, Oas3Contact, Oas3Components, Oas3_1Components, Oas3License, Oas3Schema, Oas3_1Schema, Oas3Header, Oas3Parameter, Oas3Operation, Oas3PathItem, Oas3ServerVariable, Oas3Server, Oas3MediaType, Oas3Response, Oas3Example, Oas3RequestBody, Oas3Tag, Oas3_2Tag, OasRef, OAuth2Auth, Oas3SecurityScheme, Oas3SecurityRequirement, Oas3Encoding, Oas3Link, Oas3Xml, Oas3Discriminator, Oas3Callback } from './typings/openapi.js'; import type { OpenRpc1Definition, OpenRpc1Info, OpenRpc1Server, OpenRpc1ServerVariable, OpenRpc1Method, OpenRpc1ContentDescriptor, OpenRpc1ExamplePairing, OpenRpc1Example, OpenRpc1Link, OpenRpc1Error, OpenRpc1Components, OpenRpc1Tag, OpenRpc1ExternalDocs, OpenRpc1Contact, OpenRpc1License } from './typings/openrpc.js'; import type { Overlay1Definition } from './typings/overlay.js'; import type { Oas2Definition, Oas2Tag, Oas2ExternalDocs, Oas2SecurityRequirement, Oas2Info, Oas2Contact, Oas2License, Oas2PathItem, Oas2Operation, Oas2Header, Oas2Response, Oas2Schema, Oas2Xml, Oas2Parameter, Oas2SecurityScheme } from './typings/swagger.js'; import type { Stack } from './utils/stack.js'; import type { UserContext, ResolveResult, ProblemSeverity } from './walk.js'; export type SkipFunctionContext = Pick; export type VisitFunction = (node: T, ctx: UserContext & { ignoreNextVisitorsOnNode: () => void; }, parents?: any, context?: any) => void; type VisitRefFunction = (node: OasRef, ctx: UserContext, resolved: ResolveResult) => void; type SkipFunction = (node: T, key: string | number, ctx: SkipFunctionContext) => boolean; type VisitObject = { enter?: VisitFunction; leave?: VisitFunction; skip?: SkipFunction; }; export type NestedVisitObject = VisitObject & NestedVisitor

; type VisitFunctionOrObject = VisitFunction | VisitObject; export type VisitorNode = { ruleId: string; severity: ProblemSeverity; message?: string; context: VisitorLevelContext | VisitorSkippedLevelContext; depth: number; visit: VisitFunction; skip?: SkipFunction; }; type VisitorRefNode = { ruleId: string; severity: ProblemSeverity; message?: string; context: VisitorLevelContext; depth: number; visit: VisitRefFunction; }; export type VisitorLevelContext = { isSkippedLevel: false; type: NormalizedNodeType; parent: VisitorLevelContext | null; activatedOn: Stack<{ node?: any; withParentNode?: any; skipped: boolean; nextLevelTypeActivated: Stack; location?: Location; }>; }; export type VisitorSkippedLevelContext = { isSkippedLevel: true; parent: VisitorLevelContext; seen: Set; }; export type NormalizeVisitor = Fn extends VisitFunction ? VisitorNode : never; export type BaseVisitor = { any?: { enter?: VisitFunction; leave?: VisitFunction; skip?: SkipFunction; } | VisitFunction; ref?: { enter?: VisitRefFunction; leave?: VisitRefFunction; } | VisitRefFunction; }; type Oas3FlatVisitor = { Root?: VisitFunctionOrObject; Tag?: VisitFunctionOrObject; ExternalDocs?: VisitFunctionOrObject; Server?: VisitFunctionOrObject; ServerVariable?: VisitFunctionOrObject; SecurityRequirement?: VisitFunctionOrObject; Info?: VisitFunctionOrObject; Contact?: VisitFunctionOrObject; License?: VisitFunctionOrObject; Paths?: VisitFunctionOrObject>>; PathItem?: VisitFunctionOrObject>; Callback?: VisitFunctionOrObject>; CallbacksMap?: VisitFunctionOrObject>>; Parameter?: VisitFunctionOrObject>; Operation?: VisitFunctionOrObject>; RequestBody?: VisitFunctionOrObject>; MediaTypesMap?: VisitFunctionOrObject>>; MediaType?: VisitFunctionOrObject>; Example?: VisitFunctionOrObject; Encoding?: VisitFunctionOrObject>; Header?: VisitFunctionOrObject>; Responses?: VisitFunctionOrObject>>; Response?: VisitFunctionOrObject>; Link?: VisitFunctionOrObject; Schema?: VisitFunctionOrObject; Xml?: VisitFunctionOrObject; SchemaProperties?: VisitFunctionOrObject>; DiscriminatorMapping?: VisitFunctionOrObject>; Discriminator?: VisitFunctionOrObject; Components?: VisitFunctionOrObject; NamedSchemas?: VisitFunctionOrObject>; NamedResponses?: VisitFunctionOrObject>>; NamedParameters?: VisitFunctionOrObject>>; NamedExamples?: VisitFunctionOrObject>; NamedRequestBodies?: VisitFunctionOrObject>>; NamedHeaders?: VisitFunctionOrObject>>; NamedSecuritySchemes?: VisitFunctionOrObject>; NamedLinks?: VisitFunctionOrObject>; NamedCallbacks?: VisitFunctionOrObject>>; NamedMediaTypes?: VisitFunctionOrObject>>; ImplicitFlow?: VisitFunctionOrObject>; PasswordFlow?: VisitFunctionOrObject>; ClientCredentials?: VisitFunctionOrObject>; AuthorizationCode?: VisitFunctionOrObject>; DeviceAuthorization?: VisitFunctionOrObject>; OAuth2Flows?: VisitFunctionOrObject; SecurityScheme?: VisitFunctionOrObject; SpecExtension?: VisitFunctionOrObject; }; type Oas2FlatVisitor = { Root?: VisitFunctionOrObject; Tag?: VisitFunctionOrObject; ExternalDocs?: VisitFunctionOrObject; SecurityRequirement?: VisitFunctionOrObject; Info?: VisitFunctionOrObject; Contact?: VisitFunctionOrObject; License?: VisitFunctionOrObject; Paths?: VisitFunctionOrObject>; PathItem?: VisitFunctionOrObject; Parameter?: VisitFunctionOrObject; Operation?: VisitFunctionOrObject; Examples?: VisitFunctionOrObject>; Header?: VisitFunctionOrObject; Responses?: VisitFunctionOrObject>; Response?: VisitFunctionOrObject; Schema?: VisitFunctionOrObject; Xml?: VisitFunctionOrObject; SchemaProperties?: VisitFunctionOrObject>; NamedSchemas?: VisitFunctionOrObject>; NamedResponses?: VisitFunctionOrObject>; NamedParameters?: VisitFunctionOrObject>; SecurityScheme?: VisitFunctionOrObject; NamedSecuritySchemes?: VisitFunctionOrObject>; SpecExtension?: VisitFunctionOrObject; }; type Async2FlatVisitor = { Root?: VisitFunctionOrObject; }; type Async3FlatVisitor = { Root?: VisitFunctionOrObject; }; type ArazzoFlatVisitor = { Root?: VisitFunctionOrObject; ParameterObject?: VisitFunctionOrObject; InfoObject?: VisitFunctionOrObject; OpenAPISourceDescription?: VisitFunctionOrObject; ArazzoSourceDescription?: VisitFunctionOrObject; SourceDescription?: VisitFunctionOrObject; ExtendedOperation?: VisitFunctionOrObject; Replacement?: VisitFunctionOrObject; RequestBody?: VisitFunctionOrObject; CriterionObject?: VisitFunctionOrObject; OnSuccessObject?: VisitFunctionOrObject; OnFailureObject?: VisitFunctionOrObject; Step?: VisitFunctionOrObject; Steps?: VisitFunctionOrObject; Workflow?: VisitFunctionOrObject; Workflows?: VisitFunctionOrObject; }; type Overlay1FlatVisitor = { Root?: VisitFunctionOrObject; }; type OpenRpc1FlatVisitor = { Root?: VisitFunctionOrObject; Info?: VisitFunctionOrObject; Contact?: VisitFunctionOrObject; License?: VisitFunctionOrObject; Server?: VisitFunctionOrObject; ServerVariable?: VisitFunctionOrObject; Method?: VisitFunctionOrObject; ContentDescriptor?: VisitFunctionOrObject; ExamplePairing?: VisitFunctionOrObject; Example?: VisitFunctionOrObject; Link?: VisitFunctionOrObject; ErrorObject?: VisitFunctionOrObject; Components?: VisitFunctionOrObject; Tag?: VisitFunctionOrObject; ExternalDocs?: VisitFunctionOrObject; Schema?: VisitFunctionOrObject; SchemaProperties?: VisitFunctionOrObject>; NamedContentDescriptors?: VisitFunctionOrObject>; NamedSchemas?: VisitFunctionOrObject>; NamedExamples?: VisitFunctionOrObject>; NamedLinks?: VisitFunctionOrObject>; NamedErrors?: VisitFunctionOrObject>; NamedExamplePairingObjects?: VisitFunctionOrObject>; NamedTags?: VisitFunctionOrObject>; }; type Oas3NestedVisitor = { [T in keyof Oas3FlatVisitor]: Oas3FlatVisitor[T] extends Function ? Oas3FlatVisitor[T] : Oas3FlatVisitor[T] & NestedVisitor; }; type Oas2NestedVisitor = { [T in keyof Oas2FlatVisitor]: Oas2FlatVisitor[T] extends Function ? Oas2FlatVisitor[T] : Oas2FlatVisitor[T] & NestedVisitor; }; type Async2NestedVisitor = { [T in keyof Async2FlatVisitor]: Async2FlatVisitor[T] extends Function ? Async2FlatVisitor[T] : Async2FlatVisitor[T] & NestedVisitor; }; type Async3NestedVisitor = { [T in keyof Async3FlatVisitor]: Async3FlatVisitor[T] extends Function ? Async3FlatVisitor[T] : Async3FlatVisitor[T] & NestedVisitor; }; type ArazzoNestedVisitor = { [T in keyof ArazzoFlatVisitor]: ArazzoFlatVisitor[T] extends Function ? ArazzoFlatVisitor[T] : ArazzoFlatVisitor[T] & NestedVisitor; }; type Overlay1NestedVisitor = { [T in keyof Overlay1FlatVisitor]: Overlay1FlatVisitor[T] extends Function ? Overlay1FlatVisitor[T] : Overlay1FlatVisitor[T] & NestedVisitor; }; type OpenRpc1NestedVisitor = { [T in keyof OpenRpc1FlatVisitor]: OpenRpc1FlatVisitor[T] extends Function ? OpenRpc1FlatVisitor[T] : OpenRpc1FlatVisitor[T] & NestedVisitor; }; export type Oas3Visitor = BaseVisitor & Oas3NestedVisitor & Record | NestedVisitObject>; export type Oas2Visitor = BaseVisitor & Oas2NestedVisitor & Record | NestedVisitObject>; export type Async2Visitor = BaseVisitor & Async2NestedVisitor & Record | NestedVisitObject>; export type Async3Visitor = BaseVisitor & Async3NestedVisitor & Record | NestedVisitObject>; export type Arazzo1Visitor = BaseVisitor & ArazzoNestedVisitor & Record | NestedVisitObject>; export type Overlay1Visitor = BaseVisitor & Overlay1NestedVisitor & Record | NestedVisitObject>; export type OpenRpc1Visitor = BaseVisitor & OpenRpc1NestedVisitor & Record | NestedVisitObject>; export type CatalogEntityVisitor = BaseVisitor & Record>; export type NestedVisitor = Exclude; export type NormalizedOasVisitors = { [V in keyof T]-?: { enter: Array>; leave: Array>; }; } & { ref: { enter: Array; leave: Array; }; [k: string]: { enter: Array>; leave: Array>; }; }; export type Oas3Rule = (options: Record) => Oas3Visitor | Oas3Visitor[]; export type Oas2Rule = (options: Record) => Oas2Visitor | Oas2Visitor[]; export type Async2Rule = (options: Record) => Async2Visitor | Async2Visitor[]; export type Async3Rule = (options: Record) => Async3Visitor | Async3Visitor[]; export type Arazzo1Rule = (options: Record) => Arazzo1Visitor | Arazzo1Visitor[]; export type Overlay1Rule = (options: Record) => Overlay1Visitor | Overlay1Visitor[]; export type OpenRpc1Rule = (options: Record) => OpenRpc1Visitor | OpenRpc1Visitor[]; export type CatalogEntityRule = (options: Record) => CatalogEntityVisitor | CatalogEntityVisitor[]; export type Oas3Preprocessor = (options: Record) => Oas3Visitor; export type Oas2Preprocessor = (options: Record) => Oas2Visitor; export type Async2Preprocessor = (options: Record) => Async2Visitor; export type Async3Preprocessor = (options: Record) => Async3Visitor; export type Arazzo1Preprocessor = (options: Record) => Arazzo1Visitor; export type Overlay1Preprocessor = (options: Record) => Overlay1Visitor; export type OpenRpc1Preprocessor = (options: Record) => OpenRpc1Visitor; export type Oas3Decorator = (options: Record) => Oas3Visitor; export type Oas2Decorator = (options: Record) => Oas2Visitor; export type Async2Decorator = (options: Record) => Async2Visitor; export type Async3Decorator = (options: Record) => Async3Visitor; export type Arazzo1Decorator = (options: Record) => Arazzo1Visitor; export type Overlay1Decorator = (options: Record) => Overlay1Visitor; export type OpenRpc1Decorator = (options: Record) => OpenRpc1Visitor; export type OasRule = Oas3Rule; export type OasPreprocessor = Oas3Preprocessor; export type OasDecorator = Oas3Decorator; export type RuleInstanceConfig = { ruleId: string; severity: ProblemSeverity; message?: string; }; export declare function normalizeVisitors(visitorsConfig: (RuleInstanceConfig & { visitor: NestedVisitObject; })[], types: Record): NormalizedOasVisitors; export {}; //# sourceMappingURL=visitors.d.ts.map