@docusaurus/utils 0.0.0-5590 → 0.0.0-5598
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 +22 -9
- package/lib/markdownLinks.js.map +1 -1
- package/package.json +4 -4
- package/src/markdownLinks.ts +31 -9
|
@@ -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;
|
|
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;AAoBF;;;;;;;;;;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,CAmGA"}
|
package/lib/markdownLinks.js
CHANGED
|
@@ -11,6 +11,17 @@ const tslib_1 = require("tslib");
|
|
|
11
11
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
12
12
|
const dataFileUtils_1 = require("./dataFileUtils");
|
|
13
13
|
const pathUtils_1 = require("./pathUtils");
|
|
14
|
+
function parseCodeFence(line) {
|
|
15
|
+
const match = line.trim().match(/^(?<fence>`{3,}|~{3,})(?<rest>.*)/);
|
|
16
|
+
if (!match) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
type: match.groups.fence[0],
|
|
21
|
+
definitelyOpen: !!match.groups.rest,
|
|
22
|
+
count: match.groups.fence.length,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
14
25
|
/**
|
|
15
26
|
* Takes a Markdown file and replaces relative file references with their URL
|
|
16
27
|
* counterparts, e.g. `[link](./intro.md)` => `[link](/docs/intro)`, preserving
|
|
@@ -25,20 +36,22 @@ const pathUtils_1 = require("./pathUtils");
|
|
|
25
36
|
function replaceMarkdownLinks({ siteDir, fileString, filePath, contentPaths, sourceToPermalink, }) {
|
|
26
37
|
const brokenMarkdownLinks = [];
|
|
27
38
|
// Replace internal markdown linking (except in fenced blocks).
|
|
28
|
-
let
|
|
39
|
+
let lastOpenCodeFence = null;
|
|
29
40
|
const lines = fileString.split('\n').map((line) => {
|
|
30
|
-
const codeFence = line
|
|
41
|
+
const codeFence = parseCodeFence(line);
|
|
31
42
|
if (codeFence) {
|
|
32
|
-
if (!
|
|
33
|
-
|
|
34
|
-
// If we are in a ````-fenced block, all ``` would be plain text instead
|
|
35
|
-
// of fences
|
|
43
|
+
if (!lastOpenCodeFence) {
|
|
44
|
+
lastOpenCodeFence = codeFence;
|
|
36
45
|
}
|
|
37
|
-
else if (codeFence.
|
|
38
|
-
|
|
46
|
+
else if (!codeFence.definitelyOpen &&
|
|
47
|
+
lastOpenCodeFence.type === codeFence.type &&
|
|
48
|
+
lastOpenCodeFence.count <= codeFence.count) {
|
|
49
|
+
// All three conditions must be met in order for this to be considered
|
|
50
|
+
// a closing fence.
|
|
51
|
+
lastOpenCodeFence = null;
|
|
39
52
|
}
|
|
40
53
|
}
|
|
41
|
-
if (
|
|
54
|
+
if (lastOpenCodeFence) {
|
|
42
55
|
return line;
|
|
43
56
|
}
|
|
44
57
|
let modifiedLine = line;
|
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;
|
|
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-5598",
|
|
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-5598",
|
|
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-5598",
|
|
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": "1bafa562d9f15fd7ecbb03aa8f861b5281bfa4c2"
|
|
58
58
|
}
|
package/src/markdownLinks.ts
CHANGED
|
@@ -40,6 +40,24 @@ export type BrokenMarkdownLink<T extends ContentPaths> = {
|
|
|
40
40
|
link: string;
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
type CodeFence = {
|
|
44
|
+
type: '`' | '~';
|
|
45
|
+
definitelyOpen: boolean;
|
|
46
|
+
count: number;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
function parseCodeFence(line: string): CodeFence | null {
|
|
50
|
+
const match = line.trim().match(/^(?<fence>`{3,}|~{3,})(?<rest>.*)/);
|
|
51
|
+
if (!match) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
type: match.groups!.fence![0]! as '`' | '~',
|
|
56
|
+
definitelyOpen: !!match.groups!.rest!,
|
|
57
|
+
count: match.groups!.fence!.length,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
43
61
|
/**
|
|
44
62
|
* Takes a Markdown file and replaces relative file references with their URL
|
|
45
63
|
* counterparts, e.g. `[link](./intro.md)` => `[link](/docs/intro)`, preserving
|
|
@@ -82,19 +100,23 @@ export function replaceMarkdownLinks<T extends ContentPaths>({
|
|
|
82
100
|
const brokenMarkdownLinks: BrokenMarkdownLink<T>[] = [];
|
|
83
101
|
|
|
84
102
|
// Replace internal markdown linking (except in fenced blocks).
|
|
85
|
-
let
|
|
103
|
+
let lastOpenCodeFence: CodeFence | null = null;
|
|
86
104
|
const lines = fileString.split('\n').map((line) => {
|
|
87
|
-
const codeFence = line
|
|
105
|
+
const codeFence = parseCodeFence(line);
|
|
88
106
|
if (codeFence) {
|
|
89
|
-
if (!
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
107
|
+
if (!lastOpenCodeFence) {
|
|
108
|
+
lastOpenCodeFence = codeFence;
|
|
109
|
+
} else if (
|
|
110
|
+
!codeFence.definitelyOpen &&
|
|
111
|
+
lastOpenCodeFence.type === codeFence.type &&
|
|
112
|
+
lastOpenCodeFence.count <= codeFence.count
|
|
113
|
+
) {
|
|
114
|
+
// All three conditions must be met in order for this to be considered
|
|
115
|
+
// a closing fence.
|
|
116
|
+
lastOpenCodeFence = null;
|
|
95
117
|
}
|
|
96
118
|
}
|
|
97
|
-
if (
|
|
119
|
+
if (lastOpenCodeFence) {
|
|
98
120
|
return line;
|
|
99
121
|
}
|
|
100
122
|
|