2023-07-27 00:31:52 -05:00
|
|
|
|
/*
|
2024-02-13 09:59:27 -06:00
|
|
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
2023-07-27 00:31:52 -05:00
|
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
*/
|
|
|
|
|
|
2022-12-29 21:00:50 -06:00
|
|
|
|
/* objを検査して
|
|
|
|
|
* 1. 配列に何も入っていない時はクエリを付けない
|
|
|
|
|
* 2. プロパティがundefinedの時はクエリを付けない
|
|
|
|
|
* (new URLSearchParams(obj)ではそこまで丁寧なことをしてくれない)
|
2023-07-07 17:08:16 -05:00
|
|
|
|
*/
|
2022-07-04 09:46:48 -05:00
|
|
|
|
export function query(obj: Record<string, any>): string {
|
2021-09-30 10:31:43 -05:00
|
|
|
|
const params = Object.entries(obj)
|
2019-02-13 08:45:35 -06:00
|
|
|
|
.filter(([, v]) => Array.isArray(v) ? v.length : v !== undefined)
|
2021-09-30 10:31:43 -05:00
|
|
|
|
.reduce((a, [k, v]) => (a[k] = v, a), {} as Record<string, any>);
|
|
|
|
|
|
|
|
|
|
return Object.entries(params)
|
2022-05-07 00:19:15 -05:00
|
|
|
|
.map((p) => `${p[0]}=${encodeURIComponent(p[1])}`)
|
2021-09-30 10:31:43 -05:00
|
|
|
|
.join('&');
|
2019-02-13 08:45:35 -06:00
|
|
|
|
}
|
2019-03-17 23:20:49 -05:00
|
|
|
|
|
|
|
|
|
export function appendQuery(url: string, query: string): string {
|
|
|
|
|
return `${url}${/\?/.test(url) ? url.endsWith('?') ? '' : '&' : '?'}${query}`;
|
|
|
|
|
}
|
2024-07-14 01:27:52 -05:00
|
|
|
|
|
|
|
|
|
export function extractDomain(url: string) {
|
2024-07-14 03:28:34 -05:00
|
|
|
|
const match = url.match(/^(?:https?:)?(?:\/\/)?(?:[^@\n]+@)?([^:\/\n]+)/im);
|
|
|
|
|
return match ? match[1] : null;
|
2024-07-14 01:27:52 -05:00
|
|
|
|
}
|