55use Illuminate \Support \ServiceProvider ;
66use League \CommonMark \Environment \Environment ;
77use League \CommonMark \Extension \CommonMark \CommonMarkCoreExtension ;
8+ use League \CommonMark \Extension \ExternalLink \ExternalLinkExtension ;
9+ use League \CommonMark \Extension \GithubFlavoredMarkdownExtension ;
810use League \CommonMark \Extension \Mention \MentionExtension ;
911use League \CommonMark \MarkdownConverter ;
1012
@@ -15,17 +17,26 @@ public function register(): void
1517 $ this ->app ->singleton (Converter::class, function () {
1618 $ environment = new Environment ([
1719 'html_input ' => 'escape ' ,
20+ 'max_nesting_level ' => 10 ,
21+ 'allow_unsafe_links ' => false ,
1822 'mentions ' => [
1923 'username ' => [
2024 'prefix ' => '@ ' ,
2125 'pattern ' => '[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38}(?!\w) ' ,
2226 'generator ' => config ('app.url ' ).'/user/%s ' ,
2327 ],
2428 ],
29+ 'external_link ' => [
30+ 'internal_hosts ' => config ('app.host ' ),
31+ 'open_in_new_window ' => true ,
32+ 'nofollow ' => 'external ' ,
33+ ],
2534 ]);
2635
2736 $ environment ->addExtension (new CommonMarkCoreExtension );
37+ $ environment ->addExtension (new GithubFlavoredMarkdownExtension );
2838 $ environment ->addExtension (new MentionExtension );
39+ $ environment ->addExtension (new ExternalLinkExtension );
2940
3041 return new LeagueConverter (new MarkdownConverter ($ environment ));
3142 });
0 commit comments