UNPKG

molstar

Version:

A comprehensive macromolecular library.

65 lines 2.62 kB
/** * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> * @author David Sehnal <david.sehnal@gmail.com> */ import * as fs from 'fs'; import { SimpleBuffer } from '../../mol-io/common/simple-buffer'; import { defaults, noop } from '../../mol-util'; export function fileHandleFromDescriptor(file, name) { if (fs === undefined) throw new Error('fs module not available'); return { name: name, readBuffer: function (position, sizeOrBuffer, length, byteOffset) { return new Promise(function (res, rej) { var outBuffer; if (typeof sizeOrBuffer === 'number') { byteOffset = defaults(byteOffset, 0); length = defaults(length, sizeOrBuffer); outBuffer = SimpleBuffer.fromArrayBuffer(new ArrayBuffer(sizeOrBuffer)); } else { byteOffset = defaults(byteOffset, 0); length = defaults(length, sizeOrBuffer.length); outBuffer = sizeOrBuffer; } fs.read(file, outBuffer, byteOffset, length, position, function (err, bytesRead, buffer) { if (err) { rej(err); return; } if (length !== bytesRead) { console.warn("byteCount " + length + " and bytesRead " + bytesRead + " differ"); } res({ bytesRead: bytesRead, buffer: buffer }); }); }); }, writeBuffer: function (position, buffer, length) { length = defaults(length, buffer.length); return new Promise(function (res, rej) { fs.write(file, buffer, 0, length, position, function (err, written) { if (err) rej(err); else res(written); }); }); }, writeBufferSync: function (position, buffer, length) { length = defaults(length, buffer.length); return fs.writeSync(file, buffer, 0, length, position); }, close: function () { try { if (file !== void 0) fs.close(file, noop); } catch (e) { } } }; } //# sourceMappingURL=file-handle.js.map