From b4cb026b332d2cc07911f3994dc87467819d87c4 Mon Sep 17 00:00:00 2001 From: Paul Rodwell Date: Thu, 21 Aug 2025 11:32:08 +0100 Subject: [PATCH 1/2] Add noopener to external links and improve URL matching, adding support for relative URLs. protocol is not used, so make a non-capturing group wrap protocol group with a non-capturing group that matchs on protocol, or a leading '/', to add support for relative external links. --- lib/resolve.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/resolve.js b/lib/resolve.js index 83a4328..1945ab4 100644 --- a/lib/resolve.js +++ b/lib/resolve.js @@ -47,10 +47,12 @@ resolve.resolveLinks = function (string, sanitize = escape) { } } - const external = (match, href, protocol, rest) => - stash( - `${escape(rest)} `, + const external = (match, href, rest) => { + console.log('*** external', { href, rest }) + return stash( + `${escape(rest)} `, ) + } // markup conversion happens in four phases: // - unexpected markers are adulterated @@ -61,6 +63,6 @@ resolve.resolveLinks = function (string, sanitize = escape) { string = (string || '') .replace(/〖(\d+)〗/g, '〖 $1 〗') .replace(/\[\[([^\]]+)\]\]/gi, internal) - .replace(/\[((http|https|ftp):.*?) (.*?)\]/gi, external) + .replace(/\[((?:(?:https?|ftp):|\/).*?) (.*?)\]/gi, external) return sanitize(string).replace(/〖(\d+)〗/g, unstash) } From 1c8d258b98b3cefafb262d75398351bbece8d126 Mon Sep 17 00:00:00 2001 From: Paul Rodwell Date: Thu, 21 Aug 2025 12:09:44 +0100 Subject: [PATCH 2/2] remove console log. --- lib/resolve.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/resolve.js b/lib/resolve.js index 1945ab4..d384048 100644 --- a/lib/resolve.js +++ b/lib/resolve.js @@ -47,12 +47,10 @@ resolve.resolveLinks = function (string, sanitize = escape) { } } - const external = (match, href, rest) => { - console.log('*** external', { href, rest }) - return stash( + const external = (match, href, rest) => + stash( `${escape(rest)} `, ) - } // markup conversion happens in four phases: // - unexpected markers are adulterated