From af9818f75c82f6e6aa9a037b67299a5d1056a088 Mon Sep 17 00:00:00 2001 From: DecDuck Date: Wed, 28 Jan 2026 19:42:57 +1100 Subject: [PATCH] feat: link validator --- docs/astro.config.mjs | 3 +- docs/package.json | 1 + docs/pnpm-lock.yaml | 89 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 4b858875..fbbde6c9 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -2,12 +2,13 @@ import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; import starlightThemeRapide from "starlight-theme-rapide"; +import starlightLinksValidator from 'starlight-links-validator' // https://astro.build/config export default defineConfig({ integrations: [ starlight({ - plugins: [starlightThemeRapide()], + plugins: [starlightThemeRapide(), starlightLinksValidator()], title: "Drop OSS", social: [ { diff --git a/docs/package.json b/docs/package.json index 011c22a5..11948935 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,6 +13,7 @@ "@astrojs/starlight": "^0.37.4", "astro": "^5.6.1", "sharp": "^0.34.2", + "starlight-links-validator": "^0.19.2", "starlight-theme-rapide": "^0.5.2" } } \ No newline at end of file diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 40baddac..87561452 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: sharp: specifier: ^0.34.2 version: 0.34.5 + starlight-links-validator: + specifier: ^0.19.2 + version: 0.19.2(@astrojs/starlight@0.37.4(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3)))(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3)) starlight-theme-rapide: specifier: ^0.5.2 version: 0.5.2(@astrojs/starlight@0.37.4(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3))) @@ -618,6 +621,9 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/picomatch@3.0.2': + resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==} + '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -643,6 +649,10 @@ packages: ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -876,6 +886,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -962,6 +976,10 @@ packages: h3@1.15.5: resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + hast-util-embedded@3.0.0: resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} @@ -1046,6 +1064,10 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -1088,6 +1110,10 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -1520,6 +1546,13 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + starlight-links-validator@0.19.2: + resolution: {integrity: sha512-IHeK3R78fsmv53VfRkGbXkwK1CQEUBHM9QPzBEyoAxjZ/ssi5gjV+F4oNNUppTR48iPp+lEY0MTAmvkX7yNnkw==} + engines: {node: '>=18.17.1'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + astro: '>=5.1.5' + starlight-theme-rapide@0.5.2: resolution: {integrity: sha512-4kNJutt0/3E0rjZvG9hvKeTTHGOHC97t2ZQDwDcokTM25yLgxavFu7BCm2Dm2UTw7fJpRXpu4gUWJ9xAOBmNww==} engines: {node: '>=18'} @@ -1554,11 +1587,23 @@ packages: style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-hyperlinks@4.4.0: + resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} + engines: {node: '>=20'} + svgo@4.0.0: resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} engines: {node: '>=16'} hasBin: true + terminal-link@5.0.0: + resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} + engines: {node: '>=20'} + tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -2348,6 +2393,8 @@ snapshots: '@types/node@17.0.45': {} + '@types/picomatch@3.0.2': {} + '@types/sax@1.2.7': dependencies: '@types/node': 17.0.45 @@ -2368,6 +2415,10 @@ snapshots: dependencies: string-width: 4.2.3 + ansi-escapes@7.2.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -2651,6 +2702,8 @@ snapshots: entities@6.0.1: {} + environment@1.1.0: {} + es-module-lexer@1.7.0: {} esast-util-from-estree@2.0.0: @@ -2777,6 +2830,8 @@ snapshots: ufo: 1.6.3 uncrypto: 0.1.3 + has-flag@5.0.1: {} + hast-util-embedded@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -2984,6 +3039,8 @@ snapshots: iron-webcrypto@1.2.1: {} + is-absolute-url@4.0.1: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -3015,6 +3072,8 @@ snapshots: kleur@3.0.3: {} + kleur@4.1.5: {} + klona@2.0.6: {} longest-streak@3.1.0: {} @@ -3873,6 +3932,24 @@ snapshots: space-separated-tokens@2.0.2: {} + starlight-links-validator@0.19.2(@astrojs/starlight@0.37.4(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3)))(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3)): + dependencies: + '@astrojs/starlight': 0.37.4(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3)) + '@types/picomatch': 3.0.2 + astro: 5.16.15(rollup@4.57.0)(typescript@5.9.3) + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-has-property: 3.0.0 + is-absolute-url: 4.0.1 + kleur: 4.1.5 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-to-string: 4.0.0 + picomatch: 4.0.3 + terminal-link: 5.0.0 + unist-util-visit: 5.1.0 + transitivePeerDependencies: + - supports-color + starlight-theme-rapide@0.5.2(@astrojs/starlight@0.37.4(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3))): dependencies: '@astrojs/starlight': 0.37.4(astro@5.16.15(rollup@4.57.0)(typescript@5.9.3)) @@ -3912,6 +3989,13 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + supports-color@10.2.2: {} + + supports-hyperlinks@4.4.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + svgo@4.0.0: dependencies: commander: 11.1.0 @@ -3922,6 +4006,11 @@ snapshots: picocolors: 1.1.1 sax: 1.4.4 + terminal-link@5.0.0: + dependencies: + ansi-escapes: 7.2.0 + supports-hyperlinks: 4.4.0 + tiny-inflate@1.0.3: {} tinyexec@1.0.2: {}