fumadocs-mdx 13.0.8 → 14.0.0

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.
Files changed (104) hide show
  1. package/dist/bin.cjs +924 -901
  2. package/dist/bin.js +3 -3
  3. package/dist/build-mdx-6UAK5FF5.js +8 -0
  4. package/dist/bun/index.cjs +578 -471
  5. package/dist/bun/index.d.cts +3 -2
  6. package/dist/bun/index.d.ts +3 -2
  7. package/dist/bun/index.js +12 -12
  8. package/dist/chunk-4JSFLXXT.js +8 -0
  9. package/dist/chunk-5UMZCWKV.js +17 -0
  10. package/dist/chunk-5YXP7JLN.js +138 -0
  11. package/dist/{chunk-2E2JCOSO.js → chunk-6NISOLQ6.js} +16 -44
  12. package/dist/chunk-7L2KNF6B.js +180 -0
  13. package/dist/chunk-E5DJTSIM.js +86 -0
  14. package/dist/{chunk-K5ZLPEIQ.js → chunk-FBLMK4RS.js} +9 -6
  15. package/dist/{chunk-QXHN25N3.js → chunk-OXSRIWQW.js} +7 -8
  16. package/dist/chunk-PKI7ZDA5.js +29 -0
  17. package/dist/{chunk-3J3WL7WN.js → chunk-SLY7WXTX.js} +71 -58
  18. package/dist/{chunk-5FTSWCB4.js → chunk-SRSRFOVI.js} +8 -10
  19. package/dist/chunk-TYJDYTKH.js +85 -0
  20. package/dist/chunk-XHJCLBZ4.js +406 -0
  21. package/dist/{chunk-2HXTGJBI.js → chunk-ZY6UZ7NH.js} +22 -19
  22. package/dist/config/index.cjs +79 -71
  23. package/dist/config/index.d.cts +2 -1
  24. package/dist/config/index.d.ts +2 -1
  25. package/dist/config/index.js +5 -5
  26. package/dist/index-BlVBvy-z.d.ts +8 -0
  27. package/dist/{core-DB7TdlyC.d.cts → index-D7JdSMpp.d.cts} +99 -61
  28. package/dist/{core-DB7TdlyC.d.ts → index-D7JdSMpp.d.ts} +99 -61
  29. package/dist/index-P2NNUkHn.d.cts +8 -0
  30. package/dist/index.d.cts +3 -74
  31. package/dist/index.d.ts +3 -74
  32. package/dist/load-from-file-I3ALLIVB.js +8 -0
  33. package/dist/next/index.cjs +698 -476
  34. package/dist/next/index.d.cts +11 -1
  35. package/dist/next/index.d.ts +11 -1
  36. package/dist/next/index.js +78 -281
  37. package/dist/node/loader.cjs +704 -602
  38. package/dist/node/loader.js +10 -11
  39. package/dist/plugins/index-file.cjs +471 -0
  40. package/dist/plugins/index-file.d.cts +29 -0
  41. package/dist/plugins/index-file.d.ts +29 -0
  42. package/dist/plugins/index-file.js +8 -0
  43. package/dist/plugins/json-schema.d.cts +3 -2
  44. package/dist/plugins/json-schema.d.ts +3 -2
  45. package/dist/plugins/last-modified.cjs +75 -0
  46. package/dist/plugins/last-modified.d.cts +27 -0
  47. package/dist/plugins/last-modified.d.ts +27 -0
  48. package/dist/plugins/last-modified.js +44 -0
  49. package/dist/runtime/{vite/browser.cjs → browser.cjs} +40 -53
  50. package/dist/runtime/browser.d.cts +50 -0
  51. package/dist/runtime/browser.d.ts +50 -0
  52. package/dist/runtime/browser.js +68 -0
  53. package/dist/runtime/dynamic.cjs +985 -0
  54. package/dist/runtime/dynamic.d.cts +27 -0
  55. package/dist/runtime/dynamic.d.ts +27 -0
  56. package/dist/runtime/dynamic.js +78 -0
  57. package/dist/runtime/server.cjs +173 -0
  58. package/dist/runtime/server.d.cts +161 -0
  59. package/dist/runtime/server.d.ts +161 -0
  60. package/dist/runtime/server.js +8 -0
  61. package/dist/vite/index.cjs +934 -638
  62. package/dist/vite/index.d.cts +12 -22
  63. package/dist/vite/index.d.ts +12 -22
  64. package/dist/vite/index.js +30 -221
  65. package/dist/webpack/mdx.cjs +613 -515
  66. package/dist/webpack/mdx.d.cts +9 -1
  67. package/dist/webpack/mdx.d.ts +9 -1
  68. package/dist/webpack/mdx.js +12 -17
  69. package/dist/webpack/meta.cjs +327 -233
  70. package/dist/webpack/meta.d.cts +9 -1
  71. package/dist/webpack/meta.d.ts +9 -1
  72. package/dist/webpack/meta.js +13 -15
  73. package/package.json +15 -32
  74. package/dist/build-mdx-BjXOmv0b.d.cts +0 -53
  75. package/dist/build-mdx-CY5UldCO.d.ts +0 -53
  76. package/dist/chunk-2AQRQXSO.js +0 -119
  77. package/dist/chunk-CXA4JO4Z.js +0 -45
  78. package/dist/chunk-DMJ6I4C3.js +0 -76
  79. package/dist/chunk-FSZMKRVH.js +0 -80
  80. package/dist/chunk-II3H5ZVZ.js +0 -77
  81. package/dist/chunk-KILFIBVW.js +0 -75
  82. package/dist/chunk-NVRDCY6Z.js +0 -30
  83. package/dist/chunk-VUEZTR2H.js +0 -26
  84. package/dist/index-D7s7kCc2.d.cts +0 -7
  85. package/dist/index-D7s7kCc2.d.ts +0 -7
  86. package/dist/load-from-file-AVYOFOI7.js +0 -7
  87. package/dist/preset-ZMP6U62C.js +0 -6
  88. package/dist/runtime/next/async.cjs +0 -760
  89. package/dist/runtime/next/async.d.cts +0 -19
  90. package/dist/runtime/next/async.d.ts +0 -19
  91. package/dist/runtime/next/async.js +0 -86
  92. package/dist/runtime/next/index.cjs +0 -136
  93. package/dist/runtime/next/index.d.cts +0 -33
  94. package/dist/runtime/next/index.d.ts +0 -33
  95. package/dist/runtime/next/index.js +0 -11
  96. package/dist/runtime/vite/browser.d.cts +0 -59
  97. package/dist/runtime/vite/browser.d.ts +0 -59
  98. package/dist/runtime/vite/browser.js +0 -11
  99. package/dist/runtime/vite/server.cjs +0 -243
  100. package/dist/runtime/vite/server.d.cts +0 -30
  101. package/dist/runtime/vite/server.d.ts +0 -30
  102. package/dist/runtime/vite/server.js +0 -111
  103. package/dist/types-Bnh9n7mj.d.cts +0 -45
  104. package/dist/types-ey1AZqrg.d.ts +0 -45
@@ -1,31 +1,21 @@
1
1
  import { Plugin } from 'vite';
2
-
3
- interface IndexFileOptions {
4
- /**
5
- * Runtime compat fallbacks for Vite specific APIs
6
- *
7
- * - `bun`: use Bun-specific APIs.
8
- * - `node`: use Node.js APIs.
9
- * - `false` (default): no fallback.
10
- */
11
- runtime?: 'bun' | 'node' | false;
12
- /**
13
- * add `.js` extensions to imports, needed for ESM without bundler resolution
14
- */
15
- addJsExtension?: boolean;
16
- /**
17
- * Generate entry point for browser environment
18
- */
19
- browser?: boolean;
20
- }
2
+ import { IndexFilePluginOptions } from '../plugins/index-file.cjs';
3
+ import '../index-D7JdSMpp.cjs';
4
+ import '@mdx-js/mdx';
5
+ import '@standard-schema/spec';
6
+ import 'unified';
7
+ import 'fumadocs-core/mdx-plugins';
8
+ import 'zod';
9
+ import 'chokidar';
10
+ import 'vfile';
21
11
 
22
12
  interface PluginOptions {
23
13
  /**
24
- * Automatically generate index files for accessing files with `import.meta.glob`.
14
+ * Generate index files for accessing content.
25
15
  *
26
16
  * @defaultValue true
27
17
  */
28
- generateIndexFile?: boolean | IndexFileOptions;
18
+ index?: boolean | IndexFilePluginOptions;
29
19
  /**
30
20
  * @defaultValue source.config.ts
31
21
  */
@@ -44,6 +34,6 @@ interface PluginOptions {
44
34
  outDir?: string;
45
35
  }
46
36
  declare function mdx(config: Record<string, unknown>, pluginOptions?: PluginOptions): Promise<Plugin>;
47
- declare function postInstall(configPath?: string, pluginOptions?: PluginOptions): Promise<void>;
37
+ declare function postInstall(pluginOptions?: PluginOptions): Promise<void>;
48
38
 
49
39
  export { type PluginOptions, mdx as default, postInstall };
@@ -1,31 +1,21 @@
1
1
  import { Plugin } from 'vite';
2
-
3
- interface IndexFileOptions {
4
- /**
5
- * Runtime compat fallbacks for Vite specific APIs
6
- *
7
- * - `bun`: use Bun-specific APIs.
8
- * - `node`: use Node.js APIs.
9
- * - `false` (default): no fallback.
10
- */
11
- runtime?: 'bun' | 'node' | false;
12
- /**
13
- * add `.js` extensions to imports, needed for ESM without bundler resolution
14
- */
15
- addJsExtension?: boolean;
16
- /**
17
- * Generate entry point for browser environment
18
- */
19
- browser?: boolean;
20
- }
2
+ import { IndexFilePluginOptions } from '../plugins/index-file.js';
3
+ import '../index-D7JdSMpp.js';
4
+ import '@mdx-js/mdx';
5
+ import '@standard-schema/spec';
6
+ import 'unified';
7
+ import 'fumadocs-core/mdx-plugins';
8
+ import 'zod';
9
+ import 'chokidar';
10
+ import 'vfile';
21
11
 
22
12
  interface PluginOptions {
23
13
  /**
24
- * Automatically generate index files for accessing files with `import.meta.glob`.
14
+ * Generate index files for accessing content.
25
15
  *
26
16
  * @defaultValue true
27
17
  */
28
- generateIndexFile?: boolean | IndexFileOptions;
18
+ index?: boolean | IndexFilePluginOptions;
29
19
  /**
30
20
  * @defaultValue source.config.ts
31
21
  */
@@ -44,6 +34,6 @@ interface PluginOptions {
44
34
  outDir?: string;
45
35
  }
46
36
  declare function mdx(config: Record<string, unknown>, pluginOptions?: PluginOptions): Promise<Plugin>;
47
- declare function postInstall(configPath?: string, pluginOptions?: PluginOptions): Promise<void>;
37
+ declare function postInstall(pluginOptions?: PluginOptions): Promise<void>;
48
38
 
49
39
  export { type PluginOptions, mdx as default, postInstall };
@@ -1,227 +1,34 @@
1
- import {
2
- ident,
3
- toImportPath
4
- } from "../chunk-CXA4JO4Z.js";
5
1
  import {
6
2
  buildConfig
7
- } from "../chunk-2HXTGJBI.js";
3
+ } from "../chunk-ZY6UZ7NH.js";
4
+ import "../chunk-E5DJTSIM.js";
8
5
  import {
9
6
  createMdxLoader
10
- } from "../chunk-2E2JCOSO.js";
7
+ } from "../chunk-6NISOLQ6.js";
11
8
  import {
12
9
  createMetaLoader
13
- } from "../chunk-DMJ6I4C3.js";
10
+ } from "../chunk-TYJDYTKH.js";
14
11
  import {
15
12
  createIntegratedConfigLoader,
16
13
  toVite
17
- } from "../chunk-5FTSWCB4.js";
18
- import "../chunk-3J3WL7WN.js";
19
- import "../chunk-K5ZLPEIQ.js";
20
- import "../chunk-VUEZTR2H.js";
14
+ } from "../chunk-SRSRFOVI.js";
15
+ import "../chunk-4JSFLXXT.js";
21
16
  import {
22
17
  ValidationError,
23
- createCore,
24
- findConfigFile
25
- } from "../chunk-2AQRQXSO.js";
18
+ _Defaults,
19
+ createCore
20
+ } from "../chunk-7L2KNF6B.js";
21
+ import {
22
+ indexFile
23
+ } from "../chunk-XHJCLBZ4.js";
24
+ import "../chunk-PKI7ZDA5.js";
26
25
  import "../chunk-VWJKRQZR.js";
27
26
 
28
27
  // src/vite/index.ts
29
28
  import { mergeConfig } from "vite";
30
-
31
- // src/utils/glob-import.ts
32
- import { globSync } from "tinyglobby";
33
- import path from "path";
34
- import { pathToFileURL } from "url";
35
- function generateGlobImport(patterns, options) {
36
- let code = "{";
37
- const result = globSync(patterns, {
38
- cwd: options.base
39
- });
40
- for (const item of result) {
41
- const fullPath = path.join(options.base, item);
42
- const url = pathToFileURL(fullPath);
43
- for (const [k, v] of Object.entries(options.query ?? {})) {
44
- url.searchParams.set(k, v);
45
- }
46
- let line = `${JSON.stringify(item)}: () => import(${JSON.stringify(url.href)})`;
47
- if (options.import) {
48
- line += `.then(mod => mod[${JSON.stringify(options.import)}])`;
49
- }
50
- code += `${line}, `;
51
- }
52
- code += "}";
53
- return code;
54
- }
55
-
56
- // src/plugins/vite.ts
57
- import path2 from "path";
58
- function vite({
59
- index
60
- }) {
61
- let config;
62
- let indexOptions;
63
- if (index === false) indexOptions = false;
64
- else indexOptions = applyDefaults(index === true ? {} : index);
65
- return {
66
- name: "vite",
67
- config(v) {
68
- config = v;
69
- },
70
- configureServer(server) {
71
- if (!server.watcher || indexOptions === false || indexOptions.runtime === false)
72
- return;
73
- server.watcher.on("all", (event, file) => {
74
- if (event === "change") return;
75
- const isUpdated = config.collectionList.some((collection) => {
76
- if (collection.type === "docs")
77
- return collection.docs.hasFile(file) || collection.meta.hasFile(file);
78
- return collection.hasFile(file);
79
- });
80
- if (isUpdated) {
81
- this.core.emitAndWrite({
82
- filterPlugin: (plugin) => plugin.name === "vite"
83
- });
84
- }
85
- });
86
- },
87
- emit() {
88
- const out = [];
89
- if (indexOptions === false) return out;
90
- if (indexOptions.browser) {
91
- out.push({
92
- path: "browser.ts",
93
- content: indexFile(this, config, indexOptions, "browser")
94
- });
95
- }
96
- out.push({
97
- path: "index.ts",
98
- content: indexFile(
99
- this,
100
- config,
101
- indexOptions,
102
- indexOptions.browser ? "server" : "all"
103
- )
104
- });
105
- return out;
106
- }
107
- };
108
- }
109
- function applyDefaults(options) {
110
- return {
111
- addJsExtension: options.addJsExtension ?? false,
112
- browser: options.browser ?? false,
113
- runtime: options.runtime ?? false
114
- };
115
- }
116
- function indexFile({ configPath, outDir }, config, { addJsExtension, runtime }, environment) {
117
- const runtimePath = {
118
- all: "fumadocs-mdx/runtime/vite",
119
- server: "fumadocs-mdx/runtime/vite.server",
120
- browser: "fumadocs-mdx/runtime/vite.browser"
121
- }[environment];
122
- const lines = [
123
- '/// <reference types="vite/client" />',
124
- `import { fromConfig } from '${runtimePath}';`,
125
- `import type * as Config from '${toImportPath(configPath, {
126
- relativeTo: outDir,
127
- jsExtension: addJsExtension
128
- })}';`,
129
- "",
130
- `export const create = fromConfig<typeof Config>();`
131
- ];
132
- function generateCollectionGlob(collection) {
133
- if (collection.type === "docs") {
134
- const obj = [
135
- ident(`doc: ${generateCollectionGlob(collection.docs)}`),
136
- ident(`meta: ${generateCollectionGlob(collection.meta)}`)
137
- ].join(",\n");
138
- return `{
139
- ${obj}
140
- }`;
141
- }
142
- const dir = getCollectionDir(collection);
143
- if (collection.type === "doc") {
144
- const docGlob = generateGlob(collection.patterns, {
145
- query: {
146
- collection: collection.name
147
- },
148
- base: dir
149
- });
150
- if (collection.async) {
151
- const headBlob = generateGlob(collection.patterns, {
152
- query: {
153
- only: "frontmatter",
154
- collection: collection.name
155
- },
156
- import: "frontmatter",
157
- base: dir
158
- });
159
- return `create.docLazy("${collection.name}", "${dir}", ${headBlob}, ${docGlob})`;
160
- }
161
- return `create.doc("${collection.name}", "${dir}", ${docGlob})`;
162
- }
163
- return `create.meta("${collection.name}", "${dir}", ${generateGlob(
164
- collection.patterns,
165
- {
166
- import: "default",
167
- base: dir,
168
- query: {
169
- collection: collection.name
170
- }
171
- }
172
- )})`;
173
- }
174
- function generateGlob(patterns, options) {
175
- patterns = patterns.map(normalizeGlobPath);
176
- if (runtime === "node" || runtime === "bun") {
177
- return generateGlobImport(patterns, options);
178
- } else {
179
- return `import.meta.glob(${JSON.stringify(patterns)}, ${JSON.stringify(
180
- {
181
- ...options,
182
- base: normalizeGlobPath(path2.relative(outDir, options.base))
183
- },
184
- null,
185
- 2
186
- )})`;
187
- }
188
- }
189
- for (const collection of config.collectionList) {
190
- lines.push("");
191
- lines.push(
192
- `export const ${collection.name} = ${generateCollectionGlob(collection)};`
193
- );
194
- }
195
- return lines.join("\n");
196
- }
197
- function normalizeGlobPath(file) {
198
- file = slash(file);
199
- if (file.startsWith("./")) return file;
200
- if (file.startsWith("/")) return `.${file}`;
201
- return `./${file}`;
202
- }
203
- function getCollectionDir({ dir }) {
204
- if (Array.isArray(dir)) {
205
- if (dir.length !== 1)
206
- throw new Error(
207
- `[Fumadocs MDX] Vite Plugin doesn't support multiple \`dir\` for a collection at the moment.`
208
- );
209
- return dir[0];
210
- }
211
- return dir;
212
- }
213
- function slash(path3) {
214
- const isExtendedLengthPath = path3.startsWith("\\\\?\\");
215
- if (isExtendedLengthPath) {
216
- return path3;
217
- }
218
- return path3.replaceAll("\\", "/");
219
- }
220
-
221
- // src/vite/index.ts
222
29
  var FumadocsDeps = ["fumadocs-core", "fumadocs-ui", "fumadocs-openapi"];
223
30
  async function mdx(config, pluginOptions = {}) {
224
- const options = applyDefaults2(pluginOptions);
31
+ const options = applyDefaults(pluginOptions);
225
32
  const core = await createViteCore(options).init({
226
33
  config: buildConfig(config)
227
34
  });
@@ -267,26 +74,27 @@ async function mdx(config, pluginOptions = {}) {
267
74
  }
268
75
  } catch (e) {
269
76
  if (e instanceof ValidationError) {
270
- throw new Error(e.toStringFormatted());
77
+ throw new Error(await e.toStringFormatted());
271
78
  }
272
79
  throw e;
273
80
  }
274
81
  }
275
82
  };
276
83
  }
277
- async function postInstall(configPath = findConfigFile(), pluginOptions = {}) {
278
- const { loadConfig } = await import("../load-from-file-AVYOFOI7.js");
279
- const options = applyDefaults2(pluginOptions);
280
- const core = await createViteCore(options).init({
281
- config: loadConfig(configPath, options.outDir, true)
84
+ async function postInstall(pluginOptions = {}) {
85
+ const { loadConfig } = await import("../load-from-file-I3ALLIVB.js");
86
+ const core = createViteCore(applyDefaults(pluginOptions));
87
+ await core.init({
88
+ config: loadConfig(core, true)
282
89
  });
283
90
  await core.emitAndWrite();
284
91
  }
285
92
  function createViteCore({
93
+ index,
286
94
  configPath,
287
- outDir,
288
- generateIndexFile
95
+ outDir
289
96
  }) {
97
+ if (index === true) index = {};
290
98
  return createCore(
291
99
  {
292
100
  environment: "vite",
@@ -294,18 +102,19 @@ function createViteCore({
294
102
  outDir
295
103
  },
296
104
  [
297
- vite({
298
- index: generateIndexFile
105
+ index && indexFile({
106
+ ...index,
107
+ target: index.target ?? "vite"
299
108
  })
300
109
  ]
301
110
  );
302
111
  }
303
- function applyDefaults2(options) {
112
+ function applyDefaults(options) {
304
113
  return {
305
114
  updateViteConfig: options.updateViteConfig ?? true,
306
- generateIndexFile: options.generateIndexFile ?? true,
307
- configPath: options.configPath ?? "source.config.ts",
308
- outDir: options.outDir ?? ".source"
115
+ index: options.index ?? true,
116
+ configPath: options.configPath ?? _Defaults.configPath,
117
+ outDir: options.outDir ?? _Defaults.outDir
309
118
  };
310
119
  }
311
120
  export {