@@ -103,6 +103,24 @@ function transformMapLike(obj, transform, skipExtensions) {
103
103
* </ul>
104
104
*/
105
105
class OpenApiTransformerBase {
106
+ /** Transforms an <code>Array[ValueType]</code> using a given transform
107
+ * method.
108
+ *
109
+ * @template ValueType, TransformedType
110
+ * @param {!Array<ValueType>|* } arr Array to transform.
111
+ * @param {function(this:!OpenApiTransformerBase, ValueType): TransformedType
112
+ * } transform Method which transforms values in arr.
113
+ * @returns {!Array<TransformedType>|* } If arr is an Array, the result of
114
+ * Array#map(transform). Otherwise, obj is returned unchanged.
115
+ */
116
+ transformArray ( arr , transform ) {
117
+ if ( ! isArray ( arr ) ) {
118
+ return arr ;
119
+ }
120
+
121
+ return arr . map ( transform , this ) ;
122
+ }
123
+
106
124
/** Transforms a <code>Map[string, ValueType]</code> using a given transform
107
125
* method.
108
126
*
@@ -235,7 +253,7 @@ class OpenApiTransformerBase {
235
253
if ( items !== undefined ) {
236
254
// Note: OpenAPI 3.0 disallows Arrays, 2.0 and 3.1 drafts allow it
237
255
if ( isArray ( items ) ) {
238
- newSchema . items = items . map ( this . transformSchema , this ) ;
256
+ newSchema . items = this . transformArray ( items , this . transformSchema ) ;
239
257
} else {
240
258
newSchema . items = this . transformSchema ( items ) ;
241
259
}
@@ -296,7 +314,8 @@ class OpenApiTransformerBase {
296
314
for ( const schemaProp of [ 'allOf' , 'anyOf' , 'oneOf' ] ) {
297
315
const subSchemas = schema [ schemaProp ] ;
298
316
if ( isArray ( subSchemas ) ) {
299
- newSchema [ schemaProp ] = subSchemas . map ( this . transformSchema , this ) ;
317
+ newSchema [ schemaProp ] =
318
+ this . transformArray ( subSchemas , this . transformSchema ) ;
300
319
}
301
320
}
302
321
@@ -604,7 +623,7 @@ class OpenApiTransformerBase {
604
623
605
624
if ( isArray ( operation . parameters ) ) {
606
625
newOperation . parameters =
607
- operation . parameters . map ( this . transformParameter , this ) ;
626
+ this . transformArray ( operation . parameters , this . transformParameter ) ;
608
627
}
609
628
610
629
if ( operation . requestBody !== undefined ) {
@@ -622,12 +641,15 @@ class OpenApiTransformerBase {
622
641
}
623
642
624
643
if ( isArray ( operation . security ) ) {
625
- newOperation . security =
626
- operation . security . map ( this . transformSecurityRequirement , this ) ;
644
+ newOperation . security = this . transformArray (
645
+ operation . security ,
646
+ this . transformSecurityRequirement ,
647
+ ) ;
627
648
}
628
649
629
650
if ( isArray ( operation . servers ) ) {
630
- newOperation . servers = operation . servers . map ( this . transformServer , this ) ;
651
+ newOperation . servers =
652
+ this . transformArray ( operation . servers , this . transformServer ) ;
631
653
}
632
654
633
655
return newOperation ;
@@ -650,12 +672,13 @@ class OpenApiTransformerBase {
650
672
const newPathItem = { ...pathItem } ;
651
673
652
674
if ( isArray ( pathItem . servers ) ) {
653
- newPathItem . servers = pathItem . servers . map ( this . transformServer , this ) ;
675
+ newPathItem . servers =
676
+ this . transformArray ( pathItem . servers , this . transformServer ) ;
654
677
}
655
678
656
679
if ( isArray ( pathItem . parameters ) ) {
657
680
newPathItem . parameters =
658
- pathItem . parameters . map ( this . transformParameter , this ) ;
681
+ this . transformArray ( pathItem . parameters , this . transformParameter ) ;
659
682
}
660
683
661
684
for ( const method of Object . keys ( pathItem ) ) {
@@ -960,7 +983,8 @@ class OpenApiTransformerBase {
960
983
}
961
984
962
985
if ( isArray ( openApi . servers ) ) {
963
- newOpenApi . servers = openApi . servers . map ( this . transformServer , this ) ;
986
+ newOpenApi . servers =
987
+ this . transformArray ( openApi . servers , this . transformServer ) ;
964
988
}
965
989
966
990
// https://github.com/Azure/autorest/blob/master/docs/extensions/readme.md#x-ms-parameterized-host
@@ -971,7 +995,7 @@ class OpenApiTransformerBase {
971
995
if ( isArray ( parameters ) ) {
972
996
newOpenApi [ 'x-ms-parameterized-host' ] = {
973
997
...xMsParameterizedHost ,
974
- parameters : parameters . map ( this . transformParameter , this ) ,
998
+ parameters : this . transformArray ( parameters , this . transformParameter ) ,
975
999
} ;
976
1000
}
977
1001
}
@@ -1013,12 +1037,14 @@ class OpenApiTransformerBase {
1013
1037
}
1014
1038
1015
1039
if ( isArray ( openApi . security ) ) {
1016
- newOpenApi . security =
1017
- openApi . security . map ( this . transformSecurityRequirement , this ) ;
1040
+ newOpenApi . security = this . transformArray (
1041
+ openApi . security ,
1042
+ this . transformSecurityRequirement ,
1043
+ ) ;
1018
1044
}
1019
1045
1020
1046
if ( isArray ( openApi . tags ) ) {
1021
- newOpenApi . tags = openApi . tags . map ( this . transformTag , this ) ;
1047
+ newOpenApi . tags = this . transformArray ( openApi . tags , this . transformTag ) ;
1022
1048
}
1023
1049
1024
1050
if ( openApi . externalDocs !== undefined ) {
0 commit comments