fumadocs-core 13.4.10 → 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 (36) hide show
  1. package/dist/{search-algolia/client.js → algolia-NTWLS6J3.js} +10 -27
  2. package/dist/breadcrumb.d.ts +15 -7
  3. package/dist/breadcrumb.js +47 -25
  4. package/dist/chunk-2V6SCS43.js +12 -0
  5. package/dist/chunk-2ZSMGYVH.js +78 -0
  6. package/dist/{chunk-UQV4A7HQ.js → chunk-4MNUWZIW.js} +9 -7
  7. package/dist/{chunk-KGMG4N3Y.js → chunk-I5BWASD6.js} +2 -2
  8. package/dist/dynamic-link.js +2 -1
  9. package/dist/fetch-4K7QOPFM.js +17 -0
  10. package/dist/i18n/index.js +64 -3
  11. package/dist/mdx-plugins/index.d.ts +20 -5
  12. package/dist/mdx-plugins/index.js +140 -14
  13. package/dist/{page-tree-BTCDMLTU.d.ts → page-tree-r8qjoUla.d.ts} +7 -4
  14. package/dist/{search-algolia/server.d.ts → search/algolia.d.ts} +1 -1
  15. package/dist/{search-algolia/server.js → search/algolia.js} +1 -1
  16. package/dist/search/client.d.ts +37 -7
  17. package/dist/search/client.js +74 -22
  18. package/dist/search/server.d.ts +65 -32
  19. package/dist/search/server.js +272 -234
  20. package/dist/server/index.d.ts +56 -4
  21. package/dist/server/index.js +59 -1
  22. package/dist/sidebar.js +7 -5
  23. package/dist/source/index.d.ts +14 -23
  24. package/dist/source/index.js +89 -81
  25. package/dist/static-5GPJ7RUY.js +60 -0
  26. package/dist/toc.js +1 -1
  27. package/dist/{search/shared.d.ts → types-Ch8gnVgO.d.ts} +1 -1
  28. package/dist/utils/use-on-change.d.ts +6 -1
  29. package/dist/utils/use-on-change.js +1 -1
  30. package/package.json +27 -86
  31. package/dist/chunk-MXOJWF66.js +0 -67
  32. package/dist/chunk-NREWOIVI.js +0 -19
  33. package/dist/middleware.d.ts +0 -3
  34. package/dist/middleware.js +0 -7
  35. package/dist/search/shared.js +0 -0
  36. package/dist/search-algolia/client.d.ts +0 -37
package/dist/sidebar.js CHANGED
@@ -19,11 +19,13 @@ function useSidebarContext() {
19
19
  }
20
20
  function SidebarProvider(props) {
21
21
  const [openInner, setOpenInner] = useState(false);
22
- const [open, setOpen] = [
23
- props.open ?? openInner,
24
- props.onOpenChange ?? setOpenInner
25
- ];
26
- return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: [open, setOpen], children: props.children });
22
+ return /* @__PURE__ */ jsx(
23
+ SidebarContext.Provider,
24
+ {
25
+ value: [props.open ?? openInner, props.onOpenChange ?? setOpenInner],
26
+ children: props.children
27
+ }
28
+ );
27
29
  }
28
30
  function SidebarTrigger({
29
31
  as,
@@ -1,8 +1,11 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { I as I18nConfig } from '../config-inq6kP6y.js';
3
- import { R as Root, I as Item, F as Folder$1, S as Separator } from '../page-tree-BTCDMLTU.js';
3
+ import { R as Root, I as Item, F as Folder$1, S as Separator } from '../page-tree-r8qjoUla.js';
4
4
 
5
5
  interface FileInfo {
6
+ /**
7
+ * The locale extension of file
8
+ */
6
9
  locale?: string;
7
10
  /**
8
11
  * Original path of file
@@ -76,20 +79,6 @@ interface LoaderOptions {
76
79
  * Configure i18n
77
80
  */
78
81
  i18n?: I18nConfig;
79
- /**
80
- * Accepted languages.
81
- *
82
- * A page tree will be built for each language.
83
- *
84
- * @deprecated Use `i18n` instead
85
- */
86
- languages?: string[];
87
- /**
88
- * Default locale when locale is not provided.
89
- *
90
- * @deprecated Use `i18n` instead
91
- */
92
- defaultLanguage?: string;
93
82
  }
94
83
  interface Source<Config extends SourceConfig> {
95
84
  /**
@@ -103,6 +92,7 @@ interface Page<Data = PageData> {
103
92
  slugs: string[];
104
93
  url: string;
105
94
  data: Data;
95
+ locale?: string | undefined;
106
96
  }
107
97
  interface Meta<Data = MetaData> {
108
98
  file: FileInfo;
@@ -114,7 +104,7 @@ interface LanguageEntry<Data = PageData> {
114
104
  }
115
105
  interface LoaderOutput<Config extends LoaderConfig> {
116
106
  pageTree: Config['i18n'] extends true ? Record<string, Root> : Root;
117
- files: File[];
107
+ _i18n?: I18nConfig;
118
108
  /**
119
109
  * Get list of pages from language, empty if language hasn't specified
120
110
  *
@@ -126,17 +116,19 @@ interface LoaderOutput<Config extends LoaderConfig> {
126
116
  * @param language - If empty, the default language will be used
127
117
  */
128
118
  getPage: (slugs: string[] | undefined, language?: string) => Page<Config['source']['pageData']> | undefined;
119
+ getNodePage: (node: Item) => Page<Config['source']['pageData']> | undefined;
120
+ getNodeMeta: (node: Folder$1) => Meta<Config['source']['metaData']> | undefined;
129
121
  /**
130
122
  * generate static params for Next.js SSG
131
123
  */
132
124
  generateParams: <TSlug extends string = 'slug', TLang extends string = 'lang'>(slug?: TSlug, lang?: TLang) => (Record<TSlug, string[]> & Record<TLang, string>)[];
133
125
  }
134
- declare function createGetUrl(baseUrl: string): UrlFn;
126
+ declare function createGetUrl(baseUrl: string, i18n?: I18nConfig): UrlFn;
135
127
  declare function getSlugs(info: FileInfo): string[];
136
128
  type InferSourceConfig<T> = T extends Source<infer Config> ? Config : never;
137
129
  declare function loader<Options extends LoaderOptions>(options: Options): LoaderOutput<{
138
130
  source: InferSourceConfig<Options['source']>;
139
- i18n: Options['i18n'] extends I18nConfig ? true : Options['languages'] extends string[] ? true : false;
131
+ i18n: Options['i18n'] extends I18nConfig ? true : false;
140
132
  }>;
141
133
 
142
134
  interface MetaData {
@@ -145,6 +137,7 @@ interface MetaData {
145
137
  root?: boolean | undefined;
146
138
  pages?: string[] | undefined;
147
139
  defaultOpen?: boolean | undefined;
140
+ description?: string | undefined;
148
141
  }
149
142
  interface PageData {
150
143
  icon?: string | undefined;
@@ -160,9 +153,7 @@ type UrlFn = (slugs: string[], locale?: string) => string;
160
153
  interface MetaFile {
161
154
  file: FileInfo;
162
155
  format: 'meta';
163
- data: {
164
- data: MetaData;
165
- };
156
+ data: MetaData;
166
157
  }
167
158
  interface PageFile {
168
159
  file: FileInfo;
@@ -215,11 +206,11 @@ declare namespace fileSystem {
215
206
 
216
207
  interface BuildPageTreeOptions {
217
208
  /**
218
- * Attach the `folder.id` property
209
+ * Remove references to the file path of original nodes (`$ref`)
219
210
  *
220
211
  * @defaultValue false
221
212
  */
222
- attachFolderIds?: boolean;
213
+ noRef?: boolean;
223
214
  attachFile?: (node: Item, file?: PageFile) => Item;
224
215
  attachFolder?: (node: Folder$1, folder: Folder, meta?: MetaFile) => Folder$1;
225
216
  attachSeparator?: (node: Separator) => Separator;
@@ -1,3 +1,6 @@
1
+ import {
2
+ removeUndefined
3
+ } from "../chunk-2V6SCS43.js";
1
4
  import {
2
5
  slash
3
6
  } from "../chunk-UWEEHUJV.js";
@@ -145,7 +148,7 @@ function buildFolderNode(folder, isGlobalRoot, ctx) {
145
148
  resolvePath(folder.file.flattenedPath, "index"),
146
149
  "page"
147
150
  );
148
- const metadata = meta?.data.data;
151
+ const metadata = meta?.data;
149
152
  const index = indexFile ? buildFileNode(indexFile, ctx) : void 0;
150
153
  let children;
151
154
  if (!meta) {
@@ -175,30 +178,27 @@ function buildFolderNode(folder, isGlobalRoot, ctx) {
175
178
  icon: ctx.options.resolveIcon?.(metadata?.icon) ?? index?.icon,
176
179
  root: metadata?.root,
177
180
  defaultOpen: metadata?.defaultOpen,
181
+ description: metadata?.description,
178
182
  index,
179
- children
183
+ children,
184
+ $ref: !ctx.options.noRef ? {
185
+ metaFile: meta?.file.path
186
+ } : void 0
180
187
  };
181
- if (ctx.options.attachFolderIds) {
182
- node.id = folder.file.flattenedPath;
183
- }
184
188
  return removeUndefined(
185
189
  ctx.options.attachFolder?.(node, folder, meta) ?? node
186
190
  );
187
191
  }
188
192
  function buildFileNode(file, ctx) {
189
- let urlLocale;
190
193
  const localized = findLocalizedFile(file.file.flattenedPath, "page", ctx) ?? file;
191
- const hideLocale = ctx.i18n?.hideLocale ?? "never";
192
- if (hideLocale === "never") {
193
- urlLocale = ctx.lang;
194
- } else if (hideLocale === "default-locale" && ctx.lang !== ctx.i18n?.defaultLanguage) {
195
- urlLocale = ctx.lang;
196
- }
197
194
  const item = {
198
195
  type: "page",
199
196
  name: localized.data.data.title,
200
197
  icon: ctx.options.resolveIcon?.(localized.data.data.icon),
201
- url: ctx.options.getUrl(localized.data.slugs, urlLocale)
198
+ url: ctx.options.getUrl(localized.data.slugs, ctx.lang),
199
+ $ref: !ctx.options.noRef ? {
200
+ file: localized.file.path
201
+ } : void 0
202
202
  };
203
203
  return removeUndefined(ctx.options.attachFile?.(item, file) ?? item);
204
204
  }
@@ -248,13 +248,6 @@ function pathToName(name, resolveGroup = false) {
248
248
  }
249
249
  return result.join("");
250
250
  }
251
- function removeUndefined(value) {
252
- const obj = value;
253
- Object.keys(obj).forEach((key) => {
254
- if (obj[key] === void 0) delete obj[key];
255
- });
256
- return value;
257
- }
258
251
 
259
252
  // src/source/file-system.ts
260
253
  var file_system_exports = {};
@@ -329,9 +322,7 @@ function loadFiles(files, options) {
329
322
  });
330
323
  }
331
324
  if (file.type === "meta") {
332
- storage.write(relativePath, file.type, {
333
- data: file.data
334
- });
325
+ storage.write(relativePath, file.type, file.data);
335
326
  }
336
327
  }
337
328
  for (const transformer of transformers) {
@@ -344,30 +335,47 @@ function loadFiles(files, options) {
344
335
  }
345
336
 
346
337
  // src/source/loader.ts
347
- function buildPageMap(storage, getUrl, languages = []) {
348
- const map = /* @__PURE__ */ new Map();
338
+ function indexPages(storage, getUrl, languages = []) {
339
+ const i18n = /* @__PURE__ */ new Map();
340
+ const pages = /* @__PURE__ */ new Map();
341
+ const metas = /* @__PURE__ */ new Map();
349
342
  const defaultMap = /* @__PURE__ */ new Map();
350
- map.set("", defaultMap);
343
+ i18n.set("", defaultMap);
351
344
  for (const file of storage.list()) {
352
- if (file.format !== "page" || file.file.locale) continue;
353
- const page = fileToPage(file, getUrl);
354
- defaultMap.set(page.slugs.join("/"), page);
355
- for (const lang of languages) {
356
- const langMap = map.get(lang) ?? /* @__PURE__ */ new Map();
357
- const localized = storage.read(
358
- `${file.file.flattenedPath}.${lang}`,
359
- "page"
360
- );
361
- const localizedPage = fileToPage(localized ?? file, getUrl, lang);
362
- langMap.set(localizedPage.slugs.join("/"), localizedPage);
363
- map.set(lang, langMap);
345
+ if (file.format === "meta") metas.set(file.file.path, fileToMeta(file));
346
+ if (file.format === "page") {
347
+ const page = fileToPage(file, getUrl, file.file.locale);
348
+ pages.set(file.file.path, page);
349
+ if (file.file.locale) continue;
350
+ defaultMap.set(page.slugs.join("/"), page);
351
+ for (const lang of languages) {
352
+ const langMap = i18n.get(lang) ?? /* @__PURE__ */ new Map();
353
+ const localized = storage.read(
354
+ `${file.file.flattenedPath}.${lang}`,
355
+ "page"
356
+ );
357
+ const localizedPage = fileToPage(localized ?? file, getUrl, lang);
358
+ langMap.set(localizedPage.slugs.join("/"), localizedPage);
359
+ i18n.set(lang, langMap);
360
+ }
364
361
  }
365
362
  }
366
- return map;
363
+ return {
364
+ i18n,
365
+ pathToPage: pages,
366
+ pathToMeta: metas
367
+ };
367
368
  }
368
- function createGetUrl(baseUrl) {
369
+ function createGetUrl(baseUrl, i18n) {
369
370
  return (slugs, locale) => {
370
- const paths = locale ? [locale, ...baseUrl.split("/"), ...slugs] : [...baseUrl.split("/"), ...slugs];
371
+ const hideLocale = i18n?.hideLocale ?? "never";
372
+ let urlLocale;
373
+ if (hideLocale === "never") {
374
+ urlLocale = locale;
375
+ } else if (hideLocale === "default-locale" && locale !== i18n?.defaultLanguage) {
376
+ urlLocale = locale;
377
+ }
378
+ const paths = urlLocale ? [urlLocale, ...baseUrl.split("/"), ...slugs] : [...baseUrl.split("/"), ...slugs];
371
379
  return `/${paths.filter((v) => v.length > 0).join("/")}`;
372
380
  };
373
381
  }
@@ -381,62 +389,47 @@ function getSlugs(info) {
381
389
  );
382
390
  }
383
391
  function loader(options) {
384
- if (options.languages) {
385
- console.warn(
386
- "Fumadocs: It's highly recommended to use `i18n` config instead of passing `languages` to loader."
387
- );
388
- return createOutput({
389
- ...options,
390
- i18n: {
391
- languages: options.languages,
392
- defaultLanguage: options.defaultLanguage
393
- }
394
- });
395
- }
396
392
  return createOutput(options);
397
393
  }
398
- function createOutput({
399
- source,
400
- icon: resolveIcon,
401
- rootDir = "",
402
- transformers,
403
- baseUrl = "/",
404
- slugs: slugsFn = getSlugs,
405
- url: getUrl = createGetUrl(baseUrl),
406
- pageTree: pageTreeOptions = {},
407
- i18n
408
- }) {
394
+ function createOutput(options) {
395
+ const {
396
+ source,
397
+ rootDir = "",
398
+ baseUrl = "/",
399
+ slugs: slugsFn = getSlugs,
400
+ url: getUrl = createGetUrl(baseUrl, options.i18n)
401
+ } = options;
409
402
  const storage = loadFiles(
410
403
  typeof source.files === "function" ? source.files(rootDir) : source.files,
411
404
  {
412
- transformers,
405
+ transformers: options.transformers,
413
406
  rootDir,
414
407
  getSlugs: slugsFn
415
408
  }
416
409
  );
417
- const i18nMap = buildPageMap(storage, getUrl, i18n?.languages);
410
+ const walker = indexPages(storage, getUrl, options.i18n?.languages);
418
411
  const builder = createPageTreeBuilder();
419
- const pageTree = i18n === void 0 ? builder.build({
412
+ const pageTree = options.i18n === void 0 ? builder.build({
420
413
  storage,
421
- resolveIcon,
414
+ resolveIcon: options.icon,
422
415
  getUrl,
423
- ...pageTreeOptions
416
+ ...options.pageTree
424
417
  }) : builder.buildI18n({
425
418
  storage,
426
- resolveIcon,
419
+ resolveIcon: options.icon,
427
420
  getUrl,
428
- i18n,
429
- ...pageTreeOptions
421
+ i18n: options.i18n,
422
+ ...options.pageTree
430
423
  });
431
424
  return {
425
+ _i18n: options.i18n,
432
426
  pageTree,
433
- files: storage.list(),
434
- getPages(language = i18n?.defaultLanguage ?? "") {
435
- return Array.from(i18nMap.get(language)?.values() ?? []);
427
+ getPages(language = options.i18n?.defaultLanguage ?? "") {
428
+ return Array.from(walker.i18n.get(language)?.values() ?? []);
436
429
  },
437
430
  getLanguages() {
438
431
  const list = [];
439
- for (const [language, pages] of i18nMap) {
432
+ for (const [language, pages] of walker.i18n) {
440
433
  if (language === "") continue;
441
434
  list.push({
442
435
  language,
@@ -445,12 +438,20 @@ function createOutput({
445
438
  }
446
439
  return list;
447
440
  },
448
- getPage(slugs = [], language = i18n?.defaultLanguage ?? "") {
449
- return i18nMap.get(language)?.get(slugs.join("/"));
441
+ getPage(slugs = [], language = options.i18n?.defaultLanguage ?? "") {
442
+ return walker.i18n.get(language)?.get(slugs.join("/"));
443
+ },
444
+ getNodeMeta(node) {
445
+ if (!node.$ref?.metaFile) return;
446
+ return walker.pathToMeta.get(node.$ref.metaFile);
447
+ },
448
+ getNodePage(node) {
449
+ if (!node.$ref?.file) return;
450
+ return walker.pathToPage.get(node.$ref.file);
450
451
  },
451
452
  // @ts-expect-error -- ignore this
452
453
  generateParams(slug, lang) {
453
- if (i18n) {
454
+ if (options.i18n) {
454
455
  return this.getLanguages().flatMap(
455
456
  (entry) => entry.pages.map((page) => ({
456
457
  [slug ?? "slug"]: page.slugs,
@@ -458,18 +459,25 @@ function createOutput({
458
459
  }))
459
460
  );
460
461
  }
461
- return Array.from(i18nMap.get("")?.values() ?? []).map((page) => ({
462
+ return Array.from(walker.i18n.get("")?.values() ?? []).map((page) => ({
462
463
  [slug ?? "slug"]: page.slugs
463
464
  }));
464
465
  }
465
466
  };
466
467
  }
468
+ function fileToMeta(file) {
469
+ return {
470
+ file: file.file,
471
+ data: file.data
472
+ };
473
+ }
467
474
  function fileToPage(file, getUrl, locale) {
468
475
  return {
469
476
  file: file.file,
470
477
  url: getUrl(file.data.slugs, locale),
471
478
  slugs: file.data.slugs,
472
- data: file.data.data
479
+ data: file.data.data,
480
+ locale
473
481
  };
474
482
  }
475
483
  export {
@@ -0,0 +1,60 @@
1
+ import {
2
+ searchAdvanced,
3
+ searchSimple
4
+ } from "./chunk-2ZSMGYVH.js";
5
+ import "./chunk-2V6SCS43.js";
6
+ import "./chunk-MLKGABMK.js";
7
+
8
+ // src/search/client/static.ts
9
+ import {
10
+ create,
11
+ load
12
+ } from "@orama/orama";
13
+ function createStaticClient({
14
+ from = "/api/search"
15
+ }) {
16
+ const dbs = /* @__PURE__ */ new Map();
17
+ async function init() {
18
+ const res = await fetch(from);
19
+ if (!res.ok)
20
+ throw new Error(
21
+ `failed to fetch exported search indexes from ${from}, make sure the search database is exported and available for client.`
22
+ );
23
+ const data = await res.json();
24
+ if (data.type === "i18n") {
25
+ Object.entries(data.data).forEach(([k, v]) => {
26
+ const db = create({ schema: { _: "string" } });
27
+ load(db, v);
28
+ dbs.set(k, {
29
+ type: v.type,
30
+ db
31
+ });
32
+ });
33
+ } else {
34
+ const db = create({ schema: { _: "string" } });
35
+ load(db, data);
36
+ dbs.set("", {
37
+ type: data.type,
38
+ db
39
+ });
40
+ }
41
+ }
42
+ const get = init();
43
+ return {
44
+ async search(query, locale, tag) {
45
+ await get;
46
+ const cached = dbs.get(locale ?? "");
47
+ if (!cached) return [];
48
+ if (cached.type === "simple")
49
+ return searchSimple(cached, query);
50
+ return searchAdvanced(
51
+ cached.db,
52
+ query,
53
+ tag
54
+ );
55
+ }
56
+ };
57
+ }
58
+ export {
59
+ createStaticClient
60
+ };
package/dist/toc.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  useOnChange
4
- } from "./chunk-KGMG4N3Y.js";
4
+ } from "./chunk-I5BWASD6.js";
5
5
  import "./chunk-MLKGABMK.js";
6
6
 
7
7
  // src/toc.tsx
@@ -5,4 +5,4 @@ interface SortedResult {
5
5
  content: string;
6
6
  }
7
7
 
8
- export type { SortedResult };
8
+ export type { SortedResult as S };
@@ -1,3 +1,8 @@
1
- declare function useOnChange<T>(value: T, onChange: (current: T, previous: T) => void): void;
1
+ /**
2
+ * @param value - state to watch
3
+ * @param onChange - when the state changed
4
+ * @param isUpdated - a function that determines if the state is updated
5
+ */
6
+ declare function useOnChange<T>(value: T, onChange: (current: T, previous: T) => void, isUpdated?: (prev: T, current: T) => boolean): void;
2
7
 
3
8
  export { useOnChange };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useOnChange
3
- } from "../chunk-KGMG4N3Y.js";
3
+ } from "../chunk-I5BWASD6.js";
4
4
  import "../chunk-MLKGABMK.js";
5
5
  export {
6
6
  useOnChange
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-core",
3
- "version": "13.4.10",
3
+ "version": "14.0.0",
4
4
  "description": "The library for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -28,14 +28,14 @@
28
28
  "import": "./dist/search/client.js",
29
29
  "types": "./dist/search/client.d.ts"
30
30
  },
31
- "./search/shared": {
32
- "import": "./dist/search/shared.js",
33
- "types": "./dist/search/shared.d.ts"
34
- },
35
31
  "./search/server": {
36
32
  "import": "./dist/search/server.js",
37
33
  "types": "./dist/search/server.d.ts"
38
34
  },
35
+ "./search/algolia": {
36
+ "import": "./dist/search/algolia.js",
37
+ "types": "./dist/search/algolia.d.ts"
38
+ },
39
39
  "./server": {
40
40
  "import": "./dist/server/index.js",
41
41
  "types": "./dist/server/index.d.ts"
@@ -52,116 +52,57 @@
52
52
  "import": "./dist/link.js",
53
53
  "types": "./dist/link.d.ts"
54
54
  },
55
- "./middleware": {
56
- "import": "./dist/middleware.js",
57
- "types": "./dist/middleware.d.ts"
58
- },
59
55
  "./mdx-plugins": {
60
56
  "import": "./dist/mdx-plugins/index.js",
61
57
  "types": "./dist/mdx-plugins/index.d.ts"
62
58
  },
63
- "./search-algolia/client": {
64
- "import": "./dist/search-algolia/client.js",
65
- "types": "./dist/search-algolia/client.d.ts"
66
- },
67
- "./search-algolia/server": {
68
- "import": "./dist/search-algolia/server.js",
69
- "types": "./dist/search-algolia/server.d.ts"
70
- },
71
59
  "./i18n": {
72
60
  "import": "./dist/i18n/index.js",
73
61
  "types": "./dist/i18n/index.d.ts"
74
62
  }
75
63
  },
76
- "typesVersions": {
77
- "*": {
78
- "sidebar": [
79
- "./dist/sidebar.d.ts"
80
- ],
81
- "breadcrumb": [
82
- "./dist/breadcrumb.d.ts"
83
- ],
84
- "toc": [
85
- "./dist/toc.d.ts"
86
- ],
87
- "search/client": [
88
- "./dist/search/client.d.ts"
89
- ],
90
- "search/shared": [
91
- "./dist/search/shared.d.ts"
92
- ],
93
- "search/server": [
94
- "./dist/search/server.d.ts"
95
- ],
96
- "server": [
97
- "./dist/server/index.d.ts"
98
- ],
99
- "source": [
100
- "./dist/source/index.d.ts"
101
- ],
102
- "link": [
103
- "./dist/link.d.ts"
104
- ],
105
- "middleware": [
106
- "./dist/middleware.d.ts"
107
- ],
108
- "utils/use-on-change": [
109
- "./dist/utils/use-on-change.d.ts"
110
- ],
111
- "mdx-plugins": [
112
- "./dist/mdx-plugins/index.d.ts"
113
- ],
114
- "search-algolia/client": [
115
- "./dist/search-algolia/client.d.ts"
116
- ],
117
- "search-algolia/server": [
118
- "./dist/search-algolia/server.d.ts"
119
- ],
120
- "i18n": [
121
- "./dist/i18n/index.d.ts"
122
- ]
123
- }
124
- },
125
64
  "files": [
126
65
  "dist/*"
127
66
  ],
128
67
  "dependencies": {
129
- "@formatjs/intl-localematcher": "^0.5.4",
130
- "@shikijs/rehype": "^1.16.2",
131
- "@shikijs/transformers": "^1.16.2",
132
- "flexsearch": "0.7.21",
68
+ "@formatjs/intl-localematcher": "^0.5.5",
69
+ "@orama/orama": "^3.0.1",
70
+ "@shikijs/rehype": "^1.22.0",
71
+ "@shikijs/transformers": "^1.22.0",
133
72
  "github-slugger": "^2.0.0",
73
+ "hast-util-to-estree": "^3.1.0",
134
74
  "image-size": "^1.1.1",
135
- "negotiator": "^0.6.3",
136
- "npm-to-yarn": "^3.0.0",
137
- "react-remove-scroll": "^2.5.10",
75
+ "negotiator": "^1.0.0",
76
+ "react-remove-scroll": "^2.6.0",
138
77
  "remark": "^15.0.0",
139
78
  "remark-gfm": "^4.0.0",
140
- "remark-mdx": "^3.0.1",
141
79
  "scroll-into-view-if-needed": "^3.1.0",
142
- "shiki": "^1.16.2",
143
- "swr": "^2.2.5",
80
+ "shiki": "^1.22.0",
144
81
  "unist-util-visit": "^5.0.0"
145
82
  },
146
83
  "devDependencies": {
147
- "@algolia/client-search": "^4.24.0",
148
- "@mdx-js/mdx": "^3.0.1",
84
+ "@algolia/client-search": "4.24.0",
85
+ "@mdx-js/mdx": "^3.1.0",
149
86
  "@types/estree-jsx": "^1.0.5",
150
- "@types/flexsearch": "0.7.6",
151
87
  "@types/hast": "^3.0.4",
152
88
  "@types/mdast": "^4.0.3",
153
89
  "@types/negotiator": "^0.6.3",
154
- "@types/node": "22.5.4",
155
- "@types/react": "^18.3.5",
156
- "@types/react-dom": "^18.3.0",
157
- "algoliasearch": "^4.24.0",
158
- "next": "^14.2.8",
90
+ "@types/node": "22.7.7",
91
+ "@types/react": "^18.3.11",
92
+ "@types/react-dom": "^18.3.1",
93
+ "algoliasearch": "4.24.0",
94
+ "mdast-util-mdx-jsx": "^3.1.3",
95
+ "mdast-util-mdxjs-esm": "^2.0.1",
96
+ "next": "^15.0.0",
97
+ "remark-mdx": "^3.1.0",
98
+ "remark-rehype": "^11.1.1",
159
99
  "unified": "^11.0.5",
160
100
  "eslint-config-custom": "0.0.0",
161
101
  "tsconfig": "0.0.0"
162
102
  },
163
- "peerDependencies": {
164
- "next": ">= 14.1.0",
103
+ "optionalDependencies": {
104
+ "algoliasearch": "4.24.0",
105
+ "next": "15.0.0",
165
106
  "react": ">= 18",
166
107
  "react-dom": ">= 18"
167
108
  },