UNPKG

axiodb

Version:

A blazing-fast, lightweight, and scalable nodejs package based DBMS for modern application. Supports schemas, encryption, and advanced query capabilities.

101 lines 5.27 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable @typescript-eslint/no-explicit-any */ const worker_threads_1 = require("worker_threads"); const FileManager_1 = __importDefault(require("../Filesystem/FileManager")); // Replace with real imports const Converter_helper_1 = __importDefault(require("../../Helper/Converter.helper")); // Replace with your actual converter logic const response_helper_1 = __importDefault(require("../../Helper/response.helper")); const { chunk, cryptoInstance, path, isEncrypted, storeFileName } = worker_threads_1.workerData; const result = []; /* * Worker for reading files in parallel. * It processes files in pairs from both ends of the chunk array. * If cryptoInstance is provided, it decrypts the file content. * The results are stored in the result array, either with or without file names based on storeFileName flag. * If an error occurs, it sends an error message back to the parent thread. */ function processFiles() { return __awaiter(this, void 0, void 0, function* () { let left = 0; let right = chunk.length - 1; try { while (left <= right) { const indices = []; for (let i = 0; i < 2 && left + i <= right; i++) indices.push(left + i); for (let i = 0; i < 2 && right - i > left + 1; i++) indices.push(right - i); for (const index of indices) { const fileName = chunk[index]; try { const ReadFileResponse = yield new FileManager_1.default().ReadFile(`${path}/${fileName}`); // Check if the file is read successfully or not if ("data" in ReadFileResponse) { if (isEncrypted === true && cryptoInstance) { // Decrypt the data if crypto is enabled const ContentResponse = yield cryptoInstance.decrypt(new Converter_helper_1.default().ToObject(ReadFileResponse.data)); if (storeFileName == true) { // Store Decrypted Data with File Name result.push({ fileName: fileName, data: new Converter_helper_1.default().ToObject(ContentResponse), }); } else { // Store all Decrypted Data in AllData result.push(new Converter_helper_1.default().ToObject(ContentResponse)); } } else { if (storeFileName == true) { result.push({ fileName: fileName, data: new Converter_helper_1.default().ToObject(ReadFileResponse.data), }); } else { result.push(new Converter_helper_1.default().ToObject(ReadFileResponse.data)); } } } else { return new response_helper_1.default().Error(`Failed to read file: ${fileName}`); } } catch (error) { console.error(`Error processing file ${fileName}:`, error); } } left += 2; right -= 2; } if (worker_threads_1.parentPort) { worker_threads_1.parentPort.postMessage(result); } } catch (error) { if (worker_threads_1.parentPort) { worker_threads_1.parentPort.postMessage({ error: String(error) }); } } }); } processFiles().catch((error) => { console.error("Worker error:", error); if (worker_threads_1.parentPort) { worker_threads_1.parentPort.postMessage({ error: String(error) }); } }); //# sourceMappingURL=WorkerForDataLoad.engine.js.map