@docusaurus/mdx-loader 0.0.0-4383 → 0.0.0-4393

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAa3C,aAAK,OAAO,GAAG,4BAA4B,GAAG;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAwDF,wBAA8B,SAAS,CACrC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Gf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAa3C,aAAK,OAAO,GAAG,4BAA4B,GAAG;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAwDF,wBAA8B,SAAS,CACrC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAkHf"}
package/lib/index.js CHANGED
@@ -84,7 +84,14 @@ async function mdxLoader(fileString) {
84
84
  remarkPlugins: [
85
85
  ...(reqOptions.beforeDefaultRemarkPlugins || []),
86
86
  ...DEFAULT_OPTIONS.remarkPlugins,
87
- [transformImage_1.default, { staticDirs: reqOptions.staticDirs, filePath }],
87
+ [
88
+ transformImage_1.default,
89
+ {
90
+ staticDirs: reqOptions.staticDirs,
91
+ filePath,
92
+ siteDir: reqOptions.siteDir,
93
+ },
94
+ ],
88
95
  [
89
96
  transformLinks_1.default,
90
97
  {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import type { Plugin } from 'unified';
8
8
  interface PluginOptions {
9
9
  filePath: string;
10
10
  staticDirs: string[];
11
+ siteDir: string;
11
12
  }
12
13
  declare const plugin: Plugin<[PluginOptions]>;
13
14
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/transformImage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAOjD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA8FD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CASnC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/transformImage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAOjD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAmGD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CASnC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -7,52 +7,69 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  const tslib_1 = require("tslib");
10
+ const utils_1 = require("@docusaurus/utils");
10
11
  const unist_util_visit_1 = (0, tslib_1.__importDefault)(require("unist-util-visit"));
11
12
  const path_1 = (0, tslib_1.__importDefault)(require("path"));
12
13
  const url_1 = (0, tslib_1.__importDefault)(require("url"));
13
14
  const fs_extra_1 = (0, tslib_1.__importDefault)(require("fs-extra"));
14
15
  const escape_html_1 = (0, tslib_1.__importDefault)(require("escape-html"));
15
- const utils_1 = require("@docusaurus/utils");
16
16
  const { loaders: { inlineMarkdownImageFileLoader }, } = (0, utils_1.getFileLoaderUtils)();
17
- const createJSX = (node, pathUrl) => {
17
+ function toImageRequireNode(node, imagePath, filePath) {
18
+ var _a, _b;
18
19
  const jsxNode = node;
20
+ let relativeImagePath = (0, utils_1.posixPath)(path_1.default.relative(path_1.default.dirname(filePath), imagePath));
21
+ relativeImagePath = `./${relativeImagePath}`;
22
+ const parsedUrl = url_1.default.parse(node.url);
23
+ const hash = (_a = parsedUrl.hash) !== null && _a !== void 0 ? _a : '';
24
+ const search = (_b = parsedUrl.search) !== null && _b !== void 0 ? _b : '';
25
+ const alt = node.alt ? `alt={"${(0, escape_html_1.default)(node.alt)}"} ` : '';
26
+ const src = `require("${inlineMarkdownImageFileLoader}${(0, utils_1.escapePath)(relativeImagePath) + search}").default${hash ? ` + '${hash}'` : ''}`;
27
+ const title = node.title ? ` title="${(0, escape_html_1.default)(node.title)}"` : '';
28
+ Object.keys(jsxNode).forEach((key) => delete jsxNode[key]);
19
29
  jsxNode.type = 'jsx';
20
- jsxNode.value = `<img ${node.alt ? `alt={"${(0, escape_html_1.default)(node.alt)}"} ` : ''}${node.url
21
- ? `src={require("${inlineMarkdownImageFileLoader}${(0, utils_1.escapePath)(pathUrl)}").default}`
22
- : ''}${node.title ? ` title="${(0, escape_html_1.default)(node.title)}"` : ''} />`;
23
- if (jsxNode.url) {
24
- delete jsxNode.url;
25
- }
26
- if (jsxNode.alt) {
27
- delete jsxNode.alt;
28
- }
29
- if (jsxNode.title) {
30
- delete jsxNode.title;
31
- }
32
- };
30
+ jsxNode.value = `<img ${alt}src={${src}}${title} />`;
31
+ }
33
32
  async function ensureImageFileExist(imagePath, sourceFilePath) {
34
33
  const imageExists = await fs_extra_1.default.pathExists(imagePath);
35
34
  if (!imageExists) {
36
35
  throw new Error(`Image ${(0, utils_1.toMessageRelativeFilePath)(imagePath)} used in ${(0, utils_1.toMessageRelativeFilePath)(sourceFilePath)} not found.`);
37
36
  }
38
37
  }
39
- async function findImage(possiblePaths, sourceFilePath) {
40
- // eslint-disable-next-line no-restricted-syntax
41
- for (const possiblePath of possiblePaths) {
42
- if (await fs_extra_1.default.pathExists(possiblePath)) {
43
- return possiblePath;
38
+ async function getImageAbsolutePath(imagePath, { siteDir, filePath, staticDirs }) {
39
+ if (imagePath.startsWith('@site/')) {
40
+ const imageFilePath = path_1.default.join(siteDir, imagePath.replace('@site/', ''));
41
+ await ensureImageFileExist(imageFilePath, filePath);
42
+ return imageFilePath;
43
+ }
44
+ else if (path_1.default.isAbsolute(imagePath)) {
45
+ // absolute paths are expected to exist in the static folder
46
+ const possiblePaths = staticDirs.map((dir) => path_1.default.join(dir, imagePath));
47
+ // eslint-disable-next-line no-restricted-syntax
48
+ for (const possiblePath of possiblePaths) {
49
+ const imageFilePath = possiblePath;
50
+ if (await fs_extra_1.default.pathExists(imageFilePath)) {
51
+ return imageFilePath;
52
+ }
44
53
  }
54
+ throw new Error(`Image ${possiblePaths
55
+ .map((p) => (0, utils_1.toMessageRelativeFilePath)(p))
56
+ .join(' or ')} used in ${(0, utils_1.toMessageRelativeFilePath)(filePath)} not found.`);
57
+ }
58
+ // We try to convert image urls without protocol to images with require calls
59
+ // going through webpack ensures that image assets exist at build time
60
+ else {
61
+ // relative paths are resolved against the source file's folder
62
+ const imageFilePath = path_1.default.join(path_1.default.dirname(filePath), imagePath);
63
+ await ensureImageFileExist(imageFilePath, filePath);
64
+ return imageFilePath;
45
65
  }
46
- throw new Error(`Image ${possiblePaths
47
- .map((p) => (0, utils_1.toMessageRelativeFilePath)(p))
48
- .join(' or ')} used in ${(0, utils_1.toMessageRelativeFilePath)(sourceFilePath)} not found.`);
49
66
  }
50
- async function processImageNode(node, { filePath, staticDirs }) {
67
+ async function processImageNode(node, options) {
51
68
  if (!node.url) {
52
- throw new Error(`Markdown image URL is mandatory in "${(0, utils_1.toMessageRelativeFilePath)(filePath)}" file`);
69
+ throw new Error(`Markdown image URL is mandatory in "${(0, utils_1.toMessageRelativeFilePath)(options.filePath)}" file`);
53
70
  }
54
71
  const parsedUrl = url_1.default.parse(node.url);
55
- if (parsedUrl.protocol) {
72
+ if (parsedUrl.protocol || !parsedUrl.pathname) {
56
73
  // pathname:// is an escape hatch,
57
74
  // in case user does not want his images to be converted to require calls going through webpack loader
58
75
  // we don't have to document this for now,
@@ -60,22 +77,10 @@ async function processImageNode(node, { filePath, staticDirs }) {
60
77
  if (parsedUrl.protocol === 'pathname:') {
61
78
  node.url = node.url.replace('pathname://', '');
62
79
  }
80
+ return;
63
81
  }
64
- // images without protocol
65
- else if (path_1.default.isAbsolute(node.url)) {
66
- // absolute paths are expected to exist in the static folder
67
- const possibleImagePaths = staticDirs.map((dir) => path_1.default.join(dir, node.url));
68
- const imagePath = await findImage(possibleImagePaths, filePath);
69
- createJSX(node, (0, utils_1.posixPath)(imagePath));
70
- }
71
- // We try to convert image urls without protocol to images with require calls
72
- // going through webpack ensures that image assets exist at build time
73
- else {
74
- // relative paths are resolved against the source file's folder
75
- const expectedImagePath = path_1.default.join(path_1.default.dirname(filePath), node.url);
76
- await ensureImageFileExist(expectedImagePath, filePath);
77
- createJSX(node, node.url.startsWith('./') ? node.url : `./${node.url}`);
78
- }
82
+ const imagePath = await getImageAbsolutePath(parsedUrl.pathname, options);
83
+ toImageRequireNode(node, imagePath, options.filePath);
79
84
  }
80
85
  const plugin = (options) => {
81
86
  const transformer = async (root) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformImage/index.ts"],"names":[],"mappings":"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"}
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;AAcH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAQjD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0HD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CASnC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAOjD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAmGD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CASnC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -15,68 +15,53 @@ const fs_extra_1 = (0, tslib_1.__importDefault)(require("fs-extra"));
15
15
  const escape_html_1 = (0, tslib_1.__importDefault)(require("escape-html"));
16
16
  const utils_2 = require("../utils");
17
17
  const { loaders: { inlineMarkdownLinkFileLoader }, } = (0, utils_1.getFileLoaderUtils)();
18
- const hashRegex = /#.*$/;
19
- async function ensureAssetFileExist(fileSystemAssetPath, sourceFilePath) {
20
- const assetExists = await fs_extra_1.default.pathExists(fileSystemAssetPath);
21
- if (!assetExists) {
22
- throw new Error(`Asset ${(0, utils_1.toMessageRelativeFilePath)(fileSystemAssetPath)} used in ${(0, utils_1.toMessageRelativeFilePath)(sourceFilePath)} not found.`);
23
- }
24
- }
25
18
  // transform the link node to a jsx link with a require() call
26
- function toAssetRequireNode({ node, filePath, requireAssetPath, }) {
27
- let relativeRequireAssetPath = (0, utils_1.posixPath)(path_1.default.relative(path_1.default.dirname(filePath), requireAssetPath));
28
- const hash = hashRegex.test(node.url)
29
- ? node.url.substr(node.url.indexOf('#'))
30
- : '';
31
- // nodejs does not like require("assets/file.pdf")
32
- relativeRequireAssetPath = relativeRequireAssetPath.startsWith('.')
33
- ? relativeRequireAssetPath
34
- : `./${relativeRequireAssetPath}`;
35
- const href = `require('${inlineMarkdownLinkFileLoader}${(0, utils_1.escapePath)(relativeRequireAssetPath)}').default${hash ? ` + '${hash}'` : ''}`;
19
+ function toAssetRequireNode(node, assetPath, filePath) {
20
+ var _a, _b;
21
+ const jsxNode = node;
22
+ let relativeAssetPath = (0, utils_1.posixPath)(path_1.default.relative(path_1.default.dirname(filePath), assetPath));
23
+ // require("assets/file.pdf") means requiring from a package called assets
24
+ relativeAssetPath = `./${relativeAssetPath}`;
25
+ const parsedUrl = url_1.default.parse(node.url);
26
+ const hash = (_a = parsedUrl.hash) !== null && _a !== void 0 ? _a : '';
27
+ const search = (_b = parsedUrl.search) !== null && _b !== void 0 ? _b : '';
28
+ const href = `require('${inlineMarkdownLinkFileLoader}${(0, utils_1.escapePath)(relativeAssetPath) + search}').default${hash ? ` + '${hash}'` : ''}`;
36
29
  const children = (0, utils_2.stringifyContent)(node);
37
30
  const title = node.title ? ` title="${(0, escape_html_1.default)(node.title)}"` : '';
38
- node.type = 'jsx';
39
- node.value = `<a target="_blank" href={${href}}${title}>${children}</a>`;
31
+ Object.keys(jsxNode).forEach((key) => delete jsxNode[key]);
32
+ jsxNode.type = 'jsx';
33
+ jsxNode.value = `<a target="_blank" href={${href}}${title}>${children}</a>`;
40
34
  }
41
- // If the link looks like an asset link, we'll link to the asset,
42
- // and use a require("assetUrl") (using webpack url-loader/file-loader)
43
- // instead of navigating to such link
44
- async function convertToAssetLinkIfNeeded(node, { filePath, siteDir, staticDirs }) {
45
- const assetPath = node.url.replace(hashRegex, '');
46
- const hasSiteAlias = assetPath.startsWith('@site/');
47
- const hasAssetLikeExtension = path_1.default.extname(assetPath) && !assetPath.match(/#|.md|.mdx|.html/);
48
- const looksLikeAssetLink = hasSiteAlias || hasAssetLikeExtension;
49
- if (!looksLikeAssetLink) {
50
- return;
51
- }
52
- function toAssetLinkNode(requireAssetPath) {
53
- toAssetRequireNode({
54
- node,
55
- filePath,
56
- requireAssetPath,
57
- });
35
+ async function ensureAssetFileExist(assetPath, sourceFilePath) {
36
+ const assetExists = await fs_extra_1.default.pathExists(assetPath);
37
+ if (!assetExists) {
38
+ throw new Error(`Asset ${(0, utils_1.toMessageRelativeFilePath)(assetPath)} used in ${(0, utils_1.toMessageRelativeFilePath)(sourceFilePath)} not found.`);
58
39
  }
40
+ }
41
+ async function getAssetAbsolutePath(assetPath, { siteDir, filePath, staticDirs }) {
59
42
  if (assetPath.startsWith('@site/')) {
60
- const fileSystemAssetPath = path_1.default.join(siteDir, assetPath.replace('@site/', ''));
61
- await ensureAssetFileExist(fileSystemAssetPath, filePath);
62
- toAssetLinkNode(fileSystemAssetPath);
43
+ const assetFilePath = path_1.default.join(siteDir, assetPath.replace('@site/', ''));
44
+ // The @site alias is the only way to believe that the user wants an asset.
45
+ // Everything else can just be a link URL
46
+ await ensureAssetFileExist(assetFilePath, filePath);
47
+ return assetFilePath;
63
48
  }
64
49
  else if (path_1.default.isAbsolute(assetPath)) {
65
50
  // eslint-disable-next-line no-restricted-syntax
66
51
  for (const staticDir of staticDirs) {
67
- const fileSystemAssetPath = path_1.default.join(staticDir, assetPath);
68
- if (await fs_extra_1.default.pathExists(fileSystemAssetPath)) {
69
- toAssetLinkNode(fileSystemAssetPath);
70
- return;
52
+ const assetFilePath = path_1.default.join(staticDir, assetPath);
53
+ if (await fs_extra_1.default.pathExists(assetFilePath)) {
54
+ return assetFilePath;
71
55
  }
72
56
  }
73
57
  }
74
58
  else {
75
- const fileSystemAssetPath = path_1.default.join(path_1.default.dirname(filePath), assetPath);
76
- if (await fs_extra_1.default.pathExists(fileSystemAssetPath)) {
77
- toAssetLinkNode(fileSystemAssetPath);
59
+ const assetFilePath = path_1.default.join(path_1.default.dirname(filePath), assetPath);
60
+ if (await fs_extra_1.default.pathExists(assetFilePath)) {
61
+ return assetFilePath;
78
62
  }
79
63
  }
64
+ return null;
80
65
  }
81
66
  async function processLinkNode(node, options) {
82
67
  var _a, _b, _c;
@@ -88,10 +73,20 @@ async function processLinkNode(node, options) {
88
73
  throw new Error(`Markdown link URL is mandatory in "${(0, utils_1.toMessageRelativeFilePath)(options.filePath)}" file (title: ${title}, line: ${line}).`);
89
74
  }
90
75
  const parsedUrl = url_1.default.parse(node.url);
91
- if (parsedUrl.protocol) {
76
+ if (parsedUrl.protocol || !parsedUrl.pathname) {
77
+ // Don't process pathname:// here, it's used by the <Link> component
92
78
  return;
93
79
  }
94
- await convertToAssetLinkIfNeeded(node, options);
80
+ const hasSiteAlias = parsedUrl.pathname.startsWith('@site/');
81
+ const hasAssetLikeExtension = path_1.default.extname(parsedUrl.pathname) &&
82
+ !parsedUrl.pathname.match(/\.(?:mdx?|html)(?:#|$)/);
83
+ if (!hasSiteAlias && !hasAssetLikeExtension) {
84
+ return;
85
+ }
86
+ const assetPath = await getAssetAbsolutePath(parsedUrl.pathname, options);
87
+ if (assetPath) {
88
+ toAssetRequireNode(node, assetPath, options.filePath);
89
+ }
95
90
  }
96
91
  const plugin = (options) => {
97
92
  const transformer = async (root) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/transformLinks/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/mdx-loader",
3
- "version": "0.0.0-4383",
3
+ "version": "0.0.0-4393",
4
4
  "description": "Docusaurus Loader for MDX",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/mdx-loader.d.ts",
@@ -20,8 +20,8 @@
20
20
  "dependencies": {
21
21
  "@babel/parser": "^7.16.4",
22
22
  "@babel/traverse": "^7.16.3",
23
- "@docusaurus/logger": "0.0.0-4383",
24
- "@docusaurus/utils": "0.0.0-4383",
23
+ "@docusaurus/logger": "0.0.0-4393",
24
+ "@docusaurus/utils": "0.0.0-4393",
25
25
  "@mdx-js/mdx": "^1.6.21",
26
26
  "@mdx-js/react": "^1.6.21",
27
27
  "escape-html": "^1.0.3",
@@ -37,7 +37,7 @@
37
37
  "webpack": "^5.61.0"
38
38
  },
39
39
  "devDependencies": {
40
- "@docusaurus/types": "0.0.0-4383",
40
+ "@docusaurus/types": "0.0.0-4393",
41
41
  "@types/escape-html": "^1.0.1",
42
42
  "@types/mdast": "^3.0.7",
43
43
  "@types/stringify-object": "^3.3.1",
@@ -55,5 +55,5 @@
55
55
  "engines": {
56
56
  "node": ">=14"
57
57
  },
58
- "gitHead": "6ccc0daea1a7b1413cd32f515a9e661c4007a355"
58
+ "gitHead": "ab99bd917600589f5e698e45c4c6e079ddccd828"
59
59
  }
package/src/index.ts CHANGED
@@ -124,7 +124,14 @@ export default async function mdxLoader(
124
124
  remarkPlugins: [
125
125
  ...(reqOptions.beforeDefaultRemarkPlugins || []),
126
126
  ...DEFAULT_OPTIONS.remarkPlugins,
127
- [transformImage, {staticDirs: reqOptions.staticDirs, filePath}],
127
+ [
128
+ transformImage,
129
+ {
130
+ staticDirs: reqOptions.staticDirs,
131
+ filePath,
132
+ siteDir: reqOptions.siteDir,
133
+ },
134
+ ],
128
135
  [
129
136
  transformLinks,
130
137
  {
@@ -5,17 +5,17 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import visit from 'unist-util-visit';
9
- import path from 'path';
10
- import url from 'url';
11
- import fs from 'fs-extra';
12
- import escapeHtml from 'escape-html';
13
8
  import {
9
+ toMessageRelativeFilePath,
14
10
  posixPath,
15
11
  escapePath,
16
- toMessageRelativeFilePath,
17
12
  getFileLoaderUtils,
18
13
  } from '@docusaurus/utils';
14
+ import visit from 'unist-util-visit';
15
+ import path from 'path';
16
+ import url from 'url';
17
+ import fs from 'fs-extra';
18
+ import escapeHtml from 'escape-html';
19
19
  import type {Plugin, Transformer} from 'unified';
20
20
  import type {Image, Literal} from 'mdast';
21
21
 
@@ -26,31 +26,33 @@ const {
26
26
  interface PluginOptions {
27
27
  filePath: string;
28
28
  staticDirs: string[];
29
+ siteDir: string;
29
30
  }
30
31
 
31
- const createJSX = (node: Image, pathUrl: string) => {
32
- const jsxNode = node;
33
- (jsxNode as unknown as Literal).type = 'jsx';
34
- (jsxNode as unknown as Literal).value = `<img ${
35
- node.alt ? `alt={"${escapeHtml(node.alt)}"} ` : ''
36
- }${
37
- node.url
38
- ? `src={require("${inlineMarkdownImageFileLoader}${escapePath(
39
- pathUrl,
40
- )}").default}`
41
- : ''
42
- }${node.title ? ` title="${escapeHtml(node.title)}"` : ''} />`;
32
+ function toImageRequireNode(node: Image, imagePath: string, filePath: string) {
33
+ const jsxNode = node as Literal & Partial<Image>;
34
+ let relativeImagePath = posixPath(
35
+ path.relative(path.dirname(filePath), imagePath),
36
+ );
37
+ relativeImagePath = `./${relativeImagePath}`;
43
38
 
44
- if (jsxNode.url) {
45
- delete (jsxNode as Partial<Image>).url;
46
- }
47
- if (jsxNode.alt) {
48
- delete jsxNode.alt;
49
- }
50
- if (jsxNode.title) {
51
- delete jsxNode.title;
52
- }
53
- };
39
+ const parsedUrl = url.parse(node.url);
40
+ const hash = parsedUrl.hash ?? '';
41
+ const search = parsedUrl.search ?? '';
42
+
43
+ const alt = node.alt ? `alt={"${escapeHtml(node.alt)}"} ` : '';
44
+ const src = `require("${inlineMarkdownImageFileLoader}${
45
+ escapePath(relativeImagePath) + search
46
+ }").default${hash ? ` + '${hash}'` : ''}`;
47
+ const title = node.title ? ` title="${escapeHtml(node.title)}"` : '';
48
+
49
+ Object.keys(jsxNode).forEach(
50
+ (key) => delete jsxNode[key as keyof typeof jsxNode],
51
+ );
52
+
53
+ (jsxNode as Literal).type = 'jsx';
54
+ jsxNode.value = `<img ${alt}src={${src}}${title} />`;
55
+ }
54
56
 
55
57
  async function ensureImageFileExist(imagePath: string, sourceFilePath: string) {
56
58
  const imageExists = await fs.pathExists(imagePath);
@@ -63,36 +65,53 @@ async function ensureImageFileExist(imagePath: string, sourceFilePath: string) {
63
65
  }
64
66
  }
65
67
 
66
- async function findImage(possiblePaths: string[], sourceFilePath: string) {
67
- // eslint-disable-next-line no-restricted-syntax
68
- for (const possiblePath of possiblePaths) {
69
- if (await fs.pathExists(possiblePath)) {
70
- return possiblePath;
68
+ async function getImageAbsolutePath(
69
+ imagePath: string,
70
+ {siteDir, filePath, staticDirs}: PluginOptions,
71
+ ) {
72
+ if (imagePath.startsWith('@site/')) {
73
+ const imageFilePath = path.join(siteDir, imagePath.replace('@site/', ''));
74
+ await ensureImageFileExist(imageFilePath, filePath);
75
+ return imageFilePath;
76
+ } else if (path.isAbsolute(imagePath)) {
77
+ // absolute paths are expected to exist in the static folder
78
+ const possiblePaths = staticDirs.map((dir) => path.join(dir, imagePath));
79
+ // eslint-disable-next-line no-restricted-syntax
80
+ for (const possiblePath of possiblePaths) {
81
+ const imageFilePath = possiblePath;
82
+ if (await fs.pathExists(imageFilePath)) {
83
+ return imageFilePath;
84
+ }
71
85
  }
86
+ throw new Error(
87
+ `Image ${possiblePaths
88
+ .map((p) => toMessageRelativeFilePath(p))
89
+ .join(' or ')} used in ${toMessageRelativeFilePath(
90
+ filePath,
91
+ )} not found.`,
92
+ );
93
+ }
94
+ // We try to convert image urls without protocol to images with require calls
95
+ // going through webpack ensures that image assets exist at build time
96
+ else {
97
+ // relative paths are resolved against the source file's folder
98
+ const imageFilePath = path.join(path.dirname(filePath), imagePath);
99
+ await ensureImageFileExist(imageFilePath, filePath);
100
+ return imageFilePath;
72
101
  }
73
- throw new Error(
74
- `Image ${possiblePaths
75
- .map((p) => toMessageRelativeFilePath(p))
76
- .join(' or ')} used in ${toMessageRelativeFilePath(
77
- sourceFilePath,
78
- )} not found.`,
79
- );
80
102
  }
81
103
 
82
- async function processImageNode(
83
- node: Image,
84
- {filePath, staticDirs}: PluginOptions,
85
- ) {
104
+ async function processImageNode(node: Image, options: PluginOptions) {
86
105
  if (!node.url) {
87
106
  throw new Error(
88
107
  `Markdown image URL is mandatory in "${toMessageRelativeFilePath(
89
- filePath,
108
+ options.filePath,
90
109
  )}" file`,
91
110
  );
92
111
  }
93
112
 
94
113
  const parsedUrl = url.parse(node.url);
95
- if (parsedUrl.protocol) {
114
+ if (parsedUrl.protocol || !parsedUrl.pathname) {
96
115
  // pathname:// is an escape hatch,
97
116
  // in case user does not want his images to be converted to require calls going through webpack loader
98
117
  // we don't have to document this for now,
@@ -100,24 +119,11 @@ async function processImageNode(
100
119
  if (parsedUrl.protocol === 'pathname:') {
101
120
  node.url = node.url.replace('pathname://', '');
102
121
  }
122
+ return;
103
123
  }
104
- // images without protocol
105
- else if (path.isAbsolute(node.url)) {
106
- // absolute paths are expected to exist in the static folder
107
- const possibleImagePaths = staticDirs.map((dir) =>
108
- path.join(dir, node.url),
109
- );
110
- const imagePath = await findImage(possibleImagePaths, filePath);
111
- createJSX(node, posixPath(imagePath));
112
- }
113
- // We try to convert image urls without protocol to images with require calls
114
- // going through webpack ensures that image assets exist at build time
115
- else {
116
- // relative paths are resolved against the source file's folder
117
- const expectedImagePath = path.join(path.dirname(filePath), node.url);
118
- await ensureImageFileExist(expectedImagePath, filePath);
119
- createJSX(node, node.url.startsWith('./') ? node.url : `./${node.url}`);
120
- }
124
+
125
+ const imagePath = await getImageAbsolutePath(parsedUrl.pathname, options);
126
+ toImageRequireNode(node, imagePath, options.filePath);
121
127
  }
122
128
 
123
129
  const plugin: Plugin<[PluginOptions]> = (options) => {
@@ -23,7 +23,6 @@ import type {Link, Literal} from 'mdast';
23
23
  const {
24
24
  loaders: {inlineMarkdownLinkFileLoader},
25
25
  } = getFileLoaderUtils();
26
- const hashRegex = /#.*$/;
27
26
 
28
27
  interface PluginOptions {
29
28
  filePath: string;
@@ -31,103 +30,69 @@ interface PluginOptions {
31
30
  siteDir: string;
32
31
  }
33
32
 
34
- async function ensureAssetFileExist(
35
- fileSystemAssetPath: string,
36
- sourceFilePath: string,
37
- ) {
38
- const assetExists = await fs.pathExists(fileSystemAssetPath);
39
- if (!assetExists) {
40
- throw new Error(
41
- `Asset ${toMessageRelativeFilePath(
42
- fileSystemAssetPath,
43
- )} used in ${toMessageRelativeFilePath(sourceFilePath)} not found.`,
44
- );
45
- }
46
- }
47
-
48
33
  // transform the link node to a jsx link with a require() call
49
- function toAssetRequireNode({
50
- node,
51
- filePath,
52
- requireAssetPath,
53
- }: {
54
- node: Link;
55
- filePath: string;
56
- requireAssetPath: string;
57
- }) {
58
- let relativeRequireAssetPath = posixPath(
59
- path.relative(path.dirname(filePath), requireAssetPath),
34
+ function toAssetRequireNode(node: Link, assetPath: string, filePath: string) {
35
+ const jsxNode = node as Literal & Partial<Link>;
36
+ let relativeAssetPath = posixPath(
37
+ path.relative(path.dirname(filePath), assetPath),
60
38
  );
61
- const hash = hashRegex.test(node.url)
62
- ? node.url.substr(node.url.indexOf('#'))
63
- : '';
39
+ // require("assets/file.pdf") means requiring from a package called assets
40
+ relativeAssetPath = `./${relativeAssetPath}`;
64
41
 
65
- // nodejs does not like require("assets/file.pdf")
66
- relativeRequireAssetPath = relativeRequireAssetPath.startsWith('.')
67
- ? relativeRequireAssetPath
68
- : `./${relativeRequireAssetPath}`;
42
+ const parsedUrl = url.parse(node.url);
43
+ const hash = parsedUrl.hash ?? '';
44
+ const search = parsedUrl.search ?? '';
69
45
 
70
- const href = `require('${inlineMarkdownLinkFileLoader}${escapePath(
71
- relativeRequireAssetPath,
72
- )}').default${hash ? ` + '${hash}'` : ''}`;
46
+ const href = `require('${inlineMarkdownLinkFileLoader}${
47
+ escapePath(relativeAssetPath) + search
48
+ }').default${hash ? ` + '${hash}'` : ''}`;
73
49
  const children = stringifyContent(node);
74
50
  const title = node.title ? ` title="${escapeHtml(node.title)}"` : '';
75
51
 
76
- (node as unknown as Literal).type = 'jsx';
77
- (
78
- node as unknown as Literal
79
- ).value = `<a target="_blank" href={${href}}${title}>${children}</a>`;
80
- }
81
-
82
- // If the link looks like an asset link, we'll link to the asset,
83
- // and use a require("assetUrl") (using webpack url-loader/file-loader)
84
- // instead of navigating to such link
85
- async function convertToAssetLinkIfNeeded(
86
- node: Link,
87
- {filePath, siteDir, staticDirs}: PluginOptions,
88
- ) {
89
- const assetPath = node.url.replace(hashRegex, '');
90
-
91
- const hasSiteAlias = assetPath.startsWith('@site/');
92
- const hasAssetLikeExtension =
93
- path.extname(assetPath) && !assetPath.match(/#|.md|.mdx|.html/);
94
-
95
- const looksLikeAssetLink = hasSiteAlias || hasAssetLikeExtension;
52
+ Object.keys(jsxNode).forEach(
53
+ (key) => delete jsxNode[key as keyof typeof jsxNode],
54
+ );
96
55
 
97
- if (!looksLikeAssetLink) {
98
- return;
99
- }
56
+ (jsxNode as Literal).type = 'jsx';
57
+ jsxNode.value = `<a target="_blank" href={${href}}${title}>${children}</a>`;
58
+ }
100
59
 
101
- function toAssetLinkNode(requireAssetPath: string) {
102
- toAssetRequireNode({
103
- node,
104
- filePath,
105
- requireAssetPath,
106
- });
60
+ async function ensureAssetFileExist(assetPath: string, sourceFilePath: string) {
61
+ const assetExists = await fs.pathExists(assetPath);
62
+ if (!assetExists) {
63
+ throw new Error(
64
+ `Asset ${toMessageRelativeFilePath(
65
+ assetPath,
66
+ )} used in ${toMessageRelativeFilePath(sourceFilePath)} not found.`,
67
+ );
107
68
  }
69
+ }
108
70
 
71
+ async function getAssetAbsolutePath(
72
+ assetPath: string,
73
+ {siteDir, filePath, staticDirs}: PluginOptions,
74
+ ) {
109
75
  if (assetPath.startsWith('@site/')) {
110
- const fileSystemAssetPath = path.join(
111
- siteDir,
112
- assetPath.replace('@site/', ''),
113
- );
114
- await ensureAssetFileExist(fileSystemAssetPath, filePath);
115
- toAssetLinkNode(fileSystemAssetPath);
76
+ const assetFilePath = path.join(siteDir, assetPath.replace('@site/', ''));
77
+ // The @site alias is the only way to believe that the user wants an asset.
78
+ // Everything else can just be a link URL
79
+ await ensureAssetFileExist(assetFilePath, filePath);
80
+ return assetFilePath;
116
81
  } else if (path.isAbsolute(assetPath)) {
117
82
  // eslint-disable-next-line no-restricted-syntax
118
83
  for (const staticDir of staticDirs) {
119
- const fileSystemAssetPath = path.join(staticDir, assetPath);
120
- if (await fs.pathExists(fileSystemAssetPath)) {
121
- toAssetLinkNode(fileSystemAssetPath);
122
- return;
84
+ const assetFilePath = path.join(staticDir, assetPath);
85
+ if (await fs.pathExists(assetFilePath)) {
86
+ return assetFilePath;
123
87
  }
124
88
  }
125
89
  } else {
126
- const fileSystemAssetPath = path.join(path.dirname(filePath), assetPath);
127
- if (await fs.pathExists(fileSystemAssetPath)) {
128
- toAssetLinkNode(fileSystemAssetPath);
90
+ const assetFilePath = path.join(path.dirname(filePath), assetPath);
91
+ if (await fs.pathExists(assetFilePath)) {
92
+ return assetFilePath;
129
93
  }
130
94
  }
95
+ return null;
131
96
  }
132
97
 
133
98
  async function processLinkNode(node: Link, options: PluginOptions) {
@@ -144,11 +109,22 @@ async function processLinkNode(node: Link, options: PluginOptions) {
144
109
  }
145
110
 
146
111
  const parsedUrl = url.parse(node.url);
147
- if (parsedUrl.protocol) {
112
+ if (parsedUrl.protocol || !parsedUrl.pathname) {
113
+ // Don't process pathname:// here, it's used by the <Link> component
114
+ return;
115
+ }
116
+ const hasSiteAlias = parsedUrl.pathname.startsWith('@site/');
117
+ const hasAssetLikeExtension =
118
+ path.extname(parsedUrl.pathname) &&
119
+ !parsedUrl.pathname.match(/\.(?:mdx?|html)(?:#|$)/);
120
+ if (!hasSiteAlias && !hasAssetLikeExtension) {
148
121
  return;
149
122
  }
150
123
 
151
- await convertToAssetLinkIfNeeded(node, options);
124
+ const assetPath = await getAssetAbsolutePath(parsedUrl.pathname, options);
125
+ if (assetPath) {
126
+ toAssetRequireNode(node, assetPath, options.filePath);
127
+ }
152
128
  }
153
129
 
154
130
  const plugin: Plugin<[PluginOptions]> = (options) => {