@docusaurus/mdx-loader 3.9.2 → 3.10.1
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/createMDXLoader.js +1 -1
- package/lib/remark/admonitions/index.d.ts.map +1 -1
- package/lib/remark/admonitions/index.js +2 -0
- package/lib/remark/admonitions/index.js.map +1 -1
- package/lib/remark/headings/index.d.ts.map +1 -1
- package/lib/remark/headings/index.js +102 -35
- package/lib/remark/headings/index.js.map +1 -1
- package/lib/remark/toc/utils.d.ts.map +1 -1
- package/lib/remark/toc/utils.js +1 -0
- package/lib/remark/toc/utils.js.map +1 -1
- package/lib/remark/transformImage/index.js +5 -6
- package/lib/remark/transformImage/index.js.map +1 -1
- package/lib/remark/transformLinks/index.d.ts.map +1 -1
- package/lib/remark/transformLinks/index.js +6 -7
- package/lib/remark/transformLinks/index.js.map +1 -1
- package/package.json +6 -6
- package/src/createMDXLoader.ts +1 -1
- package/src/remark/admonitions/index.ts +2 -0
- package/src/remark/headings/index.ts +124 -46
- package/src/remark/toc/utils.ts +1 -0
- package/src/remark/transformImage/index.ts +6 -6
- package/src/remark/transformLinks/index.ts +8 -7
- package/src/types.d.mts +4 -0
package/lib/createMDXLoader.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.createMDXLoaderRule = createMDXLoaderRule;
|
|
|
11
11
|
const processor_1 = require("./processor");
|
|
12
12
|
async function normalizeOptions(optionsInput) {
|
|
13
13
|
// Because Jest doesn't like ESM / createProcessors()
|
|
14
|
-
if (process.env.
|
|
14
|
+
if (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID) {
|
|
15
15
|
return optionsInput;
|
|
16
16
|
}
|
|
17
17
|
let options = optionsInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAc,MAAM,EAAC,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAS,IAAI,EAAC,MAAM,OAAO,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAatC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,GACjD,iBAAiB,CAiBnB;AA6BD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAc,MAAM,EAAC,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAS,IAAI,EAAC,MAAM,OAAO,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAatC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,GACjD,iBAAiB,CAiBnB;AA6BD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAwDtD,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -70,6 +70,8 @@ const plugin = function plugin(optionsInput = {}) {
|
|
|
70
70
|
hName: 'admonition',
|
|
71
71
|
hProperties: {
|
|
72
72
|
...(textOnlyTitle && { title: textOnlyTitle }),
|
|
73
|
+
...(node.attributes?.class && { className: node.attributes.class }),
|
|
74
|
+
...(node.attributes?.id && { id: node.attributes.id }),
|
|
73
75
|
type: node.name,
|
|
74
76
|
},
|
|
75
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/headings/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/headings/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAU,IAAI,EAAO,MAAM,OAAO,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AA6FD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,CAgDzC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -8,48 +8,115 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
/* Based on remark-slug (https://github.com/remarkjs/remark-slug) and gatsby-remark-autolink-headers (https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-remark-autolink-headers) */
|
|
10
10
|
const utils_1 = require("@docusaurus/utils");
|
|
11
|
+
function getCommentContentHeadingId(comment) {
|
|
12
|
+
// If the comment has spaces, we only consider the first part
|
|
13
|
+
const firstPart = comment.trim().split(' ')[0];
|
|
14
|
+
// We ignore comments that don't start with # on purpose
|
|
15
|
+
// Forcing users to use a leading # is more explicit
|
|
16
|
+
// In the future it's possible we'd want to allow other types of comments
|
|
17
|
+
// For example class comments like {/* .my-class */}
|
|
18
|
+
if (firstPart?.startsWith('#')) {
|
|
19
|
+
return firstPart.slice(1) || undefined;
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
function getCommentHeadingId(heading) {
|
|
24
|
+
const lastChild = heading.children.at(-1);
|
|
25
|
+
// MDX comment: {/* my-id */} or {/* #my-id */}
|
|
26
|
+
if (lastChild &&
|
|
27
|
+
lastChild.type === 'mdxTextExpression' &&
|
|
28
|
+
lastChild.data?.estree) {
|
|
29
|
+
const program = lastChild.data.estree;
|
|
30
|
+
// We only extract the id from single-comment MDX expressions
|
|
31
|
+
// ✅ {/* #my-id */}
|
|
32
|
+
// ❌ {/* #my-id */ /* #my-id2 */}
|
|
33
|
+
// ❌ {someExpression /* #my-id */}
|
|
34
|
+
if (program.body.length === 0 && program.comments?.length === 1) {
|
|
35
|
+
const commentContent = program.comments[0].value;
|
|
36
|
+
return getCommentContentHeadingId(commentContent);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// HTML comment: <!-- my-id --> or <!-- #my-id -->
|
|
40
|
+
if (lastChild?.type === 'html') {
|
|
41
|
+
const match = /^<!--(?<comment>[\s\S]*)-->$/.exec(lastChild.value);
|
|
42
|
+
if (match?.groups?.comment) {
|
|
43
|
+
const commentContent = match.groups.comment;
|
|
44
|
+
return getCommentContentHeadingId(commentContent);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
// Try to find an explicit id in MD/MDX comments
|
|
50
|
+
function extractCommentId(heading) {
|
|
51
|
+
const commentId = getCommentHeadingId(heading);
|
|
52
|
+
if (commentId) {
|
|
53
|
+
// Remove the last comment node
|
|
54
|
+
heading.children.pop();
|
|
55
|
+
// Trim the trailing space from the last text node ("text " → "text")
|
|
56
|
+
const newLast = heading.children.at(-1);
|
|
57
|
+
if (newLast?.type === 'text') {
|
|
58
|
+
newLast.value = newLast.value.trimEnd();
|
|
59
|
+
}
|
|
60
|
+
return commentId;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
// Try to find an explicit id in the heading text (classic {#id} syntax)
|
|
65
|
+
function extractClassicSyntaxHeadingId(heading, headingText) {
|
|
66
|
+
const parsedHeading = (0, utils_1.parseMarkdownHeadingId)(headingText, 'classic');
|
|
67
|
+
// Remove the heading text from its id (legacy syntax)
|
|
68
|
+
if (parsedHeading.id) {
|
|
69
|
+
// When there's an id, it is always in the last child node
|
|
70
|
+
const lastNode = heading.children.at(-1);
|
|
71
|
+
if (heading.children.length > 1) {
|
|
72
|
+
const lastNodeText = (0, utils_1.parseMarkdownHeadingId)(lastNode.value, 'classic').text;
|
|
73
|
+
// When the last part contains text + id, remove the id
|
|
74
|
+
if (lastNodeText) {
|
|
75
|
+
lastNode.value = lastNodeText;
|
|
76
|
+
}
|
|
77
|
+
// When last part contains only the id: completely remove that node
|
|
78
|
+
else {
|
|
79
|
+
heading.children.pop();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
lastNode.value = parsedHeading.text;
|
|
84
|
+
}
|
|
85
|
+
return parsedHeading.id;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
11
89
|
const plugin = function plugin({ anchorsMaintainCase, }) {
|
|
12
90
|
return async (root) => {
|
|
13
91
|
const { toString } = await import('mdast-util-to-string');
|
|
14
92
|
const { visit } = await import('unist-util-visit');
|
|
93
|
+
function getHeadingText(heading) {
|
|
94
|
+
const headingTextNodes = heading.children.filter(({ type }) => !['html', 'jsx'].includes(type));
|
|
95
|
+
return toString(headingTextNodes.length > 0 ? headingTextNodes : heading);
|
|
96
|
+
}
|
|
15
97
|
const slugs = (0, utils_1.createSlugger)();
|
|
16
|
-
visit(root, 'heading', (
|
|
17
|
-
const data =
|
|
18
|
-
const properties =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const heading = toString(headingTextNodes.length > 0 ? headingTextNodes : headingNode);
|
|
26
|
-
// Support explicit heading IDs
|
|
27
|
-
const parsedHeading = (0, utils_1.parseMarkdownHeadingId)(heading);
|
|
28
|
-
id =
|
|
29
|
-
parsedHeading.id ??
|
|
30
|
-
slugs.slug(heading, { maintainCase: anchorsMaintainCase });
|
|
31
|
-
if (parsedHeading.id) {
|
|
32
|
-
// When there's an id, it is always in the last child node
|
|
33
|
-
// Sometimes heading is in multiple "parts" (** syntax creates a child
|
|
34
|
-
// node):
|
|
35
|
-
// ## part1 *part2* part3 {#id}
|
|
36
|
-
const lastNode = headingNode.children[headingNode.children.length - 1];
|
|
37
|
-
if (headingNode.children.length > 1) {
|
|
38
|
-
const lastNodeText = (0, utils_1.parseMarkdownHeadingId)(lastNode.value).text;
|
|
39
|
-
// When last part contains test+id, remove the id
|
|
40
|
-
if (lastNodeText) {
|
|
41
|
-
lastNode.value = lastNodeText;
|
|
42
|
-
}
|
|
43
|
-
// When last part contains only the id: completely remove that node
|
|
44
|
-
else {
|
|
45
|
-
headingNode.children.pop();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
lastNode.value = parsedHeading.text;
|
|
50
|
-
}
|
|
98
|
+
visit(root, 'heading', (heading) => {
|
|
99
|
+
const data = heading.data ?? (heading.data = {});
|
|
100
|
+
const properties = data.hProperties ?? (data.hProperties = {});
|
|
101
|
+
// Gives the ability to provide/write a remark plugin that sets an id
|
|
102
|
+
// When an id is already set, we use it instead of running our own plugin
|
|
103
|
+
function extractAlreadyExistingId() {
|
|
104
|
+
if (properties.id) {
|
|
105
|
+
// Not sure why we need to slugify here, historical code
|
|
106
|
+
return slugs.slug(properties.id, { maintainCase: true });
|
|
51
107
|
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
function extractIdFromText() {
|
|
111
|
+
const headingText = getHeadingText(heading);
|
|
112
|
+
return (extractClassicSyntaxHeadingId(heading, headingText) ??
|
|
113
|
+
slugs.slug(headingText, { maintainCase: anchorsMaintainCase }));
|
|
52
114
|
}
|
|
115
|
+
// All the ways we can extract an id, ordered by priority
|
|
116
|
+
// /!\ the extraction methods can perform AST cleanup side effects
|
|
117
|
+
const id = extractAlreadyExistingId() ??
|
|
118
|
+
extractCommentId(heading) ??
|
|
119
|
+
extractIdFromText();
|
|
53
120
|
data.id = id;
|
|
54
121
|
properties.id = id;
|
|
55
122
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/headings/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,gMAAgM;AAEhM,6CAAwE;AAQxE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/headings/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/remark/toc/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAC,IAAI,EAAS,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EACV,QAAQ,EAER,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAsB,QAAQ,EAAW,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EACV,OAAO,EAEP,iBAAiB,EACjB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAC,OAAO,EAAE,eAAe,EAAC,MAAM,OAAO,CAAC;AAEpD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAI3E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,iBAAiB,CAMtE;AAED,wBAAgB,qBAAqB,CACnC,iBAAiB,EAAE,iBAAiB,GACnC,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CAM7B;AAID,wBAAgB,yBAAyB,CAAC,EACxC,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,EAAE;IACD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,IAAI,CASP;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,IAAI,IAAI,QAAQ,CAyBlB;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,aAAa,EACb,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/remark/toc/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAC,IAAI,EAAS,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EACV,QAAQ,EAER,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAsB,QAAQ,EAAW,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EACV,OAAO,EAEP,iBAAiB,EACjB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAC,OAAO,EAAE,eAAe,EAAC,MAAM,OAAO,CAAC;AAEpD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAI3E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,iBAAiB,CAMtE;AAED,wBAAgB,qBAAqB,CACnC,iBAAiB,EAAE,iBAAiB,GACnC,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CAM7B;AAID,wBAAgB,yBAAyB,CAAC,EACxC,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,EAAE;IACD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,IAAI,CASP;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,IAAI,IAAI,QAAQ,CAyBlB;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,aAAa,EACb,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkEpB;AA6CD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,GAAG,OAAO,GAAG,iBAAiB,EACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GACnC,MAAM,CAsBR"}
|
package/lib/remark/toc/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/remark/toc/utils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAkBH,sDAIC;AAED,4CAMC;AAED,sDAMC;AAED,4DASC;AAID,8DAiBC;AAED,sCA4BC;AAED,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/remark/toc/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
const tslib_1 = require("tslib");
|
|
10
10
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
11
|
-
const url_1 = tslib_1.__importDefault(require("url"));
|
|
12
11
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
13
12
|
const utils_1 = require("@docusaurus/utils");
|
|
14
13
|
const escape_html_1 = tslib_1.__importDefault(require("escape-html"));
|
|
@@ -136,11 +135,11 @@ async function processImageNode(target, context) {
|
|
|
136
135
|
}) ?? node.url;
|
|
137
136
|
return;
|
|
138
137
|
}
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
141
|
-
// pathname:// is an escape hatch, in case user does not want
|
|
138
|
+
const localUrlPath = (0, utils_1.parseLocalURLPath)(node.url);
|
|
139
|
+
if (!localUrlPath) {
|
|
140
|
+
// pathname:// is an escape hatch, in case the user does not want images to
|
|
142
141
|
// be converted to require calls going through webpack loader
|
|
143
|
-
if (
|
|
142
|
+
if ((0, utils_1.parseURLOrPath)(node.url).protocol === 'pathname:') {
|
|
144
143
|
node.url = node.url.replace('pathname://', '');
|
|
145
144
|
}
|
|
146
145
|
return;
|
|
@@ -148,7 +147,7 @@ async function processImageNode(target, context) {
|
|
|
148
147
|
// We decode it first because Node Url.pathname is always encoded
|
|
149
148
|
// while the image file-system path are not.
|
|
150
149
|
// See https://github.com/facebook/docusaurus/discussions/10720
|
|
151
|
-
const decodedPathname = decodeURIComponent(
|
|
150
|
+
const decodedPathname = decodeURIComponent(localUrlPath.pathname);
|
|
152
151
|
// We try to convert image urls without protocol to images with require calls
|
|
153
152
|
// going through webpack ensures that image assets exist at build time
|
|
154
153
|
const localImagePath = await getLocalImageAbsolutePath(decodedPathname, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformImage/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformImage/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAGjD,OAAO,KAAK,EAAO,IAAI,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC;CACzE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAGjD,OAAO,KAAK,EAAO,IAAI,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC;CACzE,CAAC;AAmNF,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,CA6BzC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
const tslib_1 = require("tslib");
|
|
10
10
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
11
|
-
const url_1 = tslib_1.__importDefault(require("url"));
|
|
12
11
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
13
12
|
const utils_1 = require("@docusaurus/utils");
|
|
14
13
|
const escape_html_1 = tslib_1.__importDefault(require("escape-html"));
|
|
@@ -138,18 +137,18 @@ async function processLinkNode(target, context) {
|
|
|
138
137
|
}) ?? node.url;
|
|
139
138
|
return;
|
|
140
139
|
}
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
140
|
+
const localUrlPath = (0, utils_1.parseLocalURLPath)(node.url);
|
|
141
|
+
if (!localUrlPath) {
|
|
143
142
|
// Don't process pathname:// here, it's used by the <Link> component
|
|
144
143
|
return;
|
|
145
144
|
}
|
|
146
|
-
const hasSiteAlias =
|
|
147
|
-
const hasAssetLikeExtension = path_1.default.extname(
|
|
148
|
-
!
|
|
145
|
+
const hasSiteAlias = localUrlPath.pathname.startsWith('@site/');
|
|
146
|
+
const hasAssetLikeExtension = path_1.default.extname(localUrlPath.pathname) &&
|
|
147
|
+
!localUrlPath.pathname.match(/\.(?:mdx?|html)(?:#|$)/);
|
|
149
148
|
if (!hasSiteAlias && !hasAssetLikeExtension) {
|
|
150
149
|
return;
|
|
151
150
|
}
|
|
152
|
-
const localFilePath = await getLocalFileAbsolutePath(decodeURIComponent(
|
|
151
|
+
const localFilePath = await getLocalFileAbsolutePath(decodeURIComponent(localUrlPath.pathname), context);
|
|
153
152
|
if (localFilePath) {
|
|
154
153
|
await toAssetRequireNode(target, localFilePath, context);
|
|
155
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wDAAwB;AACxB,gEAA0B;AAC1B,6CAQ2B;AAC3B,sEAAqC;AACrC,wEAAwC;AACxC,oCAIkB;AA0BlB,SAAS,UAAU,CACjB,qBAA6D;IAE7D,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,SAAS,GACb,qBAAqB,KAAK,OAAO;YAC/B,CAAC,CAAC,gBAAM,CAAC,WAAW,CAAA,wCAAwC,iDAAiD,8BAA8B,aAAa,oCAAoC;YAC5L,CAAC,CAAC,EAAE,CAAC;QAET,OAAO,CAAC,EAAC,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAC,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAM,CAAC,MAAM,CACX,qBAAqB,CACtB,CAAA,+BAA+B,OAAO,wBAAwB,YAAY,GAAG,IAAA,sCAA8B,EAC1G,IAAI,CACL;sFAC6E,SAAS,EAAE,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACN,gBAAM,CAAC,MAAM,CACX,qBAAqB,CACtB,CAAA,0DAA0D,YAAY,GAAG,IAAA,sCAA8B,EACtG,IAAI,CACL,IAAI,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,EAAE,EAAE,CAChB,qBAAqB,CAAC;YACpB,GAAG,MAAM;YACT,cAAc,EAAE,IAAA,iCAAyB,EAAC,MAAM,CAAC,cAAc,CAAC;SACjE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,CAAC,IAAI,CAAS,EACd,SAAiB,EACjB,OAAgB;IAEhB,mGAAmG;IACnG,MAAM,OAAO,GAAG,IAAoC,CAAC;IACrD,MAAM,UAAU,GAAoC,EAAE,CAAC;IAEvD,0EAA0E;IAC1E,MAAM,iBAAiB,GAAG,KAAK,IAAA,iBAAS,EACtC,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CACzD,EAAE,CAAC;IAEJ,MAAM,SAAS,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;IAEtC,MAAM,aAAa,GAAG,GAAG;IACvB,sEAAsE;IACtE,cAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,OAAO;QACzC,CAAC,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI;QACnD,CAAC,CAAC,EACN,GAAG,OAAO,CAAC,4BAA4B,GACrC,IAAA,kBAAU,EAAC,iBAAiB,CAAC,GAAG,MAClC,EAAE,CAAC;IAEH,UAAU,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,6DAA6D;IAC7D,kDAAkD;IAClD,UAAU,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE,gCAAgC;YACtC,KAAK,EAAE,MAAM;YACb,IAAI,EAAE;gBACJ,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,qBAAqB;4BAC3B,UAAU,EAAE;gCACV,IAAI,EAAE,SAAS;gCACf,KAAK,EAAE,IAAI;gCACX,GAAG,EAAE,MAAM;6BACZ;yBACF;qBACF;oBACD,UAAU,EAAE,QAAQ;oBACpB,QAAQ,EAAE,EAAE;iBACb;aACF;SACF;KACF,CAAC,CAAC;IAEH,UAAU,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAA,kCAA0B,EAAC,aAAa,EAAE,IAAI,CAAC;KACvD,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAA,qBAAU,EAAC,IAAI,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;IAExB,IAAA,qBAAa,EAAC,OAAO,EAAE;QACrB,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,GAAG;QACT,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,SAAiB,EACjB,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAU;IAExC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,IAAI,cAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,IAAA,2BAAmB,EAC7C,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAClD,kBAAE,CAAC,UAAU,CACd,CAAC;QACF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,OAAgB;IAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,GAAG;YACN,OAAO,CAAC,qBAAqB,CAAC;gBAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,cAAc,EAAE,OAAO,CAAC,QAAQ;gBAChC,IAAI;aACL,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,oEAAoE;QACpE,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,qBAAqB,GACzB,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;QACnC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACzD,IAAI,CAAC,YAAY,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAClD,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,EACzC,OAAO,CACR,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,2EAA2E;QAC3E,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG;gBACN,OAAO,CAAC,qBAAqB,CAAC;oBAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,cAAc,EAAE,OAAO,CAAC,QAAQ;oBAChC,IAAI;iBACL,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,oDAAoD;YACpD,wEAAwE;QAC1E,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAkC,SAAS,MAAM,CAC3D,OAAO;IAEP,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAExE,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEjD,MAAM,eAAe,GAAG,IAAA,0BAAkB,EACxC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,QAAQ,CACrC,CAAC;QAEF,MAAM,OAAO,GAAY;YACvB,GAAG,OAAO;YACV,QAAQ,EAAE,KAAK,CAAC,IAAK;YACrB,4BAA4B,EAC1B,eAAe,CAAC,OAAO,CAAC,4BAA4B;YACtD,qBAAqB;SACtB,CAAC;QAEF,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/mdx-loader",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.10.1",
|
|
4
4
|
"description": "Docusaurus Loader for MDX",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
},
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@docusaurus/logger": "3.
|
|
22
|
-
"@docusaurus/utils": "3.
|
|
23
|
-
"@docusaurus/utils-validation": "3.
|
|
21
|
+
"@docusaurus/logger": "3.10.1",
|
|
22
|
+
"@docusaurus/utils": "3.10.1",
|
|
23
|
+
"@docusaurus/utils-validation": "3.10.1",
|
|
24
24
|
"@mdx-js/mdx": "^3.0.0",
|
|
25
25
|
"@slorber/remark-comment": "^1.0.0",
|
|
26
26
|
"escape-html": "^1.0.3",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"webpack": "^5.88.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@docusaurus/types": "3.
|
|
47
|
+
"@docusaurus/types": "3.10.1",
|
|
48
48
|
"@types/escape-html": "^1.0.2",
|
|
49
49
|
"@types/mdast": "^4.0.2",
|
|
50
50
|
"@types/stringify-object": "^3.3.1",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"engines": {
|
|
65
65
|
"node": ">=20.0"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "41c1a458ecb07d61b6df2761ea4bc1b13db49d12"
|
|
68
68
|
}
|
package/src/createMDXLoader.ts
CHANGED
|
@@ -17,7 +17,7 @@ async function normalizeOptions(
|
|
|
17
17
|
optionsInput: Options & CreateOptions,
|
|
18
18
|
): Promise<Options> {
|
|
19
19
|
// Because Jest doesn't like ESM / createProcessors()
|
|
20
|
-
if (process.env.
|
|
20
|
+
if (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID) {
|
|
21
21
|
return optionsInput;
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -107,6 +107,8 @@ const plugin: Plugin<Partial<AdmonitionOptions>[], Root> = function plugin(
|
|
|
107
107
|
hName: 'admonition',
|
|
108
108
|
hProperties: {
|
|
109
109
|
...(textOnlyTitle && {title: textOnlyTitle}),
|
|
110
|
+
...(node.attributes?.class && {className: node.attributes.class}),
|
|
111
|
+
...(node.attributes?.id && {id: node.attributes.id}),
|
|
110
112
|
type: node.name,
|
|
111
113
|
},
|
|
112
114
|
};
|
|
@@ -9,12 +9,103 @@
|
|
|
9
9
|
|
|
10
10
|
import {parseMarkdownHeadingId, createSlugger} from '@docusaurus/utils';
|
|
11
11
|
import type {Plugin, Transformer} from 'unified';
|
|
12
|
-
import type {Root, Text} from 'mdast';
|
|
12
|
+
import type {Heading, Root, Text} from 'mdast';
|
|
13
13
|
|
|
14
14
|
export interface PluginOptions {
|
|
15
15
|
anchorsMaintainCase: boolean;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
function getCommentContentHeadingId(comment: string): string | undefined {
|
|
19
|
+
// If the comment has spaces, we only consider the first part
|
|
20
|
+
const firstPart = comment.trim().split(' ')[0];
|
|
21
|
+
// We ignore comments that don't start with # on purpose
|
|
22
|
+
// Forcing users to use a leading # is more explicit
|
|
23
|
+
// In the future it's possible we'd want to allow other types of comments
|
|
24
|
+
// For example class comments like {/* .my-class */}
|
|
25
|
+
if (firstPart?.startsWith('#')) {
|
|
26
|
+
return firstPart.slice(1) || undefined;
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function getCommentHeadingId(heading: Heading): string | undefined {
|
|
32
|
+
const lastChild = heading.children.at(-1);
|
|
33
|
+
|
|
34
|
+
// MDX comment: {/* my-id */} or {/* #my-id */}
|
|
35
|
+
if (
|
|
36
|
+
lastChild &&
|
|
37
|
+
lastChild.type === 'mdxTextExpression' &&
|
|
38
|
+
lastChild.data?.estree
|
|
39
|
+
) {
|
|
40
|
+
const program = lastChild.data.estree;
|
|
41
|
+
// We only extract the id from single-comment MDX expressions
|
|
42
|
+
// ✅ {/* #my-id */}
|
|
43
|
+
// ❌ {/* #my-id */ /* #my-id2 */}
|
|
44
|
+
// ❌ {someExpression /* #my-id */}
|
|
45
|
+
if (program.body.length === 0 && program.comments?.length === 1) {
|
|
46
|
+
const commentContent = program.comments[0]!.value;
|
|
47
|
+
return getCommentContentHeadingId(commentContent);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// HTML comment: <!-- my-id --> or <!-- #my-id -->
|
|
52
|
+
if (lastChild?.type === 'html') {
|
|
53
|
+
const match = /^<!--(?<comment>[\s\S]*)-->$/.exec(
|
|
54
|
+
(lastChild as unknown as {value: string}).value,
|
|
55
|
+
);
|
|
56
|
+
if (match?.groups?.comment) {
|
|
57
|
+
const commentContent = match.groups.comment;
|
|
58
|
+
return getCommentContentHeadingId(commentContent);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Try to find an explicit id in MD/MDX comments
|
|
66
|
+
function extractCommentId(heading: Heading) {
|
|
67
|
+
const commentId = getCommentHeadingId(heading);
|
|
68
|
+
if (commentId) {
|
|
69
|
+
// Remove the last comment node
|
|
70
|
+
heading.children.pop();
|
|
71
|
+
// Trim the trailing space from the last text node ("text " → "text")
|
|
72
|
+
const newLast = heading.children.at(-1);
|
|
73
|
+
if (newLast?.type === 'text') {
|
|
74
|
+
newLast.value = newLast.value.trimEnd();
|
|
75
|
+
}
|
|
76
|
+
return commentId;
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Try to find an explicit id in the heading text (classic {#id} syntax)
|
|
82
|
+
function extractClassicSyntaxHeadingId(heading: Heading, headingText: string) {
|
|
83
|
+
const parsedHeading = parseMarkdownHeadingId(headingText, 'classic');
|
|
84
|
+
// Remove the heading text from its id (legacy syntax)
|
|
85
|
+
if (parsedHeading.id) {
|
|
86
|
+
// When there's an id, it is always in the last child node
|
|
87
|
+
const lastNode = heading.children.at(-1) as Text;
|
|
88
|
+
if (heading.children.length > 1) {
|
|
89
|
+
const lastNodeText = parseMarkdownHeadingId(
|
|
90
|
+
lastNode.value,
|
|
91
|
+
'classic',
|
|
92
|
+
).text;
|
|
93
|
+
// When the last part contains text + id, remove the id
|
|
94
|
+
if (lastNodeText) {
|
|
95
|
+
lastNode.value = lastNodeText;
|
|
96
|
+
}
|
|
97
|
+
// When last part contains only the id: completely remove that node
|
|
98
|
+
else {
|
|
99
|
+
heading.children.pop();
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
lastNode.value = parsedHeading.text;
|
|
103
|
+
}
|
|
104
|
+
return parsedHeading.id;
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
18
109
|
const plugin: Plugin<PluginOptions[], Root> = function plugin({
|
|
19
110
|
anchorsMaintainCase,
|
|
20
111
|
}): Transformer<Root> {
|
|
@@ -22,56 +113,43 @@ const plugin: Plugin<PluginOptions[], Root> = function plugin({
|
|
|
22
113
|
const {toString} = await import('mdast-util-to-string');
|
|
23
114
|
const {visit} = await import('unist-util-visit');
|
|
24
115
|
|
|
116
|
+
function getHeadingText(heading: Heading) {
|
|
117
|
+
const headingTextNodes = heading.children.filter(
|
|
118
|
+
({type}) => !['html', 'jsx'].includes(type),
|
|
119
|
+
);
|
|
120
|
+
return toString(headingTextNodes.length > 0 ? headingTextNodes : heading);
|
|
121
|
+
}
|
|
122
|
+
|
|
25
123
|
const slugs = createSlugger();
|
|
26
|
-
visit(root, 'heading', (
|
|
27
|
-
const data =
|
|
28
|
-
const properties =
|
|
29
|
-
id: string;
|
|
30
|
-
};
|
|
31
|
-
let {id} = properties;
|
|
32
|
-
|
|
33
|
-
if (id) {
|
|
34
|
-
id = slugs.slug(id, {maintainCase: true});
|
|
35
|
-
} else {
|
|
36
|
-
const headingTextNodes = headingNode.children.filter(
|
|
37
|
-
({type}) => !['html', 'jsx'].includes(type),
|
|
38
|
-
);
|
|
39
|
-
const heading = toString(
|
|
40
|
-
headingTextNodes.length > 0 ? headingTextNodes : headingNode,
|
|
41
|
-
);
|
|
124
|
+
visit(root, 'heading', (heading) => {
|
|
125
|
+
const data = heading.data ?? (heading.data = {});
|
|
126
|
+
const properties = data.hProperties ?? (data.hProperties = {});
|
|
42
127
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
id
|
|
47
|
-
|
|
48
|
-
slugs.slug(
|
|
49
|
-
|
|
50
|
-
if (parsedHeading.id) {
|
|
51
|
-
// When there's an id, it is always in the last child node
|
|
52
|
-
// Sometimes heading is in multiple "parts" (** syntax creates a child
|
|
53
|
-
// node):
|
|
54
|
-
// ## part1 *part2* part3 {#id}
|
|
55
|
-
const lastNode = headingNode.children[
|
|
56
|
-
headingNode.children.length - 1
|
|
57
|
-
] as Text;
|
|
58
|
-
|
|
59
|
-
if (headingNode.children.length > 1) {
|
|
60
|
-
const lastNodeText = parseMarkdownHeadingId(lastNode.value).text;
|
|
61
|
-
// When last part contains test+id, remove the id
|
|
62
|
-
if (lastNodeText) {
|
|
63
|
-
lastNode.value = lastNodeText;
|
|
64
|
-
}
|
|
65
|
-
// When last part contains only the id: completely remove that node
|
|
66
|
-
else {
|
|
67
|
-
headingNode.children.pop();
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
lastNode.value = parsedHeading.text;
|
|
71
|
-
}
|
|
128
|
+
// Gives the ability to provide/write a remark plugin that sets an id
|
|
129
|
+
// When an id is already set, we use it instead of running our own plugin
|
|
130
|
+
function extractAlreadyExistingId() {
|
|
131
|
+
if (properties.id) {
|
|
132
|
+
// Not sure why we need to slugify here, historical code
|
|
133
|
+
return slugs.slug(properties.id, {maintainCase: true});
|
|
72
134
|
}
|
|
135
|
+
return undefined;
|
|
73
136
|
}
|
|
74
137
|
|
|
138
|
+
function extractIdFromText() {
|
|
139
|
+
const headingText = getHeadingText(heading);
|
|
140
|
+
return (
|
|
141
|
+
extractClassicSyntaxHeadingId(heading, headingText) ??
|
|
142
|
+
slugs.slug(headingText, {maintainCase: anchorsMaintainCase})
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// All the ways we can extract an id, ordered by priority
|
|
147
|
+
// /!\ the extraction methods can perform AST cleanup side effects
|
|
148
|
+
const id =
|
|
149
|
+
extractAlreadyExistingId() ??
|
|
150
|
+
extractCommentId(heading) ??
|
|
151
|
+
extractIdFromText();
|
|
152
|
+
|
|
75
153
|
data.id = id;
|
|
76
154
|
properties.id = id;
|
|
77
155
|
});
|
package/src/remark/toc/utils.ts
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import path from 'path';
|
|
9
|
-
import url from 'url';
|
|
10
9
|
import fs from 'fs-extra';
|
|
11
10
|
import {
|
|
12
11
|
toMessageRelativeFilePath,
|
|
@@ -15,6 +14,7 @@ import {
|
|
|
15
14
|
findAsyncSequential,
|
|
16
15
|
getFileLoaderUtils,
|
|
17
16
|
parseURLOrPath,
|
|
17
|
+
parseLocalURLPath,
|
|
18
18
|
} from '@docusaurus/utils';
|
|
19
19
|
import escapeHtml from 'escape-html';
|
|
20
20
|
import {imageSizeFromFile} from 'image-size/fromFile';
|
|
@@ -207,11 +207,11 @@ async function processImageNode(target: Target, context: Context) {
|
|
|
207
207
|
return;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
const
|
|
211
|
-
if (
|
|
212
|
-
// pathname:// is an escape hatch, in case user does not want
|
|
210
|
+
const localUrlPath = parseLocalURLPath(node.url);
|
|
211
|
+
if (!localUrlPath) {
|
|
212
|
+
// pathname:// is an escape hatch, in case the user does not want images to
|
|
213
213
|
// be converted to require calls going through webpack loader
|
|
214
|
-
if (
|
|
214
|
+
if (parseURLOrPath(node.url).protocol === 'pathname:') {
|
|
215
215
|
node.url = node.url.replace('pathname://', '');
|
|
216
216
|
}
|
|
217
217
|
return;
|
|
@@ -220,7 +220,7 @@ async function processImageNode(target: Target, context: Context) {
|
|
|
220
220
|
// We decode it first because Node Url.pathname is always encoded
|
|
221
221
|
// while the image file-system path are not.
|
|
222
222
|
// See https://github.com/facebook/docusaurus/discussions/10720
|
|
223
|
-
const decodedPathname = decodeURIComponent(
|
|
223
|
+
const decodedPathname = decodeURIComponent(localUrlPath.pathname);
|
|
224
224
|
|
|
225
225
|
// We try to convert image urls without protocol to images with require calls
|
|
226
226
|
// going through webpack ensures that image assets exist at build time
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import path from 'path';
|
|
9
|
-
import url from 'url';
|
|
10
9
|
import fs from 'fs-extra';
|
|
11
10
|
import {
|
|
12
11
|
toMessageRelativeFilePath,
|
|
@@ -15,6 +14,7 @@ import {
|
|
|
15
14
|
findAsyncSequential,
|
|
16
15
|
getFileLoaderUtils,
|
|
17
16
|
parseURLOrPath,
|
|
17
|
+
parseLocalURLPath,
|
|
18
18
|
} from '@docusaurus/utils';
|
|
19
19
|
import escapeHtml from 'escape-html';
|
|
20
20
|
import logger from '@docusaurus/logger';
|
|
@@ -209,21 +209,22 @@ async function processLinkNode(target: Target, context: Context) {
|
|
|
209
209
|
return;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
const
|
|
213
|
-
if (
|
|
212
|
+
const localUrlPath = parseLocalURLPath(node.url);
|
|
213
|
+
if (!localUrlPath) {
|
|
214
214
|
// Don't process pathname:// here, it's used by the <Link> component
|
|
215
215
|
return;
|
|
216
216
|
}
|
|
217
|
-
|
|
217
|
+
|
|
218
|
+
const hasSiteAlias = localUrlPath.pathname.startsWith('@site/');
|
|
218
219
|
const hasAssetLikeExtension =
|
|
219
|
-
path.extname(
|
|
220
|
-
!
|
|
220
|
+
path.extname(localUrlPath.pathname) &&
|
|
221
|
+
!localUrlPath.pathname.match(/\.(?:mdx?|html)(?:#|$)/);
|
|
221
222
|
if (!hasSiteAlias && !hasAssetLikeExtension) {
|
|
222
223
|
return;
|
|
223
224
|
}
|
|
224
225
|
|
|
225
226
|
const localFilePath = await getLocalFileAbsolutePath(
|
|
226
|
-
decodeURIComponent(
|
|
227
|
+
decodeURIComponent(localUrlPath.pathname),
|
|
227
228
|
context,
|
|
228
229
|
);
|
|
229
230
|
|