@docusaurus/utils 0.0.0-5560 → 0.0.0-5562
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.
- package/lib/markdownLinks.d.ts.map +1 -1
- package/lib/markdownLinks.js +15 -6
- package/lib/markdownLinks.js.map +1 -1
- package/package.json +4 -4
- package/src/markdownLinks.ts +24 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownLinks.d.ts","sourceRoot":"","sources":["../src/markdownLinks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,YAAY,IAAI;IACvD,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC;IAChB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,YAAY,EAAE,EAC3D,OAAO,EACP,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,GAClB,EAAE;IACD,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,YAAY,EAAE,CAAC,CAAC;IAChB;;OAEG;IACH,iBAAiB,EAAE;QAAC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;CACpD,GAAG;IACF;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAC9C,
|
|
1
|
+
{"version":3,"file":"markdownLinks.d.ts","sourceRoot":"","sources":["../src/markdownLinks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,YAAY,IAAI;IACvD,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC;IAChB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,YAAY,EAAE,EAC3D,OAAO,EACP,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,GAClB,EAAE;IACD,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,YAAY,EAAE,CAAC,CAAC;IAChB;;OAEG;IACH,iBAAiB,EAAE;QAAC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;CACpD,GAAG;IACF;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAC9C,CA+FA"}
|
package/lib/markdownLinks.js
CHANGED
|
@@ -45,11 +45,20 @@ function replaceMarkdownLinks({ siteDir, fileString, filePath, contentPaths, sou
|
|
|
45
45
|
// Replace inline-style links or reference-style links e.g:
|
|
46
46
|
// This is [Document 1](doc1.md)
|
|
47
47
|
// [doc1]: doc1.md
|
|
48
|
-
const
|
|
49
|
-
|
|
48
|
+
const linkTitlePattern = '(?:\\s+(?:\'.*?\'|".*?"|\\(.*?\\)))?';
|
|
49
|
+
const linkSuffixPattern = '(?:\\?[^#>\\s]+)?(?:#[^>\\s]+)?';
|
|
50
|
+
const linkCapture = (forbidden) => `((?!https?://|@site/)[^${forbidden}#?]+)`;
|
|
51
|
+
const linkURLPattern = `(?:${linkCapture('()\\s')}${linkSuffixPattern}|<${linkCapture('>')}${linkSuffixPattern}>)`;
|
|
52
|
+
const linkPattern = new RegExp(`\\[(?:(?!\\]\\().)*\\]\\(\\s*${linkURLPattern}${linkTitlePattern}\\s*\\)|^\\s*\\[[^[\\]]*[^[\\]\\s][^[\\]]*\\]:\\s*${linkURLPattern}${linkTitlePattern}$`, 'dgm');
|
|
53
|
+
let mdMatch = linkPattern.exec(modifiedLine);
|
|
50
54
|
while (mdMatch !== null) {
|
|
51
55
|
// Replace it to correct html link.
|
|
52
|
-
const mdLink = mdMatch.
|
|
56
|
+
const mdLink = mdMatch.slice(1, 5).find(Boolean);
|
|
57
|
+
const mdLinkRange = mdMatch.indices.slice(1, 5).find(Boolean);
|
|
58
|
+
if (!/\.mdx?$/.test(mdLink)) {
|
|
59
|
+
mdMatch = linkPattern.exec(modifiedLine);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
53
62
|
const sourcesToTry = [];
|
|
54
63
|
// ./file.md and ../file.md are always relative to the current file
|
|
55
64
|
if (!mdLink.startsWith('./') && !mdLink.startsWith('../')) {
|
|
@@ -73,10 +82,10 @@ function replaceMarkdownLinks({ siteDir, fileString, filePath, contentPaths, sou
|
|
|
73
82
|
.split('/')
|
|
74
83
|
.map((part) => part.replace(/\s/g, '%20'))
|
|
75
84
|
.join('/');
|
|
76
|
-
modifiedLine = modifiedLine.
|
|
85
|
+
modifiedLine = `${modifiedLine.slice(0, mdLinkRange[0])}${encodedPermalink}${modifiedLine.slice(mdLinkRange[1])}`;
|
|
77
86
|
// Adjust the lastIndex to avoid passing over the next link if the
|
|
78
87
|
// newly replaced URL is shorter.
|
|
79
|
-
|
|
88
|
+
linkPattern.lastIndex += encodedPermalink.length - mdLink.length;
|
|
80
89
|
}
|
|
81
90
|
else {
|
|
82
91
|
const brokenMarkdownLink = {
|
|
@@ -86,7 +95,7 @@ function replaceMarkdownLinks({ siteDir, fileString, filePath, contentPaths, sou
|
|
|
86
95
|
};
|
|
87
96
|
brokenMarkdownLinks.push(brokenMarkdownLink);
|
|
88
97
|
}
|
|
89
|
-
mdMatch =
|
|
98
|
+
mdMatch = linkPattern.exec(modifiedLine);
|
|
90
99
|
}
|
|
91
100
|
return modifiedLine;
|
|
92
101
|
});
|
package/lib/markdownLinks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownLinks.js","sourceRoot":"","sources":["../src/markdownLinks.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,wDAAwB;AACxB,mDAAmD;AACnD,2CAA4C;AAiC5C;;;;;;;;;;GAUG;AACH,SAAgB,oBAAoB,CAAyB,EAC3D,OAAO,EACP,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,GAclB;IASC,MAAM,mBAAmB,GAA4B,EAAE,CAAC;IAExD,+DAA+D;IAC/D,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,aAAa,EAAE;gBAClB,aAAa,GAAG,SAAS,CAAC;gBAC1B,wEAAwE;gBACxE,YAAY;aACb;iBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBAC9C,aAAa,GAAG,IAAI,CAAC;aACtB;SACF;QACD,IAAI,aAAa,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,2DAA2D;QAC3D,gCAAgC;QAChC,kBAAkB;QAClB,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"markdownLinks.js","sourceRoot":"","sources":["../src/markdownLinks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/utils",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-5562",
|
|
4
4
|
"description": "Node utility functions for Docusaurus packages.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@docusaurus/logger": "0.0.0-
|
|
21
|
+
"@docusaurus/logger": "0.0.0-5562",
|
|
22
22
|
"@svgr/webpack": "^6.5.1",
|
|
23
23
|
"escape-string-regexp": "^4.0.0",
|
|
24
24
|
"file-loader": "^6.2.0",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"node": ">=16.14"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@docusaurus/types": "0.0.0-
|
|
42
|
+
"@docusaurus/types": "0.0.0-5562",
|
|
43
43
|
"@types/dedent": "^0.7.0",
|
|
44
44
|
"@types/github-slugger": "^1.3.0",
|
|
45
45
|
"@types/micromatch": "^4.0.2",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"optional": true
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "d1f81c0f32a759d4a134a9b5daea18caf41be3b7"
|
|
58
58
|
}
|
package/src/markdownLinks.ts
CHANGED
|
@@ -102,12 +102,26 @@ export function replaceMarkdownLinks<T extends ContentPaths>({
|
|
|
102
102
|
// Replace inline-style links or reference-style links e.g:
|
|
103
103
|
// This is [Document 1](doc1.md)
|
|
104
104
|
// [doc1]: doc1.md
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
const linkTitlePattern = '(?:\\s+(?:\'.*?\'|".*?"|\\(.*?\\)))?';
|
|
106
|
+
const linkSuffixPattern = '(?:\\?[^#>\\s]+)?(?:#[^>\\s]+)?';
|
|
107
|
+
const linkCapture = (forbidden: string) =>
|
|
108
|
+
`((?!https?://|@site/)[^${forbidden}#?]+)`;
|
|
109
|
+
const linkURLPattern = `(?:${linkCapture(
|
|
110
|
+
'()\\s',
|
|
111
|
+
)}${linkSuffixPattern}|<${linkCapture('>')}${linkSuffixPattern}>)`;
|
|
112
|
+
const linkPattern = new RegExp(
|
|
113
|
+
`\\[(?:(?!\\]\\().)*\\]\\(\\s*${linkURLPattern}${linkTitlePattern}\\s*\\)|^\\s*\\[[^[\\]]*[^[\\]\\s][^[\\]]*\\]:\\s*${linkURLPattern}${linkTitlePattern}$`,
|
|
114
|
+
'dgm',
|
|
115
|
+
);
|
|
116
|
+
let mdMatch = linkPattern.exec(modifiedLine);
|
|
108
117
|
while (mdMatch !== null) {
|
|
109
118
|
// Replace it to correct html link.
|
|
110
|
-
const mdLink = mdMatch.
|
|
119
|
+
const mdLink = mdMatch.slice(1, 5).find(Boolean)!;
|
|
120
|
+
const mdLinkRange = mdMatch.indices!.slice(1, 5).find(Boolean)!;
|
|
121
|
+
if (!/\.mdx?$/.test(mdLink)) {
|
|
122
|
+
mdMatch = linkPattern.exec(modifiedLine);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
111
125
|
|
|
112
126
|
const sourcesToTry: string[] = [];
|
|
113
127
|
// ./file.md and ../file.md are always relative to the current file
|
|
@@ -135,13 +149,13 @@ export function replaceMarkdownLinks<T extends ContentPaths>({
|
|
|
135
149
|
.split('/')
|
|
136
150
|
.map((part) => part.replace(/\s/g, '%20'))
|
|
137
151
|
.join('/');
|
|
138
|
-
modifiedLine = modifiedLine.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
)
|
|
152
|
+
modifiedLine = `${modifiedLine.slice(
|
|
153
|
+
0,
|
|
154
|
+
mdLinkRange[0],
|
|
155
|
+
)}${encodedPermalink}${modifiedLine.slice(mdLinkRange[1])}`;
|
|
142
156
|
// Adjust the lastIndex to avoid passing over the next link if the
|
|
143
157
|
// newly replaced URL is shorter.
|
|
144
|
-
|
|
158
|
+
linkPattern.lastIndex += encodedPermalink.length - mdLink.length;
|
|
145
159
|
} else {
|
|
146
160
|
const brokenMarkdownLink: BrokenMarkdownLink<T> = {
|
|
147
161
|
contentPaths,
|
|
@@ -151,7 +165,7 @@ export function replaceMarkdownLinks<T extends ContentPaths>({
|
|
|
151
165
|
|
|
152
166
|
brokenMarkdownLinks.push(brokenMarkdownLink);
|
|
153
167
|
}
|
|
154
|
-
mdMatch =
|
|
168
|
+
mdMatch = linkPattern.exec(modifiedLine);
|
|
155
169
|
}
|
|
156
170
|
return modifiedLine;
|
|
157
171
|
});
|