@gmod/bbi 6.0.0 → 6.0.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/bbi.d.ts +3 -64
  3. package/dist/bbi.js +10 -1
  4. package/dist/bbi.js.map +1 -1
  5. package/dist/bigbed.d.ts +2 -1
  6. package/dist/bigbed.js +2 -3
  7. package/dist/bigbed.js.map +1 -1
  8. package/dist/bigint-polyfill/polyfill.js +3 -0
  9. package/dist/bigint-polyfill/polyfill.js.map +1 -1
  10. package/dist/bigint-polyfill/pure.js +3 -0
  11. package/dist/bigint-polyfill/pure.js.map +1 -1
  12. package/dist/bigwig.d.ts +2 -1
  13. package/dist/bigwig.js +1 -1
  14. package/dist/bigwig.js.map +1 -1
  15. package/dist/block-view.d.ts +3 -4
  16. package/dist/block-view.js +4 -11
  17. package/dist/block-view.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +0 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/types.d.ts +61 -0
  22. package/dist/types.js +3 -0
  23. package/dist/types.js.map +1 -0
  24. package/dist/unzip-pako.d.ts +1 -1
  25. package/esm/bbi.d.ts +3 -64
  26. package/esm/bbi.js +11 -2
  27. package/esm/bbi.js.map +1 -1
  28. package/esm/bigbed.d.ts +2 -1
  29. package/esm/bigbed.js +2 -3
  30. package/esm/bigbed.js.map +1 -1
  31. package/esm/bigint-polyfill/polyfill.js +3 -0
  32. package/esm/bigint-polyfill/polyfill.js.map +1 -1
  33. package/esm/bigint-polyfill/pure.js +3 -0
  34. package/esm/bigint-polyfill/pure.js.map +1 -1
  35. package/esm/bigwig.d.ts +2 -1
  36. package/esm/bigwig.js +1 -1
  37. package/esm/bigwig.js.map +1 -1
  38. package/esm/block-view.d.ts +3 -4
  39. package/esm/block-view.js +5 -12
  40. package/esm/block-view.js.map +1 -1
  41. package/esm/index.d.ts +1 -1
  42. package/esm/index.js +0 -3
  43. package/esm/index.js.map +1 -1
  44. package/esm/types.d.ts +61 -0
  45. package/esm/types.js +2 -0
  46. package/esm/types.js.map +1 -0
  47. package/esm/unzip-pako.d.ts +1 -1
  48. package/package.json +7 -6
  49. package/src/bbi.ts +28 -74
  50. package/src/bigbed.ts +5 -4
  51. package/src/bigint-polyfill/polyfill.ts +3 -0
  52. package/src/bigint-polyfill/pure.ts +4 -0
  53. package/src/bigwig.ts +3 -1
  54. package/src/block-view.ts +10 -15
  55. package/src/index.ts +1 -4
  56. package/src/types.ts +66 -0
package/src/block-view.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { Observer } from 'rxjs'
2
1
  import AbortablePromiseCache from '@gmod/abortable-promise-cache'
3
- import { GenericFilehandle } from 'generic-filehandle2'
4
2
  import QuickLRU from 'quick-lru'
5
3
 
6
- // locals
7
4
  import Range from './range'
8
5
  import { unzip } from './unzip'
9
- import { Feature } from './bbi'
10
- import { groupBlocks, checkAbortSignal } from './util'
6
+ import { checkAbortSignal, groupBlocks } from './util'
7
+
8
+ import type { Feature } from './types'
9
+ import type { GenericFilehandle } from 'generic-filehandle2'
10
+ import type { Observer } from 'rxjs'
11
11
 
12
12
  const decoder =
13
13
  typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined
@@ -37,7 +37,6 @@ function coordFilter(s1: number, e1: number, s2: number, e2: number): boolean {
37
37
  *
38
38
  * Adapted by Robert Buels and Colin Diesh from bigwig.js in the Dalliance
39
39
  * Genome Explorer by Thomas Down.
40
- * @constructs
41
40
  */
42
41
 
43
42
  export class BlockView {
@@ -46,11 +45,8 @@ export class BlockView {
46
45
  private featureCache = new AbortablePromiseCache<ReadData, Uint8Array>({
47
46
  cache: new QuickLRU({ maxSize: 1000 }),
48
47
 
49
- fill: async (requestData, signal) => {
50
- return this.bbi.read(requestData.length, requestData.offset, {
51
- signal,
52
- })
53
- },
48
+ fill: async ({ length, offset }, signal) =>
49
+ this.bbi.read(length, offset, { signal }),
54
50
  })
55
51
 
56
52
  public constructor(
@@ -73,14 +69,13 @@ export class BlockView {
73
69
  opts?: Options,
74
70
  ) {
75
71
  try {
76
- const { refsByName, bbi, cirTreeOffset } = this
77
- const chrId = refsByName[chrName]
72
+ const chrId = this.refsByName[chrName]
78
73
  if (chrId === undefined) {
79
74
  observer.complete()
80
75
  }
81
76
  const request = { chrId, start, end }
82
77
  if (!this.cirTreePromise) {
83
- this.cirTreePromise = bbi.read(48, cirTreeOffset, opts)
78
+ this.cirTreePromise = this.bbi.read(48, this.cirTreeOffset, opts)
84
79
  }
85
80
  const buffer = await this.cirTreePromise
86
81
  const dataView = new DataView(buffer.buffer)
@@ -243,7 +238,7 @@ export class BlockView {
243
238
  }
244
239
  }
245
240
 
246
- cirFobRecur([Number(cirTreeOffset) + 48], 1)
241
+ cirFobRecur([Number(this.cirTreeOffset) + 48], 1)
247
242
  return
248
243
  } catch (e) {
249
244
  observer.error(e)
package/src/index.ts CHANGED
@@ -1,7 +1,4 @@
1
- // from https://github.com/yume-chan/ya-webadb/blob/main/libraries/dataview-bigint-polyfill
2
- // license:MIT
3
- // needed for browsers including safari 14
4
1
  import './bigint-polyfill/polyfill'
5
2
  export { BigWig } from './bigwig'
6
3
  export { BigBed } from './bigbed'
7
- export { Feature, Header, RequestOptions } from './bbi'
4
+ export type { BigWigHeader, Feature, RequestOptions } from './types'
package/src/types.ts ADDED
@@ -0,0 +1,66 @@
1
+ export interface ZoomLevel {
2
+ reductionLevel: number
3
+ reserved: number
4
+ dataOffset: number
5
+ indexOffset: number
6
+ }
7
+
8
+ export interface Feature {
9
+ offset?: number
10
+ chromId: number
11
+ start: number
12
+ end: number
13
+ score?: number
14
+ rest?: string // for bigbed line
15
+ minScore?: number // for summary line
16
+ maxScore?: number // for summary line
17
+ summary?: boolean // is summary line
18
+ uniqueId?: string // for bigbed contains uniqueId calculated from file offset
19
+ field?: number // used in bigbed searching
20
+ }
21
+ export interface Statistics {
22
+ scoreSum: number
23
+ basesCovered: number
24
+ scoreSumSquares: number
25
+ scoreMin: number
26
+ scoreMax: number
27
+ }
28
+
29
+ export interface RefInfo {
30
+ name: string
31
+ id: number
32
+ length: number
33
+ }
34
+
35
+ export interface BigWigHeader {
36
+ magic: number
37
+ version: number
38
+ autoSql: string
39
+ totalSummary: Statistics
40
+ asOffset: number
41
+ zoomLevels: ZoomLevel[]
42
+ fieldCount: number
43
+ numZoomLevels: number
44
+ unzoomedIndexOffset: number
45
+ totalSummaryOffset: number
46
+ unzoomedDataOffset: number
47
+ definedFieldCount: number
48
+ uncompressBufSize: number
49
+ chromTreeOffset: number
50
+ extHeaderOffset: number
51
+ fileType: string
52
+ }
53
+ export interface BigWigHeaderWithRefNames extends BigWigHeader {
54
+ refsByName: Record<string, number>
55
+ refsByNumber: Record<number, RefInfo>
56
+ }
57
+
58
+ export interface RequestOptions {
59
+ signal?: AbortSignal
60
+ headers?: Record<string, string>
61
+ }
62
+
63
+ export interface RequestOptions2 extends RequestOptions {
64
+ scale?: number
65
+ basesPerSpan?: number
66
+ }