@mdfriday/foundry 26.2.6 → 26.2.7
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/index.js +1 -1
- package/dist/worker/pool-manager.js +389 -387
- package/dist/worker/worker-node.js +389 -387
- package/package.json +1 -1
|
@@ -47,12 +47,13 @@ function New3(level = "info" /* INFO */) {
|
|
|
47
47
|
function NewWithConfig(config2) {
|
|
48
48
|
return new Logger(config2);
|
|
49
49
|
}
|
|
50
|
-
var util, Logger;
|
|
50
|
+
var util, console2, Logger;
|
|
51
51
|
var init_logger = __esm({
|
|
52
52
|
"pkg/log/logger.ts"() {
|
|
53
53
|
"use strict";
|
|
54
54
|
util = __toESM2(require("util"));
|
|
55
55
|
init_types();
|
|
56
|
+
console2 = __toESM2(require("console"));
|
|
56
57
|
Logger = class _Logger {
|
|
57
58
|
config;
|
|
58
59
|
fields;
|
|
@@ -116,6 +117,7 @@ var init_logger = __esm({
|
|
|
116
117
|
entry.caller = caller;
|
|
117
118
|
}
|
|
118
119
|
const output = this.config.jsonFormat ? JSON.stringify(entry) : this.formatPlainText(entry);
|
|
120
|
+
console2.log(output);
|
|
119
121
|
if (level === "error" /* ERROR */ || level === "fatal" /* FATAL */) {
|
|
120
122
|
process.stderr.write(output + "\n");
|
|
121
123
|
} else {
|
|
@@ -202,7 +204,7 @@ var init_manager = __esm({
|
|
|
202
204
|
loggers;
|
|
203
205
|
constructor() {
|
|
204
206
|
this.globalConfig = {
|
|
205
|
-
level: "
|
|
207
|
+
level: "debug" /* DEBUG */,
|
|
206
208
|
enableCaller: true,
|
|
207
209
|
jsonFormat: true
|
|
208
210
|
};
|
|
@@ -319,12 +321,12 @@ function clearPageFilter() {
|
|
|
319
321
|
function shouldProcessPage(language2, pagePath) {
|
|
320
322
|
return pageFilter.shouldProcess(language2, pagePath);
|
|
321
323
|
}
|
|
322
|
-
var
|
|
324
|
+
var log2, PageFilterManager, pageFilter;
|
|
323
325
|
var init_page_filter = __esm({
|
|
324
326
|
"pkg/page-filter/index.ts"() {
|
|
325
327
|
"use strict";
|
|
326
328
|
init_log();
|
|
327
|
-
|
|
329
|
+
log2 = getDomainLogger("pkg", { component: "page-filter" });
|
|
328
330
|
PageFilterManager = class {
|
|
329
331
|
filterSet = null;
|
|
330
332
|
currentLanguage = null;
|
|
@@ -338,7 +340,7 @@ var init_page_filter = __esm({
|
|
|
338
340
|
const key3 = `${task.language}:${task.pagePath}`;
|
|
339
341
|
this.filterSet.add(key3);
|
|
340
342
|
}
|
|
341
|
-
|
|
343
|
+
log2.debug(`Page filter set: ${tasks2.length} tasks`);
|
|
342
344
|
}
|
|
343
345
|
/**
|
|
344
346
|
* 设置当前处理的语言
|
|
@@ -352,7 +354,7 @@ var init_page_filter = __esm({
|
|
|
352
354
|
clearFilter() {
|
|
353
355
|
this.filterSet = null;
|
|
354
356
|
this.currentLanguage = null;
|
|
355
|
-
|
|
357
|
+
log2.debug("Page filter cleared");
|
|
356
358
|
}
|
|
357
359
|
/**
|
|
358
360
|
* 检查是否应该处理此页面 (O(1) 查找)
|
|
@@ -2666,7 +2668,7 @@ function newHttpClient(fs3, timeout, headers, customClient) {
|
|
|
2666
2668
|
}
|
|
2667
2669
|
return new NodeHttpClient(fs3, timeout, headers);
|
|
2668
2670
|
}
|
|
2669
|
-
var path6, http, https,
|
|
2671
|
+
var path6, http, https, log3, NodeHttpClient;
|
|
2670
2672
|
var init_httpclient = __esm({
|
|
2671
2673
|
"internal/domain/module/vo/httpclient.ts"() {
|
|
2672
2674
|
"use strict";
|
|
@@ -2675,7 +2677,7 @@ var init_httpclient = __esm({
|
|
|
2675
2677
|
http = __toESM2(require("http"));
|
|
2676
2678
|
https = __toESM2(require("https"));
|
|
2677
2679
|
init_log();
|
|
2678
|
-
|
|
2680
|
+
log3 = getDomainLogger("module", { component: "httpclient" });
|
|
2679
2681
|
NodeHttpClient = class {
|
|
2680
2682
|
constructor(fs3, timeout = 3e4, headers = {}) {
|
|
2681
2683
|
this.fs = fs3;
|
|
@@ -2744,7 +2746,7 @@ var init_httpclient = __esm({
|
|
|
2744
2746
|
options.onProgress(progress);
|
|
2745
2747
|
lastLoggedPercentage = percentage;
|
|
2746
2748
|
} catch (progressError) {
|
|
2747
|
-
|
|
2749
|
+
log3.error(`Progress callback error: ${progressError}`);
|
|
2748
2750
|
}
|
|
2749
2751
|
lastProgressTime = now;
|
|
2750
2752
|
}
|
|
@@ -2766,7 +2768,7 @@ var init_httpclient = __esm({
|
|
|
2766
2768
|
try {
|
|
2767
2769
|
options.onProgress(progress);
|
|
2768
2770
|
} catch (progressError) {
|
|
2769
|
-
|
|
2771
|
+
log3.warn(`Progress callback error: ${progressError}`);
|
|
2770
2772
|
}
|
|
2771
2773
|
}
|
|
2772
2774
|
resolve5();
|
|
@@ -2776,7 +2778,7 @@ var init_httpclient = __esm({
|
|
|
2776
2778
|
}
|
|
2777
2779
|
});
|
|
2778
2780
|
response.on("error", (error) => {
|
|
2779
|
-
|
|
2781
|
+
log3.error(`Response error: ${error.message}`);
|
|
2780
2782
|
reject(new ModuleError(`Download failed: ${error.message}`, "DOWNLOAD_FAILED"));
|
|
2781
2783
|
});
|
|
2782
2784
|
} catch (error) {
|
|
@@ -2785,12 +2787,12 @@ var init_httpclient = __esm({
|
|
|
2785
2787
|
}
|
|
2786
2788
|
});
|
|
2787
2789
|
request.on("error", (error) => {
|
|
2788
|
-
|
|
2790
|
+
log3.error(`Request error:`, error);
|
|
2789
2791
|
reject(new ModuleError(`Request failed: ${error.message}`, "REQUEST_FAILED"));
|
|
2790
2792
|
});
|
|
2791
2793
|
request.on("timeout", () => {
|
|
2792
2794
|
request.destroy();
|
|
2793
|
-
|
|
2795
|
+
log3.error(`Request timeout for ${downloadUrl}`);
|
|
2794
2796
|
reject(new ModuleError("Request timeout", "TIMEOUT"));
|
|
2795
2797
|
});
|
|
2796
2798
|
request.end();
|
|
@@ -12729,7 +12731,7 @@ function newZipExtractor(fs3, environment = "node") {
|
|
|
12729
12731
|
throw new Error(`Unsupported environment: ${environment}`);
|
|
12730
12732
|
}
|
|
12731
12733
|
}
|
|
12732
|
-
var import_jszip, path7,
|
|
12734
|
+
var import_jszip, path7, log4, JsZipExtractor, WebZipExtractor;
|
|
12733
12735
|
var init_zipextractor = __esm({
|
|
12734
12736
|
"internal/domain/module/vo/zipextractor.ts"() {
|
|
12735
12737
|
"use strict";
|
|
@@ -12737,7 +12739,7 @@ var init_zipextractor = __esm({
|
|
|
12737
12739
|
init_log();
|
|
12738
12740
|
import_jszip = __toESM2(require_lib3());
|
|
12739
12741
|
path7 = __toESM2(require("path"));
|
|
12740
|
-
|
|
12742
|
+
log4 = getDomainLogger("module", { component: "zipextractor" });
|
|
12741
12743
|
JsZipExtractor = class {
|
|
12742
12744
|
constructor(fs3) {
|
|
12743
12745
|
this.fs = fs3;
|
|
@@ -12756,7 +12758,7 @@ var init_zipextractor = __esm({
|
|
|
12756
12758
|
await this.extractZipData(result.buffer, targetDir);
|
|
12757
12759
|
} catch (error) {
|
|
12758
12760
|
const message = error instanceof Error ? error.message : String(error);
|
|
12759
|
-
|
|
12761
|
+
log4.error(`ZIP extraction failed for ${zipPath}: ${message}`);
|
|
12760
12762
|
throw new ModuleError(`ZIP extraction failed: ${message}`, "EXTRACTION_FAILED");
|
|
12761
12763
|
}
|
|
12762
12764
|
}
|
|
@@ -12802,7 +12804,7 @@ var init_zipextractor = __esm({
|
|
|
12802
12804
|
await Promise.all(promises);
|
|
12803
12805
|
} catch (error) {
|
|
12804
12806
|
const message = error instanceof Error ? error.message : String(error);
|
|
12805
|
-
|
|
12807
|
+
log4.error(`Failed to extract ZIP data: ${message}`);
|
|
12806
12808
|
throw new ModuleError(`Failed to extract ZIP data: ${message}`, "EXTRACTION_FAILED");
|
|
12807
12809
|
}
|
|
12808
12810
|
}
|
|
@@ -12870,14 +12872,14 @@ var init_zipextractor = __esm({
|
|
|
12870
12872
|
function newModuleCache(fs3, cacheDir) {
|
|
12871
12873
|
return new FsModuleCache(fs3, cacheDir);
|
|
12872
12874
|
}
|
|
12873
|
-
var path8,
|
|
12875
|
+
var path8, log5, FsModuleCache;
|
|
12874
12876
|
var init_cache = __esm({
|
|
12875
12877
|
"internal/domain/module/vo/cache.ts"() {
|
|
12876
12878
|
"use strict";
|
|
12877
12879
|
init_type2();
|
|
12878
12880
|
init_log();
|
|
12879
12881
|
path8 = __toESM2(require("path"));
|
|
12880
|
-
|
|
12882
|
+
log5 = getDomainLogger("module", { component: "cache" });
|
|
12881
12883
|
FsModuleCache = class {
|
|
12882
12884
|
constructor(fs3, cacheDir = "./module/cache") {
|
|
12883
12885
|
this.fs = fs3;
|
|
@@ -12899,11 +12901,11 @@ var init_cache = __esm({
|
|
|
12899
12901
|
return JSON.parse(content);
|
|
12900
12902
|
} catch (error) {
|
|
12901
12903
|
if (error.message?.includes("ENOENT") || error.message?.includes("no such file")) {
|
|
12902
|
-
|
|
12904
|
+
log5.error(`Cache miss: ${modulePath}`, error);
|
|
12903
12905
|
return null;
|
|
12904
12906
|
}
|
|
12905
12907
|
const message = error instanceof Error ? error.message : String(error);
|
|
12906
|
-
|
|
12908
|
+
log5.error(`Cache read error for ${modulePath}: ${message}`);
|
|
12907
12909
|
throw new ModuleError(`Failed to read cache: ${message}`, "CACHE_READ_FAILED");
|
|
12908
12910
|
}
|
|
12909
12911
|
}
|
|
@@ -12922,7 +12924,7 @@ var init_cache = __esm({
|
|
|
12922
12924
|
await file.close();
|
|
12923
12925
|
} catch (error) {
|
|
12924
12926
|
const message = error instanceof Error ? error.message : String(error);
|
|
12925
|
-
|
|
12927
|
+
log5.error(`Cache write error for ${modulePath}: ${message}`);
|
|
12926
12928
|
throw new ModuleError(`Failed to write cache: ${message}`, "CACHE_WRITE_FAILED");
|
|
12927
12929
|
}
|
|
12928
12930
|
}
|
|
@@ -12948,7 +12950,7 @@ var init_cache = __esm({
|
|
|
12948
12950
|
} catch (error) {
|
|
12949
12951
|
if (!error.message?.includes("ENOENT") && !error.message?.includes("no such file")) {
|
|
12950
12952
|
const message = error instanceof Error ? error.message : String(error);
|
|
12951
|
-
|
|
12953
|
+
log5.error(`Cache delete error for ${modulePath}: ${message}`);
|
|
12952
12954
|
throw new ModuleError(`Failed to delete cache: ${message}`, "CACHE_DELETE_FAILED");
|
|
12953
12955
|
}
|
|
12954
12956
|
}
|
|
@@ -12962,7 +12964,7 @@ var init_cache = __esm({
|
|
|
12962
12964
|
} catch (error) {
|
|
12963
12965
|
if (!error.message?.includes("ENOENT") && !error.message?.includes("no such file")) {
|
|
12964
12966
|
const message = error instanceof Error ? error.message : String(error);
|
|
12965
|
-
|
|
12967
|
+
log5.error(`Cache clear error: ${message}`);
|
|
12966
12968
|
throw new ModuleError(`Failed to clear cache: ${message}`, "CACHE_CLEAR_FAILED");
|
|
12967
12969
|
}
|
|
12968
12970
|
}
|
|
@@ -14168,7 +14170,7 @@ var init_dist = __esm({
|
|
|
14168
14170
|
function newModules(info, httpClient, zipExtractor, moduleCache) {
|
|
14169
14171
|
return new Modules(info, httpClient, zipExtractor, moduleCache);
|
|
14170
14172
|
}
|
|
14171
|
-
var path11,
|
|
14173
|
+
var path11, log6, Modules;
|
|
14172
14174
|
var init_module4 = __esm({
|
|
14173
14175
|
"internal/domain/module/entity/module.ts"() {
|
|
14174
14176
|
"use strict";
|
|
@@ -14179,7 +14181,7 @@ var init_module4 = __esm({
|
|
|
14179
14181
|
init_log();
|
|
14180
14182
|
init_dist();
|
|
14181
14183
|
path11 = __toESM2(require("path"));
|
|
14182
|
-
|
|
14184
|
+
log6 = getDomainLogger("module", { component: "modules" });
|
|
14183
14185
|
Modules = class {
|
|
14184
14186
|
constructor(info, httpClient, zipExtractor, moduleCache) {
|
|
14185
14187
|
this.info = info;
|
|
@@ -14220,7 +14222,7 @@ var init_module4 = __esm({
|
|
|
14220
14222
|
async load(onProgress) {
|
|
14221
14223
|
const importPaths = this.info.importPaths();
|
|
14222
14224
|
if (importPaths.length === 0) {
|
|
14223
|
-
|
|
14225
|
+
log6.warn("No import paths configured - no modules will be downloaded");
|
|
14224
14226
|
return;
|
|
14225
14227
|
}
|
|
14226
14228
|
for (let i = 0; i < importPaths.length; i++) {
|
|
@@ -14238,7 +14240,7 @@ var init_module4 = __esm({
|
|
|
14238
14240
|
});
|
|
14239
14241
|
});
|
|
14240
14242
|
} else {
|
|
14241
|
-
|
|
14243
|
+
log6.info(`Module already downloaded: ${resolvedImportPath}`);
|
|
14242
14244
|
}
|
|
14243
14245
|
}
|
|
14244
14246
|
}
|
|
@@ -14255,7 +14257,7 @@ var init_module4 = __esm({
|
|
|
14255
14257
|
const cleanUrl = url.toString();
|
|
14256
14258
|
return { cleanUrl, version };
|
|
14257
14259
|
} catch (error) {
|
|
14258
|
-
|
|
14260
|
+
log6.warn(`Failed to parse import path ${importPath}:`, error);
|
|
14259
14261
|
return { cleanUrl: importPath, version: "latest" };
|
|
14260
14262
|
}
|
|
14261
14263
|
}
|
|
@@ -14273,7 +14275,7 @@ var init_module4 = __esm({
|
|
|
14273
14275
|
}
|
|
14274
14276
|
return "https://gohugo.net/themes.json";
|
|
14275
14277
|
} catch (error) {
|
|
14276
|
-
|
|
14278
|
+
log6.warn(`Failed to parse import path ${importPath}, using default theme registry`);
|
|
14277
14279
|
return "https://gohugo.net/themes.json";
|
|
14278
14280
|
}
|
|
14279
14281
|
}
|
|
@@ -14289,7 +14291,7 @@ var init_module4 = __esm({
|
|
|
14289
14291
|
}
|
|
14290
14292
|
try {
|
|
14291
14293
|
const themeRegistryUrl = this.getThemeRegistryUrl(importPath);
|
|
14292
|
-
|
|
14294
|
+
log6.info(`Fetching latest theme versions from ${themeRegistryUrl}...`);
|
|
14293
14295
|
let themes = this.themesCache.get(themeRegistryUrl);
|
|
14294
14296
|
if (!themes) {
|
|
14295
14297
|
const response = await this.httpClient.get(themeRegistryUrl);
|
|
@@ -14300,13 +14302,13 @@ var init_module4 = __esm({
|
|
|
14300
14302
|
}
|
|
14301
14303
|
const resolvedPath = themes.resolveLatestVersion(importPath);
|
|
14302
14304
|
if (resolvedPath !== importPath) {
|
|
14303
|
-
|
|
14305
|
+
log6.info(`Resolved latest version: ${importPath} -> ${resolvedPath}`);
|
|
14304
14306
|
} else {
|
|
14305
|
-
|
|
14307
|
+
log6.warn(`Could not resolve latest version for ${importPath}, using original path`);
|
|
14306
14308
|
}
|
|
14307
14309
|
return resolvedPath;
|
|
14308
14310
|
} catch (error) {
|
|
14309
|
-
|
|
14311
|
+
log6.error(`Failed to resolve latest version for ${importPath}:`, error);
|
|
14310
14312
|
return importPath;
|
|
14311
14313
|
}
|
|
14312
14314
|
}
|
|
@@ -14325,12 +14327,12 @@ var init_module4 = __esm({
|
|
|
14325
14327
|
if (cachedMetadata && cachedMetadata.downloadStatus === "completed" /* COMPLETED */ && this.isCacheValidForVersion(cachedMetadata.version, effectiveVersion)) {
|
|
14326
14328
|
const module2 = await this.createModuleFromCache(moduleImport, cachedMetadata);
|
|
14327
14329
|
if (await module2.exists()) {
|
|
14328
|
-
|
|
14330
|
+
log6.info(`Using cached module ${moduleImport.path} version ${cachedMetadata.version}`);
|
|
14329
14331
|
return module2;
|
|
14330
14332
|
}
|
|
14331
14333
|
}
|
|
14332
14334
|
if (cachedMetadata && cachedMetadata.downloadStatus === "completed" /* COMPLETED */ && !this.isCacheValidForVersion(cachedMetadata.version, effectiveVersion)) {
|
|
14333
|
-
|
|
14335
|
+
log6.info(`Cache version mismatch for ${moduleImport.path}: cached=${cachedMetadata.version}, requested=${effectiveVersion || "latest"}`);
|
|
14334
14336
|
}
|
|
14335
14337
|
const moduleDir = this.getModuleDir(moduleImport.path);
|
|
14336
14338
|
const zipPath = path11.join(moduleDir, "module.zip");
|
|
@@ -14402,10 +14404,10 @@ var init_module4 = __esm({
|
|
|
14402
14404
|
const themeImportPaths = await this.parseThemeToml(module2);
|
|
14403
14405
|
for (const themeImportPath of themeImportPaths) {
|
|
14404
14406
|
if (this.downloadedModules.has(themeImportPath)) {
|
|
14405
|
-
|
|
14407
|
+
log6.info(`Module ${themeImportPath} already downloaded, skipping`);
|
|
14406
14408
|
continue;
|
|
14407
14409
|
}
|
|
14408
|
-
|
|
14410
|
+
log6.info(`Recursively downloading module dependency: ${themeImportPath}`);
|
|
14409
14411
|
const originalImportPath = themeImportPath;
|
|
14410
14412
|
const { cleanUrl: cleanUrl2, version: version2 } = this.parseVersionFromImportPath(originalImportPath);
|
|
14411
14413
|
let resolvedImportPath = originalImportPath;
|
|
@@ -14418,7 +14420,7 @@ var init_module4 = __esm({
|
|
|
14418
14420
|
}
|
|
14419
14421
|
} catch (error) {
|
|
14420
14422
|
const message = error instanceof Error ? error.message : String(error);
|
|
14421
|
-
|
|
14423
|
+
log6.warn(`Failed to process recursive imports for module ${importPath}: ${message}`);
|
|
14422
14424
|
}
|
|
14423
14425
|
} catch (error) {
|
|
14424
14426
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -14574,18 +14576,18 @@ var init_module4 = __esm({
|
|
|
14574
14576
|
}
|
|
14575
14577
|
} catch (error) {
|
|
14576
14578
|
const message = error instanceof Error ? error.message : String(error);
|
|
14577
|
-
|
|
14579
|
+
log6.warn(`Failed to read theme.toml for module ${module2.path()}: ${message}`);
|
|
14578
14580
|
return [];
|
|
14579
14581
|
}
|
|
14580
14582
|
const tomlData = parse2(tomlContent);
|
|
14581
14583
|
if (tomlData.module?.imports) {
|
|
14582
|
-
|
|
14584
|
+
log6.info(`Found ${tomlData.module.imports.length} module imports in ${module2.path()}/theme.toml`);
|
|
14583
14585
|
return tomlData.module.imports.map((imp) => imp.path);
|
|
14584
14586
|
}
|
|
14585
14587
|
return [];
|
|
14586
14588
|
} catch (error) {
|
|
14587
14589
|
const message = error instanceof Error ? error.message : String(error);
|
|
14588
|
-
|
|
14590
|
+
log6.warn(`Failed to parse theme.toml for module ${module2.path()}: ${message}`);
|
|
14589
14591
|
return [];
|
|
14590
14592
|
}
|
|
14591
14593
|
}
|
|
@@ -14605,7 +14607,7 @@ async function createModules(info) {
|
|
|
14605
14607
|
return modules;
|
|
14606
14608
|
} catch (error) {
|
|
14607
14609
|
const message = error instanceof Error ? error.message : String(error);
|
|
14608
|
-
|
|
14610
|
+
log7.error(`Failed to create modules: ${message}`);
|
|
14609
14611
|
throw new ModuleError(`Failed to create modules: ${message}`, "FACTORY_FAILED");
|
|
14610
14612
|
}
|
|
14611
14613
|
}
|
|
@@ -14620,11 +14622,11 @@ async function createModulesWithProgress(info, onProgress) {
|
|
|
14620
14622
|
return modules;
|
|
14621
14623
|
} catch (error) {
|
|
14622
14624
|
const message = error instanceof Error ? error.message : String(error);
|
|
14623
|
-
|
|
14625
|
+
log7.error(`Failed to create modules: ${message}`);
|
|
14624
14626
|
throw new ModuleError(`Failed to create modules: ${message}`, "FACTORY_FAILED");
|
|
14625
14627
|
}
|
|
14626
14628
|
}
|
|
14627
|
-
var
|
|
14629
|
+
var log7;
|
|
14628
14630
|
var init_module5 = __esm({
|
|
14629
14631
|
"internal/domain/module/factory/module.ts"() {
|
|
14630
14632
|
"use strict";
|
|
@@ -14634,7 +14636,7 @@ var init_module5 = __esm({
|
|
|
14634
14636
|
init_zipextractor();
|
|
14635
14637
|
init_cache();
|
|
14636
14638
|
init_log();
|
|
14637
|
-
|
|
14639
|
+
log7 = getDomainLogger("module", { component: "factory" });
|
|
14638
14640
|
}
|
|
14639
14641
|
});
|
|
14640
14642
|
|
|
@@ -14722,12 +14724,12 @@ var init_originfs = __esm({
|
|
|
14722
14724
|
function newFileMeta(filename, openFunc) {
|
|
14723
14725
|
return new FileMeta(filename, openFunc);
|
|
14724
14726
|
}
|
|
14725
|
-
var
|
|
14727
|
+
var log8, FileMeta;
|
|
14726
14728
|
var init_filemeta = __esm({
|
|
14727
14729
|
"internal/domain/fs/vo/filemeta.ts"() {
|
|
14728
14730
|
"use strict";
|
|
14729
14731
|
init_log();
|
|
14730
|
-
|
|
14732
|
+
log8 = getDomainLogger("fs", { component: "filemeta" });
|
|
14731
14733
|
FileMeta = class {
|
|
14732
14734
|
filename;
|
|
14733
14735
|
componentRoot;
|
|
@@ -15154,7 +15156,7 @@ var init_dir2 = __esm({
|
|
|
15154
15156
|
function newBaseFs(fs3, roots) {
|
|
15155
15157
|
return new BaseFs(fs3, roots);
|
|
15156
15158
|
}
|
|
15157
|
-
var path13,
|
|
15159
|
+
var path13, log9, BaseFs;
|
|
15158
15160
|
var init_basefs = __esm({
|
|
15159
15161
|
"internal/domain/fs/entity/basefs.ts"() {
|
|
15160
15162
|
"use strict";
|
|
@@ -15164,7 +15166,7 @@ var init_basefs = __esm({
|
|
|
15164
15166
|
init_dir2();
|
|
15165
15167
|
path13 = __toESM2(require("path"));
|
|
15166
15168
|
init_log();
|
|
15167
|
-
|
|
15169
|
+
log9 = getDomainLogger("fs", { component: "basefs" });
|
|
15168
15170
|
BaseFs = class {
|
|
15169
15171
|
fs;
|
|
15170
15172
|
// osFs
|
|
@@ -15325,7 +15327,7 @@ var init_basefs = __esm({
|
|
|
15325
15327
|
function newWalkway(fs3, cb) {
|
|
15326
15328
|
return new Walkway(fs3, cb);
|
|
15327
15329
|
}
|
|
15328
|
-
var path14,
|
|
15330
|
+
var path14, log10, Walkway;
|
|
15329
15331
|
var init_walkway = __esm({
|
|
15330
15332
|
"internal/domain/fs/vo/walkway.ts"() {
|
|
15331
15333
|
"use strict";
|
|
@@ -15334,7 +15336,7 @@ var init_walkway = __esm({
|
|
|
15334
15336
|
init_fileinfo();
|
|
15335
15337
|
init_filemeta();
|
|
15336
15338
|
init_log();
|
|
15337
|
-
|
|
15339
|
+
log10 = getDomainLogger("fs", { component: "walkway" });
|
|
15338
15340
|
Walkway = class {
|
|
15339
15341
|
fs;
|
|
15340
15342
|
root;
|
|
@@ -15376,7 +15378,7 @@ var init_walkway = __esm({
|
|
|
15376
15378
|
*/
|
|
15377
15379
|
checkErr(filename, err) {
|
|
15378
15380
|
if (this.isNotExistError(err) && !this.cfg.failOnNotExist) {
|
|
15379
|
-
|
|
15381
|
+
log10.warn(`File "${filename}" not found, skipping.`);
|
|
15380
15382
|
return true;
|
|
15381
15383
|
}
|
|
15382
15384
|
return false;
|
|
@@ -15481,12 +15483,12 @@ var init_walkway = __esm({
|
|
|
15481
15483
|
});
|
|
15482
15484
|
|
|
15483
15485
|
// internal/domain/fs/vo/static-copier.ts
|
|
15484
|
-
var
|
|
15486
|
+
var log11, StaticCopier;
|
|
15485
15487
|
var init_static_copier = __esm({
|
|
15486
15488
|
"internal/domain/fs/vo/static-copier.ts"() {
|
|
15487
15489
|
"use strict";
|
|
15488
15490
|
init_log();
|
|
15489
|
-
|
|
15491
|
+
log11 = getDomainLogger("fs", { component: "static-copier" });
|
|
15490
15492
|
StaticCopier = class {
|
|
15491
15493
|
fromFss;
|
|
15492
15494
|
toFs;
|
|
@@ -15496,11 +15498,11 @@ var init_static_copier = __esm({
|
|
|
15496
15498
|
}
|
|
15497
15499
|
async copy() {
|
|
15498
15500
|
if (!this.fromFss || this.fromFss.length === 0) {
|
|
15499
|
-
|
|
15501
|
+
log11.error("No static filesystems found");
|
|
15500
15502
|
return;
|
|
15501
15503
|
}
|
|
15502
15504
|
if (!this.toFs) {
|
|
15503
|
-
|
|
15505
|
+
log11.error("No publish filesystem found");
|
|
15504
15506
|
return;
|
|
15505
15507
|
}
|
|
15506
15508
|
await this.doWithPublishDirs(this.toFs, async (publishDir) => {
|
|
@@ -15516,7 +15518,7 @@ var init_static_copier = __esm({
|
|
|
15516
15518
|
try {
|
|
15517
15519
|
await fn("/");
|
|
15518
15520
|
} catch (error) {
|
|
15519
|
-
|
|
15521
|
+
log11.error("Error in doWithPublishDirs:", error);
|
|
15520
15522
|
throw error;
|
|
15521
15523
|
}
|
|
15522
15524
|
}
|
|
@@ -15528,7 +15530,7 @@ var init_static_copier = __esm({
|
|
|
15528
15530
|
try {
|
|
15529
15531
|
return await this.walkSourceFiles(sourceFs, targetDir);
|
|
15530
15532
|
} catch (error) {
|
|
15531
|
-
|
|
15533
|
+
log11.error(`Error copying static files to ${targetDir}:`, error);
|
|
15532
15534
|
throw error;
|
|
15533
15535
|
}
|
|
15534
15536
|
}
|
|
@@ -15545,7 +15547,7 @@ var init_static_copier = __esm({
|
|
|
15545
15547
|
}
|
|
15546
15548
|
});
|
|
15547
15549
|
} catch (error) {
|
|
15548
|
-
|
|
15550
|
+
log11.error("Error walking source files:", error);
|
|
15549
15551
|
throw error;
|
|
15550
15552
|
}
|
|
15551
15553
|
return fileCount;
|
|
@@ -15574,7 +15576,7 @@ var init_static_copier = __esm({
|
|
|
15574
15576
|
}
|
|
15575
15577
|
}
|
|
15576
15578
|
} catch (error) {
|
|
15577
|
-
|
|
15579
|
+
log11.error(`Could not read directory ${basePath}:`, error);
|
|
15578
15580
|
}
|
|
15579
15581
|
}
|
|
15580
15582
|
/**
|
|
@@ -15597,20 +15599,20 @@ var init_static_copier = __esm({
|
|
|
15597
15599
|
targetFile = await targetFs.create(targetPath);
|
|
15598
15600
|
await targetFile.write(buffer);
|
|
15599
15601
|
} catch (error) {
|
|
15600
|
-
|
|
15602
|
+
log11.warn(`Failed to copy static file ${sourcePath}:`, error);
|
|
15601
15603
|
} finally {
|
|
15602
15604
|
if (targetFile) {
|
|
15603
15605
|
try {
|
|
15604
15606
|
await targetFile.close();
|
|
15605
15607
|
} catch (closeError) {
|
|
15606
|
-
|
|
15608
|
+
log11.warn(`Failed to close target file: ${closeError}`);
|
|
15607
15609
|
}
|
|
15608
15610
|
}
|
|
15609
15611
|
if (sourceFile) {
|
|
15610
15612
|
try {
|
|
15611
15613
|
await sourceFile.close();
|
|
15612
15614
|
} catch (closeError) {
|
|
15613
|
-
|
|
15615
|
+
log11.warn(`Failed to close source file: ${closeError}`);
|
|
15614
15616
|
}
|
|
15615
15617
|
}
|
|
15616
15618
|
}
|
|
@@ -15647,7 +15649,7 @@ async function collectFileMetaInfos(paths, fss) {
|
|
|
15647
15649
|
if (found2)
|
|
15648
15650
|
break;
|
|
15649
15651
|
} catch (error) {
|
|
15650
|
-
|
|
15652
|
+
log12.error(`Failed to create FileMetaInfo for ${path29} with fs=${fs3}:`, error);
|
|
15651
15653
|
}
|
|
15652
15654
|
}
|
|
15653
15655
|
}
|
|
@@ -15663,14 +15665,14 @@ async function createFileMetaInfo(filePath, fs3) {
|
|
|
15663
15665
|
throw new Error(`Failed to stat file ${filePath}: ${error.message}`);
|
|
15664
15666
|
}
|
|
15665
15667
|
}
|
|
15666
|
-
var
|
|
15668
|
+
var log12;
|
|
15667
15669
|
var init_incremental_file_collector = __esm({
|
|
15668
15670
|
"internal/domain/fs/vo/incremental-file-collector.ts"() {
|
|
15669
15671
|
"use strict";
|
|
15670
15672
|
init_fileinfo();
|
|
15671
15673
|
init_filemeta();
|
|
15672
15674
|
init_log();
|
|
15673
|
-
|
|
15675
|
+
log12 = getDomainLogger("fs", { component: "incremental-file-collector" });
|
|
15674
15676
|
}
|
|
15675
15677
|
});
|
|
15676
15678
|
|
|
@@ -16134,7 +16136,7 @@ function createOverlayFs(opts) {
|
|
|
16134
16136
|
const options = new OverlayOptions(opts);
|
|
16135
16137
|
return new OverlayFs(options);
|
|
16136
16138
|
}
|
|
16137
|
-
var
|
|
16139
|
+
var log13, OverlayFs;
|
|
16138
16140
|
var init_overlayfs = __esm({
|
|
16139
16141
|
"internal/domain/fs/entity/overlayfs.ts"() {
|
|
16140
16142
|
"use strict";
|
|
@@ -16142,7 +16144,7 @@ var init_overlayfs = __esm({
|
|
|
16142
16144
|
init_overlayoptions();
|
|
16143
16145
|
init_overlaydir();
|
|
16144
16146
|
init_log();
|
|
16145
|
-
|
|
16147
|
+
log13 = getDomainLogger("fs", { component: "overlayfs" });
|
|
16146
16148
|
OverlayFs = class _OverlayFs {
|
|
16147
16149
|
fss;
|
|
16148
16150
|
mergeDirs;
|
|
@@ -16623,7 +16625,7 @@ var init_overlayfs_factory = __esm({
|
|
|
16623
16625
|
function newFilesystemsCollector(sourceProject) {
|
|
16624
16626
|
return new FilesystemsCollector(sourceProject);
|
|
16625
16627
|
}
|
|
16626
|
-
var path15,
|
|
16628
|
+
var path15, log14, RootMapping, FilesystemsCollector;
|
|
16627
16629
|
var init_filesystemscollector = __esm({
|
|
16628
16630
|
"internal/domain/fs/vo/filesystemscollector.ts"() {
|
|
16629
16631
|
"use strict";
|
|
@@ -16631,7 +16633,7 @@ var init_filesystemscollector = __esm({
|
|
|
16631
16633
|
init_basefs();
|
|
16632
16634
|
path15 = __toESM2(require("path"));
|
|
16633
16635
|
init_log();
|
|
16634
|
-
|
|
16636
|
+
log14 = getDomainLogger("fs", { component: "filesystemscollector" });
|
|
16635
16637
|
RootMapping = class {
|
|
16636
16638
|
from;
|
|
16637
16639
|
// Target path
|
|
@@ -16773,14 +16775,14 @@ var init_filesystemscollector = __esm({
|
|
|
16773
16775
|
function newOsFs() {
|
|
16774
16776
|
return new OsFs();
|
|
16775
16777
|
}
|
|
16776
|
-
var fs2, path16,
|
|
16778
|
+
var fs2, path16, log15, OsFileInfo, OsFile, OsFs;
|
|
16777
16779
|
var init_osfs = __esm({
|
|
16778
16780
|
"internal/domain/fs/vo/osfs.ts"() {
|
|
16779
16781
|
"use strict";
|
|
16780
16782
|
fs2 = __toESM2(require("fs/promises"));
|
|
16781
16783
|
path16 = __toESM2(require("path"));
|
|
16782
16784
|
init_log();
|
|
16783
|
-
|
|
16785
|
+
log15 = getDomainLogger("fs", { component: "osfs" });
|
|
16784
16786
|
OsFileInfo = class {
|
|
16785
16787
|
constructor(stats, _name) {
|
|
16786
16788
|
this.stats = stats;
|
|
@@ -16823,7 +16825,7 @@ var init_osfs = __esm({
|
|
|
16823
16825
|
try {
|
|
16824
16826
|
await this.handle.close();
|
|
16825
16827
|
} catch (error) {
|
|
16826
|
-
|
|
16828
|
+
log15.error(`\u274C Error closing file handle for ${this.filePath}:`, error);
|
|
16827
16829
|
throw error;
|
|
16828
16830
|
}
|
|
16829
16831
|
this.handle = null;
|
|
@@ -18917,7 +18919,7 @@ var init_pageparser = __esm({
|
|
|
18917
18919
|
function parseBytes2(input, config2 = {}) {
|
|
18918
18920
|
const [items, err] = ParseBytes(input, config2);
|
|
18919
18921
|
if (err) {
|
|
18920
|
-
|
|
18922
|
+
log16.error("Error parsing bytes:", err);
|
|
18921
18923
|
throw err;
|
|
18922
18924
|
}
|
|
18923
18925
|
return items;
|
|
@@ -18952,13 +18954,13 @@ function posFromInput(filename, input, offset) {
|
|
|
18952
18954
|
function stringToBytes(str2) {
|
|
18953
18955
|
return new TextEncoder().encode(str2);
|
|
18954
18956
|
}
|
|
18955
|
-
var
|
|
18957
|
+
var log16;
|
|
18956
18958
|
var init_pageparser2 = __esm({
|
|
18957
18959
|
"internal/domain/markdown/vo/pageparser.ts"() {
|
|
18958
18960
|
"use strict";
|
|
18959
18961
|
init_log();
|
|
18960
18962
|
init_pageparser();
|
|
18961
|
-
|
|
18963
|
+
log16 = getDomainLogger("markdown", { component: "pageparser" });
|
|
18962
18964
|
}
|
|
18963
18965
|
});
|
|
18964
18966
|
|
|
@@ -18966,7 +18968,7 @@ var init_pageparser2 = __esm({
|
|
|
18966
18968
|
function createSourceParseInfo(source, handlers) {
|
|
18967
18969
|
return new SourceParseInfo(source, handlers);
|
|
18968
18970
|
}
|
|
18969
|
-
var
|
|
18971
|
+
var log17, SourceParseInfo;
|
|
18970
18972
|
var init_parseinfo = __esm({
|
|
18971
18973
|
"internal/domain/markdown/vo/parseinfo.ts"() {
|
|
18972
18974
|
"use strict";
|
|
@@ -18974,7 +18976,7 @@ var init_parseinfo = __esm({
|
|
|
18974
18976
|
init_item();
|
|
18975
18977
|
init_pagelexer();
|
|
18976
18978
|
init_log();
|
|
18977
|
-
|
|
18979
|
+
log17 = getDomainLogger("markdown", { component: "parseinfo" });
|
|
18978
18980
|
SourceParseInfo = class {
|
|
18979
18981
|
source;
|
|
18980
18982
|
posMainContent = -1;
|
|
@@ -19027,7 +19029,7 @@ var init_parseinfo = __esm({
|
|
|
19027
19029
|
const it = iter.Next();
|
|
19028
19030
|
try {
|
|
19029
19031
|
if (it.Type === 7 /* TypeIgnore */) {
|
|
19030
|
-
|
|
19032
|
+
log17.info(`Ignoring item at position ${it.Pos()}: ${it.ValStr(this.source)}`);
|
|
19031
19033
|
} else if (it.IsFrontMatter()) {
|
|
19032
19034
|
await this.handlers.frontMatterHandler()(it);
|
|
19033
19035
|
const next2 = iter.Peek();
|
|
@@ -19043,7 +19045,7 @@ var init_parseinfo = __esm({
|
|
|
19043
19045
|
} else if (it.IsEOF()) {
|
|
19044
19046
|
break;
|
|
19045
19047
|
} else if (it.IsError()) {
|
|
19046
|
-
|
|
19048
|
+
log17.error(`Error parsing item at position ${it.Pos()}: ${it.Err}`);
|
|
19047
19049
|
throw this.createError(it.Err || new Error("Unknown parsing error"), it);
|
|
19048
19050
|
} else {
|
|
19049
19051
|
await this.handlers.bytesHandler()(it);
|
|
@@ -19102,12 +19104,12 @@ function indexNonWhiteSpace2(source, char2) {
|
|
|
19102
19104
|
function isSpace3(b) {
|
|
19103
19105
|
return b === 32 || b === 9 || b === 13 || b === 10;
|
|
19104
19106
|
}
|
|
19105
|
-
var
|
|
19107
|
+
var log18, ShortcodeImpl, ShortcodeParser, TOC_SHORTCODE_PLACEHOLDER, SHORTCODE_PLACEHOLDER_PREFIX;
|
|
19106
19108
|
var init_shortcode = __esm({
|
|
19107
19109
|
"internal/domain/markdown/vo/shortcode.ts"() {
|
|
19108
19110
|
"use strict";
|
|
19109
19111
|
init_log();
|
|
19110
|
-
|
|
19112
|
+
log18 = getDomainLogger("markdown", { component: "vo/shortcode" });
|
|
19111
19113
|
ShortcodeImpl = class {
|
|
19112
19114
|
name;
|
|
19113
19115
|
params;
|
|
@@ -19272,7 +19274,7 @@ var init_shortcode = __esm({
|
|
|
19272
19274
|
}
|
|
19273
19275
|
} else if (currItem.IsShortcodeParam()) {
|
|
19274
19276
|
if (!pt.IsValueNext()) {
|
|
19275
|
-
|
|
19277
|
+
log18.warn(`${errorPrefix}: shortcode "${sc.name}" has a parameter without a value`);
|
|
19276
19278
|
continue;
|
|
19277
19279
|
}
|
|
19278
19280
|
if (pt.Peek().IsShortcodeParamVal()) {
|
|
@@ -19415,13 +19417,13 @@ var init_type6 = __esm({
|
|
|
19415
19417
|
});
|
|
19416
19418
|
|
|
19417
19419
|
// internal/domain/markdown/vo/content.ts
|
|
19418
|
-
var
|
|
19420
|
+
var log19, INTERNAL_SUMMARY_DIVIDER_BASE, INTERNAL_SUMMARY_DIVIDER_PRE, Content;
|
|
19419
19421
|
var init_content = __esm({
|
|
19420
19422
|
"internal/domain/markdown/vo/content.ts"() {
|
|
19421
19423
|
"use strict";
|
|
19422
19424
|
init_type6();
|
|
19423
19425
|
init_log();
|
|
19424
|
-
|
|
19426
|
+
log19 = getDomainLogger("markdown", { component: "content" });
|
|
19425
19427
|
INTERNAL_SUMMARY_DIVIDER_BASE = "HUGOMORE42";
|
|
19426
19428
|
INTERNAL_SUMMARY_DIVIDER_PRE = new TextEncoder().encode(`
|
|
19427
19429
|
|
|
@@ -22468,7 +22470,7 @@ var init_parserresult = __esm({
|
|
|
22468
22470
|
});
|
|
22469
22471
|
|
|
22470
22472
|
// internal/domain/markdown/entity/markdown.ts
|
|
22471
|
-
var
|
|
22473
|
+
var log20, MarkdownImpl;
|
|
22472
22474
|
var init_markdown3 = __esm({
|
|
22473
22475
|
"internal/domain/markdown/entity/markdown.ts"() {
|
|
22474
22476
|
"use strict";
|
|
@@ -22481,7 +22483,7 @@ var init_markdown3 = __esm({
|
|
|
22481
22483
|
init_shortcode();
|
|
22482
22484
|
init_content();
|
|
22483
22485
|
init_log();
|
|
22484
|
-
|
|
22486
|
+
log20 = getDomainLogger("markdown", { component: "MarkdownImpl" });
|
|
22485
22487
|
MarkdownImpl = class {
|
|
22486
22488
|
constructor(renderer, highlighter) {
|
|
22487
22489
|
this.renderer = renderer;
|
|
@@ -22557,7 +22559,7 @@ var init_markdown3 = __esm({
|
|
|
22557
22559
|
if (parseResult.frontMatter) {
|
|
22558
22560
|
parseResult.frontMatter.params = fm;
|
|
22559
22561
|
}
|
|
22560
|
-
|
|
22562
|
+
log20.debug(`Merged tags: YAML [${existingTags.join(", ")}] + inline [${inlineTags.join(", ")}] = [${allTags.join(", ")}]`);
|
|
22561
22563
|
}
|
|
22562
22564
|
}
|
|
22563
22565
|
const summary = parseResult.content.getDividedSummary(htmlContent);
|
|
@@ -31098,14 +31100,14 @@ var init_paths = __esm({
|
|
|
31098
31100
|
});
|
|
31099
31101
|
|
|
31100
31102
|
// internal/domain/content/entity/translator.ts
|
|
31101
|
-
var
|
|
31103
|
+
var log21, Translator;
|
|
31102
31104
|
var init_translator = __esm({
|
|
31103
31105
|
"internal/domain/content/entity/translator.ts"() {
|
|
31104
31106
|
"use strict";
|
|
31105
31107
|
init_log();
|
|
31106
31108
|
init_js_yaml();
|
|
31107
31109
|
init_paths();
|
|
31108
|
-
|
|
31110
|
+
log21 = getDomainLogger("content", { component: "translator" });
|
|
31109
31111
|
Translator = class {
|
|
31110
31112
|
contentLanguage;
|
|
31111
31113
|
translateFuncs = /* @__PURE__ */ new Map();
|
|
@@ -31127,7 +31129,7 @@ var init_translator = __esm({
|
|
|
31127
31129
|
return result;
|
|
31128
31130
|
}
|
|
31129
31131
|
}
|
|
31130
|
-
|
|
31132
|
+
log21.info(`Translation func for language ${lang2} not found, use default.`);
|
|
31131
31133
|
const defaultTranslateFunc = this.translateFuncs.get(this.contentLanguage.toLowerCase());
|
|
31132
31134
|
if (defaultTranslateFunc) {
|
|
31133
31135
|
const result = defaultTranslateFunc(translationID);
|
|
@@ -31135,7 +31137,7 @@ var init_translator = __esm({
|
|
|
31135
31137
|
return result;
|
|
31136
31138
|
}
|
|
31137
31139
|
}
|
|
31138
|
-
|
|
31140
|
+
log21.info("i18n not initialized; if you need string translations, check that you have a bundle in /i18n that matches the site language or the default language.");
|
|
31139
31141
|
return `[i18n] ${translationID}`;
|
|
31140
31142
|
}
|
|
31141
31143
|
/**
|
|
@@ -31164,17 +31166,17 @@ var init_translator = __esm({
|
|
|
31164
31166
|
if (translation) {
|
|
31165
31167
|
return translation;
|
|
31166
31168
|
}
|
|
31167
|
-
|
|
31169
|
+
log21.warn(`i18n|MISSING_TRANSLATION|${langKey}|${translationID}`);
|
|
31168
31170
|
return "";
|
|
31169
31171
|
};
|
|
31170
31172
|
this.translateFuncs.set(langKey, translateFunc);
|
|
31171
|
-
|
|
31173
|
+
log21.info(`\u2705 Loaded i18n translations for language: ${langKey} (${translations.length} items)`);
|
|
31172
31174
|
} catch (error) {
|
|
31173
|
-
|
|
31175
|
+
log21.error(`\u274C Failed to load i18n file ${path29}:`, error);
|
|
31174
31176
|
}
|
|
31175
31177
|
}
|
|
31176
31178
|
}, {});
|
|
31177
|
-
|
|
31179
|
+
log21.info(`\u{1F30D} Translation setup complete. Loaded ${this.translateFuncs.size} languages: [${Array.from(this.translateFuncs.keys()).join(", ")}]`);
|
|
31178
31180
|
} catch (error) {
|
|
31179
31181
|
throw error;
|
|
31180
31182
|
}
|
|
@@ -31193,14 +31195,14 @@ var init_translator = __esm({
|
|
|
31193
31195
|
const cleanContent = content.charCodeAt(0) === 65279 ? content.slice(1) : content;
|
|
31194
31196
|
return cleanContent;
|
|
31195
31197
|
} catch (error) {
|
|
31196
|
-
|
|
31198
|
+
log21.error("\u274C Failed to read i18n file:", error);
|
|
31197
31199
|
throw error;
|
|
31198
31200
|
} finally {
|
|
31199
31201
|
if (file) {
|
|
31200
31202
|
try {
|
|
31201
31203
|
await file.close();
|
|
31202
31204
|
} catch (closeError) {
|
|
31203
|
-
|
|
31205
|
+
log21.warn(`Failed to close i18n file: ${closeError}`);
|
|
31204
31206
|
}
|
|
31205
31207
|
}
|
|
31206
31208
|
}
|
|
@@ -31212,7 +31214,7 @@ var init_translator = __esm({
|
|
|
31212
31214
|
try {
|
|
31213
31215
|
const parsed = load(content);
|
|
31214
31216
|
if (!Array.isArray(parsed)) {
|
|
31215
|
-
|
|
31217
|
+
log21.warn("i18n YAML content is not an array");
|
|
31216
31218
|
return [];
|
|
31217
31219
|
}
|
|
31218
31220
|
return parsed.filter((item) => item && typeof item === "object" && item.id && item.translation).map((item) => ({
|
|
@@ -31220,7 +31222,7 @@ var init_translator = __esm({
|
|
|
31220
31222
|
translation: String(item.translation)
|
|
31221
31223
|
}));
|
|
31222
31224
|
} catch (error) {
|
|
31223
|
-
|
|
31225
|
+
log21.error("\u274C Failed to parse i18n YAML content:", error);
|
|
31224
31226
|
return [];
|
|
31225
31227
|
}
|
|
31226
31228
|
}
|
|
@@ -31246,7 +31248,7 @@ async function createTranslator(services) {
|
|
|
31246
31248
|
try {
|
|
31247
31249
|
await translator.setupTranslateFuncs(services);
|
|
31248
31250
|
} catch (error) {
|
|
31249
|
-
|
|
31251
|
+
log22.warn("Failed to setup translator, continuing without i18n support:", error);
|
|
31250
31252
|
}
|
|
31251
31253
|
return translator;
|
|
31252
31254
|
}
|
|
@@ -31283,7 +31285,7 @@ async function createContent(services) {
|
|
|
31283
31285
|
pageBuilder.contentHub = contentHub;
|
|
31284
31286
|
return contentHub;
|
|
31285
31287
|
}
|
|
31286
|
-
var
|
|
31288
|
+
var log22;
|
|
31287
31289
|
var init_hub = __esm({
|
|
31288
31290
|
"internal/domain/content/factory/hub.ts"() {
|
|
31289
31291
|
"use strict";
|
|
@@ -31291,7 +31293,7 @@ var init_hub = __esm({
|
|
|
31291
31293
|
init_markdown5();
|
|
31292
31294
|
init_translator();
|
|
31293
31295
|
init_log();
|
|
31294
|
-
|
|
31296
|
+
log22 = getDomainLogger("content", { component: "content" });
|
|
31295
31297
|
}
|
|
31296
31298
|
});
|
|
31297
31299
|
|
|
@@ -31319,12 +31321,12 @@ var init_kind = __esm({
|
|
|
31319
31321
|
});
|
|
31320
31322
|
|
|
31321
31323
|
// internal/domain/content/vo/identity.ts
|
|
31322
|
-
var
|
|
31324
|
+
var log23, Identity;
|
|
31323
31325
|
var init_identity = __esm({
|
|
31324
31326
|
"internal/domain/content/vo/identity.ts"() {
|
|
31325
31327
|
"use strict";
|
|
31326
31328
|
init_log();
|
|
31327
|
-
|
|
31329
|
+
log23 = getDomainLogger("content", { component: "identity" });
|
|
31328
31330
|
Identity = class {
|
|
31329
31331
|
id;
|
|
31330
31332
|
lang;
|
|
@@ -31376,7 +31378,7 @@ function isContentExt(ext) {
|
|
|
31376
31378
|
function newFileInfo2(fi) {
|
|
31377
31379
|
return FileInfo7.newFileInfo(fi);
|
|
31378
31380
|
}
|
|
31379
|
-
var crypto, path17,
|
|
31381
|
+
var crypto, path17, log24, contentFileExtensions, contentFileExtensionsSet, FileInfo7;
|
|
31380
31382
|
var init_fileinfo2 = __esm({
|
|
31381
31383
|
"internal/domain/content/vo/fileinfo.ts"() {
|
|
31382
31384
|
"use strict";
|
|
@@ -31384,7 +31386,7 @@ var init_fileinfo2 = __esm({
|
|
|
31384
31386
|
crypto = __toESM2(require("crypto"));
|
|
31385
31387
|
path17 = __toESM2(require("path"));
|
|
31386
31388
|
init_log();
|
|
31387
|
-
|
|
31389
|
+
log24 = getDomainLogger("content", { component: "FileInfo" });
|
|
31388
31390
|
contentFileExtensions = [
|
|
31389
31391
|
".md"
|
|
31390
31392
|
];
|
|
@@ -33613,14 +33615,14 @@ function posFromInput2(filename, input, offset) {
|
|
|
33613
33615
|
function newPageSource(file) {
|
|
33614
33616
|
return new Source(file);
|
|
33615
33617
|
}
|
|
33616
|
-
var pageIDCounter,
|
|
33618
|
+
var pageIDCounter, log25, Source;
|
|
33617
33619
|
var init_pagesource = __esm({
|
|
33618
33620
|
"internal/domain/content/entity/pagesource.ts"() {
|
|
33619
33621
|
"use strict";
|
|
33620
33622
|
init_log();
|
|
33621
33623
|
init_identity();
|
|
33622
33624
|
pageIDCounter = 0;
|
|
33623
|
-
|
|
33625
|
+
log25 = getDomainLogger("content", { component: "pagesource" });
|
|
33624
33626
|
Source = class {
|
|
33625
33627
|
id;
|
|
33626
33628
|
identity;
|
|
@@ -33752,11 +33754,11 @@ var init_pagesource = __esm({
|
|
|
33752
33754
|
*/
|
|
33753
33755
|
async content() {
|
|
33754
33756
|
try {
|
|
33755
|
-
|
|
33757
|
+
log25.error(`Reading content not implemented from: ${this.file.filename()}`);
|
|
33756
33758
|
return new Uint8Array(0);
|
|
33757
33759
|
} catch (error) {
|
|
33758
33760
|
const errorMsg = `failed to read content source for "${this.file.filename()}": ${error}`;
|
|
33759
|
-
|
|
33761
|
+
log25.error(errorMsg);
|
|
33760
33762
|
throw new Error(errorMsg);
|
|
33761
33763
|
}
|
|
33762
33764
|
}
|
|
@@ -33777,7 +33779,7 @@ function addLeadingSlash(path29) {
|
|
|
33777
33779
|
}
|
|
33778
33780
|
return path29;
|
|
33779
33781
|
}
|
|
33780
|
-
var
|
|
33782
|
+
var log26, ambiguousContentNode, ContentTreeReverseIndexMap, ContentTreeReverseIndex, pagePredicates, PageMapQueryPagesBelowPathImpl, PageMapQueryPagesInSectionImpl, PageMap;
|
|
33781
33783
|
var init_pagemap = __esm({
|
|
33782
33784
|
"internal/domain/content/entity/pagemap.ts"() {
|
|
33783
33785
|
"use strict";
|
|
@@ -33787,7 +33789,7 @@ var init_pagemap = __esm({
|
|
|
33787
33789
|
init_doctree();
|
|
33788
33790
|
init_sort();
|
|
33789
33791
|
init_log();
|
|
33790
|
-
|
|
33792
|
+
log26 = getDomainLogger("content", { component: "pagemap" });
|
|
33791
33793
|
ambiguousContentNode = new PageTreesNode();
|
|
33792
33794
|
ContentTreeReverseIndexMap = class {
|
|
33793
33795
|
initOnce = false;
|
|
@@ -33890,7 +33892,7 @@ var init_pagemap = __esm({
|
|
|
33890
33892
|
try {
|
|
33891
33893
|
await walker.walk();
|
|
33892
33894
|
} catch (err) {
|
|
33893
|
-
|
|
33895
|
+
log26.error(`setupReverseIndex error: ${err}`);
|
|
33894
33896
|
}
|
|
33895
33897
|
});
|
|
33896
33898
|
}
|
|
@@ -34045,7 +34047,7 @@ var init_pagemap = __esm({
|
|
|
34045
34047
|
try {
|
|
34046
34048
|
await rw.walk();
|
|
34047
34049
|
} catch (err) {
|
|
34048
|
-
|
|
34050
|
+
log26.error(`forEachResourceInPage error: ${err}`);
|
|
34049
34051
|
}
|
|
34050
34052
|
}
|
|
34051
34053
|
/**
|
|
@@ -34099,7 +34101,7 @@ var init_pagemap = __esm({
|
|
|
34099
34101
|
sortByWeight(pages);
|
|
34100
34102
|
return Promise.resolve(pages);
|
|
34101
34103
|
} catch (err) {
|
|
34102
|
-
|
|
34104
|
+
log26.error(`getPagesInSection error: ${err}`);
|
|
34103
34105
|
}
|
|
34104
34106
|
return Promise.resolve(pas);
|
|
34105
34107
|
});
|
|
@@ -34135,7 +34137,7 @@ var init_pagemap = __esm({
|
|
|
34135
34137
|
sortByDefault(pages);
|
|
34136
34138
|
return pages;
|
|
34137
34139
|
} catch (err) {
|
|
34138
|
-
|
|
34140
|
+
log26.error(`getPagesWithTerm error: ${err}`);
|
|
34139
34141
|
}
|
|
34140
34142
|
return pas;
|
|
34141
34143
|
});
|
|
@@ -34163,7 +34165,7 @@ var init_pagemap = __esm({
|
|
|
34163
34165
|
sortByDefault(pages);
|
|
34164
34166
|
return pages;
|
|
34165
34167
|
} catch (err) {
|
|
34166
|
-
|
|
34168
|
+
log26.error(`getTermsForPageInTaxonomy error: ${err}`);
|
|
34167
34169
|
}
|
|
34168
34170
|
return pas;
|
|
34169
34171
|
});
|
|
@@ -34203,7 +34205,7 @@ var init_pagemap = __esm({
|
|
|
34203
34205
|
sortByDefault(pages);
|
|
34204
34206
|
return pages;
|
|
34205
34207
|
} catch (err) {
|
|
34206
|
-
|
|
34208
|
+
log26.error(`getSections error: ${err}`);
|
|
34207
34209
|
}
|
|
34208
34210
|
return pagesList;
|
|
34209
34211
|
}
|
|
@@ -34222,13 +34224,13 @@ var init_pagemap = __esm({
|
|
|
34222
34224
|
});
|
|
34223
34225
|
|
|
34224
34226
|
// internal/domain/content/entity/pagecollector.ts
|
|
34225
|
-
var
|
|
34227
|
+
var log27, PagesCollector;
|
|
34226
34228
|
var init_pagecollector = __esm({
|
|
34227
34229
|
"internal/domain/content/entity/pagecollector.ts"() {
|
|
34228
34230
|
"use strict";
|
|
34229
34231
|
init_content3();
|
|
34230
34232
|
init_log();
|
|
34231
|
-
|
|
34233
|
+
log27 = getDomainLogger("content", { component: "pagecollector" });
|
|
34232
34234
|
PagesCollector = class {
|
|
34233
34235
|
m;
|
|
34234
34236
|
fs;
|
|
@@ -34248,7 +34250,7 @@ var init_pagecollector = __esm({
|
|
|
34248
34250
|
await this.collectDir(cfs, dirPath, root2);
|
|
34249
34251
|
}
|
|
34250
34252
|
} catch (error) {
|
|
34251
|
-
|
|
34253
|
+
log27.error(`Failed to collect directory: ${error}, continuing...`);
|
|
34252
34254
|
}
|
|
34253
34255
|
}
|
|
34254
34256
|
/**
|
|
@@ -34260,7 +34262,7 @@ var init_pagecollector = __esm({
|
|
|
34260
34262
|
hookPre: async (dir2, path30, readdir2) => {
|
|
34261
34263
|
const fullPath = path30;
|
|
34262
34264
|
if (this.processedPaths.has(fullPath)) {
|
|
34263
|
-
|
|
34265
|
+
log27.warn("Path already processed!", {
|
|
34264
34266
|
path: fullPath,
|
|
34265
34267
|
dirName: dir2.name(),
|
|
34266
34268
|
dirIsDir: dir2.isDir(),
|
|
@@ -34288,7 +34290,7 @@ var init_pagecollector = __esm({
|
|
|
34288
34290
|
info: root2
|
|
34289
34291
|
});
|
|
34290
34292
|
} catch (error) {
|
|
34291
|
-
|
|
34293
|
+
log27.error(`Failed to collect directory: ${error}`, {
|
|
34292
34294
|
path: path29,
|
|
34293
34295
|
rootName: root2.name(),
|
|
34294
34296
|
rootIsDir: root2.isDir(),
|
|
@@ -34337,7 +34339,7 @@ var init_entity2 = __esm({
|
|
|
34337
34339
|
});
|
|
34338
34340
|
|
|
34339
34341
|
// internal/domain/content/entity/content.ts
|
|
34340
|
-
var
|
|
34342
|
+
var log28, Content2;
|
|
34341
34343
|
var init_content2 = __esm({
|
|
34342
34344
|
"internal/domain/content/entity/content.ts"() {
|
|
34343
34345
|
"use strict";
|
|
@@ -34346,7 +34348,7 @@ var init_content2 = __esm({
|
|
|
34346
34348
|
init_fileinfo2();
|
|
34347
34349
|
init_log();
|
|
34348
34350
|
init_paths();
|
|
34349
|
-
|
|
34351
|
+
log28 = getDomainLogger("content", { component: "content" });
|
|
34350
34352
|
Content2 = class {
|
|
34351
34353
|
fs;
|
|
34352
34354
|
converter;
|
|
@@ -34384,7 +34386,7 @@ var init_content2 = __esm({
|
|
|
34384
34386
|
}
|
|
34385
34387
|
async collectPages() {
|
|
34386
34388
|
if (this.pageCollected) {
|
|
34387
|
-
|
|
34389
|
+
log28.info("Pages have already been collected, skipping.");
|
|
34388
34390
|
return;
|
|
34389
34391
|
}
|
|
34390
34392
|
try {
|
|
@@ -34483,7 +34485,7 @@ var init_content2 = __esm({
|
|
|
34483
34485
|
try {
|
|
34484
34486
|
await w.walk();
|
|
34485
34487
|
} catch (error) {
|
|
34486
|
-
|
|
34488
|
+
log28.error(`WalkPages failed for langIndex ${langIndex}:`, error);
|
|
34487
34489
|
throw error;
|
|
34488
34490
|
}
|
|
34489
34491
|
}
|
|
@@ -34528,7 +34530,7 @@ var init_content2 = __esm({
|
|
|
34528
34530
|
page: () => sp,
|
|
34529
34531
|
owner: () => t
|
|
34530
34532
|
}).catch((err) => {
|
|
34531
|
-
|
|
34533
|
+
log28.error("Error in taxonomy walker:", err);
|
|
34532
34534
|
});
|
|
34533
34535
|
return [false, null];
|
|
34534
34536
|
}
|
|
@@ -34565,7 +34567,7 @@ var init_content2 = __esm({
|
|
|
34565
34567
|
}
|
|
34566
34568
|
return null;
|
|
34567
34569
|
} catch (error) {
|
|
34568
|
-
|
|
34570
|
+
log28.error(`\u274C Content.getPageFromPath error for path "${path29}":`, error);
|
|
34569
34571
|
return null;
|
|
34570
34572
|
}
|
|
34571
34573
|
}
|
|
@@ -34581,7 +34583,7 @@ var init_content2 = __esm({
|
|
|
34581
34583
|
}
|
|
34582
34584
|
return null;
|
|
34583
34585
|
} catch (error) {
|
|
34584
|
-
|
|
34586
|
+
log28.error(`\u274C Content.getPageFromPath error for path "${file.path()}":`, error);
|
|
34585
34587
|
return null;
|
|
34586
34588
|
}
|
|
34587
34589
|
}
|
|
@@ -34591,7 +34593,7 @@ var init_content2 = __esm({
|
|
|
34591
34593
|
try {
|
|
34592
34594
|
await this.addOrUpdateFile(fileMetaInfo, affectedPageKeys);
|
|
34593
34595
|
} catch (error) {
|
|
34594
|
-
|
|
34596
|
+
log28.error(`Failed to process file change for ${filePath}:`, error);
|
|
34595
34597
|
}
|
|
34596
34598
|
}
|
|
34597
34599
|
return affectedPageKeys;
|
|
@@ -34615,7 +34617,7 @@ var init_content2 = __esm({
|
|
|
34615
34617
|
page.pageIdentity().markStale();
|
|
34616
34618
|
}
|
|
34617
34619
|
} catch (error) {
|
|
34618
|
-
|
|
34620
|
+
log28.error(`Failed to add/update file in PageMap: ${fileMetaInfo.fileName()}`, error);
|
|
34619
34621
|
throw error;
|
|
34620
34622
|
}
|
|
34621
34623
|
}
|
|
@@ -34627,7 +34629,7 @@ var init_content2 = __esm({
|
|
|
34627
34629
|
*/
|
|
34628
34630
|
translate(lang2, translationID) {
|
|
34629
34631
|
if (!this.translator) {
|
|
34630
|
-
|
|
34632
|
+
log28.warn("Translator not initialized, returning fallback translation");
|
|
34631
34633
|
return `[i18n] ${translationID}`;
|
|
34632
34634
|
}
|
|
34633
34635
|
return this.translator.translate(lang2, translationID);
|
|
@@ -34761,7 +34763,7 @@ var init_pagecontent = __esm({
|
|
|
34761
34763
|
});
|
|
34762
34764
|
|
|
34763
34765
|
// internal/domain/content/entity/section.ts
|
|
34764
|
-
var
|
|
34766
|
+
var log29, PAGE_HOME_BASE, Section;
|
|
34765
34767
|
var init_section = __esm({
|
|
34766
34768
|
"internal/domain/content/entity/section.ts"() {
|
|
34767
34769
|
"use strict";
|
|
@@ -34771,7 +34773,7 @@ var init_section = __esm({
|
|
|
34771
34773
|
init_kind();
|
|
34772
34774
|
init_doctree();
|
|
34773
34775
|
init_log();
|
|
34774
|
-
|
|
34776
|
+
log29 = getDomainLogger("content", { component: "section" });
|
|
34775
34777
|
PAGE_HOME_BASE = "/";
|
|
34776
34778
|
Section = class {
|
|
34777
34779
|
home;
|
|
@@ -34846,7 +34848,7 @@ var init_section = __esm({
|
|
|
34846
34848
|
try {
|
|
34847
34849
|
await walker.walk();
|
|
34848
34850
|
} catch (error) {
|
|
34849
|
-
|
|
34851
|
+
log29.error("Error walking pages:", error);
|
|
34850
34852
|
throw error;
|
|
34851
34853
|
}
|
|
34852
34854
|
if (!this.home) {
|
|
@@ -35035,12 +35037,12 @@ var init_pageoutput = __esm({
|
|
|
35035
35037
|
});
|
|
35036
35038
|
|
|
35037
35039
|
// internal/domain/content/entity/paginator.ts
|
|
35038
|
-
var
|
|
35040
|
+
var log30, PaginatorImpl, PagerImpl, PaginatorManagerImpl;
|
|
35039
35041
|
var init_paginator = __esm({
|
|
35040
35042
|
"internal/domain/content/entity/paginator.ts"() {
|
|
35041
35043
|
"use strict";
|
|
35042
35044
|
init_log();
|
|
35043
|
-
|
|
35045
|
+
log30 = getDomainLogger("content", { component: "paginator" });
|
|
35044
35046
|
PaginatorImpl = class {
|
|
35045
35047
|
paginatedElements;
|
|
35046
35048
|
_pagers;
|
|
@@ -35409,7 +35411,7 @@ var init_paths2 = __esm({
|
|
|
35409
35411
|
});
|
|
35410
35412
|
|
|
35411
35413
|
// internal/domain/content/entity/page.ts
|
|
35412
|
-
var import_path10,
|
|
35414
|
+
var import_path10, log31, PageImpl, TaxonomyPageImpl, TermPageImpl;
|
|
35413
35415
|
var init_page = __esm({
|
|
35414
35416
|
"internal/domain/content/entity/page.ts"() {
|
|
35415
35417
|
"use strict";
|
|
@@ -35423,7 +35425,7 @@ var init_page = __esm({
|
|
|
35423
35425
|
init_sort();
|
|
35424
35426
|
import_path10 = __toESM2(require("path"));
|
|
35425
35427
|
init_log();
|
|
35426
|
-
|
|
35428
|
+
log31 = getDomainLogger("content", { component: "page" });
|
|
35427
35429
|
PageImpl = class {
|
|
35428
35430
|
source;
|
|
35429
35431
|
content;
|
|
@@ -36494,13 +36496,13 @@ function newPartialTemplateNamespace() {
|
|
|
36494
36496
|
function newShortcodeTemplateNamespace() {
|
|
36495
36497
|
return new ShortcodeTemplateNamespace();
|
|
36496
36498
|
}
|
|
36497
|
-
var
|
|
36499
|
+
var log32, BaseNamespace, RegularTemplateNamespace, PartialTemplateNamespace, ShortcodeTemplateNamespace;
|
|
36498
36500
|
var init_namespace = __esm({
|
|
36499
36501
|
"internal/domain/template/vo/namespace.ts"() {
|
|
36500
36502
|
"use strict";
|
|
36501
36503
|
init_type8();
|
|
36502
36504
|
init_log();
|
|
36503
|
-
|
|
36505
|
+
log32 = getDomainLogger("template", { component: "namespace" });
|
|
36504
36506
|
BaseNamespace = class {
|
|
36505
36507
|
templates = /* @__PURE__ */ new Map();
|
|
36506
36508
|
mutex = /* @__PURE__ */ new Set();
|
|
@@ -39415,12 +39417,12 @@ var require_dist = __commonJS({
|
|
|
39415
39417
|
});
|
|
39416
39418
|
|
|
39417
39419
|
// pkg/cahce/cache.ts
|
|
39418
|
-
var
|
|
39420
|
+
var log33, ConcurrentCache, globalBuildCache;
|
|
39419
39421
|
var init_cache2 = __esm({
|
|
39420
39422
|
"pkg/cahce/cache.ts"() {
|
|
39421
39423
|
"use strict";
|
|
39422
39424
|
init_log();
|
|
39423
|
-
|
|
39425
|
+
log33 = getDomainLogger("content", { component: "cache" });
|
|
39424
39426
|
ConcurrentCache = class {
|
|
39425
39427
|
cache = /* @__PURE__ */ new Map();
|
|
39426
39428
|
pendingPromises = /* @__PURE__ */ new Map();
|
|
@@ -39516,7 +39518,7 @@ var init_cache2 = __esm({
|
|
|
39516
39518
|
}
|
|
39517
39519
|
} catch (error) {
|
|
39518
39520
|
this.pendingPromises.delete(key3);
|
|
39519
|
-
|
|
39521
|
+
log33.error(`Failed to create value for key ${String(key3)} : ${error}`);
|
|
39520
39522
|
throw error;
|
|
39521
39523
|
}
|
|
39522
39524
|
}
|
|
@@ -39567,7 +39569,7 @@ var init_cache2 = __esm({
|
|
|
39567
39569
|
function newParser(funcMap = /* @__PURE__ */ new Map()) {
|
|
39568
39570
|
return new Parser(funcMap);
|
|
39569
39571
|
}
|
|
39570
|
-
var import_text_template, import_text_template2,
|
|
39572
|
+
var import_text_template, import_text_template2, log34, Parser;
|
|
39571
39573
|
var init_parser = __esm({
|
|
39572
39574
|
"internal/domain/template/entity/parser.ts"() {
|
|
39573
39575
|
"use strict";
|
|
@@ -39577,7 +39579,7 @@ var init_parser = __esm({
|
|
|
39577
39579
|
init_info();
|
|
39578
39580
|
init_log();
|
|
39579
39581
|
init_cache2();
|
|
39580
|
-
|
|
39582
|
+
log34 = getDomainLogger("template", { component: "parser" });
|
|
39581
39583
|
Parser = class {
|
|
39582
39584
|
prototypeText;
|
|
39583
39585
|
prototypeTextClone;
|
|
@@ -39671,7 +39673,7 @@ var init_parser = __esm({
|
|
|
39671
39673
|
return [ts, true, null];
|
|
39672
39674
|
} catch (error) {
|
|
39673
39675
|
const templateError = error instanceof TemplateError ? error : new TemplateError(`Parse overlap failed: ${error.message}`, "PARSE_OVERLAP_FAILED");
|
|
39674
|
-
|
|
39676
|
+
log34.error(`Failed to parse template overlap for key: ${cacheKey}: ${templateError.message}`);
|
|
39675
39677
|
return [null, false, templateError];
|
|
39676
39678
|
}
|
|
39677
39679
|
});
|
|
@@ -39708,12 +39710,12 @@ var init_parser = __esm({
|
|
|
39708
39710
|
if (state.template.Tree) {
|
|
39709
39711
|
const [, addErr] = overlayTmpl.AddParseTree(name, state.template.Tree);
|
|
39710
39712
|
if (addErr) {
|
|
39711
|
-
|
|
39713
|
+
log34.error(`AddParseTree failed: ${addErr.message} with name ${name}`);
|
|
39712
39714
|
throw new TemplateError(`AddParseTree failed: ${addErr.message}`, "ADD_PARSE_TREE_FAILED");
|
|
39713
39715
|
}
|
|
39714
39716
|
}
|
|
39715
39717
|
} catch (error) {
|
|
39716
|
-
|
|
39718
|
+
log34.error(`Error adding dependency ${name} to template ${overlay.name}:`, error);
|
|
39717
39719
|
throw new TemplateError(`Failed to add dependency ${name}: ${error.message}`, "DEPENDENCY_ADD_FAILED");
|
|
39718
39720
|
}
|
|
39719
39721
|
}
|
|
@@ -39805,7 +39807,7 @@ var init_parser = __esm({
|
|
|
39805
39807
|
}
|
|
39806
39808
|
}
|
|
39807
39809
|
} catch (error) {
|
|
39808
|
-
|
|
39810
|
+
log34.error(`Error getting dependencies for template ${tmpl.Name()}:`, error);
|
|
39809
39811
|
}
|
|
39810
39812
|
return resultMap;
|
|
39811
39813
|
}
|
|
@@ -40049,7 +40051,7 @@ var init_lookup = __esm({
|
|
|
40049
40051
|
function newTemplateEngine(executor, lookup, parser, templateNamespace, partialNamespace, shortcodeNamespace, fs3) {
|
|
40050
40052
|
return new TemplateEngine(executor, lookup, parser, templateNamespace, partialNamespace, shortcodeNamespace, fs3);
|
|
40051
40053
|
}
|
|
40052
|
-
var
|
|
40054
|
+
var log35, TemplateEngine;
|
|
40053
40055
|
var init_template = __esm({
|
|
40054
40056
|
"internal/domain/template/entity/template.ts"() {
|
|
40055
40057
|
"use strict";
|
|
@@ -40058,7 +40060,7 @@ var init_template = __esm({
|
|
|
40058
40060
|
init_info();
|
|
40059
40061
|
init_log();
|
|
40060
40062
|
init_paths();
|
|
40061
|
-
|
|
40063
|
+
log35 = getDomainLogger("template", { component: "template-engine" });
|
|
40062
40064
|
TemplateEngine = class {
|
|
40063
40065
|
executor;
|
|
40064
40066
|
lookup;
|
|
@@ -40164,7 +40166,7 @@ var init_template = __esm({
|
|
|
40164
40166
|
return [tmpl, name, true, null];
|
|
40165
40167
|
}
|
|
40166
40168
|
} catch (error) {
|
|
40167
|
-
|
|
40169
|
+
log35.error("Error finding template:", error);
|
|
40168
40170
|
}
|
|
40169
40171
|
}
|
|
40170
40172
|
return [null, null, false, null];
|
|
@@ -40204,7 +40206,7 @@ var init_template = __esm({
|
|
|
40204
40206
|
try {
|
|
40205
40207
|
await this.addTemplateFileInfo(normalizedName, fi);
|
|
40206
40208
|
} catch (error) {
|
|
40207
|
-
|
|
40209
|
+
log35.error("Error adding template:", new TemplateError(`Failed to add template ${normalizedName}: ${error.message}`, "LOAD_TEMPLATE_FAILED"));
|
|
40208
40210
|
}
|
|
40209
40211
|
};
|
|
40210
40212
|
try {
|
|
@@ -40412,17 +40414,17 @@ function updateEngineDependentFunctions(engine) {
|
|
|
40412
40414
|
try {
|
|
40413
40415
|
func.updateEngine(engine);
|
|
40414
40416
|
} catch (error) {
|
|
40415
|
-
|
|
40417
|
+
log36.error(`\u274C Failed to update function ${func.getFunctionName()}:`, error);
|
|
40416
40418
|
}
|
|
40417
40419
|
}
|
|
40418
40420
|
}
|
|
40419
|
-
var crypto2,
|
|
40421
|
+
var crypto2, log36, engineDependentFunctions, PartialFunction, DefaultTemplateRegistry;
|
|
40420
40422
|
var init_registry = __esm({
|
|
40421
40423
|
"internal/domain/template/vo/registry.ts"() {
|
|
40422
40424
|
"use strict";
|
|
40423
40425
|
init_log();
|
|
40424
40426
|
crypto2 = __toESM2(require("crypto"));
|
|
40425
|
-
|
|
40427
|
+
log36 = getDomainLogger("template", { component: "registry" });
|
|
40426
40428
|
engineDependentFunctions = [];
|
|
40427
40429
|
PartialFunction = class {
|
|
40428
40430
|
engine = null;
|
|
@@ -40434,14 +40436,14 @@ var init_registry = __esm({
|
|
|
40434
40436
|
}
|
|
40435
40437
|
execute = async (name, context) => {
|
|
40436
40438
|
if (!this.engine) {
|
|
40437
|
-
|
|
40439
|
+
log36.error(`Partial function called but engine not set: ${name}`);
|
|
40438
40440
|
return `<!-- Partial function called but engine not ready: ${name} -->`;
|
|
40439
40441
|
}
|
|
40440
40442
|
try {
|
|
40441
40443
|
const templateName = name.startsWith("partials/") ? name : `partials/${name}`;
|
|
40442
40444
|
return await this.executePartial(templateName, context);
|
|
40443
40445
|
} catch (error) {
|
|
40444
|
-
|
|
40446
|
+
log36.error(`Partial execution failed for "${name}":`, error);
|
|
40445
40447
|
return `<!-- Partial execution failed: ${name} - ${error.message} -->`;
|
|
40446
40448
|
}
|
|
40447
40449
|
};
|
|
@@ -40455,21 +40457,21 @@ var init_registry = __esm({
|
|
|
40455
40457
|
try {
|
|
40456
40458
|
const [templateObj, found2, err] = await this.engine.getPartial(templateName);
|
|
40457
40459
|
if (err) {
|
|
40458
|
-
|
|
40460
|
+
log36.error(`Error getting partial template:`, err);
|
|
40459
40461
|
return `<!-- Error getting partial template: ${templateName} - ${err.message} -->`;
|
|
40460
40462
|
}
|
|
40461
40463
|
if (!found2 || !templateObj) {
|
|
40462
|
-
|
|
40464
|
+
log36.warn(`Template not found: ${templateName}`);
|
|
40463
40465
|
return `<!-- Template not found: ${templateName} -->`;
|
|
40464
40466
|
}
|
|
40465
40467
|
const [result, execErr] = await templateObj.Execute(context);
|
|
40466
40468
|
if (execErr) {
|
|
40467
|
-
|
|
40469
|
+
log36.error(`Template execution error:`, execErr);
|
|
40468
40470
|
return `<!-- Template execution error: ${templateName} - ${execErr.message} -->`;
|
|
40469
40471
|
}
|
|
40470
40472
|
return result;
|
|
40471
40473
|
} catch (error) {
|
|
40472
|
-
|
|
40474
|
+
log36.error(`Sync partial execution failed:`, error);
|
|
40473
40475
|
return `<!-- Partial sync execution failed: ${templateName} - ${error.message} -->`;
|
|
40474
40476
|
}
|
|
40475
40477
|
}
|
|
@@ -40820,11 +40822,11 @@ var init_registry = __esm({
|
|
|
40820
40822
|
});
|
|
40821
40823
|
funcMap.set("split", (str2, sep3) => {
|
|
40822
40824
|
if (str2 === null || str2 === void 0) {
|
|
40823
|
-
|
|
40825
|
+
log36.warn("split function: first argument is null or undefined");
|
|
40824
40826
|
return [];
|
|
40825
40827
|
}
|
|
40826
40828
|
if (typeof str2 !== "string") {
|
|
40827
|
-
|
|
40829
|
+
log36.warn("split function: first argument must be a string, got:", typeof str2, "value:", str2);
|
|
40828
40830
|
if (Array.isArray(str2)) {
|
|
40829
40831
|
return str2;
|
|
40830
40832
|
}
|
|
@@ -40835,11 +40837,11 @@ var init_registry = __esm({
|
|
|
40835
40837
|
});
|
|
40836
40838
|
funcMap.set("splitRegex", (str2, regexPattern) => {
|
|
40837
40839
|
if (str2 === null || str2 === void 0) {
|
|
40838
|
-
|
|
40840
|
+
log36.warn("splitRegex function: first argument is null or undefined");
|
|
40839
40841
|
return [];
|
|
40840
40842
|
}
|
|
40841
40843
|
if (typeof str2 !== "string") {
|
|
40842
|
-
|
|
40844
|
+
log36.warn("splitRegex function: first argument must be a string, got:", typeof str2, "value:", str2);
|
|
40843
40845
|
if (Array.isArray(str2)) {
|
|
40844
40846
|
return str2;
|
|
40845
40847
|
}
|
|
@@ -40848,7 +40850,7 @@ var init_registry = __esm({
|
|
|
40848
40850
|
const regex2 = new RegExp(regexPattern);
|
|
40849
40851
|
return stringValue.split(regex2);
|
|
40850
40852
|
} catch (error) {
|
|
40851
|
-
|
|
40853
|
+
log36.warn("splitRegex function: invalid regex pattern:", regexPattern, "error:", error);
|
|
40852
40854
|
return [stringValue];
|
|
40853
40855
|
}
|
|
40854
40856
|
}
|
|
@@ -40856,7 +40858,7 @@ var init_registry = __esm({
|
|
|
40856
40858
|
const regex2 = new RegExp(regexPattern);
|
|
40857
40859
|
return str2.split(regex2);
|
|
40858
40860
|
} catch (error) {
|
|
40859
|
-
|
|
40861
|
+
log36.warn("splitRegex function: invalid regex pattern:", regexPattern, "error:", error);
|
|
40860
40862
|
return [str2];
|
|
40861
40863
|
}
|
|
40862
40864
|
});
|
|
@@ -41641,7 +41643,7 @@ var init_registry = __esm({
|
|
|
41641
41643
|
try {
|
|
41642
41644
|
return this.doIndex(item, indices);
|
|
41643
41645
|
} catch (error) {
|
|
41644
|
-
|
|
41646
|
+
log36.error(`Index of type ${typeof item} with args [${indices.join(", ")}] failed:`, error);
|
|
41645
41647
|
return null;
|
|
41646
41648
|
}
|
|
41647
41649
|
});
|
|
@@ -42219,7 +42221,7 @@ var init_registry = __esm({
|
|
|
42219
42221
|
for (let i = 0; i < args.length; i++) {
|
|
42220
42222
|
message = message.replace(/%[sd%]/, String(args[i]));
|
|
42221
42223
|
}
|
|
42222
|
-
|
|
42224
|
+
log36.error("Template Error:", message);
|
|
42223
42225
|
return "";
|
|
42224
42226
|
});
|
|
42225
42227
|
funcMap.set("warnf", (format3, ...args) => {
|
|
@@ -42227,7 +42229,7 @@ var init_registry = __esm({
|
|
|
42227
42229
|
for (let i = 0; i < args.length; i++) {
|
|
42228
42230
|
message = message.replace(/%[sd%]/, String(args[i]));
|
|
42229
42231
|
}
|
|
42230
|
-
|
|
42232
|
+
log36.warn("Template Warning:", message);
|
|
42231
42233
|
return "";
|
|
42232
42234
|
});
|
|
42233
42235
|
funcMap.set("fmt", () => ({
|
|
@@ -42254,7 +42256,7 @@ var init_registry = __esm({
|
|
|
42254
42256
|
for (let i = 0; i < args.length; i++) {
|
|
42255
42257
|
message = message.replace(/%[sd%]/, String(args[i]));
|
|
42256
42258
|
}
|
|
42257
|
-
|
|
42259
|
+
log36.error("Template Error:", message);
|
|
42258
42260
|
return "";
|
|
42259
42261
|
},
|
|
42260
42262
|
// Erroridf formats args according to a format specifier and logs an ERROR with ID
|
|
@@ -42264,7 +42266,7 @@ var init_registry = __esm({
|
|
|
42264
42266
|
for (let i = 0; i < args.length; i++) {
|
|
42265
42267
|
message = message.replace(/%[sd%]/, String(args[i]));
|
|
42266
42268
|
}
|
|
42267
|
-
|
|
42269
|
+
log36.error("Template Error:", message);
|
|
42268
42270
|
return "";
|
|
42269
42271
|
},
|
|
42270
42272
|
// Warnf formats args according to a format specifier and logs a WARNING
|
|
@@ -42274,7 +42276,7 @@ var init_registry = __esm({
|
|
|
42274
42276
|
for (let i = 0; i < args.length; i++) {
|
|
42275
42277
|
message = message.replace(/%[sd%]/, String(args[i]));
|
|
42276
42278
|
}
|
|
42277
|
-
|
|
42279
|
+
log36.error("Template Warning:", message);
|
|
42278
42280
|
return "";
|
|
42279
42281
|
},
|
|
42280
42282
|
// Warnidf formats args according to a format specifier and logs a WARNING with ID
|
|
@@ -42284,7 +42286,7 @@ var init_registry = __esm({
|
|
|
42284
42286
|
for (let i = 0; i < args.length; i++) {
|
|
42285
42287
|
message = message.replace(/%[sd%]/, String(args[i]));
|
|
42286
42288
|
}
|
|
42287
|
-
|
|
42289
|
+
log36.error("Template Warning:", message);
|
|
42288
42290
|
return "";
|
|
42289
42291
|
}
|
|
42290
42292
|
}));
|
|
@@ -42932,7 +42934,7 @@ var init_template3 = __esm({
|
|
|
42932
42934
|
});
|
|
42933
42935
|
|
|
42934
42936
|
// internal/domain/content/entity/pagebuilder.ts
|
|
42935
|
-
var
|
|
42937
|
+
var log37, PageBuilder;
|
|
42936
42938
|
var init_pagebuilder = __esm({
|
|
42937
42939
|
"internal/domain/content/entity/pagebuilder.ts"() {
|
|
42938
42940
|
"use strict";
|
|
@@ -42948,7 +42950,7 @@ var init_pagebuilder = __esm({
|
|
|
42948
42950
|
init_paginator();
|
|
42949
42951
|
init_shortcode2();
|
|
42950
42952
|
init_template3();
|
|
42951
|
-
|
|
42953
|
+
log37 = getDomainLogger("content", { component: "pagebuilder" });
|
|
42952
42954
|
PageBuilder = class {
|
|
42953
42955
|
urlSvc;
|
|
42954
42956
|
langSvc;
|
|
@@ -43195,7 +43197,7 @@ var init_pagebuilder = __esm({
|
|
|
43195
43197
|
};
|
|
43196
43198
|
return;
|
|
43197
43199
|
}
|
|
43198
|
-
|
|
43200
|
+
log37.info(`Lazy rendering not enabled, rendering immediately for page: ${p2.path()}`);
|
|
43199
43201
|
const contentResult = await this.renderableDocument?.render({
|
|
43200
43202
|
maxSummaryLength: 300,
|
|
43201
43203
|
// Default summary length
|
|
@@ -43315,24 +43317,24 @@ var init_pagebuilder = __esm({
|
|
|
43315
43317
|
createShortcodeRenderer(p2) {
|
|
43316
43318
|
return async (shortcode) => {
|
|
43317
43319
|
if (!this.templateSvc) {
|
|
43318
|
-
|
|
43320
|
+
log37.warn(`Template service not available for shortcode: ${shortcode.name}`);
|
|
43319
43321
|
return "";
|
|
43320
43322
|
}
|
|
43321
43323
|
try {
|
|
43322
43324
|
if (!shortcode.name) {
|
|
43323
|
-
|
|
43325
|
+
log37.warn("Shortcode missing name");
|
|
43324
43326
|
return "";
|
|
43325
43327
|
}
|
|
43326
43328
|
return await this.doRenderShortcode(shortcode, null, 0, p2);
|
|
43327
43329
|
} catch (error) {
|
|
43328
|
-
|
|
43330
|
+
log37.error(`Error rendering shortcode "${shortcode.name}":`, error);
|
|
43329
43331
|
return "";
|
|
43330
43332
|
}
|
|
43331
43333
|
};
|
|
43332
43334
|
}
|
|
43333
43335
|
async doRenderShortcode(sc, parent, level, page) {
|
|
43334
43336
|
if (sc.inline) {
|
|
43335
|
-
|
|
43337
|
+
log37.warn("Inline shortcodes are not supported yet.");
|
|
43336
43338
|
return "";
|
|
43337
43339
|
}
|
|
43338
43340
|
let data = new ShortcodeWithPage(
|
|
@@ -43361,7 +43363,7 @@ var init_pagebuilder = __esm({
|
|
|
43361
43363
|
);
|
|
43362
43364
|
inner += nestedResult;
|
|
43363
43365
|
} else {
|
|
43364
|
-
|
|
43366
|
+
log37.error(
|
|
43365
43367
|
`Illegal state on shortcode rendering of "${sc.name}". Illegal type in inner data: ${typeof innerData}`
|
|
43366
43368
|
);
|
|
43367
43369
|
return "";
|
|
@@ -43435,7 +43437,7 @@ var init_pagebuilder = __esm({
|
|
|
43435
43437
|
}
|
|
43436
43438
|
return resStr;
|
|
43437
43439
|
} catch (error) {
|
|
43438
|
-
|
|
43440
|
+
log37.error(`Error rendering shortcode markdown:`, error);
|
|
43439
43441
|
return "";
|
|
43440
43442
|
}
|
|
43441
43443
|
}
|
|
@@ -43652,7 +43654,7 @@ function toInt(v) {
|
|
|
43652
43654
|
}
|
|
43653
43655
|
throw new Error(`cannot convert ${typeof v} to int`);
|
|
43654
43656
|
}
|
|
43655
|
-
var
|
|
43657
|
+
var log38, Term;
|
|
43656
43658
|
var init_term = __esm({
|
|
43657
43659
|
"internal/domain/content/entity/term.ts"() {
|
|
43658
43660
|
"use strict";
|
|
@@ -43662,7 +43664,7 @@ var init_term = __esm({
|
|
|
43662
43664
|
init_frontmatter();
|
|
43663
43665
|
init_doctree();
|
|
43664
43666
|
init_log();
|
|
43665
|
-
|
|
43667
|
+
log38 = getDomainLogger("content", { component: "term" });
|
|
43666
43668
|
Term = class {
|
|
43667
43669
|
terms;
|
|
43668
43670
|
fsSvc;
|
|
@@ -43696,7 +43698,7 @@ var init_term = __esm({
|
|
|
43696
43698
|
try {
|
|
43697
43699
|
weight2 = toInt(w);
|
|
43698
43700
|
} catch (err) {
|
|
43699
|
-
|
|
43701
|
+
log38.warn(`Unable to convert taxonomy weight ${w} to int for "${ps.paths().path()}"`);
|
|
43700
43702
|
}
|
|
43701
43703
|
}
|
|
43702
43704
|
for (let i = 0; i < vals.length; i++) {
|
|
@@ -43787,12 +43789,12 @@ var init_content3 = __esm({
|
|
|
43787
43789
|
});
|
|
43788
43790
|
|
|
43789
43791
|
// internal/domain/site/entity/pager.ts
|
|
43790
|
-
var
|
|
43792
|
+
var log39, SitePager;
|
|
43791
43793
|
var init_pager = __esm({
|
|
43792
43794
|
"internal/domain/site/entity/pager.ts"() {
|
|
43793
43795
|
"use strict";
|
|
43794
43796
|
init_log();
|
|
43795
|
-
|
|
43797
|
+
log39 = getDomainLogger("site", { component: "pager" });
|
|
43796
43798
|
SitePager = class _SitePager {
|
|
43797
43799
|
page;
|
|
43798
43800
|
pager;
|
|
@@ -43899,14 +43901,14 @@ var init_pager = __esm({
|
|
|
43899
43901
|
});
|
|
43900
43902
|
|
|
43901
43903
|
// internal/domain/site/entity/page.ts
|
|
43902
|
-
var import_path11,
|
|
43904
|
+
var import_path11, log40, Page2;
|
|
43903
43905
|
var init_page2 = __esm({
|
|
43904
43906
|
"internal/domain/site/entity/page.ts"() {
|
|
43905
43907
|
"use strict";
|
|
43906
43908
|
import_path11 = __toESM2(require("path"));
|
|
43907
43909
|
init_log();
|
|
43908
43910
|
init_pager();
|
|
43909
|
-
|
|
43911
|
+
log40 = getDomainLogger("site", { component: "page" });
|
|
43910
43912
|
Page2 = class _Page {
|
|
43911
43913
|
// Services
|
|
43912
43914
|
tmplSvc;
|
|
@@ -43945,7 +43947,7 @@ var init_page2 = __esm({
|
|
|
43945
43947
|
await this.renderResources();
|
|
43946
43948
|
await this.renderPage();
|
|
43947
43949
|
} catch (error) {
|
|
43948
|
-
|
|
43950
|
+
log40.error(`Failed to render page ${this.paths().path()}: ${error}`);
|
|
43949
43951
|
}
|
|
43950
43952
|
}
|
|
43951
43953
|
getPageOutput() {
|
|
@@ -43962,7 +43964,7 @@ var init_page2 = __esm({
|
|
|
43962
43964
|
const layouts = this.layouts();
|
|
43963
43965
|
const { preparer: tmpl, found: found2 } = await this.tmplSvc.lookupLayout(layouts);
|
|
43964
43966
|
if (!found2) {
|
|
43965
|
-
|
|
43967
|
+
log40.warn(`Failed to find layout: ${layouts.join(",")} for page ${this.paths().path()}`);
|
|
43966
43968
|
return;
|
|
43967
43969
|
}
|
|
43968
43970
|
const targetFilenames = [];
|
|
@@ -44054,7 +44056,7 @@ var init_page2 = __esm({
|
|
|
44054
44056
|
try {
|
|
44055
44057
|
await stream.close();
|
|
44056
44058
|
} catch (closeError) {
|
|
44057
|
-
|
|
44059
|
+
log40.warn(`Failed to close resource stream: ${closeError}`);
|
|
44058
44060
|
}
|
|
44059
44061
|
}
|
|
44060
44062
|
}
|
|
@@ -44442,7 +44444,7 @@ var init_page2 = __esm({
|
|
|
44442
44444
|
}
|
|
44443
44445
|
return this._paginator;
|
|
44444
44446
|
} catch (error) {
|
|
44445
|
-
|
|
44447
|
+
log40.error("Error during pagination:", error);
|
|
44446
44448
|
return null;
|
|
44447
44449
|
}
|
|
44448
44450
|
}
|
|
@@ -44455,7 +44457,7 @@ var init_page2 = __esm({
|
|
|
44455
44457
|
this._paginator = null;
|
|
44456
44458
|
}
|
|
44457
44459
|
} catch (error) {
|
|
44458
|
-
|
|
44460
|
+
log40.error("Error initializing Paginator:", error);
|
|
44459
44461
|
this._paginator = null;
|
|
44460
44462
|
}
|
|
44461
44463
|
}
|
|
@@ -44491,7 +44493,7 @@ var init_page2 = __esm({
|
|
|
44491
44493
|
sitePage(p2) {
|
|
44492
44494
|
try {
|
|
44493
44495
|
if (p2 === null) {
|
|
44494
|
-
|
|
44496
|
+
log40.warn(`Invalid content page provided: ${p2}`);
|
|
44495
44497
|
return null;
|
|
44496
44498
|
}
|
|
44497
44499
|
return new _Page(
|
|
@@ -44502,7 +44504,7 @@ var init_page2 = __esm({
|
|
|
44502
44504
|
this.site
|
|
44503
44505
|
);
|
|
44504
44506
|
} catch (error) {
|
|
44505
|
-
|
|
44507
|
+
log40.error(`Error creating site page: ${error}`);
|
|
44506
44508
|
return null;
|
|
44507
44509
|
}
|
|
44508
44510
|
}
|
|
@@ -44958,12 +44960,12 @@ __export2(taxonomies_builder_exports, {
|
|
|
44958
44960
|
WeightedPage: () => WeightedPage,
|
|
44959
44961
|
WeightedPages: () => WeightedPages
|
|
44960
44962
|
});
|
|
44961
|
-
var
|
|
44963
|
+
var log41, WeightedPage, WeightedPages, Taxonomy3, OrderedTaxonomyEntry, OrderedTaxonomy, TaxonomyList, TaxonomiesBuilder;
|
|
44962
44964
|
var init_taxonomies_builder = __esm({
|
|
44963
44965
|
"internal/domain/site/entity/taxonomies-builder.ts"() {
|
|
44964
44966
|
"use strict";
|
|
44965
44967
|
init_log();
|
|
44966
|
-
|
|
44968
|
+
log41 = getDomainLogger("site", { component: "taxonomies-builder" });
|
|
44967
44969
|
WeightedPage = class {
|
|
44968
44970
|
page;
|
|
44969
44971
|
// Site Page (wrapped)
|
|
@@ -45001,7 +45003,7 @@ var init_taxonomies_builder = __esm({
|
|
|
45001
45003
|
// Page returns the first page (equivalent to Go's Page method)
|
|
45002
45004
|
page() {
|
|
45003
45005
|
if (this.length === 0) {
|
|
45004
|
-
|
|
45006
|
+
log41.error("Page called on empty WeightedPages");
|
|
45005
45007
|
return null;
|
|
45006
45008
|
}
|
|
45007
45009
|
return this[0];
|
|
@@ -45179,7 +45181,7 @@ var init_taxonomies_builder = __esm({
|
|
|
45179
45181
|
);
|
|
45180
45182
|
return taxonomies;
|
|
45181
45183
|
} catch (error) {
|
|
45182
|
-
|
|
45184
|
+
log41.error(`Failed to create taxonomies: ${error}`);
|
|
45183
45185
|
throw error;
|
|
45184
45186
|
}
|
|
45185
45187
|
}
|
|
@@ -45191,12 +45193,12 @@ var init_taxonomies_builder = __esm({
|
|
|
45191
45193
|
function newEmptyMenus() {
|
|
45192
45194
|
return new Menus({});
|
|
45193
45195
|
}
|
|
45194
|
-
var
|
|
45196
|
+
var log42, Menu2, Menus;
|
|
45195
45197
|
var init_menu = __esm({
|
|
45196
45198
|
"internal/domain/site/valueobject/menu.ts"() {
|
|
45197
45199
|
"use strict";
|
|
45198
45200
|
init_log();
|
|
45199
|
-
|
|
45201
|
+
log42 = getDomainLogger("site", { component: "menu" });
|
|
45200
45202
|
Menu2 = class _Menu {
|
|
45201
45203
|
_title;
|
|
45202
45204
|
_url;
|
|
@@ -45508,20 +45510,20 @@ var init_path3 = __esm({
|
|
|
45508
45510
|
});
|
|
45509
45511
|
|
|
45510
45512
|
// internal/domain/site/entity/pagegraph.ts
|
|
45511
|
-
var
|
|
45513
|
+
var log43, PageGraph;
|
|
45512
45514
|
var init_pagegraph = __esm({
|
|
45513
45515
|
"internal/domain/site/entity/pagegraph.ts"() {
|
|
45514
45516
|
"use strict";
|
|
45515
45517
|
init_path3();
|
|
45516
45518
|
init_log();
|
|
45517
|
-
|
|
45519
|
+
log43 = getDomainLogger("site", { component: "PageGraph" });
|
|
45518
45520
|
PageGraph = class {
|
|
45519
45521
|
allSlugs;
|
|
45520
45522
|
/** Map of page slug → outgoing links (simplified slugs) */
|
|
45521
45523
|
outgoingLinks = /* @__PURE__ */ new Map();
|
|
45522
45524
|
constructor(slugs) {
|
|
45523
45525
|
this.allSlugs = [...slugs];
|
|
45524
|
-
|
|
45526
|
+
log43.info(`PageGraph initialized with ${slugs.length} items (pages + resources)`);
|
|
45525
45527
|
}
|
|
45526
45528
|
/**
|
|
45527
45529
|
* Register outgoing links for a page (called during Pass 2)
|
|
@@ -61678,7 +61680,7 @@ var init_is_absolute_url = __esm({
|
|
|
61678
61680
|
function createHtmlLinkProcessor(graph, options) {
|
|
61679
61681
|
return new HtmlLinkProcessor(graph, options);
|
|
61680
61682
|
}
|
|
61681
|
-
var import_path13,
|
|
61683
|
+
var import_path13, log44, defaultOptions2, HtmlLinkProcessor;
|
|
61682
61684
|
var init_html_link_processor = __esm({
|
|
61683
61685
|
"internal/domain/site/service/html-link-processor.ts"() {
|
|
61684
61686
|
"use strict";
|
|
@@ -61690,7 +61692,7 @@ var init_html_link_processor = __esm({
|
|
|
61690
61692
|
import_path13 = __toESM2(require("path"));
|
|
61691
61693
|
init_path3();
|
|
61692
61694
|
init_log();
|
|
61693
|
-
|
|
61695
|
+
log44 = getDomainLogger("site", { component: "HtmlLinkProcessor" });
|
|
61694
61696
|
defaultOptions2 = {
|
|
61695
61697
|
markdownLinkResolution: "shortest",
|
|
61696
61698
|
prettyLinks: true,
|
|
@@ -61721,7 +61723,7 @@ var init_html_link_processor = __esm({
|
|
|
61721
61723
|
*/
|
|
61722
61724
|
async processLinks(srcSlug, html9) {
|
|
61723
61725
|
if (!html9 || typeof html9 !== "string") {
|
|
61724
|
-
|
|
61726
|
+
log44.error(`[HtmlLinkProcessor] Invalid HTML input: ${typeof html9}`);
|
|
61725
61727
|
return { html: html9 || "", outgoingLinks: [] };
|
|
61726
61728
|
}
|
|
61727
61729
|
const opts = this.options;
|
|
@@ -61859,7 +61861,7 @@ var init_html_link_processor = __esm({
|
|
|
61859
61861
|
});
|
|
61860
61862
|
|
|
61861
61863
|
// internal/domain/site/entity/site.ts
|
|
61862
|
-
var
|
|
61864
|
+
var log45, Site;
|
|
61863
61865
|
var init_site = __esm({
|
|
61864
61866
|
"internal/domain/site/entity/site.ts"() {
|
|
61865
61867
|
"use strict";
|
|
@@ -61871,7 +61873,7 @@ var init_site = __esm({
|
|
|
61871
61873
|
init_pagegraph();
|
|
61872
61874
|
init_html_link_processor();
|
|
61873
61875
|
init_page_filter();
|
|
61874
|
-
|
|
61876
|
+
log45 = getDomainLogger("site", { component: "site" });
|
|
61875
61877
|
Site = class {
|
|
61876
61878
|
// Services
|
|
61877
61879
|
configSvc;
|
|
@@ -61980,7 +61982,7 @@ var init_site = __esm({
|
|
|
61980
61982
|
}
|
|
61981
61983
|
} catch (error) {
|
|
61982
61984
|
const message = error instanceof Error ? error.message : String(error);
|
|
61983
|
-
|
|
61985
|
+
log45.error(`\u274C Site build failed: ${message}`);
|
|
61984
61986
|
throw error;
|
|
61985
61987
|
}
|
|
61986
61988
|
}
|
|
@@ -62009,7 +62011,7 @@ var init_site = __esm({
|
|
|
62009
62011
|
}
|
|
62010
62012
|
} catch (error) {
|
|
62011
62013
|
const message = error instanceof Error ? error.message : String(error);
|
|
62012
|
-
|
|
62014
|
+
log45.error(`\u274C Site build failed: ${message}`);
|
|
62013
62015
|
throw error;
|
|
62014
62016
|
}
|
|
62015
62017
|
}
|
|
@@ -62022,7 +62024,7 @@ var init_site = __esm({
|
|
|
62022
62024
|
await this.buildPageGraph();
|
|
62023
62025
|
} catch (error) {
|
|
62024
62026
|
const message = error instanceof Error ? error.message : String(error);
|
|
62025
|
-
|
|
62027
|
+
log45.error(`\u274C Setup failed: ${message}`);
|
|
62026
62028
|
throw error;
|
|
62027
62029
|
}
|
|
62028
62030
|
}
|
|
@@ -62068,16 +62070,16 @@ var init_site = __esm({
|
|
|
62068
62070
|
this.home = sitePage;
|
|
62069
62071
|
}
|
|
62070
62072
|
});
|
|
62071
|
-
|
|
62073
|
+
log45.info(`\u{1F4CA} Processing wikilinks for ${pages.length} pages...`);
|
|
62072
62074
|
for (const page of pages) {
|
|
62073
62075
|
try {
|
|
62074
62076
|
await page.WikilinkContent();
|
|
62075
62077
|
} catch (error) {
|
|
62076
62078
|
const message = error instanceof Error ? error.message : String(error);
|
|
62077
|
-
|
|
62079
|
+
log45.warn(`\u26A0\uFE0F Failed to process wikilinks for ${page.slug()}: ${message}`);
|
|
62078
62080
|
}
|
|
62079
62081
|
}
|
|
62080
|
-
|
|
62082
|
+
log45.info(`\u2705 Wikilink processing complete`);
|
|
62081
62083
|
for (let i = 0; i < pages.length; i++) {
|
|
62082
62084
|
const page = pages[i];
|
|
62083
62085
|
const pagePath = page.file().paths().base();
|
|
@@ -62108,16 +62110,16 @@ var init_site = __esm({
|
|
|
62108
62110
|
this.home = sitePage;
|
|
62109
62111
|
}
|
|
62110
62112
|
});
|
|
62111
|
-
|
|
62113
|
+
log45.info(`\u{1F4CA} Processing wikilinks for ${pages.length} pages...`);
|
|
62112
62114
|
for (const page of pages) {
|
|
62113
62115
|
try {
|
|
62114
62116
|
await page.WikilinkContent();
|
|
62115
62117
|
} catch (error) {
|
|
62116
62118
|
const message = error instanceof Error ? error.message : String(error);
|
|
62117
|
-
|
|
62119
|
+
log45.warn(`\u26A0\uFE0F Failed to process wikilinks for ${page.slug()}: ${message}`);
|
|
62118
62120
|
}
|
|
62119
62121
|
}
|
|
62120
|
-
|
|
62122
|
+
log45.info(`\u2705 Wikilink processing complete`);
|
|
62121
62123
|
const totalPages = pages.length;
|
|
62122
62124
|
for (let i = 0; i < pages.length; i++) {
|
|
62123
62125
|
const page = pages[i];
|
|
@@ -62309,7 +62311,7 @@ var init_site = __esm({
|
|
|
62309
62311
|
const sitePage = this.sitePageSync(cp);
|
|
62310
62312
|
pages.push(sitePage);
|
|
62311
62313
|
} catch (error) {
|
|
62312
|
-
|
|
62314
|
+
log45.error(`\u274C [Site.sitePages] Failed to convert page ${i}:`, error);
|
|
62313
62315
|
}
|
|
62314
62316
|
}
|
|
62315
62317
|
return pages;
|
|
@@ -62357,12 +62359,12 @@ var init_site = __esm({
|
|
|
62357
62359
|
const langIndex = this.languageSvc.getLanguageIndex(this.language.getCurrentLanguage());
|
|
62358
62360
|
const contentPage = this.contentSvc.getPageFromPathSync(langIndex, key3);
|
|
62359
62361
|
if (!contentPage) {
|
|
62360
|
-
|
|
62362
|
+
log45.warn(`\u26A0\uFE0F GetPage: No page found for key "${key3}"`);
|
|
62361
62363
|
return null;
|
|
62362
62364
|
}
|
|
62363
62365
|
return this.sitePageSync(contentPage);
|
|
62364
62366
|
} catch (error) {
|
|
62365
|
-
|
|
62367
|
+
log45.error(`\u274C Error getting page "${key3}": ${error}`);
|
|
62366
62368
|
return null;
|
|
62367
62369
|
}
|
|
62368
62370
|
}
|
|
@@ -62374,7 +62376,7 @@ var init_site = __esm({
|
|
|
62374
62376
|
try {
|
|
62375
62377
|
await this.staticCopySvc.copyStaticFiles(this.staticCopySvc.staticFs(), this.staticCopySvc.publishFs());
|
|
62376
62378
|
} catch (error) {
|
|
62377
|
-
|
|
62379
|
+
log45.error("\u274C Static file copy failed:", error);
|
|
62378
62380
|
throw error;
|
|
62379
62381
|
}
|
|
62380
62382
|
}
|
|
@@ -62398,7 +62400,7 @@ var init_site = __esm({
|
|
|
62398
62400
|
*/
|
|
62399
62401
|
async buildPageGraph() {
|
|
62400
62402
|
if (this.pageGraph) {
|
|
62401
|
-
|
|
62403
|
+
log45.debug("PageGraph already built, skipping rebuild");
|
|
62402
62404
|
return;
|
|
62403
62405
|
}
|
|
62404
62406
|
try {
|
|
@@ -62411,15 +62413,15 @@ var init_site = __esm({
|
|
|
62411
62413
|
});
|
|
62412
62414
|
}
|
|
62413
62415
|
const pageSlugs = allPages.map((page) => page.slug());
|
|
62414
|
-
|
|
62416
|
+
log45.info(`\u{1F4C4} Collected ${pageSlugs.length} page slugs`);
|
|
62415
62417
|
const resourceSlugs = await this.collectResourceSlugs(allPages);
|
|
62416
|
-
|
|
62418
|
+
log45.info(`\u{1F5BC}\uFE0F Collected ${resourceSlugs.length} resource slugs`);
|
|
62417
62419
|
const allSlugs = [...pageSlugs, ...resourceSlugs];
|
|
62418
62420
|
this.pageGraph = new PageGraph(allSlugs);
|
|
62419
|
-
|
|
62421
|
+
log45.info(`\u2705 PageGraph built: ${pageSlugs.length} pages + ${resourceSlugs.length} resources = ${allSlugs.length} total`);
|
|
62420
62422
|
} catch (error) {
|
|
62421
62423
|
const message = error instanceof Error ? error.message : String(error);
|
|
62422
|
-
|
|
62424
|
+
log45.error(`\u274C Failed to build PageGraph: ${message}`);
|
|
62423
62425
|
throw error;
|
|
62424
62426
|
}
|
|
62425
62427
|
}
|
|
@@ -62447,12 +62449,12 @@ var init_site = __esm({
|
|
|
62447
62449
|
}
|
|
62448
62450
|
} catch (error) {
|
|
62449
62451
|
const message = error instanceof Error ? error.message : String(error);
|
|
62450
|
-
|
|
62452
|
+
log45.debug(`\u26A0\uFE0F Failed to get resources for page ${page.slug()}: ${message}`);
|
|
62451
62453
|
}
|
|
62452
62454
|
}
|
|
62453
62455
|
} catch (error) {
|
|
62454
62456
|
const message = error instanceof Error ? error.message : String(error);
|
|
62455
|
-
|
|
62457
|
+
log45.warn(`\u26A0\uFE0F Failed to collect resource slugs: ${message}`);
|
|
62456
62458
|
}
|
|
62457
62459
|
return resourceSlugs;
|
|
62458
62460
|
}
|
|
@@ -62472,7 +62474,7 @@ var init_site = __esm({
|
|
|
62472
62474
|
*/
|
|
62473
62475
|
async ProcessWikilinks(srcSlug, html9) {
|
|
62474
62476
|
if (!this.pageGraph) {
|
|
62475
|
-
|
|
62477
|
+
log45.warn("\u26A0\uFE0F PageGraph not built yet, returning original HTML");
|
|
62476
62478
|
return html9;
|
|
62477
62479
|
}
|
|
62478
62480
|
try {
|
|
@@ -62485,7 +62487,7 @@ var init_site = __esm({
|
|
|
62485
62487
|
const urlObj = new URL2(baseURL);
|
|
62486
62488
|
baseURL = urlObj.pathname.replace(/\/$/, "");
|
|
62487
62489
|
} catch (e) {
|
|
62488
|
-
|
|
62490
|
+
log45.warn(`Failed to parse baseURL as URL: ${baseURL}, treating as path`);
|
|
62489
62491
|
}
|
|
62490
62492
|
}
|
|
62491
62493
|
if (baseURL === "/") {
|
|
@@ -62505,7 +62507,7 @@ var init_site = __esm({
|
|
|
62505
62507
|
return result.html;
|
|
62506
62508
|
} catch (error) {
|
|
62507
62509
|
const message = error instanceof Error ? error.message : String(error);
|
|
62508
|
-
|
|
62510
|
+
log45.error(`\u274C Failed to process wikilinks for ${srcSlug}: ${message}`);
|
|
62509
62511
|
return html9;
|
|
62510
62512
|
}
|
|
62511
62513
|
}
|
|
@@ -62530,7 +62532,7 @@ var init_site = __esm({
|
|
|
62530
62532
|
*/
|
|
62531
62533
|
GetBacklinks(targetSlug) {
|
|
62532
62534
|
if (!this.pageGraph) {
|
|
62533
|
-
|
|
62535
|
+
log45.warn(`\u26A0\uFE0F PageGraph not built yet, cannot get backlinks for ${targetSlug}`);
|
|
62534
62536
|
return [];
|
|
62535
62537
|
}
|
|
62536
62538
|
return this.pageGraph.getBacklinks(targetSlug);
|
|
@@ -62550,7 +62552,7 @@ var init_site = __esm({
|
|
|
62550
62552
|
*/
|
|
62551
62553
|
async GetContentIndex() {
|
|
62552
62554
|
if (!this.pageGraph) {
|
|
62553
|
-
|
|
62555
|
+
log45.warn(`\u26A0\uFE0F PageGraph not built yet, cannot generate content index`);
|
|
62554
62556
|
return /* @__PURE__ */ new Map();
|
|
62555
62557
|
}
|
|
62556
62558
|
const contentIndex = /* @__PURE__ */ new Map();
|
|
@@ -62568,7 +62570,7 @@ var init_site = __esm({
|
|
|
62568
62570
|
content: truncatedContent
|
|
62569
62571
|
});
|
|
62570
62572
|
}
|
|
62571
|
-
|
|
62573
|
+
log45.debug(`[Site] Generated contentIndex with ${contentIndex.size} entries`);
|
|
62572
62574
|
return contentIndex;
|
|
62573
62575
|
}
|
|
62574
62576
|
};
|
|
@@ -62592,13 +62594,13 @@ async function openFileForWriting(fs3, filename) {
|
|
|
62592
62594
|
function isFileNotFoundError(error) {
|
|
62593
62595
|
return error && (error.code === "ENOENT" || error.code === "FILE_NOT_FOUND" || error.message?.includes("not found") || error.message?.includes("no such file"));
|
|
62594
62596
|
}
|
|
62595
|
-
var import_path15,
|
|
62597
|
+
var import_path15, log46, Publisher, MultiWriter;
|
|
62596
62598
|
var init_publisher = __esm({
|
|
62597
62599
|
"internal/domain/site/entity/publisher.ts"() {
|
|
62598
62600
|
"use strict";
|
|
62599
62601
|
import_path15 = __toESM2(require("path"));
|
|
62600
62602
|
init_log();
|
|
62601
|
-
|
|
62603
|
+
log46 = getDomainLogger("site", { component: "publisher" });
|
|
62602
62604
|
Publisher = class {
|
|
62603
62605
|
fs;
|
|
62604
62606
|
constructor(fs3) {
|
|
@@ -62689,12 +62691,12 @@ var init_publisher = __esm({
|
|
|
62689
62691
|
});
|
|
62690
62692
|
|
|
62691
62693
|
// internal/domain/site/entity/ref.ts
|
|
62692
|
-
var
|
|
62694
|
+
var log47, Ref;
|
|
62693
62695
|
var init_ref = __esm({
|
|
62694
62696
|
"internal/domain/site/entity/ref.ts"() {
|
|
62695
62697
|
"use strict";
|
|
62696
62698
|
init_log();
|
|
62697
|
-
|
|
62699
|
+
log47 = getDomainLogger("site", { component: "ref" });
|
|
62698
62700
|
Ref = class {
|
|
62699
62701
|
site;
|
|
62700
62702
|
contentSvc;
|
|
@@ -62751,7 +62753,7 @@ var init_ref = __esm({
|
|
|
62751
62753
|
try {
|
|
62752
62754
|
refURL = new globalThis.URL(normalizedRef, "http://example.com");
|
|
62753
62755
|
} catch (error) {
|
|
62754
|
-
|
|
62756
|
+
log47.error(`Failed to parse ref URL: ${error}`);
|
|
62755
62757
|
return this.notFoundURL;
|
|
62756
62758
|
}
|
|
62757
62759
|
let target = null;
|
|
@@ -62776,7 +62778,7 @@ var init_ref = __esm({
|
|
|
62776
62778
|
link2 = sitePage.permalink();
|
|
62777
62779
|
}
|
|
62778
62780
|
} catch (error) {
|
|
62779
|
-
|
|
62781
|
+
log47.error(`[${page.pageIdentity().pageLanguage()}] REF_NOT_FOUND: Ref "${ref}": ${error}`);
|
|
62780
62782
|
return this.notFoundURL;
|
|
62781
62783
|
}
|
|
62782
62784
|
}
|
|
@@ -62798,11 +62800,11 @@ var init_ref = __esm({
|
|
|
62798
62800
|
logNotFound(ref, what, page, position3) {
|
|
62799
62801
|
const lang2 = page.pageIdentity().pageLanguage();
|
|
62800
62802
|
if (position3 && position3.isValid()) {
|
|
62801
|
-
|
|
62803
|
+
log47.error(`[${lang2}] REF_NOT_FOUND: Ref "${ref}": ${position3.toString()}: ${what}`);
|
|
62802
62804
|
} else if (!page) {
|
|
62803
|
-
|
|
62805
|
+
log47.error(`[${lang2}] REF_NOT_FOUND: Ref "${ref}": ${what}`);
|
|
62804
62806
|
} else {
|
|
62805
|
-
|
|
62807
|
+
log47.error(`[${lang2}] REF_NOT_FOUND: Ref "${ref}" from page "${page.path()}": ${what}`);
|
|
62806
62808
|
}
|
|
62807
62809
|
}
|
|
62808
62810
|
};
|
|
@@ -62810,12 +62812,12 @@ var init_ref = __esm({
|
|
|
62810
62812
|
});
|
|
62811
62813
|
|
|
62812
62814
|
// internal/domain/site/entity/language.ts
|
|
62813
|
-
var
|
|
62815
|
+
var log48, CollatorWrapper, Language2;
|
|
62814
62816
|
var init_language3 = __esm({
|
|
62815
62817
|
"internal/domain/site/entity/language.ts"() {
|
|
62816
62818
|
"use strict";
|
|
62817
62819
|
init_log();
|
|
62818
|
-
|
|
62820
|
+
log48 = getDomainLogger("site", { component: "language" });
|
|
62819
62821
|
CollatorWrapper = class {
|
|
62820
62822
|
collator;
|
|
62821
62823
|
constructor(collator) {
|
|
@@ -63045,12 +63047,12 @@ var init_author = __esm({
|
|
|
63045
63047
|
function newOrganization() {
|
|
63046
63048
|
return new Organization2();
|
|
63047
63049
|
}
|
|
63048
|
-
var
|
|
63050
|
+
var log49, Organization2;
|
|
63049
63051
|
var init_organization = __esm({
|
|
63050
63052
|
"internal/domain/site/valueobject/organization.ts"() {
|
|
63051
63053
|
"use strict";
|
|
63052
63054
|
init_log();
|
|
63053
|
-
|
|
63055
|
+
log49 = getDomainLogger("site", { component: "organization" });
|
|
63054
63056
|
Organization2 = class {
|
|
63055
63057
|
_name;
|
|
63056
63058
|
_description;
|
|
@@ -63194,13 +63196,13 @@ var init_version = __esm({
|
|
|
63194
63196
|
function newNavigation(langSvc) {
|
|
63195
63197
|
return new Navigation(langSvc);
|
|
63196
63198
|
}
|
|
63197
|
-
var
|
|
63199
|
+
var log50, Navigation;
|
|
63198
63200
|
var init_navigation = __esm({
|
|
63199
63201
|
"internal/domain/site/entity/navigation.ts"() {
|
|
63200
63202
|
"use strict";
|
|
63201
63203
|
init_log();
|
|
63202
63204
|
init_menu();
|
|
63203
|
-
|
|
63205
|
+
log50 = getDomainLogger("site", { component: "navigation" });
|
|
63204
63206
|
Navigation = class {
|
|
63205
63207
|
taxonomies;
|
|
63206
63208
|
taxonomiesBuilder = null;
|
|
@@ -63226,7 +63228,7 @@ var init_navigation = __esm({
|
|
|
63226
63228
|
}
|
|
63227
63229
|
async generateMenusForLanguage(lang2, langIndex) {
|
|
63228
63230
|
if (!this.menuBuilder) {
|
|
63229
|
-
|
|
63231
|
+
log50.error("Menu builder not set, cannot generate menus");
|
|
63230
63232
|
return;
|
|
63231
63233
|
}
|
|
63232
63234
|
if (this.menuCache.get(lang2) === true) {
|
|
@@ -63237,12 +63239,12 @@ var init_navigation = __esm({
|
|
|
63237
63239
|
this.menus.set(lang2, generatedMenus);
|
|
63238
63240
|
this.menuCache.set(lang2, true);
|
|
63239
63241
|
} catch (error) {
|
|
63240
|
-
|
|
63242
|
+
log50.error(`Failed to generate menus for language ${lang2}: ${error}`);
|
|
63241
63243
|
}
|
|
63242
63244
|
}
|
|
63243
63245
|
async generateTaxonomiesForLanguage(lang2, langIndex, site) {
|
|
63244
63246
|
if (!this.taxonomiesBuilder) {
|
|
63245
|
-
|
|
63247
|
+
log50.error("Taxonomies builder not set, cannot generate taxonomies");
|
|
63246
63248
|
return;
|
|
63247
63249
|
}
|
|
63248
63250
|
if (this.taxonomiesCache.get(lang2) === true) {
|
|
@@ -63253,7 +63255,7 @@ var init_navigation = __esm({
|
|
|
63253
63255
|
this.taxonomies.set(lang2, generatedTaxonomies);
|
|
63254
63256
|
this.taxonomiesCache.set(lang2, true);
|
|
63255
63257
|
} catch (error) {
|
|
63256
|
-
|
|
63258
|
+
log50.error(`Failed to generate taxonomies for language ${lang2}: ${error}`);
|
|
63257
63259
|
}
|
|
63258
63260
|
}
|
|
63259
63261
|
getMenus(lang2) {
|
|
@@ -63271,13 +63273,13 @@ var init_navigation = __esm({
|
|
|
63271
63273
|
});
|
|
63272
63274
|
|
|
63273
63275
|
// internal/domain/site/entity/menu-builder.ts
|
|
63274
|
-
var
|
|
63276
|
+
var log51, MenuBuilder;
|
|
63275
63277
|
var init_menu_builder = __esm({
|
|
63276
63278
|
"internal/domain/site/entity/menu-builder.ts"() {
|
|
63277
63279
|
"use strict";
|
|
63278
63280
|
init_log();
|
|
63279
63281
|
init_menu();
|
|
63280
|
-
|
|
63282
|
+
log51 = getDomainLogger("site", { component: "menu-builder" });
|
|
63281
63283
|
MenuBuilder = class {
|
|
63282
63284
|
contentService;
|
|
63283
63285
|
site;
|
|
@@ -63313,7 +63315,7 @@ var init_menu_builder = __esm({
|
|
|
63313
63315
|
await this.processMenuSection(menuName, menuSection, pageUrl, page, menuMap);
|
|
63314
63316
|
}
|
|
63315
63317
|
} catch (error) {
|
|
63316
|
-
|
|
63318
|
+
log51.error(`Error processing page for menu: ${error}`);
|
|
63317
63319
|
}
|
|
63318
63320
|
}
|
|
63319
63321
|
/**
|
|
@@ -63439,7 +63441,7 @@ var init_menu_builder = __esm({
|
|
|
63439
63441
|
const sitePage = await this.site.sitePage(page);
|
|
63440
63442
|
return sitePage.RelPermalink;
|
|
63441
63443
|
} catch (error) {
|
|
63442
|
-
|
|
63444
|
+
log51.error(`Error generating page URL for ${page.path()}: ${error}`);
|
|
63443
63445
|
return this.fallbackUrlFromPath(page.path());
|
|
63444
63446
|
}
|
|
63445
63447
|
}
|
|
@@ -63450,7 +63452,7 @@ var init_menu_builder = __esm({
|
|
|
63450
63452
|
try {
|
|
63451
63453
|
return this.site.getURL().relURL(url);
|
|
63452
63454
|
} catch (error) {
|
|
63453
|
-
|
|
63455
|
+
log51.error(`Error processing menu item URL ${url}: ${error}`);
|
|
63454
63456
|
return url;
|
|
63455
63457
|
}
|
|
63456
63458
|
}
|
|
@@ -63576,7 +63578,7 @@ var init_menu_builder = __esm({
|
|
|
63576
63578
|
function createNavigationFactory(langService, contentService, site) {
|
|
63577
63579
|
return new NavigationFactory(langService, contentService, site);
|
|
63578
63580
|
}
|
|
63579
|
-
var
|
|
63581
|
+
var log52, NavigationFactory;
|
|
63580
63582
|
var init_navigation_factory = __esm({
|
|
63581
63583
|
"internal/domain/site/factory/navigation-factory.ts"() {
|
|
63582
63584
|
"use strict";
|
|
@@ -63584,7 +63586,7 @@ var init_navigation_factory = __esm({
|
|
|
63584
63586
|
init_menu_builder();
|
|
63585
63587
|
init_taxonomies_builder();
|
|
63586
63588
|
init_log();
|
|
63587
|
-
|
|
63589
|
+
log52 = getDomainLogger("site", { component: "navigation-factory" });
|
|
63588
63590
|
NavigationFactory = class {
|
|
63589
63591
|
langService;
|
|
63590
63592
|
contentService;
|
|
@@ -63606,7 +63608,7 @@ var init_navigation_factory = __esm({
|
|
|
63606
63608
|
navigation.setTaxonomiesBuilder(taxonomiesBuilder);
|
|
63607
63609
|
return navigation;
|
|
63608
63610
|
} catch (error) {
|
|
63609
|
-
|
|
63611
|
+
log52.error(`Failed to create Navigation entity: ${error}`);
|
|
63610
63612
|
throw error;
|
|
63611
63613
|
}
|
|
63612
63614
|
}
|
|
@@ -63663,7 +63665,7 @@ function newSite(services) {
|
|
|
63663
63665
|
);
|
|
63664
63666
|
return site;
|
|
63665
63667
|
}
|
|
63666
|
-
var
|
|
63668
|
+
var log53;
|
|
63667
63669
|
var init_site2 = __esm({
|
|
63668
63670
|
"internal/domain/site/factory/site.ts"() {
|
|
63669
63671
|
"use strict";
|
|
@@ -63677,7 +63679,7 @@ var init_site2 = __esm({
|
|
|
63677
63679
|
init_version();
|
|
63678
63680
|
init_navigation_factory();
|
|
63679
63681
|
init_log();
|
|
63680
|
-
|
|
63682
|
+
log53 = getDomainLogger("site", { component: "factory" });
|
|
63681
63683
|
}
|
|
63682
63684
|
});
|
|
63683
63685
|
|
|
@@ -63689,7 +63691,7 @@ var init_type9 = __esm({
|
|
|
63689
63691
|
});
|
|
63690
63692
|
|
|
63691
63693
|
// internal/domain/resources/entity/resource.ts
|
|
63692
|
-
var import_crypto, import_stream, import_promises,
|
|
63694
|
+
var import_crypto, import_stream, import_promises, log54, ResourceHash, PublishOnce, ResourceImpl;
|
|
63693
63695
|
var init_resource = __esm({
|
|
63694
63696
|
"internal/domain/resources/entity/resource.ts"() {
|
|
63695
63697
|
"use strict";
|
|
@@ -63699,7 +63701,7 @@ var init_resource = __esm({
|
|
|
63699
63701
|
init_paths();
|
|
63700
63702
|
import_promises = require("stream/promises");
|
|
63701
63703
|
init_log();
|
|
63702
|
-
|
|
63704
|
+
log54 = getDomainLogger("resources", { component: "publisher" });
|
|
63703
63705
|
ResourceHash = class {
|
|
63704
63706
|
value = "";
|
|
63705
63707
|
size = 0;
|
|
@@ -63783,7 +63785,7 @@ var init_resource = __esm({
|
|
|
63783
63785
|
async publish() {
|
|
63784
63786
|
const targetPath = this.targetPath();
|
|
63785
63787
|
if (!this.publisher) {
|
|
63786
|
-
|
|
63788
|
+
log54.error("\u26A0\uFE0F [Resource.publish] No publisher for: %s", targetPath);
|
|
63787
63789
|
return;
|
|
63788
63790
|
}
|
|
63789
63791
|
await this.publishOnce.do(async () => {
|
|
@@ -63794,21 +63796,21 @@ var init_resource = __esm({
|
|
|
63794
63796
|
readSeeker = await this.readSeekCloser();
|
|
63795
63797
|
await this.copyStreamToFile(readSeeker, publicWriter);
|
|
63796
63798
|
} catch (error) {
|
|
63797
|
-
|
|
63799
|
+
log54.errorf("\u274C [Resource.publish] Error publishing %s: %s", targetPath, error);
|
|
63798
63800
|
throw error;
|
|
63799
63801
|
} finally {
|
|
63800
63802
|
if (readSeeker) {
|
|
63801
63803
|
try {
|
|
63802
63804
|
await readSeeker.close();
|
|
63803
63805
|
} catch (closeError) {
|
|
63804
|
-
|
|
63806
|
+
log54.errorf("\u274C [Resource.publish] Failed to close ReadSeekCloser %s: %s", targetPath, closeError);
|
|
63805
63807
|
}
|
|
63806
63808
|
}
|
|
63807
63809
|
if (publicWriter) {
|
|
63808
63810
|
try {
|
|
63809
63811
|
await publicWriter.file.close();
|
|
63810
63812
|
} catch (closeError) {
|
|
63811
|
-
|
|
63813
|
+
log54.errorf("\u274C [Resource.publish] Failed to close public writer %s: %s", targetPath, closeError);
|
|
63812
63814
|
}
|
|
63813
63815
|
}
|
|
63814
63816
|
}
|
|
@@ -63823,7 +63825,7 @@ var init_resource = __esm({
|
|
|
63823
63825
|
try {
|
|
63824
63826
|
await (0, import_promises.pipeline)(source, destination);
|
|
63825
63827
|
} catch (err) {
|
|
63826
|
-
|
|
63828
|
+
log54.errorf("\u274C [copyStreamToFile] Error during pipeline for %s: %s", targetPath, err);
|
|
63827
63829
|
throw err;
|
|
63828
63830
|
}
|
|
63829
63831
|
}
|
|
@@ -94482,14 +94484,14 @@ var init_template4 = __esm({
|
|
|
94482
94484
|
});
|
|
94483
94485
|
|
|
94484
94486
|
// internal/domain/resources/entity/publisher.ts
|
|
94485
|
-
var path25, import_stream2,
|
|
94487
|
+
var path25, import_stream2, log55, Publisher2, FileWritable;
|
|
94486
94488
|
var init_publisher2 = __esm({
|
|
94487
94489
|
"internal/domain/resources/entity/publisher.ts"() {
|
|
94488
94490
|
"use strict";
|
|
94489
94491
|
path25 = __toESM2(require("path"));
|
|
94490
94492
|
init_log();
|
|
94491
94493
|
import_stream2 = require("stream");
|
|
94492
|
-
|
|
94494
|
+
log55 = getDomainLogger("resources", { component: "publisher" });
|
|
94493
94495
|
Publisher2 = class {
|
|
94494
94496
|
pubFs;
|
|
94495
94497
|
urlSvc;
|
|
@@ -94529,7 +94531,7 @@ var init_publisher2 = __esm({
|
|
|
94529
94531
|
try {
|
|
94530
94532
|
await originalClose();
|
|
94531
94533
|
} catch (error2) {
|
|
94532
|
-
|
|
94534
|
+
log55.errorf("\u274C [Publisher.File.close] Error closing publish file (retry) %s, $s", cleanFilename, error2);
|
|
94533
94535
|
throw error2;
|
|
94534
94536
|
}
|
|
94535
94537
|
};
|
|
@@ -94591,14 +94593,14 @@ var init_publisher2 = __esm({
|
|
|
94591
94593
|
});
|
|
94592
94594
|
|
|
94593
94595
|
// internal/domain/resources/entity/http.ts
|
|
94594
|
-
var http2, https2,
|
|
94596
|
+
var http2, https2, log56, HttpClient4;
|
|
94595
94597
|
var init_http2 = __esm({
|
|
94596
94598
|
"internal/domain/resources/entity/http.ts"() {
|
|
94597
94599
|
"use strict";
|
|
94598
94600
|
init_log();
|
|
94599
94601
|
http2 = __toESM2(require("http"));
|
|
94600
94602
|
https2 = __toESM2(require("https"));
|
|
94601
|
-
|
|
94603
|
+
log56 = getDomainLogger("resources", { component: "http-client" });
|
|
94602
94604
|
HttpClient4 = class {
|
|
94603
94605
|
defaultTimeout = 3e4;
|
|
94604
94606
|
// 30 seconds
|
|
@@ -94631,12 +94633,12 @@ var init_http2 = __esm({
|
|
|
94631
94633
|
};
|
|
94632
94634
|
const request = httpModule.request(requestOptions, (response) => {
|
|
94633
94635
|
if (response.statusCode && response.statusCode >= 300 && response.statusCode < 400 && response.headers.location) {
|
|
94634
|
-
|
|
94636
|
+
log56.infof("\u{1F504} [HttpClient.fromRemote] Redirecting from %s to %s", uri, response.headers.location);
|
|
94635
94637
|
this.fromRemote(response.headers.location, options).then(resolve5);
|
|
94636
94638
|
return;
|
|
94637
94639
|
}
|
|
94638
94640
|
if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
|
|
94639
|
-
|
|
94641
|
+
log56.errorf(
|
|
94640
94642
|
"\u274C [HttpClient.fromRemote] HTTP error %d when fetching %s: %s",
|
|
94641
94643
|
response.statusCode || 0,
|
|
94642
94644
|
uri,
|
|
@@ -94653,34 +94655,34 @@ var init_http2 = __esm({
|
|
|
94653
94655
|
try {
|
|
94654
94656
|
const buffer = Buffer.concat(chunks);
|
|
94655
94657
|
const content = buffer.toString("utf8");
|
|
94656
|
-
|
|
94658
|
+
log56.infof(
|
|
94657
94659
|
"\u2705 [HttpClient.fromRemote] Successfully fetched %d bytes from %s",
|
|
94658
94660
|
content.length,
|
|
94659
94661
|
uri
|
|
94660
94662
|
);
|
|
94661
94663
|
resolve5(content);
|
|
94662
94664
|
} catch (error) {
|
|
94663
|
-
|
|
94665
|
+
log56.errorf("\u274C [HttpClient.fromRemote] Error converting response to string from %s: %s", uri, error);
|
|
94664
94666
|
resolve5(null);
|
|
94665
94667
|
}
|
|
94666
94668
|
});
|
|
94667
94669
|
response.on("error", (error) => {
|
|
94668
|
-
|
|
94670
|
+
log56.errorf("\u274C [HttpClient.fromRemote] Response error when fetching %s: %s", uri, error.message);
|
|
94669
94671
|
resolve5(null);
|
|
94670
94672
|
});
|
|
94671
94673
|
});
|
|
94672
94674
|
request.on("error", (error) => {
|
|
94673
|
-
|
|
94675
|
+
log56.errorf("\u274C [HttpClient.fromRemote] Request error when fetching %s: %s", uri, error.message);
|
|
94674
94676
|
resolve5(null);
|
|
94675
94677
|
});
|
|
94676
94678
|
request.on("timeout", () => {
|
|
94677
94679
|
request.destroy();
|
|
94678
|
-
|
|
94680
|
+
log56.errorf("\u274C [HttpClient.fromRemote] Request timeout when fetching %s", uri);
|
|
94679
94681
|
resolve5(null);
|
|
94680
94682
|
});
|
|
94681
94683
|
request.end();
|
|
94682
94684
|
} catch (error) {
|
|
94683
|
-
|
|
94685
|
+
log56.errorf("\u274C [HttpClient.fromRemote] Error fetching content from %s: %s", uri, error);
|
|
94684
94686
|
resolve5(null);
|
|
94685
94687
|
}
|
|
94686
94688
|
});
|
|
@@ -94690,7 +94692,7 @@ var init_http2 = __esm({
|
|
|
94690
94692
|
});
|
|
94691
94693
|
|
|
94692
94694
|
// internal/domain/resources/entity/resources.ts
|
|
94693
|
-
var path26, import_crypto3,
|
|
94695
|
+
var path26, import_crypto3, log57, Resources;
|
|
94694
94696
|
var init_resources = __esm({
|
|
94695
94697
|
"internal/domain/resources/entity/resources.ts"() {
|
|
94696
94698
|
"use strict";
|
|
@@ -94705,7 +94707,7 @@ var init_resources = __esm({
|
|
|
94705
94707
|
path26 = __toESM2(require("path"));
|
|
94706
94708
|
import_crypto3 = require("crypto");
|
|
94707
94709
|
init_log();
|
|
94708
|
-
|
|
94710
|
+
log57 = getDomainLogger("resources", { component: "resources" });
|
|
94709
94711
|
Resources = class {
|
|
94710
94712
|
cache = /* @__PURE__ */ new Map();
|
|
94711
94713
|
workspace;
|
|
@@ -94758,7 +94760,7 @@ var init_resources = __esm({
|
|
|
94758
94760
|
}
|
|
94759
94761
|
return resource;
|
|
94760
94762
|
} catch (error) {
|
|
94761
|
-
|
|
94763
|
+
log57.errorf("\u274C [Resources.getResource] Error getting resource %s, %s", cleanPath, error);
|
|
94762
94764
|
return null;
|
|
94763
94765
|
}
|
|
94764
94766
|
}
|
|
@@ -94778,7 +94780,7 @@ var init_resources = __esm({
|
|
|
94778
94780
|
}
|
|
94779
94781
|
return resource;
|
|
94780
94782
|
} catch (error) {
|
|
94781
|
-
|
|
94783
|
+
log57.errorf("\u274C [Resources.getResourceWithOpener] Error getting resource with opener %s, %s", cleanPath, error);
|
|
94782
94784
|
return null;
|
|
94783
94785
|
}
|
|
94784
94786
|
}
|
|
@@ -94800,11 +94802,11 @@ var init_resources = __esm({
|
|
|
94800
94802
|
if (result) {
|
|
94801
94803
|
this.cache.set(cacheKey, result);
|
|
94802
94804
|
} else {
|
|
94803
|
-
|
|
94805
|
+
log57.warnf("\u26A0\uFE0F [Resources.executeAsTemplate] Template execution returned null for resource %s", resource.key());
|
|
94804
94806
|
}
|
|
94805
94807
|
return result;
|
|
94806
94808
|
} catch (error) {
|
|
94807
|
-
|
|
94809
|
+
log57.errorf("\u274C [Resources.executeAsTemplate] Error executing template %s, %s", resource.key(), error);
|
|
94808
94810
|
throw error;
|
|
94809
94811
|
}
|
|
94810
94812
|
}
|
|
@@ -94826,11 +94828,11 @@ var init_resources = __esm({
|
|
|
94826
94828
|
if (result) {
|
|
94827
94829
|
this.cache.set(cacheKey, result);
|
|
94828
94830
|
} else {
|
|
94829
|
-
|
|
94831
|
+
log57.warnf("\u26A0\uFE0F [Resources.minify] Minification returned null for resource %s", resource.key());
|
|
94830
94832
|
}
|
|
94831
94833
|
return result;
|
|
94832
94834
|
} catch (error) {
|
|
94833
|
-
|
|
94835
|
+
log57.errorf("\u274C [Resources.minify] Error minifying resource %s, %s", resource.key(), error);
|
|
94834
94836
|
throw error;
|
|
94835
94837
|
}
|
|
94836
94838
|
}
|
|
@@ -94849,11 +94851,11 @@ var init_resources = __esm({
|
|
|
94849
94851
|
if (res) {
|
|
94850
94852
|
this.cache.set(cacheKey, res);
|
|
94851
94853
|
} else {
|
|
94852
|
-
|
|
94854
|
+
log57.warnf("\u26A0\uFE0F [Resources.fingerprint] Fingerprint operation returned null for resource %s", resource.key());
|
|
94853
94855
|
}
|
|
94854
94856
|
return res;
|
|
94855
94857
|
} catch (error) {
|
|
94856
|
-
|
|
94858
|
+
log57.errorf("\u274C [Resources.fingerprint] Error fingerprinting resource %s, %s", resource.key(), error);
|
|
94857
94859
|
throw error;
|
|
94858
94860
|
}
|
|
94859
94861
|
}
|
|
@@ -94880,7 +94882,7 @@ var init_resources = __esm({
|
|
|
94880
94882
|
}
|
|
94881
94883
|
return resource;
|
|
94882
94884
|
} catch (error) {
|
|
94883
|
-
|
|
94885
|
+
log57.errorf("\u274C [Resources.fromRemote] Error getting remote resource %s, %s", uri, error);
|
|
94884
94886
|
return null;
|
|
94885
94887
|
}
|
|
94886
94888
|
}
|
|
@@ -94916,7 +94918,7 @@ var init_resources = __esm({
|
|
|
94916
94918
|
);
|
|
94917
94919
|
return resource;
|
|
94918
94920
|
} catch (error) {
|
|
94919
|
-
|
|
94921
|
+
log57.errorf("\u274C [Resources.buildResource] Error building resource for %s, %s", pathname, error);
|
|
94920
94922
|
return null;
|
|
94921
94923
|
}
|
|
94922
94924
|
}
|
|
@@ -94975,7 +94977,7 @@ var init_resources = __esm({
|
|
|
94975
94977
|
try {
|
|
94976
94978
|
await file.close();
|
|
94977
94979
|
} catch (closeError) {
|
|
94978
|
-
|
|
94980
|
+
log57.warnf("\u274C [Resources.createReadSeekCloser] Error closing file after read error %s, %s", file.path, closeError);
|
|
94979
94981
|
}
|
|
94980
94982
|
return this.newReadSeekerNoOpCloserFromString("");
|
|
94981
94983
|
}
|
|
@@ -95213,12 +95215,12 @@ var init_resources2 = __esm({
|
|
|
95213
95215
|
});
|
|
95214
95216
|
|
|
95215
95217
|
// internal/application/batch-task-queue.ts
|
|
95216
|
-
var
|
|
95218
|
+
var log58, BatchTaskQueue;
|
|
95217
95219
|
var init_batch_task_queue = __esm({
|
|
95218
95220
|
"internal/application/batch-task-queue.ts"() {
|
|
95219
95221
|
"use strict";
|
|
95220
95222
|
init_log();
|
|
95221
|
-
|
|
95223
|
+
log58 = getDomainLogger("application", { component: "batch-task-queue" });
|
|
95222
95224
|
BatchTaskQueue = class {
|
|
95223
95225
|
queue = [];
|
|
95224
95226
|
currentIndex = 0;
|
|
@@ -95226,7 +95228,7 @@ var init_batch_task_queue = __esm({
|
|
|
95226
95228
|
constructor(batches) {
|
|
95227
95229
|
this.queue = batches;
|
|
95228
95230
|
this.totalBatches = batches.length;
|
|
95229
|
-
|
|
95231
|
+
log58.info(`Task queue initialized with ${this.totalBatches} batches`);
|
|
95230
95232
|
}
|
|
95231
95233
|
/**
|
|
95232
95234
|
* 获取下一个任务批次(线程安全)
|
|
@@ -95279,7 +95281,7 @@ function createTaskBatches(tasks2, batchSize) {
|
|
|
95279
95281
|
for (let i = 0; i < tasks2.length; i += batchSize) {
|
|
95280
95282
|
batches.push(tasks2.slice(i, i + batchSize));
|
|
95281
95283
|
}
|
|
95282
|
-
|
|
95284
|
+
log59.info(`\u{1F4E6} Created ${batches.length} batches (${batchSize} tasks per batch)`);
|
|
95283
95285
|
return batches;
|
|
95284
95286
|
}
|
|
95285
95287
|
async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, completedPages, onProgress) {
|
|
@@ -95287,11 +95289,11 @@ async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, co
|
|
|
95287
95289
|
while (true) {
|
|
95288
95290
|
const batch = taskQueue.nextBatch();
|
|
95289
95291
|
if (!batch) {
|
|
95290
|
-
|
|
95292
|
+
log59.debug(`Worker ${workerIndex} finished - no more tasks`);
|
|
95291
95293
|
break;
|
|
95292
95294
|
}
|
|
95293
95295
|
const progress = taskQueue.getProgress();
|
|
95294
|
-
|
|
95296
|
+
log59.info(`\u{1F504} Worker ${workerIndex} processing batch ${progress.completed}/${progress.total} (${batch.length} tasks)`);
|
|
95295
95297
|
const task = {
|
|
95296
95298
|
type: "process-batch",
|
|
95297
95299
|
pageTasks: batch
|
|
@@ -95312,9 +95314,9 @@ async function runWorkerLoop(poolManager, taskQueue, workerIndex, totalPages, co
|
|
|
95312
95314
|
totalPages
|
|
95313
95315
|
}
|
|
95314
95316
|
});
|
|
95315
|
-
|
|
95317
|
+
log59.info(`\u2705 Worker ${workerIndex} completed batch: ${result.processedCount} tasks in ${result.duration.toFixed(2)}ms`);
|
|
95316
95318
|
} else {
|
|
95317
|
-
|
|
95319
|
+
log59.error(`\u274C Worker ${workerIndex} failed: ${response.error}`);
|
|
95318
95320
|
results.push({
|
|
95319
95321
|
success: false,
|
|
95320
95322
|
processedCount: 0,
|
|
@@ -95343,7 +95345,7 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95343
95345
|
});
|
|
95344
95346
|
const pageTasks = await collectAllPageTasks(projDir, modulesDir);
|
|
95345
95347
|
if (pageTasks.length === 0) {
|
|
95346
|
-
|
|
95348
|
+
log59.warn("\u26A0\uFE0F No page tasks found to process");
|
|
95347
95349
|
onProgress?.({
|
|
95348
95350
|
stage: "completion",
|
|
95349
95351
|
message: "No pages to process",
|
|
@@ -95367,7 +95369,7 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95367
95369
|
const cpuCount = os.cpus().length;
|
|
95368
95370
|
const workerCount = Math.max(2, Math.floor(cpuCount * 0.6));
|
|
95369
95371
|
const batchSize = calculateOptimalBatchSize(pageTasks.length, workerCount);
|
|
95370
|
-
|
|
95372
|
+
log59.info(`\u2699\uFE0F Using ${workerCount} workers with batch size ${batchSize}`);
|
|
95371
95373
|
onProgress?.({
|
|
95372
95374
|
stage: "config",
|
|
95373
95375
|
message: `Creating worker pool with ${workerCount} workers...`,
|
|
@@ -95380,7 +95382,7 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95380
95382
|
message: "Initializing workers...",
|
|
95381
95383
|
percentage: 50
|
|
95382
95384
|
});
|
|
95383
|
-
|
|
95385
|
+
log59.info("\u{1F527} Initializing workers...");
|
|
95384
95386
|
const initStartTime = performance.now();
|
|
95385
95387
|
const initTasks = [];
|
|
95386
95388
|
for (let i = 0; i < workerCount; i++) {
|
|
@@ -95393,7 +95395,7 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95393
95395
|
}
|
|
95394
95396
|
await Promise.all(initTasks);
|
|
95395
95397
|
const initDuration = performance.now() - initStartTime;
|
|
95396
|
-
|
|
95398
|
+
log59.info(`\u2705 All workers initialized in ${initDuration.toFixed(2)}ms`);
|
|
95397
95399
|
onProgress?.({
|
|
95398
95400
|
stage: "build",
|
|
95399
95401
|
message: `Creating ${Math.ceil(pageTasks.length / batchSize)} task batches...`,
|
|
@@ -95406,7 +95408,7 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95406
95408
|
message: "Starting parallel page rendering...",
|
|
95407
95409
|
percentage: 70
|
|
95408
95410
|
});
|
|
95409
|
-
|
|
95411
|
+
log59.info("\u{1F3C3} Starting worker loops...");
|
|
95410
95412
|
const processingStartTime = performance.now();
|
|
95411
95413
|
const completedPages = { count: 0 };
|
|
95412
95414
|
const workerLoops = [];
|
|
@@ -95430,8 +95432,8 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95430
95432
|
message: `Parallel SSG completed! Processed ${totalProcessed} pages with ${workerCount} workers`,
|
|
95431
95433
|
percentage: 100
|
|
95432
95434
|
});
|
|
95433
|
-
|
|
95434
|
-
|
|
95435
|
+
log59.info("\u2728 Parallel SSG completed!");
|
|
95436
|
+
log59.info("\u{1F4CA} Statistics:", {
|
|
95435
95437
|
totalTasks: pageTasks.length,
|
|
95436
95438
|
processedTasks: totalProcessed,
|
|
95437
95439
|
successfulBatches: successCount,
|
|
@@ -95453,13 +95455,13 @@ async function processSSGParallel(projDir, modulesDir, markdown, onProgress, htt
|
|
|
95453
95455
|
};
|
|
95454
95456
|
} catch (error) {
|
|
95455
95457
|
const message = error instanceof Error ? error.message : String(error);
|
|
95456
|
-
|
|
95458
|
+
log59.error(`\u274C Parallel SSG failed: ${message}`);
|
|
95457
95459
|
throw error;
|
|
95458
95460
|
} finally {
|
|
95459
95461
|
process.chdir(originalCwd);
|
|
95460
95462
|
}
|
|
95461
95463
|
}
|
|
95462
|
-
var os,
|
|
95464
|
+
var os, log59;
|
|
95463
95465
|
var init_ssg_parallel = __esm({
|
|
95464
95466
|
"internal/application/ssg-parallel.ts"() {
|
|
95465
95467
|
"use strict";
|
|
@@ -95468,7 +95470,7 @@ var init_ssg_parallel = __esm({
|
|
|
95468
95470
|
init_batch_task_queue();
|
|
95469
95471
|
init_ssg();
|
|
95470
95472
|
os = __toESM2(require("os"));
|
|
95471
|
-
|
|
95473
|
+
log59 = getDomainLogger("ssg", { component: "parallel" });
|
|
95472
95474
|
}
|
|
95473
95475
|
});
|
|
95474
95476
|
|
|
@@ -95630,7 +95632,7 @@ function createCustomizedFunctions(config2, site, resources) {
|
|
|
95630
95632
|
try {
|
|
95631
95633
|
return await resources.getResource(filename);
|
|
95632
95634
|
} catch (error) {
|
|
95633
|
-
|
|
95635
|
+
log60.warn(`Resource not found: ${filename}`, error);
|
|
95634
95636
|
return Promise.resolve(null);
|
|
95635
95637
|
}
|
|
95636
95638
|
},
|
|
@@ -95681,7 +95683,7 @@ async function createTemplateAdapter(templateEngine, site) {
|
|
|
95681
95683
|
execute: async (data) => {
|
|
95682
95684
|
const [result, execErr] = await tmpl.Execute(data);
|
|
95683
95685
|
if (execErr) {
|
|
95684
|
-
|
|
95686
|
+
log60.errorf("template exec error: %s", execErr);
|
|
95685
95687
|
throw execErr;
|
|
95686
95688
|
}
|
|
95687
95689
|
return result;
|
|
@@ -95696,7 +95698,7 @@ async function createTemplateAdapter(templateEngine, site) {
|
|
|
95696
95698
|
try {
|
|
95697
95699
|
return await preparer.execute(data);
|
|
95698
95700
|
} catch (error) {
|
|
95699
|
-
|
|
95701
|
+
log60.error(`\u274C Template execution error: ${error}`);
|
|
95700
95702
|
return `<html><body>Template execution error: ${error}</body></html>`;
|
|
95701
95703
|
}
|
|
95702
95704
|
}
|
|
@@ -95746,11 +95748,11 @@ function createSiteForSSG(config2, fs3, content) {
|
|
|
95746
95748
|
try {
|
|
95747
95749
|
const page = content.getPageFromPath(langIndex, path29);
|
|
95748
95750
|
if (!page) {
|
|
95749
|
-
|
|
95751
|
+
log60.error(`\u26A0\uFE0F Application.getPageFromPath: content domain returned null for path: "${path29}"`);
|
|
95750
95752
|
}
|
|
95751
95753
|
return page;
|
|
95752
95754
|
} catch (error) {
|
|
95753
|
-
|
|
95755
|
+
log60.error(`\u274C Application.getPageFromPath error delegating to content domain:`, error);
|
|
95754
95756
|
return null;
|
|
95755
95757
|
}
|
|
95756
95758
|
},
|
|
@@ -95758,11 +95760,11 @@ function createSiteForSSG(config2, fs3, content) {
|
|
|
95758
95760
|
try {
|
|
95759
95761
|
const page = content.getPageFromPath(langIndex, path29);
|
|
95760
95762
|
if (!page) {
|
|
95761
|
-
|
|
95763
|
+
log60.warn(`\u26A0\uFE0F Application.getPageFromPathSync: content domain returned null for path: ${path29}`);
|
|
95762
95764
|
}
|
|
95763
95765
|
return page;
|
|
95764
95766
|
} catch (error) {
|
|
95765
|
-
|
|
95767
|
+
log60.error(`\u274C Application.getPageFromPathSync error delegating to content domain:`, error);
|
|
95766
95768
|
return null;
|
|
95767
95769
|
}
|
|
95768
95770
|
},
|
|
@@ -95813,16 +95815,16 @@ async function generateStaticSite(projDir, modulesDir, markdown) {
|
|
|
95813
95815
|
let startTime = performance.now();
|
|
95814
95816
|
const config2 = await loadConfiguration(projDir, modulesDir);
|
|
95815
95817
|
let endTime = performance.now();
|
|
95816
|
-
|
|
95818
|
+
log60.info(`\u2705 Configuration loaded in ${(endTime - startTime).toFixed(2)} ms`);
|
|
95817
95819
|
const markdownRenderer = markdown;
|
|
95818
95820
|
startTime = performance.now();
|
|
95819
95821
|
const modules = await createModule(config2);
|
|
95820
95822
|
endTime = performance.now();
|
|
95821
|
-
|
|
95823
|
+
log60.info(`\u2705 Modules created in ${(endTime - startTime).toFixed(2)} ms`);
|
|
95822
95824
|
startTime = performance.now();
|
|
95823
95825
|
const filesystem = await createFileSystem(config2, modules);
|
|
95824
95826
|
endTime = performance.now();
|
|
95825
|
-
|
|
95827
|
+
log60.info(`\u2705 Filesystem created in ${(endTime - startTime).toFixed(2)} ms`);
|
|
95826
95828
|
const content = await createContentEngine(filesystem, config2, modules, markdownRenderer);
|
|
95827
95829
|
const site = createSiteForSSG(config2, filesystem, content);
|
|
95828
95830
|
const resources = createResourcesEngine(config2, filesystem);
|
|
@@ -95840,16 +95842,16 @@ async function generateStaticSite(projDir, modulesDir, markdown) {
|
|
|
95840
95842
|
startTime = performance.now();
|
|
95841
95843
|
await content.collectPages();
|
|
95842
95844
|
endTime = performance.now();
|
|
95843
|
-
|
|
95845
|
+
log60.info(`\u2705 Pages collected in ${(endTime - startTime).toFixed(2)} ms`);
|
|
95844
95846
|
const templateAdapter = await createTemplateAdapter(templateEngine, site);
|
|
95845
95847
|
startTime = performance.now();
|
|
95846
95848
|
await site.build(templateAdapter);
|
|
95847
95849
|
endTime = performance.now();
|
|
95848
95850
|
setDomainInstances(site, content, filesystem, config2, modules, resources, templateEngine);
|
|
95849
|
-
|
|
95851
|
+
log60.info(`\u2705 Site built in ${(endTime - startTime).toFixed(2)} ms`);
|
|
95850
95852
|
} catch (error) {
|
|
95851
95853
|
const message = error instanceof Error ? error.message : String(error);
|
|
95852
|
-
|
|
95854
|
+
log60.error(`\u274C Static site generation failed: ${message}`);
|
|
95853
95855
|
throw new Error(`Failed to generate static site: ${message}`);
|
|
95854
95856
|
}
|
|
95855
95857
|
}
|
|
@@ -95864,7 +95866,7 @@ async function processSSG(projDir, modulesDir, markdown) {
|
|
|
95864
95866
|
}
|
|
95865
95867
|
} catch (error) {
|
|
95866
95868
|
const message = error instanceof Error ? error.message : String(error);
|
|
95867
|
-
|
|
95869
|
+
log60.error(`\u274C SSG processing failed: ${message}`);
|
|
95868
95870
|
throw new Error(`Failed to process SSG: ${message}`);
|
|
95869
95871
|
}
|
|
95870
95872
|
}
|
|
@@ -95940,7 +95942,7 @@ async function generateStaticSiteWithProgress(projDir, modulesDir, markdown, onP
|
|
|
95940
95942
|
return getDomainInstances();
|
|
95941
95943
|
} catch (error) {
|
|
95942
95944
|
const message = error instanceof Error ? error.message : String(error);
|
|
95943
|
-
|
|
95945
|
+
log60.error(`\u274C Static site generation failed: ${message}`);
|
|
95944
95946
|
throw new Error(`Failed to generate static site: ${message}`);
|
|
95945
95947
|
}
|
|
95946
95948
|
}
|
|
@@ -95997,7 +95999,7 @@ async function processSSGWithProgress(projDir, modulesDir, markdown, onProgress,
|
|
|
95997
95999
|
}
|
|
95998
96000
|
} catch (error) {
|
|
95999
96001
|
const message = error instanceof Error ? error.message : String(error);
|
|
96000
|
-
|
|
96002
|
+
log60.error(`\u274C SSG processing failed: ${message}`);
|
|
96001
96003
|
throw new Error(`Failed to process SSG: ${message}`);
|
|
96002
96004
|
}
|
|
96003
96005
|
}
|
|
@@ -96012,29 +96014,29 @@ async function serveSSG(projDir, modulesDir, markdown, onProgress, httpClient) {
|
|
|
96012
96014
|
return await generateStaticSiteWithProgress(projDir, modulesDir, markdown, onProgress, httpClient);
|
|
96013
96015
|
} catch (error) {
|
|
96014
96016
|
const message = error instanceof Error ? error.message : String(error);
|
|
96015
|
-
|
|
96017
|
+
log60.error(`\u274C SSG processing failed: ${message}`);
|
|
96016
96018
|
throw new Error(`Failed to process SSG: ${message}`);
|
|
96017
96019
|
}
|
|
96018
96020
|
}
|
|
96019
96021
|
async function collectAllPageTasks(projDir, modulesDir, markdown, onProgress, httpClient) {
|
|
96020
96022
|
if (tasks.length > 0) {
|
|
96021
|
-
|
|
96023
|
+
log60.info("Page tasks already collected, returning cached tasks");
|
|
96022
96024
|
return tasks;
|
|
96023
96025
|
}
|
|
96024
96026
|
try {
|
|
96025
96027
|
let startTime = performance.now();
|
|
96026
96028
|
const config2 = await loadConfiguration(projDir, modulesDir);
|
|
96027
96029
|
let endTime = performance.now();
|
|
96028
|
-
|
|
96030
|
+
log60.info(`\u2705 Configuration loaded in ${(endTime - startTime).toFixed(2)} ms`);
|
|
96029
96031
|
const markdownRenderer = markdown;
|
|
96030
96032
|
startTime = performance.now();
|
|
96031
96033
|
const modules = await createModuleWithProgress(config2, onProgress, httpClient);
|
|
96032
96034
|
endTime = performance.now();
|
|
96033
|
-
|
|
96035
|
+
log60.info(`\u2705 Modules created in ${(endTime - startTime).toFixed(2)} ms`);
|
|
96034
96036
|
startTime = performance.now();
|
|
96035
96037
|
const filesystem = await createFileSystem(config2, modules);
|
|
96036
96038
|
endTime = performance.now();
|
|
96037
|
-
|
|
96039
|
+
log60.info(`\u2705 Filesystem created in ${(endTime - startTime).toFixed(2)} ms`);
|
|
96038
96040
|
const content = await createContentEngine(filesystem, config2, modules, markdownRenderer);
|
|
96039
96041
|
const site = createSiteForSSG(config2, filesystem, content);
|
|
96040
96042
|
const resources = createResourcesEngine(config2, filesystem);
|
|
@@ -96052,7 +96054,7 @@ async function collectAllPageTasks(projDir, modulesDir, markdown, onProgress, ht
|
|
|
96052
96054
|
startTime = performance.now();
|
|
96053
96055
|
await content.collectPages();
|
|
96054
96056
|
endTime = performance.now();
|
|
96055
|
-
|
|
96057
|
+
log60.info(`\u2705 Pages collected in ${(endTime - startTime).toFixed(2)} ms`);
|
|
96056
96058
|
startTime = performance.now();
|
|
96057
96059
|
const languageKeys = config2.getLanguage().languageKeys();
|
|
96058
96060
|
for (const langKey of languageKeys) {
|
|
@@ -96067,24 +96069,24 @@ async function collectAllPageTasks(projDir, modulesDir, markdown, onProgress, ht
|
|
|
96067
96069
|
page.pageIdentity().clearStale();
|
|
96068
96070
|
}
|
|
96069
96071
|
});
|
|
96070
|
-
|
|
96072
|
+
log60.debug(`Collected pages for language: ${langKey}`);
|
|
96071
96073
|
}
|
|
96072
96074
|
endTime = performance.now();
|
|
96073
|
-
|
|
96075
|
+
log60.info(`\u2705 Page tasks collected in ${(endTime - startTime).toFixed(2)} ms`);
|
|
96074
96076
|
const templateAdapter = await createTemplateAdapter(templateEngine, site);
|
|
96075
96077
|
startTime = performance.now();
|
|
96076
96078
|
await site.build(templateAdapter);
|
|
96077
96079
|
endTime = performance.now();
|
|
96078
|
-
|
|
96080
|
+
log60.info(`\u2705 Site built in ${(endTime - startTime).toFixed(2)} ms`);
|
|
96079
96081
|
setDomainInstances(site, content, filesystem, config2, modules, resources, templateEngine);
|
|
96080
96082
|
return tasks;
|
|
96081
96083
|
} catch (error) {
|
|
96082
96084
|
const message = error instanceof Error ? error.message : String(error);
|
|
96083
|
-
|
|
96085
|
+
log60.error(`\u274C Static site generation failed: ${message}`);
|
|
96084
96086
|
throw new Error(`Failed to generate static site: ${message}`);
|
|
96085
96087
|
}
|
|
96086
96088
|
}
|
|
96087
|
-
var import_path16,
|
|
96089
|
+
var import_path16, log60, configCache, modulesCache, fsCache, contentCache, resourcesCache, templateEngineCache, siteCache, createDomainInstances, tasks;
|
|
96088
96090
|
var init_ssg = __esm({
|
|
96089
96091
|
"internal/application/ssg.ts"() {
|
|
96090
96092
|
"use strict";
|
|
@@ -96098,7 +96100,7 @@ var init_ssg = __esm({
|
|
|
96098
96100
|
import_path16 = __toESM2(require("path"));
|
|
96099
96101
|
init_resources2();
|
|
96100
96102
|
init_ssg_parallel();
|
|
96101
|
-
|
|
96103
|
+
log60 = getDomainLogger("ssg", { component: "application" });
|
|
96102
96104
|
createDomainInstances = (site, content, fs3, config2, modules, resources) => {
|
|
96103
96105
|
return {
|
|
96104
96106
|
site,
|
|
@@ -96114,13 +96116,13 @@ var init_ssg = __esm({
|
|
|
96114
96116
|
});
|
|
96115
96117
|
|
|
96116
96118
|
// internal/application/worker/worker-state.ts
|
|
96117
|
-
var
|
|
96119
|
+
var log61, WorkerState;
|
|
96118
96120
|
var init_worker_state = __esm({
|
|
96119
96121
|
"internal/application/worker/worker-state.ts"() {
|
|
96120
96122
|
"use strict";
|
|
96121
96123
|
init_log();
|
|
96122
96124
|
init_page_filter();
|
|
96123
|
-
|
|
96125
|
+
log61 = getDomainLogger("application", { component: "worker-state" });
|
|
96124
96126
|
WorkerState = class {
|
|
96125
96127
|
constructor(projDir, moduleDir) {
|
|
96126
96128
|
this.projDir = projDir;
|
|
@@ -96132,17 +96134,17 @@ var init_worker_state = __esm({
|
|
|
96132
96134
|
*/
|
|
96133
96135
|
async initialize() {
|
|
96134
96136
|
if (this.initialized) {
|
|
96135
|
-
|
|
96137
|
+
log61.warn("Worker already initialized, skipping...");
|
|
96136
96138
|
return;
|
|
96137
96139
|
}
|
|
96138
96140
|
const startTime = performance.now();
|
|
96139
|
-
|
|
96141
|
+
log61.info("\u{1F680} Initializing worker environment...", {
|
|
96140
96142
|
projDir: this.projDir,
|
|
96141
96143
|
moduleDir: this.moduleDir
|
|
96142
96144
|
});
|
|
96143
96145
|
this.initialized = true;
|
|
96144
96146
|
const duration = performance.now() - startTime;
|
|
96145
|
-
|
|
96147
|
+
log61.info(`\u2705 Worker environment initialized in ${duration.toFixed(2)}ms`);
|
|
96146
96148
|
}
|
|
96147
96149
|
/**
|
|
96148
96150
|
* 处理一个批次的页面任务
|
|
@@ -96156,13 +96158,13 @@ var init_worker_state = __esm({
|
|
|
96156
96158
|
}
|
|
96157
96159
|
const startTime = performance.now();
|
|
96158
96160
|
const errors2 = [];
|
|
96159
|
-
|
|
96161
|
+
log61.info(`\u{1F4E6} Processing batch: ${pageTasks.length} tasks`);
|
|
96160
96162
|
try {
|
|
96161
96163
|
setPageFilter(pageTasks);
|
|
96162
|
-
|
|
96164
|
+
log61.debug(`Filter set for ${pageTasks.length} tasks`);
|
|
96163
96165
|
const { generateStaticSite: generateStaticSite2 } = await Promise.resolve().then(() => (init_ssg(), ssg_exports));
|
|
96164
96166
|
await generateStaticSite2(this.projDir, this.moduleDir);
|
|
96165
|
-
|
|
96167
|
+
log61.debug("\u2705 Tasks processed (filtered)");
|
|
96166
96168
|
const duration = performance.now() - startTime;
|
|
96167
96169
|
const result = {
|
|
96168
96170
|
success: true,
|
|
@@ -96171,12 +96173,12 @@ var init_worker_state = __esm({
|
|
|
96171
96173
|
duration,
|
|
96172
96174
|
errors: errors2
|
|
96173
96175
|
};
|
|
96174
|
-
|
|
96176
|
+
log61.info(`\u2705 Batch processed: ${pageTasks.length} tasks in ${duration.toFixed(2)}ms`);
|
|
96175
96177
|
return result;
|
|
96176
96178
|
} catch (error) {
|
|
96177
96179
|
const message = error instanceof Error ? error.message : String(error);
|
|
96178
96180
|
const errorMsg = `Batch processing failed: ${message}`;
|
|
96179
|
-
|
|
96181
|
+
log61.error(`\u274C ${errorMsg}`);
|
|
96180
96182
|
errors2.push(errorMsg);
|
|
96181
96183
|
const duration = performance.now() - startTime;
|
|
96182
96184
|
return {
|
|
@@ -96194,7 +96196,7 @@ var init_worker_state = __esm({
|
|
|
96194
96196
|
* 清理资源
|
|
96195
96197
|
*/
|
|
96196
96198
|
async cleanup() {
|
|
96197
|
-
|
|
96199
|
+
log61.info("\u{1F9F9} Cleaning up worker resources...");
|
|
96198
96200
|
this.initialized = false;
|
|
96199
96201
|
}
|
|
96200
96202
|
/**
|
|
@@ -96231,7 +96233,7 @@ async function handleWorkerTask(task) {
|
|
|
96231
96233
|
}
|
|
96232
96234
|
} catch (error) {
|
|
96233
96235
|
const message = error instanceof Error ? error.message : String(error);
|
|
96234
|
-
|
|
96236
|
+
log62.error(`Worker task failed: ${message}`);
|
|
96235
96237
|
return {
|
|
96236
96238
|
success: false,
|
|
96237
96239
|
error: message
|
|
@@ -96245,7 +96247,7 @@ async function handleInit(task) {
|
|
|
96245
96247
|
error: "Missing projDir or moduleDir for init task"
|
|
96246
96248
|
};
|
|
96247
96249
|
}
|
|
96248
|
-
|
|
96250
|
+
log62.info("\u{1F527} Initializing worker...");
|
|
96249
96251
|
workerState = new WorkerState(task.projDir, task.moduleDir);
|
|
96250
96252
|
await workerState.initialize();
|
|
96251
96253
|
return {
|
|
@@ -96299,13 +96301,13 @@ async function handleCleanup() {
|
|
|
96299
96301
|
data: { message: "Worker cleaned up successfully" }
|
|
96300
96302
|
};
|
|
96301
96303
|
}
|
|
96302
|
-
var
|
|
96304
|
+
var log62, workerState;
|
|
96303
96305
|
var init_worker_main = __esm({
|
|
96304
96306
|
"internal/application/worker/worker-main.ts"() {
|
|
96305
96307
|
"use strict";
|
|
96306
96308
|
init_worker_state();
|
|
96307
96309
|
init_log();
|
|
96308
|
-
|
|
96310
|
+
log62 = getDomainLogger("application", { component: "worker-main" });
|
|
96309
96311
|
workerState = null;
|
|
96310
96312
|
}
|
|
96311
96313
|
});
|
|
@@ -96316,14 +96318,14 @@ __export2(pool_manager_exports, {
|
|
|
96316
96318
|
WorkerPoolManager: () => WorkerPoolManager
|
|
96317
96319
|
});
|
|
96318
96320
|
module.exports = __toCommonJS2(pool_manager_exports);
|
|
96319
|
-
var workerpool, os2,
|
|
96321
|
+
var workerpool, os2, log63, WorkerPoolManager;
|
|
96320
96322
|
var init_pool_manager = __esm({
|
|
96321
96323
|
"internal/application/worker/pool-manager.ts"() {
|
|
96322
96324
|
init_log();
|
|
96323
96325
|
workerpool = __toESM2(require("workerpool"));
|
|
96324
96326
|
init_worker_main();
|
|
96325
96327
|
os2 = __toESM2(require("os"));
|
|
96326
|
-
|
|
96328
|
+
log63 = getDomainLogger("application", { component: "pool-manager" });
|
|
96327
96329
|
WorkerPoolManager = class {
|
|
96328
96330
|
pool = null;
|
|
96329
96331
|
environment;
|
|
@@ -96331,7 +96333,7 @@ var init_pool_manager = __esm({
|
|
|
96331
96333
|
constructor(config2 = {}) {
|
|
96332
96334
|
this.environment = this.detectEnvironment();
|
|
96333
96335
|
this.workerCount = config2.workerCount || this.calculateOptimalWorkerCount();
|
|
96334
|
-
|
|
96336
|
+
log63.info("Worker pool manager created", {
|
|
96335
96337
|
environment: this.environment,
|
|
96336
96338
|
workerCount: this.workerCount
|
|
96337
96339
|
});
|
|
@@ -96344,20 +96346,20 @@ var init_pool_manager = __esm({
|
|
|
96344
96346
|
*/
|
|
96345
96347
|
detectEnvironment() {
|
|
96346
96348
|
if (typeof Worker !== "undefined" && typeof globalThis.window !== "undefined") {
|
|
96347
|
-
|
|
96349
|
+
log63.debug("Detected Web Worker support (browser/Electron environment)");
|
|
96348
96350
|
return "browser";
|
|
96349
96351
|
}
|
|
96350
96352
|
if (typeof process !== "undefined" && process.versions && process.versions.node) {
|
|
96351
96353
|
try {
|
|
96352
96354
|
require.resolve("worker_threads");
|
|
96353
|
-
|
|
96355
|
+
log63.debug("Detected Node.js Worker Threads support");
|
|
96354
96356
|
return "node";
|
|
96355
96357
|
} catch {
|
|
96356
|
-
|
|
96358
|
+
log63.debug("Node.js detected but worker_threads unavailable, falling back to browser mode");
|
|
96357
96359
|
return "browser";
|
|
96358
96360
|
}
|
|
96359
96361
|
}
|
|
96360
|
-
|
|
96362
|
+
log63.debug("Using browser mode as default");
|
|
96361
96363
|
return "browser";
|
|
96362
96364
|
}
|
|
96363
96365
|
/**
|
|
@@ -96380,11 +96382,11 @@ var init_pool_manager = __esm({
|
|
|
96380
96382
|
*/
|
|
96381
96383
|
async initialize() {
|
|
96382
96384
|
if (this.pool) {
|
|
96383
|
-
|
|
96385
|
+
log63.warn("Worker pool already initialized");
|
|
96384
96386
|
return;
|
|
96385
96387
|
}
|
|
96386
96388
|
const startTime = performance.now();
|
|
96387
|
-
|
|
96389
|
+
log63.info(`\u{1F680} Initializing ${this.environment} worker pool with ${this.workerCount} workers...`);
|
|
96388
96390
|
try {
|
|
96389
96391
|
if (this.environment === "node") {
|
|
96390
96392
|
await this.initializeNodePool();
|
|
@@ -96392,25 +96394,25 @@ var init_pool_manager = __esm({
|
|
|
96392
96394
|
await this.initializeBrowserPool();
|
|
96393
96395
|
}
|
|
96394
96396
|
const duration = performance.now() - startTime;
|
|
96395
|
-
|
|
96397
|
+
log63.info(`\u2705 Worker pool initialized in ${duration.toFixed(2)}ms`);
|
|
96396
96398
|
} catch (error) {
|
|
96397
96399
|
const message = error instanceof Error ? error.message : String(error);
|
|
96398
96400
|
if (this.environment === "node") {
|
|
96399
|
-
|
|
96400
|
-
|
|
96401
|
+
log63.warn(`\u274C Node worker pool initialization failed: ${message}`);
|
|
96402
|
+
log63.warn("\u{1F504} Attempting fallback to browser workers...");
|
|
96401
96403
|
try {
|
|
96402
96404
|
this.environment = "browser";
|
|
96403
96405
|
await this.initializeBrowserPool();
|
|
96404
96406
|
const duration = performance.now() - startTime;
|
|
96405
|
-
|
|
96407
|
+
log63.info(`\u2705 Successfully initialized browser worker pool as fallback in ${duration.toFixed(2)}ms`);
|
|
96406
96408
|
return;
|
|
96407
96409
|
} catch (fallbackError) {
|
|
96408
96410
|
const fallbackMessage = fallbackError instanceof Error ? fallbackError.message : String(fallbackError);
|
|
96409
|
-
|
|
96411
|
+
log63.error(`\u274C Fallback to browser workers also failed: ${fallbackMessage}`);
|
|
96410
96412
|
throw new Error(`Worker pool initialization failed. Node: ${message}, Browser: ${fallbackMessage}`);
|
|
96411
96413
|
}
|
|
96412
96414
|
}
|
|
96413
|
-
|
|
96415
|
+
log63.error(`\u274C Failed to initialize worker pool: ${message}`);
|
|
96414
96416
|
throw error;
|
|
96415
96417
|
}
|
|
96416
96418
|
}
|
|
@@ -96420,13 +96422,13 @@ var init_pool_manager = __esm({
|
|
|
96420
96422
|
async initializeNodePool() {
|
|
96421
96423
|
const path29 = require("path");
|
|
96422
96424
|
const workerPath = path29.join(__dirname, "worker", "worker-node.js");
|
|
96423
|
-
|
|
96425
|
+
log63.debug(`Initializing Node.js worker pool with path: ${workerPath}`);
|
|
96424
96426
|
this.pool = workerpool.pool(workerPath, {
|
|
96425
96427
|
minWorkers: this.workerCount,
|
|
96426
96428
|
maxWorkers: this.workerCount,
|
|
96427
96429
|
workerType: "thread"
|
|
96428
96430
|
});
|
|
96429
|
-
|
|
96431
|
+
log63.debug(`Node.js worker pool created with ${this.workerCount} workers`, {
|
|
96430
96432
|
workerPath
|
|
96431
96433
|
});
|
|
96432
96434
|
}
|
|
@@ -96444,7 +96446,7 @@ var init_pool_manager = __esm({
|
|
|
96444
96446
|
// 使用 Web Workers
|
|
96445
96447
|
});
|
|
96446
96448
|
this.pool.proxy().then((proxy) => {
|
|
96447
|
-
|
|
96449
|
+
log63.debug(`Browser worker pool created with ${this.workerCount} workers`);
|
|
96448
96450
|
});
|
|
96449
96451
|
}
|
|
96450
96452
|
/**
|
|
@@ -96464,7 +96466,7 @@ var init_pool_manager = __esm({
|
|
|
96464
96466
|
}
|
|
96465
96467
|
} catch (error) {
|
|
96466
96468
|
const message = error instanceof Error ? error.message : String(error);
|
|
96467
|
-
|
|
96469
|
+
log63.error(`Worker task execution failed: ${message}`);
|
|
96468
96470
|
return {
|
|
96469
96471
|
success: false,
|
|
96470
96472
|
error: message
|
|
@@ -96489,13 +96491,13 @@ var init_pool_manager = __esm({
|
|
|
96489
96491
|
*/
|
|
96490
96492
|
async terminate() {
|
|
96491
96493
|
if (!this.pool) {
|
|
96492
|
-
|
|
96494
|
+
log63.warn("Worker pool already terminated");
|
|
96493
96495
|
return;
|
|
96494
96496
|
}
|
|
96495
|
-
|
|
96497
|
+
log63.info("\u{1F9F9} Terminating worker pool...");
|
|
96496
96498
|
await this.pool.terminate();
|
|
96497
96499
|
this.pool = null;
|
|
96498
|
-
|
|
96500
|
+
log63.info("\u2705 Worker pool terminated");
|
|
96499
96501
|
}
|
|
96500
96502
|
};
|
|
96501
96503
|
}
|