UNPKG

@dfinity/assets

Version:

JavaScript and TypeScript library to manage assets on the Internet Computer

78 lines 2.24 kB
import mime from 'mime/lite.js'; import fs from 'fs'; import path from 'path'; import { uint8FromBufLike } from '@dfinity/agent'; export class ReadablePath { constructor(path, size) { this._path = path; this._size = size; } get fileName() { return path.basename(this._path); } get contentType() { return mime.getType(this.fileName) ?? 'application/octet-stream'; } get length() { return this._size; } static async create(path) { return new Promise((resolve, reject) => { fs.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.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.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.read(this._fd, uint8FromBufLike(buffer), 0, end - start, start, (err) => { if (err) { reject(err); return; } resolve(new Uint8Array(buffer)); }); }); } } //# sourceMappingURL=readablePath.js.map