create-fumadocs-app 16.0.93 → 16.0.95

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/dist/bin.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { i as templates, n as isCI } from "./constants-Ci9k2QPz.js";
3
- import { n as getPackageManager, r as managers, t as create } from "./src-D0SqEDz-.js";
2
+ import { i as templates, n as isCI } from "./constants-B298gc-Q.js";
3
+ import { n as getPackageManager, r as managers, t as create } from "./src-B0OwNvUC.js";
4
4
  import fs from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import { cancel, confirm, group, intro, isCancel, outro, select, spinner, text } from "@clack/prompts";
@@ -86,14 +86,14 @@ function pick(obj, keys) {
86
86
  //#endregion
87
87
  //#region ../create-app-versions/package.json
88
88
  var dependencies$4 = {
89
- "@biomejs/biome": "^2.4.11",
89
+ "@biomejs/biome": "^2.4.12",
90
90
  "@orama/core": "^1.2.19",
91
- "@takumi-rs/image-response": "^1.0.4",
91
+ "@takumi-rs/image-response": "^1.0.9",
92
92
  "eslint": "^10.2.0",
93
93
  "fumadocs-core": "workspace:*",
94
94
  "fumadocs-mdx": "workspace:*",
95
95
  "fumadocs-ui": "workspace:*",
96
- "oxlint": "^1.59.0",
96
+ "oxlint": "^1.60.0",
97
97
  "react": "^19.2.5"
98
98
  };
99
99
  //#endregion
@@ -120,7 +120,7 @@ var package_exports$3 = /* @__PURE__ */ __exportAll({
120
120
  version: () => version$3
121
121
  });
122
122
  var name$3 = "fumadocs-core";
123
- var version$3 = "16.7.15";
123
+ var version$3 = "16.7.16";
124
124
  var description$3 = "The React.js library for building a documentation website";
125
125
  var keywords$3 = ["Docs", "Fumadocs"];
126
126
  var homepage$3 = "https://fumadocs.dev";
@@ -230,12 +230,12 @@ var dependencies$3 = {
230
230
  "vfile": "^6.0.3"
231
231
  };
232
232
  var devDependencies$3 = {
233
- "@formatjs/intl-localematcher": "^0.8.2",
233
+ "@formatjs/intl-localematcher": "^0.8.3",
234
234
  "@mdx-js/mdx": "^3.1.1",
235
235
  "@mixedbread/sdk": "^0.61.0",
236
236
  "@orama/core": "^1.2.19",
237
237
  "@oramacloud/client": "^2.1.4",
238
- "@tanstack/react-router": "1.168.18",
238
+ "@tanstack/react-router": "1.168.22",
239
239
  "@types/estree-jsx": "^1.0.5",
240
240
  "@types/hast": "^3.0.4",
241
241
  "@types/mdast": "^4.0.4",
@@ -243,7 +243,7 @@ var devDependencies$3 = {
243
243
  "@types/node": "25.6.0",
244
244
  "@types/react": "^19.2.14",
245
245
  "@types/react-dom": "^19.2.3",
246
- "algoliasearch": "5.50.1",
246
+ "algoliasearch": "5.50.2",
247
247
  "flexsearch": "^0.8.212",
248
248
  "image-size": "^2.0.2",
249
249
  "lucide-react": "^1.8.0",
@@ -251,12 +251,12 @@ var devDependencies$3 = {
251
251
  "next": "16.2.3",
252
252
  "npm-to-yarn": "^3.0.1",
253
253
  "path-to-regexp": "^8.4.2",
254
- "react-router": "^7.14.0",
254
+ "react-router": "^7.14.1",
255
255
  "remark-directive": "^4.0.0",
256
256
  "remark-mdx": "^3.1.1",
257
257
  "remove-markdown": "^0.6.3",
258
258
  "tsconfig": "workspace:*",
259
- "tsdown": "0.21.7",
259
+ "tsdown": "0.21.8",
260
260
  "typescript": "^6.0.2",
261
261
  "waku": "1.0.0-alpha.7",
262
262
  "zod": "^4.3.6"
@@ -302,8 +302,8 @@ var peerDependenciesMeta$3 = {
302
302
  "zod": { "optional": true }
303
303
  };
304
304
  var inlinedDependencies$2 = {
305
- "@formatjs/fast-memoize": "3.1.1",
306
- "@formatjs/intl-localematcher": "0.8.2",
305
+ "@formatjs/fast-memoize": "3.1.2",
306
+ "@formatjs/intl-localematcher": "0.8.3",
307
307
  "image-size": "2.0.2",
308
308
  "negotiator": "1.0.0",
309
309
  "npm-to-yarn": "3.0.1",
@@ -344,7 +344,6 @@ var package_exports$2 = /* @__PURE__ */ __exportAll({
344
344
  homepage: () => homepage$2,
345
345
  keywords: () => keywords$2,
346
346
  license: () => license$2,
347
- main: () => main,
348
347
  name: () => name$2,
349
348
  peerDependencies: () => peerDependencies$2,
350
349
  peerDependenciesMeta: () => peerDependenciesMeta$2,
@@ -356,7 +355,7 @@ var package_exports$2 = /* @__PURE__ */ __exportAll({
356
355
  version: () => version$2
357
356
  });
358
357
  var name$2 = "fumadocs-mdx";
359
- var version$2 = "14.2.14";
358
+ var version$2 = "14.3.0";
360
359
  var description$2 = "The built-in source for Fumadocs";
361
360
  var keywords$2 = ["Docs", "NextJs"];
362
361
  var homepage$2 = "https://fumadocs.dev";
@@ -370,44 +369,27 @@ var files$2 = [
370
369
  "dist"
371
370
  ];
372
371
  var type$2 = "module";
373
- var main = "./dist/index.js";
374
372
  var types = "./dist/index.d.ts";
375
373
  var exports$2 = {
374
+ ".": "./dist/index.js",
375
+ "./bin": "./dist/bin.js",
376
+ "./bun": "./dist/bun/index.js",
377
+ "./config": "./dist/config/index.js",
378
+ "./next": "./dist/next/index.js",
379
+ "./node/loader": "./dist/node/loader.js",
380
+ "./plugins/index-file": "./dist/plugins/index-file.js",
381
+ "./plugins/json-schema": "./dist/plugins/json-schema.js",
382
+ "./plugins/last-modified": "./dist/plugins/last-modified.js",
383
+ "./runtime/browser": "./dist/runtime/browser.js",
384
+ "./runtime/dynamic": "./dist/runtime/dynamic.js",
385
+ "./runtime/server": "./dist/runtime/server.js",
386
+ "./runtime/types": "./dist/runtime/types.js",
387
+ "./vite": "./dist/vite/index.js",
388
+ "./webpack/mdx": "./dist/webpack/mdx.js",
389
+ "./webpack/meta": "./dist/webpack/meta.js",
390
+ "./package.json": "./package.json",
376
391
  "./loader-mdx": "./loader-mdx.cjs",
377
- "./loader-meta": "./loader-meta.cjs",
378
- "./config": {
379
- "types": "./dist/config/index.d.ts",
380
- "import": "./dist/config/index.js"
381
- },
382
- "./next": {
383
- "types": "./dist/next/index.d.ts",
384
- "import": "./dist/next/index.js",
385
- "require": "./dist/next/index.cjs"
386
- },
387
- "./vite": {
388
- "types": "./dist/vite/index.d.ts",
389
- "import": "./dist/vite/index.js"
390
- },
391
- ".": {
392
- "types": "./dist/index.d.ts",
393
- "import": "./dist/index.js"
394
- },
395
- "./runtime/*": {
396
- "types": "./dist/runtime/*.d.ts",
397
- "import": "./dist/runtime/*.js"
398
- },
399
- "./node/loader": {
400
- "types": "./dist/node/loader.d.ts",
401
- "import": "./dist/node/loader.js"
402
- },
403
- "./bun": {
404
- "types": "./dist/bun/index.d.ts",
405
- "import": "./dist/bun/index.js"
406
- },
407
- "./plugins/*": {
408
- "types": "./dist/plugins/*.d.ts",
409
- "import": "./dist/plugins/*.js"
410
- }
392
+ "./loader-meta": "./loader-meta.cjs"
411
393
  };
412
394
  var publishConfig$2 = { "access": "public" };
413
395
  var scripts$2 = {
@@ -453,7 +435,7 @@ var devDependencies$2 = {
453
435
  "remark-mdx": "^3.1.1",
454
436
  "rolldown": "1.0.0-rc.15",
455
437
  "tsconfig": "workspace:*",
456
- "tsdown": "0.21.7",
438
+ "tsdown": "0.21.8",
457
439
  "vite": "^8.0.8",
458
440
  "webpack": "^5.106.1"
459
441
  };
@@ -488,7 +470,6 @@ var package_default$2 = {
488
470
  bin,
489
471
  files: files$2,
490
472
  type: type$2,
491
- main,
492
473
  types,
493
474
  exports: exports$2,
494
475
  publishConfig: publishConfig$2,
@@ -522,7 +503,7 @@ var package_exports$1 = /* @__PURE__ */ __exportAll({
522
503
  version: () => version$1
523
504
  });
524
505
  var name$1 = "fumadocs-ui";
525
- var version$1 = "16.7.15";
506
+ var version$1 = "16.7.16";
526
507
  var description$1 = "The Radix UI version of Fumadocs UI";
527
508
  var keywords$1 = ["Docs", "Fumadocs"];
528
509
  var homepage$1 = "https://fumadocs.dev";
@@ -672,7 +653,7 @@ var dependencies$1 = {
672
653
  var devDependencies$1 = {
673
654
  "@fumadocs/cli": "workspace:*",
674
655
  "@tailwindcss/cli": "^4.2.2",
675
- "@tsdown/css": "^0.21.6",
656
+ "@tsdown/css": "^0.21.8",
676
657
  "@types/hast": "^3.0.4",
677
658
  "@types/mdx": "^2.0.13",
678
659
  "@types/node": "^25.6.0",
@@ -683,7 +664,7 @@ var devDependencies$1 = {
683
664
  "react-medium-image-zoom": "^5.4.3",
684
665
  "tailwindcss": "^4.2.2",
685
666
  "tsconfig": "workspace:*",
686
- "tsdown": "0.21.7",
667
+ "tsdown": "0.21.8",
687
668
  "unified": "^11.0.5"
688
669
  };
689
670
  var peerDependencies$1 = {
@@ -746,7 +727,7 @@ var package_exports = /* @__PURE__ */ __exportAll({
746
727
  version: () => version
747
728
  });
748
729
  var name = "@fumadocs/base-ui";
749
- var version = "16.7.15";
730
+ var version = "16.7.16";
750
731
  var description = "The Base UI version of Fumadocs UI";
751
732
  var keywords = ["Docs", "Fumadocs"];
752
733
  var homepage = "https://fumadocs.dev";
@@ -863,7 +844,7 @@ var scripts = {
863
844
  "types:check": "tsc --noEmit"
864
845
  };
865
846
  var dependencies = {
866
- "@base-ui/react": "^1.3.0",
847
+ "@base-ui/react": "^1.4.0",
867
848
  "@fumadocs/tailwind": "workspace:*",
868
849
  "class-variance-authority": "^0.7.1",
869
850
  "lucide-react": "^1.8.0",
@@ -879,7 +860,7 @@ var dependencies = {
879
860
  var devDependencies = {
880
861
  "@fumadocs/cli": "workspace:*",
881
862
  "@tailwindcss/cli": "^4.2.2",
882
- "@tsdown/css": "^0.21.6",
863
+ "@tsdown/css": "^0.21.8",
883
864
  "@types/hast": "^3.0.4",
884
865
  "@types/mdx": "^2.0.13",
885
866
  "@types/node": "^25.6.0",
@@ -890,7 +871,7 @@ var devDependencies = {
890
871
  "react-medium-image-zoom": "^5.4.3",
891
872
  "tailwindcss": "^4.2.2",
892
873
  "tsconfig": "workspace:*",
893
- "tsdown": "0.21.7",
874
+ "tsdown": "0.21.8",
894
875
  "unified": "^11.0.5"
895
876
  };
896
877
  var peerDependencies = {
@@ -991,4 +972,4 @@ for (const workspace of workspaces) depVersions[workspace.name] = workspace.vers
991
972
  //#endregion
992
973
  export { copy as a, writeFile$1 as c, templates as i, isCI as n, pick as o, sourceDir as r, tryGitInit as s, depVersions as t };
993
974
 
994
- //# sourceMappingURL=constants-Ci9k2QPz.js.map
975
+ //# sourceMappingURL=constants-B298gc-Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-Ci9k2QPz.js","names":["writeFile","corePkg","mdxPkg","radixPkg","basePkg","versionPkg.dependencies"],"sources":["../src/utils.ts","../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../radix-ui/package.json","../../base-ui/package.json","../src/constants.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path, { join } from 'node:path';\nimport { x } from 'tinyexec';\n\nexport async function writeFile(file: string, content: string) {\n await fs.mkdir(path.dirname(file), { recursive: true });\n await fs.writeFile(file, content);\n}\n\nexport async function copy(\n from: string,\n to: string,\n options: {\n rename?: (s: string) => string;\n filter?: (s: string) => boolean;\n filterDir?: (dir: string) => boolean;\n } = {},\n): Promise<void> {\n const { rename = (s) => s, filterDir = () => true, filter = () => true } = options;\n const stats = await fs.stat(from);\n\n if (stats.isDirectory() && filterDir(from)) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) => copy(path.join(from, file), path.join(to, file), options)),\n );\n }\n\n if (stats.isFile() && filter(from)) {\n to = rename(to);\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nasync function isInGitRepository(cwd: string) {\n const { exitCode } = await x('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\nasync function isDefaultBranchSet(cwd: string) {\n const { exitCode } = await x('git', ['config', 'init.defaultBranch'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\nexport async function tryGitInit(cwd: string): Promise<boolean> {\n const { exitCode } = await x('git', ['--version']);\n if (exitCode !== 0) return false;\n\n if (await isInGitRepository(cwd)) return false;\n\n try {\n await x('git', ['init'], {\n throwOnError: true,\n nodeOptions: { cwd },\n });\n\n if (!(await isDefaultBranchSet(cwd))) {\n await x('git', ['checkout', '-b', 'main'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n }\n\n await x('git', ['add', '-A'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n\n await x('git', ['commit', '-m', 'Initial commit from Create Fumadocs App'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n return true;\n } catch {\n await fs.rm(join(cwd, '.git'), { recursive: true, force: true });\n\n return false;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const result: Partial<T> = {};\n\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n\n return result as Pick<T, K>;\n}\n","","","","","","import { fileURLToPath } from 'node:url';\nimport versionPkg from '../../create-app-versions/package.json';\nimport * as corePkg from '../../core/package.json';\nimport * as mdxPkg from '../../mdx/package.json';\nimport * as radixPkg from '../../radix-ui/package.json';\nimport * as basePkg from '../../base-ui/package.json';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\n\nexport const isCI = Boolean(process.env.CI);\n\nexport interface TemplateInfo {\n value:\n | '+next+fuma-docs-mdx'\n | 'waku'\n | 'react-router'\n | 'react-router-spa'\n | 'tanstack-start'\n | 'tanstack-start-spa'\n | '+next+fuma-docs-mdx+static';\n label: string;\n appDir: string;\n /**\n * path to root provider, relative to `appDir``\n */\n rootProviderPath: string;\n hint?: string;\n /**\n * rename files when copying from template\n */\n rename?: (name: string) => string;\n}\n\nexport const templates: TemplateInfo[] = [\n {\n value: '+next+fuma-docs-mdx',\n label: 'Next.js: Fumadocs MDX',\n hint: 'recommended',\n appDir: '',\n rootProviderPath: 'app/layout.tsx',\n },\n {\n value: '+next+fuma-docs-mdx+static',\n label: 'Next.js Static: Fumadocs MDX',\n appDir: '',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'waku',\n label: 'Waku: Fumadocs MDX',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'react-router',\n label: 'React Router: Fumadocs MDX (not RSC)',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'react-router-spa',\n label: 'React Router SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'tanstack-start',\n label: 'Tanstack Start: Fumadocs MDX (not RSC)',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'tanstack-start-spa',\n label: 'Tanstack Start SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, radixPkg, basePkg];\n\nexport const depVersions = versionPkg.dependencies;\n\nfor (const workspace of workspaces) {\n depVersions[workspace.name as keyof typeof depVersions] = workspace.version;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"constants-B298gc-Q.js","names":["writeFile","corePkg","mdxPkg","radixPkg","basePkg","versionPkg.dependencies"],"sources":["../src/utils.ts","../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../radix-ui/package.json","../../base-ui/package.json","../src/constants.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path, { join } from 'node:path';\nimport { x } from 'tinyexec';\n\nexport async function writeFile(file: string, content: string) {\n await fs.mkdir(path.dirname(file), { recursive: true });\n await fs.writeFile(file, content);\n}\n\nexport async function copy(\n from: string,\n to: string,\n options: {\n rename?: (s: string) => string;\n filter?: (s: string) => boolean;\n filterDir?: (dir: string) => boolean;\n } = {},\n): Promise<void> {\n const { rename = (s) => s, filterDir = () => true, filter = () => true } = options;\n const stats = await fs.stat(from);\n\n if (stats.isDirectory() && filterDir(from)) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) => copy(path.join(from, file), path.join(to, file), options)),\n );\n }\n\n if (stats.isFile() && filter(from)) {\n to = rename(to);\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nasync function isInGitRepository(cwd: string) {\n const { exitCode } = await x('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\nasync function isDefaultBranchSet(cwd: string) {\n const { exitCode } = await x('git', ['config', 'init.defaultBranch'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\nexport async function tryGitInit(cwd: string): Promise<boolean> {\n const { exitCode } = await x('git', ['--version']);\n if (exitCode !== 0) return false;\n\n if (await isInGitRepository(cwd)) return false;\n\n try {\n await x('git', ['init'], {\n throwOnError: true,\n nodeOptions: { cwd },\n });\n\n if (!(await isDefaultBranchSet(cwd))) {\n await x('git', ['checkout', '-b', 'main'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n }\n\n await x('git', ['add', '-A'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n\n await x('git', ['commit', '-m', 'Initial commit from Create Fumadocs App'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n return true;\n } catch {\n await fs.rm(join(cwd, '.git'), { recursive: true, force: true });\n\n return false;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const result: Partial<T> = {};\n\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n\n return result as Pick<T, K>;\n}\n","","","","","","import { fileURLToPath } from 'node:url';\nimport versionPkg from '../../create-app-versions/package.json';\nimport * as corePkg from '../../core/package.json';\nimport * as mdxPkg from '../../mdx/package.json';\nimport * as radixPkg from '../../radix-ui/package.json';\nimport * as basePkg from '../../base-ui/package.json';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\n\nexport const isCI = Boolean(process.env.CI);\n\nexport interface TemplateInfo {\n value:\n | '+next+fuma-docs-mdx'\n | 'waku'\n | 'react-router'\n | 'react-router-spa'\n | 'tanstack-start'\n | 'tanstack-start-spa'\n | '+next+fuma-docs-mdx+static';\n label: string;\n appDir: string;\n /**\n * path to root provider, relative to `appDir``\n */\n rootProviderPath: string;\n hint?: string;\n /**\n * rename files when copying from template\n */\n rename?: (name: string) => string;\n}\n\nexport const templates: TemplateInfo[] = [\n {\n value: '+next+fuma-docs-mdx',\n label: 'Next.js: Fumadocs MDX',\n hint: 'recommended',\n appDir: '',\n rootProviderPath: 'app/layout.tsx',\n },\n {\n value: '+next+fuma-docs-mdx+static',\n label: 'Next.js Static: Fumadocs MDX',\n appDir: '',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'waku',\n label: 'Waku: Fumadocs MDX',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'react-router',\n label: 'React Router: Fumadocs MDX (not RSC)',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'react-router-spa',\n label: 'React Router SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'tanstack-start',\n label: 'Tanstack Start: Fumadocs MDX (not RSC)',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'tanstack-start-spa',\n label: 'Tanstack Start SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, radixPkg, basePkg];\n\nexport const depVersions = versionPkg.dependencies;\n\nfor (const workspace of workspaces) {\n depVersions[workspace.name as keyof typeof depVersions] = workspace.version;\n}\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as create } from "./src-D0SqEDz-.js";
1
+ import { t as create } from "./src-B0OwNvUC.js";
2
2
  export { create };
@@ -1,4 +1,4 @@
1
- import { c as writeFile, o as pick, t as depVersions } from "../constants-Ci9k2QPz.js";
1
+ import { c as writeFile, o as pick, t as depVersions } from "../constants-B298gc-Q.js";
2
2
  import biome_base_default from "./biome.base.js";
3
3
  import biome_next_default from "./biome.next.js";
4
4
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { c as writeFile, o as pick, t as depVersions } from "../constants-Ci9k2QPz.js";
1
+ import { c as writeFile, o as pick, t as depVersions } from "../constants-B298gc-Q.js";
2
2
  import path from "node:path";
3
3
  //#region src/plugins/eslint.ts
4
4
  const config = `import { defineConfig, globalIgnores } from 'eslint/config';
@@ -1,4 +1,4 @@
1
- import { o as pick, t as depVersions } from "../constants-Ci9k2QPz.js";
1
+ import { o as pick, t as depVersions } from "../constants-B298gc-Q.js";
2
2
  import { readFile, writeFile } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  //#region src/plugins/next-use-takumi.ts
@@ -1,4 +1,4 @@
1
- import { a as copy, c as writeFile$1, o as pick, r as sourceDir, t as depVersions } from "../constants-Ci9k2QPz.js";
1
+ import { a as copy, c as writeFile$1, o as pick, r as sourceDir, t as depVersions } from "../constants-B298gc-Q.js";
2
2
  import { n as getCodeValue, t as createSourceFile } from "../shared-DUVwToe1.js";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { o as pick, t as depVersions } from "../constants-Ci9k2QPz.js";
1
+ import { o as pick, t as depVersions } from "../constants-B298gc-Q.js";
2
2
  import { writeFile } from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  //#region src/plugins/oxlint.ts
@@ -1,4 +1,4 @@
1
- import { a as copy, i as templates, r as sourceDir, s as tryGitInit, t as depVersions } from "./constants-Ci9k2QPz.js";
1
+ import { a as copy, i as templates, r as sourceDir, s as tryGitInit, t as depVersions } from "./constants-B298gc-Q.js";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { x } from "tinyexec";
@@ -84,4 +84,4 @@ async function initPackageJson(projectName, packageJsonPath) {
84
84
  //#endregion
85
85
  export { getPackageManager as n, managers as r, create as t };
86
86
 
87
- //# sourceMappingURL=src-D0SqEDz-.js.map
87
+ //# sourceMappingURL=src-B0OwNvUC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"src-D0SqEDz-.js","names":[],"sources":["../src/auto-install.ts","../src/index.ts"],"sourcesContent":["import { x } from 'tinyexec';\n\nexport type PackageManager = (typeof managers)[number];\n\nexport const managers = ['npm', 'yarn', 'bun', 'pnpm'] as const;\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport async function autoInstall(manager: PackageManager, dest: string) {\n await x(manager, ['install'], {\n throwOnError: true,\n nodeOptions: {\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n },\n });\n}\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { copy, tryGitInit } from '@/utils';\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { depVersions, sourceDir, type TemplateInfo, templates } from './constants';\n\nexport type Template = TemplateInfo['value'];\nexport interface Options {\n outputDir: string;\n template: Template;\n\n /**\n * the package manager to use\n *\n * @defaultValue 'npm'\n */\n packageManager?: PackageManager;\n\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n plugins?: TemplatePlugin[];\n}\n\nexport interface TemplatePluginContext {\n template: TemplateInfo;\n log: (message: string) => void;\n /**\n * output directory\n */\n dest: string;\n\n /**\n * output directory for app code (e.g. under `/src`)\n */\n appDir: string;\n}\n\nexport type PackageJsonType = {\n name?: string;\n version?: string;\n private?: boolean;\n scripts?: Record<string, string>;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} & Record<string, unknown>;\n\ntype Awaitable<T> = T | Promise<T>;\n\nexport interface TemplatePlugin {\n template?: (\n this: Pick<TemplatePluginContext, 'dest'>,\n info: TemplateInfo,\n ) => Awaitable<void | TemplateInfo>;\n packageJson?: (\n this: TemplatePluginContext,\n packageJson: PackageJsonType,\n ) => Awaitable<void | PackageJsonType>;\n afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;\n readme?: (this: TemplatePluginContext, content: string) => Awaitable<void | string>;\n}\n\nexport async function create(createOptions: Options): Promise<void> {\n const {\n outputDir,\n plugins = [],\n packageManager = 'npm',\n initializeGit = false,\n installDeps = false,\n log = console.log,\n } = createOptions;\n\n let template = templates.find((item) => item.value === createOptions.template)!;\n for (const plugin of plugins) {\n template = (await plugin.template?.call({ dest: outputDir }, template)) ?? template;\n }\n\n const appDir = path.join(outputDir, template.appDir);\n const projectName = path.basename(outputDir);\n const pluginContext: TemplatePluginContext = {\n template,\n dest: outputDir,\n log,\n appDir,\n };\n\n await copy(path.join(sourceDir, 'template', template.value), outputDir, {\n rename(file) {\n file = file.replace('example.gitignore', '.gitignore');\n\n return template.rename?.(file) ?? file;\n },\n });\n\n const packageJsonPath = path.join(outputDir, 'package.json');\n let packageJson = await initPackageJson(projectName, packageJsonPath);\n for (const plugin of plugins) {\n packageJson = (await plugin.packageJson?.call(pluginContext, packageJson)) ?? packageJson;\n }\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n const readmePath = path.join(outputDir, 'README.md');\n let readme = `# ${projectName}\\n\\n${await fs.readFile(readmePath)}`;\n for (const plugin of plugins) {\n readme = (await plugin.readme?.call(pluginContext, readme)) ?? readme;\n }\n await fs.writeFile(readmePath, readme);\n\n for (const plugin of plugins) {\n await plugin.afterWrite?.call(pluginContext);\n }\n\n if (installDeps) {\n try {\n await autoInstall(packageManager, outputDir);\n log('Installed dependencies');\n } catch (err) {\n log(`Failed to install dependencies: ${err}`);\n }\n }\n\n if (initializeGit && (await tryGitInit(outputDir))) {\n log('Initialized Git repository');\n }\n}\n\nasync function initPackageJson(\n projectName: string,\n packageJsonPath: string,\n): Promise<PackageJsonType> {\n function replaceWorkspaceDeps(deps: Record<string, string> = {}) {\n for (const k in deps) {\n if (deps[k].startsWith('workspace:') && k in depVersions) {\n deps[k] = depVersions[k as keyof typeof depVersions];\n }\n }\n\n return deps;\n }\n\n const packageJson: PackageJsonType = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n\n return {\n ...packageJson,\n name: projectName,\n scripts: {\n ...packageJson.scripts,\n postinstall: 'fumadocs-mdx',\n },\n dependencies: replaceWorkspaceDeps(packageJson.dependencies),\n devDependencies: replaceWorkspaceDeps(packageJson.devDependencies),\n };\n}\n"],"mappings":";;;;;AAIA,MAAa,WAAW;CAAC;CAAO;CAAQ;CAAO;CAAO;AAEtD,SAAgB,oBAAoC;CAClD,MAAM,YAAY,QAAQ,IAAI,yBAAyB;AAEvD,KAAI,UAAU,WAAW,OAAO,CAC9B,QAAO;AAGT,KAAI,UAAU,WAAW,OAAO,CAC9B,QAAO;AAGT,KAAI,UAAU,WAAW,MAAM,CAC7B,QAAO;AAGT,QAAO;;AAGT,eAAsB,YAAY,SAAyB,MAAc;AACvE,OAAM,EAAE,SAAS,CAAC,UAAU,EAAE;EAC5B,cAAc;EACd,aAAa;GACX,KAAK;IACH,GAAG,QAAQ;IACX,UAAU;IACV,wBAAwB;IACzB;GACD,KAAK;GACN;EACF,CAAC;;;;AC4BJ,eAAsB,OAAO,eAAuC;CAClE,MAAM,EACJ,WACA,UAAU,EAAE,EACZ,iBAAiB,OACjB,gBAAgB,OAChB,cAAc,OACd,MAAM,QAAQ,QACZ;CAEJ,IAAI,WAAW,UAAU,MAAM,SAAS,KAAK,UAAU,cAAc,SAAS;AAC9E,MAAK,MAAM,UAAU,QACnB,YAAY,MAAM,OAAO,UAAU,KAAK,EAAE,MAAM,WAAW,EAAE,SAAS,IAAK;CAG7E,MAAM,SAAS,KAAK,KAAK,WAAW,SAAS,OAAO;CACpD,MAAM,cAAc,KAAK,SAAS,UAAU;CAC5C,MAAM,gBAAuC;EAC3C;EACA,MAAM;EACN;EACA;EACD;AAED,OAAM,KAAK,KAAK,KAAK,WAAW,YAAY,SAAS,MAAM,EAAE,WAAW,EACtE,OAAO,MAAM;AACX,SAAO,KAAK,QAAQ,qBAAqB,aAAa;AAEtD,SAAO,SAAS,SAAS,KAAK,IAAI;IAErC,CAAC;CAEF,MAAM,kBAAkB,KAAK,KAAK,WAAW,eAAe;CAC5D,IAAI,cAAc,MAAM,gBAAgB,aAAa,gBAAgB;AACrE,MAAK,MAAM,UAAU,QACnB,eAAe,MAAM,OAAO,aAAa,KAAK,eAAe,YAAY,IAAK;AAEhF,OAAM,GAAG,UAAU,iBAAiB,KAAK,UAAU,aAAa,MAAM,EAAE,CAAC;CAEzE,MAAM,aAAa,KAAK,KAAK,WAAW,YAAY;CACpD,IAAI,SAAS,KAAK,YAAY,MAAM,MAAM,GAAG,SAAS,WAAW;AACjE,MAAK,MAAM,UAAU,QACnB,UAAU,MAAM,OAAO,QAAQ,KAAK,eAAe,OAAO,IAAK;AAEjE,OAAM,GAAG,UAAU,YAAY,OAAO;AAEtC,MAAK,MAAM,UAAU,QACnB,OAAM,OAAO,YAAY,KAAK,cAAc;AAG9C,KAAI,YACF,KAAI;AACF,QAAM,YAAY,gBAAgB,UAAU;AAC5C,MAAI,yBAAyB;UACtB,KAAK;AACZ,MAAI,mCAAmC,MAAM;;AAIjD,KAAI,iBAAkB,MAAM,WAAW,UAAU,CAC/C,KAAI,6BAA6B;;AAIrC,eAAe,gBACb,aACA,iBAC0B;CAC1B,SAAS,qBAAqB,OAA+B,EAAE,EAAE;AAC/D,OAAK,MAAM,KAAK,KACd,KAAI,KAAK,GAAG,WAAW,aAAa,IAAI,KAAK,YAC3C,MAAK,KAAK,YAAY;AAI1B,SAAO;;CAGT,MAAM,cAA+B,KAAK,MAAM,MAAM,GAAG,SAAS,iBAAiB,QAAQ,CAAC;AAE5F,QAAO;EACL,GAAG;EACH,MAAM;EACN,SAAS;GACP,GAAG,YAAY;GACf,aAAa;GACd;EACD,cAAc,qBAAqB,YAAY,aAAa;EAC5D,iBAAiB,qBAAqB,YAAY,gBAAgB;EACnE"}
1
+ {"version":3,"file":"src-B0OwNvUC.js","names":[],"sources":["../src/auto-install.ts","../src/index.ts"],"sourcesContent":["import { x } from 'tinyexec';\n\nexport type PackageManager = (typeof managers)[number];\n\nexport const managers = ['npm', 'yarn', 'bun', 'pnpm'] as const;\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport async function autoInstall(manager: PackageManager, dest: string) {\n await x(manager, ['install'], {\n throwOnError: true,\n nodeOptions: {\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n },\n });\n}\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { copy, tryGitInit } from '@/utils';\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { depVersions, sourceDir, type TemplateInfo, templates } from './constants';\n\nexport type Template = TemplateInfo['value'];\nexport interface Options {\n outputDir: string;\n template: Template;\n\n /**\n * the package manager to use\n *\n * @defaultValue 'npm'\n */\n packageManager?: PackageManager;\n\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n plugins?: TemplatePlugin[];\n}\n\nexport interface TemplatePluginContext {\n template: TemplateInfo;\n log: (message: string) => void;\n /**\n * output directory\n */\n dest: string;\n\n /**\n * output directory for app code (e.g. under `/src`)\n */\n appDir: string;\n}\n\nexport type PackageJsonType = {\n name?: string;\n version?: string;\n private?: boolean;\n scripts?: Record<string, string>;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} & Record<string, unknown>;\n\ntype Awaitable<T> = T | Promise<T>;\n\nexport interface TemplatePlugin {\n template?: (\n this: Pick<TemplatePluginContext, 'dest'>,\n info: TemplateInfo,\n ) => Awaitable<void | TemplateInfo>;\n packageJson?: (\n this: TemplatePluginContext,\n packageJson: PackageJsonType,\n ) => Awaitable<void | PackageJsonType>;\n afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;\n readme?: (this: TemplatePluginContext, content: string) => Awaitable<void | string>;\n}\n\nexport async function create(createOptions: Options): Promise<void> {\n const {\n outputDir,\n plugins = [],\n packageManager = 'npm',\n initializeGit = false,\n installDeps = false,\n log = console.log,\n } = createOptions;\n\n let template = templates.find((item) => item.value === createOptions.template)!;\n for (const plugin of plugins) {\n template = (await plugin.template?.call({ dest: outputDir }, template)) ?? template;\n }\n\n const appDir = path.join(outputDir, template.appDir);\n const projectName = path.basename(outputDir);\n const pluginContext: TemplatePluginContext = {\n template,\n dest: outputDir,\n log,\n appDir,\n };\n\n await copy(path.join(sourceDir, 'template', template.value), outputDir, {\n rename(file) {\n file = file.replace('example.gitignore', '.gitignore');\n\n return template.rename?.(file) ?? file;\n },\n });\n\n const packageJsonPath = path.join(outputDir, 'package.json');\n let packageJson = await initPackageJson(projectName, packageJsonPath);\n for (const plugin of plugins) {\n packageJson = (await plugin.packageJson?.call(pluginContext, packageJson)) ?? packageJson;\n }\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n const readmePath = path.join(outputDir, 'README.md');\n let readme = `# ${projectName}\\n\\n${await fs.readFile(readmePath)}`;\n for (const plugin of plugins) {\n readme = (await plugin.readme?.call(pluginContext, readme)) ?? readme;\n }\n await fs.writeFile(readmePath, readme);\n\n for (const plugin of plugins) {\n await plugin.afterWrite?.call(pluginContext);\n }\n\n if (installDeps) {\n try {\n await autoInstall(packageManager, outputDir);\n log('Installed dependencies');\n } catch (err) {\n log(`Failed to install dependencies: ${err}`);\n }\n }\n\n if (initializeGit && (await tryGitInit(outputDir))) {\n log('Initialized Git repository');\n }\n}\n\nasync function initPackageJson(\n projectName: string,\n packageJsonPath: string,\n): Promise<PackageJsonType> {\n function replaceWorkspaceDeps(deps: Record<string, string> = {}) {\n for (const k in deps) {\n if (deps[k].startsWith('workspace:') && k in depVersions) {\n deps[k] = depVersions[k as keyof typeof depVersions];\n }\n }\n\n return deps;\n }\n\n const packageJson: PackageJsonType = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n\n return {\n ...packageJson,\n name: projectName,\n scripts: {\n ...packageJson.scripts,\n postinstall: 'fumadocs-mdx',\n },\n dependencies: replaceWorkspaceDeps(packageJson.dependencies),\n devDependencies: replaceWorkspaceDeps(packageJson.devDependencies),\n };\n}\n"],"mappings":";;;;;AAIA,MAAa,WAAW;CAAC;CAAO;CAAQ;CAAO;CAAO;AAEtD,SAAgB,oBAAoC;CAClD,MAAM,YAAY,QAAQ,IAAI,yBAAyB;AAEvD,KAAI,UAAU,WAAW,OAAO,CAC9B,QAAO;AAGT,KAAI,UAAU,WAAW,OAAO,CAC9B,QAAO;AAGT,KAAI,UAAU,WAAW,MAAM,CAC7B,QAAO;AAGT,QAAO;;AAGT,eAAsB,YAAY,SAAyB,MAAc;AACvE,OAAM,EAAE,SAAS,CAAC,UAAU,EAAE;EAC5B,cAAc;EACd,aAAa;GACX,KAAK;IACH,GAAG,QAAQ;IACX,UAAU;IACV,wBAAwB;IACzB;GACD,KAAK;GACN;EACF,CAAC;;;;AC4BJ,eAAsB,OAAO,eAAuC;CAClE,MAAM,EACJ,WACA,UAAU,EAAE,EACZ,iBAAiB,OACjB,gBAAgB,OAChB,cAAc,OACd,MAAM,QAAQ,QACZ;CAEJ,IAAI,WAAW,UAAU,MAAM,SAAS,KAAK,UAAU,cAAc,SAAS;AAC9E,MAAK,MAAM,UAAU,QACnB,YAAY,MAAM,OAAO,UAAU,KAAK,EAAE,MAAM,WAAW,EAAE,SAAS,IAAK;CAG7E,MAAM,SAAS,KAAK,KAAK,WAAW,SAAS,OAAO;CACpD,MAAM,cAAc,KAAK,SAAS,UAAU;CAC5C,MAAM,gBAAuC;EAC3C;EACA,MAAM;EACN;EACA;EACD;AAED,OAAM,KAAK,KAAK,KAAK,WAAW,YAAY,SAAS,MAAM,EAAE,WAAW,EACtE,OAAO,MAAM;AACX,SAAO,KAAK,QAAQ,qBAAqB,aAAa;AAEtD,SAAO,SAAS,SAAS,KAAK,IAAI;IAErC,CAAC;CAEF,MAAM,kBAAkB,KAAK,KAAK,WAAW,eAAe;CAC5D,IAAI,cAAc,MAAM,gBAAgB,aAAa,gBAAgB;AACrE,MAAK,MAAM,UAAU,QACnB,eAAe,MAAM,OAAO,aAAa,KAAK,eAAe,YAAY,IAAK;AAEhF,OAAM,GAAG,UAAU,iBAAiB,KAAK,UAAU,aAAa,MAAM,EAAE,CAAC;CAEzE,MAAM,aAAa,KAAK,KAAK,WAAW,YAAY;CACpD,IAAI,SAAS,KAAK,YAAY,MAAM,MAAM,GAAG,SAAS,WAAW;AACjE,MAAK,MAAM,UAAU,QACnB,UAAU,MAAM,OAAO,QAAQ,KAAK,eAAe,OAAO,IAAK;AAEjE,OAAM,GAAG,UAAU,YAAY,OAAO;AAEtC,MAAK,MAAM,UAAU,QACnB,OAAM,OAAO,YAAY,KAAK,cAAc;AAG9C,KAAI,YACF,KAAI;AACF,QAAM,YAAY,gBAAgB,UAAU;AAC5C,MAAI,yBAAyB;UACtB,KAAK;AACZ,MAAI,mCAAmC,MAAM;;AAIjD,KAAI,iBAAkB,MAAM,WAAW,UAAU,CAC/C,KAAI,6BAA6B;;AAIrC,eAAe,gBACb,aACA,iBAC0B;CAC1B,SAAS,qBAAqB,OAA+B,EAAE,EAAE;AAC/D,OAAK,MAAM,KAAK,KACd,KAAI,KAAK,GAAG,WAAW,aAAa,IAAI,KAAK,YAC3C,MAAK,KAAK,YAAY;AAI1B,SAAO;;CAGT,MAAM,cAA+B,KAAK,MAAM,MAAM,GAAG,SAAS,iBAAiB,QAAQ,CAAC;AAE5F,QAAO;EACL,GAAG;EACH,MAAM;EACN,SAAS;GACP,GAAG,YAAY;GACf,aAAa;GACd;EACD,cAAc,qBAAqB,YAAY,aAAa;EAC5D,iBAAiB,qBAAqB,YAAY,gBAAgB;EACnE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fumadocs-app",
3
- "version": "16.0.93",
3
+ "version": "16.0.95",
4
4
  "description": "Create a new documentation site with Fumadocs",
5
5
  "keywords": [
6
6
  "Docs",
@@ -39,14 +39,14 @@
39
39
  "fuma-cli": "^0.0.5",
40
40
  "picocolors": "^1.1.1",
41
41
  "tinyexec": "^1.1.1",
42
- "ts-morph": "^27.0.2",
43
- "@fumadocs/cli": "1.3.7"
42
+ "ts-morph": "^28.0.0",
43
+ "@fumadocs/cli": "1.3.8"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/cross-spawn": "^6.0.6",
47
47
  "@types/node": "25.6.0",
48
48
  "tinyglobby": "^0.2.16",
49
- "tsdown": "0.21.7",
49
+ "tsdown": "0.21.8",
50
50
  "typescript": "^6.0.2",
51
51
  "tsconfig": "0.0.0"
52
52
  },
@@ -9,21 +9,21 @@
9
9
  "types:check": "react-router typegen && fumadocs-mdx && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@react-router/node": "^7.14.0",
13
- "@react-router/serve": "^7.14.0",
14
- "@takumi-rs/image-response": "^1.0.4",
12
+ "@react-router/node": "^7.14.1",
13
+ "@react-router/serve": "^7.14.1",
14
+ "@takumi-rs/image-response": "^1.0.9",
15
15
  "fumadocs-core": "workspace:*",
16
16
  "fumadocs-mdx": "workspace:*",
17
17
  "fumadocs-ui": "workspace:*",
18
- "isbot": "^5.1.37",
18
+ "isbot": "^5.1.38",
19
19
  "lucide-react": "^1.8.0",
20
20
  "react": "^19.2.5",
21
21
  "react-dom": "^19.2.5",
22
- "react-router": "^7.14.0",
22
+ "react-router": "^7.14.1",
23
23
  "tailwind-merge": "^3.5.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@react-router/dev": "^7.14.0",
26
+ "@react-router/dev": "^7.14.1",
27
27
  "@tailwindcss/vite": "^4.2.2",
28
28
  "@types/mdx": "^2.0.13",
29
29
  "@types/node": "^25.6.0",
@@ -10,19 +10,19 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@orama/orama": "^3.1.18",
13
- "@react-router/node": "^7.14.0",
13
+ "@react-router/node": "^7.14.1",
14
14
  "fumadocs-core": "workspace:*",
15
15
  "fumadocs-mdx": "workspace:*",
16
16
  "fumadocs-ui": "workspace:*",
17
- "isbot": "^5.1.37",
17
+ "isbot": "^5.1.38",
18
18
  "lucide-react": "^1.8.0",
19
19
  "react": "^19.2.5",
20
20
  "react-dom": "^19.2.5",
21
- "react-router": "^7.14.0",
21
+ "react-router": "^7.14.1",
22
22
  "tailwind-merge": "^3.5.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@react-router/dev": "^7.14.0",
25
+ "@react-router/dev": "^7.14.1",
26
26
  "@tailwindcss/vite": "^4.2.2",
27
27
  "@types/mdx": "^2.0.13",
28
28
  "@types/node": "^25.6.0",
@@ -11,9 +11,9 @@
11
11
  "types:check": "fumadocs-mdx && tsc --noEmit"
12
12
  },
13
13
  "dependencies": {
14
- "@tanstack/react-router": "1.168.18",
14
+ "@tanstack/react-router": "1.168.22",
15
15
  "@tanstack/react-router-devtools": "1.166.13",
16
- "@tanstack/react-start": "1.167.32",
16
+ "@tanstack/react-start": "1.167.41",
17
17
  "fumadocs-core": "workspace:*",
18
18
  "fumadocs-mdx": "workspace:*",
19
19
  "fumadocs-ui": "workspace:*",
@@ -12,10 +12,10 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@orama/orama": "^3.1.18",
15
- "@tanstack/react-router": "1.168.18",
15
+ "@tanstack/react-router": "1.168.22",
16
16
  "@tanstack/react-router-devtools": "1.166.13",
17
- "@tanstack/react-start": "1.167.32",
18
- "@tanstack/start-static-server-functions": "1.166.32",
17
+ "@tanstack/react-start": "1.167.41",
18
+ "@tanstack/start-static-server-functions": "1.166.33",
19
19
  "fumadocs-core": "workspace:*",
20
20
  "fumadocs-mdx": "workspace:*",
21
21
  "fumadocs-ui": "workspace:*",
@@ -10,8 +10,7 @@
10
10
  "types:check": "fumadocs-mdx && tsc --noEmit"
11
11
  },
12
12
  "dependencies": {
13
- "@orama/orama": "^3.1.18",
14
- "@takumi-rs/image-response": "^1.0.4",
13
+ "@takumi-rs/image-response": "^1.0.9",
15
14
  "fumadocs-core": "workspace:*",
16
15
  "fumadocs-mdx": "workspace:*",
17
16
  "fumadocs-ui": "workspace:*",
@@ -9,13 +9,15 @@ export default defineConfig({
9
9
  // we do this to avoid Vite from bundling React contexts and cause duplicated contexts conflicts.
10
10
  optimizeDeps: {
11
11
  exclude: ['fumadocs-ui', 'fumadocs-core'],
12
- },
13
- ssr: {
14
- external: ['@takumi-rs/image-response'],
12
+ include: [
13
+ 'fumadocs-ui > unified',
14
+ 'fumadocs-core > remark',
15
+ 'fumadocs-core > hast-util-to-jsx-runtime',
16
+ ],
15
17
  },
16
18
  resolve: {
17
19
  tsconfigPaths: true,
18
- external: ['@orama/orama'],
20
+ external: ['@takumi-rs/image-response'],
19
21
  },
20
22
 
21
23
  plugins: [tailwindcss(), mdx(MdxConfig)],