@@ -2,9 +2,11 @@ import {INodeProperties} from 'n8n-workflow';
22import { OpenAPIV3 } from 'openapi-types' ;
33import pino from 'pino' ;
44import { OpenAPIWalker } from "./openapi/OpenAPIWalker" ;
5- import { ResourcePropertiesCollector as ResourcePropertiesCollectorImpl } from "./ResourcePropertiesCollector " ;
5+ import { ResourceCollector as ResourcePropertiesCollector } from "./ResourceCollector " ;
66import { BaseOperationsCollector , OperationsCollector as OperationsCollectorImpl } from "./OperationsCollector" ;
77import * as lodash from "lodash" ;
8+ import { DefaultOperationParser , IOperationParser } from "./OperationParser" ;
9+ import { DefaultResourceParser , IResourceParser } from "../ResourceParser" ;
810
911export interface Override {
1012 find : any ;
@@ -13,42 +15,52 @@ export interface Override {
1315
1416export interface N8NPropertiesBuilderConfig {
1517 logger ?: pino . Logger ;
16- overrides ?: Override [ ] ;
1718 OperationsCollector ?: typeof BaseOperationsCollector ,
18- ResourcePropertiesCollector ?: typeof ResourcePropertiesCollectorImpl
19+ ResourcePropertiesCollector ?: typeof ResourcePropertiesCollector
20+ operation ?: IOperationParser ,
21+ resource ?: IResourceParser ,
1922}
2023
2124export class N8NPropertiesBuilder {
2225 private readonly doc : OpenAPIV3 . Document ;
2326 private readonly logger : pino . Logger
2427 private readonly walker : OpenAPIWalker ;
25- private readonly overrides : Override [ ]
2628
2729 // DI
30+ private readonly operationParser : IOperationParser ;
31+ private readonly resourceParser : IResourceParser ;
2832 private readonly OperationsCollector : typeof BaseOperationsCollector ;
29- private readonly ResourcePropertiesCollector : typeof ResourcePropertiesCollectorImpl ;
33+ private readonly ResourcePropertiesCollector : typeof ResourcePropertiesCollector ;
3034
3135 constructor ( doc : any , config ?: N8NPropertiesBuilderConfig ) {
3236 this . doc = doc
3337 this . logger = config ?. logger || pino ( { transport : { target : 'pino-pretty' } } )
3438 this . walker = new OpenAPIWalker ( this . doc )
39+
40+ // DI
41+ this . operationParser = config ?. operation || new DefaultOperationParser ( )
42+ this . resourceParser = config ?. resource || new DefaultResourceParser ( )
3543 this . OperationsCollector = config ?. OperationsCollector ? config . OperationsCollector : OperationsCollectorImpl
36- this . ResourcePropertiesCollector = config ?. ResourcePropertiesCollector ? config . ResourcePropertiesCollector : ResourcePropertiesCollectorImpl
37- this . overrides = config ?. overrides || [ ]
44+ this . ResourcePropertiesCollector = config ?. ResourcePropertiesCollector ? config . ResourcePropertiesCollector : ResourcePropertiesCollector
3845 }
3946
40- build ( ) : INodeProperties [ ] {
41- const resourcePropertiesCollector = new this . ResourcePropertiesCollector ( )
47+ build ( overrides : Override [ ] = [ ] ) : INodeProperties [ ] {
48+ const resourcePropertiesCollector = new this . ResourcePropertiesCollector ( this . resourceParser )
4249 this . walker . walk ( resourcePropertiesCollector )
43- const resourceNode = resourcePropertiesCollector . iNodeProperty
50+ const resourceNode = resourcePropertiesCollector . resources
4451
45- const operationsCollector = new this . OperationsCollector ( this . logger , this . doc )
52+ const operationsCollector = new this . OperationsCollector (
53+ this . doc ,
54+ this . operationParser ,
55+ this . resourceParser ,
56+ this . logger ,
57+ )
4658 this . walker . walk ( operationsCollector )
4759 const operations = operationsCollector . operations
4860 const fields = operationsCollector . fields
4961
5062 const properties = [ resourceNode , ...operations , ...fields ]
51- return this . update ( properties , this . overrides )
63+ return this . update ( properties , overrides )
5264 }
5365
5466 private update ( fields : any [ ] , patterns : Override [ ] ) {
0 commit comments