summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/url.ts
blob: b6a997449a78bbf4ef3cc6ea5af0706a3fa86656 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* objを検査して
 * 1. 配列に何も入っていない時はクエリを付けない
 * 2. プロパティがundefinedの時はクエリを付けない
 * (new URLSearchParams(obj)ではそこまで丁寧なことをしてくれない)
 */ 
export function query(obj: Record<string, any>): string {
	const params = Object.entries(obj)
		.filter(([, v]) => Array.isArray(v) ? v.length : v !== undefined)
		.reduce((a, [k, v]) => (a[k] = v, a), {} as Record<string, any>);

	return Object.entries(params)
		.map((p) => `${p[0]}=${encodeURIComponent(p[1])}`)
		.join('&');
}

export function appendQuery(url: string, query: string): string {
	return `${url}${/\?/.test(url) ? url.endsWith('?') ? '' : '&' : '?'}${query}`;
}