MCPcopy Create free account
hub / github.com/TechJeeper/Printventory / processNext

Function processNext

scan-worker.js:252–282  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

250 });
251 }
252 };
253
254 // Use a simple queue system
255 const queue = [{ type: 'dir', path: directoryPath }];
256 const seenDirs = new Set();
257 let activeOps = 0;
258
259 // Promise to signal completion
260 let resolveDone;
261 const donePromise = new Promise(resolve => { resolveDone = resolve; });
262
263 const processNext = () => {
264 // If no active ops and queue is empty, we are done
265 if (activeOps === 0 && queue.length === 0) {
266 if (traversedFileEntries > 0) {
267 parentPort.postMessage({
268 type: 'progress',
269 processed: traversedFileEntries
270 });
271 }
272 resolveDone({ files, totalFiles: traversedFileEntries });
273 return;
274 }
275
276 // While we have capacity and items in queue, start processing
277 while (activeOps < MAX_CONCURRENT_OPS && queue.length > 0) {
278 const item = queue.shift();
279 activeOps++;
280
281 if (item.type === 'dir') {
282 processDirectory(item.path).finally(() => {
283 activeOps--;
284 processNext();
285 });

Callers 1

scanDirectoryFunction · 0.85

Calls 2

processDirectoryFunction · 0.85
processFileFunction · 0.70

Tested by

no test coverage detected