UNPKG

@dfinity/assets

Version:

JavaScript and TypeScript library to manage assets on the Internet Computer

85 lines 2.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReadablePath = void 0; const lite_1 = __importDefault(require("mime/lite")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); class ReadablePath { constructor(path, size) { this._path = path; this._size = size; } get fileName() { return path_1.default.basename(this._path); } get contentType() { var _a; return (_a = lite_1.default.getType(this.fileName)) !== null && _a !== void 0 ? _a : 'application/octet-stream'; } get length() { return this._size; } static async create(path) { return new Promise((resolve, reject) => { fs_1.default.stat(path, (err, stats) => { if (err) { reject(err); return; } resolve(new ReadablePath(path, stats.size)); }); }); } async open() { return new Promise((resolve, reject) => { if (this._fd !== undefined) { reject('File is already open'); return; } fs_1.default.open(this._path, (err, fd) => { if (err) { reject(err); return; } this._fd = fd; resolve(); }); }); } async close() { return new Promise((resolve, reject) => { if (this._fd === undefined) { reject('No open file handle found'); return; } fs_1.default.close(this._fd, err => { if (err) { reject(err); return; } resolve(); }); }); } async slice(start, end) { return new Promise((resolve, reject) => { if (this._fd === undefined) { reject('No open file handle found'); return; } const buffer = Buffer.alloc(end - start); fs_1.default.read(this._fd, buffer, 0, end - start, start, (err) => { if (err) { reject(err); return; } resolve(new Uint8Array(buffer)); }); }); } } exports.ReadablePath = ReadablePath; //# sourceMappingURL=readablePath.js.map