create-fumadocs-app 16.2.33 → 16.3.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.
package/dist/bin.js CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { n as getPackageManager, r as managers, t as create } from "./src-NCKOZrb-.js";
3
- import { i as templates, n as isCI } from "./constants-nRgiNkFI.js";
4
- import { t as feature } from "./feature-BvpaGt8l.js";
2
+ import { n as getPackageManager, r as managers, t as create } from "./src-CRg_0mOO.js";
3
+ import { i as templates, n as isCI } from "./constants-C2dUvnpd.js";
4
+ import { t as feature } from "./feature-CSPlEscc.js";
5
5
  import fs from "node:fs/promises";
6
6
  import path from "node:path";
7
7
  import { cancel, confirm, group, intro, isCancel, outro, select, spinner, text } from "@clack/prompts";
8
- import pc from "picocolors";
8
+ import { styleText } from "node:util";
9
9
  import { cac } from "cac";
10
10
  import { ai } from "@fumadocs/cli/features/ai";
11
11
  import { lint } from "@fumadocs/cli/features/lint";
@@ -47,7 +47,7 @@ async function main(defaultName, config) {
47
47
  checkOption("template", config.template, templateNames);
48
48
  checkOption("pm", config.pm, managers);
49
49
  const skipPrompts = isCI || config.yes === true;
50
- intro(pc.bgCyan(pc.bold("Create Fumadocs App")));
50
+ intro(styleText(["bgCyan", "bold"], "Create Fumadocs App"));
51
51
  const options = await group({
52
52
  name: async () => {
53
53
  if (defaultName) return defaultName;
@@ -208,10 +208,10 @@ async function main(defaultName, config) {
208
208
  } });
209
209
  const projectName = options.name.toLowerCase().replace(/\s/, "-");
210
210
  if (options.aiChat && isStatic(options.template)) {
211
- console.warn(pc.yellow("AI Chat needs a server, the template is static, skipping it."));
211
+ console.warn(styleText("yellow", "AI Chat needs a server, the template is static, skipping it."));
212
212
  options.aiChat = false;
213
213
  }
214
- if (options.ogImage === "next-og" && !options.template.startsWith("+next")) console.warn(pc.yellow("next/og is only available on Next.js, the template uses Takumi instead."));
214
+ if (options.ogImage === "next-og" && !options.template.startsWith("+next")) console.warn(styleText("yellow", "next/og is only available on Next.js, the template uses Takumi instead."));
215
215
  if (!isCI) await checkDir(projectName, skipPrompts);
216
216
  const info = spinner();
217
217
  info.start(`Generating Project`);
@@ -236,13 +236,13 @@ async function main(defaultName, config) {
236
236
  }
237
237
  });
238
238
  info.stop("Project Generated");
239
- outro(pc.bgGreen(pc.bold("Done")));
240
- console.log(pc.bold("\nOpen the project"));
241
- console.log(pc.cyan(`cd ${projectName}`));
242
- console.log(pc.bold("\nRun Development Server"));
243
- if (config.pm === "npm" || config.pm === "bun") console.log(pc.cyan(`${config.pm} run dev`));
244
- else console.log(pc.cyan(`${config.pm} dev`));
245
- console.log(pc.bold("\nYou can now open the project and start writing documents"));
239
+ outro(styleText(["bgGreen", "bold"], "Done"));
240
+ console.log(styleText("bold", "\nOpen the project"));
241
+ console.log(styleText("cyan", `cd ${projectName}`));
242
+ console.log(styleText("bold", "\nRun Development Server"));
243
+ if (config.pm === "npm" || config.pm === "bun") console.log(styleText("cyan", `${config.pm} run dev`));
244
+ else console.log(styleText("cyan", `${config.pm} dev`));
245
+ console.log(styleText("bold", "\nYou can now open the project and start writing documents"));
246
246
  process.exit(0);
247
247
  }
248
248
  async function checkDir(outputDir, skipPrompts) {
@@ -273,7 +273,7 @@ try {
273
273
  cli.parse(process.argv, { run: false });
274
274
  await cli.runMatchedCommand();
275
275
  } catch (e) {
276
- console.error(pc.red(e instanceof Error ? e.message : String(e)));
276
+ console.error(styleText("red", e instanceof Error ? e.message : String(e)));
277
277
  process.exit(1);
278
278
  }
279
279
  export {};
@@ -51,7 +51,7 @@ var package_exports$3 = /* @__PURE__ */ __exportAll({
51
51
  version: () => version$3
52
52
  });
53
53
  var name$3 = "fumadocs-core";
54
- var version$3 = "16.18.3";
54
+ var version$3 = "16.18.4";
55
55
  var description$3 = "The React.js library for building a documentation website";
56
56
  var keywords$3 = ["Docs", "Fumadocs"];
57
57
  var homepage$3 = "https://fumadocs.dev";
@@ -482,7 +482,7 @@ var package_exports$1 = /* @__PURE__ */ __exportAll({
482
482
  version: () => version$1
483
483
  });
484
484
  var name$1 = "@fumadocs/base-ui";
485
- var version$1 = "16.18.3";
485
+ var version$1 = "16.18.4";
486
486
  var description$1 = "The Base UI version of Fumadocs UI";
487
487
  var keywords$1 = ["Docs", "Fumadocs"];
488
488
  var homepage$1 = "https://fumadocs.dev";
@@ -600,7 +600,7 @@ var exports$1 = {
600
600
  "./utils/use-footer-items": "./dist/utils/use-footer-items.js",
601
601
  "./utils/use-is-scroll-top": "./dist/utils/use-is-scroll-top.js",
602
602
  "./package.json": "./package.json",
603
- "./components/image-zoom.css": "./dist/components/image-zoom.css",
603
+ "./components/image-zoom2.css": "./dist/components/image-zoom2.css",
604
604
  "./style.css": "./dist/style.css",
605
605
  "./css/*": "./css/*"
606
606
  };
@@ -634,7 +634,7 @@ var devDependencies$1 = {
634
634
  "@types/node": "^26.6.6",
635
635
  "@types/react": "^19.3.0",
636
636
  "@types/react-dom": "^19.3.0",
637
- "fuma-cli": "^0.3.3",
637
+ "fuma-cli": "^0.3.4",
638
638
  "fumadocs-core": "workspace:*",
639
639
  "react-medium-image-zoom": "^5.4.9",
640
640
  "tailwindcss": "^4.3.5",
@@ -1,8 +1,8 @@
1
- import { t as depVersions } from "./constants-nRgiNkFI.js";
1
+ import { t as depVersions } from "./constants-C2dUvnpd.js";
2
2
  import { getDefaultConfig } from "@fumadocs/cli/config";
3
3
  import { runFeature } from "@fumadocs/cli/features";
4
4
  import { loadProject } from "@fumadocs/cli/project";
5
- // ../../node_modules/.pnpm/fuma-cli@0.3.3/node_modules/fuma-cli/dist/schema-BuNx2JbQ.js
5
+ // ../../node_modules/.pnpm/fuma-cli@0.3.4/node_modules/fuma-cli/dist/schema-DMvEg9i4.js
6
6
  /**
7
7
  * Error thrown when type assertion fails.
8
8
  *
@@ -18,51 +18,6 @@ import { loadProject } from "@fumadocs/cli/project";
18
18
  * @template T Expected type (for type safety)
19
19
  */
20
20
  var TypeGuardError = class extends Error {
21
- /**
22
- * Name of the typia method that threw this error.
23
- *
24
- * E.g., `"typia.assert"`, `"typia.assertEquals"`, `"typia.assertGuard"`.
25
- */
26
- method;
27
- /**
28
- * Property path where assertion failed.
29
- *
30
- * Uses dot notation for nested properties. `undefined` if error occurred at
31
- * root level.
32
- *
33
- * E.g., `"input.age"`, `"input.profile.email"`, `"input[0].name"`.
34
- */
35
- path;
36
- /**
37
- * String representation of expected type.
38
- *
39
- * E.g., `"string"`, `"number & ExclusiveMinimum<19>"`, `"{ name: string; age:
40
- * number }"`.
41
- */
42
- expected;
43
- /**
44
- * Actual value that failed assertion.
45
- *
46
- * The raw value at the error path, useful for debugging.
47
- */
48
- value;
49
- /**
50
- * Optional human-readable error description.
51
- *
52
- * Primarily for AI agent libraries or custom validation scenarios needing
53
- * additional context. Standard assertions rely on `path`, `expected`, and
54
- * `value` for error reporting.
55
- */
56
- description;
57
- /**
58
- * Phantom property for TypeScript type safety.
59
- *
60
- * Not used at runtime—exists only to preserve generic type `T` in the type
61
- * system. Always `undefined`.
62
- *
63
- * @internal
64
- */
65
- fake_expected_typed_value_;
66
21
  /**
67
22
  * Creates a new TypeGuardError instance.
68
23
  *
@@ -73,6 +28,7 @@ var TypeGuardError = class extends Error {
73
28
  const proto = new.target.prototype;
74
29
  if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
75
30
  else this.__proto__ = proto;
31
+ this.name = "TypeGuardError";
76
32
  this.method = props.method;
77
33
  this.path = props.path;
78
34
  this.expected = props.expected;
@@ -84,13 +40,36 @@ var TypeGuardError = class extends Error {
84
40
  ].join("\n");
85
41
  }
86
42
  };
43
+ /**
44
+ * Report an assertion failure.
45
+ *
46
+ * When `exceptionable` is true it throws the error that `factory` makes, or a
47
+ * TypeGuardError when `factory` is not a function; otherwise it returns false
48
+ * so a union probe can try the next branch.
49
+ *
50
+ * @evidence contracts/common.md#principled-implementation When the call is exceptionable it throws an error built by the caller's factory if one is a function, and a TypeGuardError otherwise, and when it is not exceptionable it returns false so a union probe can try another branch without throwing. The factory is tested for callability because a pointwise call such as `rows.map(assertUser)` passes the element index in that position, which a bare truthiness test would call.
51
+ * @evidence contracts/common.md#clear-and-simple-design One function with a boolean guard and one factory branch.
52
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts A non-callable argument falls back to the default error and is not retried or wrapped; the comment explains that a create-time factory overridden by the argument cannot be recovered here.
53
+ * @evidence contracts/common.md#meaningful-documentation The doc states the two outcomes and the factory rule; the inline comment records the pointwise hand-off failure.
54
+ */
87
55
  const _assertGuard = (exceptionable, props, factory) => {
88
56
  if (exceptionable === true) {
89
- if (factory) throw factory(props);
90
- else throw new TypeGuardError(props);
57
+ if (typeof factory === "function") throw factory(props);
58
+ throw new TypeGuardError(props);
91
59
  }
92
60
  return false;
93
61
  };
62
+ /**
63
+ * Write a property access on a key as source text.
64
+ *
65
+ * A key that is a legal ASCII identifier and not a reserved word becomes
66
+ * `.key`, and any other key becomes `["key"]` with a JSON string literal.
67
+ *
68
+ * @evidence contracts/common.md#principled-implementation A key that is a legal ASCII identifier and not a reserved word is written as a dot access, and every other key as a bracket access with a JSON string literal, which is a valid JavaScript string literal for any key, so the emitted access expression is correct for every property name. The reserved list is conservative for dot access, which is legal after a dot, so it can only cause an extra bracket form; the strict-mode future reserved words are not in the list.
69
+ * @evidence contracts/common.md#clear-and-simple-design One function with two private helpers, the identifier test and the reserved set.
70
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The decision is purely lexical and no property name is special-cased.
71
+ * @evidence contracts/common.md#meaningful-documentation The doc states the dot and bracket forms and why bracket access is always safe.
72
+ */
94
73
  const _accessExpressionAsString = (str) => variable(str) ? `.${str}` : `[${JSON.stringify(str)}]`;
95
74
  const variable = (str) => reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
96
75
  const reserved = (str) => RESERVED.has(str);
@@ -132,47 +111,54 @@ const RESERVED = /* @__PURE__ */ new Set([
132
111
  "while",
133
112
  "with"
134
113
  ]);
114
+ const __typia_transform__accessExpressionAsString = _accessExpressionAsString;
135
115
  /** @throws when the input is not a manifest */
136
116
  const assertManifest = (() => {
137
- const _io0 = (input) => "string" === typeof input.name && Array.isArray(input.components) && input.components.every((elem) => "object" === typeof elem && null !== elem && _io1(elem)) && "object" === typeof input.files && null !== input.files && false === Array.isArray(input.files) && _io2(input.files) && (void 0 === input.registries || Array.isArray(input.registries) && input.registries.every((elem) => "string" === typeof elem));
138
- const _io1 = (input) => "string" === typeof input.name && (void 0 === input.title || "string" === typeof input.title) && (void 0 === input.description || "string" === typeof input.description) && (void 0 === input.unlisted || "boolean" === typeof input.unlisted) && Array.isArray(input.files) && input.files.every((elem) => "string" === typeof elem);
139
- const _io2 = (input) => Object.keys(input).every((key) => {
140
- const value = input[key];
141
- if (void 0 === value) return true;
142
- return "object" === typeof value && null !== value && _iu0(value);
143
- });
144
- const _io3 = (input) => (void 0 === input.dependencies || "object" === typeof input.dependencies && null !== input.dependencies && false === Array.isArray(input.dependencies) && _io4(input.dependencies)) && (void 0 === input.devDependencies || "object" === typeof input.devDependencies && null !== input.devDependencies && false === Array.isArray(input.devDependencies) && _io4(input.devDependencies)) && (void 0 === input.imports || Array.isArray(input.imports) && input.imports.every((elem) => "object" === typeof elem && null !== elem && _io5(elem))) && (void 0 === input.stmtInfos || Array.isArray(input.stmtInfos) && input.stmtInfos.every((elem) => "object" === typeof elem && null !== elem && _io6(elem))) && ("components" === input.type || "lib" === input.type || "css" === input.type || "ui" === input.type || "layout" === input.type) && (void 0 === input.target || "string" === typeof input.target);
145
- const _io4 = (input) => Object.keys(input).every((key) => {
146
- const value = input[key];
147
- if (void 0 === value) return true;
148
- return null === value || "string" === typeof value;
149
- });
150
- const _io5 = (input) => "number" === typeof input.start && "string" === typeof input.id && (void 0 === input.bindings || Array.isArray(input.bindings) && input.bindings.every((elem) => "string" === typeof elem)) && (void 0 === input["package"] || "string" === typeof input["package"]);
151
- const _io6 = (input) => "number" === typeof input.end && (void 0 === input.declares || Array.isArray(input.declares) && input.declares.every((elem) => "string" === typeof elem)) && (void 0 === input.references || Array.isArray(input.references) && input.references.every((elem) => "number" === typeof elem)) && (void 0 === input["import"] || "boolean" === typeof input["import"]) && (void 0 === input.dependencies || "object" === typeof input.dependencies && null !== input.dependencies && false === Array.isArray(input.dependencies) && _io4(input.dependencies)) && (void 0 === input.devDependencies || "object" === typeof input.devDependencies && null !== input.devDependencies && false === Array.isArray(input.devDependencies) && _io4(input.devDependencies));
152
- const _io7 = (input) => (void 0 === input.dependencies || "object" === typeof input.dependencies && null !== input.dependencies && false === Array.isArray(input.dependencies) && _io4(input.dependencies)) && (void 0 === input.devDependencies || "object" === typeof input.devDependencies && null !== input.devDependencies && false === Array.isArray(input.devDependencies) && _io4(input.devDependencies)) && (void 0 === input.imports || Array.isArray(input.imports) && input.imports.every((elem) => "object" === typeof elem && null !== elem && _io5(elem))) && (void 0 === input.stmtInfos || Array.isArray(input.stmtInfos) && input.stmtInfos.every((elem) => "object" === typeof elem && null !== elem && _io6(elem))) && "route-handler" === input.type && "string" === typeof input.route;
153
- const _iu0 = (input) => (() => {
154
- if ("components" === input.type || "lib" === input.type || "css" === input.type || "ui" === input.type || "layout" === input.type) return _io3(input);
155
- else if ("route-handler" === input.type) return _io7(input);
156
- else return false;
157
- })();
158
- const _ao0 = (input, _path, _exceptionable = true) => ("string" === typeof input.name || _assertGuard(_exceptionable, {
117
+ const _ip0 = (input) => "string" === typeof input["name"];
118
+ const _ip1 = (input) => void 0 === input["dependencies"] || "object" === typeof input["dependencies"] && null !== input["dependencies"] && false === Array.isArray(input["dependencies"]) && _io5(input["dependencies"]);
119
+ const _ip2 = (input) => void 0 === input["devDependencies"] || "object" === typeof input["devDependencies"] && null !== input["devDependencies"] && false === Array.isArray(input["devDependencies"]) && _io5(input["devDependencies"]);
120
+ const _ap0 = (input, _path, _exceptionable = true) => "string" === typeof input["name"] || _assertGuard(_exceptionable, {
159
121
  method: "typia.createAssert",
160
122
  path: _path + ".name",
161
123
  expected: "string",
162
- value: input.name
163
- }, _errorFactory)) && ((Array.isArray(input.components) || _assertGuard(_exceptionable, {
124
+ value: input["name"]
125
+ }, _errorFactory);
126
+ const _ae0 = "(BaseFile & { type: \"components\" | \"css\" | \"layout\" | \"lib\" | \"ui\"; target?: string | undefined; } | BaseFile & { type: \"route-handler\"; route: string; })";
127
+ const _ap1 = (input, _path, _exceptionable = true) => void 0 === input["dependencies"] || ("object" === typeof input["dependencies"] && null !== input["dependencies"] && false === Array.isArray(input["dependencies"]) || _assertGuard(_exceptionable, {
128
+ method: "typia.createAssert",
129
+ path: _path + ".dependencies",
130
+ expected: "(Dependencies | undefined)",
131
+ value: input["dependencies"]
132
+ }, _errorFactory)) && _ao5(input["dependencies"], _path + ".dependencies", _exceptionable) || _assertGuard(_exceptionable, {
133
+ method: "typia.createAssert",
134
+ path: _path + ".dependencies",
135
+ expected: "(Dependencies | undefined)",
136
+ value: input["dependencies"]
137
+ }, _errorFactory);
138
+ const _ap2 = (input, _path, _exceptionable = true) => void 0 === input["devDependencies"] || ("object" === typeof input["devDependencies"] && null !== input["devDependencies"] && false === Array.isArray(input["devDependencies"]) || _assertGuard(_exceptionable, {
139
+ method: "typia.createAssert",
140
+ path: _path + ".devDependencies",
141
+ expected: "(Dependencies | undefined)",
142
+ value: input["devDependencies"]
143
+ }, _errorFactory)) && _ao5(input["devDependencies"], _path + ".devDependencies", _exceptionable) || _assertGuard(_exceptionable, {
144
+ method: "typia.createAssert",
145
+ path: _path + ".devDependencies",
146
+ expected: "(Dependencies | undefined)",
147
+ value: input["devDependencies"]
148
+ }, _errorFactory);
149
+ const _ao0 = (input, _path, _exceptionable = true) => _ap0(input, _path, _exceptionable) && ((Array.isArray(input.components) || _assertGuard(_exceptionable, {
164
150
  method: "typia.createAssert",
165
151
  path: _path + ".components",
166
152
  expected: "Array<ManifestComponent>",
167
153
  value: input.components
168
- }, _errorFactory)) && input.components.every((elem, _index11) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
154
+ }, _errorFactory)) && input.components.every((elem, _index9) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
169
155
  method: "typia.createAssert",
170
- path: _path + ".components[" + _index11 + "]",
156
+ path: _path + ".components[" + _index9 + "]",
171
157
  expected: "ManifestComponent",
172
158
  value: elem
173
- }, _errorFactory)) && _ao1(elem, _path + ".components[" + _index11 + "]", _exceptionable) || _assertGuard(_exceptionable, {
159
+ }, _errorFactory)) && _ao1(elem, _path + ".components[" + _index9 + "]", _exceptionable) || _assertGuard(_exceptionable, {
174
160
  method: "typia.createAssert",
175
- path: _path + ".components[" + _index11 + "]",
161
+ path: _path + ".components[" + _index9 + "]",
176
162
  expected: "ManifestComponent",
177
163
  value: elem
178
164
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -195,9 +181,9 @@ const assertManifest = (() => {
195
181
  path: _path + ".registries",
196
182
  expected: "(Array<string> | undefined)",
197
183
  value: input.registries
198
- }, _errorFactory)) && input.registries.every((elem, _index12) => "string" === typeof elem || _assertGuard(_exceptionable, {
184
+ }, _errorFactory)) && input.registries.every((elem, _index10) => "string" === typeof elem || _assertGuard(_exceptionable, {
199
185
  method: "typia.createAssert",
200
- path: _path + ".registries[" + _index12 + "]",
186
+ path: _path + ".registries[" + _index10 + "]",
201
187
  expected: "string",
202
188
  value: elem
203
189
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -206,12 +192,7 @@ const assertManifest = (() => {
206
192
  expected: "(Array<string> | undefined)",
207
193
  value: input.registries
208
194
  }, _errorFactory));
209
- const _ao1 = (input, _path, _exceptionable = true) => ("string" === typeof input.name || _assertGuard(_exceptionable, {
210
- method: "typia.createAssert",
211
- path: _path + ".name",
212
- expected: "string",
213
- value: input.name
214
- }, _errorFactory)) && (void 0 === input.title || "string" === typeof input.title || _assertGuard(_exceptionable, {
195
+ const _ao1 = (input, _path, _exceptionable = true) => _ap0(input, _path, _exceptionable) && (void 0 === input.title || "string" === typeof input.title || _assertGuard(_exceptionable, {
215
196
  method: "typia.createAssert",
216
197
  path: _path + ".title",
217
198
  expected: "(string | undefined)",
@@ -231,9 +212,9 @@ const assertManifest = (() => {
231
212
  path: _path + ".files",
232
213
  expected: "Array<string>",
233
214
  value: input.files
234
- }, _errorFactory)) && input.files.every((elem, _index13) => "string" === typeof elem || _assertGuard(_exceptionable, {
215
+ }, _errorFactory)) && input.files.every((elem, _index11) => "string" === typeof elem || _assertGuard(_exceptionable, {
235
216
  method: "typia.createAssert",
236
- path: _path + ".files[" + _index13 + "]",
217
+ path: _path + ".files[" + _index11 + "]",
237
218
  expected: "string",
238
219
  value: elem
239
220
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -247,49 +228,40 @@ const assertManifest = (() => {
247
228
  if (void 0 === value) return true;
248
229
  return ("object" === typeof value && null !== value || _assertGuard(_exceptionable, {
249
230
  method: "typia.createAssert",
250
- path: _path + _accessExpressionAsString(key),
251
- expected: "(BaseFile & { type: \"components\" | \"lib\" | \"css\" | \"ui\" | \"layout\"; target?: string | undefined; } | BaseFile & { type: \"route-handler\"; route: string; })",
231
+ path: _path + __typia_transform__accessExpressionAsString(key),
232
+ expected: _ae0,
252
233
  value
253
- }, _errorFactory)) && _au0(value, _path + _accessExpressionAsString(key), _exceptionable) || _assertGuard(_exceptionable, {
234
+ }, _errorFactory)) && _au0(value, _path + __typia_transform__accessExpressionAsString(key), _exceptionable) || _assertGuard(_exceptionable, {
254
235
  method: "typia.createAssert",
255
- path: _path + _accessExpressionAsString(key),
256
- expected: "(BaseFile & { type: \"components\" | \"lib\" | \"css\" | \"ui\" | \"layout\"; target?: string | undefined; } | BaseFile & { type: \"route-handler\"; route: string; })",
236
+ path: _path + __typia_transform__accessExpressionAsString(key),
237
+ expected: _ae0,
257
238
  value
258
239
  }, _errorFactory);
259
240
  });
260
- const _ao3 = (input, _path, _exceptionable = true) => (void 0 === input.dependencies || ("object" === typeof input.dependencies && null !== input.dependencies && false === Array.isArray(input.dependencies) || _assertGuard(_exceptionable, {
241
+ const _ao3 = (input, _path, _exceptionable = true) => _ao4(input, _path, _exceptionable) && ("components" === input.type || "css" === input.type || "layout" === input.type || "lib" === input.type || "ui" === input.type || _assertGuard(_exceptionable, {
261
242
  method: "typia.createAssert",
262
- path: _path + ".dependencies",
263
- expected: "(Dependencies | undefined)",
264
- value: input.dependencies
265
- }, _errorFactory)) && _ao4(input.dependencies, _path + ".dependencies", _exceptionable) || _assertGuard(_exceptionable, {
266
- method: "typia.createAssert",
267
- path: _path + ".dependencies",
268
- expected: "(Dependencies | undefined)",
269
- value: input.dependencies
270
- }, _errorFactory)) && (void 0 === input.devDependencies || ("object" === typeof input.devDependencies && null !== input.devDependencies && false === Array.isArray(input.devDependencies) || _assertGuard(_exceptionable, {
271
- method: "typia.createAssert",
272
- path: _path + ".devDependencies",
273
- expected: "(Dependencies | undefined)",
274
- value: input.devDependencies
275
- }, _errorFactory)) && _ao4(input.devDependencies, _path + ".devDependencies", _exceptionable) || _assertGuard(_exceptionable, {
243
+ path: _path + ".type",
244
+ expected: "(\"components\" | \"css\" | \"layout\" | \"lib\" | \"ui\")",
245
+ value: input.type
246
+ }, _errorFactory)) && (void 0 === input.target || "string" === typeof input.target || _assertGuard(_exceptionable, {
276
247
  method: "typia.createAssert",
277
- path: _path + ".devDependencies",
278
- expected: "(Dependencies | undefined)",
279
- value: input.devDependencies
280
- }, _errorFactory)) && (void 0 === input.imports || (Array.isArray(input.imports) || _assertGuard(_exceptionable, {
248
+ path: _path + ".target",
249
+ expected: "(string | undefined)",
250
+ value: input.target
251
+ }, _errorFactory));
252
+ const _ao4 = (input, _path, _exceptionable = true) => _ap1(input, _path, _exceptionable) && _ap2(input, _path, _exceptionable) && (void 0 === input.imports || (Array.isArray(input.imports) || _assertGuard(_exceptionable, {
281
253
  method: "typia.createAssert",
282
254
  path: _path + ".imports",
283
255
  expected: "(Array<ManifestImport> | undefined)",
284
256
  value: input.imports
285
- }, _errorFactory)) && input.imports.every((elem, _index14) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
257
+ }, _errorFactory)) && input.imports.every((elem, _index12) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
286
258
  method: "typia.createAssert",
287
- path: _path + ".imports[" + _index14 + "]",
259
+ path: _path + ".imports[" + _index12 + "]",
288
260
  expected: "ManifestImport",
289
261
  value: elem
290
- }, _errorFactory)) && _ao5(elem, _path + ".imports[" + _index14 + "]", _exceptionable) || _assertGuard(_exceptionable, {
262
+ }, _errorFactory)) && _ao6(elem, _path + ".imports[" + _index12 + "]", _exceptionable) || _assertGuard(_exceptionable, {
291
263
  method: "typia.createAssert",
292
- path: _path + ".imports[" + _index14 + "]",
264
+ path: _path + ".imports[" + _index12 + "]",
293
265
  expected: "ManifestImport",
294
266
  value: elem
295
267
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -302,14 +274,14 @@ const assertManifest = (() => {
302
274
  path: _path + ".stmtInfos",
303
275
  expected: "(Array<StmtInfo> | undefined)",
304
276
  value: input.stmtInfos
305
- }, _errorFactory)) && input.stmtInfos.every((elem, _index15) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
277
+ }, _errorFactory)) && input.stmtInfos.every((elem, _index13) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
306
278
  method: "typia.createAssert",
307
- path: _path + ".stmtInfos[" + _index15 + "]",
279
+ path: _path + ".stmtInfos[" + _index13 + "]",
308
280
  expected: "StmtInfo",
309
281
  value: elem
310
- }, _errorFactory)) && _ao6(elem, _path + ".stmtInfos[" + _index15 + "]", _exceptionable) || _assertGuard(_exceptionable, {
282
+ }, _errorFactory)) && _ao7(elem, _path + ".stmtInfos[" + _index13 + "]", _exceptionable) || _assertGuard(_exceptionable, {
311
283
  method: "typia.createAssert",
312
- path: _path + ".stmtInfos[" + _index15 + "]",
284
+ path: _path + ".stmtInfos[" + _index13 + "]",
313
285
  expected: "StmtInfo",
314
286
  value: elem
315
287
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -317,28 +289,18 @@ const assertManifest = (() => {
317
289
  path: _path + ".stmtInfos",
318
290
  expected: "(Array<StmtInfo> | undefined)",
319
291
  value: input.stmtInfos
320
- }, _errorFactory)) && ("components" === input.type || "lib" === input.type || "css" === input.type || "ui" === input.type || "layout" === input.type || _assertGuard(_exceptionable, {
321
- method: "typia.createAssert",
322
- path: _path + ".type",
323
- expected: "(\"components\" | \"css\" | \"layout\" | \"lib\" | \"ui\")",
324
- value: input.type
325
- }, _errorFactory)) && (void 0 === input.target || "string" === typeof input.target || _assertGuard(_exceptionable, {
326
- method: "typia.createAssert",
327
- path: _path + ".target",
328
- expected: "(string | undefined)",
329
- value: input.target
330
292
  }, _errorFactory));
331
- const _ao4 = (input, _path, _exceptionable = true) => false === _exceptionable || Object.keys(input).every((key) => {
293
+ const _ao5 = (input, _path, _exceptionable = true) => false === _exceptionable || Object.keys(input).every((key) => {
332
294
  const value = input[key];
333
295
  if (void 0 === value) return true;
334
296
  return null === value || "string" === typeof value || _assertGuard(_exceptionable, {
335
297
  method: "typia.createAssert",
336
- path: _path + _accessExpressionAsString(key),
298
+ path: _path + __typia_transform__accessExpressionAsString(key),
337
299
  expected: "(null | string)",
338
300
  value
339
301
  }, _errorFactory);
340
302
  });
341
- const _ao5 = (input, _path, _exceptionable = true) => ("number" === typeof input.start || _assertGuard(_exceptionable, {
303
+ const _ao6 = (input, _path, _exceptionable = true) => ("number" === typeof input.start || _assertGuard(_exceptionable, {
342
304
  method: "typia.createAssert",
343
305
  path: _path + ".start",
344
306
  expected: "number",
@@ -353,9 +315,9 @@ const assertManifest = (() => {
353
315
  path: _path + ".bindings",
354
316
  expected: "(Array<string> | undefined)",
355
317
  value: input.bindings
356
- }, _errorFactory)) && input.bindings.every((elem, _index16) => "string" === typeof elem || _assertGuard(_exceptionable, {
318
+ }, _errorFactory)) && input.bindings.every((elem, _index14) => "string" === typeof elem || _assertGuard(_exceptionable, {
357
319
  method: "typia.createAssert",
358
- path: _path + ".bindings[" + _index16 + "]",
320
+ path: _path + ".bindings[" + _index14 + "]",
359
321
  expected: "string",
360
322
  value: elem
361
323
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -369,7 +331,7 @@ const assertManifest = (() => {
369
331
  expected: "(string | undefined)",
370
332
  value: input["package"]
371
333
  }, _errorFactory));
372
- const _ao6 = (input, _path, _exceptionable = true) => ("number" === typeof input.end || _assertGuard(_exceptionable, {
334
+ const _ao7 = (input, _path, _exceptionable = true) => ("number" === typeof input.end || _assertGuard(_exceptionable, {
373
335
  method: "typia.createAssert",
374
336
  path: _path + ".end",
375
337
  expected: "number",
@@ -379,9 +341,9 @@ const assertManifest = (() => {
379
341
  path: _path + ".declares",
380
342
  expected: "(Array<string> | undefined)",
381
343
  value: input.declares
382
- }, _errorFactory)) && input.declares.every((elem, _index17) => "string" === typeof elem || _assertGuard(_exceptionable, {
344
+ }, _errorFactory)) && input.declares.every((elem, _index15) => "string" === typeof elem || _assertGuard(_exceptionable, {
383
345
  method: "typia.createAssert",
384
- path: _path + ".declares[" + _index17 + "]",
346
+ path: _path + ".declares[" + _index15 + "]",
385
347
  expected: "string",
386
348
  value: elem
387
349
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -394,9 +356,9 @@ const assertManifest = (() => {
394
356
  path: _path + ".references",
395
357
  expected: "(Array<number> | undefined)",
396
358
  value: input.references
397
- }, _errorFactory)) && input.references.every((elem, _index18) => "number" === typeof elem || _assertGuard(_exceptionable, {
359
+ }, _errorFactory)) && input.references.every((elem, _index16) => "number" === typeof elem || _assertGuard(_exceptionable, {
398
360
  method: "typia.createAssert",
399
- path: _path + ".references[" + _index18 + "]",
361
+ path: _path + ".references[" + _index16 + "]",
400
362
  expected: "number",
401
363
  value: elem
402
364
  }, _errorFactory)) || _assertGuard(_exceptionable, {
@@ -409,88 +371,8 @@ const assertManifest = (() => {
409
371
  path: _path + "[\"import\"]",
410
372
  expected: "(boolean | undefined)",
411
373
  value: input["import"]
412
- }, _errorFactory)) && (void 0 === input.dependencies || ("object" === typeof input.dependencies && null !== input.dependencies && false === Array.isArray(input.dependencies) || _assertGuard(_exceptionable, {
413
- method: "typia.createAssert",
414
- path: _path + ".dependencies",
415
- expected: "(Dependencies | undefined)",
416
- value: input.dependencies
417
- }, _errorFactory)) && _ao4(input.dependencies, _path + ".dependencies", _exceptionable) || _assertGuard(_exceptionable, {
418
- method: "typia.createAssert",
419
- path: _path + ".dependencies",
420
- expected: "(Dependencies | undefined)",
421
- value: input.dependencies
422
- }, _errorFactory)) && (void 0 === input.devDependencies || ("object" === typeof input.devDependencies && null !== input.devDependencies && false === Array.isArray(input.devDependencies) || _assertGuard(_exceptionable, {
423
- method: "typia.createAssert",
424
- path: _path + ".devDependencies",
425
- expected: "(Dependencies | undefined)",
426
- value: input.devDependencies
427
- }, _errorFactory)) && _ao4(input.devDependencies, _path + ".devDependencies", _exceptionable) || _assertGuard(_exceptionable, {
428
- method: "typia.createAssert",
429
- path: _path + ".devDependencies",
430
- expected: "(Dependencies | undefined)",
431
- value: input.devDependencies
432
- }, _errorFactory));
433
- const _ao7 = (input, _path, _exceptionable = true) => (void 0 === input.dependencies || ("object" === typeof input.dependencies && null !== input.dependencies && false === Array.isArray(input.dependencies) || _assertGuard(_exceptionable, {
434
- method: "typia.createAssert",
435
- path: _path + ".dependencies",
436
- expected: "(Dependencies | undefined)",
437
- value: input.dependencies
438
- }, _errorFactory)) && _ao4(input.dependencies, _path + ".dependencies", _exceptionable) || _assertGuard(_exceptionable, {
439
- method: "typia.createAssert",
440
- path: _path + ".dependencies",
441
- expected: "(Dependencies | undefined)",
442
- value: input.dependencies
443
- }, _errorFactory)) && (void 0 === input.devDependencies || ("object" === typeof input.devDependencies && null !== input.devDependencies && false === Array.isArray(input.devDependencies) || _assertGuard(_exceptionable, {
444
- method: "typia.createAssert",
445
- path: _path + ".devDependencies",
446
- expected: "(Dependencies | undefined)",
447
- value: input.devDependencies
448
- }, _errorFactory)) && _ao4(input.devDependencies, _path + ".devDependencies", _exceptionable) || _assertGuard(_exceptionable, {
449
- method: "typia.createAssert",
450
- path: _path + ".devDependencies",
451
- expected: "(Dependencies | undefined)",
452
- value: input.devDependencies
453
- }, _errorFactory)) && (void 0 === input.imports || (Array.isArray(input.imports) || _assertGuard(_exceptionable, {
454
- method: "typia.createAssert",
455
- path: _path + ".imports",
456
- expected: "(Array<ManifestImport> | undefined)",
457
- value: input.imports
458
- }, _errorFactory)) && input.imports.every((elem, _index19) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
459
- method: "typia.createAssert",
460
- path: _path + ".imports[" + _index19 + "]",
461
- expected: "ManifestImport",
462
- value: elem
463
- }, _errorFactory)) && _ao5(elem, _path + ".imports[" + _index19 + "]", _exceptionable) || _assertGuard(_exceptionable, {
464
- method: "typia.createAssert",
465
- path: _path + ".imports[" + _index19 + "]",
466
- expected: "ManifestImport",
467
- value: elem
468
- }, _errorFactory)) || _assertGuard(_exceptionable, {
469
- method: "typia.createAssert",
470
- path: _path + ".imports",
471
- expected: "(Array<ManifestImport> | undefined)",
472
- value: input.imports
473
- }, _errorFactory)) && (void 0 === input.stmtInfos || (Array.isArray(input.stmtInfos) || _assertGuard(_exceptionable, {
474
- method: "typia.createAssert",
475
- path: _path + ".stmtInfos",
476
- expected: "(Array<StmtInfo> | undefined)",
477
- value: input.stmtInfos
478
- }, _errorFactory)) && input.stmtInfos.every((elem, _index20) => ("object" === typeof elem && null !== elem || _assertGuard(_exceptionable, {
479
- method: "typia.createAssert",
480
- path: _path + ".stmtInfos[" + _index20 + "]",
481
- expected: "StmtInfo",
482
- value: elem
483
- }, _errorFactory)) && _ao6(elem, _path + ".stmtInfos[" + _index20 + "]", _exceptionable) || _assertGuard(_exceptionable, {
484
- method: "typia.createAssert",
485
- path: _path + ".stmtInfos[" + _index20 + "]",
486
- expected: "StmtInfo",
487
- value: elem
488
- }, _errorFactory)) || _assertGuard(_exceptionable, {
489
- method: "typia.createAssert",
490
- path: _path + ".stmtInfos",
491
- expected: "(Array<StmtInfo> | undefined)",
492
- value: input.stmtInfos
493
- }, _errorFactory)) && ("route-handler" === input.type || _assertGuard(_exceptionable, {
374
+ }, _errorFactory)) && _ap1(input, _path, _exceptionable) && _ap2(input, _path, _exceptionable);
375
+ const _ao8 = (input, _path, _exceptionable = true) => _ao4(input, _path, _exceptionable) && ("route-handler" === input.type || _assertGuard(_exceptionable, {
494
376
  method: "typia.createAssert",
495
377
  path: _path + ".type",
496
378
  expected: "\"route-handler\"",
@@ -502,15 +384,37 @@ const assertManifest = (() => {
502
384
  value: input.route
503
385
  }, _errorFactory));
504
386
  const _au0 = (input, _path, _exceptionable = true) => (() => {
505
- if ("components" === input.type || "lib" === input.type || "css" === input.type || "ui" === input.type || "layout" === input.type) return _ao3(input, _path, _exceptionable);
506
- else if ("route-handler" === input.type) return _ao7(input, _path, _exceptionable);
387
+ if ("components" === input.type || "css" === input.type || "layout" === input.type || "lib" === input.type || "ui" === input.type) return _ao3(input, _path, _exceptionable);
388
+ else if ("route-handler" === input.type) return _ao8(input, _path, _exceptionable);
507
389
  else return _assertGuard(_exceptionable, {
508
390
  method: "typia.createAssert",
509
391
  path: _path,
510
- expected: "(BaseFile & { type: \"components\" | \"lib\" | \"css\" | \"ui\" | \"layout\"; target?: string | undefined; } | BaseFile & { type: \"route-handler\"; route: string; })",
392
+ expected: _ae0,
511
393
  value: input
512
394
  }, _errorFactory);
513
395
  })();
396
+ const _io0 = (input) => _ip0(input) && Array.isArray(input.components) && input.components.every((elem) => "object" === typeof elem && null !== elem && _io1(elem)) && "object" === typeof input.files && null !== input.files && false === Array.isArray(input.files) && _io2(input.files) && (void 0 === input.registries || Array.isArray(input.registries) && input.registries.every((elem) => "string" === typeof elem));
397
+ const _io1 = (input) => _ip0(input) && (void 0 === input.title || "string" === typeof input.title) && (void 0 === input.description || "string" === typeof input.description) && (void 0 === input.unlisted || "boolean" === typeof input.unlisted) && Array.isArray(input.files) && input.files.every((elem) => "string" === typeof elem);
398
+ const _io2 = (input) => Object.keys(input).every((key) => {
399
+ const value = input[key];
400
+ if (void 0 === value) return true;
401
+ return "object" === typeof value && null !== value && _iu0(value);
402
+ });
403
+ const _io3 = (input) => _io4(input) && ("components" === input.type || "css" === input.type || "layout" === input.type || "lib" === input.type || "ui" === input.type) && (void 0 === input.target || "string" === typeof input.target);
404
+ const _io4 = (input) => _ip1(input) && _ip2(input) && (void 0 === input.imports || Array.isArray(input.imports) && input.imports.every((elem) => "object" === typeof elem && null !== elem && _io6(elem))) && (void 0 === input.stmtInfos || Array.isArray(input.stmtInfos) && input.stmtInfos.every((elem) => "object" === typeof elem && null !== elem && _io7(elem)));
405
+ const _io5 = (input) => Object.keys(input).every((key) => {
406
+ const value = input[key];
407
+ if (void 0 === value) return true;
408
+ return null === value || "string" === typeof value;
409
+ });
410
+ const _io6 = (input) => "number" === typeof input.start && "string" === typeof input.id && (void 0 === input.bindings || Array.isArray(input.bindings) && input.bindings.every((elem) => "string" === typeof elem)) && (void 0 === input["package"] || "string" === typeof input["package"]);
411
+ const _io7 = (input) => "number" === typeof input.end && (void 0 === input.declares || Array.isArray(input.declares) && input.declares.every((elem) => "string" === typeof elem)) && (void 0 === input.references || Array.isArray(input.references) && input.references.every((elem) => "number" === typeof elem)) && (void 0 === input["import"] || "boolean" === typeof input["import"]) && _ip1(input) && _ip2(input);
412
+ const _io8 = (input) => _io4(input) && "route-handler" === input.type && "string" === typeof input.route;
413
+ const _iu0 = (input) => (() => {
414
+ if ("components" === input.type || "css" === input.type || "layout" === input.type || "lib" === input.type || "ui" === input.type) return _io3(input);
415
+ else if ("route-handler" === input.type) return _io8(input);
416
+ else return false;
417
+ })();
514
418
  const __is = (input) => "object" === typeof input && null !== input && _io0(input);
515
419
  let _errorFactory;
516
420
  return (input, errorFactory) => {
@@ -531,7 +435,7 @@ const assertManifest = (() => {
531
435
  return input;
532
436
  };
533
437
  })();
534
- // ../../node_modules/.pnpm/fuma-cli@0.3.3/node_modules/fuma-cli/dist/registry/connector.js
438
+ // ../../node_modules/.pnpm/fuma-cli@0.3.4/node_modules/fuma-cli/dist/registry/connector.js
535
439
  var HttpRegistryConnector = class {
536
440
  baseUrl;
537
441
  constructor(baseUrl) {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { t as create } from "./src-NCKOZrb-.js";
1
+ export { t as create } from "./src-CRg_0mOO.js";
@@ -1 +1 @@
1
- export { t as feature } from "../feature-BvpaGt8l.js";
1
+ export { t as feature } from "../feature-CSPlEscc.js";
@@ -1,4 +1,4 @@
1
- import { i as templates, r as sourceDir, t as depVersions } from "./constants-nRgiNkFI.js";
1
+ import { i as templates, r as sourceDir, t as depVersions } from "./constants-C2dUvnpd.js";
2
2
  import fs from "node:fs/promises";
3
3
  import path, { join } from "node:path";
4
4
  import { x } from "tinyexec";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fumadocs-app",
3
- "version": "16.2.33",
3
+ "version": "16.3.0",
4
4
  "description": "Create a new documentation site with Fumadocs",
5
5
  "keywords": [
6
6
  "Docs",
@@ -40,22 +40,21 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@clack/prompts": "^1.8.1",
43
- "@fumadocs/cli": "1.8.4",
43
+ "@fumadocs/cli": "1.9.0",
44
44
  "cac": "^7.1.0",
45
- "picocolors": "^1.1.1",
46
45
  "tinyexec": "^1.3.1"
47
46
  },
48
47
  "devDependencies": {
49
48
  "@types/cross-spawn": "^6.0.6",
50
49
  "@types/node": "26.6.6",
51
- "fuma-cli": "^0.3.3",
50
+ "fuma-cli": "^0.3.4",
52
51
  "tinyglobby": "^0.2.17",
53
52
  "tsconfig": "0.0.0",
54
53
  "tsdown": "0.23.7",
55
54
  "typescript": "^7.0.2"
56
55
  },
57
56
  "engines": {
58
- "node": ">=20"
57
+ "node": "^22.18.0 || >=24.11.0"
59
58
  },
60
59
  "scripts": {
61
60
  "build": "pnpm run sync && tsdown",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-next",
3
- "version": "0.0.58",
3
+ "version": "0.0.59",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "next build",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-next-static",
3
- "version": "0.0.58",
3
+ "version": "0.0.59",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "next build",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-astro",
3
- "version": "0.0.53",
3
+ "version": "0.0.54",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {