@elaraai/e3-ui-cli 1.0.28 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/sweep.js ADDED
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * `e3-ui shots` — sweep a project for every renderable UI export and render
7
+ * each to `<outDir>/<relative-path-sans-ext>/<exportName>.png` (and optionally
8
+ * a standalone `.html` beside it).
9
+ *
10
+ * Discovery walks the given paths (directories recurse; `*.spec.*`, `*.d.ts`,
11
+ * `node_modules`, and the output directory itself are excluded). Each file is
12
+ * esbuild-loaded ONCE, its exports classified at the IR level (`detect.ts` —
13
+ * output type vs `UIComponentType`, zero inputs, workspace-bound platform
14
+ * calls), and every render candidate captured through ONE shared browser
15
+ * session. Nothing is silently dropped: files that fail to load and exports
16
+ * that are skipped each carry their reason in the summary (and the optional
17
+ * JSON manifest), so a sweep doubles as an audit of the project's renderable
18
+ * surface.
19
+ *
20
+ * @packageDocumentation
21
+ */
22
+ import * as fs from 'node:fs/promises';
23
+ import * as path from 'node:path';
24
+ import { loadSourceExports } from './load-source.js';
25
+ import { classifyExports, describeSkip, detectContextFor } from './detect.js';
26
+ import { openCaptureSession } from './capture.js';
27
+ import { defaultAppDir } from './render.js';
28
+ import { encodeEastIR } from '@elaraai/east';
29
+ const EXCLUDED_DIRS = new Set(['node_modules', 'dist', '.git']);
30
+ /** Recursively collect `.ts`/`.tsx` sources under `entry` (a file or dir). */
31
+ async function discover(entry, outDirAbs) {
32
+ const stat = await fs.stat(entry).catch(() => null);
33
+ if (stat === null)
34
+ return [];
35
+ if (stat.isFile()) {
36
+ return isSweepableSource(entry) ? [entry] : [];
37
+ }
38
+ if (!stat.isDirectory() || path.resolve(entry) === outDirAbs)
39
+ return [];
40
+ const out = [];
41
+ for (const name of (await fs.readdir(entry)).sort()) {
42
+ if (EXCLUDED_DIRS.has(name))
43
+ continue;
44
+ const child = path.join(entry, name);
45
+ const childStat = await fs.stat(child).catch(() => null);
46
+ if (childStat?.isDirectory()) {
47
+ if (path.resolve(child) !== outDirAbs)
48
+ out.push(...await discover(child, outDirAbs));
49
+ }
50
+ else if (childStat?.isFile() && isSweepableSource(child)) {
51
+ out.push(child);
52
+ }
53
+ }
54
+ return out;
55
+ }
56
+ /** Is `file` a sweepable TS/TSX source (not a spec, not a declaration)? */
57
+ export function isSweepableSource(file) {
58
+ if (!/\.tsx?$/i.test(file))
59
+ return false;
60
+ if (/\.d\.ts$/i.test(file))
61
+ return false;
62
+ if (/\.spec\.tsx?$/i.test(file))
63
+ return false;
64
+ return true;
65
+ }
66
+ /** The output basename (no extension) for a swept file, relative to `cwd` —
67
+ * `src/ui/index.tsx` → `src/ui/index`. Paths outside `cwd` fall back to a
68
+ * flattened basename. */
69
+ export function outputStemFor(file, cwd) {
70
+ const rel = path.relative(cwd, path.resolve(file));
71
+ const safe = rel.startsWith('..') ? path.basename(file) : rel;
72
+ return safe.replace(/\.tsx?$/i, '');
73
+ }
74
+ /**
75
+ * Sweep `paths` and render every renderable UI export.
76
+ *
77
+ * @param opts - Sweep options
78
+ * @returns The sweep outcome (rendered / skipped / failed)
79
+ * @throws If the browser session cannot be opened (no browser installed)
80
+ */
81
+ export async function sweep(opts = {}) {
82
+ const cwd = path.resolve(opts.cwd ?? process.cwd());
83
+ const outDir = path.resolve(cwd, opts.outDir ?? '.shots');
84
+ const log = opts.log ?? ((line) => console.log(line));
85
+ const entries = (opts.paths?.length ? opts.paths : ['src']).map(p => path.resolve(cwd, p));
86
+ const files = [];
87
+ for (const entry of entries)
88
+ files.push(...await discover(entry, outDir));
89
+ if (files.length === 0) {
90
+ log(`[e3-ui shots] no .ts/.tsx sources found under: ${entries.map(e => path.relative(cwd, e) || '.').join(', ')}`);
91
+ return { rendered: [], skipped: [], failed: [] };
92
+ }
93
+ const result = { rendered: [], skipped: [], failed: [] };
94
+ const candidates = [];
95
+ for (const file of files) {
96
+ const rel = path.relative(cwd, file);
97
+ let moduleExports;
98
+ try {
99
+ moduleExports = await loadSourceExports(file);
100
+ }
101
+ catch (err) {
102
+ result.skipped.push({ file: rel, reason: `failed to load: ${err instanceof Error ? err.message : String(err)}` });
103
+ continue;
104
+ }
105
+ const ctx = await detectContextFor(file);
106
+ if (ctx === null) {
107
+ result.skipped.push({ file: rel, reason: 'project has no resolvable @elaraai/east — nothing to classify' });
108
+ continue;
109
+ }
110
+ for (const c of classifyExports(moduleExports, ctx)) {
111
+ if (!c.renderable || c.fn === undefined) {
112
+ // Plain non-East exports (types, constants, helpers) are noise,
113
+ // not signal — only East-shaped exports get skip lines.
114
+ if (c.shape !== null && c.skip !== undefined) {
115
+ result.skipped.push({ file: rel, exportName: c.name, reason: describeSkip(c.skip) });
116
+ }
117
+ continue;
118
+ }
119
+ try {
120
+ const bytes = encodeEastIR(c.fn.toIR());
121
+ candidates.push({ file: rel, exportName: c.name, b64: Buffer.from(bytes).toString('base64') });
122
+ }
123
+ catch (err) {
124
+ result.failed.push({ file: rel, exportName: c.name, error: `IR encode failed: ${err instanceof Error ? err.message : String(err)}` });
125
+ }
126
+ }
127
+ }
128
+ if (candidates.length === 0) {
129
+ summarize(result, outDir, cwd, log);
130
+ if (opts.json)
131
+ await writeManifest(result, outDir);
132
+ return result;
133
+ }
134
+ const render = opts.render;
135
+ const session = render ? null : await openCaptureSession(opts.appDir ?? defaultAppDir());
136
+ try {
137
+ let done = 0;
138
+ for (const cand of candidates) {
139
+ const stem = outputStemFor(path.resolve(cwd, cand.file), cwd);
140
+ const dir = path.join(outDir, stem);
141
+ await fs.mkdir(dir, { recursive: true });
142
+ const png = path.join(dir, `${cand.exportName}.png`);
143
+ const html = opts.html ? path.join(dir, `${cand.exportName}.html`) : undefined;
144
+ const captureOpts = {
145
+ payload: { kind: 'component', b64: cand.b64 },
146
+ outPng: png,
147
+ outHtml: html,
148
+ // Sweep default is a FAITHFUL-width mount; `'none'` opts back
149
+ // into the historical shrink-to-fit crop.
150
+ frameWidth: opts.frameWidth === 'none' ? undefined : (opts.frameWidth ?? 'full'),
151
+ viewport: opts.viewport,
152
+ deviceScaleFactor: opts.deviceScaleFactor,
153
+ settleMs: opts.settleMs,
154
+ timeoutMs: opts.timeoutMs,
155
+ };
156
+ done += 1;
157
+ try {
158
+ await (render ? render(captureOpts) : session.captureOne(captureOpts));
159
+ result.rendered.push({ file: cand.file, exportName: cand.exportName, png: path.relative(cwd, png), html: html ? path.relative(cwd, html) : undefined });
160
+ log(`[e3-ui shots] ${done}/${candidates.length} ${cand.file} › ${cand.exportName}`);
161
+ }
162
+ catch (err) {
163
+ result.failed.push({ file: cand.file, exportName: cand.exportName, error: err instanceof Error ? err.message : String(err) });
164
+ log(`[e3-ui shots] ${done}/${candidates.length} ${cand.file} › ${cand.exportName} FAILED`);
165
+ }
166
+ }
167
+ }
168
+ finally {
169
+ await session?.close();
170
+ }
171
+ summarize(result, outDir, cwd, log);
172
+ if (opts.json)
173
+ await writeManifest(result, outDir);
174
+ return result;
175
+ }
176
+ function summarize(result, outDir, cwd, log) {
177
+ log(`[e3-ui shots] done — ${result.rendered.length} rendered, ${result.skipped.length} skipped, ${result.failed.length} failed → ${path.relative(cwd, outDir) || '.'}`);
178
+ for (const s of result.skipped) {
179
+ log(` skipped ${s.file}${s.exportName ? ` › ${s.exportName}` : ''} — ${s.reason}`);
180
+ }
181
+ for (const f of result.failed) {
182
+ log(` FAILED ${f.file} › ${f.exportName} — ${f.error}`);
183
+ }
184
+ }
185
+ async function writeManifest(result, outDir) {
186
+ await fs.mkdir(outDir, { recursive: true });
187
+ await fs.writeFile(path.join(outDir, 'manifest.json'), `${JSON.stringify(result, null, 2)}\n`, 'utf8');
188
+ }
189
+ //# sourceMappingURL=sweep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sweep.js","sourceRoot":"","sources":["../src/sweep.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elaraai/e3-ui-cli",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "Render east-ui / e3-ui components to PNG from the command line (e3-ui shot)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,10 +41,10 @@
41
41
  "commander": "^12.0.0",
42
42
  "esbuild": "^0.27.2",
43
43
  "playwright-core": "~1.59.0",
44
- "@elaraai/e3-api-server": "1.0.28"
44
+ "@elaraai/e3-api-server": "1.0.30"
45
45
  },
46
46
  "peerDependencies": {
47
- "@elaraai/east": "1.0.28"
47
+ "@elaraai/east": "1.0.30"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@chakra-ui/react": "^3.0.0",
@@ -64,13 +64,13 @@
64
64
  "react-dom": "^19.0.0",
65
65
  "typescript": "~5.9.2",
66
66
  "vite": "^6.0.0",
67
- "@elaraai/east-ui": "1.0.28",
68
- "@elaraai/e3": "1.0.28",
69
- "@elaraai/east-ui-components": "1.0.28",
70
- "@elaraai/e3-api-client": "1.0.28",
71
- "@elaraai/e3-types": "1.0.28",
72
- "@elaraai/e3-ui": "1.0.28",
73
- "@elaraai/e3-ui-components": "1.0.28"
67
+ "@elaraai/east-ui": "1.0.30",
68
+ "@elaraai/e3-api-client": "1.0.30",
69
+ "@elaraai/e3": "1.0.30",
70
+ "@elaraai/east-ui-components": "1.0.30",
71
+ "@elaraai/e3-types": "1.0.30",
72
+ "@elaraai/e3-ui": "1.0.30",
73
+ "@elaraai/e3-ui-components": "1.0.30"
74
74
  },
75
75
  "scripts": {
76
76
  "build": "tsc && tsc -p app/tsconfig.json && node scripts/build-app.mjs",