From a3ed7d994b831a9103325b375c1f79a21117dd72 Mon Sep 17 00:00:00 2001 From: tamaina Date: Sat, 30 Aug 2025 17:22:22 +0900 Subject: [PATCH] =?UTF-8?q?pathname=E3=81=AE=E3=83=AB=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=8C@=E3=81=A7=E5=A7=8B=E3=81=BE=E3=82=8B=E3=81=A8?= =?UTF-8?q?=E3=81=8D=E3=81=A0=E3=81=91acct=20like=20url=E3=81=A8=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/misskey-js/src/acct.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/misskey-js/src/acct.ts b/packages/misskey-js/src/acct.ts index e8c4524ec4..06dcd6fa2c 100644 --- a/packages/misskey-js/src/acct.ts +++ b/packages/misskey-js/src/acct.ts @@ -33,6 +33,9 @@ export class UrlIsNotAcctLikeError extends Error { } } +/** + * Only supports `https?://example.com/@username` or `https?://example.com/@username@other.example.com` + */ export function parseUrl(str: string): Acct { const url = new URL(str); @@ -40,8 +43,7 @@ export function parseUrl(str: string): Acct { if (url.search.length > 0) throw new UrlIsNotAcctLikeError(); const splited = url.pathname.split('/'); - let path = splited.pop(); - if (path === '') path = splited.pop(); // If the last segment is empty due to a trailing '/', use the previous segment + const path = splited[1]; if (!path) throw new UrlIsNotAcctLikeError(); if (!path.startsWith('@')) throw new UrlIsNotAcctLikeError();