diff --git a/.changeset/lazy-toys-enjoy.md b/.changeset/lazy-toys-enjoy.md new file mode 100644 index 0000000..96c505a --- /dev/null +++ b/.changeset/lazy-toys-enjoy.md @@ -0,0 +1,5 @@ +--- +'socialitejs': patch +--- + +Twitter `@` prefix is now optionally matched. diff --git a/src/networks/tests/twitter.test.ts b/src/networks/tests/twitter.test.ts index 3352afb..ce1172d 100644 --- a/src/networks/tests/twitter.test.ts +++ b/src/networks/tests/twitter.test.ts @@ -5,9 +5,10 @@ import {twitter} from '../twitter'; describe('Social networks > twitter', () => { const mockSocialite = new Socialite(allSocialiteNetworks); - const mockCommonUrl = `https://www.twitter.com/${twitter.prefix}${mockGenericUser}`; it('returns expected `id`, `user`, and `prefix` from common url', () => { + const mockCommonUrl = `https://www.twitter.com/${mockGenericUser}`; + const {id, user, prefix} = mockSocialite.parseProfile( mockCommonUrl, ) as SocialiteProfile; @@ -17,8 +18,20 @@ describe('Social networks > twitter', () => { expect(prefix).toBe(twitter.prefix); }); + it('returns expected `id`, `user`, and `prefix` from prefixed url', () => { + const mockPrefixedUrl = `https://www.twitter.com/${twitter.prefix}${mockGenericUser}`; + + const {id, user, prefix} = mockSocialite.parseProfile( + mockPrefixedUrl, + ) as SocialiteProfile; + + expect(id).toBe(twitter.id); + expect(user).toBe(mockGenericUser); + expect(prefix).toBe(twitter.prefix); + }); + it('returns expected `id`, `user`, and `prefix` from url with trailing path', () => { - const mockUncommonUrl = `${mockCommonUrl}/trail-123`; + const mockUncommonUrl = `https://www.twitter.com/${twitter.prefix}${mockGenericUser}/trail-123`; const {id, user, prefix} = mockSocialite.parseProfile( mockUncommonUrl, ) as SocialiteProfile; diff --git a/src/networks/twitter.ts b/src/networks/twitter.ts index 5f34d2c..1d42f4c 100644 --- a/src/networks/twitter.ts +++ b/src/networks/twitter.ts @@ -10,7 +10,6 @@ export const twitter: SocialiteNetwork = { appUrl: `https://mobile.twitter.com/${prefix}${profileReplacement.user}`, matcher: { domain: /twitter/, - user: `${prefix}[^\\/]+`, }, prefix, }; diff --git a/src/tests/fixtures/valid-profiles.ts b/src/tests/fixtures/valid-profiles.ts index 6edc87c..61b74a8 100644 --- a/src/tests/fixtures/valid-profiles.ts +++ b/src/tests/fixtures/valid-profiles.ts @@ -15,7 +15,7 @@ import type { } from '../../types'; import {getUrlWithSubstitutions} from '../../utilities'; -export const mockGenericUser = '~f00+96%Hum@n_123-!'; +export const mockGenericUser = '~f00+96%Hum^n_123-!'; export const mockBehanceUser: UserName = 'Uz3r_N@me!'; export const mockBehanceUrl: BasicUrl = `https://www.behance.net/${mockBehanceUser}/`;