import { partial } from 'lodash'; function serializeAndImplode(separator: string, name: string, value: Array) { return encodeURIComponent(name) + '=' + value.map(String).map(encodeURIComponent).join(separator); } function serializeAndExplode(name: string, value: Array) { return value .map(String) .map(v => `${encodeURIComponent(name)}=${encodeURIComponent(v)}`) .join('&'); } export function serializeWithDelimitedStyle( separator: string, name: string, value: Array, explode?: boolean ): string { return explode ? serializeAndExplode(name, value) : serializeAndImplode(separator, name, value); } export const serializeWithCommaDelimitedStyle = partial(serializeWithDelimitedStyle, ','); export const serializeWithSpaceDelimitedStyle = partial(serializeWithDelimitedStyle, ' '); export const serializeWithPipeDelimitedStyle = partial(serializeWithDelimitedStyle, '|');