@jbrowse/core 5.0.0-beta.1 → 5.0.0-beta.10

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 (611) hide show
  1. package/README.md +1476 -265
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -3
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +16 -9
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
  28. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
  29. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
  30. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
  31. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
  32. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
  33. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
  34. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  35. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  36. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  37. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  38. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  39. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  40. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  41. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  42. package/esm/BaseFeatureWidget/util.js +0 -17
  43. package/esm/CorePlugin.js +2 -2
  44. package/esm/PluginLoader.d.ts +24 -13
  45. package/esm/PluginLoader.js +167 -51
  46. package/esm/PluginManager.d.ts +130 -24
  47. package/esm/PluginManager.js +180 -32
  48. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  49. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  50. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  51. package/esm/ReExports/coreModules.generated.js +528 -0
  52. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  53. package/esm/ReExports/coreWorkerModules.generated.js +488 -0
  54. package/esm/ReExports/frameworkModules.d.ts +2 -0
  55. package/esm/ReExports/frameworkModules.js +68 -0
  56. package/esm/ReExports/frameworkShared.d.ts +12 -0
  57. package/esm/ReExports/frameworkShared.js +16 -0
  58. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  60. package/esm/ReExports/list.js +527 -79
  61. package/esm/ReExports/modules.d.ts +1 -1
  62. package/esm/ReExports/modules.js +10 -165
  63. package/esm/ReExports/registry.d.ts +1 -0
  64. package/esm/ReExports/registry.js +23 -5
  65. package/esm/ReExports/uiStub.d.ts +3 -0
  66. package/esm/ReExports/uiStub.js +33 -0
  67. package/esm/ReExports/workerModules.d.ts +2 -0
  68. package/esm/ReExports/workerModules.js +11 -0
  69. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  70. package/esm/TextSearch/TextSearchManager.js +77 -36
  71. package/esm/TextSearch/places.d.ts +12 -0
  72. package/esm/TextSearch/places.js +94 -0
  73. package/esm/assemblyManager/assembly.d.ts +21 -19
  74. package/esm/assemblyManager/assembly.js +28 -26
  75. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  76. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  77. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  78. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  79. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  80. package/esm/assemblyManager/assemblyManager.js +47 -51
  81. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  83. package/esm/assemblyManager/geneticCodes.js +2 -5
  84. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  85. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  86. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  87. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  88. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  89. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  90. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  91. package/esm/assemblyManager/refNameMapKey.js +12 -0
  92. package/esm/checkPlugins.d.ts +2 -0
  93. package/esm/checkPlugins.js +38 -17
  94. package/esm/configuration/bamIndexFields.d.ts +49 -0
  95. package/esm/configuration/bamIndexFields.js +41 -0
  96. package/esm/configuration/configurationSchema.d.ts +101 -71
  97. package/esm/configuration/configurationSchema.js +207 -134
  98. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  99. package/esm/configuration/configurationSchemaUnion.js +56 -0
  100. package/esm/configuration/configurationSlot.d.ts +150 -60
  101. package/esm/configuration/configurationSlot.js +103 -75
  102. package/esm/configuration/fillLocations.d.ts +14 -0
  103. package/esm/configuration/fillLocations.js +14 -0
  104. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  105. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  106. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  107. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  108. package/esm/configuration/fullConfSnapshot.js +30 -52
  109. package/esm/configuration/getConf.d.ts +45 -41
  110. package/esm/configuration/getConf.js +111 -44
  111. package/esm/configuration/index.d.ts +24 -11
  112. package/esm/configuration/index.js +15 -7
  113. package/esm/configuration/indexType.d.ts +26 -0
  114. package/esm/configuration/indexType.js +38 -0
  115. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  116. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  117. package/esm/configuration/readConfObject.d.ts +2 -24
  118. package/esm/configuration/readConfObject.js +20 -63
  119. package/esm/configuration/requirements.d.ts +37 -0
  120. package/esm/configuration/requirements.js +88 -0
  121. package/esm/configuration/schemaRegistry.d.ts +32 -15
  122. package/esm/configuration/schemaRegistry.js +33 -35
  123. package/esm/configuration/schemaTypes.d.ts +21 -5
  124. package/esm/configuration/schemaTypes.js +66 -55
  125. package/esm/configuration/slotFacade.d.ts +12 -29
  126. package/esm/configuration/slotFacade.js +44 -23
  127. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  128. package/esm/configuration/snapshotPreprocess.js +161 -0
  129. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  130. package/esm/configuration/tabixIndexFields.js +21 -4
  131. package/esm/configuration/tabixShorthand.d.ts +34 -17
  132. package/esm/configuration/tabixShorthand.js +49 -22
  133. package/esm/configuration/types.d.ts +182 -43
  134. package/esm/configuration/uriShorthand.d.ts +9 -0
  135. package/esm/configuration/uriShorthand.js +16 -0
  136. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  137. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  138. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  139. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  140. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  141. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  142. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  143. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  144. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  145. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  146. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  147. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  148. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  149. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  150. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  151. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  152. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  153. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  154. package/esm/data_adapters/dataAdapterCache.js +44 -10
  155. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  156. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  157. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  158. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  159. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  160. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  161. package/esm/pluggableElementTypes/DisplayType.d.ts +46 -16
  162. package/esm/pluggableElementTypes/DisplayType.js +22 -12
  163. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  164. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  165. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  166. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  167. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  168. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  169. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  170. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  171. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  172. package/esm/pluggableElementTypes/ViewType.js +32 -4
  173. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  174. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  175. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  176. package/esm/pluggableElementTypes/index.d.ts +2 -1
  177. package/esm/pluggableElementTypes/index.js +1 -1
  178. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  179. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +65 -27
  180. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +72 -10
  181. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  182. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  183. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +85 -16
  184. package/esm/pluggableElementTypes/models/BaseViewModel.js +53 -10
  185. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  186. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  187. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  188. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  189. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  190. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  191. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  192. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  193. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  194. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  195. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  196. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  197. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  198. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  199. package/esm/pluggableElementTypes/models/index.js +2 -3
  200. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  201. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  202. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  203. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  204. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  205. package/esm/pluginDefinitions.d.ts +34 -7
  206. package/esm/pluginDefinitions.js +54 -20
  207. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  208. package/esm/rpc/BaseRpcDriver.js +25 -30
  209. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  210. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  211. package/esm/rpc/RpcClient.d.ts +18 -6
  212. package/esm/rpc/RpcClient.js +51 -16
  213. package/esm/rpc/RpcManager.d.ts +14 -10
  214. package/esm/rpc/RpcManager.js +11 -1
  215. package/esm/rpc/RpcRegistry.d.ts +40 -7
  216. package/esm/rpc/RpcServer.d.ts +3 -1
  217. package/esm/rpc/RpcServer.js +19 -12
  218. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  219. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  220. package/esm/rpc/byteBudget.d.ts +20 -5
  221. package/esm/rpc/byteBudget.js +16 -5
  222. package/esm/rpc/configSchema.d.ts +7 -21
  223. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  224. package/esm/rpc/coreRpcMethods.js +4 -0
  225. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  226. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  227. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  228. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  229. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  230. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  231. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  232. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  233. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  234. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  235. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  236. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  237. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  238. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  239. package/esm/rpc/methods/layerFeatures.js +29 -0
  240. package/esm/svg/SvgExport.js +6 -7
  241. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  242. package/esm/svg/SvgThemeProviders.js +15 -0
  243. package/esm/svg/exportViewSvg.d.ts +28 -0
  244. package/esm/svg/exportViewSvg.js +13 -0
  245. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  246. package/esm/svg/normalizeSvgMarkup.js +99 -0
  247. package/esm/svg/serializeSvg.d.ts +7 -0
  248. package/esm/svg/serializeSvg.js +11 -0
  249. package/esm/svg/svgId.d.ts +1 -1
  250. package/esm/svg/svgId.js +1 -1
  251. package/esm/svg/svgReady.d.ts +9 -7
  252. package/esm/svg/svgReady.js +8 -7
  253. package/esm/svg/trackNames.d.ts +7 -5
  254. package/esm/svg/trackNames.js +12 -9
  255. package/esm/svg/wrapSvgExport.js +6 -74
  256. package/esm/ui/AddCustomPluginDialog.js +3 -8
  257. package/esm/ui/AppReadyMarker.d.ts +45 -0
  258. package/esm/ui/AppReadyMarker.js +89 -0
  259. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  260. package/esm/ui/CascadingMenu.js +181 -104
  261. package/esm/ui/DropDownMenu.js +2 -1
  262. package/esm/ui/ErrorBanner.js +1 -1
  263. package/esm/ui/ErrorBoundary.d.ts +2 -2
  264. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  265. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  266. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  267. package/esm/ui/FileDropZone.js +2 -1
  268. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  269. package/esm/ui/HoverMenu.d.ts +1 -2
  270. package/esm/ui/HoverMenu.js +6 -3
  271. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  272. package/esm/ui/JexlFilterDialog.js +122 -49
  273. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  274. package/esm/ui/JexlFilterRowEditors.js +90 -0
  275. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  276. package/esm/ui/LazyBaseTooltip.js +9 -0
  277. package/esm/ui/LegendSwatchGlyph.js +26 -21
  278. package/esm/ui/LoadingOverlay.d.ts +14 -0
  279. package/esm/ui/LoadingOverlay.js +4 -2
  280. package/esm/ui/MenuTypes.d.ts +23 -53
  281. package/esm/ui/MenuTypes.js +3 -0
  282. package/esm/ui/MonospaceTextField.d.ts +2 -1
  283. package/esm/ui/MonospaceTextField.js +23 -20
  284. package/esm/ui/PaletteContext.d.ts +10 -5
  285. package/esm/ui/PaletteContext.js +44 -6
  286. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  287. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  288. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  289. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  290. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  291. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  292. package/esm/ui/ResizeHandle.d.ts +3 -1
  293. package/esm/ui/ResizeHandle.js +44 -11
  294. package/esm/ui/ScrollChrome.d.ts +13 -0
  295. package/esm/ui/ScrollChrome.js +11 -0
  296. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  297. package/esm/ui/ScrollEdgeShadow.js +14 -35
  298. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  299. package/esm/ui/ScrollZoomToggle.js +34 -51
  300. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  301. package/esm/ui/SessionJsonPanel.js +14 -0
  302. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  303. package/esm/ui/SettingsChangesTable.js +49 -11
  304. package/esm/ui/ShareLinkField.d.ts +1 -3
  305. package/esm/ui/ShareLinkField.js +13 -40
  306. package/esm/ui/SizeSliderRow.d.ts +1 -3
  307. package/esm/ui/SizeSliderRow.js +4 -6
  308. package/esm/ui/SnackbarModel.js +79 -67
  309. package/esm/ui/StatusProgressBar.js +2 -2
  310. package/esm/ui/SvgColorLegend.d.ts +9 -4
  311. package/esm/ui/SvgColorLegend.js +82 -41
  312. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  313. package/esm/ui/VerticalScrollbar.js +29 -83
  314. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  315. package/esm/ui/ViewLoadingScreen.js +8 -32
  316. package/esm/ui/colorScale.d.ts +92 -0
  317. package/esm/ui/colorScale.js +72 -0
  318. package/esm/ui/colors.d.ts +64 -0
  319. package/esm/ui/colors.js +230 -1
  320. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  321. package/esm/ui/hoverBoxStyle.js +17 -2
  322. package/esm/ui/index.d.ts +12 -12
  323. package/esm/ui/index.js +14 -22
  324. package/esm/ui/launchViewMenu.js +15 -5
  325. package/esm/ui/legendMenuItem.d.ts +10 -32
  326. package/esm/ui/legendMenuItem.js +9 -36
  327. package/esm/ui/legendSpec.d.ts +15 -8
  328. package/esm/ui/legendSpec.js +14 -23
  329. package/esm/ui/makeSizeMenu.d.ts +0 -6
  330. package/esm/ui/makeSizeMenu.js +6 -30
  331. package/esm/ui/measureLegendText.js +1 -1
  332. package/esm/ui/menuItemAdornment.d.ts +9 -20
  333. package/esm/ui/menuItemAdornment.js +10 -32
  334. package/esm/ui/menuItems.d.ts +2 -7
  335. package/esm/ui/menuItems.js +1 -6
  336. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  337. package/esm/ui/palette.d.ts +118 -116
  338. package/esm/ui/palette.js +114 -75
  339. package/esm/ui/replaceViewAction.d.ts +1 -1
  340. package/esm/ui/replaceViewAction.js +1 -1
  341. package/esm/ui/theme.d.ts +43 -119
  342. package/esm/ui/theme.js +62 -78
  343. package/esm/ui/toggleMenuItems.d.ts +1 -3
  344. package/esm/ui/toggleMenuItems.js +6 -5
  345. package/esm/ui/useAssemblySelection.d.ts +4 -4
  346. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  347. package/esm/ui/viewHeaderHeight.js +1 -0
  348. package/esm/util/Base1DUtils.d.ts +5 -3
  349. package/esm/util/Base1DUtils.js +14 -6
  350. package/esm/util/Base1DViewModel.d.ts +2 -1
  351. package/esm/util/Base1DViewModel.js +3 -2
  352. package/esm/util/SvgCanvas.d.ts +15 -13
  353. package/esm/util/SvgCanvas.js +76 -56
  354. package/esm/util/aborting.d.ts +39 -0
  355. package/esm/util/aborting.js +88 -6
  356. package/esm/util/adapterMetadata.d.ts +1 -1
  357. package/esm/util/adapterMetadata.js +6 -5
  358. package/esm/util/addAndShowTrack.d.ts +2 -5
  359. package/esm/util/addAndShowTrack.js +5 -1
  360. package/esm/util/addRelativeUris.d.ts +17 -5
  361. package/esm/util/addRelativeUris.js +46 -10
  362. package/esm/util/addTrackFromWidget.d.ts +2 -5
  363. package/esm/util/addTrackFromWidget.js +5 -4
  364. package/esm/util/aggregateFieldName.d.ts +10 -0
  365. package/esm/util/aggregateFieldName.js +8 -0
  366. package/esm/util/analytics.js +46 -13
  367. package/esm/util/animationAllowed.d.ts +9 -0
  368. package/esm/util/animationAllowed.js +13 -0
  369. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  370. package/esm/util/applyRowResizeWheel.js +10 -21
  371. package/esm/util/bandHeight.d.ts +10 -0
  372. package/esm/util/bandHeight.js +29 -0
  373. package/esm/util/bandLayout.d.ts +4 -4
  374. package/esm/util/bandLayout.js +4 -4
  375. package/esm/util/bezierConnector.d.ts +4 -3
  376. package/esm/util/bezierConnector.js +38 -45
  377. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  378. package/esm/util/bgzfWorkerPool.js +20 -74
  379. package/esm/util/binnedAggregate.d.ts +17 -0
  380. package/esm/util/binnedAggregate.js +275 -0
  381. package/esm/util/cacheBudgets.d.ts +22 -19
  382. package/esm/util/cacheBudgets.js +22 -19
  383. package/esm/util/cachedSetup.d.ts +1 -1
  384. package/esm/util/cachedSetup.js +2 -2
  385. package/esm/util/categoricalField.d.ts +56 -0
  386. package/esm/util/categoricalField.js +73 -0
  387. package/esm/util/clampToContig.d.ts +17 -0
  388. package/esm/util/clampToContig.js +19 -0
  389. package/esm/util/coarseStripHTML.js +1 -2
  390. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  391. package/esm/util/color/cssColorsLevel4.js +1 -0
  392. package/esm/util/color/index.d.ts +5 -3
  393. package/esm/util/color/index.js +7 -4
  394. package/esm/util/colorBits.d.ts +3 -3
  395. package/esm/util/colorBits.js +19 -44
  396. package/esm/util/colorRamp.d.ts +49 -5
  397. package/esm/util/colorRamp.js +169 -18
  398. package/esm/util/colorScale.d.ts +156 -0
  399. package/esm/util/colorScale.js +243 -0
  400. package/esm/util/colorSchemes.d.ts +21 -0
  401. package/esm/util/colorSchemes.js +30 -0
  402. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  403. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  404. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  405. package/esm/util/cssColorParse.d.ts +15 -0
  406. package/esm/util/cssColorParse.js +53 -0
  407. package/esm/util/diagonalizeRegions.d.ts +2 -3
  408. package/esm/util/diagonalizeRegions.js +8 -13
  409. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  410. package/esm/util/expandLooseSearchIndex.js +29 -0
  411. package/esm/util/featureTable.d.ts +224 -0
  412. package/esm/util/featureTable.js +366 -0
  413. package/esm/util/featureTransforms.d.ts +80 -0
  414. package/esm/util/featureTransforms.js +1579 -0
  415. package/esm/util/featureTypes.d.ts +24 -0
  416. package/esm/util/featureTypes.js +35 -0
  417. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  418. package/esm/util/fetchContext.d.ts +7 -8
  419. package/esm/util/fetchContext.js +3 -3
  420. package/esm/util/fetchHub.d.ts +4 -2
  421. package/esm/util/fetchHub.js +2 -2
  422. package/esm/util/fetchPhases.d.ts +10 -10
  423. package/esm/util/fetchSeq.d.ts +2 -3
  424. package/esm/util/fetchSeq.js +2 -2
  425. package/esm/util/fieldReader.d.ts +17 -0
  426. package/esm/util/fieldReader.js +62 -0
  427. package/esm/util/freezeDeep.d.ts +8 -10
  428. package/esm/util/freezeDeep.js +8 -10
  429. package/esm/util/groupKeys.d.ts +77 -0
  430. package/esm/util/groupKeys.js +155 -0
  431. package/esm/util/highlights.d.ts +10 -6
  432. package/esm/util/highlights.js +12 -25
  433. package/esm/util/hooks.d.ts +31 -2
  434. package/esm/util/hooks.js +72 -3
  435. package/esm/util/index.d.ts +11 -11
  436. package/esm/util/index.js +11 -10
  437. package/esm/util/indexCandidates.d.ts +1 -31
  438. package/esm/util/indexCandidates.js +5 -63
  439. package/esm/util/installFetch.d.ts +77 -37
  440. package/esm/util/installFetch.js +65 -38
  441. package/esm/util/installInitAutorun.d.ts +14 -13
  442. package/esm/util/installInitAutorun.js +17 -17
  443. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  444. package/esm/util/installPrerequisiteFetch.js +111 -0
  445. package/esm/util/io/index.js +19 -14
  446. package/esm/util/isDataCurrent.d.ts +7 -5
  447. package/esm/util/isDataCurrent.js +9 -6
  448. package/esm/util/isTextEntryFocused.d.ts +7 -0
  449. package/esm/util/isTextEntryFocused.js +16 -0
  450. package/esm/util/jexl.js +24 -21
  451. package/esm/util/jexlFilterRows.d.ts +89 -0
  452. package/esm/util/jexlFilterRows.js +252 -0
  453. package/esm/util/jexlFilters.d.ts +20 -27
  454. package/esm/util/jexlFilters.js +23 -11
  455. package/esm/util/jexlStrings.d.ts +3 -4
  456. package/esm/util/jexlStrings.js +2 -3
  457. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  458. package/esm/util/layouts/GranularRectLayout.js +25 -8
  459. package/esm/util/lazyAfterAttach.d.ts +13 -0
  460. package/esm/util/lazyAfterAttach.js +31 -0
  461. package/esm/util/lazyWithPreload.d.ts +19 -0
  462. package/esm/util/lazyWithPreload.js +27 -0
  463. package/esm/util/legendCandidates.d.ts +72 -0
  464. package/esm/util/legendCandidates.js +138 -0
  465. package/esm/util/localStorage.js +4 -4
  466. package/esm/util/markEncoding.d.ts +150 -0
  467. package/esm/util/markEncoding.js +845 -0
  468. package/esm/util/markEncodingTypes.d.ts +588 -0
  469. package/esm/util/markEncodingTypes.js +8 -0
  470. package/esm/util/mst-reflection.d.ts +2 -20
  471. package/esm/util/mst-reflection.js +3 -53
  472. package/esm/util/mstUtils.d.ts +31 -23
  473. package/esm/util/mstUtils.js +39 -24
  474. package/esm/util/numericUtils.d.ts +7 -0
  475. package/esm/util/numericUtils.js +16 -0
  476. package/esm/util/numericValue.d.ts +14 -0
  477. package/esm/util/numericValue.js +34 -0
  478. package/esm/util/openFeatureWidget.d.ts +5 -0
  479. package/esm/util/openFeatureWidget.js +2 -2
  480. package/esm/util/openViews.d.ts +17 -0
  481. package/esm/util/openViews.js +22 -0
  482. package/esm/util/parentWalk.d.ts +1 -1
  483. package/esm/util/parentWalk.js +1 -1
  484. package/esm/util/parseLineByLine.d.ts +4 -5
  485. package/esm/util/parseLineByLine.js +8 -14
  486. package/esm/util/pluginStore.d.ts +6 -8
  487. package/esm/util/pluginStore.js +17 -16
  488. package/esm/util/preloadComponent.d.ts +5 -0
  489. package/esm/util/preloadComponent.js +11 -0
  490. package/esm/util/progress.d.ts +22 -22
  491. package/esm/util/progress.js +27 -26
  492. package/esm/util/quantileExtent.d.ts +49 -0
  493. package/esm/util/quantileExtent.js +162 -0
  494. package/esm/util/range.d.ts +13 -9
  495. package/esm/util/range.js +17 -8
  496. package/esm/util/renameRegions.d.ts +26 -6
  497. package/esm/util/renameRegions.js +68 -54
  498. package/esm/util/renderToStaticMarkup.js +24 -14
  499. package/esm/util/rxjs.d.ts +23 -8
  500. package/esm/util/rxjs.js +61 -15
  501. package/esm/util/samplesTsv.d.ts +49 -0
  502. package/esm/util/samplesTsv.js +86 -0
  503. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  504. package/esm/util/scheduleDetachedDestroy.js +24 -0
  505. package/esm/util/scrollLatch.d.ts +1 -0
  506. package/esm/util/scrollLatch.js +8 -0
  507. package/esm/util/selectEncodedFeature.d.ts +16 -0
  508. package/esm/util/selectEncodedFeature.js +34 -0
  509. package/esm/util/sessionSharing.d.ts +7 -5
  510. package/esm/util/sessionSharing.js +23 -23
  511. package/esm/util/shapeNameList.d.ts +2 -0
  512. package/esm/util/shapeNameList.js +6 -0
  513. package/esm/util/shapeNames.d.ts +7 -0
  514. package/esm/util/shapeNames.js +11 -0
  515. package/esm/util/simpleFeature.d.ts +0 -1
  516. package/esm/util/starFusion.d.ts +26 -0
  517. package/esm/util/starFusion.js +37 -0
  518. package/esm/util/stepTables.d.ts +82 -0
  519. package/esm/util/stepTables.js +243 -0
  520. package/esm/util/svAlt.d.ts +145 -0
  521. package/esm/util/svAlt.js +364 -0
  522. package/esm/util/svgColorProps.d.ts +11 -0
  523. package/esm/util/svgColorProps.js +28 -1
  524. package/esm/util/systemColorScheme.d.ts +12 -0
  525. package/esm/util/systemColorScheme.js +27 -0
  526. package/esm/util/tabix.d.ts +13 -8
  527. package/esm/util/tabix.js +17 -12
  528. package/esm/util/thresholdScale.d.ts +91 -0
  529. package/esm/util/thresholdScale.js +166 -0
  530. package/esm/util/timeGate.d.ts +4 -5
  531. package/esm/util/timeGate.js +4 -5
  532. package/esm/util/trackConfigDelta.d.ts +26 -26
  533. package/esm/util/trackConfigDelta.js +63 -47
  534. package/esm/util/tracks.d.ts +121 -40
  535. package/esm/util/tracks.js +497 -112
  536. package/esm/util/translateTranscript.d.ts +44 -0
  537. package/esm/util/translateTranscript.js +102 -0
  538. package/esm/util/types/data.d.ts +0 -2
  539. package/esm/util/types/index.d.ts +121 -22
  540. package/esm/util/types/index.js +9 -0
  541. package/esm/util/types/mst.d.ts +3 -0
  542. package/esm/util/types/mst.js +4 -0
  543. package/esm/util/types/renameIds.d.ts +1 -0
  544. package/esm/util/types/renameIds.js +29 -0
  545. package/esm/util/types/services.d.ts +1 -1
  546. package/esm/util/unknownSnapshotKeys.d.ts +51 -0
  547. package/esm/util/unknownSnapshotKeys.js +82 -0
  548. package/esm/util/useFeatureSequence.js +5 -5
  549. package/esm/util/useFetch.d.ts +3 -4
  550. package/esm/util/useFetch.js +19 -10
  551. package/esm/util/useFetchPlugins.d.ts +6 -2
  552. package/esm/util/useFetchPlugins.js +7 -3
  553. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  554. package/esm/util/usePanelVirtualScroll.js +9 -36
  555. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  556. package/esm/util/useRowVirtualScroll.js +8 -49
  557. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  558. package/esm/util/useVirtualScrollWheel.js +40 -74
  559. package/esm/util/viewHighlights.d.ts +3 -0
  560. package/esm/util/viewHighlights.js +5 -0
  561. package/esm/util/viewStatus.d.ts +47 -15
  562. package/esm/util/viewStatus.js +34 -0
  563. package/esm/util/wheelZoom.d.ts +7 -1
  564. package/esm/util/wheelZoom.js +85 -19
  565. package/esm/util/whenViewSettled.d.ts +55 -8
  566. package/esm/util/whenViewSettled.js +56 -7
  567. package/esm/util/withLaunchInput.d.ts +174 -0
  568. package/esm/util/withLaunchInput.js +274 -0
  569. package/package.json +70 -20
  570. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  571. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  572. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  573. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  574. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  575. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  576. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  577. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  578. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  579. package/esm/ReExports/index.d.ts +0 -1
  580. package/esm/ReExports/index.js +0 -1
  581. package/esm/ReExports/publicUtil.d.ts +0 -1
  582. package/esm/ReExports/publicUtil.js +0 -28
  583. package/esm/configuration/promotableDefaults.d.ts +0 -199
  584. package/esm/configuration/promotableDefaults.js +0 -326
  585. package/esm/configuration/promotablePin.d.ts +0 -55
  586. package/esm/configuration/promotablePin.js +0 -1
  587. package/esm/configuration/promotableResolve.d.ts +0 -108
  588. package/esm/configuration/promotableResolve.js +0 -117
  589. package/esm/configuration/promotableSlots.d.ts +0 -12
  590. package/esm/configuration/promotableSlots.js +0 -45
  591. package/esm/configuration/slotShape.d.ts +0 -12
  592. package/esm/configuration/slotShape.js +0 -84
  593. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  594. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  595. package/esm/ui/PinAdornment.d.ts +0 -5
  596. package/esm/ui/PinAdornment.js +0 -79
  597. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  598. package/esm/ui/SvgGradientLegend.js +0 -26
  599. package/esm/ui/highlightChipReveal.d.ts +0 -32
  600. package/esm/ui/highlightChipReveal.js +0 -39
  601. package/esm/ui/promotableMenuItems.d.ts +0 -19
  602. package/esm/ui/promotableMenuItems.js +0 -89
  603. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  604. package/esm/ui/promotablePinCoverage.js +0 -87
  605. package/esm/util/applyInitSettings.d.ts +0 -79
  606. package/esm/util/applyInitSettings.js +0 -91
  607. package/esm/util/openDisplays.d.ts +0 -23
  608. package/esm/util/openDisplays.js +0 -79
  609. package/esm/util/stopToken.d.ts +0 -211
  610. package/esm/util/stopToken.js +0 -438
  611. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -38,32 +38,39 @@ export function b64PadSuffix(b64) {
38
38
  }
39
39
  return b64 + '='.repeat(num);
40
40
  }
41
+ async function transformBytes(bytes, transform) {
42
+ const stream = new Response(bytes).body.pipeThrough(transform);
43
+ return new Uint8Array(await new Response(stream).arrayBuffer());
44
+ }
41
45
  /**
42
46
  * Decode and inflate a url-safe base64 to a string
43
47
  * See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}
48
+ *
49
+ * A truncated input rejects rather than inflating to a prefix: a link cut short
50
+ * in transit has to say so, not fail later as a JSON syntax error.
44
51
  */
45
52
  export async function fromUrlSafeB64(b64) {
46
- const originalB64 = b64PadSuffix(b64.replaceAll('-', '+').replaceAll('_', '/'));
47
- const { inflate } = await import('pako-esm2');
48
- const bytes = Uint8Array.from(atob(originalB64), c => c.charCodeAt(0));
49
- const inflated = inflate(bytes, undefined);
50
- return new TextDecoder('utf8').decode(inflated);
53
+ try {
54
+ const bytes = Uint8Array.from(atob(b64PadSuffix(b64.replaceAll('-', '+').replaceAll('_', '/'))), c => c.charCodeAt(0));
55
+ return new TextDecoder().decode(await transformBytes(bytes, new DecompressionStream('deflate')));
56
+ }
57
+ catch (e) {
58
+ throw new Error('This session is incomplete or damaged, which is how a link cut short in transit arrives. A short link survives being sent where a long one may not.', { cause: e });
59
+ }
51
60
  }
52
61
  /**
53
62
  * Compress and encode a string as url-safe base64
54
63
  * See {@link https://en.wikipedia.org/wiki/Base64#URL_applications}
55
64
  */
56
65
  export async function toUrlSafeB64(str) {
57
- const bytes = new TextEncoder().encode(str);
58
- const { deflate } = await import('pako-esm2');
59
- const deflated = deflate(bytes, undefined);
66
+ const deflated = await transformBytes(new TextEncoder().encode(str), new CompressionStream('deflate'));
60
67
  const encoded = btoa(bytesToBinaryString(deflated)).replace(/=+$/, '');
61
68
  return encoded.replaceAll('+', '-').replaceAll('/', '_');
62
69
  }
63
70
  /**
64
- * The `?session=` value prefixes, named here because this module is what
65
- * produces them. The decoder half (jbrowse-web's SessionLoader) has its own
66
- * list covering the two prefixes nothing here writes (`spec-`, `local-`).
71
+ * The `?session=` value prefixes for a session carried by or behind the link.
72
+ * The decoder half (jbrowse-web's SessionLoader) has its own list covering
73
+ * `spec-` and `local-` too.
67
74
  */
68
75
  export const SHARE_PREFIX = 'share-';
69
76
  export const ENCODED_PREFIX = 'encoded-';
@@ -102,23 +109,16 @@ async function shareSessionToDynamo(session, shareURL, referer) {
102
109
  return { sessionId, password };
103
110
  }
104
111
  // Encodes a session snapshot into the `?session=` value jbrowse-web decodes:
105
- // `share-<id>` (uploaded + encrypted), `encoded-<b64>` (compressed inline), or
106
- // `json-<json>` (plaintext inline). Single source of these prefixes, shared by
107
- // jbrowse-web's ShareDialog and jbrowse-desktop's ExportToWebDialog so the two
108
- // producers can't drift from the decoder.
112
+ // `share-<id>` (uploaded + encrypted) or `encoded-<b64>` (compressed inline).
113
+ // Single source of these prefixes, shared by jbrowse-web's ShareDialog and
114
+ // jbrowse-desktop's ExportToWebDialog so the two producers can't drift from the
115
+ // decoder. The decoder also reads `json-{"session":…}`, which nothing here
116
+ // writes: it is the form a person writes by hand.
109
117
  export async function encodeSessionParam(mode, session, options) {
110
118
  if (mode === 'short') {
111
119
  const { sessionId, password } = await shareSessionToDynamo(session, options.shareURL, options.referer);
112
120
  return { sessionParam: `${SHARE_PREFIX}${sessionId}`, password };
113
121
  }
114
- else if (mode === 'json') {
115
- // compact in the link (this mode's URL is the longest of the three
116
- // already), indented in the dialog's readable-JSON panel
117
- return {
118
- sessionParam: `${JSON_PREFIX}${JSON.stringify({ session })}`,
119
- plaintext: JSON.stringify({ session }, null, 2),
120
- };
121
- }
122
122
  else {
123
123
  const encoded = await toUrlSafeB64(JSON.stringify(session));
124
124
  return { sessionParam: `${ENCODED_PREFIX}${encoded}` };
@@ -0,0 +1,2 @@
1
+ /** The shape names in range order: what an unlisted `range` hands out. */
2
+ export declare const SHAPE_NAMES: ('circle' | 'triangle-down' | 'diamond')[];
@@ -0,0 +1,6 @@
1
+ /** The shape names in range order: what an unlisted `range` hands out. */
2
+ export const SHAPE_NAMES = [
3
+ 'circle',
4
+ 'triangle-down',
5
+ 'diamond',
6
+ ];
@@ -0,0 +1,7 @@
1
+ import type { ShapeName } from './markEncodingTypes.ts';
2
+ /**
3
+ * #api
4
+ * The `point` mark's painter code for each shape an encoding can name.
5
+ */
6
+ export declare const SHAPE_CODES: Record<ShapeName, number>;
7
+ export { SHAPE_NAMES } from './shapeNameList.ts';
@@ -0,0 +1,11 @@
1
+ import { GLYPH_DIAMOND, GLYPH_DISC, GLYPH_TRIANGLE, } from '@jbrowse/render-core/shaders/pointMarkConsts';
2
+ /**
3
+ * #api
4
+ * The `point` mark's painter code for each shape an encoding can name.
5
+ */
6
+ export const SHAPE_CODES = {
7
+ circle: GLYPH_DISC,
8
+ 'triangle-down': GLYPH_TRIANGLE,
9
+ diamond: GLYPH_DIAMOND,
10
+ };
11
+ export { SHAPE_NAMES } from './shapeNameList.js';
@@ -90,7 +90,6 @@ export interface SimpleFeatureSerializedNoId {
90
90
  name?: string;
91
91
  id?: string | number;
92
92
  uniqueId?: string;
93
- __jbrowsefmt?: Record<string, unknown>;
94
93
  mate?: {
95
94
  refName: string;
96
95
  start: number;
@@ -0,0 +1,26 @@
1
+ export type FusionBreakpoint = {
2
+ refName: string;
3
+ start: number;
4
+ end: number;
5
+ strand?: number;
6
+ /** which way the sequence this end keeps runs from it: 1 right, -1 left, 0 unknown */
7
+ mateDirection: number;
8
+ };
9
+ /**
10
+ * The column names of a STAR-Fusion `fusion_predictions.tsv` header line. The
11
+ * leading `#` is not universal across STAR-Fusion versions and wrappers, so it
12
+ * is stripped when present. Throws a named error for a header without the two
13
+ * breakpoint columns, which is the wrong file or the wrong File Type guess.
14
+ */
15
+ export declare function starFusionColumns(header: string | undefined): string[];
16
+ /**
17
+ * A STAR-Fusion `refName:pos:strand` breakpoint as an interbase feature, read
18
+ * from the RIGHT because a refName may contain colons (GRCh38's
19
+ * `HLA-A*01:01:01:01`). The position is 1-based in the file. The strand is the
20
+ * gene's transcription strand, and the fusion transcript keeps the donor's
21
+ * sequence 5' of the junction and the acceptor's 3' of it, so `mateDirection`
22
+ * is the strand negated for a donor and taken as read for an acceptor: the
23
+ * convention `parseSvAlt` states for a breakend and the paired-arc display
24
+ * draws its ticks from.
25
+ */
26
+ export declare function parseStarFusionBreakpoint(str: string, isDonor: boolean): FusionBreakpoint;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The column names of a STAR-Fusion `fusion_predictions.tsv` header line. The
3
+ * leading `#` is not universal across STAR-Fusion versions and wrappers, so it
4
+ * is stripped when present. Throws a named error for a header without the two
5
+ * breakpoint columns, which is the wrong file or the wrong File Type guess.
6
+ */
7
+ export function starFusionColumns(header) {
8
+ const columns = (header?.startsWith('#') ? header.slice(1) : header)?.split('\t') ?? [];
9
+ const missing = ['LeftBreakpoint', 'RightBreakpoint'].filter(c => !columns.includes(c));
10
+ if (missing.length) {
11
+ throw new Error(`Not a STAR-Fusion file: no ${missing.join(' or ')} column. Found: ${columns.slice(0, 6).join(', ')}`);
12
+ }
13
+ return columns;
14
+ }
15
+ /**
16
+ * A STAR-Fusion `refName:pos:strand` breakpoint as an interbase feature, read
17
+ * from the RIGHT because a refName may contain colons (GRCh38's
18
+ * `HLA-A*01:01:01:01`). The position is 1-based in the file. The strand is the
19
+ * gene's transcription strand, and the fusion transcript keeps the donor's
20
+ * sequence 5' of the junction and the acceptor's 3' of it, so `mateDirection`
21
+ * is the strand negated for a donor and taken as read for an acceptor: the
22
+ * convention `parseSvAlt` states for a breakend and the paired-arc display
23
+ * draws its ticks from.
24
+ */
25
+ export function parseStarFusionBreakpoint(str, isDonor) {
26
+ const parts = str.split(':');
27
+ const strandStr = parts.length >= 3 ? parts.pop() : undefined;
28
+ const pos = parts.length >= 2 ? +parts.pop() : Number.NaN;
29
+ const strand = strandStr === '+' ? 1 : strandStr === '-' ? -1 : undefined;
30
+ return {
31
+ refName: parts.join(':'),
32
+ start: pos - 1,
33
+ end: pos,
34
+ strand,
35
+ mateDirection: strand === undefined ? 0 : isDonor ? -strand : strand,
36
+ };
37
+ }
@@ -0,0 +1,82 @@
1
+ import type { Column, FeatureTable, MadeRows } from './featureTable.ts';
2
+ import type { AggregateOp, AggregateStep, BinStep } from './markEncodingTypes.ts';
3
+ import type { Feature, SimpleFeatureSerialized } from './simpleFeature.ts';
4
+ export declare const DEFAULT_BIN_AS: [string, string];
5
+ /** What a `bin` over `fields` writes on each piece: the bases of its interval inside its bin. */
6
+ export declare const BIN_OVERLAP_FIELD = "overlap";
7
+ /**
8
+ * A table's rows split into sections, each a contiguous range: `bounds[s]` is
9
+ * where section `s` starts and `bounds[s + 1]` where it ends. A step keeps
10
+ * its rows in section order, and one that groups rows groups within a
11
+ * section, so a faceted request runs each step once over every section.
12
+ */
13
+ export type Bounds = Uint32Array;
14
+ export interface Staged {
15
+ table: FeatureTable;
16
+ bounds: Bounds;
17
+ }
18
+ export declare function stepReader(table: FeatureTable, ref: string, step: string): (i: number) => unknown;
19
+ export declare function stepNumberReader(table: FeatureTable, ref: string, step: string): (i: number) => number;
20
+ export declare function groupKey(value: unknown): unknown;
21
+ export declare function binSize({ step }: BinStep): number;
22
+ /**
23
+ * Each row's interval and the bins it overlaps, `first` to `last`, with each
24
+ * section's lowest and highest bin: `first` NaN where the ends are not
25
+ * numbers or run backwards, so the row is no piece. A zero-length interval
26
+ * is its position's bin alone.
27
+ */
28
+ export declare function intervalsOf(table: FeatureTable, [startField, endField]: [string, string], size: number, bounds: Bounds): {
29
+ start: Float64Array<ArrayBuffer>;
30
+ end: Float64Array<ArrayBuffer>;
31
+ first: Float64Array<ArrayBuffer>;
32
+ last: Float64Array<ArrayBuffer>;
33
+ pieces: number;
34
+ lowBin: Float64Array<ArrayBuffer>;
35
+ highBin: Float64Array<ArrayBuffer>;
36
+ };
37
+ /**
38
+ * Rows a step made from nothing: an `aggregate`'s groups and a `coverage`'s
39
+ * runs, carrying only the fields they wrote and an id from their span, with
40
+ * no feature to hang from.
41
+ */
42
+ export declare class MadeTable implements MadeRows {
43
+ readonly length: number;
44
+ private readonly columns;
45
+ private readonly tags;
46
+ constructor(length: number, columns: ReadonlyMap<string, Column>, tags: (i: number) => string);
47
+ column(field: string): Column;
48
+ id(i: number): string;
49
+ parentOfRow(): undefined;
50
+ row(i: number): Feature;
51
+ json(i: number): SimpleFeatureSerialized;
52
+ }
53
+ export declare function valueColumn(values: readonly unknown[]): Column;
54
+ export declare function madeGroups({ groups, keys, ops, step, refNames, start, end, sectionOf, sections, }: {
55
+ groups: number;
56
+ keys: readonly [string, unknown[]][];
57
+ ops: readonly Column[];
58
+ step: AggregateStep;
59
+ refNames: unknown[];
60
+ start: Float64Array;
61
+ end: Float64Array;
62
+ sectionOf: ArrayLike<number>;
63
+ sections: number;
64
+ }): Staged;
65
+ export declare function isWeighted({ op, weight }: AggregateOp): boolean;
66
+ /**
67
+ * One op's running sums per group, which the aggregate and the binned
68
+ * aggregate both add rows to in row order, so the two answer the same
69
+ * doubles. An unweighted row adds a weight of 1, which leaves every sum what
70
+ * it was before weights.
71
+ */
72
+ export declare class OpSums {
73
+ readonly op: AggregateOp['op'];
74
+ private readonly readsValue;
75
+ readonly sum: Float64Array;
76
+ readonly weight: Float64Array;
77
+ readonly min: Float64Array;
78
+ readonly max: Float64Array;
79
+ constructor({ op, field }: AggregateOp, groups: number);
80
+ add(g: number, v: number, w: number): void;
81
+ column(groups: number): Column;
82
+ }
@@ -0,0 +1,243 @@
1
+ // The pieces of the transform steps that the fused bin-and-aggregate kernel
2
+ // shares with the steps themselves. Imported by relative path only, so none
3
+ // of it is a package subpath or part of the plugin ABI.
4
+ import { aggregateFieldName } from './aggregateFieldName.js';
5
+ import { NO_COLUMN, TableRow, numberReaderOf, readerOf, valueAt, } from './featureTable.js';
6
+ import { fieldReader, isPlainFieldRef } from './fieldReader.js';
7
+ import { isJexl } from './jexlStrings.js';
8
+ import { numericValue } from './numericValue.js';
9
+ export const DEFAULT_BIN_AS = ['start', 'end'];
10
+ /** What a `bin` over `fields` writes on each piece: the bases of its interval inside its bin. */
11
+ export const BIN_OVERLAP_FIELD = 'overlap';
12
+ // A step reads a name or a dotted path. A plain name reads the table's column;
13
+ // a path walks each row, chosen once per step. A computed field is a `formula`
14
+ // step's to make.
15
+ export function stepReader(table, ref, step) {
16
+ if (isJexl(ref)) {
17
+ throw new Error(`${step} field is a name or a dotted path, and a formula step in front computes one (${ref})`);
18
+ }
19
+ if (isPlainFieldRef(ref)) {
20
+ return readerOf(table.column(ref));
21
+ }
22
+ const read = fieldReader(ref, undefined);
23
+ return (i) => read(table.row(i));
24
+ }
25
+ export function stepNumberReader(table, ref, step) {
26
+ if (isPlainFieldRef(ref) && !isJexl(ref)) {
27
+ return numberReaderOf(table.column(ref));
28
+ }
29
+ const read = stepReader(table, ref, step);
30
+ return (i) => numericValue(read(i));
31
+ }
32
+ // A list holding one value is that value, as a VCF's ALT and INFO fields
33
+ // arrive, and a longer one is its text: a Map keys a list by identity, which
34
+ // made every row a group of its own. A missing value is one group, whether
35
+ // the field is absent or holds a VCF's `.`.
36
+ export function groupKey(value) {
37
+ return Array.isArray(value)
38
+ ? value.length === 1
39
+ ? (value[0] ?? undefined)
40
+ : value.join(',')
41
+ : (value ?? undefined);
42
+ }
43
+ export function binSize({ step }) {
44
+ if (!(step > 0)) {
45
+ throw new Error(`a bin step needs a positive size (${step})`);
46
+ }
47
+ return step;
48
+ }
49
+ /**
50
+ * Each row's interval and the bins it overlaps, `first` to `last`, with each
51
+ * section's lowest and highest bin: `first` NaN where the ends are not
52
+ * numbers or run backwards, so the row is no piece. A zero-length interval
53
+ * is its position's bin alone.
54
+ */
55
+ export function intervalsOf(table, [startField, endField], size, bounds) {
56
+ const n = table.length;
57
+ const readStart = stepNumberReader(table, startField, 'a bin');
58
+ const readEnd = stepNumberReader(table, endField, 'a bin');
59
+ const start = new Float64Array(n);
60
+ const end = new Float64Array(n);
61
+ const firstBin = new Float64Array(n);
62
+ const lastBin = new Float64Array(n);
63
+ const sections = bounds.length - 1;
64
+ const lowBin = new Float64Array(sections).fill(Infinity);
65
+ const highBin = new Float64Array(sections).fill(-Infinity);
66
+ let pieces = 0;
67
+ for (let s = 0; s < sections; s++) {
68
+ let low = Infinity;
69
+ let high = -Infinity;
70
+ for (let i = bounds[s]; i < bounds[s + 1]; i++) {
71
+ const rowS = readStart(i);
72
+ const rowE = readEnd(i);
73
+ start[i] = rowS;
74
+ end[i] = rowE;
75
+ if (!(Number.isFinite(rowS) && Number.isFinite(rowE) && rowE >= rowS)) {
76
+ firstBin[i] = Number.NaN;
77
+ continue;
78
+ }
79
+ const first = Math.floor(rowS / size);
80
+ // The last bin starting before the end, found by the product the
81
+ // pieces are cut at.
82
+ let last = first;
83
+ while ((last + 1) * size < rowE) {
84
+ last++;
85
+ }
86
+ firstBin[i] = first;
87
+ lastBin[i] = last;
88
+ pieces += last - first + 1;
89
+ if (first < low) {
90
+ low = first;
91
+ }
92
+ if (last > high) {
93
+ high = last;
94
+ }
95
+ }
96
+ lowBin[s] = low;
97
+ highBin[s] = high;
98
+ }
99
+ return {
100
+ start,
101
+ end,
102
+ first: firstBin,
103
+ last: lastBin,
104
+ pieces,
105
+ lowBin,
106
+ highBin,
107
+ };
108
+ }
109
+ /**
110
+ * Rows a step made from nothing: an `aggregate`'s groups and a `coverage`'s
111
+ * runs, carrying only the fields they wrote and an id from their span, with
112
+ * no feature to hang from.
113
+ */
114
+ export class MadeTable {
115
+ length;
116
+ columns;
117
+ tags;
118
+ constructor(length, columns, tags) {
119
+ this.length = length;
120
+ this.columns = columns;
121
+ this.tags = tags;
122
+ }
123
+ column(field) {
124
+ return field === 'uniqueId'
125
+ ? { kind: 'value', read: i => this.id(i) }
126
+ : (this.columns.get(field) ?? NO_COLUMN);
127
+ }
128
+ id(i) {
129
+ const at = (field) => String(valueAt(this.column(field), i));
130
+ return `${at('refName')}:${at('start')}-${at('end')}${this.tags(i)}`;
131
+ }
132
+ parentOfRow() {
133
+ return undefined;
134
+ }
135
+ row(i) {
136
+ return new TableRow(this, i);
137
+ }
138
+ json(i) {
139
+ const out = {};
140
+ for (const [field, column] of this.columns) {
141
+ out[field] = valueAt(column, i);
142
+ }
143
+ out.uniqueId = this.id(i);
144
+ return out;
145
+ }
146
+ }
147
+ export function valueColumn(values) {
148
+ return { kind: 'value', read: i => values[i] };
149
+ }
150
+ // An aggregate's groups as rows, section by section: the groupby fields, the
151
+ // ops, and the reference name and extent each group spans.
152
+ export function madeGroups({ groups, keys, ops, step, refNames, start, end, sectionOf, sections, }) {
153
+ const columns = new Map();
154
+ for (const [field, values] of keys) {
155
+ columns.set(field, valueColumn(values));
156
+ }
157
+ for (const [k, agg] of step.ops.entries()) {
158
+ columns.set(aggregateFieldName(agg), ops[k]);
159
+ }
160
+ columns.set('refName', valueColumn(refNames));
161
+ columns.set('start', { kind: 'number', values: start, at: undefined });
162
+ columns.set('end', { kind: 'number', values: end, at: undefined });
163
+ const serial = new Uint32Array(groups);
164
+ const out = new Uint32Array(sections);
165
+ let s = 0;
166
+ for (let g = 0; g < groups; g++) {
167
+ while (s < sectionOf[g]) {
168
+ s++;
169
+ out[s] = g;
170
+ }
171
+ serial[g] = g - out[s];
172
+ }
173
+ for (s++; s < sections; s++) {
174
+ out[s] = groups;
175
+ }
176
+ return {
177
+ table: new MadeTable(groups, columns, g => `#${serial[g]}`),
178
+ bounds: out,
179
+ };
180
+ }
181
+ // Whether an op reads its `weight`: a weight moves no minimum or maximum.
182
+ export function isWeighted({ op, weight }) {
183
+ return weight !== undefined && op !== 'min' && op !== 'max';
184
+ }
185
+ /**
186
+ * One op's running sums per group, which the aggregate and the binned
187
+ * aggregate both add rows to in row order, so the two answer the same
188
+ * doubles. An unweighted row adds a weight of 1, which leaves every sum what
189
+ * it was before weights.
190
+ */
191
+ export class OpSums {
192
+ op;
193
+ readsValue;
194
+ sum;
195
+ weight;
196
+ min;
197
+ max;
198
+ constructor({ op, field }, groups) {
199
+ if (op !== 'count' && field === undefined) {
200
+ throw new Error(`an aggregate ${op} needs a field`);
201
+ }
202
+ this.op = op;
203
+ this.readsValue = op !== 'count';
204
+ this.sum = new Float64Array(groups);
205
+ this.weight = new Float64Array(groups);
206
+ this.min = new Float64Array(groups).fill(Infinity);
207
+ this.max = new Float64Array(groups).fill(-Infinity);
208
+ }
209
+ add(g, v, w) {
210
+ if ((this.readsValue && !Number.isFinite(v)) || !Number.isFinite(w)) {
211
+ return;
212
+ }
213
+ this.weight[g] += w;
214
+ if (this.readsValue) {
215
+ this.sum[g] += v * w;
216
+ if (v < this.min[g]) {
217
+ this.min[g] = v;
218
+ }
219
+ if (v > this.max[g]) {
220
+ this.max[g] = v;
221
+ }
222
+ }
223
+ }
224
+ column(groups) {
225
+ const { op } = this;
226
+ if (op === 'count' || op === 'sum') {
227
+ const values = (op === 'count' ? this.weight : this.sum).slice(0, groups);
228
+ return { kind: 'number', values, at: undefined };
229
+ }
230
+ const values = new Float64Array(groups);
231
+ for (let g = 0; g < groups; g++) {
232
+ values[g] =
233
+ this.weight[g] === 0
234
+ ? Number.NaN
235
+ : op === 'mean'
236
+ ? this.sum[g] / this.weight[g]
237
+ : op === 'min'
238
+ ? this.min[g]
239
+ : this.max[g];
240
+ }
241
+ return { kind: 'number', values, at: undefined, nanIsAbsent: true };
242
+ }
243
+ }
@@ -0,0 +1,145 @@
1
+ import type { Feature } from './simpleFeature.ts';
2
+ import type { Breakend } from '@gmod/vcf';
3
+ export declare const SV_SYMBOLIC_ALLELES: string[];
4
+ /**
5
+ * #api
6
+ * parseBreakend, honoring its `Breakend | undefined` signature. ALT strings are
7
+ * user data and malformed breakends do occur; @gmod/vcf <=7.0.10 throws on them
8
+ * instead of returning undefined, which would otherwise fail a whole render or
9
+ * feature-parse pass over one bad allele. Use this everywhere rather than
10
+ * importing parseBreakend directly; it can become a plain re-export once the
11
+ * upstream fix ships.
12
+ */
13
+ export declare function safeParseBreakend(alt: string): Breakend | undefined;
14
+ /**
15
+ * #api
16
+ * The mate locString ("chr2:100") of a parsed breakend, or undefined when it
17
+ * names no navigable position. Two ALT forms reach here without one: a single
18
+ * breakend (`.A` / `G.`) has no mate at all, and the symbolic-mate forms
19
+ * (`G<DEL>`, `<DEL>G`) get a placeholder `<DEL>:1` from parseBreakend, which
20
+ * puts a symbolic allele id where a contig name belongs. Callers that navigate
21
+ * or split-view a mate must drop both rather than treat `<DEL>` as a refName.
22
+ */
23
+ export declare function getBreakendMateLocString(breakend?: Breakend): string | undefined;
24
+ /**
25
+ * #api
26
+ * Parse raw (non-assembly-resolved) mate coordinates from a VCF SV feature+alt.
27
+ * Returns undefined when no mate coordinate info is found. `alleleIndex` is
28
+ * the alt's place in `ALT`, which a record repeating one symbolic allele with
29
+ * several lengths needs; it defaults to the first place `alt` appears.
30
+ */
31
+ export declare function parseSvAlt(feature: Feature, alt?: string, alleleIndex?: number): {
32
+ mateRefName: string;
33
+ matePos: number;
34
+ mateDirection?: number;
35
+ joinDirection?: number;
36
+ } | undefined;
37
+ /**
38
+ * #api
39
+ * Which way the sequence each end of a breakend KEEPS runs from its breakpoint,
40
+ * as `+1 = right` / `-1 = left` — the convention `StarFusionAdapter`'s
41
+ * `tickDirection` states and the one every producer in the tree emits.
42
+ *
43
+ * The two halves read their strings with OPPOSITE polarity, which is the whole
44
+ * reason to state them together. `Join: 'right'` says the mate piece is joined
45
+ * to the RIGHT of the ref base, so this end keeps the sequence to its left:
46
+ * negated. `MateDirection: 'right'` says the mate's own piece extends to the
47
+ * right of the mate position, which is already the direction it keeps: taken as
48
+ * read. So `N[chr2:2000[` is `{ joinDirection: -1, mateDirection: 1 }`, and that
49
+ * is the same pair `StarFusionAdapter` emits for the fusion it describes — the
50
+ * donor keeps the sequence below its breakpoint (-1) and the acceptor the
51
+ * sequence above its own (+1).
52
+ *
53
+ * Split out of `parseSvAlt` because a consumer holding an already-parsed
54
+ * `Breakend` was re-deriving it by hand, in two adjacent ternaries of opposite
55
+ * polarity — the shape that produced 78bb7b84f9.
56
+ */
57
+ export declare function breakendKeepsDirections(bnd: Breakend): {
58
+ mateDirection: number;
59
+ joinDirection: number;
60
+ };
61
+ /**
62
+ * #api
63
+ * Breakend notation, without parsing it: bracket forms (`G[chr2:100[`), single
64
+ * breakends (`.A` / `G.`), and the symbolic-mate form (`G<DEL>`, an angle
65
+ * bracket past position 0; a leading `<` is a plain symbolic allele).
66
+ */
67
+ export declare function isBreakend(alt: string): boolean;
68
+ /**
69
+ * #api
70
+ * The conventional size floor for calling a sequence indel structural.
71
+ */
72
+ export declare const SV_MIN_LENGTH = 50;
73
+ /**
74
+ * #api
75
+ * The class a symbolic allele id, `SVTYPE` or `EVENTTYPE` names. A subtype folds
76
+ * into its first level (`DEL:ME:ALU` is DEL, `DUP:TANDEM` DUP), except the
77
+ * tandem repeats VCF 4.4 spells `CNV:TR` and ExpansionHunter `STRn`, and the
78
+ * inverted duplication `INV:DUP`. 1000 Genomes' `CNn` counts one haplotype's
79
+ * copies, so none is a deletion and two or more a duplication. `''` for an
80
+ * empty or missing token.
81
+ */
82
+ export declare function svClassOfToken(raw: string): string;
83
+ /**
84
+ * #api
85
+ * The structural-variant class one ALT allele states, `''` for one that is not
86
+ * structural. A symbolic allele's own id wins. Otherwise VCF 4.4's `EVENTTYPE`
87
+ * does; then a breakend is the class its `SVTYPE` declares where that says more
88
+ * than BND, and a sequence allele is an insertion or deletion by its length
89
+ * against REF, else its `SVTYPE`'s class.
90
+ */
91
+ export declare function svClassOfAlt(alt: string, { ref, info, alleleIndex, }?: {
92
+ ref?: string;
93
+ info?: Record<string, unknown>;
94
+ alleleIndex?: number;
95
+ }): string;
96
+ /**
97
+ * #api
98
+ * The structural-variant class of a VCF record as a whole: the one class its
99
+ * alleles state, CNV where they are losses and gains of one segment, OTHER
100
+ * where they otherwise disagree, and `''` for a record with no structural
101
+ * allele.
102
+ */
103
+ export declare function svClassOf(feature: Feature): string;
104
+ export declare function readTranslocationMate(info: {
105
+ CHR2?: string[];
106
+ END?: number[];
107
+ STRANDS?: string[];
108
+ }): {
109
+ chr: string;
110
+ pos: number;
111
+ myDir: string;
112
+ mateDir: string;
113
+ myKeepsDir: number;
114
+ mateKeepsDir: number;
115
+ } | undefined;
116
+ /**
117
+ * One end of a junction: the base beside the join on the side this end keeps,
118
+ * 0-based.
119
+ */
120
+ export interface JunctionEnd {
121
+ refName: string;
122
+ pos: number;
123
+ /** which way the sequence this end keeps runs from it: 1 right, -1 left, 0 unknown */
124
+ keeps: number;
125
+ }
126
+ /**
127
+ * #api
128
+ * Where a paired record's junction is at each of its two ends, and which side
129
+ * of it each end keeps — the one answer every launcher, the row menu and the
130
+ * chain walk take, whether the record is a VCF breakend, a symbolic SV or a
131
+ * paired adapter's row (BEDPE, STAR-Fusion). Refnames are as the record spells
132
+ * them. `undefined` for a record naming no other end. A VCF record is read
133
+ * through `alt`, its first ALT unless the caller names another.
134
+ *
135
+ * A VCF end is its own position. A paired adapter's end is a block, and the
136
+ * junction is the block's edge on the side the end keeps: stated by
137
+ * `mateDirection` where the adapter knows it, read off the strands where the
138
+ * record states one for each end as BEDPE does, and with neither the two
139
+ * blocks face each other. A PAF row's strand is the query's orientation and
140
+ * states none for the target, so it names no side.
141
+ */
142
+ export declare function junctionEnds(feature: Feature, alt?: string | undefined, alleleIndex?: number): {
143
+ own: JunctionEnd;
144
+ mate: JunctionEnd;
145
+ } | undefined;