@clarify-labs/cli 0.1.0 → 0.2.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/output/cli.cjs +1 -1
- package/output/cli.cjs.map +1 -1
- package/output/cli.js +1 -1
- package/output/cli.js.map +1 -1
- package/package.json +18 -13
package/output/cli.cjs
CHANGED
|
@@ -99,7 +99,7 @@ function updatePackageJson(root, force) {
|
|
|
99
99
|
if (force || !scripts.build) scripts.build = "clarify build";
|
|
100
100
|
packageJson.scripts = scripts;
|
|
101
101
|
const devDependencies = typeof packageJson.devDependencies === "object" && packageJson.devDependencies !== null ? packageJson.devDependencies : {};
|
|
102
|
-
if (!devDependencies["@clarify-labs/cli"]) devDependencies["@clarify-labs/cli"] = "^0.
|
|
102
|
+
if (!devDependencies["@clarify-labs/cli"]) devDependencies["@clarify-labs/cli"] = "^0.2.0";
|
|
103
103
|
packageJson.devDependencies = devDependencies;
|
|
104
104
|
(0, node_fs.writeFileSync)(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`, "utf-8");
|
|
105
105
|
return true;
|
package/output/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.cjs","names":[],"sources":["../source/core/vite-config.ts","../source/cli/commands/build.ts","../source/cli/commands/dev.ts","../source/cli/commands/init.ts","../source/cli/options.ts","../source/cli/package.ts","../source/cli/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ConfigEnv, InlineConfig, Plugin } from 'vite'\n\nimport type { ClarifyBuildOptions } from './options.js'\nimport { clarifyPlugin } from './plugin.js'\nimport { createClarifyRuntimeAliases } from './runtime-deps.js'\nimport { loadClarifyConfig } from './user-config.js'\n\nexport type ClarifyViteConfigOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nconst DEFAULT_HTML = '<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>Clarify</title></head><body><div id=\"root\"></div></body></html>'\n\nfunction ensureHtmlEntry(root: string): string {\n const projectHtmlPath = resolve(root, 'index.html')\n if (existsSync(projectHtmlPath)) return projectHtmlPath\n\n const generatedHtmlPath = resolve(root, '.clarify/index.html')\n mkdirSync(dirname(generatedHtmlPath), { recursive: true })\n writeFileSync(generatedHtmlPath, DEFAULT_HTML, 'utf-8')\n return generatedHtmlPath\n}\n\nfunction createHtmlFallbackPlugin(): Plugin {\n return {\n name: 'clarify:cli-html-fallback',\n configureServer(server) {\n server.middlewares.use(async (req, res, next) => {\n const requestPath = req.url?.split('?')[0] ?? '/'\n const acceptsHtml = req.headers.accept?.includes('text/html') ?? false\n const hasFileExtension = /\\.[^/]+$/.test(requestPath)\n if (!acceptsHtml || hasFileExtension) {\n next()\n return\n }\n\n try {\n const html = await server.transformIndexHtml(requestPath, DEFAULT_HTML)\n res.statusCode = 200\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.end(html)\n } catch (error) {\n next(error)\n }\n })\n },\n }\n}\n\nexport async function createViteConfig(options: ClarifyViteConfigOptions, env: ConfigEnv): Promise<InlineConfig> {\n const entryHtmlPath = ensureHtmlEntry(options.root)\n const userConfig = await loadClarifyConfig(options.root, env)\n const buildOptions: ClarifyBuildOptions = {\n ...userConfig,\n projectRoot: options.root,\n rootDirectory: options.content,\n outputDirectory: options.output,\n }\n\n return {\n root: options.root,\n configFile: false,\n appType: 'custom',\n resolve: {\n alias: createClarifyRuntimeAliases(),\n },\n plugins: [\n clarifyPlugin(buildOptions),\n createHtmlFallbackPlugin(),\n ],\n server: {\n host: options.host,\n port: options.port,\n open: options.open,\n },\n build: {\n outDir: options.output,\n rollupOptions: {\n input: {\n index: entryHtmlPath,\n },\n },\n },\n }\n}\n","import { build as viteBuild } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runBuild(options: ResolvedCliOptions): Promise<void> {\n await viteBuild(await createViteConfig(options, { command: 'build', mode: 'production' }))\n}\n","import { createServer } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runDev(options: ResolvedCliOptions): Promise<void> {\n const server = await createServer(await createViteConfig(options, { command: 'serve', mode: 'development' }))\n await server.listen()\n server.printUrls()\n server.bindCLIShortcuts({ print: true })\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ResolvedCliOptions } from '../options.js'\n\nfunction writeTextFile(filePath: string, content: string, force: boolean): boolean {\n if (existsSync(filePath) && !force) return false\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, content, 'utf-8')\n return true\n}\n\nfunction updatePackageJson(root: string, force: boolean): boolean {\n const packageJsonPath = resolve(root, 'package.json')\n const packageJson = existsSync(packageJsonPath)\n ? JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as Record<string, unknown>\n : { type: 'module' }\n\n const scripts = typeof packageJson.scripts === 'object' && packageJson.scripts !== null\n ? packageJson.scripts as Record<string, string>\n : {}\n\n if (force || !scripts.dev) scripts.dev = 'clarify dev'\n if (force || !scripts.build) scripts.build = 'clarify build'\n packageJson.scripts = scripts\n\n const devDependencies = typeof packageJson.devDependencies === 'object' && packageJson.devDependencies !== null\n ? packageJson.devDependencies as Record<string, string>\n : {}\n if (!devDependencies['@clarify-labs/cli']) devDependencies['@clarify-labs/cli'] = '^0.1.0'\n packageJson.devDependencies = devDependencies\n\n writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8')\n return true\n}\n\nexport function runInit(options: ResolvedCliOptions, force: boolean): void {\n const created: string[] = []\n const skipped: string[] = []\n\n const clarifyConfigCreated = writeTextFile(resolve(options.root, 'clarify.ts'), `import { defineConfig } from '@clarify-labs/cli'\n\nexport default defineConfig({\n title: 'Clarify Docs',\n description: 'Documentation powered by Clarify',\n theme: { primary: '#0ea5e9' },\n})\n`, force)\n ;(clarifyConfigCreated ? created : skipped).push('clarify.ts')\n\n const contentCreated = writeTextFile(resolve(options.root, options.content, 'index.mdx'), `---\ntitle: Welcome\n---\n\n# Welcome to Clarify\n\nStart writing your documentation in \\`${options.content}\\`.\n`, force)\n ;(contentCreated ? created : skipped).push(`${options.content}/index.mdx`)\n\n const packageJsonUpdated = updatePackageJson(options.root, force)\n if (packageJsonUpdated) created.push('package.json')\n\n console.log('[clarify] Init complete.')\n if (created.length > 0) console.log(`[clarify] Created or updated: ${created.join(', ')}`)\n if (skipped.length > 0) console.log(`[clarify] Skipped existing files: ${skipped.join(', ')}. Use --force to overwrite.`)\n}\n","import { resolve } from 'node:path'\n\nexport type CliOptions = {\n root?: string\n content?: string\n output?: string\n host?: string | boolean\n port?: string | number\n open?: boolean | string\n}\n\nexport type ResolvedCliOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nexport function resolveCliOptions(options: CliOptions): ResolvedCliOptions {\n return {\n root: resolve(options.root ?? process.cwd()),\n content: options.content ?? 'source',\n output: options.output ?? 'output',\n host: options.host,\n port: typeof options.port === 'string' ? Number.parseInt(options.port, 10) : options.port,\n open: options.open,\n }\n}\n","import { readFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nexport function readPackageVersion(): string {\n try {\n const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../package.json')\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as { version?: string }\n return packageJson.version ?? '0.0.0'\n } catch {\n return '0.0.0'\n }\n}\n","#!/usr/bin/env node\nimport { cac } from 'cac'\n\nimport { runBuild } from './commands/build.js'\nimport { runDev } from './commands/dev.js'\nimport { runInit } from './commands/init.js'\nimport { resolveCliOptions, type CliOptions, type ResolvedCliOptions } from './options.js'\nimport { readPackageVersion } from './package.js'\n\nfunction withSharedOptions(command: ReturnType<ReturnType<typeof cac>['command']>) {\n return command\n .option('--root <dir>', 'Project root directory')\n .option('--content <dir>', 'Content directory relative to root')\n .option('--output <dir>', 'Build output directory relative to root')\n}\n\nfunction resolveOptions(options: CliOptions): ResolvedCliOptions {\n return resolveCliOptions(options)\n}\n\nasync function main(): Promise<void> {\n const cli = cac('clarify')\n\n cli\n .version(readPackageVersion())\n .help()\n\n withSharedOptions(cli.command('dev', 'Start the local documentation server'))\n .option('--host [host]', 'Dev server host')\n .option('--port <port>', 'Dev server port')\n .option('--open [path]', 'Open the dev server in a browser')\n .action(async (options: CliOptions) => {\n await runDev(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('build', 'Build the static documentation site'))\n .action(async (options: CliOptions) => {\n await runBuild(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('init', 'Create a minimal Clarify project scaffold'))\n .option('--force', 'Overwrite files created by init')\n .action((options: CliOptions & { force?: boolean }) => {\n runInit(resolveOptions(options), options.force === true)\n })\n\n const args = process.argv.slice(2)\n cli.parse(process.argv, { run: false })\n\n if (args.length === 0) {\n cli.outputHelp()\n return\n }\n\n await cli.runMatchedCommand()\n}\n\nmain().catch(error => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.cjs","names":[],"sources":["../source/core/vite-config.ts","../source/cli/commands/build.ts","../source/cli/commands/dev.ts","../source/cli/commands/init.ts","../source/cli/options.ts","../source/cli/package.ts","../source/cli/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ConfigEnv, InlineConfig, Plugin } from 'vite'\n\nimport type { ClarifyBuildOptions } from './options.js'\nimport { clarifyPlugin } from './plugin.js'\nimport { createClarifyRuntimeAliases } from './runtime-deps.js'\nimport { loadClarifyConfig } from './user-config.js'\n\nexport type ClarifyViteConfigOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nconst DEFAULT_HTML = '<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>Clarify</title></head><body><div id=\"root\"></div></body></html>'\n\nfunction ensureHtmlEntry(root: string): string {\n const projectHtmlPath = resolve(root, 'index.html')\n if (existsSync(projectHtmlPath)) return projectHtmlPath\n\n const generatedHtmlPath = resolve(root, '.clarify/index.html')\n mkdirSync(dirname(generatedHtmlPath), { recursive: true })\n writeFileSync(generatedHtmlPath, DEFAULT_HTML, 'utf-8')\n return generatedHtmlPath\n}\n\nfunction createHtmlFallbackPlugin(): Plugin {\n return {\n name: 'clarify:cli-html-fallback',\n configureServer(server) {\n server.middlewares.use(async (req, res, next) => {\n const requestPath = req.url?.split('?')[0] ?? '/'\n const acceptsHtml = req.headers.accept?.includes('text/html') ?? false\n const hasFileExtension = /\\.[^/]+$/.test(requestPath)\n if (!acceptsHtml || hasFileExtension) {\n next()\n return\n }\n\n try {\n const html = await server.transformIndexHtml(requestPath, DEFAULT_HTML)\n res.statusCode = 200\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.end(html)\n } catch (error) {\n next(error)\n }\n })\n },\n }\n}\n\nexport async function createViteConfig(options: ClarifyViteConfigOptions, env: ConfigEnv): Promise<InlineConfig> {\n const entryHtmlPath = ensureHtmlEntry(options.root)\n const userConfig = await loadClarifyConfig(options.root, env)\n const buildOptions: ClarifyBuildOptions = {\n ...userConfig,\n projectRoot: options.root,\n rootDirectory: options.content,\n outputDirectory: options.output,\n }\n\n return {\n root: options.root,\n configFile: false,\n appType: 'custom',\n resolve: {\n alias: createClarifyRuntimeAliases(),\n },\n plugins: [\n clarifyPlugin(buildOptions),\n createHtmlFallbackPlugin(),\n ],\n server: {\n host: options.host,\n port: options.port,\n open: options.open,\n },\n build: {\n outDir: options.output,\n rollupOptions: {\n input: {\n index: entryHtmlPath,\n },\n },\n },\n }\n}\n","import { build as viteBuild } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runBuild(options: ResolvedCliOptions): Promise<void> {\n await viteBuild(await createViteConfig(options, { command: 'build', mode: 'production' }))\n}\n","import { createServer } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runDev(options: ResolvedCliOptions): Promise<void> {\n const server = await createServer(await createViteConfig(options, { command: 'serve', mode: 'development' }))\n await server.listen()\n server.printUrls()\n server.bindCLIShortcuts({ print: true })\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ResolvedCliOptions } from '../options.js'\n\nfunction writeTextFile(filePath: string, content: string, force: boolean): boolean {\n if (existsSync(filePath) && !force) return false\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, content, 'utf-8')\n return true\n}\n\nfunction updatePackageJson(root: string, force: boolean): boolean {\n const packageJsonPath = resolve(root, 'package.json')\n const packageJson = existsSync(packageJsonPath)\n ? JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as Record<string, unknown>\n : { type: 'module' }\n\n const scripts = typeof packageJson.scripts === 'object' && packageJson.scripts !== null\n ? packageJson.scripts as Record<string, string>\n : {}\n\n if (force || !scripts.dev) scripts.dev = 'clarify dev'\n if (force || !scripts.build) scripts.build = 'clarify build'\n packageJson.scripts = scripts\n\n const devDependencies = typeof packageJson.devDependencies === 'object' && packageJson.devDependencies !== null\n ? packageJson.devDependencies as Record<string, string>\n : {}\n if (!devDependencies['@clarify-labs/cli']) devDependencies['@clarify-labs/cli'] = '^0.2.0'\n packageJson.devDependencies = devDependencies\n\n writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8')\n return true\n}\n\nexport function runInit(options: ResolvedCliOptions, force: boolean): void {\n const created: string[] = []\n const skipped: string[] = []\n\n const clarifyConfigCreated = writeTextFile(resolve(options.root, 'clarify.ts'), `import { defineConfig } from '@clarify-labs/cli'\n\nexport default defineConfig({\n title: 'Clarify Docs',\n description: 'Documentation powered by Clarify',\n theme: { primary: '#0ea5e9' },\n})\n`, force)\n ;(clarifyConfigCreated ? created : skipped).push('clarify.ts')\n\n const contentCreated = writeTextFile(resolve(options.root, options.content, 'index.mdx'), `---\ntitle: Welcome\n---\n\n# Welcome to Clarify\n\nStart writing your documentation in \\`${options.content}\\`.\n`, force)\n ;(contentCreated ? created : skipped).push(`${options.content}/index.mdx`)\n\n const packageJsonUpdated = updatePackageJson(options.root, force)\n if (packageJsonUpdated) created.push('package.json')\n\n console.log('[clarify] Init complete.')\n if (created.length > 0) console.log(`[clarify] Created or updated: ${created.join(', ')}`)\n if (skipped.length > 0) console.log(`[clarify] Skipped existing files: ${skipped.join(', ')}. Use --force to overwrite.`)\n}\n","import { resolve } from 'node:path'\n\nexport type CliOptions = {\n root?: string\n content?: string\n output?: string\n host?: string | boolean\n port?: string | number\n open?: boolean | string\n}\n\nexport type ResolvedCliOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nexport function resolveCliOptions(options: CliOptions): ResolvedCliOptions {\n return {\n root: resolve(options.root ?? process.cwd()),\n content: options.content ?? 'source',\n output: options.output ?? 'output',\n host: options.host,\n port: typeof options.port === 'string' ? Number.parseInt(options.port, 10) : options.port,\n open: options.open,\n }\n}\n","import { readFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nexport function readPackageVersion(): string {\n try {\n const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../package.json')\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as { version?: string }\n return packageJson.version ?? '0.0.0'\n } catch {\n return '0.0.0'\n }\n}\n","#!/usr/bin/env node\nimport { cac } from 'cac'\n\nimport { runBuild } from './commands/build.js'\nimport { runDev } from './commands/dev.js'\nimport { runInit } from './commands/init.js'\nimport { resolveCliOptions, type CliOptions, type ResolvedCliOptions } from './options.js'\nimport { readPackageVersion } from './package.js'\n\nfunction withSharedOptions(command: ReturnType<ReturnType<typeof cac>['command']>) {\n return command\n .option('--root <dir>', 'Project root directory')\n .option('--content <dir>', 'Content directory relative to root')\n .option('--output <dir>', 'Build output directory relative to root')\n}\n\nfunction resolveOptions(options: CliOptions): ResolvedCliOptions {\n return resolveCliOptions(options)\n}\n\nasync function main(): Promise<void> {\n const cli = cac('clarify')\n\n cli\n .version(readPackageVersion())\n .help()\n\n withSharedOptions(cli.command('dev', 'Start the local documentation server'))\n .option('--host [host]', 'Dev server host')\n .option('--port <port>', 'Dev server port')\n .option('--open [path]', 'Open the dev server in a browser')\n .action(async (options: CliOptions) => {\n await runDev(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('build', 'Build the static documentation site'))\n .action(async (options: CliOptions) => {\n await runBuild(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('init', 'Create a minimal Clarify project scaffold'))\n .option('--force', 'Overwrite files created by init')\n .action((options: CliOptions & { force?: boolean }) => {\n runInit(resolveOptions(options), options.force === true)\n })\n\n const args = process.argv.slice(2)\n cli.parse(process.argv, { run: false })\n\n if (args.length === 0) {\n cli.outputHelp()\n return\n }\n\n await cli.runMatchedCommand()\n}\n\nmain().catch(error => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":"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"}
|
package/output/cli.js
CHANGED
|
@@ -99,7 +99,7 @@ function updatePackageJson(root, force) {
|
|
|
99
99
|
if (force || !scripts.build) scripts.build = "clarify build";
|
|
100
100
|
packageJson.scripts = scripts;
|
|
101
101
|
const devDependencies = typeof packageJson.devDependencies === "object" && packageJson.devDependencies !== null ? packageJson.devDependencies : {};
|
|
102
|
-
if (!devDependencies["@clarify-labs/cli"]) devDependencies["@clarify-labs/cli"] = "^0.
|
|
102
|
+
if (!devDependencies["@clarify-labs/cli"]) devDependencies["@clarify-labs/cli"] = "^0.2.0";
|
|
103
103
|
packageJson.devDependencies = devDependencies;
|
|
104
104
|
writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`, "utf-8");
|
|
105
105
|
return true;
|
package/output/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","names":[],"sources":["../source/core/vite-config.ts","../source/cli/commands/build.ts","../source/cli/commands/dev.ts","../source/cli/commands/init.ts","../source/cli/options.ts","../source/cli/package.ts","../source/cli/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ConfigEnv, InlineConfig, Plugin } from 'vite'\n\nimport type { ClarifyBuildOptions } from './options.js'\nimport { clarifyPlugin } from './plugin.js'\nimport { createClarifyRuntimeAliases } from './runtime-deps.js'\nimport { loadClarifyConfig } from './user-config.js'\n\nexport type ClarifyViteConfigOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nconst DEFAULT_HTML = '<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>Clarify</title></head><body><div id=\"root\"></div></body></html>'\n\nfunction ensureHtmlEntry(root: string): string {\n const projectHtmlPath = resolve(root, 'index.html')\n if (existsSync(projectHtmlPath)) return projectHtmlPath\n\n const generatedHtmlPath = resolve(root, '.clarify/index.html')\n mkdirSync(dirname(generatedHtmlPath), { recursive: true })\n writeFileSync(generatedHtmlPath, DEFAULT_HTML, 'utf-8')\n return generatedHtmlPath\n}\n\nfunction createHtmlFallbackPlugin(): Plugin {\n return {\n name: 'clarify:cli-html-fallback',\n configureServer(server) {\n server.middlewares.use(async (req, res, next) => {\n const requestPath = req.url?.split('?')[0] ?? '/'\n const acceptsHtml = req.headers.accept?.includes('text/html') ?? false\n const hasFileExtension = /\\.[^/]+$/.test(requestPath)\n if (!acceptsHtml || hasFileExtension) {\n next()\n return\n }\n\n try {\n const html = await server.transformIndexHtml(requestPath, DEFAULT_HTML)\n res.statusCode = 200\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.end(html)\n } catch (error) {\n next(error)\n }\n })\n },\n }\n}\n\nexport async function createViteConfig(options: ClarifyViteConfigOptions, env: ConfigEnv): Promise<InlineConfig> {\n const entryHtmlPath = ensureHtmlEntry(options.root)\n const userConfig = await loadClarifyConfig(options.root, env)\n const buildOptions: ClarifyBuildOptions = {\n ...userConfig,\n projectRoot: options.root,\n rootDirectory: options.content,\n outputDirectory: options.output,\n }\n\n return {\n root: options.root,\n configFile: false,\n appType: 'custom',\n resolve: {\n alias: createClarifyRuntimeAliases(),\n },\n plugins: [\n clarifyPlugin(buildOptions),\n createHtmlFallbackPlugin(),\n ],\n server: {\n host: options.host,\n port: options.port,\n open: options.open,\n },\n build: {\n outDir: options.output,\n rollupOptions: {\n input: {\n index: entryHtmlPath,\n },\n },\n },\n }\n}\n","import { build as viteBuild } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runBuild(options: ResolvedCliOptions): Promise<void> {\n await viteBuild(await createViteConfig(options, { command: 'build', mode: 'production' }))\n}\n","import { createServer } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runDev(options: ResolvedCliOptions): Promise<void> {\n const server = await createServer(await createViteConfig(options, { command: 'serve', mode: 'development' }))\n await server.listen()\n server.printUrls()\n server.bindCLIShortcuts({ print: true })\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ResolvedCliOptions } from '../options.js'\n\nfunction writeTextFile(filePath: string, content: string, force: boolean): boolean {\n if (existsSync(filePath) && !force) return false\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, content, 'utf-8')\n return true\n}\n\nfunction updatePackageJson(root: string, force: boolean): boolean {\n const packageJsonPath = resolve(root, 'package.json')\n const packageJson = existsSync(packageJsonPath)\n ? JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as Record<string, unknown>\n : { type: 'module' }\n\n const scripts = typeof packageJson.scripts === 'object' && packageJson.scripts !== null\n ? packageJson.scripts as Record<string, string>\n : {}\n\n if (force || !scripts.dev) scripts.dev = 'clarify dev'\n if (force || !scripts.build) scripts.build = 'clarify build'\n packageJson.scripts = scripts\n\n const devDependencies = typeof packageJson.devDependencies === 'object' && packageJson.devDependencies !== null\n ? packageJson.devDependencies as Record<string, string>\n : {}\n if (!devDependencies['@clarify-labs/cli']) devDependencies['@clarify-labs/cli'] = '^0.1.0'\n packageJson.devDependencies = devDependencies\n\n writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8')\n return true\n}\n\nexport function runInit(options: ResolvedCliOptions, force: boolean): void {\n const created: string[] = []\n const skipped: string[] = []\n\n const clarifyConfigCreated = writeTextFile(resolve(options.root, 'clarify.ts'), `import { defineConfig } from '@clarify-labs/cli'\n\nexport default defineConfig({\n title: 'Clarify Docs',\n description: 'Documentation powered by Clarify',\n theme: { primary: '#0ea5e9' },\n})\n`, force)\n ;(clarifyConfigCreated ? created : skipped).push('clarify.ts')\n\n const contentCreated = writeTextFile(resolve(options.root, options.content, 'index.mdx'), `---\ntitle: Welcome\n---\n\n# Welcome to Clarify\n\nStart writing your documentation in \\`${options.content}\\`.\n`, force)\n ;(contentCreated ? created : skipped).push(`${options.content}/index.mdx`)\n\n const packageJsonUpdated = updatePackageJson(options.root, force)\n if (packageJsonUpdated) created.push('package.json')\n\n console.log('[clarify] Init complete.')\n if (created.length > 0) console.log(`[clarify] Created or updated: ${created.join(', ')}`)\n if (skipped.length > 0) console.log(`[clarify] Skipped existing files: ${skipped.join(', ')}. Use --force to overwrite.`)\n}\n","import { resolve } from 'node:path'\n\nexport type CliOptions = {\n root?: string\n content?: string\n output?: string\n host?: string | boolean\n port?: string | number\n open?: boolean | string\n}\n\nexport type ResolvedCliOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nexport function resolveCliOptions(options: CliOptions): ResolvedCliOptions {\n return {\n root: resolve(options.root ?? process.cwd()),\n content: options.content ?? 'source',\n output: options.output ?? 'output',\n host: options.host,\n port: typeof options.port === 'string' ? Number.parseInt(options.port, 10) : options.port,\n open: options.open,\n }\n}\n","import { readFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nexport function readPackageVersion(): string {\n try {\n const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../package.json')\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as { version?: string }\n return packageJson.version ?? '0.0.0'\n } catch {\n return '0.0.0'\n }\n}\n","#!/usr/bin/env node\nimport { cac } from 'cac'\n\nimport { runBuild } from './commands/build.js'\nimport { runDev } from './commands/dev.js'\nimport { runInit } from './commands/init.js'\nimport { resolveCliOptions, type CliOptions, type ResolvedCliOptions } from './options.js'\nimport { readPackageVersion } from './package.js'\n\nfunction withSharedOptions(command: ReturnType<ReturnType<typeof cac>['command']>) {\n return command\n .option('--root <dir>', 'Project root directory')\n .option('--content <dir>', 'Content directory relative to root')\n .option('--output <dir>', 'Build output directory relative to root')\n}\n\nfunction resolveOptions(options: CliOptions): ResolvedCliOptions {\n return resolveCliOptions(options)\n}\n\nasync function main(): Promise<void> {\n const cli = cac('clarify')\n\n cli\n .version(readPackageVersion())\n .help()\n\n withSharedOptions(cli.command('dev', 'Start the local documentation server'))\n .option('--host [host]', 'Dev server host')\n .option('--port <port>', 'Dev server port')\n .option('--open [path]', 'Open the dev server in a browser')\n .action(async (options: CliOptions) => {\n await runDev(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('build', 'Build the static documentation site'))\n .action(async (options: CliOptions) => {\n await runBuild(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('init', 'Create a minimal Clarify project scaffold'))\n .option('--force', 'Overwrite files created by init')\n .action((options: CliOptions & { force?: boolean }) => {\n runInit(resolveOptions(options), options.force === true)\n })\n\n const args = process.argv.slice(2)\n cli.parse(process.argv, { run: false })\n\n if (args.length === 0) {\n cli.outputHelp()\n return\n }\n\n await cli.runMatchedCommand()\n}\n\nmain().catch(error => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":";;;;;;;;AAmBA,IAAM,eAAe;AAErB,SAAS,gBAAgB,MAAsB;CAC7C,MAAM,kBAAkB,QAAQ,MAAM,YAAY;CAClD,IAAI,WAAW,eAAe,GAAG,OAAO;CAExC,MAAM,oBAAoB,QAAQ,MAAM,qBAAqB;CAC7D,UAAU,QAAQ,iBAAiB,GAAG,EAAE,WAAW,KAAK,CAAC;CACzD,cAAc,mBAAmB,cAAc,OAAO;CACtD,OAAO;AACT;AAEA,SAAS,2BAAmC;CAC1C,OAAO;EACL,MAAM;EACN,gBAAgB,QAAQ;GACtB,OAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;IAC/C,MAAM,cAAc,IAAI,KAAK,MAAM,GAAG,EAAE,MAAM;IAC9C,MAAM,cAAc,IAAI,QAAQ,QAAQ,SAAS,WAAW,KAAK;IACjE,MAAM,mBAAmB,WAAW,KAAK,WAAW;IACpD,IAAI,CAAC,eAAe,kBAAkB;KACpC,KAAK;KACL;IACF;IAEA,IAAI;KACF,MAAM,OAAO,MAAM,OAAO,mBAAmB,aAAa,YAAY;KACtE,IAAI,aAAa;KACjB,IAAI,UAAU,gBAAgB,0BAA0B;KACxD,IAAI,IAAI,IAAI;IACd,SAAS,OAAO;KACd,KAAK,KAAK;IACZ;GACF,CAAC;EACH;CACF;AACF;AAEA,eAAsB,iBAAiB,SAAmC,KAAuC;CAC/G,MAAM,gBAAgB,gBAAgB,QAAQ,IAAI;CAElD,MAAM,eAAoC;EACxC,GAAG,MAFoB,kBAAkB,QAAQ,MAAM,GAAG;EAG1D,aAAa,QAAQ;EACrB,eAAe,QAAQ;EACvB,iBAAiB,QAAQ;CAC3B;CAEA,OAAO;EACL,MAAM,QAAQ;EACd,YAAY;EACZ,SAAS;EACT,SAAS,EACP,OAAO,4BAA4B,EACrC;EACA,SAAS,CACP,cAAc,YAAY,GAC1B,yBAAyB,CAC3B;EACA,QAAQ;GACN,MAAM,QAAQ;GACd,MAAM,QAAQ;GACd,MAAM,QAAQ;EAChB;EACA,OAAO;GACL,QAAQ,QAAQ;GAChB,eAAe,EACb,OAAO,EACL,OAAO,cACT,EACF;EACF;CACF;AACF;;;ACvFA,eAAsB,SAAS,SAA4C;CACzE,MAAM,MAAU,MAAM,iBAAiB,SAAS;EAAE,SAAS;EAAS,MAAM;CAAa,CAAC,CAAC;AAC3F;;;ACFA,eAAsB,OAAO,SAA4C;CACvE,MAAM,SAAS,MAAM,aAAa,MAAM,iBAAiB,SAAS;EAAE,SAAS;EAAS,MAAM;CAAc,CAAC,CAAC;CAC5G,MAAM,OAAO,OAAO;CACpB,OAAO,UAAU;CACjB,OAAO,iBAAiB,EAAE,OAAO,KAAK,CAAC;AACzC;;;ACLA,SAAS,cAAc,UAAkB,SAAiB,OAAyB;CACjF,IAAI,WAAW,QAAQ,KAAK,CAAC,OAAO,OAAO;CAC3C,UAAU,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;CAChD,cAAc,UAAU,SAAS,OAAO;CACxC,OAAO;AACT;AAEA,SAAS,kBAAkB,MAAc,OAAyB;CAChE,MAAM,kBAAkB,QAAQ,MAAM,cAAc;CACpD,MAAM,cAAc,WAAW,eAAe,IAC1C,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC,IACjD,EAAE,MAAM,SAAS;CAErB,MAAM,UAAU,OAAO,YAAY,YAAY,YAAY,YAAY,YAAY,OAC/E,YAAY,UACZ,CAAC;CAEL,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,MAAM;CACzC,IAAI,SAAS,CAAC,QAAQ,OAAO,QAAQ,QAAQ;CAC7C,YAAY,UAAU;CAEtB,MAAM,kBAAkB,OAAO,YAAY,oBAAoB,YAAY,YAAY,oBAAoB,OACvG,YAAY,kBACZ,CAAC;CACL,IAAI,CAAC,gBAAgB,sBAAsB,gBAAgB,uBAAuB;CAClF,YAAY,kBAAkB;CAE9B,cAAc,iBAAiB,GAAG,KAAK,UAAU,aAAa,MAAM,CAAC,EAAE,KAAK,OAAO;CACnF,OAAO;AACT;AAEA,SAAgB,QAAQ,SAA6B,OAAsB;CACzE,MAAM,UAAoB,CAAC;CAC3B,MAAM,UAAoB,CAAC;CAU1B,CAR4B,cAAc,QAAQ,QAAQ,MAAM,YAAY,GAAG;;;;;;;GAO/E,KACC,IAAuB,UAAU,SAAS,KAAK,YAAY;CAU5D,CARsB,cAAc,QAAQ,QAAQ,MAAM,QAAQ,SAAS,WAAW,GAAG;;;;;;wCAMpD,QAAQ,QAAQ;GACrD,KACC,IAAiB,UAAU,SAAS,KAAK,GAAG,QAAQ,QAAQ,WAAW;CAGzE,IAD2B,kBAAkB,QAAQ,MAAM,KACvD,GAAoB,QAAQ,KAAK,cAAc;CAEnD,QAAQ,IAAI,0BAA0B;CACtC,IAAI,QAAQ,SAAS,GAAG,QAAQ,IAAI,iCAAiC,QAAQ,KAAK,IAAI,GAAG;CACzF,IAAI,QAAQ,SAAS,GAAG,QAAQ,IAAI,qCAAqC,QAAQ,KAAK,IAAI,EAAE,4BAA4B;AAC1H;;;AC9CA,SAAgB,kBAAkB,SAAyC;CACzE,OAAO;EACL,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,IAAI,CAAC;EAC3C,SAAS,QAAQ,WAAW;EAC5B,QAAQ,QAAQ,UAAU;EAC1B,MAAM,QAAQ;EACd,MAAM,OAAO,QAAQ,SAAS,WAAW,OAAO,SAAS,QAAQ,MAAM,EAAE,IAAI,QAAQ;EACrF,MAAM,QAAQ;CAChB;AACF;;;ACzBA,SAAgB,qBAA6B;CAC3C,IAAI;EACF,MAAM,kBAAkB,QAAQ,QAAQ,cAAc,OAAO,KAAK,GAAG,CAAC,GAAG,iBAAiB;EAE1F,OADoB,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAC7D,EAAY,WAAW;CAChC,QAAQ;EACN,OAAO;CACT;AACF;;;ACHA,SAAS,kBAAkB,SAAwD;CACjF,OAAO,QACJ,OAAO,gBAAgB,wBAAwB,EAC/C,OAAO,mBAAmB,oCAAoC,EAC9D,OAAO,kBAAkB,yCAAyC;AACvE;AAEA,SAAS,eAAe,SAAyC;CAC/D,OAAO,kBAAkB,OAAO;AAClC;AAEA,eAAe,OAAsB;CACnC,MAAM,MAAM,IAAI,SAAS;CAEzB,IACG,QAAQ,mBAAmB,CAAC,EAC5B,KAAK;CAER,kBAAkB,IAAI,QAAQ,OAAO,sCAAsC,CAAC,EACzE,OAAO,iBAAiB,iBAAiB,EACzC,OAAO,iBAAiB,iBAAiB,EACzC,OAAO,iBAAiB,kCAAkC,EAC1D,OAAO,OAAO,YAAwB;EACrC,MAAM,OAAO,eAAe,OAAO,CAAC;CACtC,CAAC;CAEH,kBAAkB,IAAI,QAAQ,SAAS,qCAAqC,CAAC,EAC1E,OAAO,OAAO,YAAwB;EACrC,MAAM,SAAS,eAAe,OAAO,CAAC;CACxC,CAAC;CAEH,kBAAkB,IAAI,QAAQ,QAAQ,2CAA2C,CAAC,EAC/E,OAAO,WAAW,iCAAiC,EACnD,QAAQ,YAA8C;EACrD,QAAQ,eAAe,OAAO,GAAG,QAAQ,UAAU,IAAI;CACzD,CAAC;CAEH,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,MAAM,QAAQ,MAAM,EAAE,KAAK,MAAM,CAAC;CAEtC,IAAI,KAAK,WAAW,GAAG;EACrB,IAAI,WAAW;EACf;CACF;CAEA,MAAM,IAAI,kBAAkB;AAC9B;AAEA,KAAK,EAAE,OAAM,UAAS;CACpB,QAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,KAAK;CAC5D,QAAQ,WAAW;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../source/core/vite-config.ts","../source/cli/commands/build.ts","../source/cli/commands/dev.ts","../source/cli/commands/init.ts","../source/cli/options.ts","../source/cli/package.ts","../source/cli/index.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ConfigEnv, InlineConfig, Plugin } from 'vite'\n\nimport type { ClarifyBuildOptions } from './options.js'\nimport { clarifyPlugin } from './plugin.js'\nimport { createClarifyRuntimeAliases } from './runtime-deps.js'\nimport { loadClarifyConfig } from './user-config.js'\n\nexport type ClarifyViteConfigOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nconst DEFAULT_HTML = '<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>Clarify</title></head><body><div id=\"root\"></div></body></html>'\n\nfunction ensureHtmlEntry(root: string): string {\n const projectHtmlPath = resolve(root, 'index.html')\n if (existsSync(projectHtmlPath)) return projectHtmlPath\n\n const generatedHtmlPath = resolve(root, '.clarify/index.html')\n mkdirSync(dirname(generatedHtmlPath), { recursive: true })\n writeFileSync(generatedHtmlPath, DEFAULT_HTML, 'utf-8')\n return generatedHtmlPath\n}\n\nfunction createHtmlFallbackPlugin(): Plugin {\n return {\n name: 'clarify:cli-html-fallback',\n configureServer(server) {\n server.middlewares.use(async (req, res, next) => {\n const requestPath = req.url?.split('?')[0] ?? '/'\n const acceptsHtml = req.headers.accept?.includes('text/html') ?? false\n const hasFileExtension = /\\.[^/]+$/.test(requestPath)\n if (!acceptsHtml || hasFileExtension) {\n next()\n return\n }\n\n try {\n const html = await server.transformIndexHtml(requestPath, DEFAULT_HTML)\n res.statusCode = 200\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.end(html)\n } catch (error) {\n next(error)\n }\n })\n },\n }\n}\n\nexport async function createViteConfig(options: ClarifyViteConfigOptions, env: ConfigEnv): Promise<InlineConfig> {\n const entryHtmlPath = ensureHtmlEntry(options.root)\n const userConfig = await loadClarifyConfig(options.root, env)\n const buildOptions: ClarifyBuildOptions = {\n ...userConfig,\n projectRoot: options.root,\n rootDirectory: options.content,\n outputDirectory: options.output,\n }\n\n return {\n root: options.root,\n configFile: false,\n appType: 'custom',\n resolve: {\n alias: createClarifyRuntimeAliases(),\n },\n plugins: [\n clarifyPlugin(buildOptions),\n createHtmlFallbackPlugin(),\n ],\n server: {\n host: options.host,\n port: options.port,\n open: options.open,\n },\n build: {\n outDir: options.output,\n rollupOptions: {\n input: {\n index: entryHtmlPath,\n },\n },\n },\n }\n}\n","import { build as viteBuild } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runBuild(options: ResolvedCliOptions): Promise<void> {\n await viteBuild(await createViteConfig(options, { command: 'build', mode: 'production' }))\n}\n","import { createServer } from 'vite'\n\nimport { createViteConfig } from '../../core/vite-config.js'\nimport type { ResolvedCliOptions } from '../options.js'\n\nexport async function runDev(options: ResolvedCliOptions): Promise<void> {\n const server = await createServer(await createViteConfig(options, { command: 'serve', mode: 'development' }))\n await server.listen()\n server.printUrls()\n server.bindCLIShortcuts({ print: true })\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\n\nimport type { ResolvedCliOptions } from '../options.js'\n\nfunction writeTextFile(filePath: string, content: string, force: boolean): boolean {\n if (existsSync(filePath) && !force) return false\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, content, 'utf-8')\n return true\n}\n\nfunction updatePackageJson(root: string, force: boolean): boolean {\n const packageJsonPath = resolve(root, 'package.json')\n const packageJson = existsSync(packageJsonPath)\n ? JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as Record<string, unknown>\n : { type: 'module' }\n\n const scripts = typeof packageJson.scripts === 'object' && packageJson.scripts !== null\n ? packageJson.scripts as Record<string, string>\n : {}\n\n if (force || !scripts.dev) scripts.dev = 'clarify dev'\n if (force || !scripts.build) scripts.build = 'clarify build'\n packageJson.scripts = scripts\n\n const devDependencies = typeof packageJson.devDependencies === 'object' && packageJson.devDependencies !== null\n ? packageJson.devDependencies as Record<string, string>\n : {}\n if (!devDependencies['@clarify-labs/cli']) devDependencies['@clarify-labs/cli'] = '^0.2.0'\n packageJson.devDependencies = devDependencies\n\n writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8')\n return true\n}\n\nexport function runInit(options: ResolvedCliOptions, force: boolean): void {\n const created: string[] = []\n const skipped: string[] = []\n\n const clarifyConfigCreated = writeTextFile(resolve(options.root, 'clarify.ts'), `import { defineConfig } from '@clarify-labs/cli'\n\nexport default defineConfig({\n title: 'Clarify Docs',\n description: 'Documentation powered by Clarify',\n theme: { primary: '#0ea5e9' },\n})\n`, force)\n ;(clarifyConfigCreated ? created : skipped).push('clarify.ts')\n\n const contentCreated = writeTextFile(resolve(options.root, options.content, 'index.mdx'), `---\ntitle: Welcome\n---\n\n# Welcome to Clarify\n\nStart writing your documentation in \\`${options.content}\\`.\n`, force)\n ;(contentCreated ? created : skipped).push(`${options.content}/index.mdx`)\n\n const packageJsonUpdated = updatePackageJson(options.root, force)\n if (packageJsonUpdated) created.push('package.json')\n\n console.log('[clarify] Init complete.')\n if (created.length > 0) console.log(`[clarify] Created or updated: ${created.join(', ')}`)\n if (skipped.length > 0) console.log(`[clarify] Skipped existing files: ${skipped.join(', ')}. Use --force to overwrite.`)\n}\n","import { resolve } from 'node:path'\n\nexport type CliOptions = {\n root?: string\n content?: string\n output?: string\n host?: string | boolean\n port?: string | number\n open?: boolean | string\n}\n\nexport type ResolvedCliOptions = {\n root: string\n content: string\n output: string\n host?: string | boolean\n port?: number\n open?: boolean | string\n}\n\nexport function resolveCliOptions(options: CliOptions): ResolvedCliOptions {\n return {\n root: resolve(options.root ?? process.cwd()),\n content: options.content ?? 'source',\n output: options.output ?? 'output',\n host: options.host,\n port: typeof options.port === 'string' ? Number.parseInt(options.port, 10) : options.port,\n open: options.open,\n }\n}\n","import { readFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nexport function readPackageVersion(): string {\n try {\n const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../package.json')\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as { version?: string }\n return packageJson.version ?? '0.0.0'\n } catch {\n return '0.0.0'\n }\n}\n","#!/usr/bin/env node\nimport { cac } from 'cac'\n\nimport { runBuild } from './commands/build.js'\nimport { runDev } from './commands/dev.js'\nimport { runInit } from './commands/init.js'\nimport { resolveCliOptions, type CliOptions, type ResolvedCliOptions } from './options.js'\nimport { readPackageVersion } from './package.js'\n\nfunction withSharedOptions(command: ReturnType<ReturnType<typeof cac>['command']>) {\n return command\n .option('--root <dir>', 'Project root directory')\n .option('--content <dir>', 'Content directory relative to root')\n .option('--output <dir>', 'Build output directory relative to root')\n}\n\nfunction resolveOptions(options: CliOptions): ResolvedCliOptions {\n return resolveCliOptions(options)\n}\n\nasync function main(): Promise<void> {\n const cli = cac('clarify')\n\n cli\n .version(readPackageVersion())\n .help()\n\n withSharedOptions(cli.command('dev', 'Start the local documentation server'))\n .option('--host [host]', 'Dev server host')\n .option('--port <port>', 'Dev server port')\n .option('--open [path]', 'Open the dev server in a browser')\n .action(async (options: CliOptions) => {\n await runDev(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('build', 'Build the static documentation site'))\n .action(async (options: CliOptions) => {\n await runBuild(resolveOptions(options))\n })\n\n withSharedOptions(cli.command('init', 'Create a minimal Clarify project scaffold'))\n .option('--force', 'Overwrite files created by init')\n .action((options: CliOptions & { force?: boolean }) => {\n runInit(resolveOptions(options), options.force === true)\n })\n\n const args = process.argv.slice(2)\n cli.parse(process.argv, { run: false })\n\n if (args.length === 0) {\n cli.outputHelp()\n return\n }\n\n await cli.runMatchedCommand()\n}\n\nmain().catch(error => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clarify-labs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/taicode-labs/clarify",
|
|
9
|
+
"directory": "packages/cli"
|
|
10
|
+
},
|
|
6
11
|
"main": "output/index.cjs",
|
|
7
12
|
"module": "output/index.js",
|
|
8
13
|
"types": "output/index.d.ts",
|
|
@@ -23,18 +28,8 @@
|
|
|
23
28
|
"bin",
|
|
24
29
|
"output"
|
|
25
30
|
],
|
|
26
|
-
"scripts": {
|
|
27
|
-
"dev": "vite build --watch",
|
|
28
|
-
"build": "vite build",
|
|
29
|
-
"lint": "eslint source/",
|
|
30
|
-
"lint:fix": "eslint source/ --fix",
|
|
31
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
32
|
-
"test": "vitest run",
|
|
33
|
-
"test:watch": "vitest"
|
|
34
|
-
},
|
|
35
31
|
"dependencies": {
|
|
36
32
|
"@apidevtools/swagger-parser": "^12.1.0",
|
|
37
|
-
"@clarify-labs/renderer": "workspace:*",
|
|
38
33
|
"@mdx-js/rollup": "^3.1.1",
|
|
39
34
|
"@tailwindcss/vite": "^4.1.11",
|
|
40
35
|
"@vitejs/plugin-react": "^6.0.2",
|
|
@@ -51,7 +46,8 @@
|
|
|
51
46
|
"shiki": "0.14.7",
|
|
52
47
|
"unist-util-visit": "^5.1.0",
|
|
53
48
|
"vite": "^8.0.15",
|
|
54
|
-
"zod": "^4.4.3"
|
|
49
|
+
"zod": "^4.4.3",
|
|
50
|
+
"@clarify-labs/renderer": "0.2.0"
|
|
55
51
|
},
|
|
56
52
|
"devDependencies": {
|
|
57
53
|
"@mdx-js/mdx": "^3.1.1",
|
|
@@ -59,5 +55,14 @@
|
|
|
59
55
|
"typescript": "^5.8.3",
|
|
60
56
|
"vite-plugin-dts": "^4.5.4",
|
|
61
57
|
"vitest": "^4.1.9"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"dev": "vite build --watch",
|
|
61
|
+
"build": "vite build",
|
|
62
|
+
"lint": "eslint source/",
|
|
63
|
+
"lint:fix": "eslint source/ --fix",
|
|
64
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
65
|
+
"test": "vitest run",
|
|
66
|
+
"test:watch": "vitest"
|
|
62
67
|
}
|
|
63
|
-
}
|
|
68
|
+
}
|