@fumadocs/cli 1.3.3 → 1.3.4

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.
@@ -3,7 +3,7 @@ import { z } from "zod";
3
3
  //#region src/config.d.ts
4
4
  declare const frameworks: readonly ["next", "waku", "react-router", "tanstack-start"];
5
5
  type Framework = (typeof frameworks)[number];
6
- declare function createConfigSchema(): z.ZodObject<{
6
+ declare function createConfigSchema(cwd?: any): z.ZodObject<{
7
7
  $schema: z.ZodOptional<z.ZodDefault<z.ZodString>>;
8
8
  aliases: z.ZodDefault<z.ZodObject<{
9
9
  uiDir: z.ZodDefault<z.ZodString>;
@@ -32,7 +32,7 @@ declare function createOrLoadConfig(file?: string): Promise<LoadedConfig>;
32
32
  * @returns the created config, `undefined` if not created
33
33
  */
34
34
  declare function initConfig(file?: string): Promise<LoadedConfig | undefined>;
35
- declare function getDefaultConfig(): Promise<{
35
+ declare function getDefaultConfig(cwd?: string): Promise<{
36
36
  aliases: {
37
37
  uiDir: string;
38
38
  componentsDir: string;
@@ -50,4 +50,4 @@ declare function getDefaultConfig(): Promise<{
50
50
  }>;
51
51
  //#endregion
52
52
  export { createOrLoadConfig as a, createConfigSchema as i, Framework as n, getDefaultConfig as o, LoadedConfig as r, initConfig as s, ConfigInput as t };
53
- //# sourceMappingURL=config-Bx-m6awG.d.ts.map
53
+ //# sourceMappingURL=config-BIpj98KJ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BIpj98KJ.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;;cAKM,UAAA;AAAA,KACM,SAAA,WAAoB,UAAA;AAAA,iBAEhB,kBAAA,CAAmB,GAAA,SAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;KA2DjD,YAAA,GAAe,UAAA,QAAkB,kBAAA;AAAA,KAE1B,WAAA,GAAc,CAAA,CAAE,KAAA,CAAM,YAAA;AAAA,KACtB,YAAA,GAAe,CAAA,CAAE,MAAA,CAAO,YAAA;AAAA,iBAEd,kBAAA,CAAmB,IAAA,YAAsB,OAAA,CAAQ,YAAA;;;;;;iBAejD,UAAA,CAAW,IAAA,YAAsB,OAAA,CAAQ,YAAA;AAAA,iBAezC,gBAAA,CAAiB,GAAA,YAAY,OAAA"}
package/dist/config.d.ts CHANGED
@@ -1,2 +1,2 @@
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-Bx-m6awG.js";
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-BIpj98KJ.js";
2
2
  export { ConfigInput, Framework, LoadedConfig, createConfigSchema, createOrLoadConfig, getDefaultConfig, initConfig };
package/dist/config.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import fs from "node:fs/promises";
2
2
  import { z } from "zod";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
+ import path from "node:path";
4
5
  //#region src/config.ts
5
6
  const frameworks = [
6
7
  "next",
@@ -8,7 +9,9 @@ const frameworks = [
8
9
  "react-router",
9
10
  "tanstack-start"
10
11
  ];
11
- function createConfigSchema() {
12
+ function createConfigSchema(cwd = process.cwd()) {
13
+ const srcDir = path.resolve(cwd, "src");
14
+ const packageJsonPath = path.resolve(cwd, "package.json");
12
15
  const defaultAliases = {
13
16
  uiDir: "./components/ui",
14
17
  componentsDir: "./components",
@@ -25,15 +28,15 @@ function createConfigSchema() {
25
28
  cssDir: z.string().default(defaultAliases.componentsDir),
26
29
  libDir: z.string().default(defaultAliases.libDir)
27
30
  }).default(defaultAliases),
28
- baseDir: z.string().default(() => existsSync("./src") ? "src" : ""),
31
+ baseDir: z.string().default(() => existsSync(srcDir) ? "src" : ""),
29
32
  uiLibrary: z.enum(["radix-ui", "base-ui"]).default("radix-ui"),
30
33
  framework: z.literal(frameworks).default(() => {
31
- return detectFrameworkFromPackageJson() ?? "next";
34
+ return detectFrameworkFromPackageJson(packageJsonPath) ?? "next";
32
35
  }),
33
36
  commands: z.object({ format: z.string().optional() }).default({})
34
37
  });
35
38
  }
36
- function detectFrameworkFromPackageJson(pkgPath = "./package.json") {
39
+ function detectFrameworkFromPackageJson(pkgPath) {
37
40
  try {
38
41
  const pkgRaw = readFileSync(pkgPath, "utf-8");
39
42
  const pkg = JSON.parse(pkgRaw);
@@ -66,8 +69,8 @@ async function initConfig(file = "./cli.json") {
66
69
  await fs.writeFile(file, JSON.stringify(defaultConfig, null, 2));
67
70
  return defaultConfig;
68
71
  }
69
- async function getDefaultConfig() {
70
- return createConfigSchema().parse({});
72
+ async function getDefaultConfig(cwd) {
73
+ return createConfigSchema(cwd).parse({});
71
74
  }
72
75
  //#endregion
73
76
  export { createConfigSchema, createOrLoadConfig, getDefaultConfig, initConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport { z } from 'zod';\nimport { existsSync, readFileSync } from 'node:fs';\n\nconst frameworks = ['next', 'waku', 'react-router', 'tanstack-start'] as const;\nexport type Framework = (typeof frameworks)[number];\n\nexport function createConfigSchema() {\n const defaultAliases = {\n uiDir: './components/ui',\n componentsDir: './components',\n layoutDir: './layouts',\n cssDir: './styles',\n libDir: './lib',\n };\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.uiDir),\n layoutDir: z.string().default(defaultAliases.layoutDir),\n cssDir: z.string().default(defaultAliases.componentsDir),\n libDir: z.string().default(defaultAliases.libDir),\n })\n .default(defaultAliases),\n\n baseDir: z.string().default(() => (existsSync('./src') ? 'src' : '')),\n uiLibrary: z.enum(['radix-ui', 'base-ui']).default('radix-ui'),\n framework: z.literal(frameworks).default(() => {\n return detectFrameworkFromPackageJson() ?? 'next';\n }),\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\nfunction detectFrameworkFromPackageJson(pkgPath = './package.json'): Framework | undefined {\n try {\n const pkgRaw = readFileSync(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgRaw);\n\n const deps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n\n if (deps['next']) return 'next';\n if (deps['waku']) return 'waku';\n if (deps['react-router'] || deps['react-router-dom']) return 'react-router';\n if (deps['@tanstack/react-start']) return 'tanstack-start';\n } catch {\n return;\n }\n}\n\ntype ConfigSchema = 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)).toString();\n const configSchema = 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() {\n return createConfigSchema().parse({} satisfies ConfigInput);\n}\n"],"mappings":";;;;AAIA,MAAM,aAAa;CAAC;CAAQ;CAAQ;CAAgB;CAAiB;AAGrE,SAAgB,qBAAqB;CACnC,MAAM,iBAAiB;EACrB,OAAO;EACP,eAAe;EACf,WAAW;EACX,QAAQ;EACR,QAAQ;EACT;AAED,QAAO,EAAE,OAAO;EACd,SAAS,EAAE,QAAQ,CAAC,QAAQ,8CAA8C,CAAC,UAAU;EACrF,SAAS,EACN,OAAO;GACN,OAAO,EAAE,QAAQ,CAAC,QAAQ,eAAe,MAAM;GAC/C,eAAe,EAAE,QAAQ,CAAC,QAAQ,eAAe,MAAM;GACvD,WAAW,EAAE,QAAQ,CAAC,QAAQ,eAAe,UAAU;GACvD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,eAAe,cAAc;GACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,eAAe,OAAO;GAClD,CAAC,CACD,QAAQ,eAAe;EAE1B,SAAS,EAAE,QAAQ,CAAC,cAAe,WAAW,QAAQ,GAAG,QAAQ,GAAI;EACrE,WAAW,EAAE,KAAK,CAAC,YAAY,UAAU,CAAC,CAAC,QAAQ,WAAW;EAC9D,WAAW,EAAE,QAAQ,WAAW,CAAC,cAAc;AAC7C,UAAO,gCAAgC,IAAI;IAC3C;EAEF,UAAU,EACP,OAAO,EAIN,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAC9B,CAAC,CACD,QAAQ,EAAE,CAAC;EACf,CAAC;;AAGJ,SAAS,+BAA+B,UAAU,kBAAyC;AACzF,KAAI;EACF,MAAM,SAAS,aAAa,SAAS,QAAQ;EAC7C,MAAM,MAAM,KAAK,MAAM,OAAO;EAE9B,MAAM,OAAO;GACX,GAAG,IAAI;GACP,GAAG,IAAI;GACR;AAED,MAAI,KAAK,QAAS,QAAO;AACzB,MAAI,KAAK,QAAS,QAAO;AACzB,MAAI,KAAK,mBAAmB,KAAK,oBAAqB,QAAO;AAC7D,MAAI,KAAK,yBAA0B,QAAO;SACpC;AACN;;;AASJ,eAAsB,mBAAmB,OAAO,cAAqC;CACnF,MAAM,SAAS,MAAM,WAAW,KAAK;AACrC,KAAI,OAAQ,QAAO;CAEnB,MAAM,WAAW,MAAM,GAAG,SAAS,KAAK,EAAE,UAAU;AAGpD,QAFqB,oBAAoB,CAErB,MAAM,KAAK,MAAM,QAAQ,CAAC;;;;;;;AAQhD,eAAsB,WAAW,OAAO,cAAiD;AACvF,KACE,MAAM,GACH,KAAK,KAAK,CACV,WAAW,KAAK,CAChB,YAAY,MAAM,CAErB;CAGF,MAAM,gBAAgB,MAAM,kBAAkB;AAC9C,OAAM,GAAG,UAAU,MAAM,KAAK,UAAU,eAAe,MAAM,EAAE,CAAC;AAChE,QAAO;;AAGT,eAAsB,mBAAmB;AACvC,QAAO,oBAAoB,CAAC,MAAM,EAAE,CAAuB"}
1
+ {"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport { z } from 'zod';\nimport { existsSync, readFileSync } from 'node:fs';\nimport path from 'node:path';\n\nconst frameworks = ['next', 'waku', 'react-router', 'tanstack-start'] as const;\nexport type Framework = (typeof frameworks)[number];\n\nexport function createConfigSchema(cwd = process.cwd()) {\n const srcDir = path.resolve(cwd, 'src');\n const packageJsonPath = path.resolve(cwd, 'package.json');\n const defaultAliases = {\n uiDir: './components/ui',\n componentsDir: './components',\n layoutDir: './layouts',\n cssDir: './styles',\n libDir: './lib',\n };\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.uiDir),\n layoutDir: z.string().default(defaultAliases.layoutDir),\n cssDir: z.string().default(defaultAliases.componentsDir),\n libDir: z.string().default(defaultAliases.libDir),\n })\n .default(defaultAliases),\n\n baseDir: z.string().default(() => (existsSync(srcDir) ? 'src' : '')),\n uiLibrary: z.enum(['radix-ui', 'base-ui']).default('radix-ui'),\n framework: z.literal(frameworks).default(() => {\n return detectFrameworkFromPackageJson(packageJsonPath) ?? 'next';\n }),\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\nfunction detectFrameworkFromPackageJson(pkgPath: string): Framework | undefined {\n try {\n const pkgRaw = readFileSync(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgRaw);\n\n const deps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n\n if (deps['next']) return 'next';\n if (deps['waku']) return 'waku';\n if (deps['react-router'] || deps['react-router-dom']) return 'react-router';\n if (deps['@tanstack/react-start']) return 'tanstack-start';\n } catch {\n return;\n }\n}\n\ntype ConfigSchema = 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)).toString();\n const configSchema = 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 return createConfigSchema(cwd).parse({} satisfies ConfigInput);\n}\n"],"mappings":";;;;;AAKA,MAAM,aAAa;CAAC;CAAQ;CAAQ;CAAgB;CAAiB;AAGrE,SAAgB,mBAAmB,MAAM,QAAQ,KAAK,EAAE;CACtD,MAAM,SAAS,KAAK,QAAQ,KAAK,MAAM;CACvC,MAAM,kBAAkB,KAAK,QAAQ,KAAK,eAAe;CACzD,MAAM,iBAAiB;EACrB,OAAO;EACP,eAAe;EACf,WAAW;EACX,QAAQ;EACR,QAAQ;EACT;AAED,QAAO,EAAE,OAAO;EACd,SAAS,EAAE,QAAQ,CAAC,QAAQ,8CAA8C,CAAC,UAAU;EACrF,SAAS,EACN,OAAO;GACN,OAAO,EAAE,QAAQ,CAAC,QAAQ,eAAe,MAAM;GAC/C,eAAe,EAAE,QAAQ,CAAC,QAAQ,eAAe,MAAM;GACvD,WAAW,EAAE,QAAQ,CAAC,QAAQ,eAAe,UAAU;GACvD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,eAAe,cAAc;GACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,eAAe,OAAO;GAClD,CAAC,CACD,QAAQ,eAAe;EAE1B,SAAS,EAAE,QAAQ,CAAC,cAAe,WAAW,OAAO,GAAG,QAAQ,GAAI;EACpE,WAAW,EAAE,KAAK,CAAC,YAAY,UAAU,CAAC,CAAC,QAAQ,WAAW;EAC9D,WAAW,EAAE,QAAQ,WAAW,CAAC,cAAc;AAC7C,UAAO,+BAA+B,gBAAgB,IAAI;IAC1D;EAEF,UAAU,EACP,OAAO,EAIN,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAC9B,CAAC,CACD,QAAQ,EAAE,CAAC;EACf,CAAC;;AAGJ,SAAS,+BAA+B,SAAwC;AAC9E,KAAI;EACF,MAAM,SAAS,aAAa,SAAS,QAAQ;EAC7C,MAAM,MAAM,KAAK,MAAM,OAAO;EAE9B,MAAM,OAAO;GACX,GAAG,IAAI;GACP,GAAG,IAAI;GACR;AAED,MAAI,KAAK,QAAS,QAAO;AACzB,MAAI,KAAK,QAAS,QAAO;AACzB,MAAI,KAAK,mBAAmB,KAAK,oBAAqB,QAAO;AAC7D,MAAI,KAAK,yBAA0B,QAAO;SACpC;AACN;;;AASJ,eAAsB,mBAAmB,OAAO,cAAqC;CACnF,MAAM,SAAS,MAAM,WAAW,KAAK;AACrC,KAAI,OAAQ,QAAO;CAEnB,MAAM,WAAW,MAAM,GAAG,SAAS,KAAK,EAAE,UAAU;AAGpD,QAFqB,oBAAoB,CAErB,MAAM,KAAK,MAAM,QAAQ,CAAC;;;;;;;AAQhD,eAAsB,WAAW,OAAO,cAAiD;AACvF,KACE,MAAM,GACH,KAAK,KAAK,CACV,WAAW,KAAK,CAChB,YAAY,MAAM,CAErB;CAGF,MAAM,gBAAgB,MAAM,kBAAkB;AAC9C,OAAM,GAAG,UAAU,MAAM,KAAK,UAAU,eAAe,MAAM,EAAE,CAAC;AAChE,QAAO;;AAGT,eAAsB,iBAAiB,KAAc;AACnD,QAAO,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAuB"}
package/dist/index.js CHANGED
@@ -63,7 +63,7 @@ async function runTree(args) {
63
63
  }
64
64
  //#endregion
65
65
  //#region package.json
66
- var version = "1.3.3";
66
+ var version = "1.3.4";
67
67
  //#endregion
68
68
  //#region src/commands/shared.ts
69
69
  const UIRegistries = {
@@ -1,5 +1,5 @@
1
1
  import { a as DownloadedRegistryInfo, i as Component } from "../schema-BAaUX4uu.js";
2
- import { r as LoadedConfig } from "../config-Bx-m6awG.js";
2
+ import { r as LoadedConfig } from "../config-BIpj98KJ.js";
3
3
 
4
4
  //#region src/registry/client.d.ts
5
5
  interface RegistryClient {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fumadocs/cli",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "description": "The CLI tool for Fumadocs",
5
5
  "keywords": [
6
6
  "Docs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-Bx-m6awG.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;;cAIM,UAAA;AAAA,KACM,SAAA,WAAoB,UAAA;AAAA,iBAEhB,kBAAA,CAAA,GAAkB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;KAyD7B,YAAA,GAAe,UAAA,QAAkB,kBAAA;AAAA,KAE1B,WAAA,GAAc,CAAA,CAAE,KAAA,CAAM,YAAA;AAAA,KACtB,YAAA,GAAe,CAAA,CAAE,MAAA,CAAO,YAAA;AAAA,iBAEd,kBAAA,CAAmB,IAAA,YAAsB,OAAA,CAAQ,YAAA;;;;;;iBAejD,UAAA,CAAW,IAAA,YAAsB,OAAA,CAAQ,YAAA;AAAA,iBAezC,gBAAA,CAAA,GAAgB,OAAA"}