Skip to content

Commit 613a4e9

Browse files
BYKbitsandfoxes
authored andcommitted
feat(md): Rewrite URLs to be absolute and to .md versions (#14196)
1 parent 758de93 commit 613a4e9

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"@google-cloud/storage": "^7.7.0",
4646
"@mdx-js/loader": "^3.0.0",
4747
"@mdx-js/react": "^3.0.0",
48+
"@pondorasti/remark-img-links": "^1.0.8",
4849
"@popperjs/core": "^2.11.8",
4950
"@prettier/plugin-xml": "^3.3.1",
5051
"@radix-ui/colors": "^3.0.0",
@@ -97,6 +98,7 @@
9798
"rehype-remark": "^10.0.1",
9899
"rehype-stringify": "^10.0.0",
99100
"remark-gfm": "^4.0.1",
101+
"remark-link-rewrite": "^1.0.7",
100102
"remark-mdx-images": "^3.0.0",
101103
"remark-parse": "^11.0.0",
102104
"remark-prism": "^1.3.6",

scripts/generate-md-exports.mjs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env node
22
/* eslint-disable no-console */
33
import {ListObjectsV2Command, PutObjectCommand, S3Client} from '@aws-sdk/client-s3';
4+
import imgLinks from '@pondorasti/remark-img-links';
45
import {selectAll} from 'hast-util-select';
56
import {createHash} from 'node:crypto';
67
import {createReadStream, createWriteStream, existsSync} from 'node:fs';
@@ -20,11 +21,13 @@ import {
2021
import rehypeParse from 'rehype-parse';
2122
import rehypeRemark from 'rehype-remark';
2223
import remarkGfm from 'remark-gfm';
24+
import RemarkLinkRewrite from 'remark-link-rewrite';
2325
import remarkStringify from 'remark-stringify';
2426
import {unified} from 'unified';
2527
import {remove} from 'unist-util-remove';
2628

27-
const CACHE_VERSION = 2;
29+
const DOCS_BASE_URL = 'https://docs.sentry.io/';
30+
const CACHE_VERSION = 3;
2831
const CACHE_COMPRESS_LEVEL = 4;
2932
const R2_BUCKET = process.env.NEXT_PUBLIC_DEVELOPER_DOCS
3033
? 'sentry-develop-docs'
@@ -247,6 +250,19 @@ async function genMDFromHTML(source, target, {cacheDir, noCache}) {
247250
}),
248251
},
249252
})
253+
.use(RemarkLinkRewrite, {
254+
// There's a chance we might be changing absolute URLs here
255+
// We'll check the code base and fix that later
256+
replacer: url => {
257+
const mdUrl = new URL(url, DOCS_BASE_URL);
258+
const newPathName = mdUrl.pathname.replace(/\/?$/, '');
259+
if (path.extname(newPathName) === '') {
260+
mdUrl.pathname = `${newPathName}.md`;
261+
}
262+
return mdUrl;
263+
},
264+
})
265+
.use(imgLinks, {absolutePath: DOCS_BASE_URL})
250266
// We end up with empty inline code blocks, probably from some tab logic in the HTML, remove them
251267
.use(() => tree => remove(tree, {type: 'inlineCode', value: ''}))
252268
.use(remarkGfm)

yarn.lock

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2663,6 +2663,13 @@
26632663
resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
26642664
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
26652665

2666+
"@pondorasti/remark-img-links@^1.0.8":
2667+
version "1.0.8"
2668+
resolved "https://registry.yarnpkg.com/@pondorasti/remark-img-links/-/remark-img-links-1.0.8.tgz#1ba8246834c0a5b6b13a9b25a77827d49f6bea25"
2669+
integrity sha512-UpW5AfimYi7EdkL9qvQ4trzIzgi5KERdd4KHN8fkVWrh2BqCzKuheJbAzSgIxJr0opQ7NvaIwf+JRjV/fBRdrA==
2670+
dependencies:
2671+
unist-util-visit "1.4.0"
2672+
26662673
"@popperjs/core@^2.11.8":
26672674
version "2.11.8"
26682675
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
@@ -12174,6 +12181,13 @@ remark-gfm@^4.0.1:
1217412181
remark-stringify "^11.0.0"
1217512182
unified "^11.0.0"
1217612183

12184+
remark-link-rewrite@^1.0.7:
12185+
version "1.0.7"
12186+
resolved "https://registry.yarnpkg.com/remark-link-rewrite/-/remark-link-rewrite-1.0.7.tgz#c8b5ad3708b0a8f6dd93caeab4c4d4c3e7e0d3a4"
12187+
integrity sha512-jfmXL8VL3O7Ca4g+Ya0A0S9LIpVhCUSqMHiei4N8Z8Mx9z/oEI1HDoa1ZcF9/tS0I7NwydGsPkw2zT4eeoD6+Q==
12188+
dependencies:
12189+
unist-util-visit "^4.1.1"
12190+
1217712191
remark-mdx-frontmatter@^4.0.0:
1217812192
version "4.0.0"
1217912193
resolved "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-4.0.0.tgz"
@@ -13423,6 +13437,11 @@ unist-util-generated@^2.0.0:
1342313437
resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz"
1342413438
integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==
1342513439

13440+
unist-util-is@^3.0.0:
13441+
version "3.0.0"
13442+
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
13443+
integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==
13444+
1342613445
unist-util-is@^5.0.0:
1342713446
version "5.2.1"
1342813447
resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz"
@@ -13504,6 +13523,13 @@ unist-util-stringify-position@^4.0.0:
1350413523
dependencies:
1350513524
"@types/unist" "^3.0.0"
1350613525

13526+
unist-util-visit-parents@^2.0.0:
13527+
version "2.1.2"
13528+
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
13529+
integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
13530+
dependencies:
13531+
unist-util-is "^3.0.0"
13532+
1350713533
unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1:
1350813534
version "5.1.3"
1350913535
resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz"
@@ -13520,7 +13546,14 @@ unist-util-visit-parents@^6.0.0:
1352013546
"@types/unist" "^3.0.0"
1352113547
unist-util-is "^6.0.0"
1352213548

13523-
unist-util-visit@^4.0.0, unist-util-visit@^4.1.0:
13549+
unist-util-visit@1.4.0:
13550+
version "1.4.0"
13551+
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.0.tgz#1cb763647186dc26f5e1df5db6bd1e48b3cc2fb1"
13552+
integrity sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==
13553+
dependencies:
13554+
unist-util-visit-parents "^2.0.0"
13555+
13556+
unist-util-visit@^4.0.0, unist-util-visit@^4.1.0, unist-util-visit@^4.1.1:
1352413557
version "4.1.2"
1352513558
resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz"
1352613559
integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==

0 commit comments

Comments
 (0)