2 Commits

Author SHA1 Message Date
f48932001a fix: update markdown-it to v14.1.1 2026-02-20 02:58:22 +01:00
c744c4872a fix: ignore external https image links 2026-02-05 21:12:22 +01:00
6 changed files with 813 additions and 445 deletions

View File

@@ -1,4 +1,10 @@
{ {
"$schema": "./node_modules/oxlint/configuration_schema.json", "$schema": "./node_modules/oxlint/configuration_schema.json",
"extends": ["node_modules/eslint-config-conventions/.oxlintrc.json"] "extends": ["node_modules/eslint-config-conventions/.oxlintrc.json"],
"env": {
"builtin": true,
"browser": true,
"node": true,
"shared-node-browser": true
}
} }

1210
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -36,18 +36,18 @@
"release": "semantic-release" "release": "semantic-release"
}, },
"dependencies": { "dependencies": {
"markdown-it": "14.1.0", "markdown-it": "14.1.1",
"mime": "4.1.0" "mime": "4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@types/markdown-it": "14.1.2", "@types/markdown-it": "14.1.2",
"@types/node": "25.2.1", "@types/node": "25.3.0",
"eslint-config-conventions": "21.2.0", "eslint-config-conventions": "21.2.2",
"markdownlint": "0.40.0", "markdownlint": "0.40.0",
"markdownlint-cli2": "0.20.0", "markdownlint-cli2": "0.21.0",
"oxfmt": "0.28.0", "oxfmt": "0.34.0",
"oxlint": "1.43.0", "oxlint": "1.49.0",
"oxlint-tsgolint": "0.11.4", "oxlint-tsgolint": "0.14.1",
"semantic-release": "25.0.3", "semantic-release": "25.0.3",
"typescript": "5.9.3" "typescript": "5.9.3"
}, },

View File

@@ -70,11 +70,24 @@ const relativeLinksRule = {
url = new URL(hrefSrc, pathToFileURL(params.name)) url = new URL(hrefSrc, pathToFileURL(params.name))
} }
if (url.protocol !== "file:" && type !== "image") { const detail = `"${hrefSrc}"`
if (
type === "image" &&
url.protocol !== "file:" &&
url.protocol !== "http:" &&
url.protocol !== "https:"
) {
onError({
lineNumber,
detail: `${detail} should be an image`,
})
continue continue
} }
const detail = `"${hrefSrc}"` if (url.protocol !== "file:") {
continue
}
if (!fs.existsSync(url)) { if (!fs.existsSync(url)) {
onError({ onError({

View File

@@ -0,0 +1,3 @@
# Valid
![External Image](https://example.com/image.png)

View File

@@ -152,7 +152,7 @@ test("ensure the rule validates correctly", async (t) => {
fixturePath: "test/fixtures/invalid/invalid-image.md", fixturePath: "test/fixtures/invalid/invalid-image.md",
errors: [ errors: [
'"../not-an-image.txt" should be an image', '"../not-an-image.txt" should be an image',
'"mailto:not-an-image@pictures.com" should exist in the file system', '"mailto:not-an-image@pictures.com" should be an image',
], ],
}, },
] ]
@@ -239,6 +239,10 @@ test("ensure the rule validates correctly", async (t) => {
}, },
}, },
}, },
{
name: "should ignore external image links",
fixturePath: "test/fixtures/valid/ignore-external-image.md",
},
] ]
for (const { name, fixturePath, config = defaultConfig } of testCases) { for (const { name, fixturePath, config = defaultConfig } of testCases) {