UNPKG

@push.rocks/smartbucket

Version:

A TypeScript library providing a cloud-agnostic interface for managing object storage with functionalities like bucket management, file and directory operations, and advanced features such as metadata handling and file locking.

94 lines 7.52 kB
import * as plugins from './plugins.js'; import { File } from './classes.file.js'; export class MetaData { constructor() { this.prefixCustomMetaData = 'custom_'; } static async hasMetaData(optionsArg) { // lets find the existing metadata file const existingFile = await optionsArg.file.parentDirectoryRef.getFile({ path: optionsArg.file.name + '.metadata', }); return !!existingFile; } // static static async createForFile(optionsArg) { const metaData = new MetaData(); metaData.fileRef = optionsArg.file; // lets find the existing metadata file metaData.metadataFile = await metaData.fileRef.parentDirectoryRef.getFileStrict({ path: metaData.fileRef.name + '.metadata', createWithContents: '{}', }); return metaData; } async getFileType(optionsArg) { if ((optionsArg && optionsArg.useFileExtension) || !optionsArg) { const fileType = await plugins.smartmime.detectMimeType({ path: this.fileRef.name, }); return fileType; } if (optionsArg && optionsArg.useMagicBytes) { const fileType = await plugins.smartmime.detectMimeType({ buffer: await this.fileRef.getMagicBytes({ length: 100, }) }); return fileType; } throw new Error('optionsArg.useFileExtension and optionsArg.useMagicBytes cannot both be false'); } /** * gets the size of the fileRef */ async getSizeInBytes() { const stat = await this.fileRef.parentDirectoryRef.bucketRef.fastStat({ path: this.fileRef.getBasePath(), }); return stat.ContentLength; } async storeCustomMetaData(optionsArg) { const data = await this.metadataFile.getJsonData(); data[this.prefixCustomMetaData + optionsArg.key] = optionsArg.value; await this.metadataFile.writeJsonData(data); } async getCustomMetaData(optionsArg) { const data = await this.metadataFile.getJsonData(); return data[this.prefixCustomMetaData + optionsArg.key]; } async deleteCustomMetaData(optionsArg) { const data = await this.metadataFile.getJsonData(); delete data[this.prefixCustomMetaData + optionsArg.key]; await this.metadataFile.writeJsonData(data); } /** * set a lock on the ref file * @param optionsArg */ async setLock(optionsArg) { const data = await this.metadataFile.getJsonData(); data.lock = optionsArg.lock; data.lockExpires = optionsArg.expires; await this.metadataFile.writeJsonData(data); } /** * remove the lock on the ref file * @param optionsArg */ async removeLock(optionsArg) { const data = await this.metadataFile.getJsonData(); delete data.lock; delete data.lockExpires; await this.metadataFile.writeJsonData(data); } async checkLocked() { const data = await this.metadataFile.getJsonData(); return data.lock && data.lockExpires > Date.now(); } async getLockInfo() { const data = await this.metadataFile.getJsonData(); return { lock: data.lock, expires: data.lockExpires }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMubWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpDLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBbUVVLHlCQUFvQixHQUFHLFNBQVMsQ0FBQztJQWtEM0MsQ0FBQztJQXBIUSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUEwQjtRQUN4RCx1Q0FBdUM7UUFDdkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztZQUNwRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVztTQUN6QyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVM7SUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUEwQjtRQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUVuQyx1Q0FBdUM7UUFDdkMsUUFBUSxDQUFDLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1lBQzlFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxXQUFXO1lBQ3pDLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQWFNLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFHeEI7UUFDQyxJQUFJLENBQUMsVUFBVSxJQUFJLFVB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