fumadocs-core 16.8.8 → 16.8.10

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.
@@ -2,7 +2,7 @@ import { t as RehypeCodeOptions } from "../../rehype-code-DXCf4vCa.js";
2
2
  import { t as RemarkImageOptions } from "../../remark-image-B8S2Lk0J.js";
3
3
  import { r as StructureOptions } from "../../remark-structure-C2-K9_ko.js";
4
4
  import { t as RemarkHeadingOptions } from "../../remark-heading-BkmtL7mJ.js";
5
- import { t as RemarkCodeTabOptions } from "../../remark-code-tab-B8g4pbaL.js";
5
+ import { t as RemarkCodeTabOptions } from "../../remark-code-tab-Ct56s_uQ.js";
6
6
  import { t as RemarkNpmOptions } from "../../remark-npm-BZsXR24w.js";
7
7
  import { t as ResolvePlugins } from "../../util-D7vTp-Ia.js";
8
8
  import { Pluggable } from "unified";
@@ -2,7 +2,7 @@ import { t as RehypeCodeOptions } from "../../rehype-code-DXCf4vCa.js";
2
2
  import { t as RemarkImageOptions } from "../../remark-image-B8S2Lk0J.js";
3
3
  import { r as StructureOptions } from "../../remark-structure-C2-K9_ko.js";
4
4
  import { t as RemarkHeadingOptions } from "../../remark-heading-BkmtL7mJ.js";
5
- import { t as RemarkCodeTabOptions } from "../../remark-code-tab-B8g4pbaL.js";
5
+ import { t as RemarkCodeTabOptions } from "../../remark-code-tab-Ct56s_uQ.js";
6
6
  import { t as RemarkNpmOptions } from "../../remark-npm-BZsXR24w.js";
7
7
  import { t as ResolvePlugins } from "../../util-D7vTp-Ia.js";
8
8
  import { ProcessorOptions } from "@mdx-js/mdx";
@@ -18,8 +18,8 @@ interface LinkProps extends ComponentProps<'a'> {
18
18
  prefetch?: boolean;
19
19
  }
20
20
  interface Router {
21
- push: (url: string) => void;
22
- refresh: () => void;
21
+ push: (url: string) => void | Promise<void>;
22
+ refresh: () => void | Promise<void>;
23
23
  }
24
24
  interface Framework {
25
25
  usePathname: () => string;
@@ -1,13 +1,12 @@
1
1
  "use client";
2
2
  import { FrameworkProvider } from "./index.js";
3
- import { useMemo } from "react";
3
+ import { useMemo, useRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { Link, useRouter } from "waku";
6
6
  //#region src/framework/waku.tsx
7
7
  const framework = {
8
8
  usePathname() {
9
- const { path } = useRouter();
10
- return path;
9
+ return useRouter().path;
11
10
  },
12
11
  useParams() {
13
12
  const { query } = useRouter();
@@ -18,14 +17,16 @@ const framework = {
18
17
  },
19
18
  useRouter() {
20
19
  const router = useRouter();
20
+ const routerRef = useRef(router);
21
+ routerRef.current = router;
21
22
  return useMemo(() => ({
22
23
  push(url) {
23
- router.push(url);
24
+ return routerRef.current.push(url);
24
25
  },
25
26
  refresh() {
26
- router.push(router.path);
27
+ return routerRef.current.reload();
27
28
  }
28
- }), [router]);
29
+ }), []);
29
30
  },
30
31
  Link({ href, prefetch = true, ...props }) {
31
32
  return /* @__PURE__ */ jsx(Link, {
@@ -1,6 +1,6 @@
1
1
  import { t as getNegotiator } from "../negotiation-CvOwibYZ.js";
2
2
  import { NextResponse } from "next/server.js";
3
- //#region ../../node_modules/.pnpm/@formatjs+fast-memoize@3.1.3/node_modules/@formatjs/fast-memoize/index.js
3
+ //#region ../../node_modules/.pnpm/@formatjs+fast-memoize@3.1.4/node_modules/@formatjs/fast-memoize/index.js
4
4
  function memoize(fn, options) {
5
5
  const cache = options && options.cache ? options.cache : cacheDefault;
6
6
  const serializer = options && options.serializer ? options.serializer : serializerDefault;
@@ -56,7 +56,7 @@ const cacheDefault = { create: function create() {
56
56
  return new ObjectWithoutPrototypeCache();
57
57
  } };
58
58
  //#endregion
59
- //#region ../../node_modules/.pnpm/@formatjs+intl-localematcher@0.8.5/node_modules/@formatjs/intl-localematcher/index.js
59
+ //#region ../../node_modules/.pnpm/@formatjs+intl-localematcher@0.8.6/node_modules/@formatjs/intl-localematcher/index.js
60
60
  /**
61
61
  * http://ecma-international.org/ecma-402/7.0/index.html#sec-canonicalizelocalelist
62
62
  * @param locales
@@ -30,7 +30,10 @@ declare class FileSystem<File> {
30
30
  }
31
31
  //#endregion
32
32
  //#region src/source/storage/content.d.ts
33
- type ContentStorage<P = ContentStoragePageFile, M = ContentStorageMetaFile> = FileSystem<P | M>;
33
+ type ContentStorage<P extends ContentStoragePageFile = ContentStoragePageFile, M extends ContentStorageMetaFile = ContentStorageMetaFile> = FileSystem<P | M> & {
34
+ /** always `undefined`, for inferring types only */$inferPage: P; /** always `undefined`, for inferring types only */
35
+ $inferMeta: M;
36
+ };
34
37
  /** @internal */
35
38
  interface ContentStorageMetaFile<Type extends string | undefined = string | undefined, Data extends MetaData = MetaData> {
36
39
  type: Type;
@@ -125,7 +128,7 @@ declare class PageTreeBuilder {
125
128
  /**
126
129
  * a function to generate slugs, return `undefined` to fallback to default generation.
127
130
  */
128
- type SlugFn<S = ContentStorage> = (file: S extends ContentStorage<infer P, unknown> ? P : never) => string[] | undefined;
131
+ type SlugFn<S extends ContentStorage = ContentStorage> = (file: S['$inferPage']) => string[] | undefined;
129
132
  /**
130
133
  * Generate slugs for pages if missing
131
134
  */
@@ -48,20 +48,18 @@ function generateCodeBlockTabs({ persist = false, defaultValue, triggers, tabs,
48
48
  children
49
49
  };
50
50
  }
51
+ const AttributeRegex = /(?<=^|\s)(?<name>[a-zA-Z0-9_-]+)(?:=(?:"([^"]*)"|'([^']*)'))?/g;
51
52
  /**
52
53
  * Parse Fumadocs-style code block attributes from meta string, like `title="hello world"`
53
54
  */
54
55
  function parseCodeBlockAttributes(meta, allowedNames) {
55
- let str = meta;
56
- const StringRegex = /(?<=^|\s)(?<name>\w+)(?:=(?:"([^"]*)"|'([^']*)'))?/g;
57
56
  const attributes = {};
58
- str = str.replaceAll(StringRegex, (match, name, value_1, value_2) => {
59
- if (allowedNames && !allowedNames.includes(name)) return match;
60
- attributes[name] = value_1 ?? value_2 ?? null;
61
- return "";
62
- });
63
57
  return {
64
- rest: str,
58
+ rest: meta.replaceAll(AttributeRegex, (match, name, value_1, value_2) => {
59
+ if (allowedNames && !allowedNames.includes(name)) return match;
60
+ attributes[name] = value_1 ?? value_2 ?? null;
61
+ return "";
62
+ }),
65
63
  attributes
66
64
  };
67
65
  }
@@ -7,7 +7,7 @@ import { n as remarkHeading, t as RemarkHeadingOptions } from "../remark-heading
7
7
  import { n as remarkAdmonition, t as RemarkAdmonitionOptions } from "../remark-admonition-Do12F5_K.js";
8
8
  import { n as remarkDirectiveAdmonition, t as RemarkDirectiveAdmonitionOptions } from "../remark-directive-admonition-WTw742i0.js";
9
9
  import { n as RehypeTocOptions, r as rehypeToc, t as RehypeTOCItemType } from "../rehype-toc-D5_U8iEU.js";
10
- import { n as remarkCodeTab, t as RemarkCodeTabOptions } from "../remark-code-tab-B8g4pbaL.js";
10
+ import { n as remarkCodeTab, t as RemarkCodeTabOptions } from "../remark-code-tab-Ct56s_uQ.js";
11
11
  import { n as remarkSteps, t as RemarkStepsOptions } from "../remark-steps-BcG9tJSi.js";
12
12
  import { n as remarkNpm, t as RemarkNpmOptions } from "../remark-npm-BZsXR24w.js";
13
13
  import { i as parseCodeBlockAttributes, n as CodeBlockTabsOptions, r as generateCodeBlockTabs, t as CodeBlockAttributes } from "../codeblock-utils-BFx9G8T-.js";
@@ -0,0 +1,42 @@
1
+ import { Transformer } from "unified";
2
+ import { Root, RootContent } from "mdast";
3
+
4
+ //#region src/mdx-plugins/remark-block-id.d.ts
5
+ interface RemarkBlockIdOptions {
6
+ /**
7
+ * generate block ID.
8
+ */
9
+ generateId?: (ctx: {
10
+ node: RootContent;
11
+ text: string;
12
+ }) => string;
13
+ /**
14
+ * determine whether an ID should be generated for a given node.
15
+ *
16
+ * default: `true` for block nodes, otherwise `false`.
17
+ *
18
+ * @returns
19
+ * - `true`: generate an ID for the node.
20
+ * - `false`: skip the current node and look into its children.
21
+ * - `skip`: skip the current node and its children.
22
+ */
23
+ shouldGenerate?: (node: RootContent) => boolean | 'skip';
24
+ /**
25
+ * Add `data-block="<value>"` to updated nodes, pass `null` to disable.
26
+ *
27
+ * @default "default"
28
+ */
29
+ addDataAttribute?: string | null;
30
+ }
31
+ /**
32
+ * Generate ID for each block node in Markdown/MDX.
33
+ *
34
+ * Note: the uniqueness is only guaranteed per file.
35
+ */
36
+ declare function remarkBlockId({
37
+ generateId,
38
+ addDataAttribute,
39
+ shouldGenerate
40
+ }?: RemarkBlockIdOptions): Transformer<Root, Root>;
41
+ //#endregion
42
+ export { RemarkBlockIdOptions, remarkBlockId };
@@ -0,0 +1,41 @@
1
+ import { t as flattenNode } from "../utils-pSG8hSr9.js";
2
+ import Slugger from "github-slugger";
3
+ import { visit } from "unist-util-visit";
4
+ import { createHash } from "node:crypto";
5
+ //#region src/mdx-plugins/remark-block-id.ts
6
+ /**
7
+ * Generate ID for each block node in Markdown/MDX.
8
+ *
9
+ * Note: the uniqueness is only guaranteed per file.
10
+ */
11
+ function remarkBlockId({ generateId, addDataAttribute = "default", shouldGenerate = (node) => {
12
+ switch (node.type) {
13
+ case "mdxJsxFlowElement": return "skip";
14
+ case "paragraph":
15
+ case "image":
16
+ case "listItem": return true;
17
+ default: return false;
18
+ }
19
+ } } = {}) {
20
+ return (tree) => {
21
+ const slugger = new Slugger();
22
+ visit(tree, (node) => {
23
+ if (node.type === "root" || node.data?.hProperties?.id) return;
24
+ const resolved = shouldGenerate(node);
25
+ if (resolved === false) return;
26
+ if (resolved === "skip") return "skip";
27
+ const text = flattenNode(node).trim();
28
+ if (text.length === 0) return;
29
+ const id = generateId ? slugger.slug(generateId({
30
+ node,
31
+ text
32
+ })) : slugger.slug(createHash("sha256").update(text).digest("base64url"));
33
+ node.data ??= {};
34
+ node.data.hProperties ??= {};
35
+ node.data.hProperties.id = id;
36
+ if (addDataAttribute) node.data.hProperties["data-block"] = addDataAttribute;
37
+ });
38
+ };
39
+ }
40
+ //#endregion
41
+ export { remarkBlockId };
@@ -1,2 +1,2 @@
1
- import { n as remarkCodeTab, t as RemarkCodeTabOptions } from "../remark-code-tab-B8g4pbaL.js";
1
+ import { n as remarkCodeTab, t as RemarkCodeTabOptions } from "../remark-code-tab-Ct56s_uQ.js";
2
2
  export { RemarkCodeTabOptions, remarkCodeTab };
@@ -3,21 +3,32 @@ import { visit } from "unist-util-visit";
3
3
  //#region src/mdx-plugins/remark-code-tab.ts
4
4
  const Types = {
5
5
  CodeBlockTabs(processor, nodes, withMdx, withParent) {
6
- const tabs = Array.from(processTabValue(nodes).entries());
7
- const node = generateCodeBlockTabs({
8
- defaultValue: tabs[0][0],
9
- triggers: tabs.map(([name]) => ({
10
- value: name,
11
- children: [withMdx ? mdxToAst(processor, name) : {
6
+ const tabs = processTabValue(nodes);
7
+ let isFirstTab = true;
8
+ const options = {
9
+ triggers: [],
10
+ tabs: []
11
+ };
12
+ for (const [value, list] of tabs) {
13
+ if (isFirstTab) {
14
+ const tagGroup = list[0].data?.tabGroup;
15
+ options.defaultValue = value;
16
+ if (tagGroup) options.persist = { id: tagGroup };
17
+ isFirstTab = false;
18
+ }
19
+ options.triggers.push({
20
+ value,
21
+ children: withMdx ? mdxToAst(processor, value).children : [{
12
22
  type: "text",
13
- value: name
23
+ value
14
24
  }]
15
- })),
16
- tabs: tabs.map(([name, codes]) => ({
17
- value: name,
18
- children: codes
19
- }))
20
- });
25
+ });
26
+ options.tabs.push({
27
+ value,
28
+ children: list
29
+ });
30
+ }
31
+ const node = generateCodeBlockTabs(options);
21
32
  if (!withParent) return node.children;
22
33
  return [node];
23
34
  },
@@ -135,7 +146,7 @@ function remarkCodeTab(options = {}) {
135
146
  close();
136
147
  continue;
137
148
  }
138
- const meta = parseCodeBlockAttributes(child.meta, ["tab"]);
149
+ const meta = parseCodeBlockAttributes(child.meta, ["tab", "tab-group"]);
139
150
  if (!meta.attributes.tab) {
140
151
  close();
141
152
  continue;
@@ -144,6 +155,7 @@ function remarkCodeTab(options = {}) {
144
155
  child.meta = meta.rest;
145
156
  child.data ??= {};
146
157
  child.data.tab = meta.attributes.tab;
158
+ if (meta.attributes["tab-group"]) child.data.tabGroup = meta.attributes["tab-group"];
147
159
  }
148
160
  close();
149
161
  });
@@ -154,9 +166,12 @@ function processTabValue(nodes) {
154
166
  for (let i = 0; i < nodes.length; i++) {
155
167
  const node = nodes[i];
156
168
  const name = node.data?.tab ?? `Tab ${i + 1}`;
157
- const li = out.get(name) ?? [];
169
+ let li = out.get(name);
170
+ if (!li) {
171
+ li = [];
172
+ out.set(name, li);
173
+ }
158
174
  li.push(node);
159
- out.set(name, li);
160
175
  }
161
176
  return out;
162
177
  }
@@ -165,7 +180,7 @@ function processTabValue(nodes) {
165
180
  */
166
181
  function mdxToAst(processor, name) {
167
182
  const node = processor.parse(name);
168
- if (node.type === "root") node.children = node.children.flatMap((child) => {
183
+ node.children = node.children.flatMap((child) => {
169
184
  if (child.type === "paragraph") return child.children;
170
185
  return child;
171
186
  });
@@ -18,6 +18,10 @@ declare module 'mdast' {
18
18
  * [Fumadocs: remark-code-tab] the associated tab value
19
19
  */
20
20
  tab?: string;
21
+ /**
22
+ * [Fumadocs: remark-code-tab] the associated tab group ID
23
+ */
24
+ tabGroup?: string;
21
25
  }
22
26
  interface Data {
23
27
  /**
@@ -1,5 +1,5 @@
1
1
  import { t as __commonJSMin } from "./chunk-CYJPkc-J.js";
2
- //#region ../../node_modules/.pnpm/remove-markdown@0.6.3/node_modules/remove-markdown/index.js
2
+ //#region ../../node_modules/.pnpm/remove-markdown@0.6.4/node_modules/remove-markdown/index.js
3
3
  var require_remove_markdown = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4
4
  module.exports = function(md, options) {
5
5
  options = options || {};
@@ -25,7 +25,7 @@ var require_remove_markdown = /* @__PURE__ */ __commonJSMin(((exports, module) =
25
25
  htmlReplaceRegex = new RegExp(`<(?!\/?(${joinedHtmlTagsToSkip})(?=>|\s[^>]*>))[^>]*>`, "g");
26
26
  }
27
27
  if (options.separateLinksAndTexts) output = output.replace(/\[([^\]]+)\]\(([^)]+)\)/g, "$1" + options.separateLinksAndTexts + "$2");
28
- output = output.replace(htmlReplaceRegex, "").replace(/^[=\-]{2,}\s*$/g, "").replace(/\[\^.+?\](\: .*?$)?/g, "").replace(/\s{0,2}\[.*?\]: .*?$/g, "").replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, options.useImgAltText ? "$1" : "").replace(/\[([\s\S]*?)\]\s*[\(\[].*?[\)\]]/g, options.replaceLinksWithURL ? "$2" : "$1").replace(/^(\n)?\s{0,3}>\s?/gm, "$1").replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g, "").replace(/^(\n)?\s{0,}#{1,6}\s*( (.+))? +#+$|^(\n)?\s{0,}#{1,6}\s*( (.+))?$/gm, "$1$3$4$6").replace(/([\*]+)(\S)(.*?\S)??\1/g, "$2$3").replace(/(^|\W)([_]+)(\S)(.*?\S)??\2($|\W)/g, "$1$3$4$5").replace(/(`{3,})(.*?)\1/gm, "$2").replace(/`(.+?)`/g, "$1").replace(/~(.*?)~/g, "$1");
28
+ output = output.replace(htmlReplaceRegex, "").replace(/^[=\-]{2,}\s*$/g, "").replace(/\[\^.+?\](\: .*?$)?/g, "").replace(/\s{0,2}\[.*?\]: .*?$/g, "").replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, options.useImgAltText ? "$1" : "").replace(/\[([\s\S]*?)\]\s*[\(\[](.*?)[\)\]]/g, options.replaceLinksWithURL ? "$2" : "$1").replace(/^(\n)?\s{0,3}>\s?/gm, "$1").replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g, "").replace(/^(\n)?\s{0,}#{1,6}\s*( (.+))? +#+$|^(\n)?\s{0,}#{1,6}\s*( (.+))?$/gm, "$1$3$4$6").replace(/([\*]+)(\S)(.*?\S)??\1/g, "$2$3").replace(/(^|\W)([_]+)(\S)(.*?\S)??\2($|\W)/g, "$1$3$4$5").replace(/(`{3,})(.*?)\1/gm, "$2").replace(/`(.+?)`/g, "$1").replace(/~(.*?)~/g, "$1");
29
29
  } catch (e) {
30
30
  if (options.throwError) throw e;
31
31
  console.error("remove-markdown encountered error: %s", e);
@@ -9,7 +9,7 @@ const cacheMap = /* @__PURE__ */ new Map();
9
9
  function flexsearchStaticClient(options = {}) {
10
10
  const { from = "/api/search", locale = "", tag } = options;
11
11
  let dbs = cacheMap.get(from);
12
- if (!dbs) {
12
+ if (!dbs && typeof window !== "undefined") {
13
13
  dbs = init(from);
14
14
  cacheMap.set(from, dbs);
15
15
  }
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM } from "../../chunk-CYJPkc-J.js";
2
- import { t as require_remove_markdown } from "../../remove-markdown-e8JvQlzO.js";
2
+ import { t as require_remove_markdown } from "../../remove-markdown-D6zqr8cg.js";
3
3
  import Slugger from "github-slugger";
4
4
  //#region src/search/client/mixedbread.ts
5
5
  var import_remove_markdown = /* @__PURE__ */ __toESM(require_remove_markdown(), 1);
@@ -1,7 +1,7 @@
1
1
  import { t as Awaitable } from "../types-DpbpliNk.js";
2
2
  import { t as I18nConfig } from "../index-DaiDEfiL.js";
3
- import { m as SharedIndex, n as SearchAPI, t as QueryOptions } from "../server-CG7-_iKC.js";
4
- import { C as LoaderConfig, T as LoaderOutput } from "../index-Ceg2efJm.js";
3
+ import { m as SharedIndex, n as SearchAPI, t as QueryOptions } from "../server-DZLj6URC.js";
4
+ import { C as LoaderConfig, T as LoaderOutput } from "../index-DvNKidQF.js";
5
5
  import { DocumentData, DocumentOptions } from "flexsearch";
6
6
 
7
7
  //#region src/search/server/build-doc.d.ts
@@ -1,5 +1,5 @@
1
1
  import { r as SortedResult } from "../index-CnkxgKNd.js";
2
- import { n as SearchAPI } from "../server-CG7-_iKC.js";
2
+ import { n as SearchAPI } from "../server-DZLj6URC.js";
3
3
  import Mixedbread from "@mixedbread/sdk";
4
4
  import { StoreSearchResponse } from "@mixedbread/sdk/resources/stores";
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { r as __toESM } from "../chunk-CYJPkc-J.js";
2
2
  import { t as createEndpoint } from "../endpoint-CAUHRXte.js";
3
- import { t as require_remove_markdown } from "../remove-markdown-e8JvQlzO.js";
3
+ import { t as require_remove_markdown } from "../remove-markdown-D6zqr8cg.js";
4
4
  import Slugger from "github-slugger";
5
5
  //#region src/search/mixedbread.ts
6
6
  var import_remove_markdown = /* @__PURE__ */ __toESM(require_remove_markdown(), 1);
@@ -1,2 +1,2 @@
1
- import { a as AdvancedOptions, c as SimpleOptions, d as createSearchAPI, f as initAdvancedSearch, i as AdvancedIndex, l as createFromSource, n as SearchAPI, o as ExportedData, p as initSimpleSearch, r as SearchServer, s as Index, t as QueryOptions, u as createI18nSearchAPI } from "../server-CG7-_iKC.js";
1
+ import { a as AdvancedOptions, c as SimpleOptions, d as createSearchAPI, f as initAdvancedSearch, i as AdvancedIndex, l as createFromSource, n as SearchAPI, o as ExportedData, p as initSimpleSearch, r as SearchServer, s as Index, t as QueryOptions, u as createI18nSearchAPI } from "../server-DZLj6URC.js";
2
2
  export { AdvancedIndex, AdvancedOptions, ExportedData, Index, QueryOptions, SearchAPI, SearchServer, SimpleOptions, createFromSource, createI18nSearchAPI, createSearchAPI, initAdvancedSearch, initSimpleSearch };
@@ -2,7 +2,7 @@ import { t as Awaitable } from "./types-DpbpliNk.js";
2
2
  import { i as StructuredData } from "./remark-structure-C2-K9_ko.js";
3
3
  import { t as I18nConfig } from "./index-DaiDEfiL.js";
4
4
  import { r as SortedResult } from "./index-CnkxgKNd.js";
5
- import { C as LoaderConfig, T as LoaderOutput } from "./index-Ceg2efJm.js";
5
+ import { C as LoaderConfig, T as LoaderOutput } from "./index-DvNKidQF.js";
6
6
  import { Language, Orama, RawData, SearchParams, TypedDocument, create } from "@orama/orama";
7
7
 
8
8
  //#region src/search/orama/create-db.d.ts
@@ -1,2 +1,2 @@
1
- import { b as dynamicLoader, v as DynamicLoader, y as DynamicLoaderConfig } from "../index-Ceg2efJm.js";
1
+ import { b as dynamicLoader, v as DynamicLoader, y as DynamicLoaderConfig } from "../index-DvNKidQF.js";
2
2
  export { DynamicLoader, DynamicLoaderConfig, dynamicLoader };
@@ -1,2 +1,2 @@
1
- import { A as ResolvedLoaderConfig, B as PageTreeTransformer, C as LoaderConfig, D as LoaderPluginOption, E as LoaderPlugin, H as ContentStorageMetaFile, L as PageTreeBuilder, M as loader, O as Meta, P as getSlugs, R as PageTreeBuilderContext, S as InferPageType, T as LoaderOutput, U as ContentStoragePageFile, V as ContentStorage, W as FileSystem, _ as update, a as MetaData, c as SourceConfig, d as VirtualFile, f as _SourceUpdate_, g as source, h as multiple, i as DynamicSource, j as createGetUrl, k as Page, l as SourceUnion, m as isStaticSource, n as llms, o as PageData, p as isDynamicSource, r as path_d_exports, s as Source, t as LLMsConfig, u as StaticSource, w as LoaderOptions, x as InferMetaType, z as PageTreeOptions } from "../index-Ceg2efJm.js";
1
+ import { A as ResolvedLoaderConfig, B as PageTreeTransformer, C as LoaderConfig, D as LoaderPluginOption, E as LoaderPlugin, H as ContentStorageMetaFile, L as PageTreeBuilder, M as loader, O as Meta, P as getSlugs, R as PageTreeBuilderContext, S as InferPageType, T as LoaderOutput, U as ContentStoragePageFile, V as ContentStorage, W as FileSystem, _ as update, a as MetaData, c as SourceConfig, d as VirtualFile, f as _SourceUpdate_, g as source, h as multiple, i as DynamicSource, j as createGetUrl, k as Page, l as SourceUnion, m as isStaticSource, n as llms, o as PageData, p as isDynamicSource, r as path_d_exports, s as Source, t as LLMsConfig, u as StaticSource, w as LoaderOptions, x as InferMetaType, z as PageTreeOptions } from "../index-DvNKidQF.js";
2
2
  export { ContentStorage, ContentStorageMetaFile, ContentStoragePageFile, DynamicSource, FileSystem, InferMetaType, InferPageType, LLMsConfig, LoaderConfig, LoaderOptions, LoaderOutput, LoaderPlugin, LoaderPluginOption, Meta, MetaData, Page, PageData, PageTreeBuilder, PageTreeBuilderContext, PageTreeOptions, PageTreeTransformer, path_d_exports as PathUtils, ResolvedLoaderConfig, Source, SourceConfig, SourceUnion, StaticSource, VirtualFile, _SourceUpdate_, createGetUrl, getSlugs, isDynamicSource, isStaticSource, llms, loader, multiple, source, update };
@@ -1,2 +1,2 @@
1
- import { n as llms, t as LLMsConfig } from "../index-Ceg2efJm.js";
1
+ import { n as llms, t as LLMsConfig } from "../index-DvNKidQF.js";
2
2
  export { LLMsConfig, llms };
@@ -1,4 +1,4 @@
1
- import { E as LoaderPlugin } from "../../index-Ceg2efJm.js";
1
+ import { E as LoaderPlugin } from "../../index-DvNKidQF.js";
2
2
  import { icons } from "lucide-react";
3
3
 
4
4
  //#region src/source/plugins/lucide-icons.d.ts
@@ -1,2 +1,2 @@
1
- import { F as slugsFromData, I as slugsPlugin, N as SlugFn, P as getSlugs } from "../../index-Ceg2efJm.js";
1
+ import { F as slugsFromData, I as slugsPlugin, N as SlugFn, P as getSlugs } from "../../index-DvNKidQF.js";
2
2
  export { SlugFn, getSlugs, slugsFromData, slugsPlugin };
@@ -1,5 +1,5 @@
1
1
  import { a as Separator$1, n as Item$1, t as Folder$1 } from "../../definitions-Cob-Q8-8.js";
2
- import { E as LoaderPlugin } from "../../index-Ceg2efJm.js";
2
+ import { E as LoaderPlugin } from "../../index-DvNKidQF.js";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/source/plugins/status-badges.d.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-core",
3
- "version": "16.8.8",
3
+ "version": "16.8.10",
4
4
  "description": "The React.js library for building a documentation website",
5
5
  "keywords": [
6
6
  "Docs",
@@ -42,6 +42,7 @@
42
42
  "./mdx-plugins/rehype-code.core": "./dist/mdx-plugins/rehype-code.core.js",
43
43
  "./mdx-plugins/rehype-toc": "./dist/mdx-plugins/rehype-toc.js",
44
44
  "./mdx-plugins/remark-admonition": "./dist/mdx-plugins/remark-admonition.js",
45
+ "./mdx-plugins/remark-block-id": "./dist/mdx-plugins/remark-block-id.js",
45
46
  "./mdx-plugins/remark-code-tab": "./dist/mdx-plugins/remark-code-tab.js",
46
47
  "./mdx-plugins/remark-directive-admonition": "./dist/mdx-plugins/remark-directive-admonition.js",
47
48
  "./mdx-plugins/remark-feedback-block": "./dist/mdx-plugins/remark-feedback-block.js",
@@ -113,37 +114,37 @@
113
114
  "vfile": "^6.0.3"
114
115
  },
115
116
  "devDependencies": {
116
- "@formatjs/intl-localematcher": "^0.8.5",
117
+ "@formatjs/intl-localematcher": "^0.8.6",
117
118
  "@mdx-js/mdx": "^3.1.1",
118
- "@mixedbread/sdk": "^0.64.0",
119
+ "@mixedbread/sdk": "^0.65.0",
119
120
  "@orama/core": "^1.2.19",
120
121
  "@oramacloud/client": "^2.1.4",
121
122
  "@shikijs/transformers": "^4.0.2",
122
- "@tanstack/react-router": "1.169.1",
123
+ "@tanstack/react-router": "1.169.2",
123
124
  "@types/estree-jsx": "^1.0.5",
124
125
  "@types/hast": "^3.0.4",
125
126
  "@types/js-yaml": "^4.0.9",
126
127
  "@types/mdast": "^4.0.4",
127
128
  "@types/negotiator": "^0.6.4",
128
- "@types/node": "25.6.0",
129
+ "@types/node": "25.6.2",
129
130
  "@types/react": "^19.2.14",
130
131
  "@types/react-dom": "^19.2.3",
131
- "algoliasearch": "5.52.0",
132
+ "algoliasearch": "5.52.1",
132
133
  "flexsearch": "^0.8.212",
133
134
  "image-size": "^2.0.2",
134
135
  "lucide-react": "^1.14.0",
135
136
  "negotiator": "^1.0.0",
136
- "next": "16.2.4",
137
+ "next": "16.2.6",
137
138
  "npm-to-yarn": "^3.0.1",
138
139
  "path-to-regexp": "^8.4.2",
139
- "react-router": "^7.14.2",
140
+ "react-router": "^7.15.0",
140
141
  "remark-directive": "^4.0.0",
141
142
  "remark-mdx": "^3.1.1",
142
- "remove-markdown": "^0.6.3",
143
- "tsdown": "0.21.10",
143
+ "remove-markdown": "^0.6.4",
144
+ "tsdown": "0.22.0",
144
145
  "typescript": "^6.0.3",
145
- "waku": "1.0.0-alpha.9",
146
- "zod": "^4.4.2",
146
+ "waku": "1.0.0-alpha.10",
147
+ "zod": "^4.4.3",
147
148
  "tsconfig": "0.0.0"
148
149
  },
149
150
  "peerDependencies": {
@@ -223,14 +224,14 @@
223
224
  }
224
225
  },
225
226
  "inlinedDependencies": {
226
- "@formatjs/fast-memoize": "3.1.3",
227
- "@formatjs/intl-localematcher": "0.8.5",
227
+ "@formatjs/fast-memoize": "3.1.4",
228
+ "@formatjs/intl-localematcher": "0.8.6",
228
229
  "@shikijs/transformers": "4.0.2",
229
230
  "image-size": "2.0.2",
230
231
  "negotiator": "1.0.0",
231
232
  "npm-to-yarn": "3.0.1",
232
233
  "path-to-regexp": "8.4.2",
233
- "remove-markdown": "0.6.3"
234
+ "remove-markdown": "0.6.4"
234
235
  },
235
236
  "scripts": {
236
237
  "build": "tsdown",