UNPKG

molstar

Version:

A comprehensive macromolecular library.

86 lines (85 loc) 3.12 kB
"use strict"; /** * 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;