@mdfriday/foundry 26.2.3 → 26.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ import { PageTask } from '@pkg/page-filter';
2
+ export declare class BatchTaskQueue {
3
+ private queue;
4
+ private currentIndex;
5
+ private readonly totalBatches;
6
+ constructor(batches: PageTask[][]);
7
+ nextBatch(): PageTask[] | null;
8
+ getProgress(): {
9
+ completed: number;
10
+ total: number;
11
+ percentage: number;
12
+ };
13
+ hasMore(): boolean;
14
+ getRemainingCount(): number;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { SSGProgressCallback } from './ssg';
2
+ import { MarkdownRenderer } from "@internal/domain/markdown";
3
+ import { HttpClient } from "@internal/domain/module";
4
+ export interface ParallelSSGStats {
5
+ totalPages: number;
6
+ totalBatches: number;
7
+ workerCount: number;
8
+ batchSize: number;
9
+ totalDuration: number;
10
+ parallelSpeedup: number;
11
+ pagesPerSecond: number;
12
+ }
13
+ export declare function processSSGParallel(projDir: string, modulesDir: string, markdown?: MarkdownRenderer, onProgress?: SSGProgressCallback, httpClient?: HttpClient): Promise<ParallelSSGStats>;
@@ -5,6 +5,7 @@ import { Content } from "@internal/domain/content";
5
5
  import { Site } from "@internal/domain/site/entity/site";
6
6
  import { Resources } from "@internal/domain/resources/entity/resources";
7
7
  import { MarkdownRenderer } from "@internal/domain/markdown";
8
+ import { PageTask } from "@pkg/page-filter";
8
9
  export interface DomainInstances {
9
10
  site: Site;
10
11
  content: Content;
@@ -33,3 +34,4 @@ export interface SSGProgressCallback {
33
34
  export declare function generateStaticSiteWithProgress(projDir: string, modulesDir: string, markdown?: MarkdownRenderer, onProgress?: SSGProgressCallback, httpClient?: HttpClient): Promise<DomainInstances>;
34
35
  export declare function processSSGWithProgress(projDir: string, modulesDir: string, markdown?: MarkdownRenderer, onProgress?: SSGProgressCallback, httpClient?: HttpClient): Promise<void>;
35
36
  export declare function serveSSG(projDir: string, modulesDir: string, markdown?: MarkdownRenderer, onProgress?: SSGProgressCallback, httpClient?: HttpClient): Promise<DomainInstances>;
37
+ export declare function collectAllPageTasks(projDir: string, modulesDir: string, markdown?: MarkdownRenderer, onProgress?: SSGProgressCallback, httpClient?: HttpClient): Promise<PageTask[]>;
@@ -0,0 +1,24 @@
1
+ import { WorkerTask, WorkerResponse } from './worker-main';
2
+ export interface WorkerPoolConfig {
3
+ workerCount?: number;
4
+ maxQueueSize?: number;
5
+ }
6
+ export type WorkerEnvironment = 'node' | 'browser';
7
+ export declare class WorkerPoolManager {
8
+ private pool;
9
+ private environment;
10
+ private workerCount;
11
+ constructor(config?: WorkerPoolConfig);
12
+ private detectEnvironment;
13
+ private calculateOptimalWorkerCount;
14
+ initialize(): Promise<void>;
15
+ private initializeNodePool;
16
+ private initializeBrowserPool;
17
+ exec(task: WorkerTask): Promise<WorkerResponse>;
18
+ getStats(): {
19
+ environment: WorkerEnvironment;
20
+ workerCount: number;
21
+ poolStats: any;
22
+ } | null;
23
+ terminate(): Promise<void>;
24
+ }
@@ -0,0 +1,5 @@
1
+ declare const self: {
2
+ addEventListener: (type: string, listener: (event: any) => void) => void;
3
+ postMessage: (message: any) => void;
4
+ importScripts?: (...urls: string[]) => void;
5
+ };
@@ -0,0 +1,14 @@
1
+ import { PageTask } from '@pkg/page-filter';
2
+ export type WorkerTaskType = 'init' | 'process-batch' | 'stats' | 'cleanup';
3
+ export interface WorkerTask {
4
+ type: WorkerTaskType;
5
+ projDir?: string;
6
+ moduleDir?: string;
7
+ pageTasks?: PageTask[];
8
+ }
9
+ export interface WorkerResponse {
10
+ success: boolean;
11
+ data?: any;
12
+ error?: string | undefined;
13
+ }
14
+ export declare function handleWorkerTask(task: WorkerTask): Promise<WorkerResponse>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { PageTask } from '@pkg/page-filter';
2
+ export interface BatchRenderResult {
3
+ success: boolean;
4
+ processedCount: number;
5
+ totalCount: number;
6
+ duration: number;
7
+ errors: string[];
8
+ }
9
+ export declare class WorkerState {
10
+ private projDir;
11
+ private moduleDir;
12
+ private initialized;
13
+ constructor(projDir: string, moduleDir: string);
14
+ initialize(): Promise<void>;
15
+ processBatch(pageTasks: PageTask[]): Promise<BatchRenderResult>;
16
+ cleanup(): Promise<void>;
17
+ getStats(): {
18
+ initialized: boolean;
19
+ projDir: string;
20
+ moduleDir: string;
21
+ };
22
+ }
@@ -8,6 +8,7 @@ export declare class Content {
8
8
  converter: Converter;
9
9
  pageMap: PageMap;
10
10
  translator: Translator | undefined;
11
+ private pageCollected;
11
12
  constructor(fs: FsService, converter: Converter, pageMap: PageMap, translator?: Translator);
12
13
  setTemplateSvc(templateSvc: Template): void;
13
14
  renderString(ctx: any, ...args: any[]): Promise<string>;
@@ -47,12 +47,12 @@ export declare class Site {
47
47
  RegularPages(): Promise<Page[]>;
48
48
  constructor(configSvc: ConfigService, contentSvc: ContentService, translationSvc: TranslationService, languageSvc: LanguageService, sitemap: SitemapService, staticCopySvc: FsService, publisher: Publisher, author: Author, organization: Organization, compiler: Compiler, url: URL, ref: Ref | null, language: Language, navigation: Navigation | null, title: string);
49
49
  build(template: Template): Promise<void>;
50
+ renderAllLanguages(): Promise<void>;
50
51
  buildWithProgress(template: Template, onProgress?: (progress: {
51
52
  currentPage: number;
52
53
  totalPages: number;
53
54
  }) => void): Promise<void>;
54
55
  private setup;
55
- renderAllLanguages(): Promise<void>;
56
56
  render(): Promise<void>;
57
57
  private renderWithProgress;
58
58
  private renderPages;
@@ -0,0 +1,18 @@
1
+ export interface PageTask {
2
+ language: string;
3
+ pagePath: string;
4
+ }
5
+ declare class PageFilterManager {
6
+ private filterSet;
7
+ private currentLanguage;
8
+ setFilter(tasks: PageTask[]): void;
9
+ setCurrentLanguage(language: string): void;
10
+ clearFilter(): void;
11
+ shouldProcess(language: string, pagePath: string): boolean;
12
+ getFilterSize(): number;
13
+ }
14
+ export declare const pageFilter: PageFilterManager;
15
+ export declare function setPageFilter(tasks: PageTask[]): void;
16
+ export declare function clearPageFilter(): void;
17
+ export declare function shouldProcessPage(language: string, pagePath: string): boolean;
18
+ export {};
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Node.js Worker 启动器
3
+ * 用于从 ES Module 环境启动 CommonJS Worker
4
+ *
5
+ * 这个文件被 workerpool 用来启动 worker-node.js
6
+ */
7
+ import workerpool from 'workerpool';
8
+ import { fileURLToPath } from 'url';
9
+ import { dirname, resolve } from 'path';
10
+
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+
14
+ // 动态导入编译后的 worker
15
+ const workerPath = resolve(__dirname, 'worker-node.js');
16
+
17
+ // 创建 workerpool worker
18
+ workerpool.worker({
19
+ processTask: async (task) => {
20
+ const worker = await import(workerPath);
21
+ return await worker.processTask(task);
22
+ }
23
+ });