@docusaurus/mdx-loader 0.0.0-6064 → 0.0.0-6065

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/loader.d.ts CHANGED
@@ -10,6 +10,10 @@ import type { MarkdownConfig } from '@docusaurus/types';
10
10
  import type { LoaderContext } from 'webpack';
11
11
  type Pluggable = any;
12
12
  export type MDXPlugin = Pluggable;
13
+ export type LoadedMetadata = {
14
+ metadataPath: string;
15
+ metadataContent: unknown;
16
+ };
13
17
  export type Options = Partial<MDXOptions> & {
14
18
  markdownConfig: MarkdownConfig;
15
19
  staticDirs: string[];
@@ -17,14 +21,12 @@ export type Options = Partial<MDXOptions> & {
17
21
  isMDXPartial?: (filePath: string) => boolean;
18
22
  isMDXPartialFrontMatterWarningDisabled?: boolean;
19
23
  removeContentTitle?: boolean;
20
- metadataPath?: string | ((filePath: string) => string);
24
+ metadataPath?: string | ((filePath: string) => string | LoadedMetadata);
21
25
  createAssets?: (metadata: {
22
26
  frontMatter: {
23
27
  [key: string]: unknown;
24
28
  };
25
- metadata: {
26
- [key: string]: unknown;
27
- };
29
+ metadata: unknown;
28
30
  }) => {
29
31
  [key: string]: unknown;
30
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAK3C,KAAK,SAAS,GAAG,GAAG,CAAC;AAErB,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAElC,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,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;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAC,CAAC;QACtC,QAAQ,EAAE;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAC,CAAC;KACpC,KAAK;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAG1C,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAoGf"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAK3C,KAAK,SAAS,GAAG,GAAG,CAAC;AAErB,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAGlC,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,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;IAI7B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,cAAc,CAAC,CAAC;IACxE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QACxB,WAAW,EAAE;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAC,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC;KACnB,KAAK;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAG1C,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAgHf"}
package/lib/loader.js CHANGED
@@ -53,27 +53,37 @@ ${JSON.stringify(frontMatter, null, 2)}`;
53
53
  logger_1.default.warn(errorMessage);
54
54
  }
55
55
  }
56
- function getMetadataPath() {
56
+ async function loadMetadata() {
57
57
  if (!isMDXPartial) {
58
58
  // Read metadata for this MDX and export it.
59
59
  if (options.metadataPath && typeof options.metadataPath === 'function') {
60
- return options.metadataPath(filePath);
60
+ const metadata = options.metadataPath(filePath);
61
+ if (!metadata) {
62
+ return undefined;
63
+ }
64
+ if (typeof metadata === 'string') {
65
+ return {
66
+ metadataPath: metadata,
67
+ metadataContent: await (0, utils_2.readMetadataPath)(metadata),
68
+ };
69
+ }
70
+ if (!metadata.metadataPath) {
71
+ throw new Error(`Metadata path missing for file ${filePath}`);
72
+ }
73
+ if (!metadata.metadataContent) {
74
+ throw new Error(`Metadata content missing for file ${filePath}`);
75
+ }
76
+ return metadata;
61
77
  }
62
78
  }
63
79
  return undefined;
64
80
  }
65
- const metadataPath = getMetadataPath();
66
- if (metadataPath) {
67
- this.addDependency(metadataPath);
81
+ const metadata = await loadMetadata();
82
+ if (metadata) {
83
+ this.addDependency(metadata.metadataPath);
68
84
  }
69
- const metadataJsonString = metadataPath
70
- ? await (0, utils_2.readMetadataPath)(metadataPath)
71
- : undefined;
72
- const metadata = metadataJsonString
73
- ? JSON.parse(metadataJsonString)
74
- : undefined;
75
85
  const assets = options.createAssets && metadata
76
- ? options.createAssets({ frontMatter, metadata })
86
+ ? options.createAssets({ frontMatter, metadata: metadata.metadataContent })
77
87
  : undefined;
78
88
  const fileLoaderUtils = (0, utils_1.getFileLoaderUtils)(compilerName === 'server');
79
89
  // TODO use remark plugins to insert extra exports instead of string concat?
@@ -81,7 +91,9 @@ ${JSON.stringify(frontMatter, null, 2)}`;
81
91
  const exportsCode = `
82
92
  export const frontMatter = ${(0, stringify_object_1.default)(frontMatter)};
83
93
  export const contentTitle = ${(0, stringify_object_1.default)(contentTitle)};
84
- ${metadataJsonString ? `export const metadata = ${metadataJsonString};` : ''}
94
+ ${metadata
95
+ ? `export const metadata = ${JSON.stringify(metadata.metadataContent)};`
96
+ : ''}
85
97
  ${assets
86
98
  ? `export const assets = ${(0, utils_2.createAssetsExportCode)({
87
99
  assets,
package/lib/loader.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/lib/utils.d.ts CHANGED
@@ -13,7 +13,7 @@ import type { Options } from './loader';
13
13
  * starting with _). That's why it's important to provide the `isMDXPartial`
14
14
  * function in config
15
15
  */
16
- export declare function readMetadataPath(metadataPath: string): Promise<string>;
16
+ export declare function readMetadataPath(metadataPath: string): Promise<unknown>;
17
17
  /**
18
18
  * Converts assets an object with Webpack require calls code.
19
19
  * This is useful for mdx files to reference co-located assets using relative
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAa,KAAK,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAe,KAAK,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAGrE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAEtC;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS5E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,kCAAkC,GACnC,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,kCAAkC,EAAE,MAAM,CAAC;CAC5C,GAAG,MAAM,CAuCT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GAAG,MAAM,GAAG,SAAS,CAErB;AAED,wBAAsB,YAAY,CAAC,EACjC,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,EACP,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,mBAAmB,CAAC;CACnC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2CjC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAa,KAAK,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAe,KAAK,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAGrE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAEtC;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,kCAAkC,GACnC,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,kCAAkC,EAAE,MAAM,CAAC;CAC5C,GAAG,MAAM,CAuCT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GAAG,MAAM,GAAG,SAAS,CAErB;AAED,wBAAsB,YAAY,CAAC,EACjC,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,EACP,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,mBAAmB,CAAC;CACnC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2CjC"}
package/lib/utils.js CHANGED
@@ -25,7 +25,7 @@ const preprocessor_1 = tslib_1.__importDefault(require("./preprocessor"));
25
25
  */
26
26
  async function readMetadataPath(metadataPath) {
27
27
  try {
28
- return await fs_extra_1.default.readFile(metadataPath, 'utf8');
28
+ return await fs_extra_1.default.readJSON(metadataPath, 'utf8');
29
29
  }
30
30
  catch (error) {
31
31
  throw new Error(logger_1.default.interpolate `MDX loader can't read MDX metadata file path=${metadataPath}. Maybe the isMDXPartial option function was not provided?`, { cause: error });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/mdx-loader",
3
- "version": "0.0.0-6064",
3
+ "version": "0.0.0-6065",
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": "0.0.0-6064",
22
- "@docusaurus/utils": "0.0.0-6064",
23
- "@docusaurus/utils-validation": "0.0.0-6064",
21
+ "@docusaurus/logger": "0.0.0-6065",
22
+ "@docusaurus/utils": "0.0.0-6065",
23
+ "@docusaurus/utils-validation": "0.0.0-6065",
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": "0.0.0-6064",
47
+ "@docusaurus/types": "0.0.0-6065",
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": ">=18.0"
66
66
  },
67
- "gitHead": "f9f463e54c7ff8013cb938f94857af8e4bff5a72"
67
+ "gitHead": "6da713a524315a36515fc3e998ff1551bfa054d2"
68
68
  }
package/src/loader.ts CHANGED
@@ -35,6 +35,12 @@ type Pluggable = any; // TODO fix this asap
35
35
 
36
36
  export type MDXPlugin = Pluggable;
37
37
 
38
+ // This represents the path to the mdx metadata bundle path + its loaded content
39
+ export type LoadedMetadata = {
40
+ metadataPath: string;
41
+ metadataContent: unknown;
42
+ };
43
+
38
44
  export type Options = Partial<MDXOptions> & {
39
45
  markdownConfig: MarkdownConfig;
40
46
  staticDirs: string[];
@@ -42,10 +48,13 @@ export type Options = Partial<MDXOptions> & {
42
48
  isMDXPartial?: (filePath: string) => boolean;
43
49
  isMDXPartialFrontMatterWarningDisabled?: boolean;
44
50
  removeContentTitle?: boolean;
45
- metadataPath?: string | ((filePath: string) => string);
51
+
52
+ // TODO Docusaurus v4: rename to just "metadata"?
53
+ // We kept retro-compatibility in v3 in case plugins/sites use mdx loader
54
+ metadataPath?: string | ((filePath: string) => string | LoadedMetadata);
46
55
  createAssets?: (metadata: {
47
56
  frontMatter: {[key: string]: unknown};
48
- metadata: {[key: string]: unknown};
57
+ metadata: unknown;
49
58
  }) => {[key: string]: unknown};
50
59
  resolveMarkdownLink?: ResolveMarkdownLink;
51
60
 
@@ -103,32 +112,40 @@ ${JSON.stringify(frontMatter, null, 2)}`;
103
112
  }
104
113
  }
105
114
 
106
- function getMetadataPath(): string | undefined {
115
+ async function loadMetadata(): Promise<LoadedMetadata | undefined> {
107
116
  if (!isMDXPartial) {
108
117
  // Read metadata for this MDX and export it.
109
118
  if (options.metadataPath && typeof options.metadataPath === 'function') {
110
- return options.metadataPath(filePath);
119
+ const metadata = options.metadataPath(filePath);
120
+ if (!metadata) {
121
+ return undefined;
122
+ }
123
+ if (typeof metadata === 'string') {
124
+ return {
125
+ metadataPath: metadata,
126
+ metadataContent: await readMetadataPath(metadata),
127
+ };
128
+ }
129
+ if (!metadata.metadataPath) {
130
+ throw new Error(`Metadata path missing for file ${filePath}`);
131
+ }
132
+ if (!metadata.metadataContent) {
133
+ throw new Error(`Metadata content missing for file ${filePath}`);
134
+ }
135
+ return metadata;
111
136
  }
112
137
  }
113
138
  return undefined;
114
139
  }
115
140
 
116
- const metadataPath = getMetadataPath();
117
- if (metadataPath) {
118
- this.addDependency(metadataPath);
141
+ const metadata = await loadMetadata();
142
+ if (metadata) {
143
+ this.addDependency(metadata.metadataPath);
119
144
  }
120
145
 
121
- const metadataJsonString = metadataPath
122
- ? await readMetadataPath(metadataPath)
123
- : undefined;
124
-
125
- const metadata = metadataJsonString
126
- ? (JSON.parse(metadataJsonString) as {[key: string]: unknown})
127
- : undefined;
128
-
129
146
  const assets =
130
147
  options.createAssets && metadata
131
- ? options.createAssets({frontMatter, metadata})
148
+ ? options.createAssets({frontMatter, metadata: metadata.metadataContent})
132
149
  : undefined;
133
150
 
134
151
  const fileLoaderUtils = getFileLoaderUtils(compilerName === 'server');
@@ -138,7 +155,11 @@ ${JSON.stringify(frontMatter, null, 2)}`;
138
155
  const exportsCode = `
139
156
  export const frontMatter = ${stringifyObject(frontMatter)};
140
157
  export const contentTitle = ${stringifyObject(contentTitle)};
141
- ${metadataJsonString ? `export const metadata = ${metadataJsonString};` : ''}
158
+ ${
159
+ metadata
160
+ ? `export const metadata = ${JSON.stringify(metadata.metadataContent)};`
161
+ : ''
162
+ }
142
163
  ${
143
164
  assets
144
165
  ? `export const assets = ${createAssetsExportCode({
package/src/utils.ts CHANGED
@@ -19,9 +19,9 @@ import type {Options} from './loader';
19
19
  * starting with _). That's why it's important to provide the `isMDXPartial`
20
20
  * function in config
21
21
  */
22
- export async function readMetadataPath(metadataPath: string): Promise<string> {
22
+ export async function readMetadataPath(metadataPath: string): Promise<unknown> {
23
23
  try {
24
- return await fs.readFile(metadataPath, 'utf8');
24
+ return await fs.readJSON(metadataPath, 'utf8');
25
25
  } catch (error) {
26
26
  throw new Error(
27
27
  logger.interpolate`MDX loader can't read MDX metadata file path=${metadataPath}. Maybe the isMDXPartial option function was not provided?`,