@clusterenvision/ui-framework 1.0.0 → 1.0.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.
@@ -301,7 +301,7 @@ async function scaffoldApp(name, options = {}) {
301
301
  },
302
302
  dependencies: {
303
303
  "@clusterenvision/ui-framework": "^1.0.0",
304
- "@clusterenvision/ui-webcomponents": "^1.1.0",
304
+ "@clusterenvision/ui-webcomponents": "^1.2.1",
305
305
  "@clusterenvision/ce-ui-scss": "^1.94.2"
306
306
  },
307
307
  devDependencies: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/compile.ts","../../src/cli/runtime-timeline.js","../../src/cli/workflow-timeline.js","../../src/cli/config.ts","../../src/cli/scaffold.ts","../../src/cli/test.ts","../../src/cli/index.ts"],"names":["pc","fg","chokidar","relative","resolve","readFile","createStyleScopeId","compileTemplate","scopeStyles","mkdir","dirname","writeFile","rm","join","GenMapping","basename","setSourceContent","addMapping","toEncodedMap","fs","buildRuntimeChromeTraceDocument","VALID_FORMATS","readTraceEvents","buildChromeTracePayload","buildEventsPayload","buildChromeTraceDocument","stat","readdir","spawn","Command"],"mappings":"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","file":"index.cjs","sourcesContent":["import { readFile, writeFile, mkdir, rm } from 'node:fs/promises';\nimport { dirname, join, relative, resolve, basename } from 'node:path';\nimport chokidar from 'chokidar';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\nimport { GenMapping, addMapping, setSourceContent, toEncodedMap } from '@jridgewell/gen-mapping';\nimport { compileTemplate } from '../compiler/compileTemplate.js';\nimport type { CompiledTemplate, TemplateCompileOptions } from '../compiler/types.js';\nimport { createStyleScopeId, scopeStyles } from '../shared/styleScope.js';\n\nexport interface CompileCommandOptions extends TemplateCompileOptions {\n outDir?: string;\n watch?: boolean;\n sourceMap?: boolean;\n}\n\nexport async function runCompile(pattern: string | string[], options: CompileCommandOptions = {}) {\n const compiler = new ComponentFileCompiler(options);\n const files = await compiler.compileInitial(pattern);\n if (!files.length && !options.watch) {\n console.warn(pc.yellow('No .cex files found.'));\n return;\n }\n if (options.watch) {\n await compiler.watch(pattern);\n }\n}\n\nclass ComponentFileCompiler {\n constructor(private readonly options: CompileCommandOptions) {}\n\n async compileInitial(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const files = await fg(entries, { absolute: true });\n await Promise.all(files.map(file => this.compileFile(file)));\n return files;\n }\n\n async watch(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const watcher = chokidar.watch(entries, { ignoreInitial: true });\n console.log(pc.cyan('Watching .cex files for changes...'));\n\n const recompile = async (file: string) => {\n await this.compileFile(file);\n };\n\n watcher.on('add', file => {\n void recompile(file);\n });\n watcher.on('change', file => {\n void recompile(file);\n });\n watcher.on('unlink', file => {\n void this.removeOutput(file);\n console.log(pc.dim(`removed ${relative(process.cwd(), file)}`));\n });\n\n await new Promise<void>((resolve, reject) => {\n watcher.on('error', error => {\n const normalized = error instanceof Error ? error : new Error(String(error));\n console.error(pc.red(`Watcher error: ${normalized.message}`));\n reject(normalized);\n });\n const close = () => {\n watcher\n .close()\n .then(resolve)\n .catch((err: unknown) => {\n const normalized = err instanceof Error ? err : new Error(String(err));\n reject(normalized);\n });\n };\n process.once('SIGINT', close);\n process.once('SIGTERM', close);\n });\n }\n\n private async compileFile(file: string) {\n try {\n const source = await readFile(file, 'utf8');\n const { template, styles } = parseComponentFile(source);\n const scopeId = styles.length ? createStyleScopeId(`${file}:${styles.join('|')}`) : undefined;\n const compiled = compileTemplate(template, {\n ...this.options,\n name: this.options.name ?? deriveName(file),\n scopeId,\n });\n if (scopeId) {\n compiled.scopeId = scopeId;\n }\n if (styles.length) {\n compiled.styles = scopeId ? scopeStyles(styles, scopeId) : styles;\n }\n await this.writeOutput(file, compiled, source);\n this.logSuccess(file);\n } catch (error) {\n this.logError(file, error);\n }\n }\n\n private async writeOutput(file: string, compiled: CompiledTemplate, source: string) {\n const outFile = this.resolveOutFile(file);\n await mkdir(dirname(outFile), { recursive: true });\n const emission = emitModule(compiled, {\n outFile,\n source,\n sourcePath: file,\n withSourceMap: Boolean(this.options.sourceMap),\n });\n await writeFile(outFile, emission.code, 'utf8');\n if (emission.map) {\n await writeFile(`${outFile}.map`, JSON.stringify(emission.map, null, 2), 'utf8');\n }\n }\n\n private async removeOutput(file: string) {\n const outFile = this.resolveOutFile(file);\n await rm(outFile, { force: true });\n if (this.options.sourceMap) {\n await rm(`${outFile}.map`, { force: true });\n }\n }\n\n private resolveOutFile(file: string) {\n const outDir = this.options.outDir ? resolve(this.options.outDir) : dirname(file);\n return join(outDir, `${deriveName(file)}.cex.ts`);\n }\n\n private logSuccess(file: string) {\n const outFile = this.resolveOutFile(file);\n console.log(pc.green(`compiled ${relative(process.cwd(), file)} -> ${relative(process.cwd(), outFile)}`));\n }\n\n private logError(file: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(pc.red(`failed to compile ${relative(process.cwd(), file)}: ${message}`));\n }\n}\n\nfunction parseComponentFile(source: string) {\n const templatePattern = /<template>([\\s\\S]*?)<\\/template>/i;\n const templateMatch = templatePattern.exec(source);\n if (!templateMatch) {\n throw new Error('Missing <template> block.');\n }\n const styleMatches = Array.from(source.matchAll(/<style[^>]*>([\\s\\S]*?)<\\/style>/gi));\n const styles = styleMatches.map(match => match[1].trim()).filter(Boolean);\n return { template: templateMatch[1], styles };\n}\n\ninterface EmitOptions {\n outFile: string;\n source: string;\n sourcePath: string;\n withSourceMap: boolean;\n}\n\nfunction emitModule(compiled: CompiledTemplate, options: EmitOptions) {\n const payload = JSON.stringify(compiled, null, 2);\n let code = `import type { CompiledTemplate } from '@clusterenvision/ui-framework/compiler';\nexport const template = ${payload} satisfies CompiledTemplate;\nexport default template;\n`;\n let map: object | undefined;\n if (options.withSourceMap) {\n const relSource = relative(dirname(options.outFile), options.sourcePath).replace(/\\\\/g, '/');\n const mapping = new GenMapping({ file: basename(options.outFile) });\n setSourceContent(mapping, relSource, options.source);\n addMapping(mapping, {\n source: relSource,\n original: { line: 1, column: 0 },\n generated: { line: 1, column: 0 },\n });\n map = toEncodedMap(mapping);\n code += `//# sourceMappingURL=${basename(options.outFile)}.map\\n`;\n }\n return { code, map };\n}\n\nfunction deriveName(file: string) {\n const base = file.split('/').pop() ?? 'component';\n return base.replace(/\\.[^.]+$/, '');\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildRuntimeChromeTraceDocument } from '../runtime/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runRuntimeTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildRuntimeChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildChromeTraceDocument } from '../runtime/workflow/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runWorkflowTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { readFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nexport interface CeuiCompileConfig {\n patterns: string[];\n outDir?: string;\n sourceMap?: boolean;\n}\n\nexport interface CeuiConfig {\n compile: CeuiCompileConfig;\n}\n\nexport interface LoadedConfig {\n path: string;\n config: CeuiConfig;\n}\n\nexport async function loadConfig(configPath?: string): Promise<LoadedConfig> {\n const resolved = resolve(configPath ?? 'ceui.config.json');\n const raw = await readFile(resolved, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n const config = validateConfig(parsed);\n return { path: resolved, config };\n}\n\nexport function validateConfig(input: unknown): CeuiConfig {\n if (!input || typeof input !== 'object') {\n throw new Error('Config must be a JSON object.');\n }\n const obj = input as Record<string, unknown>;\n const compile = obj.compile;\n if (!compile || typeof compile !== 'object') {\n throw new Error('Config must include a \"compile\" object.');\n }\n const compileObj = compile as Record<string, unknown>;\n const patterns = compileObj.patterns;\n if (!Array.isArray(patterns) || patterns.length === 0 || !patterns.every(item => typeof item === 'string')) {\n throw new Error('\"compile.patterns\" must be a non-empty array of strings.');\n }\n const outDir = compileObj.outDir;\n if (outDir !== undefined && typeof outDir !== 'string') {\n throw new Error('\"compile.outDir\" must be a string when provided.');\n }\n const sourceMap = compileObj.sourceMap;\n if (sourceMap !== undefined && typeof sourceMap !== 'boolean') {\n throw new Error('\"compile.sourceMap\" must be a boolean when provided.');\n }\n return {\n compile: {\n patterns,\n outDir,\n sourceMap,\n },\n } satisfies CeuiConfig;\n}\n","import { mkdir, readdir, writeFile, stat } from 'node:fs/promises';\nimport { resolve, join } from 'node:path';\nimport pc from 'picocolors';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ninterface ComponentScaffoldOptions extends ScaffoldOptions {\n dir?: string;\n}\n\nexport async function scaffoldApp(name: string, options: ScaffoldOptions = {}): Promise<void> {\n const root = resolve(process.cwd(), name);\n await ensureEmptyDir(root, options.force);\n await mkdir(join(root, 'src'), { recursive: true });\n\n await writeFileSafe(\n join(root, 'package.json'),\n JSON.stringify(\n {\n name,\n version: '0.1.0',\n private: true,\n type: 'module',\n scripts: {\n build: 'ceui build',\n watch: 'ceui watch',\n test: 'ceui test',\n typecheck: 'tsc --noEmit',\n },\n dependencies: {\n '@clusterenvision/ui-framework': '^1.0.0',\n '@clusterenvision/ui-webcomponents': '^1.1.0',\n '@clusterenvision/ce-ui-scss': '^1.94.2',\n },\n devDependencies: {\n '@types/node': '^22.7.4',\n typescript: '^5.9.3',\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'ceui.config.json'),\n JSON.stringify(\n {\n compile: {\n patterns: ['src/**/*.cex'],\n outDir: 'src/generated',\n sourceMap: true,\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'app.cex'),\n `<template>\n <main class=\"app\">\n <h1>CE UI App</h1>\n <p>Welcome to your new workspace.</p>\n </main>\n</template>\n\n<style>\n .app {\n font-family: \"Space Grotesk\", sans-serif;\n padding: 48px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'main.ts'),\n `import { defineComponent, renderComponent } from '@clusterenvision/ui-framework';\nimport template from './generated/app.cex.js';\n\nconst App = defineComponent({\n name: 'App',\n template,\n});\n\nconst target = document.getElementById('app');\nif (target) {\n renderComponent(App, { target });\n}\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'index.html'),\n `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${name}</title>\n </head>\n <body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"></script>\n </body>\n</html>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'tsconfig.json'),\n JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'Bundler',\n strict: true,\n lib: ['ES2022', 'DOM'],\n },\n include: ['src'],\n },\n null,\n 2,\n ),\n options.force,\n );\n\n console.log(pc.green(`Scaffolded CE UI app at ${root}`));\n}\n\nexport async function scaffoldComponent(name: string, options: ComponentScaffoldOptions = {}): Promise<void> {\n const dir = resolve(process.cwd(), options.dir ?? 'src/components');\n await mkdir(dir, { recursive: true });\n const fileBase = name.replace(/\\s+/g, '');\n const cexPath = join(dir, `${fileBase}.cex`);\n const tsPath = join(dir, `${fileBase}.ts`);\n\n await writeFileSafe(\n cexPath,\n `<template>\n <section class=\"${fileBase}\">\n <h2>${fileBase}</h2>\n <slot></slot>\n </section>\n</template>\n\n<style>\n .${fileBase} {\n padding: 16px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n tsPath,\n `import { defineComponent } from '@clusterenvision/ui-framework';\nimport template from './${fileBase}.cex.js';\n\nexport const ${fileBase} = defineComponent({\n name: '${fileBase}',\n template,\n});\n`,\n options.force,\n );\n\n console.log(pc.green(`Scaffolded component ${fileBase} in ${dir}`));\n}\n\nasync function ensureEmptyDir(target: string, force?: boolean): Promise<void> {\n try {\n const stats = await stat(target);\n if (!stats.isDirectory()) {\n throw new Error(`${target} exists and is not a directory.`);\n }\n const entries = await readdir(target);\n if (entries.length > 0 && !force) {\n throw new Error(`${target} is not empty. Use --force to overwrite.`);\n }\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code === 'ENOENT') {\n await mkdir(target, { recursive: true });\n return;\n }\n if (force) {\n await mkdir(target, { recursive: true });\n return;\n }\n throw error;\n }\n}\n\nasync function writeFileSafe(path: string, contents: string, force?: boolean): Promise<void> {\n if (!force) {\n try {\n await stat(path);\n throw new Error(`${path} already exists. Use --force to overwrite.`);\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code !== 'ENOENT') {\n throw error;\n }\n }\n }\n await writeFile(path, contents, 'utf8');\n}\n","import { spawn } from 'node:child_process';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\n\nexport interface TestCommandOptions {\n patterns?: string[];\n}\n\nconst DEFAULT_PATTERNS = ['tests/**/*.spec.{js,ts}', 'tests/**/*.test.{js,ts}'];\n\nexport async function runTests(options: TestCommandOptions = {}): Promise<void> {\n const patterns = options.patterns?.length ? options.patterns : DEFAULT_PATTERNS;\n const files = await fg(patterns, { absolute: true });\n if (!files.length) {\n console.log(pc.yellow('No test files found.'));\n return;\n }\n await runNodeTest(files);\n}\n\nfunction runNodeTest(files: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(process.execPath, ['--test', ...files], { stdio: 'inherit' });\n child.on('exit', code => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`Test run failed with code ${String(code ?? 'unknown')}.`));\n });\n child.on('error', error => {\n reject(error);\n });\n });\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { runCompile } from './compile.js';\nimport { runRuntimeTimeline } from './runtime-timeline.js';\nimport { runWorkflowTimeline } from './workflow-timeline.js';\nimport { loadConfig } from './config.js';\nimport { scaffoldApp, scaffoldComponent } from './scaffold.js';\nimport { runTests } from './test.js';\n\nconst program = new Command();\n\nprogram\n .name('ceui')\n .description('CE UI framework tooling')\n .version('0.1.0');\n\nprogram\n .command('compile')\n .argument('<patterns...>', 'Glob patterns for .cex files')\n .option('-o, --out-dir <dir>', 'Output directory')\n .option('-w, --watch', 'Recompile when inputs change', false)\n .option('--source-map', 'Emit source maps for generated modules', false)\n .option('-c, --config <file>', 'Use config file for defaults')\n .action(async (patterns: string[], options: { outDir?: string; watch?: boolean; sourceMap?: boolean; config?: string }) => {\n if (options.config) {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n options.outDir ??= compile.outDir;\n options.sourceMap ??= compile.sourceMap;\n }\n await runCompile(patterns, {\n outDir: options.outDir,\n watch: options.watch,\n sourceMap: options.sourceMap,\n });\n });\n\nprogram\n .command('build')\n .description('Compile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n });\n });\n\nprogram\n .command('watch')\n .description('Watch and recompile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n watch: true,\n });\n });\n\nconst create = program.command('create').description('Scaffold CE UI apps or components');\n\ncreate\n .command('app')\n .argument('<name>', 'App folder name')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { force?: boolean }) => {\n await scaffoldApp(name, { force: Boolean(options.force) });\n });\n\ncreate\n .command('component')\n .argument('<name>', 'Component name (PascalCase)')\n .option('-d, --dir <dir>', 'Output directory', 'src/components')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { dir?: string; force?: boolean }) => {\n await scaffoldComponent(name, {\n dir: options.dir,\n force: Boolean(options.force),\n });\n });\n\nprogram\n .command('workflow:timeline')\n .description('Convert workflow trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to workflow trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runWorkflowTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('runtime:timeline')\n .description('Convert renderer/runtime trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to runtime trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runRuntimeTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('test')\n .description('Run Node.js test runner with default patterns')\n .option('-p, --pattern <patterns...>', 'Test file patterns')\n .action(async (options: { pattern?: string[] }) => {\n await runTests({ patterns: options.pattern });\n });\n\nvoid program.parseAsync(process.argv);\n"]}
1
+ {"version":3,"sources":["../../src/cli/compile.ts","../../src/cli/runtime-timeline.js","../../src/cli/workflow-timeline.js","../../src/cli/config.ts","../../src/cli/scaffold.ts","../../src/cli/test.ts","../../src/cli/index.ts"],"names":["pc","fg","chokidar","relative","resolve","readFile","createStyleScopeId","compileTemplate","scopeStyles","mkdir","dirname","writeFile","rm","join","GenMapping","basename","setSourceContent","addMapping","toEncodedMap","fs","buildRuntimeChromeTraceDocument","VALID_FORMATS","readTraceEvents","buildChromeTracePayload","buildEventsPayload","buildChromeTraceDocument","stat","readdir","spawn","Command"],"mappings":"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","file":"index.cjs","sourcesContent":["import { readFile, writeFile, mkdir, rm } from 'node:fs/promises';\nimport { dirname, join, relative, resolve, basename } from 'node:path';\nimport chokidar from 'chokidar';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\nimport { GenMapping, addMapping, setSourceContent, toEncodedMap } from '@jridgewell/gen-mapping';\nimport { compileTemplate } from '../compiler/compileTemplate.js';\nimport type { CompiledTemplate, TemplateCompileOptions } from '../compiler/types.js';\nimport { createStyleScopeId, scopeStyles } from '../shared/styleScope.js';\n\nexport interface CompileCommandOptions extends TemplateCompileOptions {\n outDir?: string;\n watch?: boolean;\n sourceMap?: boolean;\n}\n\nexport async function runCompile(pattern: string | string[], options: CompileCommandOptions = {}) {\n const compiler = new ComponentFileCompiler(options);\n const files = await compiler.compileInitial(pattern);\n if (!files.length && !options.watch) {\n console.warn(pc.yellow('No .cex files found.'));\n return;\n }\n if (options.watch) {\n await compiler.watch(pattern);\n }\n}\n\nclass ComponentFileCompiler {\n constructor(private readonly options: CompileCommandOptions) {}\n\n async compileInitial(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const files = await fg(entries, { absolute: true });\n await Promise.all(files.map(file => this.compileFile(file)));\n return files;\n }\n\n async watch(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const watcher = chokidar.watch(entries, { ignoreInitial: true });\n console.log(pc.cyan('Watching .cex files for changes...'));\n\n const recompile = async (file: string) => {\n await this.compileFile(file);\n };\n\n watcher.on('add', file => {\n void recompile(file);\n });\n watcher.on('change', file => {\n void recompile(file);\n });\n watcher.on('unlink', file => {\n void this.removeOutput(file);\n console.log(pc.dim(`removed ${relative(process.cwd(), file)}`));\n });\n\n await new Promise<void>((resolve, reject) => {\n watcher.on('error', error => {\n const normalized = error instanceof Error ? error : new Error(String(error));\n console.error(pc.red(`Watcher error: ${normalized.message}`));\n reject(normalized);\n });\n const close = () => {\n watcher\n .close()\n .then(resolve)\n .catch((err: unknown) => {\n const normalized = err instanceof Error ? err : new Error(String(err));\n reject(normalized);\n });\n };\n process.once('SIGINT', close);\n process.once('SIGTERM', close);\n });\n }\n\n private async compileFile(file: string) {\n try {\n const source = await readFile(file, 'utf8');\n const { template, styles } = parseComponentFile(source);\n const scopeId = styles.length ? createStyleScopeId(`${file}:${styles.join('|')}`) : undefined;\n const compiled = compileTemplate(template, {\n ...this.options,\n name: this.options.name ?? deriveName(file),\n scopeId,\n });\n if (scopeId) {\n compiled.scopeId = scopeId;\n }\n if (styles.length) {\n compiled.styles = scopeId ? scopeStyles(styles, scopeId) : styles;\n }\n await this.writeOutput(file, compiled, source);\n this.logSuccess(file);\n } catch (error) {\n this.logError(file, error);\n }\n }\n\n private async writeOutput(file: string, compiled: CompiledTemplate, source: string) {\n const outFile = this.resolveOutFile(file);\n await mkdir(dirname(outFile), { recursive: true });\n const emission = emitModule(compiled, {\n outFile,\n source,\n sourcePath: file,\n withSourceMap: Boolean(this.options.sourceMap),\n });\n await writeFile(outFile, emission.code, 'utf8');\n if (emission.map) {\n await writeFile(`${outFile}.map`, JSON.stringify(emission.map, null, 2), 'utf8');\n }\n }\n\n private async removeOutput(file: string) {\n const outFile = this.resolveOutFile(file);\n await rm(outFile, { force: true });\n if (this.options.sourceMap) {\n await rm(`${outFile}.map`, { force: true });\n }\n }\n\n private resolveOutFile(file: string) {\n const outDir = this.options.outDir ? resolve(this.options.outDir) : dirname(file);\n return join(outDir, `${deriveName(file)}.cex.ts`);\n }\n\n private logSuccess(file: string) {\n const outFile = this.resolveOutFile(file);\n console.log(pc.green(`compiled ${relative(process.cwd(), file)} -> ${relative(process.cwd(), outFile)}`));\n }\n\n private logError(file: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(pc.red(`failed to compile ${relative(process.cwd(), file)}: ${message}`));\n }\n}\n\nfunction parseComponentFile(source: string) {\n const templatePattern = /<template>([\\s\\S]*?)<\\/template>/i;\n const templateMatch = templatePattern.exec(source);\n if (!templateMatch) {\n throw new Error('Missing <template> block.');\n }\n const styleMatches = Array.from(source.matchAll(/<style[^>]*>([\\s\\S]*?)<\\/style>/gi));\n const styles = styleMatches.map(match => match[1].trim()).filter(Boolean);\n return { template: templateMatch[1], styles };\n}\n\ninterface EmitOptions {\n outFile: string;\n source: string;\n sourcePath: string;\n withSourceMap: boolean;\n}\n\nfunction emitModule(compiled: CompiledTemplate, options: EmitOptions) {\n const payload = JSON.stringify(compiled, null, 2);\n let code = `import type { CompiledTemplate } from '@clusterenvision/ui-framework/compiler';\nexport const template = ${payload} satisfies CompiledTemplate;\nexport default template;\n`;\n let map: object | undefined;\n if (options.withSourceMap) {\n const relSource = relative(dirname(options.outFile), options.sourcePath).replace(/\\\\/g, '/');\n const mapping = new GenMapping({ file: basename(options.outFile) });\n setSourceContent(mapping, relSource, options.source);\n addMapping(mapping, {\n source: relSource,\n original: { line: 1, column: 0 },\n generated: { line: 1, column: 0 },\n });\n map = toEncodedMap(mapping);\n code += `//# sourceMappingURL=${basename(options.outFile)}.map\\n`;\n }\n return { code, map };\n}\n\nfunction deriveName(file: string) {\n const base = file.split('/').pop() ?? 'component';\n return base.replace(/\\.[^.]+$/, '');\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildRuntimeChromeTraceDocument } from '../runtime/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runRuntimeTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildRuntimeChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildChromeTraceDocument } from '../runtime/workflow/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runWorkflowTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { readFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nexport interface CeuiCompileConfig {\n patterns: string[];\n outDir?: string;\n sourceMap?: boolean;\n}\n\nexport interface CeuiConfig {\n compile: CeuiCompileConfig;\n}\n\nexport interface LoadedConfig {\n path: string;\n config: CeuiConfig;\n}\n\nexport async function loadConfig(configPath?: string): Promise<LoadedConfig> {\n const resolved = resolve(configPath ?? 'ceui.config.json');\n const raw = await readFile(resolved, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n const config = validateConfig(parsed);\n return { path: resolved, config };\n}\n\nexport function validateConfig(input: unknown): CeuiConfig {\n if (!input || typeof input !== 'object') {\n throw new Error('Config must be a JSON object.');\n }\n const obj = input as Record<string, unknown>;\n const compile = obj.compile;\n if (!compile || typeof compile !== 'object') {\n throw new Error('Config must include a \"compile\" object.');\n }\n const compileObj = compile as Record<string, unknown>;\n const patterns = compileObj.patterns;\n if (!Array.isArray(patterns) || patterns.length === 0 || !patterns.every(item => typeof item === 'string')) {\n throw new Error('\"compile.patterns\" must be a non-empty array of strings.');\n }\n const outDir = compileObj.outDir;\n if (outDir !== undefined && typeof outDir !== 'string') {\n throw new Error('\"compile.outDir\" must be a string when provided.');\n }\n const sourceMap = compileObj.sourceMap;\n if (sourceMap !== undefined && typeof sourceMap !== 'boolean') {\n throw new Error('\"compile.sourceMap\" must be a boolean when provided.');\n }\n return {\n compile: {\n patterns,\n outDir,\n sourceMap,\n },\n } satisfies CeuiConfig;\n}\n","import { mkdir, readdir, writeFile, stat } from 'node:fs/promises';\nimport { resolve, join } from 'node:path';\nimport pc from 'picocolors';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ninterface ComponentScaffoldOptions extends ScaffoldOptions {\n dir?: string;\n}\n\nexport async function scaffoldApp(name: string, options: ScaffoldOptions = {}): Promise<void> {\n const root = resolve(process.cwd(), name);\n await ensureEmptyDir(root, options.force);\n await mkdir(join(root, 'src'), { recursive: true });\n\n await writeFileSafe(\n join(root, 'package.json'),\n JSON.stringify(\n {\n name,\n version: '0.1.0',\n private: true,\n type: 'module',\n scripts: {\n build: 'ceui build',\n watch: 'ceui watch',\n test: 'ceui test',\n typecheck: 'tsc --noEmit',\n },\n dependencies: {\n '@clusterenvision/ui-framework': '^1.0.0',\n '@clusterenvision/ui-webcomponents': '^1.2.1',\n '@clusterenvision/ce-ui-scss': '^1.94.2',\n },\n devDependencies: {\n '@types/node': '^22.7.4',\n typescript: '^5.9.3',\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'ceui.config.json'),\n JSON.stringify(\n {\n compile: {\n patterns: ['src/**/*.cex'],\n outDir: 'src/generated',\n sourceMap: true,\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'app.cex'),\n `<template>\n <main class=\"app\">\n <h1>CE UI App</h1>\n <p>Welcome to your new workspace.</p>\n </main>\n</template>\n\n<style>\n .app {\n font-family: \"Space Grotesk\", sans-serif;\n padding: 48px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'main.ts'),\n `import { defineComponent, renderComponent } from '@clusterenvision/ui-framework';\nimport template from './generated/app.cex.js';\n\nconst App = defineComponent({\n name: 'App',\n template,\n});\n\nconst target = document.getElementById('app');\nif (target) {\n renderComponent(App, { target });\n}\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'index.html'),\n `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${name}</title>\n </head>\n <body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"></script>\n </body>\n</html>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'tsconfig.json'),\n JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'Bundler',\n strict: true,\n lib: ['ES2022', 'DOM'],\n },\n include: ['src'],\n },\n null,\n 2,\n ),\n options.force,\n );\n\n console.log(pc.green(`Scaffolded CE UI app at ${root}`));\n}\n\nexport async function scaffoldComponent(name: string, options: ComponentScaffoldOptions = {}): Promise<void> {\n const dir = resolve(process.cwd(), options.dir ?? 'src/components');\n await mkdir(dir, { recursive: true });\n const fileBase = name.replace(/\\s+/g, '');\n const cexPath = join(dir, `${fileBase}.cex`);\n const tsPath = join(dir, `${fileBase}.ts`);\n\n await writeFileSafe(\n cexPath,\n `<template>\n <section class=\"${fileBase}\">\n <h2>${fileBase}</h2>\n <slot></slot>\n </section>\n</template>\n\n<style>\n .${fileBase} {\n padding: 16px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n tsPath,\n `import { defineComponent } from '@clusterenvision/ui-framework';\nimport template from './${fileBase}.cex.js';\n\nexport const ${fileBase} = defineComponent({\n name: '${fileBase}',\n template,\n});\n`,\n options.force,\n );\n\n console.log(pc.green(`Scaffolded component ${fileBase} in ${dir}`));\n}\n\nasync function ensureEmptyDir(target: string, force?: boolean): Promise<void> {\n try {\n const stats = await stat(target);\n if (!stats.isDirectory()) {\n throw new Error(`${target} exists and is not a directory.`);\n }\n const entries = await readdir(target);\n if (entries.length > 0 && !force) {\n throw new Error(`${target} is not empty. Use --force to overwrite.`);\n }\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code === 'ENOENT') {\n await mkdir(target, { recursive: true });\n return;\n }\n if (force) {\n await mkdir(target, { recursive: true });\n return;\n }\n throw error;\n }\n}\n\nasync function writeFileSafe(path: string, contents: string, force?: boolean): Promise<void> {\n if (!force) {\n try {\n await stat(path);\n throw new Error(`${path} already exists. Use --force to overwrite.`);\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code !== 'ENOENT') {\n throw error;\n }\n }\n }\n await writeFile(path, contents, 'utf8');\n}\n","import { spawn } from 'node:child_process';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\n\nexport interface TestCommandOptions {\n patterns?: string[];\n}\n\nconst DEFAULT_PATTERNS = ['tests/**/*.spec.{js,ts}', 'tests/**/*.test.{js,ts}'];\n\nexport async function runTests(options: TestCommandOptions = {}): Promise<void> {\n const patterns = options.patterns?.length ? options.patterns : DEFAULT_PATTERNS;\n const files = await fg(patterns, { absolute: true });\n if (!files.length) {\n console.log(pc.yellow('No test files found.'));\n return;\n }\n await runNodeTest(files);\n}\n\nfunction runNodeTest(files: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(process.execPath, ['--test', ...files], { stdio: 'inherit' });\n child.on('exit', code => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`Test run failed with code ${String(code ?? 'unknown')}.`));\n });\n child.on('error', error => {\n reject(error);\n });\n });\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { runCompile } from './compile.js';\nimport { runRuntimeTimeline } from './runtime-timeline.js';\nimport { runWorkflowTimeline } from './workflow-timeline.js';\nimport { loadConfig } from './config.js';\nimport { scaffoldApp, scaffoldComponent } from './scaffold.js';\nimport { runTests } from './test.js';\n\nconst program = new Command();\n\nprogram\n .name('ceui')\n .description('CE UI framework tooling')\n .version('0.1.0');\n\nprogram\n .command('compile')\n .argument('<patterns...>', 'Glob patterns for .cex files')\n .option('-o, --out-dir <dir>', 'Output directory')\n .option('-w, --watch', 'Recompile when inputs change', false)\n .option('--source-map', 'Emit source maps for generated modules', false)\n .option('-c, --config <file>', 'Use config file for defaults')\n .action(async (patterns: string[], options: { outDir?: string; watch?: boolean; sourceMap?: boolean; config?: string }) => {\n if (options.config) {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n options.outDir ??= compile.outDir;\n options.sourceMap ??= compile.sourceMap;\n }\n await runCompile(patterns, {\n outDir: options.outDir,\n watch: options.watch,\n sourceMap: options.sourceMap,\n });\n });\n\nprogram\n .command('build')\n .description('Compile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n });\n });\n\nprogram\n .command('watch')\n .description('Watch and recompile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n watch: true,\n });\n });\n\nconst create = program.command('create').description('Scaffold CE UI apps or components');\n\ncreate\n .command('app')\n .argument('<name>', 'App folder name')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { force?: boolean }) => {\n await scaffoldApp(name, { force: Boolean(options.force) });\n });\n\ncreate\n .command('component')\n .argument('<name>', 'Component name (PascalCase)')\n .option('-d, --dir <dir>', 'Output directory', 'src/components')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { dir?: string; force?: boolean }) => {\n await scaffoldComponent(name, {\n dir: options.dir,\n force: Boolean(options.force),\n });\n });\n\nprogram\n .command('workflow:timeline')\n .description('Convert workflow trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to workflow trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runWorkflowTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('runtime:timeline')\n .description('Convert renderer/runtime trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to runtime trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runRuntimeTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('test')\n .description('Run Node.js test runner with default patterns')\n .option('-p, --pattern <patterns...>', 'Test file patterns')\n .action(async (options: { pattern?: string[] }) => {\n await runTests({ patterns: options.pattern });\n });\n\nvoid program.parseAsync(process.argv);\n"]}
package/dist/cli/index.js CHANGED
@@ -293,7 +293,7 @@ async function scaffoldApp(name, options = {}) {
293
293
  },
294
294
  dependencies: {
295
295
  "@clusterenvision/ui-framework": "^1.0.0",
296
- "@clusterenvision/ui-webcomponents": "^1.1.0",
296
+ "@clusterenvision/ui-webcomponents": "^1.2.1",
297
297
  "@clusterenvision/ce-ui-scss": "^1.94.2"
298
298
  },
299
299
  devDependencies: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/compile.ts","../../src/cli/runtime-timeline.js","../../src/cli/workflow-timeline.js","../../src/cli/config.ts","../../src/cli/scaffold.ts","../../src/cli/test.ts","../../src/cli/index.ts"],"names":["resolve","fs","VALID_FORMATS","readTraceEvents","buildChromeTracePayload","buildEventsPayload","readFile","mkdir","join","pc","writeFile","fg"],"mappings":"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","file":"index.js","sourcesContent":["import { readFile, writeFile, mkdir, rm } from 'node:fs/promises';\nimport { dirname, join, relative, resolve, basename } from 'node:path';\nimport chokidar from 'chokidar';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\nimport { GenMapping, addMapping, setSourceContent, toEncodedMap } from '@jridgewell/gen-mapping';\nimport { compileTemplate } from '../compiler/compileTemplate.js';\nimport type { CompiledTemplate, TemplateCompileOptions } from '../compiler/types.js';\nimport { createStyleScopeId, scopeStyles } from '../shared/styleScope.js';\n\nexport interface CompileCommandOptions extends TemplateCompileOptions {\n outDir?: string;\n watch?: boolean;\n sourceMap?: boolean;\n}\n\nexport async function runCompile(pattern: string | string[], options: CompileCommandOptions = {}) {\n const compiler = new ComponentFileCompiler(options);\n const files = await compiler.compileInitial(pattern);\n if (!files.length && !options.watch) {\n console.warn(pc.yellow('No .cex files found.'));\n return;\n }\n if (options.watch) {\n await compiler.watch(pattern);\n }\n}\n\nclass ComponentFileCompiler {\n constructor(private readonly options: CompileCommandOptions) {}\n\n async compileInitial(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const files = await fg(entries, { absolute: true });\n await Promise.all(files.map(file => this.compileFile(file)));\n return files;\n }\n\n async watch(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const watcher = chokidar.watch(entries, { ignoreInitial: true });\n console.log(pc.cyan('Watching .cex files for changes...'));\n\n const recompile = async (file: string) => {\n await this.compileFile(file);\n };\n\n watcher.on('add', file => {\n void recompile(file);\n });\n watcher.on('change', file => {\n void recompile(file);\n });\n watcher.on('unlink', file => {\n void this.removeOutput(file);\n console.log(pc.dim(`removed ${relative(process.cwd(), file)}`));\n });\n\n await new Promise<void>((resolve, reject) => {\n watcher.on('error', error => {\n const normalized = error instanceof Error ? error : new Error(String(error));\n console.error(pc.red(`Watcher error: ${normalized.message}`));\n reject(normalized);\n });\n const close = () => {\n watcher\n .close()\n .then(resolve)\n .catch((err: unknown) => {\n const normalized = err instanceof Error ? err : new Error(String(err));\n reject(normalized);\n });\n };\n process.once('SIGINT', close);\n process.once('SIGTERM', close);\n });\n }\n\n private async compileFile(file: string) {\n try {\n const source = await readFile(file, 'utf8');\n const { template, styles } = parseComponentFile(source);\n const scopeId = styles.length ? createStyleScopeId(`${file}:${styles.join('|')}`) : undefined;\n const compiled = compileTemplate(template, {\n ...this.options,\n name: this.options.name ?? deriveName(file),\n scopeId,\n });\n if (scopeId) {\n compiled.scopeId = scopeId;\n }\n if (styles.length) {\n compiled.styles = scopeId ? scopeStyles(styles, scopeId) : styles;\n }\n await this.writeOutput(file, compiled, source);\n this.logSuccess(file);\n } catch (error) {\n this.logError(file, error);\n }\n }\n\n private async writeOutput(file: string, compiled: CompiledTemplate, source: string) {\n const outFile = this.resolveOutFile(file);\n await mkdir(dirname(outFile), { recursive: true });\n const emission = emitModule(compiled, {\n outFile,\n source,\n sourcePath: file,\n withSourceMap: Boolean(this.options.sourceMap),\n });\n await writeFile(outFile, emission.code, 'utf8');\n if (emission.map) {\n await writeFile(`${outFile}.map`, JSON.stringify(emission.map, null, 2), 'utf8');\n }\n }\n\n private async removeOutput(file: string) {\n const outFile = this.resolveOutFile(file);\n await rm(outFile, { force: true });\n if (this.options.sourceMap) {\n await rm(`${outFile}.map`, { force: true });\n }\n }\n\n private resolveOutFile(file: string) {\n const outDir = this.options.outDir ? resolve(this.options.outDir) : dirname(file);\n return join(outDir, `${deriveName(file)}.cex.ts`);\n }\n\n private logSuccess(file: string) {\n const outFile = this.resolveOutFile(file);\n console.log(pc.green(`compiled ${relative(process.cwd(), file)} -> ${relative(process.cwd(), outFile)}`));\n }\n\n private logError(file: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(pc.red(`failed to compile ${relative(process.cwd(), file)}: ${message}`));\n }\n}\n\nfunction parseComponentFile(source: string) {\n const templatePattern = /<template>([\\s\\S]*?)<\\/template>/i;\n const templateMatch = templatePattern.exec(source);\n if (!templateMatch) {\n throw new Error('Missing <template> block.');\n }\n const styleMatches = Array.from(source.matchAll(/<style[^>]*>([\\s\\S]*?)<\\/style>/gi));\n const styles = styleMatches.map(match => match[1].trim()).filter(Boolean);\n return { template: templateMatch[1], styles };\n}\n\ninterface EmitOptions {\n outFile: string;\n source: string;\n sourcePath: string;\n withSourceMap: boolean;\n}\n\nfunction emitModule(compiled: CompiledTemplate, options: EmitOptions) {\n const payload = JSON.stringify(compiled, null, 2);\n let code = `import type { CompiledTemplate } from '@clusterenvision/ui-framework/compiler';\nexport const template = ${payload} satisfies CompiledTemplate;\nexport default template;\n`;\n let map: object | undefined;\n if (options.withSourceMap) {\n const relSource = relative(dirname(options.outFile), options.sourcePath).replace(/\\\\/g, '/');\n const mapping = new GenMapping({ file: basename(options.outFile) });\n setSourceContent(mapping, relSource, options.source);\n addMapping(mapping, {\n source: relSource,\n original: { line: 1, column: 0 },\n generated: { line: 1, column: 0 },\n });\n map = toEncodedMap(mapping);\n code += `//# sourceMappingURL=${basename(options.outFile)}.map\\n`;\n }\n return { code, map };\n}\n\nfunction deriveName(file: string) {\n const base = file.split('/').pop() ?? 'component';\n return base.replace(/\\.[^.]+$/, '');\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildRuntimeChromeTraceDocument } from '../runtime/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runRuntimeTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildRuntimeChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildChromeTraceDocument } from '../runtime/workflow/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runWorkflowTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { readFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nexport interface CeuiCompileConfig {\n patterns: string[];\n outDir?: string;\n sourceMap?: boolean;\n}\n\nexport interface CeuiConfig {\n compile: CeuiCompileConfig;\n}\n\nexport interface LoadedConfig {\n path: string;\n config: CeuiConfig;\n}\n\nexport async function loadConfig(configPath?: string): Promise<LoadedConfig> {\n const resolved = resolve(configPath ?? 'ceui.config.json');\n const raw = await readFile(resolved, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n const config = validateConfig(parsed);\n return { path: resolved, config };\n}\n\nexport function validateConfig(input: unknown): CeuiConfig {\n if (!input || typeof input !== 'object') {\n throw new Error('Config must be a JSON object.');\n }\n const obj = input as Record<string, unknown>;\n const compile = obj.compile;\n if (!compile || typeof compile !== 'object') {\n throw new Error('Config must include a \"compile\" object.');\n }\n const compileObj = compile as Record<string, unknown>;\n const patterns = compileObj.patterns;\n if (!Array.isArray(patterns) || patterns.length === 0 || !patterns.every(item => typeof item === 'string')) {\n throw new Error('\"compile.patterns\" must be a non-empty array of strings.');\n }\n const outDir = compileObj.outDir;\n if (outDir !== undefined && typeof outDir !== 'string') {\n throw new Error('\"compile.outDir\" must be a string when provided.');\n }\n const sourceMap = compileObj.sourceMap;\n if (sourceMap !== undefined && typeof sourceMap !== 'boolean') {\n throw new Error('\"compile.sourceMap\" must be a boolean when provided.');\n }\n return {\n compile: {\n patterns,\n outDir,\n sourceMap,\n },\n } satisfies CeuiConfig;\n}\n","import { mkdir, readdir, writeFile, stat } from 'node:fs/promises';\nimport { resolve, join } from 'node:path';\nimport pc from 'picocolors';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ninterface ComponentScaffoldOptions extends ScaffoldOptions {\n dir?: string;\n}\n\nexport async function scaffoldApp(name: string, options: ScaffoldOptions = {}): Promise<void> {\n const root = resolve(process.cwd(), name);\n await ensureEmptyDir(root, options.force);\n await mkdir(join(root, 'src'), { recursive: true });\n\n await writeFileSafe(\n join(root, 'package.json'),\n JSON.stringify(\n {\n name,\n version: '0.1.0',\n private: true,\n type: 'module',\n scripts: {\n build: 'ceui build',\n watch: 'ceui watch',\n test: 'ceui test',\n typecheck: 'tsc --noEmit',\n },\n dependencies: {\n '@clusterenvision/ui-framework': '^1.0.0',\n '@clusterenvision/ui-webcomponents': '^1.1.0',\n '@clusterenvision/ce-ui-scss': '^1.94.2',\n },\n devDependencies: {\n '@types/node': '^22.7.4',\n typescript: '^5.9.3',\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'ceui.config.json'),\n JSON.stringify(\n {\n compile: {\n patterns: ['src/**/*.cex'],\n outDir: 'src/generated',\n sourceMap: true,\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'app.cex'),\n `<template>\n <main class=\"app\">\n <h1>CE UI App</h1>\n <p>Welcome to your new workspace.</p>\n </main>\n</template>\n\n<style>\n .app {\n font-family: \"Space Grotesk\", sans-serif;\n padding: 48px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'main.ts'),\n `import { defineComponent, renderComponent } from '@clusterenvision/ui-framework';\nimport template from './generated/app.cex.js';\n\nconst App = defineComponent({\n name: 'App',\n template,\n});\n\nconst target = document.getElementById('app');\nif (target) {\n renderComponent(App, { target });\n}\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'index.html'),\n `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${name}</title>\n </head>\n <body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"></script>\n </body>\n</html>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'tsconfig.json'),\n JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'Bundler',\n strict: true,\n lib: ['ES2022', 'DOM'],\n },\n include: ['src'],\n },\n null,\n 2,\n ),\n options.force,\n );\n\n console.log(pc.green(`Scaffolded CE UI app at ${root}`));\n}\n\nexport async function scaffoldComponent(name: string, options: ComponentScaffoldOptions = {}): Promise<void> {\n const dir = resolve(process.cwd(), options.dir ?? 'src/components');\n await mkdir(dir, { recursive: true });\n const fileBase = name.replace(/\\s+/g, '');\n const cexPath = join(dir, `${fileBase}.cex`);\n const tsPath = join(dir, `${fileBase}.ts`);\n\n await writeFileSafe(\n cexPath,\n `<template>\n <section class=\"${fileBase}\">\n <h2>${fileBase}</h2>\n <slot></slot>\n </section>\n</template>\n\n<style>\n .${fileBase} {\n padding: 16px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n tsPath,\n `import { defineComponent } from '@clusterenvision/ui-framework';\nimport template from './${fileBase}.cex.js';\n\nexport const ${fileBase} = defineComponent({\n name: '${fileBase}',\n template,\n});\n`,\n options.force,\n );\n\n console.log(pc.green(`Scaffolded component ${fileBase} in ${dir}`));\n}\n\nasync function ensureEmptyDir(target: string, force?: boolean): Promise<void> {\n try {\n const stats = await stat(target);\n if (!stats.isDirectory()) {\n throw new Error(`${target} exists and is not a directory.`);\n }\n const entries = await readdir(target);\n if (entries.length > 0 && !force) {\n throw new Error(`${target} is not empty. Use --force to overwrite.`);\n }\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code === 'ENOENT') {\n await mkdir(target, { recursive: true });\n return;\n }\n if (force) {\n await mkdir(target, { recursive: true });\n return;\n }\n throw error;\n }\n}\n\nasync function writeFileSafe(path: string, contents: string, force?: boolean): Promise<void> {\n if (!force) {\n try {\n await stat(path);\n throw new Error(`${path} already exists. Use --force to overwrite.`);\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code !== 'ENOENT') {\n throw error;\n }\n }\n }\n await writeFile(path, contents, 'utf8');\n}\n","import { spawn } from 'node:child_process';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\n\nexport interface TestCommandOptions {\n patterns?: string[];\n}\n\nconst DEFAULT_PATTERNS = ['tests/**/*.spec.{js,ts}', 'tests/**/*.test.{js,ts}'];\n\nexport async function runTests(options: TestCommandOptions = {}): Promise<void> {\n const patterns = options.patterns?.length ? options.patterns : DEFAULT_PATTERNS;\n const files = await fg(patterns, { absolute: true });\n if (!files.length) {\n console.log(pc.yellow('No test files found.'));\n return;\n }\n await runNodeTest(files);\n}\n\nfunction runNodeTest(files: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(process.execPath, ['--test', ...files], { stdio: 'inherit' });\n child.on('exit', code => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`Test run failed with code ${String(code ?? 'unknown')}.`));\n });\n child.on('error', error => {\n reject(error);\n });\n });\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { runCompile } from './compile.js';\nimport { runRuntimeTimeline } from './runtime-timeline.js';\nimport { runWorkflowTimeline } from './workflow-timeline.js';\nimport { loadConfig } from './config.js';\nimport { scaffoldApp, scaffoldComponent } from './scaffold.js';\nimport { runTests } from './test.js';\n\nconst program = new Command();\n\nprogram\n .name('ceui')\n .description('CE UI framework tooling')\n .version('0.1.0');\n\nprogram\n .command('compile')\n .argument('<patterns...>', 'Glob patterns for .cex files')\n .option('-o, --out-dir <dir>', 'Output directory')\n .option('-w, --watch', 'Recompile when inputs change', false)\n .option('--source-map', 'Emit source maps for generated modules', false)\n .option('-c, --config <file>', 'Use config file for defaults')\n .action(async (patterns: string[], options: { outDir?: string; watch?: boolean; sourceMap?: boolean; config?: string }) => {\n if (options.config) {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n options.outDir ??= compile.outDir;\n options.sourceMap ??= compile.sourceMap;\n }\n await runCompile(patterns, {\n outDir: options.outDir,\n watch: options.watch,\n sourceMap: options.sourceMap,\n });\n });\n\nprogram\n .command('build')\n .description('Compile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n });\n });\n\nprogram\n .command('watch')\n .description('Watch and recompile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n watch: true,\n });\n });\n\nconst create = program.command('create').description('Scaffold CE UI apps or components');\n\ncreate\n .command('app')\n .argument('<name>', 'App folder name')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { force?: boolean }) => {\n await scaffoldApp(name, { force: Boolean(options.force) });\n });\n\ncreate\n .command('component')\n .argument('<name>', 'Component name (PascalCase)')\n .option('-d, --dir <dir>', 'Output directory', 'src/components')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { dir?: string; force?: boolean }) => {\n await scaffoldComponent(name, {\n dir: options.dir,\n force: Boolean(options.force),\n });\n });\n\nprogram\n .command('workflow:timeline')\n .description('Convert workflow trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to workflow trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runWorkflowTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('runtime:timeline')\n .description('Convert renderer/runtime trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to runtime trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runRuntimeTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('test')\n .description('Run Node.js test runner with default patterns')\n .option('-p, --pattern <patterns...>', 'Test file patterns')\n .action(async (options: { pattern?: string[] }) => {\n await runTests({ patterns: options.pattern });\n });\n\nvoid program.parseAsync(process.argv);\n"]}
1
+ {"version":3,"sources":["../../src/cli/compile.ts","../../src/cli/runtime-timeline.js","../../src/cli/workflow-timeline.js","../../src/cli/config.ts","../../src/cli/scaffold.ts","../../src/cli/test.ts","../../src/cli/index.ts"],"names":["resolve","fs","VALID_FORMATS","readTraceEvents","buildChromeTracePayload","buildEventsPayload","readFile","mkdir","join","pc","writeFile","fg"],"mappings":"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","file":"index.js","sourcesContent":["import { readFile, writeFile, mkdir, rm } from 'node:fs/promises';\nimport { dirname, join, relative, resolve, basename } from 'node:path';\nimport chokidar from 'chokidar';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\nimport { GenMapping, addMapping, setSourceContent, toEncodedMap } from '@jridgewell/gen-mapping';\nimport { compileTemplate } from '../compiler/compileTemplate.js';\nimport type { CompiledTemplate, TemplateCompileOptions } from '../compiler/types.js';\nimport { createStyleScopeId, scopeStyles } from '../shared/styleScope.js';\n\nexport interface CompileCommandOptions extends TemplateCompileOptions {\n outDir?: string;\n watch?: boolean;\n sourceMap?: boolean;\n}\n\nexport async function runCompile(pattern: string | string[], options: CompileCommandOptions = {}) {\n const compiler = new ComponentFileCompiler(options);\n const files = await compiler.compileInitial(pattern);\n if (!files.length && !options.watch) {\n console.warn(pc.yellow('No .cex files found.'));\n return;\n }\n if (options.watch) {\n await compiler.watch(pattern);\n }\n}\n\nclass ComponentFileCompiler {\n constructor(private readonly options: CompileCommandOptions) {}\n\n async compileInitial(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const files = await fg(entries, { absolute: true });\n await Promise.all(files.map(file => this.compileFile(file)));\n return files;\n }\n\n async watch(pattern: string | string[]) {\n const entries = Array.isArray(pattern) ? pattern : [pattern];\n const watcher = chokidar.watch(entries, { ignoreInitial: true });\n console.log(pc.cyan('Watching .cex files for changes...'));\n\n const recompile = async (file: string) => {\n await this.compileFile(file);\n };\n\n watcher.on('add', file => {\n void recompile(file);\n });\n watcher.on('change', file => {\n void recompile(file);\n });\n watcher.on('unlink', file => {\n void this.removeOutput(file);\n console.log(pc.dim(`removed ${relative(process.cwd(), file)}`));\n });\n\n await new Promise<void>((resolve, reject) => {\n watcher.on('error', error => {\n const normalized = error instanceof Error ? error : new Error(String(error));\n console.error(pc.red(`Watcher error: ${normalized.message}`));\n reject(normalized);\n });\n const close = () => {\n watcher\n .close()\n .then(resolve)\n .catch((err: unknown) => {\n const normalized = err instanceof Error ? err : new Error(String(err));\n reject(normalized);\n });\n };\n process.once('SIGINT', close);\n process.once('SIGTERM', close);\n });\n }\n\n private async compileFile(file: string) {\n try {\n const source = await readFile(file, 'utf8');\n const { template, styles } = parseComponentFile(source);\n const scopeId = styles.length ? createStyleScopeId(`${file}:${styles.join('|')}`) : undefined;\n const compiled = compileTemplate(template, {\n ...this.options,\n name: this.options.name ?? deriveName(file),\n scopeId,\n });\n if (scopeId) {\n compiled.scopeId = scopeId;\n }\n if (styles.length) {\n compiled.styles = scopeId ? scopeStyles(styles, scopeId) : styles;\n }\n await this.writeOutput(file, compiled, source);\n this.logSuccess(file);\n } catch (error) {\n this.logError(file, error);\n }\n }\n\n private async writeOutput(file: string, compiled: CompiledTemplate, source: string) {\n const outFile = this.resolveOutFile(file);\n await mkdir(dirname(outFile), { recursive: true });\n const emission = emitModule(compiled, {\n outFile,\n source,\n sourcePath: file,\n withSourceMap: Boolean(this.options.sourceMap),\n });\n await writeFile(outFile, emission.code, 'utf8');\n if (emission.map) {\n await writeFile(`${outFile}.map`, JSON.stringify(emission.map, null, 2), 'utf8');\n }\n }\n\n private async removeOutput(file: string) {\n const outFile = this.resolveOutFile(file);\n await rm(outFile, { force: true });\n if (this.options.sourceMap) {\n await rm(`${outFile}.map`, { force: true });\n }\n }\n\n private resolveOutFile(file: string) {\n const outDir = this.options.outDir ? resolve(this.options.outDir) : dirname(file);\n return join(outDir, `${deriveName(file)}.cex.ts`);\n }\n\n private logSuccess(file: string) {\n const outFile = this.resolveOutFile(file);\n console.log(pc.green(`compiled ${relative(process.cwd(), file)} -> ${relative(process.cwd(), outFile)}`));\n }\n\n private logError(file: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(pc.red(`failed to compile ${relative(process.cwd(), file)}: ${message}`));\n }\n}\n\nfunction parseComponentFile(source: string) {\n const templatePattern = /<template>([\\s\\S]*?)<\\/template>/i;\n const templateMatch = templatePattern.exec(source);\n if (!templateMatch) {\n throw new Error('Missing <template> block.');\n }\n const styleMatches = Array.from(source.matchAll(/<style[^>]*>([\\s\\S]*?)<\\/style>/gi));\n const styles = styleMatches.map(match => match[1].trim()).filter(Boolean);\n return { template: templateMatch[1], styles };\n}\n\ninterface EmitOptions {\n outFile: string;\n source: string;\n sourcePath: string;\n withSourceMap: boolean;\n}\n\nfunction emitModule(compiled: CompiledTemplate, options: EmitOptions) {\n const payload = JSON.stringify(compiled, null, 2);\n let code = `import type { CompiledTemplate } from '@clusterenvision/ui-framework/compiler';\nexport const template = ${payload} satisfies CompiledTemplate;\nexport default template;\n`;\n let map: object | undefined;\n if (options.withSourceMap) {\n const relSource = relative(dirname(options.outFile), options.sourcePath).replace(/\\\\/g, '/');\n const mapping = new GenMapping({ file: basename(options.outFile) });\n setSourceContent(mapping, relSource, options.source);\n addMapping(mapping, {\n source: relSource,\n original: { line: 1, column: 0 },\n generated: { line: 1, column: 0 },\n });\n map = toEncodedMap(mapping);\n code += `//# sourceMappingURL=${basename(options.outFile)}.map\\n`;\n }\n return { code, map };\n}\n\nfunction deriveName(file: string) {\n const base = file.split('/').pop() ?? 'component';\n return base.replace(/\\.[^.]+$/, '');\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildRuntimeChromeTraceDocument } from '../runtime/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runRuntimeTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildRuntimeChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { promises as fs } from 'node:fs';\n\nimport { buildChromeTraceDocument } from '../runtime/workflow/timeline.js';\n\nconst VALID_FORMATS = new Set(['chrome', 'events']);\n\nexport async function runWorkflowTimeline(options) {\n const format = options.format ?? 'chrome';\n if (!VALID_FORMATS.has(format)) {\n throw new Error(`Unsupported format '${format}'. Expected one of: ${[...VALID_FORMATS].join(', ')}`);\n }\n const events = await readTraceEvents(options.input);\n const payload = format === 'chrome' ? buildChromeTracePayload(events) : buildEventsPayload(events);\n if (options.output) {\n await fs.writeFile(options.output, payload, 'utf8');\n return;\n }\n process.stdout.write(`${payload}\\n`);\n}\n\nasync function readTraceEvents(filePath) {\n const contents = await fs.readFile(filePath, 'utf8');\n const trimmed = contents.trim();\n if (!trimmed) {\n return [];\n }\n const serialized = trimmed.startsWith('[')\n ? JSON.parse(trimmed)\n : trimmed\n .split('\\n')\n .map(line => line.trim())\n .filter(Boolean)\n .map(line => JSON.parse(line));\n return serialized.map(event => ({\n ...event,\n timestamp: new Date(event.timestamp),\n }));\n}\n\nfunction buildChromeTracePayload(events) {\n const document = buildChromeTraceDocument(events);\n return JSON.stringify(document, null, 2);\n}\n\nfunction buildEventsPayload(events) {\n const serialized = events.map(event => ({\n ...event,\n timestamp: event.timestamp.toISOString(),\n }));\n return JSON.stringify(serialized, null, 2);\n}\n","import { readFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nexport interface CeuiCompileConfig {\n patterns: string[];\n outDir?: string;\n sourceMap?: boolean;\n}\n\nexport interface CeuiConfig {\n compile: CeuiCompileConfig;\n}\n\nexport interface LoadedConfig {\n path: string;\n config: CeuiConfig;\n}\n\nexport async function loadConfig(configPath?: string): Promise<LoadedConfig> {\n const resolved = resolve(configPath ?? 'ceui.config.json');\n const raw = await readFile(resolved, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n const config = validateConfig(parsed);\n return { path: resolved, config };\n}\n\nexport function validateConfig(input: unknown): CeuiConfig {\n if (!input || typeof input !== 'object') {\n throw new Error('Config must be a JSON object.');\n }\n const obj = input as Record<string, unknown>;\n const compile = obj.compile;\n if (!compile || typeof compile !== 'object') {\n throw new Error('Config must include a \"compile\" object.');\n }\n const compileObj = compile as Record<string, unknown>;\n const patterns = compileObj.patterns;\n if (!Array.isArray(patterns) || patterns.length === 0 || !patterns.every(item => typeof item === 'string')) {\n throw new Error('\"compile.patterns\" must be a non-empty array of strings.');\n }\n const outDir = compileObj.outDir;\n if (outDir !== undefined && typeof outDir !== 'string') {\n throw new Error('\"compile.outDir\" must be a string when provided.');\n }\n const sourceMap = compileObj.sourceMap;\n if (sourceMap !== undefined && typeof sourceMap !== 'boolean') {\n throw new Error('\"compile.sourceMap\" must be a boolean when provided.');\n }\n return {\n compile: {\n patterns,\n outDir,\n sourceMap,\n },\n } satisfies CeuiConfig;\n}\n","import { mkdir, readdir, writeFile, stat } from 'node:fs/promises';\nimport { resolve, join } from 'node:path';\nimport pc from 'picocolors';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ninterface ComponentScaffoldOptions extends ScaffoldOptions {\n dir?: string;\n}\n\nexport async function scaffoldApp(name: string, options: ScaffoldOptions = {}): Promise<void> {\n const root = resolve(process.cwd(), name);\n await ensureEmptyDir(root, options.force);\n await mkdir(join(root, 'src'), { recursive: true });\n\n await writeFileSafe(\n join(root, 'package.json'),\n JSON.stringify(\n {\n name,\n version: '0.1.0',\n private: true,\n type: 'module',\n scripts: {\n build: 'ceui build',\n watch: 'ceui watch',\n test: 'ceui test',\n typecheck: 'tsc --noEmit',\n },\n dependencies: {\n '@clusterenvision/ui-framework': '^1.0.0',\n '@clusterenvision/ui-webcomponents': '^1.2.1',\n '@clusterenvision/ce-ui-scss': '^1.94.2',\n },\n devDependencies: {\n '@types/node': '^22.7.4',\n typescript: '^5.9.3',\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'ceui.config.json'),\n JSON.stringify(\n {\n compile: {\n patterns: ['src/**/*.cex'],\n outDir: 'src/generated',\n sourceMap: true,\n },\n },\n null,\n 2,\n ),\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'app.cex'),\n `<template>\n <main class=\"app\">\n <h1>CE UI App</h1>\n <p>Welcome to your new workspace.</p>\n </main>\n</template>\n\n<style>\n .app {\n font-family: \"Space Grotesk\", sans-serif;\n padding: 48px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'src', 'main.ts'),\n `import { defineComponent, renderComponent } from '@clusterenvision/ui-framework';\nimport template from './generated/app.cex.js';\n\nconst App = defineComponent({\n name: 'App',\n template,\n});\n\nconst target = document.getElementById('app');\nif (target) {\n renderComponent(App, { target });\n}\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'index.html'),\n `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${name}</title>\n </head>\n <body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/main.ts\"></script>\n </body>\n</html>\n`,\n options.force,\n );\n\n await writeFileSafe(\n join(root, 'tsconfig.json'),\n JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'Bundler',\n strict: true,\n lib: ['ES2022', 'DOM'],\n },\n include: ['src'],\n },\n null,\n 2,\n ),\n options.force,\n );\n\n console.log(pc.green(`Scaffolded CE UI app at ${root}`));\n}\n\nexport async function scaffoldComponent(name: string, options: ComponentScaffoldOptions = {}): Promise<void> {\n const dir = resolve(process.cwd(), options.dir ?? 'src/components');\n await mkdir(dir, { recursive: true });\n const fileBase = name.replace(/\\s+/g, '');\n const cexPath = join(dir, `${fileBase}.cex`);\n const tsPath = join(dir, `${fileBase}.ts`);\n\n await writeFileSafe(\n cexPath,\n `<template>\n <section class=\"${fileBase}\">\n <h2>${fileBase}</h2>\n <slot></slot>\n </section>\n</template>\n\n<style>\n .${fileBase} {\n padding: 16px;\n }\n</style>\n`,\n options.force,\n );\n\n await writeFileSafe(\n tsPath,\n `import { defineComponent } from '@clusterenvision/ui-framework';\nimport template from './${fileBase}.cex.js';\n\nexport const ${fileBase} = defineComponent({\n name: '${fileBase}',\n template,\n});\n`,\n options.force,\n );\n\n console.log(pc.green(`Scaffolded component ${fileBase} in ${dir}`));\n}\n\nasync function ensureEmptyDir(target: string, force?: boolean): Promise<void> {\n try {\n const stats = await stat(target);\n if (!stats.isDirectory()) {\n throw new Error(`${target} exists and is not a directory.`);\n }\n const entries = await readdir(target);\n if (entries.length > 0 && !force) {\n throw new Error(`${target} is not empty. Use --force to overwrite.`);\n }\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code === 'ENOENT') {\n await mkdir(target, { recursive: true });\n return;\n }\n if (force) {\n await mkdir(target, { recursive: true });\n return;\n }\n throw error;\n }\n}\n\nasync function writeFileSafe(path: string, contents: string, force?: boolean): Promise<void> {\n if (!force) {\n try {\n await stat(path);\n throw new Error(`${path} already exists. Use --force to overwrite.`);\n } catch (error) {\n const code = (error as { code?: string }).code;\n if (code !== 'ENOENT') {\n throw error;\n }\n }\n }\n await writeFile(path, contents, 'utf8');\n}\n","import { spawn } from 'node:child_process';\nimport fg from 'fast-glob';\nimport pc from 'picocolors';\n\nexport interface TestCommandOptions {\n patterns?: string[];\n}\n\nconst DEFAULT_PATTERNS = ['tests/**/*.spec.{js,ts}', 'tests/**/*.test.{js,ts}'];\n\nexport async function runTests(options: TestCommandOptions = {}): Promise<void> {\n const patterns = options.patterns?.length ? options.patterns : DEFAULT_PATTERNS;\n const files = await fg(patterns, { absolute: true });\n if (!files.length) {\n console.log(pc.yellow('No test files found.'));\n return;\n }\n await runNodeTest(files);\n}\n\nfunction runNodeTest(files: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(process.execPath, ['--test', ...files], { stdio: 'inherit' });\n child.on('exit', code => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`Test run failed with code ${String(code ?? 'unknown')}.`));\n });\n child.on('error', error => {\n reject(error);\n });\n });\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { runCompile } from './compile.js';\nimport { runRuntimeTimeline } from './runtime-timeline.js';\nimport { runWorkflowTimeline } from './workflow-timeline.js';\nimport { loadConfig } from './config.js';\nimport { scaffoldApp, scaffoldComponent } from './scaffold.js';\nimport { runTests } from './test.js';\n\nconst program = new Command();\n\nprogram\n .name('ceui')\n .description('CE UI framework tooling')\n .version('0.1.0');\n\nprogram\n .command('compile')\n .argument('<patterns...>', 'Glob patterns for .cex files')\n .option('-o, --out-dir <dir>', 'Output directory')\n .option('-w, --watch', 'Recompile when inputs change', false)\n .option('--source-map', 'Emit source maps for generated modules', false)\n .option('-c, --config <file>', 'Use config file for defaults')\n .action(async (patterns: string[], options: { outDir?: string; watch?: boolean; sourceMap?: boolean; config?: string }) => {\n if (options.config) {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n options.outDir ??= compile.outDir;\n options.sourceMap ??= compile.sourceMap;\n }\n await runCompile(patterns, {\n outDir: options.outDir,\n watch: options.watch,\n sourceMap: options.sourceMap,\n });\n });\n\nprogram\n .command('build')\n .description('Compile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n });\n });\n\nprogram\n .command('watch')\n .description('Watch and recompile .cex files using ceui.config.json')\n .option('-c, --config <file>', 'Config file path')\n .action(async (options: { config?: string }) => {\n const loaded = await loadConfig(options.config);\n const { compile } = loaded.config;\n await runCompile(compile.patterns, {\n outDir: compile.outDir,\n sourceMap: compile.sourceMap,\n watch: true,\n });\n });\n\nconst create = program.command('create').description('Scaffold CE UI apps or components');\n\ncreate\n .command('app')\n .argument('<name>', 'App folder name')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { force?: boolean }) => {\n await scaffoldApp(name, { force: Boolean(options.force) });\n });\n\ncreate\n .command('component')\n .argument('<name>', 'Component name (PascalCase)')\n .option('-d, --dir <dir>', 'Output directory', 'src/components')\n .option('--force', 'Overwrite existing files', false)\n .action(async (name: string, options: { dir?: string; force?: boolean }) => {\n await scaffoldComponent(name, {\n dir: options.dir,\n force: Boolean(options.force),\n });\n });\n\nprogram\n .command('workflow:timeline')\n .description('Convert workflow trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to workflow trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runWorkflowTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('runtime:timeline')\n .description('Convert renderer/runtime trace JSON/JSONL into Chrome trace format or raw events')\n .requiredOption('-i, --input <file>', 'Path to runtime trace file (JSONL or JSON array)')\n .option('-o, --output <file>', 'Output file (writes to stdout when omitted)')\n .option('-f, --format <format>', 'Output format: chrome | events', 'chrome')\n .action(async (options: { input: string; output?: string; format?: 'chrome' | 'events' }) => {\n await runRuntimeTimeline({\n input: options.input,\n output: options.output,\n format: options.format,\n });\n });\n\nprogram\n .command('test')\n .description('Run Node.js test runner with default patterns')\n .option('-p, --pattern <patterns...>', 'Test file patterns')\n .action(async (options: { pattern?: string[] }) => {\n await runTests({ patterns: options.pattern });\n });\n\nvoid program.parseAsync(process.argv);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clusterenvision/ui-framework",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Compile-time first UI framework with CE ecosystem integrations.",
@@ -129,20 +129,15 @@
129
129
  "picocolors": "^1.1.0"
130
130
  },
131
131
  "peerDependencies": {
132
- "@clusterenvision/ce-ui-scss": "^1.94.2",
133
- "@clusterenvision/ui-webcomponents": "^1.2.0"
132
+ "@clusterenvision/ce-ui-scss": "^1.94.2"
134
133
  },
135
134
  "peerDependenciesMeta": {
136
135
  "@clusterenvision/ce-ui-scss": {
137
136
  "optional": true
138
- },
139
- "@clusterenvision/ui-webcomponents": {
140
- "optional": true
141
137
  }
142
138
  },
143
139
  "devDependencies": {
144
140
  "@clusterenvision/ce-ui-scss": "file:../ce-ui-scss",
145
- "@clusterenvision/ui-webcomponents": "file:../ce-ui-webcomponents",
146
141
  "@types/node": "^25.9.3",
147
142
  "@typescript-eslint/eslint-plugin": "^8.61.0",
148
143
  "@typescript-eslint/parser": "^8.61.0",