22 * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
33 */
44
5- import { parseParamDecorator , populateFromGlobals , valToString } from "./utils" ;
5+ import { ParamDecorator , parseParamDecorator , populateFromGlobals , valToString } from "./utils" ;
66
7- import { requestMetadataKey } from "./requestbody" ;
8- import { ParamDecorator } from "./utils" ;
7+ import { requestMetadataKey } from "./requestbody" ;
98
109export const qpMetadataKey = "queryParam" ;
1110const queryStringPrefix = "?" ;
@@ -34,7 +33,7 @@ export function serializeQueryParams(queryParams: any, globals?: any): string {
3433 fname
3534 ) ;
3635
37- if ( ! qpAnn ) return { serialize : ( ) => "" } ;
36+ if ( ! qpAnn ) return { serialize : ( ) => "" } ;
3837
3938 const qpDecorator : ParamDecorator = parseParamDecorator (
4039 qpAnn ,
@@ -49,27 +48,38 @@ export function serializeQueryParams(queryParams: any, globals?: any): string {
4948 value = populateFromGlobals ( value , fname , "queryParam" , globals ) ;
5049
5150 if ( qpDecorator . Serialization === "json" )
52- queryStringParts . push ( jsonSerializer ( { [ qpDecorator . ParamName ] : value } ) ) ;
51+ queryStringParts . push ( jsonSerializer ( { [ qpDecorator . ParamName ] : value } ) ) ;
5352 else {
5453 switch ( qpDecorator . Style ) {
5554 case "deepObject" :
5655 queryStringParts . push (
57- deepObjectSerializer ( { [ qpDecorator . ParamName ] : value } )
56+ deepObjectSerializer ( { [ qpDecorator . ParamName ] : value } )
5857 ) ;
5958 return ;
6059 case "form" :
6160 if ( ! qpDecorator . Explode )
6261 queryStringParts . push (
63- formSerializer ( { [ qpDecorator . ParamName ] : value } )
62+ noExplodeSerializer ( { [ qpDecorator . ParamName ] : value } )
6463 ) ;
6564 else
6665 queryStringParts . push (
67- formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
66+ formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
6867 ) ;
6968 return ;
69+ case "pipeDelimited" :
70+ if ( ! qpDecorator . Explode ) {
71+ queryStringParts . push (
72+ noExplodeSerializer ( { [ qpDecorator . ParamName ] : value } , "|" )
73+ ) ;
74+ } else {
75+ queryStringParts . push (
76+ formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
77+ ) ;
78+ }
79+ return ;
7080 default :
7181 queryStringParts . push (
72- formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
82+ formSerializerExplode ( { [ qpDecorator . ParamName ] : value } )
7383 ) ;
7484 }
7585 }
@@ -88,15 +98,15 @@ function jsonSerializer(params: Record<string, any>): string {
8898}
8999
90100// TODO: Add support for disabling percent encoding for reserved characters
91- function formSerializer ( params : Record < string , any > ) : string {
101+ function noExplodeSerializer ( params : Record < string , any > , delimiter = "," ) : string {
92102 const query : string [ ] = [ ] ;
93103
94104 Object . entries ( Object . assign ( { } , params ) ) . forEach ( ( [ key , value ] ) => {
95105 if ( ! value ) return ;
96106 if ( value !== Object ( value ) )
97107 query . push ( `${ key } =${ encodeURIComponent ( valToString ( value ) ) } ` ) ;
98108 else if ( Array . isArray ( value ) ) {
99- const values : string = value . map ( ( aValue ) => aValue ) . join ( "," ) ;
109+ const values : string = value . map ( ( aValue ) => aValue ) . join ( delimiter ) ;
100110
101111 query . push ( `${ key } =${ encodeURIComponent ( values ) } ` ) ;
102112 } else {
0 commit comments