@@ -27,6 +27,7 @@ type CompareArgs = Pick<
27
27
| 'timeout'
28
28
| 'retries'
29
29
| 'response_filter'
30
+ | 'response_filter_function'
30
31
> ;
31
32
32
33
/**
@@ -53,36 +54,52 @@ async function compareQuery({
53
54
// otherwise run it against the old server
54
55
const oldResponse = query . baselineResponse
55
56
? ( { data : query . baselineResponse } as AxiosResponse < unknown > )
56
- : await runQuery ( oldApiEnv , {
57
- ...query ,
58
- params : { ...query . params , ...oldApiEnv . extraParams } ,
59
- } , {
60
- timeout : argv . timeout ,
61
- retries : argv . retries ,
62
- } ) . catch ( ( e ) => {
57
+ : await runQuery (
58
+ oldApiEnv ,
59
+ {
60
+ ...query ,
61
+ params : { ...query . params , ...oldApiEnv . extraParams } ,
62
+ } ,
63
+ {
64
+ timeout : argv . timeout ,
65
+ retries : argv . retries ,
66
+ } ,
67
+ ) . catch ( ( e ) => {
63
68
console . error ( e ) ;
64
69
throw e ;
65
70
} ) ;
66
71
67
72
const newResponse = newApiEnv
68
- ? await runQuery ( newApiEnv , {
69
- ...query ,
70
- params : { ...query . params , ...newApiEnv . extraParams } ,
71
- } , {
72
- timeout : argv . timeout ,
73
- retries : argv . retries ,
74
- } ) . catch ( ( e ) => {
73
+ ? await runQuery (
74
+ newApiEnv ,
75
+ {
76
+ ...query ,
77
+ params : { ...query . params , ...newApiEnv . extraParams } ,
78
+ } ,
79
+ {
80
+ timeout : argv . timeout ,
81
+ retries : argv . retries ,
82
+ } ,
83
+ ) . catch ( ( e ) => {
75
84
console . error ( e ) ;
76
85
throw e ;
77
86
} )
78
87
: undefined ;
79
88
80
- if ( argv . response_filter ) {
89
+ if ( argv . response_filter || argv . response_filter_function ) {
81
90
const hadData = ! _ . isEmpty ( oldResponse . data ) || ! _ . isEmpty ( newResponse . data ) ;
82
91
83
92
try {
84
- oldResponse . data = jp . query ( oldResponse . data , argv . response_filter ) ;
85
- newResponse . data = jp . query ( newResponse . data , argv . response_filter ) ;
93
+ if ( argv . response_filter_function ) {
94
+ /* eslint-disable import/no-dynamic-require, global-require,
95
+ @typescript -eslint/no-var-requires */
96
+ const filter = require ( argv . response_filter_function ) ;
97
+ oldResponse . data = filter ( oldResponse . data ) ;
98
+ newResponse . data = filter ( newResponse . data ) ;
99
+ } else {
100
+ oldResponse . data = jp . query ( oldResponse . data , argv . response_filter ) ;
101
+ newResponse . data = jp . query ( newResponse . data , argv . response_filter ) ;
102
+ }
86
103
} catch ( e ) {
87
104
console . error ( e ) ;
88
105
}
0 commit comments