molstar
Version:
A comprehensive macromolecular library.
70 lines • 2.97 kB
JavaScript
/**
* 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>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.fileHandleFromDescriptor = void 0;
var tslib_1 = require("tslib");
var fs = (0, tslib_1.__importStar)(require("fs"));
var simple_buffer_1 = require("../../mol-io/common/simple-buffer");
var mol_util_1 = require("../../mol-util");
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 = (0, mol_util_1.defaults)(byteOffset, 0);
length = (0, mol_util_1.defaults)(length, sizeOrBuffer);
outBuffer = simple_buffer_1.SimpleBuffer.fromArrayBuffer(new ArrayBuffer(sizeOrBuffer));
}
else {
byteOffset = (0, mol_util_1.defaults)(byteOffset, 0);
length = (0, mol_util_1.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 = (0, mol_util_1.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 = (0, mol_util_1.defaults)(length, buffer.length);
return fs.writeSync(file, buffer, 0, length, position);
},
close: function () {
try {
if (file !== void 0)
fs.close(file, mol_util_1.noop);
}
catch (e) {
}
}
};
}
exports.fileHandleFromDescriptor = fileHandleFromDescriptor;
//# sourceMappingURL=file-handle.js.map
;