Skip to content

Commit

Permalink
rename node processors methods for better readability
Browse files Browse the repository at this point in the history
  • Loading branch information
maximpn committed May 6, 2024
1 parent 8d7cb29 commit 49e35c6
Show file tree
Hide file tree
Showing 11 changed files with 43 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@ export class BundleRefProcessor implements DocumentNodeProcessor {

constructor(private inliningPropName: string) {}

enter(node: Readonly<DocumentNode>): void {
onNodeEnter(node: Readonly<DocumentNode>): void {
if (hasProp(node, this.inliningPropName, true)) {
this.nodesToInline.add(node);
}
}

ref(node: RefNode, resolvedRef: ResolvedRef, context: TraverseDocumentContext): void {
onRefNodeLeave(node: RefNode, resolvedRef: ResolvedRef, context: TraverseDocumentContext): void {
if (!resolvedRef.pointer.startsWith('/components')) {
throw new Error(
`$ref pointer ${chalk.yellow(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { X_MODIFY } from '../known_custom_props';
*/
export function createModifyPartialProcessor(): DocumentNodeProcessor {
return {
ref(node, resolvedRef) {
onRefNodeLeave(node, resolvedRef) {
if (!hasProp(node, X_MODIFY, 'partial')) {
return;
}
Expand All @@ -27,7 +27,7 @@ export function createModifyPartialProcessor(): DocumentNodeProcessor {

delete node.required;
},
leave(node) {
onNodeLeave(node) {
if (!hasProp(node, X_MODIFY, 'partial')) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { inlineRef } from './utils/inline_ref';
*/
export function createModifyRequiredProcessor(): DocumentNodeProcessor {
return {
ref(node, resolvedRef) {
onRefNodeLeave(node, resolvedRef) {
if (!hasProp(node, X_MODIFY, 'required')) {
return;
}
Expand Down Expand Up @@ -48,7 +48,7 @@ export function createModifyRequiredProcessor(): DocumentNodeProcessor {

node.required = Object.keys(resolvedRef.refNode.properties);
},
leave(node) {
onNodeLeave(node) {
if (!hasProp(node, X_MODIFY, 'required')) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import { DocumentNodeProcessor } from '../../types';
*/
export function createFlattenFoldedAllOfItemsProcessor(): DocumentNodeProcessor {
return {
leave(node) {
onNodeLeave(node) {
if (!('allOf' in node) || !Array.isArray(node.allOf)) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ type MergedObjectSchema = Required<Pick<OpenAPIV3.SchemaObject, 'type' | 'proper
*/
export function createMergeNonConflictingAllOfItemsProcessor(): DocumentNodeProcessor {
return {
leave(allOfNode) {
onNodeLeave(allOfNode) {
if (
!('allOf' in allOfNode) ||
!Array.isArray(allOfNode.allOf) ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import { DocumentNodeProcessor } from '../../types';
*/
export function createUnfoldSingleAllOfItemProcessor(): DocumentNodeProcessor {
return {
leave(node) {
onNodeLeave(node) {
if (!('allOf' in node) || !Array.isArray(node.allOf) || node.allOf.length > 1) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { DocumentNodeProcessor } from '../types';
*/
export function createRemovePropsProcessor(propNames: string[]): DocumentNodeProcessor {
return {
leave(node) {
onNodeLeave(node) {
if (!isPlainObjectType(node)) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import { hasProp } from '../../utils/has_prop';
import { isPlainObjectType } from '../../utils/is_plain_object_type';
import { PlainObjectNode, ResolvedRef } from '../types';
import { DocumentNodeProcessor, PlainObjectNode, ResolvedRef } from '../types';

/**
* Helps to remove unused components.
Expand All @@ -17,10 +17,10 @@ import { PlainObjectNode, ResolvedRef } from '../types';
* and then `removeUnusedComponents()` should be invoked after document processing to perform
* actual unused components deletion.
*/
export class RemoveUnusedComponentsProcessor {
export class RemoveUnusedComponentsProcessor implements DocumentNodeProcessor {
private refs = new Set();

ref(node: unknown, resolvedRef: ResolvedRef): void {
onRefNodeLeave(node: unknown, resolvedRef: ResolvedRef): void {
// If the reference has been inlined by one of the previous processors skip it
if (!hasProp(node, '$ref')) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ describe('processDocument', () => {
document: {} as Document,
};
const calls: string[] = [];
const processor1 = {
leave() {
const processor1: DocumentNodeProcessor = {
onNodeLeave() {
calls.push('processor1');
},
};
const processor2 = {
leave() {
const processor2: DocumentNodeProcessor = {
onNodeLeave() {
calls.push('processor2');
},
};
Expand All @@ -46,17 +46,17 @@ describe('processDocument', () => {
const calls: string[] = [];
const refResolver = new RefResolver();
const processor: DocumentNodeProcessor = {
enter(node) {
onNodeEnter(node) {
calls.push(`enter - ${(node as NodeWithId).id}`);
},
shouldRemove(node) {
calls.push(`shouldRemove - ${(node as NodeWithId).id}`);
return false;
},
ref(node) {
onRefNodeLeave(node) {
calls.push(`ref - ${(node as NodeWithId).id}`);
},
leave(node) {
onNodeLeave(node) {
calls.push(`leave - ${(node as NodeWithId).id}`);
},
};
Expand Down
6 changes: 3 additions & 3 deletions packages/kbn-openapi-bundler/src/bundler/process_document.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,14 +146,14 @@ export async function processDocument(
// If ref has been inlined by one of the processors it's not a ref node anymore
// so we can skip the following processors
if (isRefNode(traverseItem.node) && traverseItem.resolvedRef) {
processor.ref?.(
processor.onRefNodeLeave?.(
traverseItem.node as RefNode,
traverseItem.resolvedRef,
traverseItem.context
);
}

processor.leave?.(traverseItem.node, traverseItem.context);
processor.onNodeLeave?.(traverseItem.node, traverseItem.context);
}
}
}
Expand All @@ -172,7 +172,7 @@ function applyEnterProcessors(
processors: DocumentNodeProcessor[]
): void {
for (const processor of processors) {
processor.enter?.(traverseItem.node, {
processor.onNodeEnter?.(traverseItem.node, {
...traverseItem.context,
parentNode: traverseItem.parentNode,
parentKey: traverseItem.parentKey,
Expand Down
39 changes: 20 additions & 19 deletions packages/kbn-openapi-bundler/src/bundler/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,19 +103,19 @@ export type TraverseDocumentEntryContext = TraverseDocumentContext & {
* - `false` - keep the node
*
*/
export type ShouldRemoveProcessorFn = (
export type ShouldRemoveNodeProcessorFn = (
node: Readonly<DocumentNode>,
context: TraverseDocumentEntryContext
) => boolean;

export type EntryProcessorFn = (
export type OnNodeEntryProcessorFn = (
node: Readonly<DocumentNode>,
context: TraverseDocumentEntryContext
) => void;

export type LeaveProcessorFn = (node: DocumentNode, context: TraverseDocumentContext) => void;
export type OnNodeLeaveProcessorFn = (node: DocumentNode, context: TraverseDocumentContext) => void;

export type RefProcessorFn = (
export type OnRefNodeLeaveProcessorFn = (
node: RefNode,
resolvedRef: ResolvedRef,
context: TraverseDocumentContext
Expand All @@ -135,28 +135,29 @@ export type RefProcessorFn = (
*
* 1st phase
*
* - `enter` - Callback function is invoked at the first phase (diving from root to leaves) while traversing
* the document. It can be considered in a similar way events dive in DOM during capture phase.
* In the other words it means entering a subtree. It allows to analyze unprocessed nodes.
* - `onNodeEnter` - Callback function is invoked at the first phase (diving from root to leaves) while
* traversing the document. It can be considered in a similar way events dive in DOM during
* capture phase. In the other words it means entering a subtree. It allows to analyze
* unprocessed nodes.
*
* - `shouldRemove` - Callback function is invoked at the first phase (diving from root to leaves) while traversing
* the document. It controls whether the node will be excluded from further processing and the
* result document eventually. Returning `true` excluded the node while returning `false` passes
* the node untouched.
* - `shouldRemove` - Callback function is invoked at the first phase (diving from root to leaves) while
* traversing the document. It controls whether the node will be excluded from further processing
* and the result document eventually. Returning `true` excluded the node while returning `false`
* passes the node untouched.
*
* 2nd phase
*
* - `leave` - Callback function is invoked upon leaving any type of node. It give an opportunity to modify
* the document like inline references or remove unwanted properties. It can be considered in
* a similar way event bubble in DOM during bubble phase. In the other words it means leaving
* - `onNodeLeave` - Callback function is invoked upon leaving any type of node. It give an opportunity to
* modify the document like inline references or remove unwanted properties. It can be considered
* in a similar way event bubble in DOM during bubble phase. In the other words it means leaving
* a subtree.
*
* - `ref` - Callback function is invoked upon leaving a reference node (a node having `$ref` key)
* - `onRefNodeLeave` - Callback function is invoked upon leaving a reference node (a node having `$ref` key)
*
*/
export interface DocumentNodeProcessor {
shouldRemove?: ShouldRemoveProcessorFn;
enter?: EntryProcessorFn;
leave?: LeaveProcessorFn;
ref?: RefProcessorFn;
shouldRemove?: ShouldRemoveNodeProcessorFn;
onNodeEnter?: OnNodeEntryProcessorFn;
onNodeLeave?: OnNodeLeaveProcessorFn;
onRefNodeLeave?: OnRefNodeLeaveProcessorFn;
}

0 comments on commit 49e35c6

Please sign in to comment.