defaultProfiles top-level property

Map<String, List<Link>> defaultProfiles
final

Implementation

final Map<String, List<Link>> defaultProfiles = {
  'amazon': Profile(
    name: 'amazon',
    icon: IconDefinition(
        iconType: 'fa', value: 'amazon', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?amazon.com/shop/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://amazon.com/shop/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'applemusic': Profile(
    name: 'applemusic',
    icon: IconDefinition(
        iconType: 'fa', value: 'apple', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?music.apple.com/[\\w]+/artist/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://music.apple.com/artist/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'applepodcasts': Profile(
    name: 'applepodcasts',
    icon: IconDefinition(
        iconType: 'fa', value: 'podcast', faStyle: FaIconStyle.solid),
    matches: [
      Link(
          match:
              '(https?://)?podcasts\\.apple\\.com/(?:[\\w]+/)?podcast/(?:[\\w-]+/)?id(\\d+)/?',
          group: 2,
          pattern: 'https://podcasts.apple.com/podcast/id{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'appstore': Profile(
    name: 'appstore',
    icon: IconDefinition(
        iconType: 'fa', value: 'app-store', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?apps.apple.com/[\\w]+/app/[\\w-]+/id({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://apps.apple.com/app/id{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'bandcamp': Profile(
    name: 'bandcamp',
    icon: IconDefinition(
        iconType: 'fa', value: 'bandcamp', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?({PROFILE_ID})\\.bandcamp\\.com/?',
          group: 2,
          pattern: 'https://{PROFILE_ID}.bandcamp.com'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'behance': Profile(
    name: 'behance',
    icon: IconDefinition(
        iconType: 'fa', value: 'behance', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?behance.net/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://behance.net/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'bluesky': Profile(
    name: 'bluesky',
    icon: IconDefinition(
        iconType: 'fa', value: 'bluesky', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?bsky.app/profile/({PROFILE_ID}(\\.\\w+)+)/?',
          group: 3,
          pattern: 'https://bsky.app/profile/{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID}(\\.\\w+)+)', group: 1),
    ],
  ).matches,
  'discord': Profile(
    name: 'discord',
    icon: IconDefinition(
        iconType: 'fa', value: 'discord', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?discord.gg/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://discord.gg/{PROFILE_ID}'),
      Link(
          match: '(https?://)?([\\w.]*\\.)?discord.com/invite/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://discord.gg/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'dribbble': Profile(
    name: 'dribbble',
    icon: IconDefinition(
        iconType: 'fa', value: 'dribbble', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?dribbble.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://dribbble.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'email': Profile(
    name: 'email',
    pattern: '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}',
    icon: IconDefinition(
        iconType: 'fa', value: 'envelope', faStyle: FaIconStyle.solid),
    matches: [
      Link(
          match: 'mailto:({PROFILE_ID})/?',
          group: 1,
          pattern: 'mailto:{PROFILE_ID}',
          idPattern: '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}'),
      Link(
          match: '({PROFILE_ID})',
          group: 1,
          idPattern: '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}'),
    ],
  ).matches,
  'etsy': Profile(
    name: 'etsy',
    icon: IconDefinition(
        iconType: 'fa', value: 'etsy', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?etsy.com/shop/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://etsy.com/shop/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'facebook': Profile(
    name: 'facebook',
    icon: IconDefinition(
        iconType: 'fa', value: 'facebook-f', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?facebook.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://facebook.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'github': Profile(
    name: 'github',
    icon: IconDefinition(
        iconType: 'fa', value: 'github', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?github.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://github.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'goodreads': Profile(
    name: 'goodreads',
    icon: IconDefinition(
        iconType: 'fa', value: 'goodreads', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?goodreads.com/user/show/([\\d]+(?:-[\\w-]+)?)/?/?',
          group: 3,
          pattern: 'https://goodreads.com/user/show/{PROFILE_ID}'),
      Link(match: '([\\d]+(?:-[\\w-]+)?)', group: 1),
    ],
  ).matches,
  'instagram': Profile(
    name: 'instagram',
    icon: IconDefinition(
        iconType: 'fa', value: 'instagram', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?instagram.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://instagram.com/{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'keybase': Profile(
    name: 'keybase',
    icon: IconDefinition(
        iconType: 'fa', value: 'keybase', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?keybase.io/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://keybase.io/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'letterboxd': Profile(
    name: 'letterboxd',
    icon: IconDefinition(
        iconType: 'fa', value: 'letterboxd', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?letterboxd.com/([\\w]{2,15})/?',
          group: 3,
          pattern: 'https://letterboxd.com/{PROFILE_ID}'),
      Link(match: '^[\\w]{2,15}', group: 0),
    ],
  ).matches,
  'linkedin': Profile(
    name: 'linkedin',
    icon: IconDefinition(
        iconType: 'fa', value: 'linkedin-in', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?linkedin.com/in/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://linkedin.com/in/{PROFILE_ID}'),
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?linkedin.com/mwlite/in/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://linkedin.com/in/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'linktree': Profile(
    name: 'linktree',
    icon: IconDefinition(
        iconType: 'svg',
        value:
            '<svg version=\'1.1\' id=\'Layer_1\' xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\' x=\'0px\' y=\'0px\' viewBox=\'0 0 122 152\' style=\'enable-background:new 0 0 122 152;\' xml:space=\'preserve\'><style type=\'text/css\'> .st0{fill:#010101;} </style> <path class=\'st0\' d=\'M71.78,0H50.22v37.12L25.2,11.13L10.78,25.98L36.89,51.6H0v20.79h37.08l-26.3,26.17l14.43,14.66L61,76.65 l35.98,36.56l14.24-14.66l-26.3-26.17H122V51.6H85.11l26.12-25.61L96.98,11.13l-25.2,25.98V0z M50.22,102.45V152h21.55v-49.55H50.22z\'/> </svg>'),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?linktr.ee/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://linktr.ee/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'mastodon': Profile(
    name: 'mastodon',
    icon: IconDefinition(
        iconType: 'fa', value: 'mastodon', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?mastodon.social/@({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://mastodon.social/@{PROFILE_ID}'),
      Link(
          match: '(https?://)?([\\w.]*\\.)?mstdn.social/@({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://mstdn.social/@{PROFILE_ID}'),
      Link(
          match: '(https?://)?([\\w.]*\\.)?mastodon.world/@({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://mastodon.world/@{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})(@mastodon.social)?', group: 1),
      Link(match: '@?({PROFILE_ID})(@mstdn.social)?', group: 1),
      Link(match: '@?({PROFILE_ID})(@mastodon.world)?', group: 1),
    ],
  ).matches,
  'medium': Profile(
    name: 'medium',
    icon: IconDefinition(
        iconType: 'fa', value: 'medium', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?medium.com/@({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://medium.com/@{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'patreon': Profile(
    name: 'patreon',
    icon: IconDefinition(
        iconType: 'fa', value: 'patreon', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?patreon.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://patreon.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'pinterest': Profile(
    name: 'pinterest',
    icon: IconDefinition(
        iconType: 'fa', value: 'pinterest-p', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?pinterest.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://pinterest.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'playstore': Profile(
    name: 'playstore',
    icon: IconDefinition(
        iconType: 'fa', value: 'google-play', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?play.google.com/store/apps/details\\?id=({PROFILE_ID})/?',
          group: 3,
          pattern:
              'https://play.google.com/store/apps/details?id={PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'reddit': Profile(
    name: 'reddit',
    icon: IconDefinition(
        iconType: 'fa', value: 'reddit-alien', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?reddit.com/user|u/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://reddit.com/user/{PROFILE_ID}'),
      Link(match: 'u/({PROFILE_ID})', group: 1),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'signal': Profile(
    name: 'signal',
    icon: IconDefinition(
        iconType: 'fa', value: 'signal-messenger', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?signal.me/#p/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://signal.me/#p/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'snapchat': Profile(
    name: 'snapchat',
    icon: IconDefinition(
        iconType: 'fa', value: 'snapchat', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?snapchat.com/add/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://snapchat.com/add/{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'soundcloud': Profile(
    name: 'soundcloud',
    icon: IconDefinition(
        iconType: 'fa', value: 'soundcloud', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?soundcloud.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://soundcloud.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'spotify': Profile(
    name: 'spotify',
    icon: IconDefinition(
        iconType: 'fa', value: 'spotify', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?open.spotify.com/user/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://open.spotify.com/user/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'stackoverflow': Profile(
    name: 'stackoverflow',
    icon: IconDefinition(
        iconType: 'fa', value: 'stack-overflow', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?stackoverflow.com/users/({PROFILE_ID})(/[A-Za-z0-9_\\-\\.]+)?/?',
          group: 3,
          pattern: 'https://stackoverflow.com/users/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'substack': Profile(
    name: 'substack',
    icon: IconDefinition(
        iconType: 'bootstrap', value: 'substack', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?({PROFILE_ID}).substack.com/?',
          group: 2,
          pattern: 'https://{PROFILE_ID}.substack.com'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'telegram': Profile(
    name: 'telegram',
    icon: IconDefinition(
        iconType: 'fa', value: 'telegram', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?(t.me|telegram.me)/({PROFILE_ID})/?',
          group: 4,
          pattern: 'https://t.me/{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'threads': Profile(
    name: 'threads',
    icon: IconDefinition(
        iconType: 'fa', value: 'threads', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?threads.net/@({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://threads.net/@{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'tiktok': Profile(
    name: 'tiktok',
    icon: IconDefinition(
        iconType: 'fa', value: 'tiktok', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?tiktok.com/@({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://tiktok.com/@{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'twitch': Profile(
    name: 'twitch',
    icon: IconDefinition(
        iconType: 'fa', value: 'twitch', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?twitch.tv/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://twitch.tv/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'twitter': Profile(
    name: 'twitter',
    icon: IconDefinition(
        iconType: 'fa', value: 'x-twitter', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?twitter.com/@?({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://x.com/{PROFILE_ID}'),
      Link(
          match: '(https?://)?([\\w.]*\\.)?x.com/@?({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://x.com/{PROFILE_ID}'),
      Link(match: '@?({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'vk': Profile(
    name: 'vk',
    icon: IconDefinition(
        iconType: 'fa', value: 'vk', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?vk.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://vk.com/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'website': Profile(
    name: 'website',
    forceStripQuery: true,
    icon: IconDefinition(
        iconType: 'fa', value: 'globe', faStyle: FaIconStyle.solid),
    matches: [
      Link(
          match: '^(?:https://)?([a-z0-9.-]+\\.[a-z]{2,}(?:/[^?#]*)?)',
          group: 1,
          pattern: 'https://{PROFILE_ID}'),
    ],
  ).matches,
  'whatsapp': Profile(
    name: 'whatsapp',
    icon: IconDefinition(
        iconType: 'fa', value: 'whatsapp', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?wa.me/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://wa.me/{PROFILE_ID}'),
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?whatsapp.com/send\\?phone=({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://wa.me/{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
  'youtube': Profile(
    name: 'youtube',
    icon: IconDefinition(
        iconType: 'fa', value: 'youtube-square', faStyle: FaIconStyle.brands),
    matches: [
      Link(
          match: '(https?://)?([\\w.]*\\.)?youtube.com/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://youtube.com/{PROFILE_ID}',
          idPattern: '@{PROFILE_ID}'),
      Link(
          match: '(https?://)?([\\w.]*\\.)?youtube.com/c/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://youtube.com/{PROFILE_ID}',
          idPattern: '@{PROFILE_ID}'),
      Link(
          match:
              '(https?://)?([\\w.]*\\.)?youtube.com/channel/({PROFILE_ID})/?',
          group: 3,
          pattern: 'https://youtube.com/channel/{PROFILE_ID}',
          idPattern: '[^@]{PROFILE_ID}'),
      Link(match: '({PROFILE_ID})', group: 1),
    ],
  ).matches,
};