@fumadocs/cli 1.5.0 → 1.6.1
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/ai-C19ZOP53.js +100 -0
- package/dist/ai-C19ZOP53.js.map +1 -0
- package/dist/all-BBf7I8hG.js +27 -0
- package/dist/all-BBf7I8hG.js.map +1 -0
- package/dist/codemod/index.d.ts +2 -0
- package/dist/codemod/index.js +2 -0
- package/dist/codemod-auol-p4R.js +404 -0
- package/dist/codemod-auol-p4R.js.map +1 -0
- package/dist/config-Bfg4yG8S.d.ts +54 -0
- package/dist/config-Bfg4yG8S.d.ts.map +1 -0
- package/dist/config-Bw0kmF01.js +97 -0
- package/dist/config-Bw0kmF01.js.map +1 -0
- package/dist/config.d.ts +2 -52
- package/dist/config.js +1 -72
- package/dist/docs--WqEHTyl.js +738 -0
- package/dist/docs--WqEHTyl.js.map +1 -0
- package/dist/epub-jc_2B886.js +52 -0
- package/dist/epub-jc_2B886.js.map +1 -0
- package/dist/features/ai.d.ts +25 -0
- package/dist/features/ai.d.ts.map +1 -0
- package/dist/features/ai.js +2 -0
- package/dist/features/all.d.ts +5 -0
- package/dist/features/all.d.ts.map +1 -0
- package/dist/features/all.js +2 -0
- package/dist/features/docs/index.d.ts +10 -0
- package/dist/features/docs/index.d.ts.map +1 -0
- package/dist/features/docs/index.js +2 -0
- package/dist/features/epub.d.ts +5 -0
- package/dist/features/epub.d.ts.map +1 -0
- package/dist/features/epub.js +2 -0
- package/dist/features/feedback.d.ts +5 -0
- package/dist/features/feedback.d.ts.map +1 -0
- package/dist/features/feedback.js +2 -0
- package/dist/features/index.d.ts +2 -0
- package/dist/features/index.js +2 -0
- package/dist/features/lint.d.ts +7 -0
- package/dist/features/lint.d.ts.map +1 -0
- package/dist/features/lint.js +2 -0
- package/dist/features/llms.d.ts +27 -0
- package/dist/features/llms.d.ts.map +1 -0
- package/dist/features/llms.js +2 -0
- package/dist/features/mcp.d.ts +9 -0
- package/dist/features/mcp.d.ts.map +1 -0
- package/dist/features/mcp.js +2 -0
- package/dist/features/og.d.ts +8 -0
- package/dist/features/og.d.ts.map +1 -0
- package/dist/features/og.js +2 -0
- package/dist/features/search.d.ts +84 -0
- package/dist/features/search.d.ts.map +1 -0
- package/dist/features/search.js +2 -0
- package/dist/features/utils.d.ts +2 -0
- package/dist/features/utils.js +2 -0
- package/dist/features/webmcp.d.ts +12 -0
- package/dist/features/webmcp.d.ts.map +1 -0
- package/dist/features/webmcp.js +2 -0
- package/dist/features-CXFCgOWD.js +132 -0
- package/dist/features-CXFCgOWD.js.map +1 -0
- package/dist/feedback-Brj092vC.js +37 -0
- package/dist/feedback-Brj092vC.js.map +1 -0
- package/dist/fs-D6J9dOEx.js +14 -0
- package/dist/fs-D6J9dOEx.js.map +1 -0
- package/dist/index-Ck0EPdgu.d.ts +126 -0
- package/dist/index-Ck0EPdgu.d.ts.map +1 -0
- package/dist/index-Cs7hw2un.d.ts +76 -0
- package/dist/index-Cs7hw2un.d.ts.map +1 -0
- package/dist/index-DI66DoV8.d.ts +64 -0
- package/dist/index-DI66DoV8.d.ts.map +1 -0
- package/dist/index.js +155 -139
- package/dist/index.js.map +1 -1
- package/dist/{installer-Ci3Hf9it.js → installer-CzhVfs7i.js} +81 -8
- package/dist/installer-CzhVfs7i.js.map +1 -0
- package/dist/lint-zkXUULgO.js +137 -0
- package/dist/lint-zkXUULgO.js.map +1 -0
- package/dist/llms-Br0RJXXg.js +228 -0
- package/dist/llms-Br0RJXXg.js.map +1 -0
- package/dist/mcp-Ce_W93we.js +67 -0
- package/dist/mcp-Ce_W93we.js.map +1 -0
- package/dist/og-LFlX1Bl4.js +142 -0
- package/dist/og-LFlX1Bl4.js.map +1 -0
- package/dist/project/index.d.ts +2 -0
- package/dist/project/index.js +2 -0
- package/dist/project-DwRVTm4p.js +110 -0
- package/dist/project-DwRVTm4p.js.map +1 -0
- package/dist/registry/installer.d.ts +4 -5
- package/dist/registry/installer.d.ts.map +1 -1
- package/dist/registry/installer.js +1 -1
- package/dist/schema.json +1 -1
- package/dist/search-WfSdiGx-.js +381 -0
- package/dist/search-WfSdiGx-.js.map +1 -0
- package/dist/utils-CxJ7kw39.d.ts +43 -0
- package/dist/utils-CxJ7kw39.d.ts.map +1 -0
- package/dist/utils-DbMe7h6c.js +98 -0
- package/dist/utils-DbMe7h6c.js.map +1 -0
- package/dist/webmcp-DyTLrsXL.js +135 -0
- package/dist/webmcp-DyTLrsXL.js.map +1 -0
- package/package.json +28 -7
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/installer-Ci3Hf9it.js.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
//#region src/config.d.ts
|
|
3
|
+
declare const frameworks: readonly ['next', 'astro', 'waku', 'react-router', 'tanstack-start'];
|
|
4
|
+
type Framework = (typeof frameworks)[number];
|
|
5
|
+
declare function createConfigSchema(cwd?: string): Promise<z.ZodObject<{
|
|
6
|
+
$schema: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
7
|
+
aliases: z.ZodDefault<z.ZodObject<{
|
|
8
|
+
uiDir: z.ZodDefault<z.ZodString>;
|
|
9
|
+
componentsDir: z.ZodDefault<z.ZodString>;
|
|
10
|
+
layoutDir: z.ZodDefault<z.ZodString>;
|
|
11
|
+
cssDir: z.ZodDefault<z.ZodString>;
|
|
12
|
+
libDir: z.ZodDefault<z.ZodString>;
|
|
13
|
+
utils: z.ZodDefault<z.ZodString> | z.ZodOptional<z.ZodString>;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
baseDir: z.ZodDefault<z.ZodString>;
|
|
16
|
+
uiLibrary: z.ZodDefault<z.ZodEnum<{
|
|
17
|
+
"base-ui": "base-ui";
|
|
18
|
+
"radix-ui": "radix-ui";
|
|
19
|
+
}>>;
|
|
20
|
+
framework: z.ZodDefault<z.ZodLiteral<"astro" | "next" | "react-router" | "tanstack-start" | "waku">>;
|
|
21
|
+
commands: z.ZodDefault<z.ZodObject<{
|
|
22
|
+
format: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
type ConfigSchema = Awaited<ReturnType<typeof createConfigSchema>>;
|
|
26
|
+
type ConfigInput = z.input<ConfigSchema>;
|
|
27
|
+
type LoadedConfig = z.output<ConfigSchema>;
|
|
28
|
+
declare function createOrLoadConfig(file?: string): Promise<LoadedConfig>;
|
|
29
|
+
/**
|
|
30
|
+
* Write new config, skip if a config already exists
|
|
31
|
+
*
|
|
32
|
+
* @returns the created config, `undefined` if not created
|
|
33
|
+
*/
|
|
34
|
+
declare function initConfig(file?: string): Promise<LoadedConfig | undefined>;
|
|
35
|
+
declare function getDefaultConfig(cwd?: string): Promise<{
|
|
36
|
+
$schema?: string | undefined;
|
|
37
|
+
aliases: {
|
|
38
|
+
uiDir: string;
|
|
39
|
+
componentsDir: string;
|
|
40
|
+
layoutDir: string;
|
|
41
|
+
cssDir: string;
|
|
42
|
+
libDir: string;
|
|
43
|
+
utils: string | undefined;
|
|
44
|
+
};
|
|
45
|
+
baseDir: string;
|
|
46
|
+
uiLibrary: "base-ui" | "radix-ui";
|
|
47
|
+
framework: "astro" | "next" | "react-router" | "tanstack-start" | "waku";
|
|
48
|
+
commands: {
|
|
49
|
+
format?: string | undefined;
|
|
50
|
+
};
|
|
51
|
+
}>;
|
|
52
|
+
//#endregion
|
|
53
|
+
export { createOrLoadConfig as a, createConfigSchema as i, Framework as n, getDefaultConfig as o, LoadedConfig as r, initConfig as s, ConfigInput as t };
|
|
54
|
+
//# sourceMappingURL=config-Bfg4yG8S.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-Bfg4yG8S.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;cAMM;KACM,oBAAoB;iBAwBV,mBAAmB,eAAmB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;GAgD3D,EAAA,KAAA;KAEI,eAAe,QAAQ,kBAAkB;KAElC,cAAc,EAAE,MAAM;KACtB,eAAe,EAAE,OAAO;iBAEd,mBAAmB,gBAAsB,QAAQ;;;;;;iBAejD,WAAW,gBAAsB,QAAQ;iBAezC,iBAAiB,eAAY"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { detectFramework } from "fuma-cli/detect";
|
|
6
|
+
//#region src/config.ts
|
|
7
|
+
const frameworks = [
|
|
8
|
+
"next",
|
|
9
|
+
"astro",
|
|
10
|
+
"waku",
|
|
11
|
+
"react-router",
|
|
12
|
+
"tanstack-start"
|
|
13
|
+
];
|
|
14
|
+
function isSupportedFramework(v) {
|
|
15
|
+
return frameworks.includes(v);
|
|
16
|
+
}
|
|
17
|
+
/** directories from shadcn's `components.json`, so components are installed at the same place */
|
|
18
|
+
async function readShadcnAliases(cwd) {
|
|
19
|
+
const content = await fs.readFile(path.join(cwd, "components.json"), "utf-8").catch(() => null);
|
|
20
|
+
if (!content) return {};
|
|
21
|
+
const out = {};
|
|
22
|
+
let aliases = {};
|
|
23
|
+
try {
|
|
24
|
+
aliases = JSON.parse(content).aliases ?? {};
|
|
25
|
+
} catch {
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
for (const [key, alias] of Object.entries(aliases)) if (typeof alias === "string") out[key] = `.${alias.slice(alias.indexOf("/"))}`;
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
async function createConfigSchema(cwd = process.cwd()) {
|
|
32
|
+
const shadcn = await readShadcnAliases(cwd);
|
|
33
|
+
const defaultAliases = {
|
|
34
|
+
uiDir: shadcn.ui ?? "./components/ui",
|
|
35
|
+
componentsDir: shadcn.components ?? "./components",
|
|
36
|
+
layoutDir: "./layouts",
|
|
37
|
+
cssDir: "./styles",
|
|
38
|
+
libDir: shadcn.lib ?? "./lib",
|
|
39
|
+
utils: shadcn.utils
|
|
40
|
+
};
|
|
41
|
+
let framework = await detectFramework(cwd);
|
|
42
|
+
if (!isSupportedFramework(framework)) framework = "next";
|
|
43
|
+
return z.object({
|
|
44
|
+
$schema: z.string().default("node_modules/@fumadocs/cli/dist/schema.json").optional(),
|
|
45
|
+
aliases: z.object({
|
|
46
|
+
uiDir: z.string().default(defaultAliases.uiDir),
|
|
47
|
+
componentsDir: z.string().default(defaultAliases.componentsDir),
|
|
48
|
+
layoutDir: z.string().default(defaultAliases.layoutDir),
|
|
49
|
+
cssDir: z.string().default(defaultAliases.cssDir),
|
|
50
|
+
libDir: z.string().default(defaultAliases.libDir),
|
|
51
|
+
/** module exporting `cn`, installed components import it instead of `lib/cn.ts` */
|
|
52
|
+
utils: shadcn.utils ? z.string().default(shadcn.utils) : z.string().optional()
|
|
53
|
+
}).default(defaultAliases),
|
|
54
|
+
baseDir: z.string().default(() => {
|
|
55
|
+
if (framework === "react-router") return "app";
|
|
56
|
+
const routes = {
|
|
57
|
+
next: "app",
|
|
58
|
+
waku: "pages",
|
|
59
|
+
"tanstack-start": "routes"
|
|
60
|
+
}[framework] ?? "";
|
|
61
|
+
if (existsSync(path.resolve(cwd, "src", routes))) return "src";
|
|
62
|
+
if (routes && existsSync(path.resolve(cwd, routes))) return "";
|
|
63
|
+
return existsSync(path.resolve(cwd, "src")) ? "src" : "";
|
|
64
|
+
}),
|
|
65
|
+
uiLibrary: z.enum(["radix-ui", "base-ui"]).default("base-ui"),
|
|
66
|
+
framework: z.literal(frameworks).default(framework),
|
|
67
|
+
commands: z.object({
|
|
68
|
+
/**
|
|
69
|
+
* command to format output code automatically
|
|
70
|
+
*/
|
|
71
|
+
format: z.string().optional() }).default({})
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async function createOrLoadConfig(file = "./cli.json") {
|
|
75
|
+
const inited = await initConfig(file);
|
|
76
|
+
if (inited) return inited;
|
|
77
|
+
const content = await fs.readFile(file, "utf-8");
|
|
78
|
+
return (await createConfigSchema()).parse(JSON.parse(content));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Write new config, skip if a config already exists
|
|
82
|
+
*
|
|
83
|
+
* @returns the created config, `undefined` if not created
|
|
84
|
+
*/
|
|
85
|
+
async function initConfig(file = "./cli.json") {
|
|
86
|
+
if (await fs.stat(file).then(() => true).catch(() => false)) return;
|
|
87
|
+
const defaultConfig = await getDefaultConfig();
|
|
88
|
+
await fs.writeFile(file, JSON.stringify(defaultConfig, null, 2));
|
|
89
|
+
return defaultConfig;
|
|
90
|
+
}
|
|
91
|
+
async function getDefaultConfig(cwd) {
|
|
92
|
+
return (await createConfigSchema(cwd)).parse({});
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { initConfig as i, createOrLoadConfig as n, getDefaultConfig as r, createConfigSchema as t };
|
|
96
|
+
|
|
97
|
+
//# sourceMappingURL=config-Bw0kmF01.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-Bw0kmF01.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport { z } from 'zod';\nimport { existsSync } from 'node:fs';\nimport path from 'node:path';\nimport { detectFramework } from 'fuma-cli/detect';\n\nconst frameworks = ['next', 'astro', 'waku', 'react-router', 'tanstack-start'] as const;\nexport type Framework = (typeof frameworks)[number];\n\nfunction isSupportedFramework(v: string): v is Framework {\n return frameworks.includes(v as Framework);\n}\n\n/** directories from shadcn's `components.json`, so components are installed at the same place */\nasync function readShadcnAliases(cwd: string): Promise<Record<string, string>> {\n const content = await fs.readFile(path.join(cwd, 'components.json'), 'utf-8').catch(() => null);\n if (!content) return {};\n const out: Record<string, string> = {};\n let aliases: Record<string, unknown> = {};\n try {\n aliases = JSON.parse(content).aliases ?? {};\n } catch {\n return out;\n }\n for (const [key, alias] of Object.entries(aliases)) {\n // e.g. `@/components/ui` -> `./components/ui`\n if (typeof alias === 'string') out[key] = `.${alias.slice(alias.indexOf('/'))}`;\n }\n return out;\n}\n\nexport async function createConfigSchema(cwd = process.cwd()) {\n const shadcn = await readShadcnAliases(cwd);\n const defaultAliases = {\n uiDir: shadcn.ui ?? './components/ui',\n componentsDir: shadcn.components ?? './components',\n layoutDir: './layouts',\n cssDir: './styles',\n libDir: shadcn.lib ?? './lib',\n utils: shadcn.utils,\n };\n\n let framework = await detectFramework(cwd);\n if (!isSupportedFramework(framework)) framework = 'next';\n\n return z.object({\n $schema: z.string().default('node_modules/@fumadocs/cli/dist/schema.json').optional(),\n aliases: z\n .object({\n uiDir: z.string().default(defaultAliases.uiDir),\n componentsDir: z.string().default(defaultAliases.componentsDir),\n layoutDir: z.string().default(defaultAliases.layoutDir),\n cssDir: z.string().default(defaultAliases.cssDir),\n libDir: z.string().default(defaultAliases.libDir),\n /** module exporting `cn`, installed components import it instead of `lib/cn.ts` */\n utils: shadcn.utils ? z.string().default(shadcn.utils) : z.string().optional(),\n })\n .default(defaultAliases),\n\n baseDir: z.string().default(() => {\n if (framework === 'react-router') return 'app';\n // the routes directory of the framework decides whether app code lives in `src`\n const routes = { next: 'app', waku: 'pages', 'tanstack-start': 'routes' }[framework] ?? '';\n if (existsSync(path.resolve(cwd, 'src', routes))) return 'src';\n if (routes && existsSync(path.resolve(cwd, routes))) return '';\n return existsSync(path.resolve(cwd, 'src')) ? 'src' : '';\n }),\n uiLibrary: z.enum(['radix-ui', 'base-ui']).default('base-ui'),\n framework: z.literal(frameworks).default(framework),\n\n commands: z\n .object({\n /**\n * command to format output code automatically\n */\n format: z.string().optional(),\n })\n .default({}),\n });\n}\n\ntype ConfigSchema = Awaited<ReturnType<typeof createConfigSchema>>;\n\nexport type ConfigInput = z.input<ConfigSchema>;\nexport type LoadedConfig = z.output<ConfigSchema>;\n\nexport async function createOrLoadConfig(file = './cli.json'): Promise<LoadedConfig> {\n const inited = await initConfig(file);\n if (inited) return inited;\n\n const content = await fs.readFile(file, 'utf-8');\n const configSchema = await createConfigSchema();\n\n return configSchema.parse(JSON.parse(content));\n}\n\n/**\n * Write new config, skip if a config already exists\n *\n * @returns the created config, `undefined` if not created\n */\nexport async function initConfig(file = './cli.json'): Promise<LoadedConfig | undefined> {\n if (\n await fs\n .stat(file)\n .then(() => true)\n .catch(() => false)\n ) {\n return;\n }\n\n const defaultConfig = await getDefaultConfig();\n await fs.writeFile(file, JSON.stringify(defaultConfig, null, 2));\n return defaultConfig;\n}\n\nexport async function getDefaultConfig(cwd?: string) {\n const schema = await createConfigSchema(cwd);\n return schema.parse({} satisfies ConfigInput);\n}\n"],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,52 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
declare const frameworks: readonly ["next", "astro", "waku", "react-router", "tanstack-start"];
|
|
4
|
-
type Framework = (typeof frameworks)[number];
|
|
5
|
-
declare function createConfigSchema(cwd?: any): Promise<z.ZodObject<{
|
|
6
|
-
$schema: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
7
|
-
aliases: z.ZodDefault<z.ZodObject<{
|
|
8
|
-
uiDir: z.ZodDefault<z.ZodString>;
|
|
9
|
-
componentsDir: z.ZodDefault<z.ZodString>;
|
|
10
|
-
layoutDir: z.ZodDefault<z.ZodString>;
|
|
11
|
-
cssDir: z.ZodDefault<z.ZodString>;
|
|
12
|
-
libDir: z.ZodDefault<z.ZodString>;
|
|
13
|
-
}, z.core.$strip>>;
|
|
14
|
-
baseDir: z.ZodDefault<z.ZodString>;
|
|
15
|
-
uiLibrary: z.ZodDefault<z.ZodEnum<{
|
|
16
|
-
"radix-ui": "radix-ui";
|
|
17
|
-
"base-ui": "base-ui";
|
|
18
|
-
}>>;
|
|
19
|
-
framework: z.ZodDefault<z.ZodLiteral<"next" | "astro" | "waku" | "react-router" | "tanstack-start">>;
|
|
20
|
-
commands: z.ZodDefault<z.ZodObject<{
|
|
21
|
-
format: z.ZodOptional<z.ZodString>;
|
|
22
|
-
}, z.core.$strip>>;
|
|
23
|
-
}, z.core.$strip>>;
|
|
24
|
-
type ConfigSchema = Awaited<ReturnType<typeof createConfigSchema>>;
|
|
25
|
-
type ConfigInput = z.input<ConfigSchema>;
|
|
26
|
-
type LoadedConfig = z.output<ConfigSchema>;
|
|
27
|
-
declare function createOrLoadConfig(file?: string): Promise<LoadedConfig>;
|
|
28
|
-
/**
|
|
29
|
-
* Write new config, skip if a config already exists
|
|
30
|
-
*
|
|
31
|
-
* @returns the created config, `undefined` if not created
|
|
32
|
-
*/
|
|
33
|
-
declare function initConfig(file?: string): Promise<LoadedConfig | undefined>;
|
|
34
|
-
declare function getDefaultConfig(cwd?: string): Promise<{
|
|
35
|
-
aliases: {
|
|
36
|
-
uiDir: string;
|
|
37
|
-
componentsDir: string;
|
|
38
|
-
layoutDir: string;
|
|
39
|
-
cssDir: string;
|
|
40
|
-
libDir: string;
|
|
41
|
-
};
|
|
42
|
-
baseDir: string;
|
|
43
|
-
uiLibrary: "radix-ui" | "base-ui";
|
|
44
|
-
framework: "next" | "astro" | "waku" | "react-router" | "tanstack-start";
|
|
45
|
-
commands: {
|
|
46
|
-
format?: string | undefined;
|
|
47
|
-
};
|
|
48
|
-
$schema?: string | undefined;
|
|
49
|
-
}>;
|
|
50
|
-
//#endregion
|
|
51
|
-
export { ConfigInput, Framework, LoadedConfig, createConfigSchema, createOrLoadConfig, getDefaultConfig, initConfig };
|
|
52
|
-
//# sourceMappingURL=config.d.ts.map
|
|
1
|
+
import { a as createOrLoadConfig, i as createConfigSchema, n as Framework, o as getDefaultConfig, r as LoadedConfig, s as initConfig, t as ConfigInput } from "./config-Bfg4yG8S.js";
|
|
2
|
+
export { ConfigInput, Framework, LoadedConfig, createConfigSchema, createOrLoadConfig, getDefaultConfig, initConfig };
|
package/dist/config.js
CHANGED
|
@@ -1,73 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { existsSync } from "node:fs";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { detectFramework } from "fuma-cli/detect";
|
|
6
|
-
//#region src/config.ts
|
|
7
|
-
const frameworks = [
|
|
8
|
-
"next",
|
|
9
|
-
"astro",
|
|
10
|
-
"waku",
|
|
11
|
-
"react-router",
|
|
12
|
-
"tanstack-start"
|
|
13
|
-
];
|
|
14
|
-
function isSupportedFramework(v) {
|
|
15
|
-
return frameworks.includes(v);
|
|
16
|
-
}
|
|
17
|
-
async function createConfigSchema(cwd = process.cwd()) {
|
|
18
|
-
const defaultAliases = {
|
|
19
|
-
uiDir: "./components/ui",
|
|
20
|
-
componentsDir: "./components",
|
|
21
|
-
layoutDir: "./layouts",
|
|
22
|
-
cssDir: "./styles",
|
|
23
|
-
libDir: "./lib"
|
|
24
|
-
};
|
|
25
|
-
let framework = await detectFramework(cwd);
|
|
26
|
-
if (!isSupportedFramework(framework)) framework = "next";
|
|
27
|
-
return z.object({
|
|
28
|
-
$schema: z.string().default("node_modules/@fumadocs/cli/dist/schema.json").optional(),
|
|
29
|
-
aliases: z.object({
|
|
30
|
-
uiDir: z.string().default(defaultAliases.uiDir),
|
|
31
|
-
componentsDir: z.string().default(defaultAliases.uiDir),
|
|
32
|
-
layoutDir: z.string().default(defaultAliases.layoutDir),
|
|
33
|
-
cssDir: z.string().default(defaultAliases.componentsDir),
|
|
34
|
-
libDir: z.string().default(defaultAliases.libDir)
|
|
35
|
-
}).default(defaultAliases),
|
|
36
|
-
baseDir: z.string().default(() => {
|
|
37
|
-
if (framework === "react-router" && existsSync(path.resolve(cwd, "app"))) return "app";
|
|
38
|
-
if (existsSync(path.resolve(cwd, "src"))) return "src";
|
|
39
|
-
return "";
|
|
40
|
-
}),
|
|
41
|
-
uiLibrary: z.enum(["radix-ui", "base-ui"]).default("base-ui"),
|
|
42
|
-
framework: z.literal(frameworks).default(framework),
|
|
43
|
-
commands: z.object({
|
|
44
|
-
/**
|
|
45
|
-
* command to format output code automatically
|
|
46
|
-
*/
|
|
47
|
-
format: z.string().optional() }).default({})
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
async function createOrLoadConfig(file = "./cli.json") {
|
|
51
|
-
const inited = await initConfig(file);
|
|
52
|
-
if (inited) return inited;
|
|
53
|
-
const content = await fs.readFile(file, "utf-8");
|
|
54
|
-
return (await createConfigSchema()).parse(JSON.parse(content));
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Write new config, skip if a config already exists
|
|
58
|
-
*
|
|
59
|
-
* @returns the created config, `undefined` if not created
|
|
60
|
-
*/
|
|
61
|
-
async function initConfig(file = "./cli.json") {
|
|
62
|
-
if (await fs.stat(file).then(() => true).catch(() => false)) return;
|
|
63
|
-
const defaultConfig = await getDefaultConfig();
|
|
64
|
-
await fs.writeFile(file, JSON.stringify(defaultConfig, null, 2));
|
|
65
|
-
return defaultConfig;
|
|
66
|
-
}
|
|
67
|
-
async function getDefaultConfig(cwd) {
|
|
68
|
-
return (await createConfigSchema(cwd)).parse({});
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
1
|
+
import { i as initConfig, n as createOrLoadConfig, r as getDefaultConfig, t as createConfigSchema } from "./config-Bw0kmF01.js";
|
|
71
2
|
export { createConfigSchema, createOrLoadConfig, getDefaultConfig, initConfig };
|
|
72
|
-
|
|
73
|
-
//# sourceMappingURL=config.js.map
|