@gmod/tabix 1.4.5 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -25
- package/README.md +114 -17
- package/dist/chunk.js +33 -62
- package/dist/csi.d.ts +2 -3
- package/dist/csi.js +324 -556
- package/dist/index.js +11 -36
- package/dist/indexFile.d.ts +1 -1
- package/dist/indexFile.js +112 -174
- package/dist/tabixIndexedFile.d.ts +10 -11
- package/dist/tabixIndexedFile.js +476 -781
- package/dist/tbi.d.ts +1 -1
- package/dist/tbi.js +309 -516
- package/dist/util.d.ts +4 -0
- package/dist/util.js +136 -106
- package/dist/virtualOffset.js +44 -68
- package/esm/chunk.d.ts +18 -0
- package/esm/chunk.js +35 -0
- package/esm/csi.d.ts +71 -0
- package/esm/csi.js +254 -0
- package/esm/index.d.ts +4 -0
- package/esm/index.js +12 -0
- package/esm/indexFile.d.ts +32 -0
- package/esm/indexFile.js +45 -0
- package/esm/tabixIndexedFile.d.ts +118 -0
- package/esm/tabixIndexedFile.js +403 -0
- package/esm/tbi.d.ts +45 -0
- package/esm/tbi.js +240 -0
- package/esm/util.d.ts +25 -0
- package/esm/util.js +98 -0
- package/esm/virtualOffset.d.ts +10 -0
- package/esm/virtualOffset.js +41 -0
- package/package.json +23 -40
- package/dist/declare.d.js +0 -2
package/dist/index.js
CHANGED
|
@@ -1,37 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
get: function get() {
|
|
14
|
-
return _tabixIndexedFile.default;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
_Object$defineProperty(exports, "TBI", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function get() {
|
|
21
|
-
return _tbi.default;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
_Object$defineProperty(exports, "CSI", {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
get: function get() {
|
|
28
|
-
return _csi.default;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
var _tabixIndexedFile = _interopRequireDefault(require("./tabixIndexedFile"));
|
|
33
|
-
|
|
34
|
-
var _tbi = _interopRequireDefault(require("./tbi"));
|
|
35
|
-
|
|
36
|
-
var _csi = _interopRequireDefault(require("./csi"));
|
|
37
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGFiaXhJbmRleGVkRmlsZSBmcm9tICcuL3RhYml4SW5kZXhlZEZpbGUnXG5pbXBvcnQgVEJJIGZyb20gJy4vdGJpJ1xuaW1wb3J0IENTSSBmcm9tICcuL2NzaSdcblxuZXhwb3J0IHsgVGFiaXhJbmRleGVkRmlsZSwgVEJJLCBDU0kgfVxuIl19
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CSI = exports.TBI = exports.TabixIndexedFile = void 0;
|
|
7
|
+
var tabixIndexedFile_1 = __importDefault(require("./tabixIndexedFile"));
|
|
8
|
+
exports.TabixIndexedFile = tabixIndexedFile_1.default;
|
|
9
|
+
var tbi_1 = __importDefault(require("./tbi"));
|
|
10
|
+
exports.TBI = tbi_1.default;
|
|
11
|
+
var csi_1 = __importDefault(require("./csi"));
|
|
12
|
+
exports.CSI = csi_1.default;
|
package/dist/indexFile.d.ts
CHANGED
package/dist/indexFile.js
CHANGED
|
@@ -1,179 +1,117 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* @param {function} [renameRefSeqs]
|
|
33
|
-
*/
|
|
34
|
-
function IndexFile(_ref) {
|
|
35
|
-
var filehandle = _ref.filehandle,
|
|
36
|
-
_ref$renameRefSeqs = _ref.renameRefSeqs,
|
|
37
|
-
renameRefSeqs = _ref$renameRefSeqs === void 0 ? function (n) {
|
|
38
|
-
return n;
|
|
39
|
-
} : _ref$renameRefSeqs;
|
|
40
|
-
(0, _classCallCheck2.default)(this, IndexFile);
|
|
41
|
-
(0, _defineProperty2.default)(this, "filehandle", void 0);
|
|
42
|
-
(0, _defineProperty2.default)(this, "renameRefSeq", void 0);
|
|
43
|
-
(0, _defineProperty2.default)(this, "_parseCache", void 0);
|
|
44
|
-
this.filehandle = filehandle;
|
|
45
|
-
this.renameRefSeq = renameRefSeqs;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
(0, _createClass2.default)(IndexFile, [{
|
|
49
|
-
key: "getMetadata",
|
|
50
|
-
value: function () {
|
|
51
|
-
var _getMetadata = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
52
|
-
var opts,
|
|
53
|
-
_yield$this$parse,
|
|
54
|
-
indices,
|
|
55
|
-
rest,
|
|
56
|
-
_args = arguments;
|
|
57
|
-
|
|
58
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
59
|
-
while (1) {
|
|
60
|
-
switch (_context.prev = _context.next) {
|
|
61
|
-
case 0:
|
|
62
|
-
opts = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
63
|
-
_context.next = 3;
|
|
64
|
-
return this.parse(opts);
|
|
65
|
-
|
|
66
|
-
case 3:
|
|
67
|
-
_yield$this$parse = _context.sent;
|
|
68
|
-
indices = _yield$this$parse.indices;
|
|
69
|
-
rest = (0, _objectWithoutProperties2.default)(_yield$this$parse, ["indices"]);
|
|
70
|
-
return _context.abrupt("return", rest);
|
|
71
|
-
|
|
72
|
-
case 7:
|
|
73
|
-
case "end":
|
|
74
|
-
return _context.stop();
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
75
32
|
}
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
function getMetadata() {
|
|
81
|
-
return _getMetadata.apply(this, arguments);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return getMetadata;
|
|
85
|
-
}()
|
|
86
|
-
}, {
|
|
87
|
-
key: "_findFirstData",
|
|
88
|
-
value: function _findFirstData(currentFdl, virtualOffset) {
|
|
89
|
-
if (currentFdl) {
|
|
90
|
-
return currentFdl.compareTo(virtualOffset) > 0 ? virtualOffset : currentFdl;
|
|
91
|
-
} else {
|
|
92
|
-
return virtualOffset;
|
|
93
|
-
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
94
36
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
var
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
key: "hasRefSeq",
|
|
134
|
-
value: function () {
|
|
135
|
-
var _hasRefSeq = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(seqId) {
|
|
136
|
-
var opts,
|
|
137
|
-
_args3 = arguments;
|
|
138
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
139
|
-
while (1) {
|
|
140
|
-
switch (_context3.prev = _context3.next) {
|
|
141
|
-
case 0:
|
|
142
|
-
opts = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
|
|
143
|
-
_context3.next = 3;
|
|
144
|
-
return this.parse(opts);
|
|
145
|
-
|
|
146
|
-
case 3:
|
|
147
|
-
_context3.t1 = seqId;
|
|
148
|
-
_context3.t0 = _context3.sent.indices[_context3.t1];
|
|
149
|
-
|
|
150
|
-
if (_context3.t0) {
|
|
151
|
-
_context3.next = 7;
|
|
152
|
-
break;
|
|
37
|
+
};
|
|
38
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
39
|
+
var t = {};
|
|
40
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
41
|
+
t[p] = s[p];
|
|
42
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
43
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
44
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
45
|
+
t[p[i]] = s[p[i]];
|
|
46
|
+
}
|
|
47
|
+
return t;
|
|
48
|
+
};
|
|
49
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
var abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
|
|
54
|
+
var quick_lru_1 = __importDefault(require("quick-lru"));
|
|
55
|
+
var IndexFile = /** @class */ (function () {
|
|
56
|
+
/**
|
|
57
|
+
* @param {filehandle} filehandle
|
|
58
|
+
* @param {function} [renameRefSeqs]
|
|
59
|
+
*/
|
|
60
|
+
function IndexFile(_a) {
|
|
61
|
+
var filehandle = _a.filehandle, _b = _a.renameRefSeqs, renameRefSeqs = _b === void 0 ? function (n) { return n; } : _b;
|
|
62
|
+
this.filehandle = filehandle;
|
|
63
|
+
this.renameRefSeq = renameRefSeqs;
|
|
64
|
+
}
|
|
65
|
+
IndexFile.prototype.getMetadata = function (opts) {
|
|
66
|
+
if (opts === void 0) { opts = {}; }
|
|
67
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
68
|
+
var _a, indices, rest;
|
|
69
|
+
return __generator(this, function (_b) {
|
|
70
|
+
switch (_b.label) {
|
|
71
|
+
case 0: return [4 /*yield*/, this.parse(opts)];
|
|
72
|
+
case 1:
|
|
73
|
+
_a = _b.sent(), indices = _a.indices, rest = __rest(_a, ["indices"]);
|
|
74
|
+
return [2 /*return*/, rest];
|
|
153
75
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
IndexFile.prototype._findFirstData = function (currentFdl, virtualOffset) {
|
|
80
|
+
if (currentFdl) {
|
|
81
|
+
return currentFdl.compareTo(virtualOffset) > 0
|
|
82
|
+
? virtualOffset
|
|
83
|
+
: currentFdl;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return virtualOffset;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
IndexFile.prototype.parse = function (opts) {
|
|
90
|
+
if (opts === void 0) { opts = {}; }
|
|
91
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
92
|
+
var _this = this;
|
|
93
|
+
return __generator(this, function (_a) {
|
|
94
|
+
if (!this._parseCache) {
|
|
95
|
+
this._parseCache = new abortable_promise_cache_1.default({
|
|
96
|
+
cache: new quick_lru_1.default({ maxSize: 1 }),
|
|
97
|
+
fill: function () { return _this._parse(opts); },
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return [2 /*return*/, this._parseCache.get('index', null, undefined)];
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
IndexFile.prototype.hasRefSeq = function (seqId, opts) {
|
|
105
|
+
if (opts === void 0) { opts = {}; }
|
|
106
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
107
|
+
return __generator(this, function (_a) {
|
|
108
|
+
switch (_a.label) {
|
|
109
|
+
case 0: return [4 /*yield*/, this.parse(opts)];
|
|
110
|
+
case 1: return [2 /*return*/, !!((_a.sent()).indices[seqId] || {}).binIndex];
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
return IndexFile;
|
|
116
|
+
}());
|
|
178
117
|
exports.default = IndexFile;
|
|
179
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleEZpbGUudHMiXSwibmFtZXMiOlsiSW5kZXhGaWxlIiwiZmlsZWhhbmRsZSIsInJlbmFtZVJlZlNlcXMiLCJuIiwicmVuYW1lUmVmU2VxIiwib3B0cyIsInBhcnNlIiwiaW5kaWNlcyIsInJlc3QiLCJjdXJyZW50RmRsIiwidmlydHVhbE9mZnNldCIsImNvbXBhcmVUbyIsIl9wYXJzZUNhY2hlIiwiQWJvcnRhYmxlUHJvbWlzZUNhY2hlIiwiY2FjaGUiLCJRdWlja0xSVSIsIm1heFNpemUiLCJmaWxsIiwiX3BhcnNlIiwiZ2V0Iiwic2lnbmFsIiwic2VxSWQiLCJiaW5JbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0lBVzhCQSxTO0FBSzVCOzs7O0FBSUEsMkJBTUc7QUFBQSxRQUxEQyxVQUtDLFFBTERBLFVBS0M7QUFBQSxrQ0FKREMsYUFJQztBQUFBLFFBSkRBLGFBSUMsbUNBSmUsVUFBQ0MsQ0FBRDtBQUFBLGFBQWVBLENBQWY7QUFBQSxLQUlmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDRCxTQUFLRixVQUFMLEdBQWtCQSxVQUFsQjtBQUNBLFNBQUtHLFlBQUwsR0FBb0JGLGFBQXBCO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjd0JHLGdCQUFBQSxJLDJEQUFnQixFOzt1QkFFSixLQUFLQyxLQUFMLENBQVdELElBQVgsQzs7OztBQUEzQkUsZ0JBQUFBLE8scUJBQUFBLE87QUFBWUMsZ0JBQUFBLEk7aURBQ2JBLEk7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FXUEMsVSxFQUNBQyxhLEVBQ0E7QUFDQSxVQUFJRCxVQUFKLEVBQWdCO0FBQ2QsZUFBT0EsVUFBVSxDQUFDRSxTQUFYLENBQXFCRCxhQUFyQixJQUFzQyxDQUF0QyxHQUNIQSxhQURHLEdBRUhELFVBRko7QUFHRCxPQUpELE1BSU87QUFDTCxlQUFPQyxhQUFQO0FBQ0Q7QUFDRjs7Ozs7Ozs7Ozs7OztBQUVXTCxnQkFBQUEsSSw4REFBZ0IsRTtBQUMxQixvQkFBSSxDQUFDLEtBQUtPLFdBQVYsRUFDRSxLQUFLQSxXQUFMLEdBQW1CLElBQUlDLDhCQUFKLENBQTBCO0FBQzNDQyxrQkFBQUEsS0FBSyxFQUFFLElBQUlDLGlCQUFKLENBQWE7QUFBRUMsb0JBQUFBLE9BQU8sRUFBRTtBQUFYLG1CQUFiLENBRG9DO0FBRTNDQyxrQkFBQUEsSUFBSSxFQUFFO0FBQUEsMkJBQU0sS0FBSSxDQUFDQyxNQUFMLENBQVliLElBQVosQ0FBTjtBQUFBO0FBRnFDLGlCQUExQixDQUFuQjtrREFJSyxLQUFLTyxXQUFMLENBQWlCTyxHQUFqQixDQUFxQixPQUFyQixFQUE4QixJQUE5QixFQUFvQ2QsSUFBSSxDQUFDZSxNQUF6QyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lIQUdPQyxLOzs7Ozs7O0FBQWVoQixnQkFBQUEsSSw4REFBZ0IsRTs7dUJBQzVCLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxDOzs7K0JBQTBCZ0IsSzs4Q0FBUmQsTzs7Ozs7OzsrQkFBa0IsRTs7O2lFQUFJZSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFib3J0YWJsZVByb21pc2VDYWNoZSBmcm9tICdhYm9ydGFibGUtcHJvbWlzZS1jYWNoZSdcbmltcG9ydCBRdWlja0xSVSBmcm9tICdxdWljay1scnUnXG5pbXBvcnQgeyBHZW5lcmljRmlsZWhhbmRsZSB9IGZyb20gJ2dlbmVyaWMtZmlsZWhhbmRsZSdcbmltcG9ydCBWaXJ0dWFsT2Zmc2V0IGZyb20gJy4vdmlydHVhbE9mZnNldCdcbmltcG9ydCBDaHVuayBmcm9tICcuL2NodW5rJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvLyBzdXBwb3J0IGhhdmluZyBzb21lIHVua25vd24gcGFydHMgb2YgdGhlIG9wdGlvbnNcbiAgW2tleTogc3RyaW5nXTogdW5rbm93blxuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxufVxuXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBJbmRleEZpbGUge1xuICBwdWJsaWMgZmlsZWhhbmRsZTogR2VuZXJpY0ZpbGVoYW5kbGVcbiAgcHVibGljIHJlbmFtZVJlZlNlcTogRnVuY3Rpb25cbiAgcHJpdmF0ZSBfcGFyc2VDYWNoZTogYW55XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZmlsZWhhbmRsZX0gZmlsZWhhbmRsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbcmVuYW1lUmVmU2Vxc11cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBmaWxlaGFuZGxlLFxuICAgIHJlbmFtZVJlZlNlcXMgPSAobjogc3RyaW5nKSA9PiBuLFxuICB9OiB7XG4gICAgZmlsZWhhbmRsZTogR2VuZXJpY0ZpbGVoYW5kbGVcbiAgICByZW5hbWVSZWZTZXFzPzogKGE6IHN0cmluZykgPT4gc3RyaW5nXG4gIH0pIHtcbiAgICB0aGlzLmZpbGVoYW5kbGUgPSBmaWxlaGFuZGxlXG4gICAgdGhpcy5yZW5hbWVSZWZTZXEgPSByZW5hbWVSZWZTZXFzXG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgYXN5bmMgbGluZUNvdW50KFxuICAgIHJlZk5hbWU6IHN0cmluZyxcbiAgICBhcmdzOiBPcHRpb25zLFxuICApOiBQcm9taXNlPG51bWJlcj5cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYXN5bmMgX3BhcnNlKFxuICAgIG9wdHM6IE9wdGlvbnMsXG4gICk6IFByb21pc2U8e1xuICAgIHJlZk5hbWVUb0lkOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9XG4gICAgcmVmSWRUb05hbWU6IHN0cmluZ1tdXG4gIH0+XG5cbiAgcHVibGljIGFzeW5jIGdldE1ldGFkYXRhKG9wdHM6IE9wdGlvbnMgPSB7fSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCB7IGluZGljZXMsIC4uLnJlc3QgfSA9IGF3YWl0IHRoaXMucGFyc2Uob3B0cylcbiAgICByZXR1cm4gcmVzdFxuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IGFzeW5jIGJsb2Nrc0ZvclJhbmdlKFxuICAgIHJlZk5hbWU6IHN0cmluZyxcbiAgICBzdGFydDogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9wdHM6IE9wdGlvbnMsXG4gICk6IFByb21pc2U8Q2h1bmtbXT5cblxuICBfZmluZEZpcnN0RGF0YShcbiAgICBjdXJyZW50RmRsOiBWaXJ0dWFsT2Zmc2V0IHwgdW5kZWZpbmVkLFxuICAgIHZpcnR1YWxPZmZzZXQ6IFZpcnR1YWxPZmZzZXQsXG4gICkge1xuICAgIGlmIChjdXJyZW50RmRsKSB7XG4gICAgICByZXR1cm4gY3VycmVudEZkbC5jb21wYXJlVG8odmlydHVhbE9mZnNldCkgPiAwXG4gICAgICAgID8gdmlydHVhbE9mZnNldFxuICAgICAgICA6IGN1cnJlbnRGZGxcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZpcnR1YWxPZmZzZXRcbiAgICB9XG4gIH1cblxuICBhc3luYyBwYXJzZShvcHRzOiBPcHRpb25zID0ge30pIHtcbiAgICBpZiAoIXRoaXMuX3BhcnNlQ2FjaGUpXG4gICAgICB0aGlzLl9wYXJzZUNhY2hlID0gbmV3IEFib3J0YWJsZVByb21pc2VDYWNoZSh7XG4gICAgICAgIGNhY2hlOiBuZXcgUXVpY2tMUlUoeyBtYXhTaXplOiAxIH0pLFxuICAgICAgICBmaWxsOiAoKSA9PiB0aGlzLl9wYXJzZShvcHRzKSxcbiAgICAgIH0pXG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlQ2FjaGUuZ2V0KCdpbmRleCcsIG51bGwsIG9wdHMuc2lnbmFsKVxuICB9XG5cbiAgYXN5bmMgaGFzUmVmU2VxKHNlcUlkOiBudW1iZXIsIG9wdHM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiAhISgoYXdhaXQgdGhpcy5wYXJzZShvcHRzKSkuaW5kaWNlc1tzZXFJZF0gfHwge30pLmJpbkluZGV4XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
import { GenericFilehandle } from 'generic-filehandle';
|
|
3
3
|
import { Options } from './indexFile';
|
|
4
4
|
import Chunk from './chunk';
|
|
5
|
+
declare type GetLinesCallback = (line: string, fileOffset: number) => void;
|
|
6
|
+
interface GetLinesOpts {
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
lineCallback: GetLinesCallback;
|
|
10
|
+
}
|
|
5
11
|
export default class TabixIndexedFile {
|
|
6
12
|
private filehandle;
|
|
7
13
|
private index;
|
|
8
14
|
private chunkSizeLimit;
|
|
9
15
|
private renameRefSeq;
|
|
10
|
-
private yieldLimit;
|
|
11
16
|
private chunkCache;
|
|
12
17
|
/**
|
|
13
18
|
* @param {object} args
|
|
@@ -17,17 +22,14 @@ export default class TabixIndexedFile {
|
|
|
17
22
|
* @param {filehandle} [args.tbiFilehandle]
|
|
18
23
|
* @param {string} [args.csiPath]
|
|
19
24
|
* @param {filehandle} [args.csiFilehandle]
|
|
20
|
-
* @param {
|
|
21
|
-
* default 2MiB
|
|
22
|
-
* @param {number} [args.yieldLimit] maximum number of lines to parse without yielding.
|
|
23
|
-
* this avoids having a large read prevent any other work getting done on the thread. default 300 lines.
|
|
25
|
+
* @param {chunkSizeLimit} default 50MiB
|
|
24
26
|
* @param {function} [args.renameRefSeqs] optional function with sig `string => string` to transform
|
|
25
27
|
* reference sequence names for the purpose of indexing and querying. note that the data that is returned is
|
|
26
28
|
* not altered, just the names of the reference sequences that are used for querying.
|
|
27
29
|
* @param {number} [args.chunkCacheSize] maximum size in bytes of the chunk cache. default 5MB
|
|
28
30
|
* @param {number} [args.blockCacheSize] maximum size in bytes of the block cache. default 5MB
|
|
29
31
|
*/
|
|
30
|
-
constructor({ path, filehandle, tbiPath, tbiFilehandle, csiPath, csiFilehandle, chunkSizeLimit,
|
|
32
|
+
constructor({ path, filehandle, tbiPath, tbiFilehandle, csiPath, csiFilehandle, chunkSizeLimit, renameRefSeqs, chunkCacheSize, }: {
|
|
31
33
|
path?: string;
|
|
32
34
|
filehandle?: GenericFilehandle;
|
|
33
35
|
tbiPath?: string;
|
|
@@ -35,7 +37,6 @@ export default class TabixIndexedFile {
|
|
|
35
37
|
csiPath?: string;
|
|
36
38
|
csiFilehandle?: GenericFilehandle;
|
|
37
39
|
chunkSizeLimit?: number;
|
|
38
|
-
yieldLimit?: number;
|
|
39
40
|
renameRefSeqs?: (n: string) => string;
|
|
40
41
|
chunkCacheSize?: number;
|
|
41
42
|
});
|
|
@@ -46,10 +47,7 @@ export default class TabixIndexedFile {
|
|
|
46
47
|
* @param {function|object} lineCallback callback called for each line in the region. can also pass a object param containing obj.lineCallback, obj.signal, etc
|
|
47
48
|
* @returns {Promise} resolved when the whole read is finished, rejected on error
|
|
48
49
|
*/
|
|
49
|
-
getLines(refName: string, start: number, end: number, opts:
|
|
50
|
-
signal?: AbortSignal;
|
|
51
|
-
lineCallback: Function;
|
|
52
|
-
} | Function): Promise<void>;
|
|
50
|
+
getLines(refName: string, start: number, end: number, opts: GetLinesOpts | GetLinesCallback): Promise<void>;
|
|
53
51
|
getMetadata(opts?: Options): Promise<any>;
|
|
54
52
|
/**
|
|
55
53
|
* get a buffer containing the "header" region of
|
|
@@ -117,3 +115,4 @@ export default class TabixIndexedFile {
|
|
|
117
115
|
*/
|
|
118
116
|
readChunk(chunk: Chunk, opts?: Options): Promise<any>;
|
|
119
117
|
}
|
|
118
|
+
export {};
|