@mlightcad/cad-simple-viewer-cli 1.7.4 → 1.7.5

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.
@@ -82,56 +82,76 @@ function drawingNameFromUrl(urlString) {
82
82
  }
83
83
  return 'drawing.dwg';
84
84
  }
85
- /**
86
- * Loads drawing bytes from a local path or remote URL.
87
- */
88
- async function loadDrawingInput(inputPath) {
89
- if (isHttpUrl(inputPath)) {
90
- const fileName = drawingNameFromUrl(inputPath);
91
- const ext = path.extname(fileName).toLowerCase();
92
- if (ext !== '.dxf' && ext !== '.dwg') {
93
- throw new Error(`Unsupported remote drawing "${fileName}". URL path must end with .dxf or .dwg.`);
94
- }
95
- const response = await fetch(inputPath);
96
- if (!response.ok) {
97
- throw new Error(`Failed to download drawing (${response.status} ${response.statusText}): ${inputPath}`);
98
- }
99
- const bytes = Buffer.from(await response.arrayBuffer());
100
- return {
101
- label: inputPath,
102
- fileName,
103
- base64: bytes.toString('base64')
104
- };
105
- }
106
- const absoluteInput = path.resolve(inputPath);
107
- const ext = path.extname(absoluteInput).toLowerCase();
108
- if (ext !== '.dxf' && ext !== '.dwg') {
109
- throw new Error(`Unsupported file type "${ext}". Only .dxf and .dwg are supported.`);
110
- }
111
- if (!existsSync(absoluteInput)) {
112
- throw new Error(`Input drawing not found: ${absoluteInput}`);
113
- }
114
- const fileBytes = await readFile(absoluteInput);
115
- return {
116
- label: absoluteInput,
117
- fileName: path.basename(absoluteInput),
118
- base64: fileBytes.toString('base64')
85
+ function contentTypeFor(filePath) {
86
+ const ext = path.extname(filePath).toLowerCase();
87
+ const types = {
88
+ '.html': 'text/html; charset=utf-8',
89
+ '.js': 'text/javascript; charset=utf-8',
90
+ '.css': 'text/css; charset=utf-8',
91
+ '.json': 'application/json',
92
+ '.wasm': 'application/wasm',
93
+ '.dwg': 'application/octet-stream',
94
+ '.dxf': 'application/octet-stream'
119
95
  };
96
+ return types[ext] ?? 'application/octet-stream';
97
+ }
98
+ async function readRequestBody(req) {
99
+ const chunks = [];
100
+ for await (const chunk of req) {
101
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
102
+ }
103
+ return Buffer.concat(chunks);
120
104
  }
121
105
  /**
122
- * Starts a loopback HTTP server that serves static files from `root`.
123
- *
124
- * Used to load the Vite-built runner page into Playwright without packing
125
- * assets into a `file://` URL.
126
- *
127
- * @param root - Absolute directory to serve (typically {@link runnerDistDir})
128
- * @returns Server base URL and a `close` function that shuts the listener down
106
+ * Starts a loopback HTTP server for the CLI runner, drawing inputs, and
107
+ * binary download saves (avoids base64 over CDP).
129
108
  */
130
- function startStaticServer(root) {
109
+ function startCliStaticServer(root) {
131
110
  return new Promise((resolve, reject) => {
111
+ const mountedInputs = new Map();
112
+ let saveDir = null;
113
+ let savedFiles = [];
114
+ let mountSeq = 0;
132
115
  const server = createServer((req, res) => {
116
+ void handleRequest(req, res);
117
+ });
118
+ async function handleRequest(req, res) {
133
119
  try {
134
- const urlPath = decodeURIComponent((req.url ?? '/').split('?')[0]);
120
+ const urlPath = decodeURIComponent((req.url ?? '/').split('?')[0] ?? '/');
121
+ if (req.method === 'POST' && urlPath.startsWith('/__cli_save__/')) {
122
+ if (!saveDir) {
123
+ res.writeHead(500);
124
+ res.end('Save directory not configured');
125
+ return;
126
+ }
127
+ const fileName = path.basename(urlPath.slice('/__cli_save__/'.length));
128
+ if (!fileName) {
129
+ res.writeHead(400);
130
+ res.end('Missing file name');
131
+ return;
132
+ }
133
+ const body = await readRequestBody(req);
134
+ const dest = uniqueOutputPath(saveDir, fileName);
135
+ await writeFile(dest, body);
136
+ savedFiles.push(dest);
137
+ res.writeHead(204);
138
+ res.end();
139
+ return;
140
+ }
141
+ if (urlPath.startsWith('/__cli_input__/')) {
142
+ const absolute = mountedInputs.get(urlPath);
143
+ if (!absolute || !existsSync(absolute)) {
144
+ res.writeHead(404);
145
+ res.end();
146
+ return;
147
+ }
148
+ const body = await readFile(absolute);
149
+ res.setHeader('Content-Type', contentTypeFor(absolute));
150
+ res.setHeader('Content-Length', String(body.byteLength));
151
+ res.writeHead(200);
152
+ res.end(body);
153
+ return;
154
+ }
135
155
  const relative = urlPath === '/' ? 'index.html' : urlPath.replace(/^\//, '');
136
156
  const filePath = path.join(root, relative);
137
157
  if (!filePath.startsWith(root)) {
@@ -144,33 +164,42 @@ function startStaticServer(root) {
144
164
  res.end();
145
165
  return;
146
166
  }
147
- const ext = path.extname(filePath).toLowerCase();
148
- const types = {
149
- '.html': 'text/html; charset=utf-8',
150
- '.js': 'text/javascript; charset=utf-8',
151
- '.css': 'text/css; charset=utf-8',
152
- '.json': 'application/json',
153
- '.wasm': 'application/wasm'
154
- };
155
- res.setHeader('Content-Type', types[ext] ?? 'application/octet-stream');
156
- void readFile(filePath).then(body => {
157
- res.writeHead(200);
158
- res.end(body);
159
- });
167
+ res.setHeader('Content-Type', contentTypeFor(filePath));
168
+ const body = await readFile(filePath);
169
+ res.writeHead(200);
170
+ res.end(body);
160
171
  }
161
172
  catch (error) {
162
173
  res.writeHead(500);
163
174
  res.end(String(error));
164
175
  }
165
- });
176
+ }
166
177
  server.listen(0, '127.0.0.1', () => {
167
178
  const address = server.address();
168
179
  if (!address || typeof address === 'string') {
169
180
  reject(new Error('Failed to start static server for CLI runner.'));
170
181
  return;
171
182
  }
183
+ const baseUrl = `http://127.0.0.1:${address.port}`;
172
184
  resolve({
173
- url: `http://127.0.0.1:${address.port}`,
185
+ url: baseUrl,
186
+ mountInput: (absolutePath, _fileName) => {
187
+ const token = String(++mountSeq);
188
+ const urlPath = `/__cli_input__/${token}`;
189
+ mountedInputs.set(urlPath, absolutePath);
190
+ return `${baseUrl}${urlPath}`;
191
+ },
192
+ setSaveDir: dir => {
193
+ saveDir = dir;
194
+ },
195
+ takeSavedFiles: () => {
196
+ const files = savedFiles;
197
+ savedFiles = [];
198
+ return files;
199
+ },
200
+ resetSavedFiles: () => {
201
+ savedFiles = [];
202
+ },
174
203
  close: () => new Promise((closeResolve, closeReject) => {
175
204
  server.close(err => (err ? closeReject(err) : closeResolve()));
176
205
  })
@@ -179,93 +208,128 @@ function startStaticServer(root) {
179
208
  });
180
209
  }
181
210
  /**
182
- * Runs a `.scr` command script in headless Chromium and writes captured
183
- * export downloads into `outputDir`.
184
- *
185
- * When `inputPath` is omitted, the runner starts from a blank ISO template
186
- * (write mode) so scripts can create geometry from scratch. The page waits for
187
- * entity convert / deferred font geometry before executing the script so
188
- * exports such as `pngout` include rendered text.
189
- *
190
- * @param options - Script path, optional input drawing, output dir, locale,
191
- * open mode / view / tessellation options, resource base URL, logfile
192
- * @returns Absolute output directory and list of saved file paths
193
- * @throws If the script or input file is missing, the file type is unsupported,
194
- * the runner build is missing, or the in-page script fails
211
+ * Long-lived headless Chromium session that can run many drawings without
212
+ * relaunching the browser or reloading WASM/fonts for each file.
195
213
  */
196
- export async function runHeadless(options) {
197
- const absoluteScript = path.resolve(options.scriptPath);
198
- if (!existsSync(absoluteScript)) {
199
- throw new Error(`Script not found: ${absoluteScript}`);
200
- }
201
- let absoluteInput;
202
- let fileName = null;
203
- let base64 = null;
204
- if (options.inputPath) {
205
- const drawing = await loadDrawingInput(options.inputPath);
206
- absoluteInput = drawing.label;
207
- fileName = drawing.fileName;
208
- base64 = drawing.base64;
209
- }
210
- const outputDir = path.resolve(options.outputDir ??
211
- (absoluteInput && !isHttpUrl(absoluteInput)
212
- ? path.dirname(absoluteInput)
213
- : process.cwd()));
214
- await mkdir(outputDir, { recursive: true });
215
- const runnerDir = runnerDistDir();
216
- if (!existsSync(path.join(runnerDir, 'index.html'))) {
217
- throw new Error('CLI runner is not built. Run "pnpm --filter @mlightcad/cad-simple-viewer-cli build".');
214
+ export class HeadlessCadSession {
215
+ browser;
216
+ page;
217
+ server;
218
+ launchMs;
219
+ constructor(browser, page, server, launchMs) {
220
+ this.browser = browser;
221
+ this.page = page;
222
+ this.server = server;
223
+ this.launchMs = launchMs;
218
224
  }
219
- const scriptText = await readFile(absoluteScript, 'utf8');
220
- const mode = options.mode ?? (absoluteInput ? 'read' : 'write');
221
- const logfile = options.logfile ? path.resolve(options.logfile) : undefined;
222
- await appendLog(logfile, `[cad-simple-viewer-cli] input=${absoluteInput ?? '(blank)'} script=${absoluteScript} output=${outputDir}`);
223
- const server = await startStaticServer(runnerDir);
224
- const channel = process.env.PLAYWRIGHT_BROWSER_CHANNEL;
225
- const browser = await chromium.launch({
226
- headless: true,
227
- ...(channel ? { channel } : {})
228
- });
229
- const savedFiles = [];
230
- try {
225
+ static async create() {
226
+ const runnerDir = runnerDistDir();
227
+ if (!existsSync(path.join(runnerDir, 'index.html'))) {
228
+ throw new Error('CLI runner is not built. Run "pnpm --filter @mlightcad/cad-simple-viewer-cli build".');
229
+ }
230
+ const t0 = performance.now();
231
+ const server = await startCliStaticServer(runnerDir);
232
+ const channel = process.env.PLAYWRIGHT_BROWSER_CHANNEL;
233
+ const browser = await chromium.launch({
234
+ headless: true,
235
+ ...(channel ? { channel } : {})
236
+ });
231
237
  const context = await browser.newContext({ acceptDownloads: true });
232
238
  const page = await context.newPage();
239
+ page.on('console', msg => {
240
+ const text = msg.text();
241
+ if (text.includes('GL Driver Message')) {
242
+ return;
243
+ }
244
+ if (text.startsWith('[cad-simple-viewer-cli]') ||
245
+ text.startsWith('[chtml]') ||
246
+ msg.type() === 'error' ||
247
+ msg.type() === 'warning') {
248
+ console.log(text);
249
+ }
250
+ });
251
+ page.on('pageerror', error => {
252
+ console.error('[cad-simple-viewer-cli] page error:', error.message);
253
+ });
233
254
  await page.goto(`${server.url}/index.html`, { waitUntil: 'networkidle' });
255
+ const launchMs = performance.now() - t0;
256
+ console.log(`[cad-simple-viewer-cli] browser ready: ${launchMs.toFixed(0)} ms`);
257
+ return new HeadlessCadSession(browser, page, server, launchMs);
258
+ }
259
+ get browserLaunchMs() {
260
+ return this.launchMs;
261
+ }
262
+ async run(options) {
263
+ const absoluteScript = path.resolve(options.scriptPath);
264
+ if (!existsSync(absoluteScript)) {
265
+ throw new Error(`Script not found: ${absoluteScript}`);
266
+ }
267
+ const timings = {
268
+ browserLaunch: this.launchMs
269
+ };
270
+ const runT0 = performance.now();
271
+ let absoluteInput;
272
+ let fileName = null;
273
+ let drawingUrl = null;
274
+ if (options.inputPath) {
275
+ const tLoad = performance.now();
276
+ if (isHttpUrl(options.inputPath)) {
277
+ absoluteInput = options.inputPath;
278
+ fileName = drawingNameFromUrl(options.inputPath);
279
+ const ext = path.extname(fileName).toLowerCase();
280
+ if (ext !== '.dxf' && ext !== '.dwg') {
281
+ throw new Error(`Unsupported remote drawing "${fileName}". URL path must end with .dxf or .dwg.`);
282
+ }
283
+ drawingUrl = options.inputPath;
284
+ }
285
+ else {
286
+ absoluteInput = path.resolve(options.inputPath);
287
+ const ext = path.extname(absoluteInput).toLowerCase();
288
+ if (ext !== '.dxf' && ext !== '.dwg') {
289
+ throw new Error(`Unsupported file type "${ext}". Only .dxf and .dwg are supported.`);
290
+ }
291
+ if (!existsSync(absoluteInput)) {
292
+ throw new Error(`Input drawing not found: ${absoluteInput}`);
293
+ }
294
+ fileName = path.basename(absoluteInput);
295
+ drawingUrl = this.server.mountInput(absoluteInput, fileName);
296
+ }
297
+ timings.mountInput = performance.now() - tLoad;
298
+ }
299
+ const outputDir = path.resolve(options.outputDir ??
300
+ (absoluteInput && !isHttpUrl(absoluteInput)
301
+ ? path.dirname(absoluteInput)
302
+ : process.cwd()));
303
+ await mkdir(outputDir, { recursive: true });
304
+ this.server.setSaveDir(outputDir);
305
+ this.server.resetSavedFiles();
306
+ const scriptText = await readFile(absoluteScript, 'utf8');
307
+ const mode = options.mode ?? (absoluteInput ? 'read' : 'write');
308
+ const logfile = options.logfile ? path.resolve(options.logfile) : undefined;
309
+ await appendLog(logfile, `[cad-simple-viewer-cli] input=${absoluteInput ?? '(blank)'} script=${absoluteScript} output=${outputDir}`);
234
310
  const openExtras = {
235
311
  openViewMode: options.openViewMode,
236
312
  drawNoPlotLayers: options.drawNoPlotLayers,
237
313
  circleSides: options.circleSides,
238
- baseUrl: options.baseUrl
314
+ baseUrl: options.baseUrl,
315
+ saveBaseUrl: `${this.server.url}/__cli_save__/`
239
316
  };
240
- let result;
317
+ const tScript = performance.now();
241
318
  try {
242
- result = await page.evaluate(async ({ name, data, script, locale, mode: openMode, startBlank, openViewMode, drawNoPlotLayers, circleSides, baseUrl }) => {
243
- const runOptions = {
319
+ await this.page.evaluate(async ({ name, drawingUrl: url, script, locale, mode: openMode, startBlank, openViewMode, drawNoPlotLayers, circleSides, baseUrl, saveBaseUrl }) => {
320
+ return window.runCadScript(name, url, script, {
244
321
  locale,
245
322
  mode: openMode,
323
+ startBlank,
246
324
  openViewMode,
247
325
  drawNoPlotLayers,
248
326
  circleSides,
249
- baseUrl
250
- };
251
- if (data == null || name == null) {
252
- return window.runCadScript(null, null, script, {
253
- ...runOptions,
254
- startBlank
255
- });
256
- }
257
- const binary = atob(data);
258
- const bytes = new Uint8Array(binary.length);
259
- for (let i = 0; i < binary.length; i++) {
260
- bytes[i] = binary.charCodeAt(i);
261
- }
262
- return window.runCadScript(name, bytes, script, {
263
- ...runOptions,
264
- startBlank: false
327
+ baseUrl,
328
+ saveBaseUrl
265
329
  });
266
330
  }, {
267
331
  name: fileName,
268
- data: base64,
332
+ drawingUrl,
269
333
  script: scriptText,
270
334
  locale: options.locale,
271
335
  mode,
@@ -278,18 +342,57 @@ export async function runHeadless(options) {
278
342
  await appendLog(logfile, `[cad-simple-viewer-cli] script failed: ${message}`);
279
343
  throw error;
280
344
  }
281
- for (const file of result.files) {
282
- const dest = uniqueOutputPath(outputDir, file.fileName);
283
- await writeFile(dest, Buffer.from(file.base64, 'base64'));
284
- savedFiles.push(dest);
345
+ timings.scriptAndExport = performance.now() - tScript;
346
+ const savedFiles = this.server.takeSavedFiles();
347
+ for (const dest of savedFiles) {
285
348
  await appendLog(logfile, `[cad-simple-viewer-cli] saved ${dest}`);
286
349
  }
287
- await appendLog(logfile, `[cad-simple-viewer-cli] done saved=${savedFiles.length}`);
288
- return { outputDir, savedFiles };
350
+ timings.total = performance.now() - runT0;
351
+ await appendLog(logfile, `[cad-simple-viewer-cli] done saved=${savedFiles.length} totalMs=${timings.total.toFixed(0)}`);
352
+ console.log('[cad-simple-viewer-cli] timings: ' +
353
+ Object.entries(timings)
354
+ .map(([k, v]) => `${k}=${v.toFixed(0)}ms`)
355
+ .join(' '));
356
+ return { outputDir, savedFiles, timings };
357
+ }
358
+ async close() {
359
+ await this.browser.close();
360
+ await this.server.close();
361
+ }
362
+ }
363
+ /**
364
+ * Runs a `.scr` command script in headless Chromium and writes captured
365
+ * export downloads into `outputDir`.
366
+ *
367
+ * Prefer {@link HeadlessCadSession} when exporting many drawings so the
368
+ * browser and WASM parser stay warm across files.
369
+ */
370
+ export async function runHeadless(options) {
371
+ const session = await HeadlessCadSession.create();
372
+ try {
373
+ return await session.run(options);
374
+ }
375
+ finally {
376
+ await session.close();
377
+ }
378
+ }
379
+ /**
380
+ * Runs the same script against many drawings in one Chromium session.
381
+ */
382
+ export async function runHeadlessBatch(jobs) {
383
+ if (jobs.length === 0) {
384
+ return [];
385
+ }
386
+ const session = await HeadlessCadSession.create();
387
+ const results = [];
388
+ try {
389
+ for (const job of jobs) {
390
+ results.push(await session.run(job));
391
+ }
392
+ return results;
289
393
  }
290
394
  finally {
291
- await browser.close();
292
- await server.close();
395
+ await session.close();
293
396
  }
294
397
  }
295
398
  //# sourceMappingURL=runHeadless.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../src/runHeadless.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../src/runHeadless.ts"],"names":[],"mappings":"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"}