| 570 | } |
| 571 | |
| 572 | function serializeQueryParams(params: {[key: string]: any}): string { |
| 573 | const strParams: string[] = Object.entries(params) |
| 574 | .map(([name, value]) => { |
| 575 | return Array.isArray(value) |
| 576 | ? value.map((v) => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') |
| 577 | : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`; |
| 578 | }) |
| 579 | .filter((s) => s); |
| 580 | |
| 581 | return strParams.length ? `?${strParams.join('&')}` : ''; |
| 582 | } |
| 583 | |
| 584 | const SEGMENT_RE = /^[^\/()?;#]+/; |
| 585 | function matchSegments(str: string): string { |