fumadocs-core 16.10.0 → 16.10.2

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.
@@ -55,7 +55,7 @@ interface StaticOptions {
55
55
  */
56
56
  search?: Partial<SearchParams<Orama<unknown>>>;
57
57
  }
58
- declare function oramaStaticClient(options: StaticOptions): SearchClient;
58
+ declare function oramaStaticClient(options?: StaticOptions): SearchClient;
59
59
  //#endregion
60
60
  //#region src/search/client/algolia.d.ts
61
61
  interface AlgoliaOptions {
@@ -148,7 +148,7 @@ interface SearchMetadata {
148
148
  /**
149
149
  * @deprecated Use `createMixedbreadSearchAPI` from `fumadocs-core/search/mixedbread` instead.
150
150
  * This client-side approach exposes your API key in the browser.
151
- * The server-side approach keeps the key secure and uses `type: 'fetch'` on the client.
151
+ * The server-side approach keeps the key secure and uses `client: fetchClient(...)` on the client.
152
152
  */
153
153
  declare function mixedbreadClient(options: MixedbreadOptions): SearchClient;
154
154
  //#endregion
@@ -174,22 +174,40 @@ interface UseDocsSearch {
174
174
  };
175
175
  }
176
176
  type ClientPreset = ({
177
+ /**
178
+ * @deprecated Pass `client: fetchClient(...)` instead.
179
+ */
177
180
  type: 'fetch';
178
181
  } & FetchOptions) | ({
182
+ /**
183
+ * @deprecated Pass `client: oramaStaticClient(...)` instead.
184
+ */
179
185
  type: 'static';
180
186
  } & StaticOptions) | ({
187
+ /**
188
+ * @deprecated Pass `client: algoliaClient(...)` instead.
189
+ */
181
190
  type: 'algolia';
182
191
  } & AlgoliaOptions) | ({
192
+ /**
193
+ * @deprecated Pass `client: oramaCloudClient(...)` instead.
194
+ */
183
195
  type: 'orama-cloud';
184
196
  } & OramaCloudOptions) | ({
197
+ /**
198
+ * @deprecated Pass `client: oramaCloudLegacyClient(...)` instead.
199
+ */
185
200
  type: 'orama-cloud-legacy';
186
201
  } & OramaCloudLegacyOptions) | ({
202
+ /**
203
+ * @deprecated Pass `client: flexsearchStaticClient(...)` instead.
204
+ */
187
205
  type: 'flexsearch-static';
188
206
  } & FlexsearchStaticOptions) | ({
189
207
  /**
190
208
  * @deprecated Use `createMixedbreadSearchAPI` from `fumadocs-core/search/mixedbread` instead.
191
209
  * This client-side approach exposes your API key in the browser.
192
- * The server-side approach keeps the key secure and uses `type: 'fetch'` on the client.
210
+ * The server-side approach keeps the key secure and uses `client: fetchClient(...)` on the client.
193
211
  */
194
212
  type: 'mixedbread';
195
213
  } & MixedbreadOptions) | {
@@ -217,6 +235,6 @@ declare function useDocsSearch(clientOptions: ClientPreset & {
217
235
  * @defaultValue false
218
236
  */
219
237
  allowEmpty?: boolean;
220
- }, deps?: DependencyList): UseDocsSearch;
238
+ }, customDeps?: DependencyList): UseDocsSearch;
221
239
  //#endregion
222
240
  export { FetchOptions as _, flexsearchStaticClient as a, mixedbreadClient as c, OramaCloudOptions as d, oramaCloudClient as f, oramaStaticClient as g, StaticOptions as h, FlexsearchStaticOptions as i, OramaCloudLegacyOptions as l, algoliaClient as m, SearchClient as n, MixedbreadOptions as o, AlgoliaOptions as p, useDocsSearch as r, SearchMetadata as s, ClientPreset as t, oramaCloudLegacyClient as u, fetchClient as v };
@@ -1,6 +1,6 @@
1
1
  import { t as getNegotiator } from "../negotiation-C6hn0LRz.js";
2
2
  import { NextResponse } from "next/server.js";
3
- //#region ../../node_modules/.pnpm/@formatjs+fast-memoize@3.1.5/node_modules/@formatjs/fast-memoize/index.js
3
+ //#region ../../node_modules/.pnpm/@formatjs+fast-memoize@3.1.6/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.9/node_modules/@formatjs/intl-localematcher/index.js
59
+ //#region ../../node_modules/.pnpm/@formatjs+intl-localematcher@0.8.10/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
@@ -187,6 +187,9 @@ interface Meta<Type extends string | undefined = string | undefined, Data extend
187
187
  data: Data;
188
188
  }
189
189
  interface LoaderOutput<Config extends LoaderConfig = LoaderConfig> {
190
+ readonly $inferPage: Config['page'];
191
+ readonly $inferMeta: Config['meta'];
192
+ readonly $infer: Config;
190
193
  pageTree: Config['i18n'] extends I18nConfig ? Record<string, Root> : Root;
191
194
  getPageTree: (locale?: string) => Root;
192
195
  /**
@@ -247,8 +250,6 @@ interface LoaderOutput<Config extends LoaderConfig = LoaderConfig> {
247
250
  * serialize page tree for non-RSC environments
248
251
  */
249
252
  serializePageTree: (tree: Root) => Promise<SerializedPageTree>;
250
- get $inferPage(): Config['page'];
251
- get $inferMeta(): Config['meta'];
252
253
  }
253
254
  declare function createGetUrl(baseUrl: string, i18n?: I18nConfig): ResolvedLoaderConfig['url'];
254
255
  declare function loader<I extends ResolvedInput, I18n extends I18nConfig | undefined = undefined>(source: I, options: LoaderOptions<NoInfer<GenerateStorage<I>>, I18n>): LoaderOutput<{
@@ -1,2 +1,2 @@
1
- import { m as algoliaClient, p as AlgoliaOptions } from "../../client-CIcYfa2I.js";
1
+ import { m as algoliaClient, p as AlgoliaOptions } from "../../client-_lCIIcPk.js";
2
2
  export { AlgoliaOptions, algoliaClient };
@@ -1,2 +1,2 @@
1
- import { _ as FetchOptions, v as fetchClient } from "../../client-CIcYfa2I.js";
1
+ import { _ as FetchOptions, v as fetchClient } from "../../client-_lCIIcPk.js";
2
2
  export { FetchOptions, fetchClient };
@@ -1,2 +1,2 @@
1
- import { a as flexsearchStaticClient, i as FlexsearchStaticOptions } from "../../client-CIcYfa2I.js";
1
+ import { a as flexsearchStaticClient, i as FlexsearchStaticOptions } from "../../client-_lCIIcPk.js";
2
2
  export { FlexsearchStaticOptions, flexsearchStaticClient };
@@ -1,2 +1,2 @@
1
- import { c as mixedbreadClient, o as MixedbreadOptions, s as SearchMetadata } from "../../client-CIcYfa2I.js";
1
+ import { c as mixedbreadClient, o as MixedbreadOptions, s as SearchMetadata } from "../../client-_lCIIcPk.js";
2
2
  export { MixedbreadOptions, SearchMetadata, mixedbreadClient };
@@ -14,7 +14,7 @@ function extractHeadingTitle(text) {
14
14
  /**
15
15
  * @deprecated Use `createMixedbreadSearchAPI` from `fumadocs-core/search/mixedbread` instead.
16
16
  * This client-side approach exposes your API key in the browser.
17
- * The server-side approach keeps the key secure and uses `type: 'fetch'` on the client.
17
+ * The server-side approach keeps the key secure and uses `client: fetchClient(...)` on the client.
18
18
  */
19
19
  function mixedbreadClient(options) {
20
20
  const { client, storeIdentifier, tag } = options;
@@ -1,2 +1,2 @@
1
- import { l as OramaCloudLegacyOptions, u as oramaCloudLegacyClient } from "../../client-CIcYfa2I.js";
1
+ import { l as OramaCloudLegacyOptions, u as oramaCloudLegacyClient } from "../../client-_lCIIcPk.js";
2
2
  export { OramaCloudLegacyOptions, oramaCloudLegacyClient };
@@ -1,2 +1,2 @@
1
- import { d as OramaCloudOptions, f as oramaCloudClient } from "../../client-CIcYfa2I.js";
1
+ import { d as OramaCloudOptions, f as oramaCloudClient } from "../../client-_lCIIcPk.js";
2
2
  export { OramaCloudOptions, oramaCloudClient };
@@ -1,2 +1,2 @@
1
- import { g as oramaStaticClient, h as StaticOptions } from "../../client-CIcYfa2I.js";
1
+ import { g as oramaStaticClient, h as StaticOptions } from "../../client-_lCIIcPk.js";
2
2
  export { StaticOptions, oramaStaticClient };
@@ -37,7 +37,7 @@ function getDBCached(options) {
37
37
  cache.set(cacheKey, result);
38
38
  return result;
39
39
  }
40
- function oramaStaticClient(options) {
40
+ function oramaStaticClient(options = {}) {
41
41
  const { tag, locale, search } = options;
42
42
  return {
43
43
  deps: [tag, locale],
@@ -1,2 +1,2 @@
1
- import { _ as FetchOptions, d as OramaCloudOptions, h as StaticOptions, n as SearchClient, p as AlgoliaOptions, r as useDocsSearch, t as ClientPreset } from "../client-CIcYfa2I.js";
1
+ import { _ as FetchOptions, d as OramaCloudOptions, h as StaticOptions, n as SearchClient, p as AlgoliaOptions, r as useDocsSearch, t as ClientPreset } from "../client-_lCIIcPk.js";
2
2
  export { type AlgoliaOptions, ClientPreset, type FetchOptions, type OramaCloudOptions, SearchClient, type StaticOptions, useDocsSearch };
@@ -1,5 +1,5 @@
1
- import { useOnChange } from "../utils/use-on-change.js";
2
- import { use, useEffect, useRef, useState } from "react";
1
+ import { t as isEqualShallow } from "../is-equal-LdLqRs0o.js";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
3
  //#region src/utils/use-debounce.ts
4
4
  function useDebounce(value, delayMs = 1e3) {
5
5
  const [debouncedValue, setDebouncedValue] = useState(value);
@@ -15,80 +15,70 @@ function useDebounce(value, delayMs = 1e3) {
15
15
  }
16
16
  //#endregion
17
17
  //#region src/search/client.ts
18
- const promiseMap = {};
19
18
  /**
20
19
  * Provide a hook to query different official search clients.
21
20
  *
22
21
  * Note: it will re-query when its parameters changed, make sure to define `deps` array if you encounter rendering issues.
23
22
  */
24
- function useDocsSearch(clientOptions, deps) {
23
+ function useDocsSearch(clientOptions, customDeps) {
25
24
  const { delayMs = 100, allowEmpty = false, ...clientRest } = clientOptions;
26
25
  const [search, setSearch] = useState("");
27
26
  const [results, setResults] = useState("empty");
28
27
  const [error, setError] = useState();
29
28
  const [isLoading, setIsLoading] = useState(false);
30
29
  const debouncedValue = useDebounce(search, delayMs);
31
- const onStart = useRef(void 0);
32
30
  let client;
33
31
  if ("type" in clientRest) switch (clientRest.type) {
34
- case "fetch": {
35
- const { fetchClient } = use(promiseMap[clientRest.type] ??= import("./client/fetch.js"));
36
- client = fetchClient(clientRest);
32
+ case "fetch":
33
+ client = import("./client/fetch.js").then((mod) => mod.fetchClient(clientRest));
37
34
  break;
38
- }
39
- case "algolia": {
40
- const { algoliaClient } = use(promiseMap[clientRest.type] ??= import("./client/algolia.js"));
41
- client = algoliaClient(clientRest);
35
+ case "algolia":
36
+ client = import("./client/algolia.js").then((mod) => mod.algoliaClient(clientRest));
42
37
  break;
43
- }
44
- case "orama-cloud": {
45
- const { oramaCloudClient } = use(promiseMap[clientRest.type] ??= import("./client/orama-cloud.js"));
46
- client = oramaCloudClient(clientRest);
38
+ case "orama-cloud":
39
+ client = import("./client/orama-cloud.js").then((mod) => mod.oramaCloudClient(clientRest));
47
40
  break;
48
- }
49
- case "orama-cloud-legacy": {
50
- const { oramaCloudLegacyClient } = use(promiseMap[clientRest.type] ??= import("./client/orama-cloud-legacy.js"));
51
- client = oramaCloudLegacyClient(clientRest);
41
+ case "orama-cloud-legacy":
42
+ client = import("./client/orama-cloud-legacy.js").then((mod) => mod.oramaCloudLegacyClient(clientRest));
52
43
  break;
53
- }
54
- case "mixedbread": {
55
- const { mixedbreadClient } = use(promiseMap[clientRest.type] ??= import("./client/mixedbread.js"));
56
- client = mixedbreadClient(clientRest);
44
+ case "mixedbread":
45
+ client = import("./client/mixedbread.js").then((mod) => mod.mixedbreadClient(clientRest));
57
46
  break;
58
- }
59
- case "static": {
60
- const { oramaStaticClient } = use(promiseMap[clientRest.type] ??= import("./client/orama-static.js"));
61
- client = oramaStaticClient(clientRest);
47
+ case "static":
48
+ client = import("./client/orama-static.js").then((mod) => mod.oramaStaticClient(clientRest));
62
49
  break;
63
- }
64
50
  default: throw new Error("unknown search client");
65
51
  }
66
52
  else client = clientRest.client;
67
- useOnChange([deps ?? client.deps, debouncedValue], () => {
68
- if (onStart.current) {
69
- onStart.current();
70
- onStart.current = void 0;
71
- }
72
- setIsLoading(true);
73
- let interrupt = false;
74
- onStart.current = () => {
75
- interrupt = true;
53
+ const deps = [customDeps ?? (client instanceof Promise ? JSON.stringify(clientRest) : client.deps), debouncedValue];
54
+ const [activeDeps, setActiveDeps] = useState(null);
55
+ const activeTaskRef = useRef(null);
56
+ if (!isEqualShallow(activeDeps, deps) && (!activeTaskRef.current || !isEqualShallow(activeTaskRef.current.deps, deps))) {
57
+ if (activeTaskRef.current) activeTaskRef.current.interrupt = true;
58
+ activeTaskRef.current = {
59
+ deps,
60
+ interrupt: false,
61
+ async start() {
62
+ try {
63
+ setIsLoading(true);
64
+ let res;
65
+ if (debouncedValue.length === 0 && !allowEmpty) res = "empty";
66
+ else res = await (await client).search(debouncedValue);
67
+ if (!this.interrupt) {
68
+ setActiveDeps(deps);
69
+ setError(void 0);
70
+ setResults(res);
71
+ }
72
+ } catch (err) {
73
+ if (!this.interrupt) setError(err);
74
+ } finally {
75
+ if (!this.interrupt) setIsLoading(false);
76
+ }
77
+ }
76
78
  };
77
- async function run() {
78
- if (debouncedValue.length === 0 && !allowEmpty) return "empty";
79
- return client.search(debouncedValue);
80
- }
81
- run().then((res) => {
82
- if (interrupt) return;
83
- setError(void 0);
84
- setResults(res);
85
- }).catch((err) => {
86
- setError(err);
87
- }).finally(() => {
88
- setIsLoading(false);
89
- });
90
- });
91
- return {
79
+ activeTaskRef.current.start();
80
+ }
81
+ return useMemo(() => ({
92
82
  search,
93
83
  setSearch,
94
84
  query: {
@@ -96,7 +86,12 @@ function useDocsSearch(clientOptions, deps) {
96
86
  data: results,
97
87
  error
98
88
  }
99
- };
89
+ }), [
90
+ search,
91
+ isLoading,
92
+ results,
93
+ error
94
+ ]);
100
95
  }
101
96
  //#endregion
102
97
  export { useDocsSearch };
@@ -1,7 +1,7 @@
1
1
  import { t as Awaitable } from "../types-D89QoQR-.js";
2
2
  import { n as I18nConfig } from "../index-B799MJOL.js";
3
- import { m as SharedIndex, n as SearchAPI, t as QueryOptions } from "../server-ClZ6JLxh.js";
4
- import { x as LoaderOutput, y as LoaderConfig } from "../index-nPog1Bvz2.js";
3
+ import { m as SharedIndex, n as SearchAPI, t as QueryOptions } from "../server-BhiVa9kn.js";
4
+ import { x as LoaderOutput, y as LoaderConfig } from "../index-4jhCnMTa2.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-CS7BaeTa.js";
2
- import { n as SearchAPI } from "../server-ClZ6JLxh.js";
2
+ import { n as SearchAPI } from "../server-BhiVa9kn.js";
3
3
  import Mixedbread from "@mixedbread/sdk";
4
4
  import { StoreSearchResponse } from "@mixedbread/sdk/resources/stores";
5
5
 
@@ -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-ClZ6JLxh.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-BhiVa9kn.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-D89QoQR-.js";
2
2
  import { i as StructuredData } from "./remark-structure-DmVL5OkT.js";
3
3
  import { n as I18nConfig } from "./index-B799MJOL.js";
4
4
  import { r as SortedResult } from "./index-CS7BaeTa.js";
5
- import { x as LoaderOutput, y as LoaderConfig } from "./index-nPog1Bvz2.js";
5
+ import { x as LoaderOutput, y as LoaderConfig } from "./index-4jhCnMTa2.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 { g as dynamicLoader, h as DynamicLoaderConfig, m as DynamicLoader } from "../index-nPog1Bvz2.js";
1
+ import { g as dynamicLoader, h as DynamicLoaderConfig, m as DynamicLoader } from "../index-4jhCnMTa2.js";
2
2
  export { DynamicLoader, DynamicLoaderConfig, dynamicLoader };
@@ -1,2 +1,2 @@
1
- import { B as ContentStoragePageFile, C as LoaderPluginOption, D as createGetUrl, E as ResolvedLoaderConfig, F as PageTreeBuilderContext, I as PageTreeOptions, L as PageTreeTransformer, O as loader, P as PageTreeBuilder, R as ContentStorage, S as LoaderPlugin, T as Page, V as FileSystem, _ as InferMetaType, a as MetaData, b as LoaderOptions, c as SourceUnion, d as multiple, f as source, i as DynamicSource, j as getSlugs, k as types_d_exports, l as StaticSource, n as llms, o as PageData, p as update, r as path_d_exports, s as Source, t as LLMsConfig, u as VirtualFile, v as InferPageType, w as Meta, x as LoaderOutput, y as LoaderConfig, z as ContentStorageMetaFile } from "../index-nPog1Bvz2.js";
1
+ import { B as ContentStoragePageFile, C as LoaderPluginOption, D as createGetUrl, E as ResolvedLoaderConfig, F as PageTreeBuilderContext, I as PageTreeOptions, L as PageTreeTransformer, O as loader, P as PageTreeBuilder, R as ContentStorage, S as LoaderPlugin, T as Page, V as FileSystem, _ as InferMetaType, a as MetaData, b as LoaderOptions, c as SourceUnion, d as multiple, f as source, i as DynamicSource, j as getSlugs, k as types_d_exports, l as StaticSource, n as llms, o as PageData, p as update, r as path_d_exports, s as Source, t as LLMsConfig, u as VirtualFile, v as InferPageType, w as Meta, x as LoaderOutput, y as LoaderConfig, z as ContentStorageMetaFile } from "../index-4jhCnMTa2.js";
2
2
  export { type ContentStorage, type ContentStorageMetaFile, type ContentStoragePageFile, type DynamicSource, FileSystem, InferMetaType, InferPageType, LLMsConfig, LoaderConfig, LoaderOptions, LoaderOutput, LoaderPlugin, LoaderPluginOption, Meta, type MetaData, Page, type PageData, type PageTreeBuilder, type PageTreeBuilderContext, type PageTreeOptions, type PageTreeTransformer, path_d_exports as PathUtils, ResolvedLoaderConfig, type Source, type SourceUnion, type StaticSource, type VirtualFile, type types_d_exports as _Internal, createGetUrl, getSlugs, llms, loader, multiple, source, update };
@@ -1,2 +1,2 @@
1
- import { n as llms, t as LLMsConfig } from "../index-nPog1Bvz2.js";
1
+ import { n as llms, t as LLMsConfig } from "../index-4jhCnMTa2.js";
2
2
  export { LLMsConfig, llms };
@@ -1,4 +1,4 @@
1
- import { S as LoaderPlugin } from "../../index-nPog1Bvz2.js";
1
+ import { S as LoaderPlugin } from "../../index-4jhCnMTa2.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 { A as SlugFn, M as slugsFromData, N as slugsPlugin, j as getSlugs } from "../../index-nPog1Bvz2.js";
1
+ import { A as SlugFn, M as slugsFromData, N as slugsPlugin, j as getSlugs } from "../../index-4jhCnMTa2.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-DsPo5rZj.js";
2
- import { S as LoaderPlugin } from "../../index-nPog1Bvz2.js";
2
+ import { S as LoaderPlugin } from "../../index-4jhCnMTa2.js";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/source/plugins/status-badges.d.ts
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "fumadocs-core",
3
- "version": "16.10.0",
3
+ "version": "16.10.2",
4
4
  "description": "The React.js library for building a documentation website",
5
5
  "keywords": [
6
6
  "Docs",
7
7
  "Fumadocs"
8
8
  ],
9
9
  "homepage": "https://fumadocs.dev",
10
- "license": "MIT",
11
- "author": "Fuma Nama",
12
- "repository": "github:fuma-nama/fumadocs",
13
10
  "bugs": {
14
11
  "url": "https://github.com/fuma-nama/fumadocs/issues"
15
12
  },
13
+ "license": "MIT",
14
+ "author": "Fuma Nama",
15
+ "repository": "github:fuma-nama/fumadocs",
16
16
  "files": [
17
17
  "dist"
18
18
  ],
@@ -99,7 +99,7 @@
99
99
  "access": "public"
100
100
  },
101
101
  "dependencies": {
102
- "@fuma-translate/react": "^0.0.3",
102
+ "@fuma-translate/react": "^1.0.2",
103
103
  "@orama/orama": "^3.1.18",
104
104
  "estree-util-value-to-estree": "^3.5.0",
105
105
  "github-slugger": "^2.0.0",
@@ -119,34 +119,34 @@
119
119
  "vfile": "^6.0.3"
120
120
  },
121
121
  "devDependencies": {
122
- "@formatjs/intl-localematcher": "^0.8.9",
122
+ "@formatjs/intl-localematcher": "^0.8.10",
123
123
  "@mdx-js/mdx": "^3.1.1",
124
- "@mixedbread/sdk": "0.73.0",
124
+ "@mixedbread/sdk": "0.73.1",
125
125
  "@orama/core": "^1.2.19",
126
126
  "@oramacloud/client": "^2.1.4",
127
127
  "@shikijs/transformers": "^4.2.0",
128
- "@tanstack/react-router": "1.170.11",
128
+ "@tanstack/react-router": "1.170.15",
129
129
  "@types/estree-jsx": "^1.0.5",
130
130
  "@types/hast": "^3.0.4",
131
131
  "@types/js-yaml": "^4.0.9",
132
132
  "@types/mdast": "^4.0.4",
133
133
  "@types/negotiator": "^0.6.4",
134
- "@types/node": "25.9.1",
135
- "@types/react": "^19.2.16",
134
+ "@types/node": "25.9.2",
135
+ "@types/react": "^19.2.17",
136
136
  "@types/react-dom": "^19.2.3",
137
137
  "algoliasearch": "5.53.0",
138
138
  "flexsearch": "^0.8.212",
139
139
  "image-size": "^2.0.2",
140
140
  "lucide-react": "^1.17.0",
141
141
  "negotiator": "^1.0.0",
142
- "next": "16.2.7",
142
+ "next": "16.2.9",
143
143
  "npm-to-yarn": "^3.0.1",
144
144
  "path-to-regexp": "^8.4.2",
145
- "react-router": "7.16.0",
145
+ "react-router": "7.17.0",
146
146
  "remark-directive": "^4.0.0",
147
147
  "remark-mdx": "^3.1.1",
148
148
  "remove-markdown": "^0.6.4",
149
- "tsdown": "0.22.1",
149
+ "tsdown": "0.22.2",
150
150
  "typescript": "^6.0.3",
151
151
  "waku": "1.0.0-beta.2",
152
152
  "zod": "4.4.3",
@@ -229,8 +229,8 @@
229
229
  }
230
230
  },
231
231
  "inlinedDependencies": {
232
- "@formatjs/fast-memoize": "3.1.5",
233
- "@formatjs/intl-localematcher": "0.8.9",
232
+ "@formatjs/fast-memoize": "3.1.6",
233
+ "@formatjs/intl-localematcher": "0.8.10",
234
234
  "@shikijs/transformers": "4.2.0",
235
235
  "image-size": "2.0.2",
236
236
  "negotiator": "1.0.0",