nuxt-link-checker 4.3.7 → 4.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-link-checker/_nuxt/entry.vDvfjTuE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js"><script type="module" src="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1764829115599,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-link-checker",buildId:"e925a465-65a0-48e1-b351-fb5252195014",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-link-checker/_nuxt/entry.vDvfjTuE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js"><script type="module" src="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1764879484476,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-link-checker",buildId:"d73fb88d-9131-40ff-9538-e066a6e3577e",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-link-checker/_nuxt/entry.vDvfjTuE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js"><script type="module" src="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1764829115599,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-link-checker",buildId:"e925a465-65a0-48e1-b351-fb5252195014",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-link-checker/_nuxt/entry.vDvfjTuE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js"><script type="module" src="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1764879484477,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-link-checker",buildId:"d73fb88d-9131-40ff-9538-e066a6e3577e",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -1 +1 @@
1
- {"id":"e925a465-65a0-48e1-b351-fb5252195014","timestamp":1764829110124}
1
+ {"id":"d73fb88d-9131-40ff-9538-e066a6e3577e","timestamp":1764879478696}
@@ -0,0 +1 @@
1
+ {"id":"d73fb88d-9131-40ff-9538-e066a6e3577e","timestamp":1764879478696,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-link-checker/_nuxt/entry.vDvfjTuE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js"><script type="module" src="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1764829115600,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-link-checker",buildId:"e925a465-65a0-48e1-b351-fb5252195014",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-link-checker/_nuxt/entry.vDvfjTuE.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js"><script type="module" src="/__nuxt-link-checker/_nuxt/CSiVy0Dp.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1764879484478,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-link-checker",buildId:"d73fb88d-9131-40ff-9538-e066a6e3577e",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
package/dist/module.d.mts CHANGED
@@ -18,8 +18,25 @@ interface ModuleOptions {
18
18
  fetchTimeout: number;
19
19
  /**
20
20
  * Links to ignore when running inspections.
21
+ *
22
+ * Supports:
23
+ * - Exact matches: `/about`
24
+ * - Wildcards: `/admin/**`, `/api/*`
25
+ * - RegExp patterns: `/^\\/blog\\/\\d+$/`
26
+ *
27
+ * Uses radix3 route matching for string patterns.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * excludeLinks: [
32
+ * '/admin/**', // Exclude all admin routes
33
+ * '/api/*', // Exclude direct /api children
34
+ * /^\/blog\/\d+$/, // Exclude blog posts using regex
35
+ * 'https://example.com/**' // Exclude external domain
36
+ * ]
37
+ * ```
21
38
  */
22
- excludeLinks: string[];
39
+ excludeLinks: (string | RegExp)[];
23
40
  /**
24
41
  * Generate a report when using nuxt build` or `nuxt generate`.
25
42
  */
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "nuxt": ">=3.9.0"
5
5
  },
6
6
  "configKey": "linkChecker",
7
- "version": "4.3.7",
7
+ "version": "4.3.9",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.2",
10
10
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -1558,7 +1558,11 @@ function truncateString$1(str, maxLength) {
1558
1558
  return `${str.substring(0, maxLength - 3)}...`;
1559
1559
  }
1560
1560
  async function generateJsonReport(reports, { storage, storageFilepath }) {
1561
- const json = JSON.stringify(reports, null, 2);
1561
+ const filteredReports = reports.map((report) => ({
1562
+ ...report,
1563
+ reports: report.reports.filter((r) => r.error?.length || r.warning?.length)
1564
+ })).filter((report) => report.reports.length > 0);
1565
+ const json = JSON.stringify(filteredReports, null, 2);
1562
1566
  await storage.setItem("link-checker-report.json", json);
1563
1567
  return resolve(storageFilepath, "link-checker-report.json");
1564
1568
  }
@@ -1918,7 +1922,10 @@ const module = defineNuxtModule({
1918
1922
  enabled: true,
1919
1923
  fetchTimeout: 1e4,
1920
1924
  failOnError: false,
1921
- excludeLinks: [],
1925
+ excludeLinks: [
1926
+ // ignore all links starting with /_** using regex
1927
+ /^\/_.*$/
1928
+ ],
1922
1929
  skipInspections: []
1923
1930
  };
1924
1931
  },
@@ -5,7 +5,7 @@ export default function RuleNoDocumentRelative() {
5
5
  id: "no-baseless",
6
6
  // TODO rename to no-document-relative
7
7
  test({ link, fromPath, report }) {
8
- if (link.startsWith("/") || link.startsWith("http") || isNonFetchableLink(link))
8
+ if (link.startsWith("#") || link.startsWith("/") || link.startsWith("http") || isNonFetchableLink(link))
9
9
  return;
10
10
  report({
11
11
  name: "no-baseless",
@@ -3,6 +3,8 @@ export default function RuleNoNonAsciiChars() {
3
3
  return defineRule({
4
4
  id: "no-non-ascii-chars",
5
5
  test({ link, url, report }) {
6
+ if (link.startsWith("#"))
7
+ return;
6
8
  function test(s) {
7
9
  if (/[^\u0020-\u007F]/.test(s)) {
8
10
  report({
@@ -3,6 +3,8 @@ export default function RuleNoUppercaseChars() {
3
3
  return defineRule({
4
4
  id: "no-uppercase-chars",
5
5
  test({ report, link }) {
6
+ if (link.startsWith("#"))
7
+ return;
6
8
  if (link.match(/[A-Z]/)) {
7
9
  report({
8
10
  name: "no-uppercase-chars",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-link-checker",
3
3
  "type": "module",
4
- "version": "4.3.7",
4
+ "version": "4.3.9",
5
5
  "description": "Find and magically fix links that may be negatively effecting your Nuxt sites SEO.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",
@@ -1 +0,0 @@
1
- {"id":"e925a465-65a0-48e1-b351-fb5252195014","timestamp":1764829110124,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}