@mdfriday/foundry 25.8.5 → 25.8.6

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.
@@ -1,4 +1,4 @@
1
- import { FileChangeEvent, FileWatcher, WatcherConfig } from './types';
1
+ import { FileChangeEvent, FileWatcher, WatcherConfig, DiagnosticResult } from './types';
2
2
  export declare class ContentFileWatcher implements FileWatcher {
3
3
  private config;
4
4
  private watcher;
@@ -6,6 +6,7 @@ export declare class ContentFileWatcher implements FileWatcher {
6
6
  private batchTimer;
7
7
  private readonly batchDelay;
8
8
  private callbacks;
9
+ private readonly isElectron;
9
10
  constructor(config: WatcherConfig);
10
11
  startWatching(): Promise<void>;
11
12
  onFileChange(callback: (events: FileChangeEvent[]) => Promise<void>): void;
@@ -16,5 +17,9 @@ export declare class ContentFileWatcher implements FileWatcher {
16
17
  private scheduleBatch;
17
18
  private deduplicateEvents;
18
19
  stopWatching(): Promise<void>;
20
+ /**
21
+ * 诊断方法:用于调试 Obsidian 环境中的文件监控问题
22
+ */
23
+ diagnose(): Promise<DiagnosticResult>;
19
24
  }
20
25
  //# sourceMappingURL=content-file-watcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-file-watcher.d.ts","sourceRoot":"","sources":["../../../../pkg/web/watcher/content-file-watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAMnE,qBAAa,kBAAmB,YAAW,WAAW;IAOxC,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,SAAS,CAA0D;gBAEvD,MAAM,EAAE,aAAa;IAInC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCpC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI1E,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,iBAAiB;IAcnB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAcpC"}
1
+ {"version":3,"file":"content-file-watcher.d.ts","sourceRoot":"","sources":["../../../../pkg/web/watcher/content-file-watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAA;AAkCrF,qBAAa,kBAAmB,YAAW,WAAW;IAQxC,OAAO,CAAC,MAAM;IAP1B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAEhB,MAAM,EAAE,aAAa;IAYnC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgHpC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAK1E,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,iBAAiB;IAcnB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAgE5C"}
@@ -38,6 +38,30 @@ const chokidar = __importStar(require("chokidar"));
38
38
  const path = __importStar(require("path"));
39
39
  const log_1 = require("../../log");
40
40
  const log = (0, log_1.getDomainLogger)('web', { component: 'content-file-watcher' });
41
+ // 环境检测函数
42
+ function isElectronEnvironment() {
43
+ // 检查是否在 Electron 环境中
44
+ if (typeof globalThis !== 'undefined' && globalThis.window && globalThis.window.process && globalThis.window.process.type) {
45
+ return true;
46
+ }
47
+ // 检查是否有 electron 模块
48
+ try {
49
+ require('electron');
50
+ return true;
51
+ }
52
+ catch {
53
+ // electron 模块不存在
54
+ }
55
+ // 检查环境变量
56
+ if (typeof process !== 'undefined' && process.env && (process.env.ELECTRON_RUN_AS_NODE || process.env.ELECTRON_NO_ATTACH_CONSOLE)) {
57
+ return true;
58
+ }
59
+ // 检查 process.versions.electron
60
+ if (typeof process !== 'undefined' && process.versions && process.versions.electron) {
61
+ return true;
62
+ }
63
+ return false;
64
+ }
41
65
  class ContentFileWatcher {
42
66
  constructor(config) {
43
67
  this.config = config;
@@ -46,12 +70,43 @@ class ContentFileWatcher {
46
70
  this.batchTimer = null;
47
71
  this.callbacks = [];
48
72
  this.batchDelay = config.batchDelay || 500; // 与 Golang 版本保持一致的 500ms
73
+ this.isElectron = isElectronEnvironment();
74
+ log.info('ContentFileWatcher initialized', {
75
+ contentDir: config.contentDir,
76
+ batchDelay: this.batchDelay,
77
+ isElectron: this.isElectron,
78
+ ignorePatterns: config.ignorePatterns
79
+ });
49
80
  }
50
81
  async startWatching() {
51
82
  if (this.watcher) {
52
83
  await this.stopWatching();
53
84
  }
54
- this.watcher = chokidar.watch(this.config.contentDir, {
85
+ log.info('Starting file watcher', {
86
+ contentDir: this.config.contentDir,
87
+ isElectron: this.isElectron
88
+ });
89
+ // 检查目录是否存在
90
+ try {
91
+ const fs = require('fs');
92
+ const stat = await fs.promises.stat(this.config.contentDir);
93
+ log.info('Target directory info', {
94
+ path: this.config.contentDir,
95
+ isDirectory: stat.isDirectory(),
96
+ isSymbolicLink: stat.isSymbolicLink(),
97
+ size: stat.size,
98
+ mode: stat.mode
99
+ });
100
+ }
101
+ catch (error) {
102
+ log.error('Failed to stat content directory', {
103
+ contentDir: this.config.contentDir,
104
+ error: error?.message || String(error)
105
+ });
106
+ throw new Error(`Content directory does not exist or is not accessible: ${this.config.contentDir}`);
107
+ }
108
+ // 针对 Electron 环境的特殊配置
109
+ const watcherOptions = {
55
110
  ignored: [
56
111
  /(^|[\/\\])\../, // 隐藏文件
57
112
  /\.tmp$/, // 临时文件
@@ -64,29 +119,81 @@ class ContentFileWatcher {
64
119
  ignoreInitial: true,
65
120
  followSymlinks: true,
66
121
  awaitWriteFinish: {
67
- stabilityThreshold: 100,
68
- pollInterval: 50
69
- }
70
- });
122
+ stabilityThreshold: this.isElectron ? 200 : 100, // Electron 环境中增加稳定性阈值
123
+ pollInterval: this.isElectron ? 100 : 50
124
+ },
125
+ // Electron 环境中的额外配置
126
+ ...(this.isElectron && {
127
+ usePolling: false, // 在 Electron 中优先使用原生事件
128
+ atomic: true, // 确保原子性写入检测
129
+ alwaysStat: true, // 总是获取文件状态
130
+ depth: 10 // 限制递归深度
131
+ })
132
+ };
133
+ log.info('Chokidar watcher options', watcherOptions);
134
+ this.watcher = chokidar.watch(this.config.contentDir, watcherOptions);
135
+ // 添加详细的事件监听和日志记录
71
136
  this.watcher
72
- .on('add', (filePath) => this.queueEvent(filePath, 'created'))
73
- .on('change', (filePath) => this.queueEvent(filePath, 'modified'))
74
- .on('unlink', (filePath) => this.queueEvent(filePath, 'deleted'))
137
+ .on('add', (filePath) => {
138
+ log.debug('File added', { filePath });
139
+ this.queueEvent(filePath, 'created');
140
+ })
141
+ .on('change', (filePath) => {
142
+ log.debug('File changed', { filePath });
143
+ this.queueEvent(filePath, 'modified');
144
+ })
145
+ .on('unlink', (filePath) => {
146
+ log.debug('File removed', { filePath });
147
+ this.queueEvent(filePath, 'deleted');
148
+ })
75
149
  .on('error', (error) => {
76
- log.error('File watcher error:', error);
150
+ log.error('File watcher error:', {
151
+ error: error?.message || String(error),
152
+ stack: error?.stack,
153
+ isElectron: this.isElectron
154
+ });
155
+ })
156
+ .on('ready', () => {
157
+ log.info('File watcher ready', {
158
+ contentDir: this.config.contentDir,
159
+ watchedPaths: this.watcher?.getWatched()
160
+ });
161
+ });
162
+ // 等待 watcher 准备就绪
163
+ return new Promise((resolve, reject) => {
164
+ if (!this.watcher) {
165
+ reject(new Error('Watcher failed to initialize'));
166
+ return;
167
+ }
168
+ this.watcher.on('ready', () => {
169
+ log.info('File watcher successfully started and ready');
170
+ resolve();
171
+ });
172
+ this.watcher.on('error', (error) => {
173
+ log.error('File watcher failed to start', error);
174
+ reject(error);
175
+ });
176
+ // 超时保护
177
+ setTimeout(() => {
178
+ log.warn('File watcher initialization timeout');
179
+ resolve(); // 即使超时也继续,但记录警告
180
+ }, 5000);
77
181
  });
78
182
  }
79
183
  onFileChange(callback) {
80
184
  this.callbacks.push(callback);
185
+ log.debug('File change callback registered', { callbackCount: this.callbacks.length });
81
186
  }
82
187
  queueEvent(filePath, eventType) {
83
188
  const normalizedPath = path.normalize(filePath);
84
189
  log.info("File change detected:", {
85
190
  filePath: normalizedPath,
86
- eventType
191
+ eventType,
192
+ isElectron: this.isElectron
87
193
  });
88
194
  // 只监控 .md 文件和图片文件
89
195
  if (!this.isRelevantFile(normalizedPath)) {
196
+ log.debug('File ignored (not relevant)', { filePath: normalizedPath });
90
197
  return;
91
198
  }
92
199
  const event = {
@@ -97,6 +204,10 @@ class ContentFileWatcher {
97
204
  isImage: this.isImageFile(normalizedPath)
98
205
  };
99
206
  this.eventQueue.push(event);
207
+ log.debug('Event queued', {
208
+ event,
209
+ queueLength: this.eventQueue.length
210
+ });
100
211
  this.scheduleBatch();
101
212
  }
102
213
  isRelevantFile(filePath) {
@@ -154,6 +265,71 @@ class ContentFileWatcher {
154
265
  this.eventQueue = [];
155
266
  this.callbacks = [];
156
267
  }
268
+ /**
269
+ * 诊断方法:用于调试 Obsidian 环境中的文件监控问题
270
+ */
271
+ async diagnose() {
272
+ const diagnosis = {
273
+ environment: this.isElectron ? 'Electron/Obsidian' : 'Node.js',
274
+ contentDir: this.config.contentDir,
275
+ dirExists: false,
276
+ watcherStatus: this.watcher ? 'initialized' : 'not initialized'
277
+ };
278
+ // 检查目录状态
279
+ try {
280
+ const fs = require('fs');
281
+ const stat = await fs.promises.stat(this.config.contentDir);
282
+ diagnosis.dirExists = true;
283
+ diagnosis.dirStats = {
284
+ isDirectory: stat.isDirectory(),
285
+ isSymbolicLink: stat.isSymbolicLink(),
286
+ size: stat.size,
287
+ mode: stat.mode,
288
+ uid: stat.uid,
289
+ gid: stat.gid
290
+ };
291
+ // 检查权限
292
+ try {
293
+ await fs.promises.access(this.config.contentDir, fs.constants.R_OK | fs.constants.W_OK);
294
+ diagnosis.permissions = 'read/write';
295
+ }
296
+ catch {
297
+ try {
298
+ await fs.promises.access(this.config.contentDir, fs.constants.R_OK);
299
+ diagnosis.permissions = 'read-only';
300
+ }
301
+ catch {
302
+ diagnosis.permissions = 'no access';
303
+ }
304
+ }
305
+ }
306
+ catch (error) {
307
+ diagnosis.dirExists = false;
308
+ diagnosis.error = error?.message || String(error);
309
+ }
310
+ // 获取监控路径信息
311
+ if (this.watcher) {
312
+ diagnosis.watchedPaths = this.watcher.getWatched();
313
+ }
314
+ // 获取版本信息
315
+ try {
316
+ const chokidarPkg = require('chokidar/package.json');
317
+ diagnosis.chokidarVersion = chokidarPkg.version;
318
+ }
319
+ catch {
320
+ // 忽略错误
321
+ }
322
+ if (typeof process !== 'undefined' && process.versions) {
323
+ if (process.versions.electron) {
324
+ diagnosis.electronVersion = process.versions.electron;
325
+ }
326
+ if (process.versions.node) {
327
+ diagnosis.nodeVersion = process.versions.node;
328
+ }
329
+ }
330
+ log.info('File watcher diagnosis', diagnosis);
331
+ return diagnosis;
332
+ }
157
333
  }
158
334
  exports.ContentFileWatcher = ContentFileWatcher;
159
335
  //# sourceMappingURL=content-file-watcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-file-watcher.js","sourceRoot":"","sources":["../../../../pkg/web/watcher/content-file-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-file-watcher.js","sourceRoot":"","sources":["../../../../pkg/web/watcher/content-file-watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 测试文件监控器的诊断脚本
3
+ * 用于调试 Obsidian 插件环境中的问题
4
+ */
5
+ declare function testFileWatcher(contentDir: string): Promise<void>;
6
+ export { testFileWatcher };
7
+ //# sourceMappingURL=test-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-watcher.d.ts","sourceRoot":"","sources":["../../../../pkg/web/watcher/test-watcher.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,iBAAe,eAAe,CAAC,UAAU,EAAE,MAAM,iBA4ChD;AAqBD,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.testFileWatcher = testFileWatcher;
37
+ const content_file_watcher_1 = require("./content-file-watcher");
38
+ const path = __importStar(require("path"));
39
+ /**
40
+ * 测试文件监控器的诊断脚本
41
+ * 用于调试 Obsidian 插件环境中的问题
42
+ */
43
+ async function testFileWatcher(contentDir) {
44
+ console.log('=== File Watcher Diagnostic Test ===');
45
+ console.log(`Testing directory: ${contentDir}`);
46
+ const config = {
47
+ contentDir: contentDir,
48
+ batchDelay: 500
49
+ };
50
+ const watcher = new content_file_watcher_1.ContentFileWatcher(config);
51
+ // 注册回调
52
+ watcher.onFileChange(async (events) => {
53
+ console.log('File change events received:', events);
54
+ });
55
+ try {
56
+ // 运行诊断
57
+ console.log('\n--- Pre-start Diagnosis ---');
58
+ const preDiagnosis = await watcher.diagnose();
59
+ console.log(JSON.stringify(preDiagnosis, null, 2));
60
+ // 启动监控
61
+ console.log('\n--- Starting Watcher ---');
62
+ await watcher.startWatching();
63
+ // 运行诊断
64
+ console.log('\n--- Post-start Diagnosis ---');
65
+ const postDiagnosis = await watcher.diagnose();
66
+ console.log(JSON.stringify(postDiagnosis, null, 2));
67
+ // 等待一段时间以观察文件变化
68
+ console.log('\n--- Monitoring for 30 seconds ---');
69
+ console.log('Please create, modify, or delete .md files in the watched directory...');
70
+ await new Promise(resolve => setTimeout(resolve, 30000));
71
+ // 停止监控
72
+ console.log('\n--- Stopping Watcher ---');
73
+ await watcher.stopWatching();
74
+ }
75
+ catch (error) {
76
+ console.error('Test failed:', error);
77
+ }
78
+ }
79
+ // 主函数
80
+ async function main() {
81
+ const args = process.argv.slice(2);
82
+ if (args.length === 0) {
83
+ console.log('Usage: ts-node test-watcher.ts <content-directory>');
84
+ console.log('Example: ts-node test-watcher.ts /path/to/obsidian/vault');
85
+ process.exit(1);
86
+ }
87
+ const contentDir = path.resolve(args[0]);
88
+ await testFileWatcher(contentDir);
89
+ }
90
+ // 如果直接运行此脚本
91
+ if (require.main === module) {
92
+ main().catch(console.error);
93
+ }
94
+ //# sourceMappingURL=test-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-watcher.js","sourceRoot":"","sources":["../../../../pkg/web/watcher/test-watcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyES,0CAAe;AAzExB,iEAA2D;AAE3D,2CAA4B;AAE5B;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,UAAkB;IAC/C,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACnD,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAkB;QAC5B,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,GAAG;KAChB,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,CAAA;IAE9C,OAAO;IACP,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,OAAO;QACP,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAElD,OAAO;QACP,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;QACzC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAA;QAE7B,OAAO;QACP,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC7C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAEnD,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAA;QAErF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAExD,OAAO;QACP,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;QACzC,MAAM,OAAO,CAAC,YAAY,EAAE,CAAA;IAE9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED,MAAM;AACN,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAElC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC;AAED,YAAY;AACZ,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
@@ -10,9 +10,30 @@ export interface WatcherConfig {
10
10
  batchDelay?: number;
11
11
  ignorePatterns?: string[];
12
12
  }
13
+ export interface DiagnosticResult {
14
+ environment: string;
15
+ contentDir: string;
16
+ dirExists: boolean;
17
+ dirStats?: {
18
+ isDirectory: boolean;
19
+ isSymbolicLink: boolean;
20
+ size: number;
21
+ mode: number;
22
+ uid?: number;
23
+ gid?: number;
24
+ };
25
+ permissions?: 'read/write' | 'read-only' | 'no access';
26
+ watcherStatus: 'initialized' | 'not initialized';
27
+ watchedPaths?: any;
28
+ chokidarVersion?: string;
29
+ electronVersion?: string;
30
+ nodeVersion?: string;
31
+ error?: string;
32
+ }
13
33
  export interface FileWatcher {
14
34
  startWatching(): Promise<void>;
15
35
  stopWatching(): Promise<void>;
16
36
  onFileChange(callback: (events: FileChangeEvent[]) => Promise<void>): void;
37
+ diagnose(): Promise<DiagnosticResult>;
17
38
  }
18
39
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../pkg/web/watcher/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC3E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../pkg/web/watcher/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,OAAO,CAAA;QACpB,cAAc,EAAE,OAAO,CAAA;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IACD,WAAW,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,CAAA;IACtD,aAAa,EAAE,aAAa,GAAG,iBAAiB,CAAA;IAChD,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1E,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdfriday/foundry",
3
- "version": "25.8.5",
3
+ "version": "25.8.6",
4
4
  "description": "The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",