loom-browser 0.0.1

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 (290) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +287 -0
  3. package/dist/igv.d.ts +667 -0
  4. package/dist/igv.esm.js +76708 -0
  5. package/dist/igv.esm.min.js +26 -0
  6. package/dist/igv.esm.min.js.map +1 -0
  7. package/dist/igv.js +76716 -0
  8. package/dist/igv.min.js +26 -0
  9. package/dist/igv.min.js.map +1 -0
  10. package/dist/loom.d.ts +667 -0
  11. package/dist/loom.esm.js +14927 -0
  12. package/dist/loom.esm.min.js +2 -0
  13. package/dist/loom.esm.min.js.map +1 -0
  14. package/dist/loom.js +15114 -0
  15. package/dist/loom.min.js +2 -0
  16. package/dist/loom.min.js.map +1 -0
  17. package/dist/types/agent/index.d.ts +4 -0
  18. package/dist/types/agent/stateProjection.d.ts +115 -0
  19. package/dist/types/agent/trackSelector.d.ts +31 -0
  20. package/dist/types/baseTrackCanvas.d.ts +62 -0
  21. package/dist/types/bigwig/binaryParser.d.ts +25 -0
  22. package/dist/types/bigwig/bpTree.d.ts +40 -0
  23. package/dist/types/bigwig/bwReader.d.ts +69 -0
  24. package/dist/types/bigwig/chromTree.d.ts +28 -0
  25. package/dist/types/bigwig/index.d.ts +66 -0
  26. package/dist/types/bigwig/inflate.d.ts +9 -0
  27. package/dist/types/bigwig/rangeReader.d.ts +48 -0
  28. package/dist/types/bigwig/rpTree.d.ts +27 -0
  29. package/dist/types/canvasProvider.d.ts +36 -0
  30. package/dist/types/commandDispatcher.d.ts +199 -0
  31. package/dist/types/contextMenu.d.ts +64 -0
  32. package/dist/types/contextMenuProvider.d.ts +25 -0
  33. package/dist/types/data/cachedSequence.d.ts +19 -0
  34. package/dist/types/data/ucscApi.d.ts +21 -0
  35. package/dist/types/data/ucscSequence.d.ts +19 -0
  36. package/dist/types/dataLifecycle.d.ts +16 -0
  37. package/dist/types/dataSources/bigWigDataSource.d.ts +24 -0
  38. package/dist/types/dataSources/dataSourceCacheKey.d.ts +9 -0
  39. package/dist/types/dataSources/dynseqDataSource.d.ts +20 -0
  40. package/dist/types/dataSources/featureSourceFactory.d.ts +46 -0
  41. package/dist/types/dataSources/geneDataSource.d.ts +16 -0
  42. package/dist/types/dataSources/gtxDataSource.d.ts +42 -0
  43. package/dist/types/dataSources/sequenceDataSource.d.ts +15 -0
  44. package/dist/types/dataSources/textFeatureSource.d.ts +63 -0
  45. package/dist/types/decode/bed.d.ts +64 -0
  46. package/dist/types/decode/bedpe.d.ts +36 -0
  47. package/dist/types/decode/exonUtils.d.ts +29 -0
  48. package/dist/types/decode/gff.d.ts +58 -0
  49. package/dist/types/decode/interact.d.ts +19 -0
  50. package/dist/types/decode/ucsc.d.ts +56 -0
  51. package/dist/types/dynseqRenderer.d.ts +37 -0
  52. package/dist/types/events.d.ts +23 -0
  53. package/dist/types/export/canvas2svg.d.ts +166 -0
  54. package/dist/types/export/index.d.ts +2 -0
  55. package/dist/types/featureCache.d.ts +69 -0
  56. package/dist/types/formats/featureParser.d.ts +72 -0
  57. package/dist/types/formats/formatDetection.d.ts +46 -0
  58. package/dist/types/geneRenderer.d.ts +17 -0
  59. package/dist/types/geneThemes.d.ts +11 -0
  60. package/dist/types/geneTrackCanvas.d.ts +46 -0
  61. package/dist/types/genome/chromAlias.d.ts +46 -0
  62. package/dist/types/genome/chromSizes.d.ts +53 -0
  63. package/dist/types/genome/genome.d.ts +51 -0
  64. package/dist/types/genomeBrowser.d.ts +189 -0
  65. package/dist/types/gtx/fetchCoordinator.d.ts +34 -0
  66. package/dist/types/gtx/gtxReader.d.ts +144 -0
  67. package/dist/types/gtx/index.d.ts +40 -0
  68. package/dist/types/gtx/zstdWasm.d.ts +22 -0
  69. package/dist/types/headlessGenomeBrowser.d.ts +450 -0
  70. package/dist/types/index.d.ts +123 -0
  71. package/dist/types/intervalTree.d.ts +56 -0
  72. package/dist/types/io/binaryParser.d.ts +25 -0
  73. package/dist/types/io/index.d.ts +7 -0
  74. package/dist/types/io/rangeReader.d.ts +48 -0
  75. package/dist/types/locusUtils.d.ts +37 -0
  76. package/dist/types/pack.d.ts +41 -0
  77. package/dist/types/popupProvider.d.ts +22 -0
  78. package/dist/types/remoteProtocol.d.ts +79 -0
  79. package/dist/types/renderTheme.d.ts +72 -0
  80. package/dist/types/renderThemePresets.d.ts +16 -0
  81. package/dist/types/roi/index.d.ts +3 -0
  82. package/dist/types/roi/roiRenderer.d.ts +24 -0
  83. package/dist/types/roi/roiSet.d.ts +41 -0
  84. package/dist/types/rulerRenderer.d.ts +14 -0
  85. package/dist/types/rulerTrackCanvas.d.ts +32 -0
  86. package/dist/types/sequence/sequenceUtils.d.ts +44 -0
  87. package/dist/types/session.d.ts +55 -0
  88. package/dist/types/src/bigwig/index.d.ts +66 -0
  89. package/dist/types/src/canvasProvider.d.ts +36 -0
  90. package/dist/types/src/commandDispatcher.d.ts +220 -0
  91. package/dist/types/src/contextMenu.d.ts +64 -0
  92. package/dist/types/src/contextMenuProvider.d.ts +25 -0
  93. package/dist/types/src/data/cachedSequence.d.ts +19 -0
  94. package/dist/types/src/data/ucscApi.d.ts +21 -0
  95. package/dist/types/src/data/ucscSequence.d.ts +19 -0
  96. package/dist/types/src/dataLifecycle.d.ts +16 -0
  97. package/dist/types/src/dataSources/bigWigDataSource.d.ts +24 -0
  98. package/dist/types/src/dataSources/dataSourceCacheKey.d.ts +9 -0
  99. package/dist/types/src/dataSources/featureSourceFactory.d.ts +46 -0
  100. package/dist/types/src/dataSources/geneDataSource.d.ts +16 -0
  101. package/dist/types/src/dataSources/gtxDataSource.d.ts +42 -0
  102. package/dist/types/src/dataSources/sequenceDataSource.d.ts +15 -0
  103. package/dist/types/src/dataSources/textFeatureSource.d.ts +63 -0
  104. package/dist/types/src/decode/bed.d.ts +64 -0
  105. package/dist/types/src/decode/bedpe.d.ts +36 -0
  106. package/dist/types/src/decode/exonUtils.d.ts +29 -0
  107. package/dist/types/src/decode/gff.d.ts +58 -0
  108. package/dist/types/src/decode/interact.d.ts +19 -0
  109. package/dist/types/src/decode/ucsc.d.ts +56 -0
  110. package/dist/types/src/events.d.ts +23 -0
  111. package/dist/types/src/export/canvas2svg.d.ts +166 -0
  112. package/dist/types/src/export/index.d.ts +2 -0
  113. package/dist/types/src/featureCache.d.ts +69 -0
  114. package/dist/types/src/formats/featureParser.d.ts +72 -0
  115. package/dist/types/src/formats/formatDetection.d.ts +46 -0
  116. package/dist/types/src/genome/chromAlias.d.ts +46 -0
  117. package/dist/types/src/genome/chromSizes.d.ts +53 -0
  118. package/dist/types/src/genome/genome.d.ts +51 -0
  119. package/dist/types/src/genomeBrowser.d.ts +189 -0
  120. package/dist/types/src/gtx/fetchCoordinator.d.ts +34 -0
  121. package/dist/types/src/gtx/gtxReader.d.ts +144 -0
  122. package/dist/types/src/gtx/index.d.ts +40 -0
  123. package/dist/types/src/gtx/zstdWasm.d.ts +22 -0
  124. package/dist/types/src/headlessGenomeBrowser.d.ts +450 -0
  125. package/dist/types/src/index.d.ts +123 -0
  126. package/dist/types/src/intervalTree.d.ts +56 -0
  127. package/dist/types/src/io/binaryParser.d.ts +25 -0
  128. package/dist/types/src/io/index.d.ts +7 -0
  129. package/dist/types/src/io/rangeReader.d.ts +48 -0
  130. package/dist/types/src/locusUtils.d.ts +37 -0
  131. package/dist/types/src/pack.d.ts +41 -0
  132. package/dist/types/src/popupProvider.d.ts +22 -0
  133. package/dist/types/src/remoteProtocol.d.ts +81 -0
  134. package/dist/types/src/roi/index.d.ts +3 -0
  135. package/dist/types/src/roi/roiRenderer.d.ts +24 -0
  136. package/dist/types/src/roi/roiSet.d.ts +41 -0
  137. package/dist/types/src/sequence/sequenceUtils.d.ts +44 -0
  138. package/dist/types/src/session.d.ts +55 -0
  139. package/dist/types/src/stateProjection.d.ts +115 -0
  140. package/dist/types/src/tabix/index.d.ts +48 -0
  141. package/dist/types/src/themes/index.d.ts +3 -0
  142. package/dist/types/src/themes/renderTheme.d.ts +86 -0
  143. package/dist/types/src/themes/renderThemePresets.d.ts +16 -0
  144. package/dist/types/src/trackRegistry.d.ts +81 -0
  145. package/dist/types/src/trackSelector.d.ts +31 -0
  146. package/dist/types/src/tracks/annotation/annotationRenderer.d.ts +17 -0
  147. package/dist/types/src/tracks/annotation/annotationThemes.d.ts +11 -0
  148. package/dist/types/src/tracks/annotation/annotationTrackCanvas.d.ts +58 -0
  149. package/dist/types/src/tracks/annotation/index.d.ts +4 -0
  150. package/dist/types/src/tracks/axis/axisRenderer.d.ts +19 -0
  151. package/dist/types/src/tracks/axis/index.d.ts +1 -0
  152. package/dist/types/src/tracks/baseTrackCanvas.d.ts +113 -0
  153. package/dist/types/src/tracks/dynseq/dynseqRenderer.d.ts +38 -0
  154. package/dist/types/src/tracks/dynseq/index.d.ts +1 -0
  155. package/dist/types/src/tracks/index.d.ts +7 -0
  156. package/dist/types/src/tracks/interaction/index.d.ts +4 -0
  157. package/dist/types/src/tracks/interaction/interactionRenderer.d.ts +52 -0
  158. package/dist/types/src/tracks/interaction/interactionTrackCanvas.d.ts +54 -0
  159. package/dist/types/src/tracks/ruler/index.d.ts +3 -0
  160. package/dist/types/src/tracks/ruler/rulerRenderer.d.ts +25 -0
  161. package/dist/types/src/tracks/ruler/rulerTrackCanvas.d.ts +43 -0
  162. package/dist/types/src/tracks/sequence/index.d.ts +5 -0
  163. package/dist/types/src/tracks/sequence/sequenceRenderer.d.ts +34 -0
  164. package/dist/types/src/tracks/sequence/sequenceThemes.d.ts +11 -0
  165. package/dist/types/src/tracks/sequence/sequenceTrackCanvas.d.ts +67 -0
  166. package/dist/types/src/tracks/wig/index.d.ts +5 -0
  167. package/dist/types/src/tracks/wig/wigRenderer.d.ts +15 -0
  168. package/dist/types/src/tracks/wig/wigSummary.d.ts +31 -0
  169. package/dist/types/src/tracks/wig/wigThemes.d.ts +15 -0
  170. package/dist/types/src/tracks/wig/wigTrackCanvas.d.ts +82 -0
  171. package/dist/types/src/types.d.ts +885 -0
  172. package/dist/types/src/ui/components/LoomBrowserShell.d.ts +52 -0
  173. package/dist/types/src/ui/components/LoomChromosomeSelect.d.ts +18 -0
  174. package/dist/types/src/ui/components/LoomContextMenu.d.ts +39 -0
  175. package/dist/types/src/ui/components/LoomExportControls.d.ts +13 -0
  176. package/dist/types/src/ui/components/LoomInputDialog.d.ts +27 -0
  177. package/dist/types/src/ui/components/LoomLocusInput.d.ts +18 -0
  178. package/dist/types/src/ui/components/LoomNavbar.d.ts +15 -0
  179. package/dist/types/src/ui/components/LoomPopup.d.ts +32 -0
  180. package/dist/types/src/ui/components/LoomWindowSize.d.ts +14 -0
  181. package/dist/types/src/ui/components/LoomZoomControls.d.ts +10 -0
  182. package/dist/types/src/ui/index.d.ts +21 -0
  183. package/dist/types/src/ui/themes.d.ts +14 -0
  184. package/dist/types/src/worker/nodeWorkerProvider.d.ts +28 -0
  185. package/dist/types/src/worker/taskHandler.d.ts +15 -0
  186. package/dist/types/src/worker/webWorkerProvider.d.ts +51 -0
  187. package/dist/types/src/worker/workerScript.d.ts +11 -0
  188. package/dist/types/src/workerProvider.d.ts +76 -0
  189. package/dist/types/stateProjection.d.ts +115 -0
  190. package/dist/types/tabix/bgzBlockLoader.d.ts +60 -0
  191. package/dist/types/tabix/bgzf.d.ts +43 -0
  192. package/dist/types/tabix/index.d.ts +48 -0
  193. package/dist/types/tabix/tabixIndex.d.ts +85 -0
  194. package/dist/types/tabix/tabixReader.d.ts +60 -0
  195. package/dist/types/tabix/virtualOffset.d.ts +41 -0
  196. package/dist/types/test/src/mockCanvasProvider.d.ts +67 -0
  197. package/dist/types/test/src/testBedDecode.d.ts +1 -0
  198. package/dist/types/test/src/testCanvas2SVG.d.ts +7 -0
  199. package/dist/types/test/src/testChromAlias.d.ts +1 -0
  200. package/dist/types/test/src/testCommandDispatcher.d.ts +1 -0
  201. package/dist/types/test/src/testData.d.ts +7 -0
  202. package/dist/types/test/src/testDataLifecycle.d.ts +1 -0
  203. package/dist/types/test/src/testDataSourceCacheKey.d.ts +1 -0
  204. package/dist/types/test/src/testDataSources.d.ts +5 -0
  205. package/dist/types/test/src/testDecodeUcsc.d.ts +1 -0
  206. package/dist/types/test/src/testEvents.d.ts +1 -0
  207. package/dist/types/test/src/testFeatureCache.d.ts +1 -0
  208. package/dist/types/test/src/testFeatureParser.d.ts +1 -0
  209. package/dist/types/test/src/testFormatDetection.d.ts +1 -0
  210. package/dist/types/test/src/testGffDecode.d.ts +1 -0
  211. package/dist/types/test/src/testHeadlessBrowser.d.ts +1 -0
  212. package/dist/types/test/src/testInteractionDecoder.d.ts +1 -0
  213. package/dist/types/test/src/testIntervalTree.d.ts +1 -0
  214. package/dist/types/test/src/testLocusUtils.d.ts +1 -0
  215. package/dist/types/test/src/testPack.d.ts +1 -0
  216. package/dist/types/test/src/testROI.d.ts +1 -0
  217. package/dist/types/test/src/testRemoteProtocol.d.ts +1 -0
  218. package/dist/types/test/src/testRenderTheme.d.ts +1 -0
  219. package/dist/types/test/src/testSVGExport.d.ts +5 -0
  220. package/dist/types/test/src/testSequence.d.ts +1 -0
  221. package/dist/types/test/src/testSession.d.ts +1 -0
  222. package/dist/types/test/src/testTrackSelector.d.ts +1 -0
  223. package/dist/types/test/src/testTrackSerialize.d.ts +1 -0
  224. package/dist/types/test/src/testWigSummary.d.ts +1 -0
  225. package/dist/types/test/src/testWorkerDispatch.d.ts +9 -0
  226. package/dist/types/themes/index.d.ts +3 -0
  227. package/dist/types/themes/renderTheme.d.ts +86 -0
  228. package/dist/types/themes/renderThemePresets.d.ts +16 -0
  229. package/dist/types/trackRegistry.d.ts +81 -0
  230. package/dist/types/trackSelector.d.ts +31 -0
  231. package/dist/types/tracks/annotation/annotationRenderer.d.ts +17 -0
  232. package/dist/types/tracks/annotation/annotationThemes.d.ts +11 -0
  233. package/dist/types/tracks/annotation/annotationTrackCanvas.d.ts +58 -0
  234. package/dist/types/tracks/annotation/index.d.ts +4 -0
  235. package/dist/types/tracks/axis/axisRenderer.d.ts +19 -0
  236. package/dist/types/tracks/axis/index.d.ts +1 -0
  237. package/dist/types/tracks/baseTrackCanvas.d.ts +113 -0
  238. package/dist/types/tracks/dynseq/dynseqRenderer.d.ts +38 -0
  239. package/dist/types/tracks/dynseq/index.d.ts +1 -0
  240. package/dist/types/tracks/gene/geneRenderer.d.ts +17 -0
  241. package/dist/types/tracks/gene/geneThemes.d.ts +11 -0
  242. package/dist/types/tracks/gene/geneTrackCanvas.d.ts +58 -0
  243. package/dist/types/tracks/gene/index.d.ts +4 -0
  244. package/dist/types/tracks/index.d.ts +7 -0
  245. package/dist/types/tracks/interaction/index.d.ts +4 -0
  246. package/dist/types/tracks/interaction/interactionRenderer.d.ts +52 -0
  247. package/dist/types/tracks/interaction/interactionTrackCanvas.d.ts +54 -0
  248. package/dist/types/tracks/ruler/index.d.ts +3 -0
  249. package/dist/types/tracks/ruler/rulerRenderer.d.ts +25 -0
  250. package/dist/types/tracks/ruler/rulerTrackCanvas.d.ts +43 -0
  251. package/dist/types/tracks/sequence/index.d.ts +5 -0
  252. package/dist/types/tracks/sequence/sequenceRenderer.d.ts +34 -0
  253. package/dist/types/tracks/sequence/sequenceThemes.d.ts +11 -0
  254. package/dist/types/tracks/sequence/sequenceTrackCanvas.d.ts +67 -0
  255. package/dist/types/tracks/wig/index.d.ts +5 -0
  256. package/dist/types/tracks/wig/wigRenderer.d.ts +15 -0
  257. package/dist/types/tracks/wig/wigSummary.d.ts +31 -0
  258. package/dist/types/tracks/wig/wigThemes.d.ts +15 -0
  259. package/dist/types/tracks/wig/wigTrackCanvas.d.ts +82 -0
  260. package/dist/types/types.d.ts +885 -0
  261. package/dist/types/ui/components/IgvBrowserShell.d.ts +52 -0
  262. package/dist/types/ui/components/IgvChromosomeSelect.d.ts +18 -0
  263. package/dist/types/ui/components/IgvExportControls.d.ts +13 -0
  264. package/dist/types/ui/components/IgvLocusInput.d.ts +18 -0
  265. package/dist/types/ui/components/IgvNavbar.d.ts +15 -0
  266. package/dist/types/ui/components/IgvWindowSize.d.ts +14 -0
  267. package/dist/types/ui/components/IgvZoomControls.d.ts +10 -0
  268. package/dist/types/ui/components/LoomBrowserShell.d.ts +52 -0
  269. package/dist/types/ui/components/LoomChromosomeSelect.d.ts +18 -0
  270. package/dist/types/ui/components/LoomContextMenu.d.ts +39 -0
  271. package/dist/types/ui/components/LoomExportControls.d.ts +13 -0
  272. package/dist/types/ui/components/LoomInputDialog.d.ts +27 -0
  273. package/dist/types/ui/components/LoomLocusInput.d.ts +18 -0
  274. package/dist/types/ui/components/LoomNavbar.d.ts +15 -0
  275. package/dist/types/ui/components/LoomPopup.d.ts +32 -0
  276. package/dist/types/ui/components/LoomWindowSize.d.ts +14 -0
  277. package/dist/types/ui/components/LoomZoomControls.d.ts +10 -0
  278. package/dist/types/ui/index.d.ts +21 -0
  279. package/dist/types/ui/themes.d.ts +14 -0
  280. package/dist/types/wigRenderer.d.ts +15 -0
  281. package/dist/types/wigSummary.d.ts +31 -0
  282. package/dist/types/wigThemes.d.ts +15 -0
  283. package/dist/types/wigTrackCanvas.d.ts +46 -0
  284. package/dist/types/worker/decodeWig.d.ts +20 -0
  285. package/dist/types/worker/nodeWorkerProvider.d.ts +28 -0
  286. package/dist/types/worker/taskHandler.d.ts +15 -0
  287. package/dist/types/worker/webWorkerProvider.d.ts +51 -0
  288. package/dist/types/worker/workerScript.d.ts +11 -0
  289. package/dist/types/workerProvider.d.ts +76 -0
  290. package/package.json +102 -0
@@ -0,0 +1,51 @@
1
+ /**
2
+ * WebWorkerProvider — browser Web Worker implementation of WorkerProvider.
3
+ *
4
+ * Creates a pool of worker threads and dispatches tasks via round-robin.
5
+ * Supports Transferable for zero-copy ArrayBuffer transfer.
6
+ *
7
+ * Usage:
8
+ * const provider = new WebWorkerProvider({ workerUrl: '/loom-worker.js', poolSize: 4 })
9
+ * const browser = new GenomeBrowser({ ..., workerProvider: provider })
10
+ * // ...
11
+ * provider.dispose()
12
+ */
13
+ import type { WorkerProvider, WorkerTask, WorkerTaskResultMap } from '../workerProvider';
14
+ export interface WebWorkerProviderOptions {
15
+ /**
16
+ * URL to the worker script (built from workerScript.ts).
17
+ * Can be a blob URL, data URL, or path to a bundled worker script.
18
+ * Mutually exclusive with `workerFactory`.
19
+ */
20
+ workerUrl?: string | URL;
21
+ /**
22
+ * Factory function that creates Worker instances.
23
+ * Use this with bundlers like webpack 5 that require `new Worker(new URL(...))` in
24
+ * the same expression for static analysis:
25
+ *
26
+ * workerFactory: () => new Worker(new URL('./workerScript.ts', import.meta.url))
27
+ *
28
+ * Mutually exclusive with `workerUrl`.
29
+ */
30
+ workerFactory?: () => Worker;
31
+ /**
32
+ * Number of workers in the pool. Tasks are distributed round-robin.
33
+ * Default: 1.
34
+ */
35
+ poolSize?: number;
36
+ }
37
+ export declare class WebWorkerProvider implements WorkerProvider {
38
+ private workers;
39
+ private nextId;
40
+ private nextWorker;
41
+ private pending;
42
+ /**
43
+ * @param optionsOrUrl - Options object with workerUrl and poolSize,
44
+ * or a URL string/URL for backward compatibility (single worker).
45
+ */
46
+ constructor(optionsOrUrl: WebWorkerProviderOptions | string | URL);
47
+ /** Number of workers in the pool. */
48
+ get poolSize(): number;
49
+ execute<T extends WorkerTask>(task: T, transfer?: Transferable[]): Promise<WorkerTaskResultMap[T['task']]>;
50
+ dispose(): void;
51
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Web Worker entry point.
3
+ *
4
+ * This file is the script that runs inside the Web Worker. It listens
5
+ * for messages from the main thread, dispatches them to the task handler,
6
+ * and posts results back.
7
+ *
8
+ * Bundle this file as a standalone module (e.g. via Rollup/Vite worker plugin)
9
+ * and pass the resulting URL to WebWorkerProvider.
10
+ */
11
+ export {};
@@ -0,0 +1,76 @@
1
+ /**
2
+ * WorkerProvider — environment abstraction for offloading CPU-intensive tasks.
3
+ *
4
+ * Follows the same injection pattern as CanvasProvider:
5
+ * - Interface with minimal methods
6
+ * - Concrete implementations for each environment
7
+ * - Optional injection with a sensible default (MainThreadProvider)
8
+ *
9
+ * Implementations:
10
+ * - MainThreadProvider — synchronous fallback (runs tasks on main thread)
11
+ * - WebWorkerProvider — browser (Web Workers)
12
+ * - NodeWorkerProvider — Node.js (worker_threads)
13
+ */
14
+ import type { AnnotationFeature, WigFeature, WindowFunction, TextFileFormat } from './types';
15
+ import type { FeatureHeader } from './formats/featureParser';
16
+ export interface PackTask {
17
+ task: 'pack';
18
+ features: AnnotationFeature[];
19
+ maxRows?: number;
20
+ }
21
+ export interface SummarizeWigTask {
22
+ task: 'summarize';
23
+ features: WigFeature[];
24
+ startBP: number;
25
+ bpPerPixel: number;
26
+ windowFunction: WindowFunction;
27
+ }
28
+ export interface ComputeWigRangeTask {
29
+ task: 'computeWigRange';
30
+ features: WigFeature[];
31
+ }
32
+ export interface ParseFeaturesTask {
33
+ task: 'parseFeatures';
34
+ /** Raw text lines to parse. */
35
+ lines: string[];
36
+ /** File format (bed, gff3, narrowpeak, etc.). */
37
+ format: TextFileFormat;
38
+ /** Pre-parsed header metadata. */
39
+ header?: FeatureHeader;
40
+ /** Whether to assemble GFF transcripts. Default: true. */
41
+ assembleGFF?: boolean;
42
+ }
43
+ export type WorkerTask = PackTask | SummarizeWigTask | ComputeWigRangeTask | ParseFeaturesTask;
44
+ /** Maps task name → result type. */
45
+ export interface WorkerTaskResultMap {
46
+ pack: AnnotationFeature[];
47
+ summarize: WigFeature[];
48
+ computeWigRange: {
49
+ min: number;
50
+ max: number;
51
+ };
52
+ parseFeatures: unknown[];
53
+ }
54
+ /**
55
+ * Execute CPU-intensive tasks, potentially in a worker thread.
56
+ *
57
+ * The `transfer` parameter accepts `Transferable` objects (e.g. `ArrayBuffer`)
58
+ * for zero-copy transfer to the worker. After transfer, the original buffer
59
+ * becomes detached on the sending side.
60
+ */
61
+ export interface WorkerProvider {
62
+ execute<T extends WorkerTask>(task: T, transfer?: Transferable[]): Promise<WorkerTaskResultMap[T['task']]>;
63
+ /** Terminate worker threads and release resources. */
64
+ dispose(): void;
65
+ }
66
+ /**
67
+ * Runs all tasks on the main thread using direct function calls.
68
+ * This is the default when no WorkerProvider is supplied.
69
+ */
70
+ export declare class MainThreadProvider implements WorkerProvider {
71
+ execute<T extends WorkerTask>(task: T): Promise<WorkerTaskResultMap[T['task']]>;
72
+ private dispatch;
73
+ dispose(): void;
74
+ }
75
+ /** Default worker provider: runs everything on the main thread. */
76
+ export declare const mainThreadProvider: WorkerProvider;
package/package.json ADDED
@@ -0,0 +1,102 @@
1
+ {
2
+ "name": "loom-browser",
3
+ "version": "0.0.1",
4
+ "main": "dist/loom.esm.js",
5
+ "browser": "dist/loom.js",
6
+ "module": "dist/loom.esm.js",
7
+ "types": "dist/types/index.d.ts",
8
+ "type": "module",
9
+ "description": "A modular, headless-first genomic visualization engine built in TypeScript",
10
+ "files": [
11
+ "dist/**"
12
+ ],
13
+ "scripts": {
14
+ "prepack": "npm run build",
15
+ "prepare": "npm run build",
16
+ "build": "npx rollup --config rollup.config.src.js",
17
+ "test": "vitest run",
18
+ "coverage": "vitest run --coverage && npm run --prefix docs-site test:stories:coverage && node scripts/mergeCoverage.js",
19
+ "typecheck": "tsc --noEmit -p tsconfig.src.json",
20
+ "lint": "eslint src/",
21
+ "docs:start": "npm run --prefix docs-site start",
22
+ "docs:build": "npm run --prefix docs-site build",
23
+ "storybook": "npm run --prefix docs-site storybook",
24
+ "storybook:build": "npm run --prefix docs-site build-storybook",
25
+ "test:visual": "npm run --prefix docs-site test:visual",
26
+ "test:visual:update": "npm run --prefix docs-site test:visual:update",
27
+ "test:stories": "npm run --prefix docs-site test:stories",
28
+ "test:stories:coverage": "npm run --prefix docs-site test:stories:coverage"
29
+ },
30
+ "author": {
31
+ "name": "Riya Sinha",
32
+ "url": "https://github.com/riyavsinha"
33
+ },
34
+ "contributors": [
35
+ {
36
+ "name": "Jim Robinson",
37
+ "url": "https://github.com/jrobinso"
38
+ },
39
+ {
40
+ "name": "Douglass Turner"
41
+ }
42
+ ],
43
+ "bugs": {
44
+ "url": "https://github.com/riyavsinha/loom/issues"
45
+ },
46
+ "homepage": "https://github.com/riyavsinha/loom",
47
+ "keywords": [
48
+ "genomics",
49
+ "visualization",
50
+ "bioinformatics",
51
+ "typescript",
52
+ "headless",
53
+ "canvas"
54
+ ],
55
+ "license": "MIT",
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "git+https://github.com/riyavsinha/loom.git"
59
+ },
60
+ "browserslist": "> 1%, not dead",
61
+ "devDependencies": {
62
+ "@eslint/js": "^10.0.1",
63
+ "@gmod/cram": "^5.0.5",
64
+ "@rollup/plugin-strip": "^3.0.1",
65
+ "@rollup/plugin-terser": "^0.4.0",
66
+ "@rollup/plugin-typescript": "^12.3.0",
67
+ "@types/jsdom": "^28.0.1",
68
+ "@types/mocha": "^10.0.10",
69
+ "@typescript-eslint/eslint-plugin": "^8.57.0",
70
+ "@typescript-eslint/parser": "^8.57.0",
71
+ "@vitest/coverage-v8": "^3.2.4",
72
+ "@xmldom/xmldom": "^0.7.9",
73
+ "atob": "^2.1.2",
74
+ "btoa": "^1.2.1",
75
+ "chai": "^4.3.7",
76
+ "circular-view": "github:igvteam/circular-view#v0.2.4",
77
+ "dompurify": "^3.0.9",
78
+ "eslint": "^10.0.3",
79
+ "fs-extra": "^11.3.0",
80
+ "globals": "^17.4.0",
81
+ "hdf5-indexed-reader": "github:jrobinso/hdf5-indexed-reader#v1.0.2",
82
+ "hic-straw": "^2.1.3",
83
+ "igv-utils": "github:igvteam/igv-utils#v1.7.1",
84
+ "jsdom": "^29.0.0",
85
+ "mocha": "^11.1.0",
86
+ "rollup": "^2.66.0",
87
+ "rollup-plugin-copy": "^3.3.0",
88
+ "sass": "^1.45.1",
89
+ "tslib": "^2.8.1",
90
+ "tsx": "^4.21.0",
91
+ "typescript": "^6.0.1-rc",
92
+ "vanilla-picker": "^2.12.3",
93
+ "vitest": "^3.2.4",
94
+ "w3c-xmlhttprequest": "^3.0.0",
95
+ "ws": "^8.18.3"
96
+ },
97
+ "dependencies": {
98
+ "@gmod/bbi": "^9.0.0",
99
+ "@gmod/tabix": "^3.2.2",
100
+ "generic-filehandle2": "^2.0.18"
101
+ }
102
+ }