@mdfriday/foundry 26.2.8 → 26.2.10

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.
@@ -95220,7 +95220,6 @@ var init_pool_manager = __esm({
95220
95220
  "use strict";
95221
95221
  init_log();
95222
95222
  workerpool = __toESM2(require("workerpool"));
95223
- init_worker_main();
95224
95223
  os = __toESM2(require("os"));
95225
95224
  log57 = getDomainLogger("application", { component: "pool-manager" });
95226
95225
  WorkerPoolManager = class {
@@ -95242,21 +95241,28 @@ var init_pool_manager = __esm({
95242
95241
  * 这样可以正确识别 Electron/Obsidian 环境(有 Node.js API 但只支持 Web Workers)
95243
95242
  */
95244
95243
  detectEnvironment() {
95245
- if (typeof Worker !== "undefined" && typeof globalThis.window !== "undefined") {
95246
- log57.debug("Detected Web Worker support (browser/Electron environment)");
95247
- return "browser";
95248
- }
95249
95244
  if (typeof process !== "undefined" && process.versions && process.versions.node) {
95250
95245
  try {
95251
95246
  require.resolve("worker_threads");
95252
95247
  log57.debug("Detected Node.js Worker Threads support");
95248
+ if (process.versions.electron) {
95249
+ log57.info("\u2728 Detected Electron environment - using Node.js Worker Threads (full Node.js API support)");
95250
+ }
95253
95251
  return "node";
95254
95252
  } catch {
95255
- log57.debug("Node.js detected but worker_threads unavailable, falling back to browser mode");
95256
- return "browser";
95253
+ log57.debug("Node.js detected but worker_threads unavailable");
95254
+ if (typeof Worker !== "undefined" && typeof globalThis.window !== "undefined") {
95255
+ log57.warn("\u26A0\uFE0F Falling back to Web Workers (limited: no Node.js API access)");
95256
+ return "browser";
95257
+ }
95258
+ throw new Error("No worker support available (neither Worker Threads nor Web Workers)");
95257
95259
  }
95258
95260
  }
95259
- log57.debug("Using browser mode as default");
95261
+ if (typeof Worker !== "undefined" && typeof globalThis.window !== "undefined") {
95262
+ log57.debug("Detected Web Worker support (pure browser environment)");
95263
+ return "browser";
95264
+ }
95265
+ log57.warn("Unable to detect environment reliably, defaulting to browser mode");
95260
95266
  return "browser";
95261
95267
  }
95262
95268
  /**
@@ -95332,19 +95338,19 @@ var init_pool_manager = __esm({
95332
95338
  /**
95333
95339
  * 初始化浏览器 Worker 池
95334
95340
  *
95335
- * 在浏览器环境中,我们不使用文件,而是直接传递函数给 workerpool
95336
- * workerpool 会自动将函数序列化并在 Worker 中执行
95341
+ * ⚠️ 当前不支持纯浏览器环境的并行处理
95342
+ * 原因:SSG 依赖 Node.js 文件系统 API(fs、path 等),Web Workers 无法访问
95343
+ *
95344
+ * 注:Electron/Obsidian 应该使用 Node.js Worker Threads(在 detectEnvironment 中处理)
95337
95345
  */
95338
95346
  async initializeBrowserPool() {
95339
- this.pool = workerpool.pool({
95340
- minWorkers: this.workerCount,
95341
- maxWorkers: this.workerCount,
95342
- workerType: "web"
95343
- // 使用 Web Workers
95344
- });
95345
- this.pool.proxy().then((proxy) => {
95346
- log57.debug(`Browser worker pool created with ${this.workerCount} workers`);
95347
- });
95347
+ log57.error("\u274C Browser/Web Workers mode is not supported for SSG parallel processing");
95348
+ log57.info("\u{1F4A1} Reason: SSG requires Node.js file system access (fs, path, etc.)");
95349
+ log57.info("\u{1F4A1} Electron/Obsidian: Should use Node.js Worker Threads instead");
95350
+ log57.info("\u{1F4A1} Pure browser: Parallel processing not available, use serial mode");
95351
+ throw new Error(
95352
+ "PARALLEL_NOT_SUPPORTED: SSG parallel processing requires Node.js file system access. Web Workers cannot access fs/path modules. System will fall back to serial processing."
95353
+ );
95348
95354
  }
95349
95355
  /**
95350
95356
  * 执行 Worker 任务
@@ -95353,17 +95359,45 @@ var init_pool_manager = __esm({
95353
95359
  if (!this.pool) {
95354
95360
  throw new Error("Worker pool not initialized. Call initialize() first.");
95355
95361
  }
95362
+ log57.debug(`\u{1F4E4} Executing worker task: ${task.type}`, {
95363
+ environment: this.environment,
95364
+ taskType: task.type,
95365
+ hasProjectDir: !!task.projDir,
95366
+ hasModuleDir: !!task.moduleDir,
95367
+ pageTasksCount: task.pageTasks?.length || 0
95368
+ });
95356
95369
  try {
95357
95370
  if (this.environment === "node") {
95371
+ log57.debug("\u{1F527} Using Node.js worker (processTask function)");
95358
95372
  const response = await this.pool.exec("processTask", [task]);
95373
+ log57.debug("\u{1F4E5} Node worker response received", { success: response.success });
95359
95374
  return response;
95360
95375
  } else {
95361
- const response = await this.pool.exec(handleWorkerTask, [task]);
95376
+ log57.debug("\u{1F310} Using browser worker (calling registered processTask)");
95377
+ log57.debug("Task being sent to worker:", JSON.stringify({
95378
+ type: task.type,
95379
+ projDir: task.projDir,
95380
+ moduleDir: task.moduleDir,
95381
+ pageTasksCount: task.pageTasks?.length
95382
+ }));
95383
+ const response = await this.pool.exec("processTask", [task]);
95384
+ log57.debug("\u{1F4E5} Browser worker response received", {
95385
+ success: response.success,
95386
+ hasData: !!response.data,
95387
+ error: response.error
95388
+ });
95362
95389
  return response;
95363
95390
  }
95364
95391
  } catch (error) {
95365
95392
  const message = error instanceof Error ? error.message : String(error);
95366
- log57.error(`Worker task execution failed: ${message}`);
95393
+ const stack = error instanceof Error ? error.stack : void 0;
95394
+ log57.error(`\u274C Worker task execution failed: ${message}`);
95395
+ log57.debug("Error details:", {
95396
+ message,
95397
+ stack,
95398
+ environment: this.environment,
95399
+ taskType: task.type
95400
+ });
95367
95401
  return {
95368
95402
  success: false,
95369
95403
  error: message
@@ -95472,6 +95506,7 @@ function createTaskBatches(tasks2, batchSize) {
95472
95506
  }
95473
95507
  async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, completedPages, onProgress) {
95474
95508
  const results = [];
95509
+ log59.debug(`\u{1F680} Worker ${workerIndex} loop started`);
95475
95510
  while (true) {
95476
95511
  const batch = taskQueue.nextBatch();
95477
95512
  if (!batch) {
@@ -95485,7 +95520,16 @@ async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, co
95485
95520
  pageTasks: batch
95486
95521
  // ⭐ 现在传递 PageTask[] 而不是 string[]
95487
95522
  };
95523
+ log59.debug(`Worker ${workerIndex} sending task to pool manager`, {
95524
+ taskType: task.type,
95525
+ batchSize: batch.length
95526
+ });
95488
95527
  const response = await poolManager.exec(task);
95528
+ log59.debug(`Worker ${workerIndex} received response`, {
95529
+ success: response.success,
95530
+ hasData: !!response.data,
95531
+ error: response.error
95532
+ });
95489
95533
  if (response.success && response.data) {
95490
95534
  const result = response.data;
95491
95535
  results.push(result);
@@ -95503,6 +95547,10 @@ async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, co
95503
95547
  log59.info(`\u2705 Worker ${workerIndex} completed batch: ${result.processedCount} tasks in ${result.duration.toFixed(2)}ms`);
95504
95548
  } else {
95505
95549
  log59.error(`\u274C Worker ${workerIndex} failed: ${response.error}`);
95550
+ log59.debug(`Worker ${workerIndex} error details:`, {
95551
+ batchSize: batch.length,
95552
+ error: response.error
95553
+ });
95506
95554
  results.push({
95507
95555
  success: false,
95508
95556
  processedCount: 0,
@@ -95512,6 +95560,7 @@ async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, co
95512
95560
  });
95513
95561
  }
95514
95562
  }
95563
+ log59.debug(`Worker ${workerIndex} loop completed, processed ${results.length} batches`);
95515
95564
  return results;
95516
95565
  }
95517
95566
  async function processSSGParallel(projDir, modulesDir, markdown, onProgress, httpClient) {
@@ -95572,15 +95621,27 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
95572
95621
  const initStartTime = performance.now();
95573
95622
  const initTasks = [];
95574
95623
  for (let i = 0; i < workerCount; i++) {
95624
+ log59.debug(`Creating init task for worker ${i}`);
95575
95625
  const initTask = {
95576
95626
  type: "init",
95577
95627
  projDir,
95578
95628
  moduleDir: modulesDir
95579
95629
  };
95580
- initTasks.push(poolManager.exec(initTask));
95630
+ const initPromise = poolManager.exec(initTask);
95631
+ initPromise.then(
95632
+ (result) => log59.debug(`Worker ${i} init result:`, { success: result.success, error: result.error }),
95633
+ (error) => log59.error(`Worker ${i} init failed:`, error)
95634
+ );
95635
+ initTasks.push(initPromise);
95581
95636
  }
95582
- await Promise.all(initTasks);
95637
+ log59.info(`Waiting for ${workerCount} workers to initialize...`);
95638
+ const initResults = await Promise.all(initTasks);
95583
95639
  const initDuration = performance.now() - initStartTime;
95640
+ const failedInits = initResults.filter((r) => !r.success);
95641
+ if (failedInits.length > 0) {
95642
+ log59.error(`\u274C ${failedInits.length} workers failed to initialize:`, failedInits);
95643
+ throw new Error(`Failed to initialize ${failedInits.length} workers: ${failedInits.map((r) => r.error).join(", ")}`);
95644
+ }
95584
95645
  log59.info(`\u2705 All workers initialized in ${initDuration.toFixed(2)}ms`);
95585
95646
  onProgress?.({
95586
95647
  stage: "build",
@@ -96194,9 +96255,21 @@ async function serveSSG(projDir, modulesDir, markdown, onProgress, httpClient) {
96194
96255
  process.chdir(projDir);
96195
96256
  const tasks2 = await collectAllPageTasks(projDir, modulesDir, markdown, onProgress, httpClient);
96196
96257
  if (tasks2.length > 80) {
96197
- await processSSGParallel(projDir, modulesDir, markdown, onProgress, httpClient);
96198
- return getDomainInstances();
96258
+ log60.info(`\u{1F4CA} Found ${tasks2.length} pages, attempting parallel processing...`);
96259
+ try {
96260
+ await processSSGParallel(projDir, modulesDir, markdown, onProgress, httpClient);
96261
+ return getDomainInstances();
96262
+ } catch (parallelError) {
96263
+ const errorMessage = parallelError instanceof Error ? parallelError.message : String(parallelError);
96264
+ if (errorMessage.includes("PARALLEL_NOT_SUPPORTED")) {
96265
+ log60.warn("\u26A0\uFE0F Parallel processing not available, falling back to serial processing");
96266
+ log60.info(`\u{1F504} Processing ${tasks2.length} pages in serial mode...`);
96267
+ return await generateStaticSiteWithProgress(projDir, modulesDir, markdown, onProgress, httpClient);
96268
+ }
96269
+ throw parallelError;
96270
+ }
96199
96271
  }
96272
+ log60.info(`\u{1F4CA} Found ${tasks2.length} pages, using serial processing...`);
96200
96273
  return await generateStaticSiteWithProgress(projDir, modulesDir, markdown, onProgress, httpClient);
96201
96274
  } catch (error) {
96202
96275
  const message = error instanceof Error ? error.message : String(error);
@@ -96301,117 +96374,129 @@ var init_ssg = __esm({
96301
96374
  }
96302
96375
  });
96303
96376
 
96377
+ // internal/application/worker/worker-node.ts
96378
+ var workerpool2 = __toESM2(require("workerpool"));
96379
+
96304
96380
  // internal/application/worker/worker-state.ts
96305
- var log61, WorkerState;
96306
- var init_worker_state = __esm({
96307
- "internal/application/worker/worker-state.ts"() {
96308
- "use strict";
96309
- init_log();
96310
- init_page_filter();
96311
- log61 = getDomainLogger("application", { component: "worker-state" });
96312
- WorkerState = class {
96313
- constructor(projDir, moduleDir) {
96314
- this.projDir = projDir;
96315
- this.moduleDir = moduleDir;
96316
- }
96317
- initialized = false;
96318
- /**
96319
- * 初始化 Worker 环境(只执行一次)
96320
- */
96321
- async initialize() {
96322
- if (this.initialized) {
96323
- log61.warn("Worker already initialized, skipping...");
96324
- return;
96325
- }
96326
- const startTime = performance.now();
96327
- log61.info("\u{1F680} Initializing worker environment...", {
96328
- projDir: this.projDir,
96329
- moduleDir: this.moduleDir
96330
- });
96331
- this.initialized = true;
96332
- const duration = performance.now() - startTime;
96333
- log61.info(`\u2705 Worker environment initialized in ${duration.toFixed(2)}ms`);
96334
- }
96335
- /**
96336
- * 处理一个批次的页面任务
96337
- * 运行完整的 SSG 流程,但通过过滤器只处理指定任务
96338
- *
96339
- * @param pageTasks - 包含语言和路径信息的任务列表
96340
- */
96341
- async processBatch(pageTasks) {
96342
- if (!this.initialized) {
96343
- throw new Error("Worker not initialized. Call initialize() first.");
96344
- }
96345
- const startTime = performance.now();
96346
- const errors2 = [];
96347
- log61.info(`\u{1F4E6} Processing batch: ${pageTasks.length} tasks`);
96348
- try {
96349
- setPageFilter(pageTasks);
96350
- log61.debug(`Filter set for ${pageTasks.length} tasks`);
96351
- const { generateStaticSite: generateStaticSite2 } = await Promise.resolve().then(() => (init_ssg(), ssg_exports));
96352
- await generateStaticSite2(this.projDir, this.moduleDir);
96353
- log61.debug("\u2705 Tasks processed (filtered)");
96354
- const duration = performance.now() - startTime;
96355
- const result = {
96356
- success: true,
96357
- processedCount: pageTasks.length,
96358
- totalCount: pageTasks.length,
96359
- duration,
96360
- errors: errors2
96361
- };
96362
- log61.info(`\u2705 Batch processed: ${pageTasks.length} tasks in ${duration.toFixed(2)}ms`);
96363
- return result;
96364
- } catch (error) {
96365
- const message = error instanceof Error ? error.message : String(error);
96366
- const errorMsg = `Batch processing failed: ${message}`;
96367
- log61.error(`\u274C ${errorMsg}`);
96368
- errors2.push(errorMsg);
96369
- const duration = performance.now() - startTime;
96370
- return {
96371
- success: false,
96372
- processedCount: 0,
96373
- totalCount: pageTasks.length,
96374
- duration,
96375
- errors: errors2
96376
- };
96377
- } finally {
96378
- clearPageFilter();
96379
- }
96380
- }
96381
- /**
96382
- * 清理资源
96383
- */
96384
- async cleanup() {
96385
- log61.info("\u{1F9F9} Cleaning up worker resources...");
96386
- this.initialized = false;
96387
- }
96388
- /**
96389
- * 获取统计信息
96390
- */
96391
- getStats() {
96392
- return {
96393
- initialized: this.initialized,
96394
- projDir: this.projDir,
96395
- moduleDir: this.moduleDir
96396
- };
96397
- }
96381
+ init_log();
96382
+ init_page_filter();
96383
+ var log61 = getDomainLogger("application", { component: "worker-state" });
96384
+ var WorkerState = class {
96385
+ constructor(projDir, moduleDir) {
96386
+ this.projDir = projDir;
96387
+ this.moduleDir = moduleDir;
96388
+ }
96389
+ initialized = false;
96390
+ /**
96391
+ * 初始化 Worker 环境(只执行一次)
96392
+ */
96393
+ async initialize() {
96394
+ if (this.initialized) {
96395
+ log61.warn("Worker already initialized, skipping...");
96396
+ return;
96397
+ }
96398
+ const startTime = performance.now();
96399
+ log61.info("\u{1F680} Initializing worker environment...", {
96400
+ projDir: this.projDir,
96401
+ moduleDir: this.moduleDir
96402
+ });
96403
+ this.initialized = true;
96404
+ const duration = performance.now() - startTime;
96405
+ log61.info(`\u2705 Worker environment initialized in ${duration.toFixed(2)}ms`);
96406
+ }
96407
+ /**
96408
+ * 处理一个批次的页面任务
96409
+ * 运行完整的 SSG 流程,但通过过滤器只处理指定任务
96410
+ *
96411
+ * @param pageTasks - 包含语言和路径信息的任务列表
96412
+ */
96413
+ async processBatch(pageTasks) {
96414
+ if (!this.initialized) {
96415
+ throw new Error("Worker not initialized. Call initialize() first.");
96416
+ }
96417
+ const startTime = performance.now();
96418
+ const errors2 = [];
96419
+ log61.info(`\u{1F4E6} Processing batch: ${pageTasks.length} tasks`);
96420
+ try {
96421
+ setPageFilter(pageTasks);
96422
+ log61.debug(`Filter set for ${pageTasks.length} tasks`);
96423
+ const { generateStaticSite: generateStaticSite2 } = await Promise.resolve().then(() => (init_ssg(), ssg_exports));
96424
+ await generateStaticSite2(this.projDir, this.moduleDir);
96425
+ log61.debug("\u2705 Tasks processed (filtered)");
96426
+ const duration = performance.now() - startTime;
96427
+ const result = {
96428
+ success: true,
96429
+ processedCount: pageTasks.length,
96430
+ totalCount: pageTasks.length,
96431
+ duration,
96432
+ errors: errors2
96433
+ };
96434
+ log61.info(`\u2705 Batch processed: ${pageTasks.length} tasks in ${duration.toFixed(2)}ms`);
96435
+ return result;
96436
+ } catch (error) {
96437
+ const message = error instanceof Error ? error.message : String(error);
96438
+ const errorMsg = `Batch processing failed: ${message}`;
96439
+ log61.error(`\u274C ${errorMsg}`);
96440
+ errors2.push(errorMsg);
96441
+ const duration = performance.now() - startTime;
96442
+ return {
96443
+ success: false,
96444
+ processedCount: 0,
96445
+ totalCount: pageTasks.length,
96446
+ duration,
96447
+ errors: errors2
96448
+ };
96449
+ } finally {
96450
+ clearPageFilter();
96451
+ }
96452
+ }
96453
+ /**
96454
+ * 清理资源
96455
+ */
96456
+ async cleanup() {
96457
+ log61.info("\u{1F9F9} Cleaning up worker resources...");
96458
+ this.initialized = false;
96459
+ }
96460
+ /**
96461
+ * 获取统计信息
96462
+ */
96463
+ getStats() {
96464
+ return {
96465
+ initialized: this.initialized,
96466
+ projDir: this.projDir,
96467
+ moduleDir: this.moduleDir
96398
96468
  };
96399
96469
  }
96400
- });
96470
+ };
96401
96471
 
96402
96472
  // internal/application/worker/worker-main.ts
96473
+ init_log();
96474
+ var log62 = getDomainLogger("application", { component: "worker-main" });
96475
+ var workerState = null;
96403
96476
  async function handleWorkerTask(task) {
96477
+ log62.info(`\u{1F528} handleWorkerTask called with task type: ${task.type}`);
96478
+ log62.debug("Task details:", {
96479
+ type: task.type,
96480
+ hasProjDir: !!task.projDir,
96481
+ hasModuleDir: !!task.moduleDir,
96482
+ pageTasksCount: task.pageTasks?.length || 0
96483
+ });
96404
96484
  try {
96405
96485
  switch (task.type) {
96406
96486
  case "init":
96487
+ log62.debug("Handling init task");
96407
96488
  return await handleInit(task);
96408
96489
  case "process-batch":
96490
+ log62.debug("Handling process-batch task");
96409
96491
  return await handleProcessBatch(task);
96410
96492
  case "stats":
96493
+ log62.debug("Handling stats task");
96411
96494
  return await handleStats();
96412
96495
  case "cleanup":
96496
+ log62.debug("Handling cleanup task");
96413
96497
  return await handleCleanup();
96414
96498
  default:
96499
+ log62.error(`Unknown task type: ${task.type}`);
96415
96500
  return {
96416
96501
  success: false,
96417
96502
  error: `Unknown task type: ${task.type}`
@@ -96419,7 +96504,9 @@ async function handleWorkerTask(task) {
96419
96504
  }
96420
96505
  } catch (error) {
96421
96506
  const message = error instanceof Error ? error.message : String(error);
96422
- log62.error(`Worker task failed: ${message}`);
96507
+ const stack = error instanceof Error ? error.stack : void 0;
96508
+ log62.error(`\u274C Worker task failed: ${message}`);
96509
+ log62.debug("Error stack:", stack);
96423
96510
  return {
96424
96511
  success: false,
96425
96512
  error: message
@@ -96427,39 +96514,68 @@ async function handleWorkerTask(task) {
96427
96514
  }
96428
96515
  }
96429
96516
  async function handleInit(task) {
96517
+ log62.info("\u{1F527} handleInit called");
96518
+ log62.debug("Init task params:", {
96519
+ projDir: task.projDir,
96520
+ moduleDir: task.moduleDir
96521
+ });
96430
96522
  if (!task.projDir || !task.moduleDir) {
96523
+ log62.error("Missing required parameters for init");
96431
96524
  return {
96432
96525
  success: false,
96433
96526
  error: "Missing projDir or moduleDir for init task"
96434
96527
  };
96435
96528
  }
96436
- log62.info("\u{1F527} Initializing worker...");
96437
- workerState = new WorkerState(task.projDir, task.moduleDir);
96438
- await workerState.initialize();
96439
- return {
96440
- success: true,
96441
- data: { message: "Worker initialized successfully" }
96442
- };
96529
+ try {
96530
+ log62.info("Creating WorkerState...");
96531
+ workerState = new WorkerState(task.projDir, task.moduleDir);
96532
+ log62.info("Initializing WorkerState...");
96533
+ await workerState.initialize();
96534
+ log62.info("\u2705 Worker initialized successfully");
96535
+ return {
96536
+ success: true,
96537
+ data: { message: "Worker initialized successfully" }
96538
+ };
96539
+ } catch (error) {
96540
+ const message = error instanceof Error ? error.message : String(error);
96541
+ log62.error(`Failed to initialize worker: ${message}`);
96542
+ throw error;
96543
+ }
96443
96544
  }
96444
96545
  async function handleProcessBatch(task) {
96546
+ log62.info("\u{1F4E6} handleProcessBatch called");
96445
96547
  if (!workerState) {
96548
+ log62.error("Worker not initialized");
96446
96549
  return {
96447
96550
  success: false,
96448
96551
  error: "Worker not initialized. Call init task first."
96449
96552
  };
96450
96553
  }
96451
96554
  if (!task.pageTasks || task.pageTasks.length === 0) {
96555
+ log62.error("Missing pageTasks");
96452
96556
  return {
96453
96557
  success: false,
96454
96558
  error: "Missing pageTasks for process-batch task"
96455
96559
  };
96456
96560
  }
96457
- const result = await workerState.processBatch(task.pageTasks);
96458
- return {
96459
- success: result.success,
96460
- data: result,
96461
- error: result.errors.length > 0 ? result.errors.join("; ") : void 0
96462
- };
96561
+ log62.info(`Processing batch of ${task.pageTasks.length} tasks...`);
96562
+ try {
96563
+ const result = await workerState.processBatch(task.pageTasks);
96564
+ log62.info(`\u2705 Batch processed: ${result.processedCount}/${result.totalCount} pages`, {
96565
+ success: result.success,
96566
+ duration: result.duration,
96567
+ errorCount: result.errors.length
96568
+ });
96569
+ return {
96570
+ success: result.success,
96571
+ data: result,
96572
+ error: result.errors.length > 0 ? result.errors.join("; ") : void 0
96573
+ };
96574
+ } catch (error) {
96575
+ const message = error instanceof Error ? error.message : String(error);
96576
+ log62.error(`Failed to process batch: ${message}`);
96577
+ throw error;
96578
+ }
96463
96579
  }
96464
96580
  async function handleStats() {
96465
96581
  if (!workerState) {
@@ -96487,20 +96603,8 @@ async function handleCleanup() {
96487
96603
  data: { message: "Worker cleaned up successfully" }
96488
96604
  };
96489
96605
  }
96490
- var log62, workerState;
96491
- var init_worker_main = __esm({
96492
- "internal/application/worker/worker-main.ts"() {
96493
- "use strict";
96494
- init_worker_state();
96495
- init_log();
96496
- log62 = getDomainLogger("application", { component: "worker-main" });
96497
- workerState = null;
96498
- }
96499
- });
96500
96606
 
96501
96607
  // internal/application/worker/worker-node.ts
96502
- var workerpool2 = __toESM2(require("workerpool"));
96503
- init_worker_main();
96504
96608
  async function processTask(task) {
96505
96609
  return await handleWorkerTask(task);
96506
96610
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdfriday/foundry",
3
- "version": "26.2.8",
3
+ "version": "26.2.10",
4
4
  "description": "The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1 +0,0 @@
1
- "use strict";(()=>{if(typeof self.importScripts=="function")try{self.importScripts("workerpool")}catch(e){console.error("Failed to import workerpool:",e)}self.addEventListener("message",async e=>{let o=e.data;try{self.postMessage({success:!1,error:"Browser worker needs special initialization. Use workerpool.pool() with proper options."})}catch(s){let r=s instanceof Error?s.message:String(s);self.postMessage({success:!1,error:r})}});})();