UNPKG

@push.rocks/smartfile

Version:

Provides comprehensive tools for efficient file management in Node.js using TypeScript, including handling streams, virtual directories, and various file operations.

69 lines 5.53 kB
import { SmartFile } from './classes.smartfile.js'; import * as plugins from './plugins.js'; import * as fs from './fs.js'; /** * a virtual directory exposes a fs api */ export class VirtualDirectory { consstructor(options = {}) { } // STATIC static async fromFsDirPath(pathArg) { const newVirtualDir = new VirtualDirectory(); newVirtualDir.addSmartfiles(await fs.fileTreeToObject(pathArg, '**/*')); return newVirtualDir; } static async fromVirtualDirTransferableObject(virtualDirTransferableObjectArg) { const newVirtualDir = new VirtualDirectory(); for (const fileArg of virtualDirTransferableObjectArg.files) { newVirtualDir.addSmartfiles([SmartFile.enfoldFromJson(fileArg)]); } return newVirtualDir; } constructor() { // INSTANCE this.smartfileArray = []; } addSmartfiles(smartfileArrayArg) { this.smartfileArray = this.smartfileArray.concat(smartfileArrayArg); } async getFileByPath(pathArg) { for (const smartfile of this.smartfileArray) { if (smartfile.path === pathArg) { return smartfile; } } } async toVirtualDirTransferableObject() { return { files: this.smartfileArray.map((smartfileArg) => smartfileArg.foldToJson()), }; } async saveToDisk(dirArg) { console.log(`writing VirtualDirectory with ${this.smartfileArray.length} files to directory: --> ${dirArg}`); for (const smartfileArg of this.smartfileArray) { const filePath = await smartfileArg.writeToDir(dirArg); console.log(`wrote ${smartfileArg.relative} to --> ${filePath}`); } } async shiftToSubdirectory(subDir) { const newVirtualDir = new VirtualDirectory(); for (const file of this.smartfileArray) { if (file.path.startsWith(subDir)) { const adjustedFilePath = plugins.path.relative(subDir, file.path); file.path = adjustedFilePath; newVirtualDir.addSmartfiles([file]); } } return newVirtualDir; } async addVirtualDirectory(virtualDir, newRoot) { for (const file of virtualDir.smartfileArray) { file.path = plugins.path.join(newRoot, file.path); } this.addSmartfiles(virtualDir.smartfileArray); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy52aXJ0dWFsZGlyZWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy52aXJ0dWFsZGlyZWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU85Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBWSxDQUFDLE9BQU8sR0FBRyxFQUFFO0lBRXpCLENBQUM7SUFFRCxTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBZTtRQUMvQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FDbEQsK0JBQXlGO1FBRXpGLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxLQUFLLE1BQU0sT0FBTyxJQUFJLCtCQUErQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVELGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUtEO1FBSEEsV0FBVztRQUNKLG1CQUFjLEdBQWdCLEVBQUUsQ0FBQztJQUV6QixDQUFDO0lBRVQsYUFBYSxDQUFDLGlCQUE4QjtRQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBZTtRQUN4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyw4QkFBOEI7UUFDekMsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQzVFLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtVQUNqRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsWUFBWSxDQUFDLFFBQVE7Y0FDbEMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjO1FBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztnQkFDN0IsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQTRCLEVBQUUsT0FBZTtRQUM1RSxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDRiJ9