@gmod/cram 2.0.4 → 3.0.0

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 (64) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cram-bundle.js +1 -1
  3. package/dist/cramFile/codecs/byteArrayLength.js +1 -1
  4. package/dist/cramFile/codecs/byteArrayLength.js.map +1 -1
  5. package/dist/cramFile/codecs/external.js +1 -1
  6. package/dist/cramFile/codecs/external.js.map +1 -1
  7. package/dist/cramFile/codecs/huffman.js +2 -1
  8. package/dist/cramFile/codecs/huffman.js.map +1 -1
  9. package/dist/cramFile/container/compressionScheme.d.ts +0 -3
  10. package/dist/cramFile/container/compressionScheme.js +0 -4
  11. package/dist/cramFile/container/compressionScheme.js.map +1 -1
  12. package/dist/cramFile/container/index.d.ts +56 -3
  13. package/dist/cramFile/container/index.js +15 -9
  14. package/dist/cramFile/container/index.js.map +1 -1
  15. package/dist/cramFile/file.d.ts +24 -59
  16. package/dist/cramFile/file.js +21 -26
  17. package/dist/cramFile/file.js.map +1 -1
  18. package/dist/cramFile/record.d.ts +1 -1
  19. package/dist/cramFile/sectionParsers.d.ts +195 -48
  20. package/dist/cramFile/sectionParsers.js +621 -303
  21. package/dist/cramFile/sectionParsers.js.map +1 -1
  22. package/dist/cramFile/slice/index.d.ts +23 -1
  23. package/dist/cramFile/slice/index.js +9 -6
  24. package/dist/cramFile/slice/index.js.map +1 -1
  25. package/dist/cramFile/util.d.ts +6 -4
  26. package/dist/cramFile/util.js +88 -6
  27. package/dist/cramFile/util.js.map +1 -1
  28. package/esm/cramFile/codecs/byteArrayLength.js +1 -1
  29. package/esm/cramFile/codecs/byteArrayLength.js.map +1 -1
  30. package/esm/cramFile/codecs/external.js +1 -1
  31. package/esm/cramFile/codecs/external.js.map +1 -1
  32. package/esm/cramFile/codecs/huffman.js +2 -1
  33. package/esm/cramFile/codecs/huffman.js.map +1 -1
  34. package/esm/cramFile/container/compressionScheme.d.ts +0 -3
  35. package/esm/cramFile/container/compressionScheme.js +0 -4
  36. package/esm/cramFile/container/compressionScheme.js.map +1 -1
  37. package/esm/cramFile/container/index.d.ts +56 -3
  38. package/esm/cramFile/container/index.js +15 -9
  39. package/esm/cramFile/container/index.js.map +1 -1
  40. package/esm/cramFile/file.d.ts +24 -59
  41. package/esm/cramFile/file.js +22 -25
  42. package/esm/cramFile/file.js.map +1 -1
  43. package/esm/cramFile/record.d.ts +1 -1
  44. package/esm/cramFile/sectionParsers.d.ts +195 -48
  45. package/esm/cramFile/sectionParsers.js +620 -303
  46. package/esm/cramFile/sectionParsers.js.map +1 -1
  47. package/esm/cramFile/slice/index.d.ts +23 -1
  48. package/esm/cramFile/slice/index.js +10 -7
  49. package/esm/cramFile/slice/index.js.map +1 -1
  50. package/esm/cramFile/util.d.ts +6 -4
  51. package/esm/cramFile/util.js +87 -6
  52. package/esm/cramFile/util.js.map +1 -1
  53. package/package.json +7 -8
  54. package/src/cramFile/codecs/byteArrayLength.ts +1 -2
  55. package/src/cramFile/codecs/external.ts +1 -1
  56. package/src/cramFile/codecs/huffman.ts +2 -1
  57. package/src/cramFile/container/compressionScheme.ts +1 -8
  58. package/src/cramFile/container/index.ts +21 -10
  59. package/src/cramFile/file.ts +28 -43
  60. package/src/cramFile/record.ts +1 -1
  61. package/src/cramFile/sectionParsers.ts +668 -390
  62. package/src/cramFile/slice/index.ts +11 -5
  63. package/src/cramFile/util.ts +90 -91
  64. package/src/typings/binary-parser.d.ts +0 -44
@@ -1,13 +1,50 @@
1
- import { Parser } from '@gmod/binary-parser';
2
1
  import { TupleOf } from '../typescript';
3
- import { ParsedItem } from './util';
4
2
  import { DataSeriesEncodingMap } from './codecs/dataSeriesTypes';
5
3
  import { CramEncoding } from './encoding';
6
- declare const cramFileDefinition: {
7
- parser: Parser<unknown>;
4
+ export declare function cramFileDefinition(): {
5
+ parser: (buffer: Buffer, _startOffset?: number) => {
6
+ value: {
7
+ magic: string;
8
+ majorVersion: number;
9
+ minorVersion: number;
10
+ fileId: string;
11
+ };
12
+ offset: number;
13
+ };
14
+ maxLength: number;
15
+ };
16
+ export declare function cramBlockHeader(): {
17
+ parser: (buffer: Buffer, _startOffset?: number) => {
18
+ offset: number;
19
+ value: {
20
+ uncompressedSize: number;
21
+ compressedSize: number;
22
+ contentId: number;
23
+ contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA";
24
+ compressionMethod: CompressionMethod;
25
+ };
26
+ };
27
+ maxLength: number;
28
+ };
29
+ export declare function cramBlockCrc32(): {
30
+ parser: (buffer: Buffer, offset: number) => {
31
+ offset: number;
32
+ value: {
33
+ crc32: number;
34
+ };
35
+ };
8
36
  maxLength: number;
9
37
  };
10
38
  export type CramTagDictionary = string[][];
39
+ export declare function cramTagDictionary(): {
40
+ parser: (buffer: Buffer, offset: number) => {
41
+ value: {
42
+ size: number;
43
+ ents: string[][];
44
+ };
45
+ offset: number;
46
+ };
47
+ };
11
48
  export interface CramPreservationMap {
12
49
  MI: boolean;
13
50
  UI: boolean;
@@ -18,6 +55,25 @@ export interface CramPreservationMap {
18
55
  SM: [number, number, number, number, number];
19
56
  TD: CramTagDictionary;
20
57
  }
58
+ export declare function cramPreservationMap(): {
59
+ parser: (buffer: Buffer, offset: number) => {
60
+ value: {
61
+ mapSize: number;
62
+ mapCount: number;
63
+ ents: ({
64
+ key: string;
65
+ value: boolean;
66
+ } | {
67
+ key: string;
68
+ value: number[];
69
+ } | {
70
+ key: string;
71
+ value: string[][];
72
+ })[];
73
+ };
74
+ offset: number;
75
+ };
76
+ };
21
77
  export interface MappedSliceHeader {
22
78
  refSeqId: number;
23
79
  refSeqStart: number;
@@ -28,7 +84,7 @@ export interface MappedSliceHeader {
28
84
  numContentIds: number;
29
85
  contentIds: number[];
30
86
  refBaseBlockId: number;
31
- md5: TupleOf<number, 16>;
87
+ md5?: TupleOf<number, 16>;
32
88
  }
33
89
  export interface UnmappedSliceHeader {
34
90
  numRecords: number;
@@ -36,9 +92,14 @@ export interface UnmappedSliceHeader {
36
92
  numBlocks: number;
37
93
  numContentIds: number;
38
94
  contentIds: number[];
39
- md5: TupleOf<number, 16>;
95
+ md5?: TupleOf<number, 16>;
96
+ }
97
+ export declare function isMappedSliceHeader(header: unknown): header is MappedSliceHeader;
98
+ interface Value {
99
+ codecId: number;
100
+ parametersBytes: number;
101
+ parameters: Record<string, unknown>;
40
102
  }
41
- export declare function isMappedSliceHeader(header: MappedSliceHeader | UnmappedSliceHeader): header is MappedSliceHeader;
42
103
  export type CompressionMethod = 'raw' | 'gzip' | 'bzip2' | 'lzma' | 'rans' | 'rans4x16' | 'arith' | 'fqzcomp' | 'tok3';
43
104
  export interface BlockHeader {
44
105
  compressionMethod: CompressionMethod;
@@ -47,63 +108,149 @@ export interface BlockHeader {
47
108
  compressedSize: number;
48
109
  uncompressedSize: number;
49
110
  }
50
- export type CramCompressionHeader = ParsedItem<{
111
+ export interface CramCompressionHeader {
51
112
  preservation: CramPreservationMap;
52
113
  dataSeriesEncoding: DataSeriesEncodingMap;
53
114
  tagEncoding: Record<string, CramEncoding>;
54
- }>;
55
- declare function getSectionParsers(majorVersion: number): {
115
+ _size: number;
116
+ _endPosition: number;
117
+ }
118
+ export declare function getSectionParsers(majorVersion: number): {
56
119
  cramFileDefinition: {
57
- parser: Parser<{
58
- magic: string;
59
- majorVersion: number;
60
- minorVersion: number;
61
- fileId: string;
62
- }>;
120
+ parser: (buffer: Buffer, _startOffset?: number) => {
121
+ value: {
122
+ magic: string;
123
+ majorVersion: number;
124
+ minorVersion: number;
125
+ fileId: string;
126
+ };
127
+ offset: number;
128
+ };
63
129
  maxLength: number;
64
130
  };
65
- cramContainerHeader1: {
66
- parser: Parser<{
67
- length: number;
68
- refSeqId: number;
69
- refSeqStart: number;
70
- alignmentSpan: number;
71
- numRecords: number;
72
- recordCounter: number;
73
- numBases: number;
74
- numBlocks: number;
75
- numLandmarks: number;
76
- }>;
77
- maxLength: number;
78
- };
79
- cramContainerHeader2: {
80
- parser: Parser<{
81
- numLandmarks: number;
82
- landmarks: number[];
83
- crc32: number;
84
- }>;
85
- maxLength: (x: number) => number;
86
- };
87
131
  cramBlockHeader: {
88
- parser: Parser<BlockHeader>;
132
+ parser: (buffer: Buffer, _startOffset?: number) => {
133
+ offset: number;
134
+ value: {
135
+ uncompressedSize: number;
136
+ compressedSize: number;
137
+ contentId: number;
138
+ contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA";
139
+ compressionMethod: CompressionMethod;
140
+ };
141
+ };
89
142
  maxLength: number;
90
143
  };
91
144
  cramBlockCrc32: {
92
- parser: Parser<{
93
- crc32: number;
94
- }>;
145
+ parser: (buffer: Buffer, offset: number) => {
146
+ offset: number;
147
+ value: {
148
+ crc32: number;
149
+ };
150
+ };
95
151
  maxLength: number;
96
152
  };
153
+ cramDataSeriesEncodingMap: {
154
+ parser: (buffer: Buffer, offset: number) => {
155
+ value: {
156
+ mapSize: number;
157
+ ents: {
158
+ key: string;
159
+ value: Value;
160
+ }[];
161
+ mapCount: number;
162
+ };
163
+ offset: number;
164
+ };
165
+ };
166
+ cramTagEncodingMap: {
167
+ parser: (buffer: Buffer, offset: number) => {
168
+ value: {
169
+ mapSize: number;
170
+ ents: {
171
+ key: string;
172
+ value: Value;
173
+ }[];
174
+ mapCount: number;
175
+ };
176
+ offset: number;
177
+ };
178
+ };
97
179
  cramCompressionHeader: {
98
- parser: Parser<CramCompressionHeader>;
180
+ parser: (buffer: Buffer, offset: number) => {
181
+ value: {
182
+ dataSeriesEncoding: DataSeriesEncodingMap;
183
+ preservation: CramPreservationMap;
184
+ tagEncoding: Record<string, CramEncoding>;
185
+ };
186
+ offset: number;
187
+ };
99
188
  };
100
- cramMappedSliceHeader: {
101
- parser: Parser<MappedSliceHeader>;
102
- maxLength: (numContentIds: number) => number;
189
+ cramEncoding: {
190
+ parser: (buffer: Buffer, offset: number) => {
191
+ value: Value;
192
+ offset: number;
193
+ };
103
194
  };
104
195
  cramUnmappedSliceHeader: {
105
- parser: Parser<UnmappedSliceHeader>;
196
+ parser: (buffer: Buffer, offset: number) => {
197
+ value: {
198
+ recordCounter: number;
199
+ md5: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number] | undefined;
200
+ contentIds: number[];
201
+ numContentIds: number;
202
+ numBlocks: number;
203
+ numRecords: number;
204
+ };
205
+ offset: number;
206
+ };
207
+ maxLength: (numContentIds: number) => number;
208
+ };
209
+ cramMappedSliceHeader: {
210
+ parser: (buffer: Buffer, offset: number) => {
211
+ value: {
212
+ md5: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number] | undefined;
213
+ numBlocks: number;
214
+ numRecords: number;
215
+ numContentIds: number;
216
+ refSeqSpan: number;
217
+ refSeqId: number;
218
+ refSeqStart: number;
219
+ recordCounter: number;
220
+ refBaseBlockId: number;
221
+ contentIds: number[];
222
+ };
223
+ offset: number;
224
+ };
106
225
  maxLength: (numContentIds: number) => number;
107
226
  };
227
+ cramContainerHeader1: {
228
+ maxLength: number;
229
+ parser: (buffer: Buffer, offset: number) => {
230
+ value: {
231
+ length: number;
232
+ refSeqId: number;
233
+ refSeqStart: number;
234
+ alignmentSpan: number;
235
+ numBlocks: number;
236
+ numLandmarks: number;
237
+ numBases: number | undefined;
238
+ recordCounter: number;
239
+ numRecords: number;
240
+ };
241
+ offset: number;
242
+ };
243
+ };
244
+ cramContainerHeader2: {
245
+ parser: (buffer: Buffer, offset: number) => {
246
+ value: {
247
+ numLandmarks: number;
248
+ landmarks: number[];
249
+ crc32?: number | undefined;
250
+ };
251
+ offset: number;
252
+ };
253
+ maxLength: (numLandmarks: number) => number;
254
+ };
108
255
  };
109
- export { cramFileDefinition, getSectionParsers };
256
+ export {};