diff --git a/utils/resolve-refs.test.tsx b/utils/resolve-refs.test.tsx index 9b29330..2df9845 100644 --- a/utils/resolve-refs.test.tsx +++ b/utils/resolve-refs.test.tsx @@ -48,4 +48,10 @@ suite("function resolveRefs", () => { resolveRefs(el, "/"); assert.deepEqual(el, elFn()); }); + + test("ignores absolute URIs", () => { + const el =
Content with Link
; + const resEl = resolveRefs(el, "/"); + assert.equal(el, resEl); + }); }); diff --git a/utils/resolve-refs.ts b/utils/resolve-refs.ts index d3ea932..7bdba49 100644 --- a/utils/resolve-refs.ts +++ b/utils/resolve-refs.ts @@ -26,8 +26,10 @@ export function resolveRefs(node: Node, dir: string) { && node.attributes.has("href") ) { const original = node.attributes.get("href")! + if (/^[a-z][a-z+.-]*:/i.test(original)) { + // Ignore refs that start with a URI scheme. /* node:coverage ignore next 3 */ - if (!original.startsWith("/")) { + } else if (!original.startsWith("/")) { console.log(`Warning: found relative href to ${original}`); } else { const ref = posix.relative(dir, original);