molstar
Version:
A comprehensive macromolecular library.
86 lines (85 loc) • 3.12 kB
JavaScript
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* Taken/adapted from DensityServer (https://github.com/dsehnal/DensityServer)
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.writeInt = exports.createFile = exports.exists = exports.openRead = void 0;
var tslib_1 = require("tslib");
var fs = tslib_1.__importStar(require("fs"));
var path = tslib_1.__importStar(require("path"));
var simple_buffer_1 = require("../../../mol-io/common/simple-buffer");
function openRead(filename) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, new Promise(function (res, rej) {
fs.open(filename, 'r', function (err, file) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (err) {
rej(err);
return [2 /*return*/];
}
try {
res(file);
}
catch (e) {
fs.closeSync(file);
}
return [2 /*return*/];
});
}); });
})];
});
});
}
exports.openRead = openRead;
function makeDir(path, root) {
var dirs = path.split(/\/|\\/g), dir = dirs.shift();
root = (root || '') + dir + '/';
try {
fs.mkdirSync(root);
}
catch (e) {
if (!fs.statSync(root).isDirectory())
throw new Error(e);
}
return !dirs.length || makeDir(dirs.join('/'), root);
}
function exists(filename) {
return fs.existsSync(filename);
}
exports.exists = exists;
function createFile(filename) {
return new Promise(function (res, rej) {
if (fs.existsSync(filename))
fs.unlinkSync(filename);
makeDir(path.dirname(filename));
fs.open(filename, 'w', function (err, file) {
if (err)
rej(err);
else
res(file);
});
});
}
exports.createFile = createFile;
var smallBuffer = simple_buffer_1.SimpleBuffer.fromBuffer(Buffer.alloc(8));
function writeInt(file, value, position) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
smallBuffer.writeInt32LE(value, 0);
return [4 /*yield*/, file.writeBuffer(position, smallBuffer, 4)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
}
exports.writeInt = writeInt;
;