@warlock.js/core 4.0.18 → 4.0.21

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.
Files changed (52) hide show
  1. package/esm/cli/cli-commands.manager.d.ts.map +1 -1
  2. package/esm/cli/cli-commands.manager.js +5 -4
  3. package/esm/cli/cli-commands.manager.js.map +1 -1
  4. package/esm/config/config-loader.d.ts.map +1 -1
  5. package/esm/config/config-loader.js +3 -2
  6. package/esm/config/config-loader.js.map +1 -1
  7. package/esm/dev2-server/development-server.d.ts.map +1 -1
  8. package/esm/dev2-server/development-server.js +1 -4
  9. package/esm/dev2-server/development-server.js.map +1 -1
  10. package/esm/dev2-server/file-event-handler.d.ts +115 -18
  11. package/esm/dev2-server/file-event-handler.d.ts.map +1 -1
  12. package/esm/dev2-server/file-event-handler.js +177 -63
  13. package/esm/dev2-server/file-event-handler.js.map +1 -1
  14. package/esm/dev2-server/file-manager.d.ts +301 -52
  15. package/esm/dev2-server/file-manager.d.ts.map +1 -1
  16. package/esm/dev2-server/file-manager.js +409 -203
  17. package/esm/dev2-server/file-manager.js.map +1 -1
  18. package/esm/dev2-server/file-operations.d.ts +161 -23
  19. package/esm/dev2-server/file-operations.d.ts.map +1 -1
  20. package/esm/dev2-server/file-operations.js +217 -80
  21. package/esm/dev2-server/file-operations.js.map +1 -1
  22. package/esm/dev2-server/files-orchestrator.d.ts +35 -11
  23. package/esm/dev2-server/files-orchestrator.d.ts.map +1 -1
  24. package/esm/dev2-server/files-orchestrator.js +51 -63
  25. package/esm/dev2-server/files-orchestrator.js.map +1 -1
  26. package/esm/dev2-server/import-transformer.d.ts +6 -5
  27. package/esm/dev2-server/import-transformer.d.ts.map +1 -1
  28. package/esm/dev2-server/import-transformer.js +27 -39
  29. package/esm/dev2-server/import-transformer.js.map +1 -1
  30. package/esm/dev2-server/layer-executor.js +1 -1
  31. package/esm/dev2-server/parse-imports.d.ts.map +1 -1
  32. package/esm/dev2-server/parse-imports.js +1 -0
  33. package/esm/dev2-server/parse-imports.js.map +1 -1
  34. package/esm/dev2-server/tsconfig-manager.d.ts +1 -1
  35. package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -1
  36. package/esm/dev2-server/tsconfig-manager.js +8 -3
  37. package/esm/dev2-server/tsconfig-manager.js.map +1 -1
  38. package/esm/dev2-server/type-generator.d.ts +10 -6
  39. package/esm/dev2-server/type-generator.d.ts.map +1 -1
  40. package/esm/dev2-server/type-generator.js +84 -75
  41. package/esm/dev2-server/type-generator.js.map +1 -1
  42. package/esm/dev2-server/types.d.ts +15 -1
  43. package/esm/dev2-server/types.d.ts.map +1 -1
  44. package/esm/http/errors/resource-not-found.error.d.ts +4 -0
  45. package/esm/http/errors/resource-not-found.error.d.ts.map +1 -1
  46. package/esm/http/errors/resource-not-found.error.js +9 -1
  47. package/esm/http/errors/resource-not-found.error.js.map +1 -1
  48. package/esm/http/middleware/inject-request-context.d.ts.map +1 -1
  49. package/esm/http/middleware/inject-request-context.js +8 -2
  50. package/esm/http/middleware/inject-request-context.js.map +1 -1
  51. package/esm/index.js +1 -1
  52. package/package.json +1 -1
@@ -1,69 +1,120 @@
1
1
  import events from'@mongez/events';import {debounce}from'@mongez/reinforcements';import {devLogSuccess}from'./dev-logger.js';import {FILE_PROCESSING_BATCH_SIZE}from'./flags.js';import {clearFileExistsCache}from'./parse-imports.js';import {Path}from'./path.js';/**
2
- * File Event Handler
3
- * Handles runtime file system events (change, add, delete)
4
- * Collects events and processes them in batches for optimal performance
2
+ * FileEventHandler - Handles runtime file system events
3
+ *
4
+ * This class receives file system events (add, change, delete) from the
5
+ * FilesWatcher and processes them in batches for optimal performance.
6
+ *
7
+ * ## Batching Strategy
8
+ *
9
+ * Events are collected and processed after a debounce period (150ms).
10
+ * This batching is crucial when:
11
+ * - Multiple files are created at once (e.g., VSCode extension creating a module)
12
+ * - A file save triggers multiple filesystem events
13
+ * - Large refactoring operations affect many files
14
+ *
15
+ * ## Processing Order
16
+ *
17
+ * 1. **Added files** - Processed first so they're available for imports
18
+ * 2. **Changed files** - Can reference newly added files
19
+ * 3. **Deleted files** - Processed last, dependents are notified
20
+ *
21
+ * ## Batch Add Strategy
22
+ *
23
+ * When multiple files are added (e.g., creating a Warlock module), they're
24
+ * processed using a two-phase approach with topological sorting:
25
+ *
26
+ * 1. **Parse Phase**: All files are parsed to discover dependencies
27
+ * 2. **Sort Phase**: Files are topologically sorted by dependencies
28
+ * 3. **Complete Phase**: Files are finalized in dependency order
29
+ *
30
+ * This ensures that when file A imports file B, file B is processed first.
31
+ *
32
+ * @class FileEventHandler
5
33
  */
6
34
  class FileEventHandler {
7
35
  fileOperations;
8
36
  manifest;
37
+ dependencyGraph;
38
+ files;
9
39
  /**
10
- * Pending events to process in batch
40
+ * Pending file change events (relative paths)
11
41
  */
12
42
  pendingChanges = new Set();
43
+ /**
44
+ * Pending file add events (relative paths)
45
+ */
13
46
  pendingAdds = new Set();
47
+ /**
48
+ * Pending file delete events (relative paths)
49
+ */
14
50
  pendingDeletes = new Set();
15
51
  /**
16
52
  * Debounced batch processor
17
- * Waits for events to settle, then processes all at once
53
+ * Waits 150ms after the last event before processing
18
54
  */
19
55
  processPendingEvents = debounce(async () => {
20
56
  await this.processBatch();
21
- }, 150); // Wait 250ms after last event
57
+ }, 150);
22
58
  /**
23
- * Constructor
59
+ * Creates a new FileEventHandler
60
+ *
61
+ * @param fileOperations - FileOperations instance for file lifecycle management
62
+ * @param manifest - ManifestManager for persisting file metadata
63
+ * @param dependencyGraph - DependencyGraph for tracking dependencies
64
+ * @param files - Map of all tracked FileManager instances
24
65
  */
25
- constructor(fileOperations, manifest) {
66
+ constructor(fileOperations, manifest, dependencyGraph, files) {
26
67
  this.fileOperations = fileOperations;
27
68
  this.manifest = manifest;
69
+ this.dependencyGraph = dependencyGraph;
70
+ this.files = files;
28
71
  }
29
72
  /**
30
- * Handle file change event
31
- * Collects events for batch processing
73
+ * Handle a file change event from the file watcher
74
+ *
75
+ * The event is queued and will be processed in the next batch.
76
+ *
77
+ * @param absolutePath - Absolute path to the changed file
32
78
  */
33
79
  handleFileChange(absolutePath) {
34
80
  const relativePath = Path.toRelative(absolutePath);
35
- // Add to pending changes
36
81
  this.pendingChanges.add(relativePath);
37
- // Trigger debounced batch processor
38
82
  this.processPendingEvents();
39
83
  }
40
84
  /**
41
- * Handle new file added
42
- * Collects events for batch processing
85
+ * Handle a file add event from the file watcher
86
+ *
87
+ * The event is queued and will be processed in the next batch.
88
+ *
89
+ * @param absolutePath - Absolute path to the new file
43
90
  */
44
91
  handleFileAdd(absolutePath) {
45
92
  const relativePath = Path.toRelative(absolutePath);
46
- // Add to pending adds
47
93
  this.pendingAdds.add(relativePath);
48
- // Trigger debounced batch processor
49
94
  this.processPendingEvents();
50
95
  }
51
96
  /**
52
- * Handle file deleted
53
- * Collects events for batch processing
97
+ * Handle a file delete event from the file watcher
98
+ *
99
+ * The event is queued and will be processed in the next batch.
100
+ *
101
+ * @param absolutePath - Absolute path to the deleted file
54
102
  */
55
103
  handleFileDelete(absolutePath) {
56
104
  const relativePath = Path.toRelative(absolutePath);
57
- // Add to pending deletes
58
105
  this.pendingDeletes.add(relativePath);
59
- // Trigger debounced batch processor
60
106
  this.processPendingEvents();
61
107
  }
62
108
  /**
63
- * Process all pending events in batch
109
+ * Process all pending events in a batch
110
+ *
111
+ * Events are processed in order: adds → changes → deletes
112
+ * After processing, the dependency graph and manifest are updated.
113
+ *
114
+ * @internal
64
115
  */
65
116
  async processBatch() {
66
- // Get snapshots of pending events
117
+ // Snapshot pending events
67
118
  const changes = Array.from(this.pendingChanges);
68
119
  const adds = Array.from(this.pendingAdds);
69
120
  const deletes = Array.from(this.pendingDeletes);
@@ -75,26 +126,21 @@ class FileEventHandler {
75
126
  if (changes.length === 0 && adds.length === 0 && deletes.length === 0) {
76
127
  return;
77
128
  }
78
- // For batch operations (multiple files), add extra delay to let filesystem settle
129
+ // For batch operations, add extra delay to let filesystem settle
79
130
  const totalFiles = adds.length + changes.length;
80
131
  if (totalFiles > 1) {
81
- // Wait 500ms for filesystem to fully write all files
82
132
  await new Promise((resolve) => setTimeout(resolve, 500));
83
- // Clear file exists cache so we get fresh lookups
84
133
  clearFileExistsCache();
85
134
  }
86
- // Silent batch processing
87
- // Process in order: adds first (so new files are available for import transformation),
88
- // then changes (can reference newly added files), then deletes
135
+ // Process in order: adds first, then changes, then deletes
89
136
  await this.processBatchAdds(adds);
90
- // TODO: If changed files are just saves, then skip triggering the batch completion event
91
137
  await this.processBatchChanges(changes);
92
138
  await this.processBatchDeletes(deletes);
93
139
  // Update dependency graph and manifest once
94
140
  this.fileOperations.updateFileDependents();
95
141
  this.fileOperations.syncFilesToManifest();
96
142
  await this.manifest.save();
97
- // Trigger batch completion event (for reload execution)
143
+ // Trigger batch completion event (for HMR/reload execution)
98
144
  events.trigger("dev-server:batch-complete", {
99
145
  added: adds,
100
146
  changed: changes,
@@ -102,7 +148,13 @@ class FileEventHandler {
102
148
  });
103
149
  }
104
150
  /**
105
- * Process batch of changed files
151
+ * Process a batch of changed files
152
+ *
153
+ * Each file is updated (reprocessed if content changed).
154
+ * Processing is done in parallel batches for performance.
155
+ *
156
+ * @param relativePaths - Array of relative paths to changed files
157
+ * @internal
106
158
  */
107
159
  async processBatchChanges(relativePaths) {
108
160
  if (relativePaths.length === 0)
@@ -116,8 +168,17 @@ class FileEventHandler {
116
168
  }
117
169
  }
118
170
  /**
119
- * Process batch of added files
120
- * Uses push-to-end strategy: files that depend on other batch files are processed last
171
+ * Process a batch of added files using topological sort
172
+ *
173
+ * This method uses a two-phase approach:
174
+ * 1. Parse all files to discover dependencies
175
+ * 2. Complete files in topological order (dependencies first)
176
+ *
177
+ * This ensures that when file A imports file B (both in the batch),
178
+ * file B is fully processed before file A tries to resolve the import.
179
+ *
180
+ * @param relativePaths - Array of relative paths to new files
181
+ * @internal
121
182
  */
122
183
  async processBatchAdds(relativePaths) {
123
184
  if (relativePaths.length === 0)
@@ -126,54 +187,107 @@ class FileEventHandler {
126
187
  // PHASE 1: Parse all files in parallel to discover dependencies
127
188
  const parsedFiles = await Promise.all(relativePaths.map(async (relativePath) => {
128
189
  try {
129
- const fileManager = await this.fileOperations.parseNewFile(relativePath);
130
- return fileManager;
190
+ return await this.fileOperations.parseNewFile(relativePath);
131
191
  }
132
192
  catch (error) {
133
- return null; // Skip files that can't be parsed
193
+ return null;
134
194
  }
135
195
  }));
136
- // Filter out nulls
196
+ // Filter out nulls (files that couldn't be parsed)
137
197
  const validFiles = parsedFiles.filter((f) => f !== null);
138
- // PHASE 2: Reorder - push files with batch dependencies to the end
139
- const noDeps = [];
140
- const hasDeps = [];
141
- for (const file of validFiles) {
142
- const dependsOnBatch = [...file.dependencies].some((dep) => batchSet.has(dep));
143
- if (dependsOnBatch) {
144
- hasDeps.push(file);
145
- }
146
- else {
147
- noDeps.push(file);
148
- }
149
- }
150
- // Combine: no-deps first, has-deps last
151
- const orderedFiles = [...noDeps, ...hasDeps];
152
- // PHASE 3: Process sequentially with retry for failures
153
- const failed = [];
198
+ // PHASE 2: Topological sort for proper dependency order
199
+ const orderedFiles = this.topologicalSort(validFiles, batchSet);
200
+ // PHASE 3: Complete processing in dependency order
154
201
  for (const file of orderedFiles) {
155
202
  try {
156
203
  await this.fileOperations.finalizeNewFile(file);
157
204
  devLogSuccess(`Added file: ${file.relativePath}`);
158
205
  }
159
206
  catch (error) {
160
- failed.push(file);
207
+ // File may have issues, but we continue with others
208
+ console.error(`Failed to add file ${file.relativePath}:`, error);
161
209
  }
162
210
  }
163
- // Retry failed files once (their dependencies might be ready now)
164
- for (const file of failed) {
165
- try {
166
- await this.fileOperations.finalizeNewFile(file);
167
- devLogSuccess(`Added file: ${file.relativePath}`);
211
+ }
212
+ /**
213
+ * Topologically sort files by their dependencies
214
+ *
215
+ * Uses Kahn's algorithm to produce an ordering where files with
216
+ * no batch dependencies come first, and files that depend on other
217
+ * batch files come after their dependencies.
218
+ *
219
+ * @param files - Array of FileManager instances to sort
220
+ * @param batchSet - Set of relative paths in this batch (for filtering deps)
221
+ * @returns Files in topological order (dependencies first)
222
+ *
223
+ * @example
224
+ * ```typescript
225
+ * // If A imports B, and B imports C, result will be: [C, B, A]
226
+ * const ordered = this.topologicalSort([fileA, fileB, fileC], batchSet);
227
+ * ```
228
+ *
229
+ * @internal
230
+ */
231
+ topologicalSort(files, batchSet) {
232
+ const fileMap = new Map();
233
+ const inDegree = new Map();
234
+ const graph = new Map();
235
+ // Initialize data structures
236
+ for (const file of files) {
237
+ fileMap.set(file.relativePath, file);
238
+ inDegree.set(file.relativePath, 0);
239
+ graph.set(file.relativePath, []);
240
+ }
241
+ // Build graph: for each file, record which files depend on it
242
+ for (const file of files) {
243
+ for (const dep of file.dependencies) {
244
+ // Only consider dependencies that are in this batch
245
+ if (batchSet.has(dep) && fileMap.has(dep)) {
246
+ // dep → file (file depends on dep)
247
+ graph.get(dep).push(file.relativePath);
248
+ inDegree.set(file.relativePath, (inDegree.get(file.relativePath) || 0) + 1);
249
+ }
168
250
  }
169
- catch (error) {
170
- // Log error but continue - file may have other issues
171
- console.error(`Failed to add file ${file.relativePath}:`, error);
251
+ }
252
+ // Kahn's algorithm: start with files that have no batch dependencies
253
+ const queue = [];
254
+ for (const file of files) {
255
+ if (inDegree.get(file.relativePath) === 0) {
256
+ queue.push(file);
257
+ }
258
+ }
259
+ const result = [];
260
+ while (queue.length > 0) {
261
+ const file = queue.shift();
262
+ result.push(file);
263
+ // For each file that depends on this one, reduce its in-degree
264
+ for (const dependentPath of graph.get(file.relativePath) || []) {
265
+ const newDegree = (inDegree.get(dependentPath) || 0) - 1;
266
+ inDegree.set(dependentPath, newDegree);
267
+ if (newDegree === 0) {
268
+ const dependentFile = fileMap.get(dependentPath);
269
+ if (dependentFile) {
270
+ queue.push(dependentFile);
271
+ }
272
+ }
273
+ }
274
+ }
275
+ // Handle any remaining files (cycles or isolated)
276
+ // These are added at the end to ensure all files are processed
277
+ for (const file of files) {
278
+ if (!result.includes(file)) {
279
+ result.push(file);
172
280
  }
173
281
  }
282
+ return result;
174
283
  }
175
284
  /**
176
- * Process batch of deleted files
285
+ * Process a batch of deleted files
286
+ *
287
+ * Each file is removed from the system and its dependents are notified.
288
+ *
289
+ * @param relativePaths - Array of relative paths to deleted files
290
+ * @internal
177
291
  */
178
292
  async processBatchDeletes(relativePaths) {
179
293
  if (relativePaths.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"file-event-handler.js","sources":["../../src/dev2-server/file-event-handler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-event-handler.js","sources":["../../src/dev2-server/file-event-handler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}