@gmod/cram 3.0.4 → 3.0.5

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.
Files changed (106) hide show
  1. package/dist/craiIndex.d.ts +3 -5
  2. package/dist/craiIndex.js +28 -30
  3. package/dist/craiIndex.js.map +1 -1
  4. package/dist/cram-bundle.js +1 -1
  5. package/dist/cramFile/codecs/byteArrayLength.js +3 -6
  6. package/dist/cramFile/codecs/byteArrayLength.js.map +1 -1
  7. package/dist/cramFile/codecs/byteArrayStop.d.ts +0 -1
  8. package/dist/cramFile/codecs/byteArrayStop.js +0 -6
  9. package/dist/cramFile/codecs/byteArrayStop.js.map +1 -1
  10. package/dist/cramFile/codecs/external.js +0 -1
  11. package/dist/cramFile/codecs/external.js.map +1 -1
  12. package/dist/cramFile/codecs/getBits.js.map +1 -1
  13. package/dist/cramFile/codecs/huffman.js +1 -2
  14. package/dist/cramFile/codecs/huffman.js.map +1 -1
  15. package/dist/cramFile/container/compressionScheme.d.ts +1 -1
  16. package/dist/cramFile/container/compressionScheme.js +12 -4
  17. package/dist/cramFile/container/compressionScheme.js.map +1 -1
  18. package/dist/cramFile/container/index.js +3 -1
  19. package/dist/cramFile/container/index.js.map +1 -1
  20. package/dist/cramFile/file.d.ts +1 -1
  21. package/dist/cramFile/file.js +9 -10
  22. package/dist/cramFile/file.js.map +1 -1
  23. package/dist/cramFile/record.js +1 -7
  24. package/dist/cramFile/record.js.map +1 -1
  25. package/dist/cramFile/sectionParsers.js.map +1 -1
  26. package/dist/cramFile/slice/decodeRecord.js +6 -11
  27. package/dist/cramFile/slice/decodeRecord.js.map +1 -1
  28. package/dist/cramFile/slice/index.d.ts +3 -2
  29. package/dist/cramFile/slice/index.js +10 -16
  30. package/dist/cramFile/slice/index.js.map +1 -1
  31. package/dist/cramFile/util.js.map +1 -1
  32. package/dist/indexedCramFile.js +0 -3
  33. package/dist/indexedCramFile.js.map +1 -1
  34. package/dist/rans/d04.js +1 -1
  35. package/dist/rans/d04.js.map +1 -1
  36. package/dist/rans/d14.js +1 -1
  37. package/dist/rans/d14.js.map +1 -1
  38. package/dist/rans/decoding.js +1 -1
  39. package/dist/rans/decoding.js.map +1 -1
  40. package/dist/rans/frequencies.js +1 -1
  41. package/dist/rans/frequencies.js.map +1 -1
  42. package/dist/rans/index.js +1 -1
  43. package/dist/rans/index.js.map +1 -1
  44. package/esm/craiIndex.d.ts +3 -5
  45. package/esm/craiIndex.js +63 -64
  46. package/esm/craiIndex.js.map +1 -1
  47. package/esm/cramFile/codecs/byteArrayLength.js +3 -6
  48. package/esm/cramFile/codecs/byteArrayLength.js.map +1 -1
  49. package/esm/cramFile/codecs/byteArrayStop.d.ts +0 -1
  50. package/esm/cramFile/codecs/byteArrayStop.js +0 -6
  51. package/esm/cramFile/codecs/byteArrayStop.js.map +1 -1
  52. package/esm/cramFile/codecs/external.js +0 -1
  53. package/esm/cramFile/codecs/external.js.map +1 -1
  54. package/esm/cramFile/codecs/getBits.js.map +1 -1
  55. package/esm/cramFile/codecs/huffman.js +1 -2
  56. package/esm/cramFile/codecs/huffman.js.map +1 -1
  57. package/esm/cramFile/container/compressionScheme.d.ts +1 -1
  58. package/esm/cramFile/container/compressionScheme.js +12 -4
  59. package/esm/cramFile/container/compressionScheme.js.map +1 -1
  60. package/esm/cramFile/container/index.js +3 -1
  61. package/esm/cramFile/container/index.js.map +1 -1
  62. package/esm/cramFile/file.d.ts +1 -1
  63. package/esm/cramFile/file.js +9 -10
  64. package/esm/cramFile/file.js.map +1 -1
  65. package/esm/cramFile/record.js +1 -7
  66. package/esm/cramFile/record.js.map +1 -1
  67. package/esm/cramFile/sectionParsers.js.map +1 -1
  68. package/esm/cramFile/slice/decodeRecord.js +6 -8
  69. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  70. package/esm/cramFile/slice/index.d.ts +3 -2
  71. package/esm/cramFile/slice/index.js +10 -16
  72. package/esm/cramFile/slice/index.js.map +1 -1
  73. package/esm/cramFile/util.js.map +1 -1
  74. package/esm/indexedCramFile.js +0 -3
  75. package/esm/indexedCramFile.js.map +1 -1
  76. package/esm/rans/d04.js +1 -1
  77. package/esm/rans/d04.js.map +1 -1
  78. package/esm/rans/d14.js +1 -1
  79. package/esm/rans/d14.js.map +1 -1
  80. package/esm/rans/decoding.js +1 -1
  81. package/esm/rans/decoding.js.map +1 -1
  82. package/esm/rans/frequencies.js +1 -1
  83. package/esm/rans/frequencies.js.map +1 -1
  84. package/esm/rans/index.js +1 -1
  85. package/esm/rans/index.js.map +1 -1
  86. package/package.json +9 -9
  87. package/src/craiIndex.ts +82 -81
  88. package/src/cramFile/codecs/byteArrayLength.ts +3 -8
  89. package/src/cramFile/codecs/byteArrayStop.ts +0 -12
  90. package/src/cramFile/codecs/external.ts +1 -2
  91. package/src/cramFile/codecs/getBits.ts +1 -1
  92. package/src/cramFile/codecs/huffman.ts +11 -12
  93. package/src/cramFile/container/compressionScheme.ts +38 -31
  94. package/src/cramFile/container/index.ts +3 -1
  95. package/src/cramFile/file.ts +9 -10
  96. package/src/cramFile/record.ts +3 -10
  97. package/src/cramFile/sectionParsers.ts +4 -4
  98. package/src/cramFile/slice/decodeRecord.ts +22 -32
  99. package/src/cramFile/slice/index.ts +16 -25
  100. package/src/cramFile/util.ts +36 -35
  101. package/src/indexedCramFile.ts +1 -4
  102. package/src/rans/d04.ts +1 -1
  103. package/src/rans/d14.ts +1 -1
  104. package/src/rans/decoding.ts +1 -1
  105. package/src/rans/frequencies.ts +1 -1
  106. package/src/rans/index.ts +1 -1
@@ -6,9 +6,9 @@ export interface Slice {
6
6
  sliceStart: number;
7
7
  sliceBytes: number;
8
8
  }
9
- type ParsedIndex = Record<string, Slice[]>;
9
+ type ParsedIndex = Record<string, Slice[] | undefined>;
10
10
  export default class CraiIndex {
11
- private _parseCache;
11
+ private parseIndexP?;
12
12
  private filehandle;
13
13
  /**
14
14
  *
@@ -19,9 +19,7 @@ export default class CraiIndex {
19
19
  */
20
20
  constructor(args: CramFileSource);
21
21
  parseIndex(): Promise<ParsedIndex>;
22
- getIndex(opts?: {
23
- signal?: AbortSignal;
24
- }): Promise<ParsedIndex>;
22
+ getIndex(): Promise<ParsedIndex>;
25
23
  /**
26
24
  * @param {number} seqId
27
25
  * @returns {Promise} true if the index contains entries for
package/dist/craiIndex.js CHANGED
@@ -8,29 +8,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const abortable_promise_cache_1 = __importDefault(require("@gmod/abortable-promise-cache"));
16
- const quick_lru_1 = __importDefault(require("quick-lru"));
17
12
  const unzip_1 = require("./unzip");
18
13
  const io_1 = require("./io");
19
14
  const errors_1 = require("./errors");
20
15
  const BAI_MAGIC = 21578050; // BAI\1
21
16
  function addRecordToIndex(index, record) {
22
17
  const [seqId, start, span, containerStart, sliceStart, sliceBytes] = record;
23
- if (!index[seqId]) {
24
- index[seqId] = [];
18
+ const s = seqId;
19
+ if (!index[s]) {
20
+ index[s] = [];
25
21
  }
26
- index[seqId].push({
27
- start,
28
- span,
29
- containerStart,
30
- sliceStart,
31
- sliceBytes,
22
+ index[s].push({
23
+ start: start,
24
+ span: span,
25
+ containerStart: containerStart,
26
+ sliceStart: sliceStart,
27
+ sliceBytes: sliceBytes,
32
28
  });
33
29
  }
30
+ function maybeUnzip(data) {
31
+ if (data[0] === 31 && data[1] === 139) {
32
+ return (0, unzip_1.unzip)(data);
33
+ }
34
+ return data;
35
+ }
34
36
  class CraiIndex {
35
37
  /**
36
38
  *
@@ -41,22 +43,11 @@ class CraiIndex {
41
43
  */
42
44
  constructor(args) {
43
45
  this.filehandle = (0, io_1.open)(args.url, args.path, args.filehandle);
44
- this._parseCache = new abortable_promise_cache_1.default({
45
- cache: new quick_lru_1.default({ maxSize: 1 }),
46
- fill: (_data, _signal) => this.parseIndex(),
47
- });
48
46
  }
49
47
  parseIndex() {
50
- const index = {};
51
- return this.filehandle
52
- .readFile()
53
- .then(data => {
54
- if (data[0] === 31 && data[1] === 139) {
55
- return (0, unzip_1.unzip)(data);
56
- }
57
- return data;
58
- })
59
- .then(uncompressedBuffer => {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const index = {};
50
+ const uncompressedBuffer = maybeUnzip(yield this.filehandle.readFile());
60
51
  if (uncompressedBuffer.length > 4 &&
61
52
  uncompressedBuffer.readUInt32LE(0) === BAI_MAGIC) {
62
53
  throw new errors_1.CramMalformedError('invalid .crai index file. note: file appears to be a .bai index. this is technically legal but please open a github issue if you need support');
@@ -97,13 +88,20 @@ class CraiIndex {
97
88
  }
98
89
  // sort each of them by start
99
90
  Object.entries(index).forEach(([seqId, ent]) => {
100
- index[seqId] = ent.sort((a, b) => a.start - b.start || a.span - b.span);
91
+ const e2 = ent;
92
+ index[seqId] = e2.sort((a, b) => a.start - b.start || a.span - b.span);
101
93
  });
102
94
  return index;
103
95
  });
104
96
  }
105
- getIndex(opts = {}) {
106
- return this._parseCache.get('index', null, opts.signal);
97
+ getIndex() {
98
+ if (!this.parseIndexP) {
99
+ this.parseIndexP = this.parseIndex().catch((e) => {
100
+ this.parseIndexP = undefined;
101
+ throw e;
102
+ });
103
+ }
104
+ return this.parseIndexP;
107
105
  }
108
106
  /**
109
107
  * @param {number} seqId
@@ -1 +1 @@
1
- {"version":3,"file":"craiIndex.js","sourceRoot":"","sources":["../src/craiIndex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"craiIndex.js","sourceRoot":"","sources":["../src/craiIndex.ts"],"names":[],"mappings":"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"}