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

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 (637) hide show
  1. package/README.md +1709 -390
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
  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 +37 -14
  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 +49 -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/SequenceFeatureDetails/useSequenceData.js +8 -5
  35. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  36. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  37. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  38. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  39. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  40. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  41. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  42. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  43. package/esm/BaseFeatureWidget/util.js +0 -17
  44. package/esm/CorePlugin.js +34 -3
  45. package/esm/PluginLoader.d.ts +24 -13
  46. package/esm/PluginLoader.js +167 -51
  47. package/esm/PluginManager.d.ts +130 -24
  48. package/esm/PluginManager.js +180 -32
  49. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  50. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  51. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  52. package/esm/ReExports/coreModules.generated.js +530 -0
  53. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  54. package/esm/ReExports/coreWorkerModules.generated.js +490 -0
  55. package/esm/ReExports/frameworkModules.d.ts +2 -0
  56. package/esm/ReExports/frameworkModules.js +68 -0
  57. package/esm/ReExports/frameworkShared.d.ts +12 -0
  58. package/esm/ReExports/frameworkShared.js +16 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  60. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  61. package/esm/ReExports/list.js +528 -79
  62. package/esm/ReExports/modules.d.ts +1 -1
  63. package/esm/ReExports/modules.js +10 -165
  64. package/esm/ReExports/registry.d.ts +1 -0
  65. package/esm/ReExports/registry.js +23 -5
  66. package/esm/ReExports/uiStub.d.ts +3 -0
  67. package/esm/ReExports/uiStub.js +33 -0
  68. package/esm/ReExports/workerModules.d.ts +2 -0
  69. package/esm/ReExports/workerModules.js +11 -0
  70. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  71. package/esm/TextSearch/TextSearchManager.js +77 -36
  72. package/esm/TextSearch/places.d.ts +12 -0
  73. package/esm/TextSearch/places.js +94 -0
  74. package/esm/assemblyManager/assembly.d.ts +21 -19
  75. package/esm/assemblyManager/assembly.js +28 -26
  76. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  77. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  78. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  79. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  80. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  81. package/esm/assemblyManager/assemblyManager.js +47 -51
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  83. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  84. package/esm/assemblyManager/geneticCodes.js +2 -5
  85. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  86. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  87. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  88. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  89. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  90. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  91. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  92. package/esm/assemblyManager/refNameMapKey.js +12 -0
  93. package/esm/checkPlugins.d.ts +2 -0
  94. package/esm/checkPlugins.js +38 -17
  95. package/esm/configuration/bamIndexFields.d.ts +49 -0
  96. package/esm/configuration/bamIndexFields.js +41 -0
  97. package/esm/configuration/configurationSchema.d.ts +101 -71
  98. package/esm/configuration/configurationSchema.js +207 -134
  99. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  100. package/esm/configuration/configurationSchemaUnion.js +56 -0
  101. package/esm/configuration/configurationSlot.d.ts +150 -60
  102. package/esm/configuration/configurationSlot.js +103 -75
  103. package/esm/configuration/fillLocations.d.ts +14 -0
  104. package/esm/configuration/fillLocations.js +14 -0
  105. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  106. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  107. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  108. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  109. package/esm/configuration/fullConfSnapshot.js +30 -52
  110. package/esm/configuration/getConf.d.ts +45 -41
  111. package/esm/configuration/getConf.js +111 -44
  112. package/esm/configuration/index.d.ts +26 -11
  113. package/esm/configuration/index.js +16 -7
  114. package/esm/configuration/indexType.d.ts +26 -0
  115. package/esm/configuration/indexType.js +38 -0
  116. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  117. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  118. package/esm/configuration/plot.d.ts +61 -0
  119. package/esm/configuration/plot.js +142 -0
  120. package/esm/configuration/readConfObject.d.ts +2 -24
  121. package/esm/configuration/readConfObject.js +20 -63
  122. package/esm/configuration/requirements.d.ts +37 -0
  123. package/esm/configuration/requirements.js +88 -0
  124. package/esm/configuration/schemaRegistry.d.ts +32 -15
  125. package/esm/configuration/schemaRegistry.js +33 -35
  126. package/esm/configuration/schemaTypes.d.ts +21 -5
  127. package/esm/configuration/schemaTypes.js +66 -55
  128. package/esm/configuration/slotFacade.d.ts +12 -29
  129. package/esm/configuration/slotFacade.js +44 -23
  130. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  131. package/esm/configuration/snapshotPreprocess.js +161 -0
  132. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  133. package/esm/configuration/tabixIndexFields.js +21 -4
  134. package/esm/configuration/tabixShorthand.d.ts +34 -17
  135. package/esm/configuration/tabixShorthand.js +49 -22
  136. package/esm/configuration/types.d.ts +182 -43
  137. package/esm/configuration/uriShorthand.d.ts +9 -0
  138. package/esm/configuration/uriShorthand.js +16 -0
  139. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  140. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  141. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  142. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  143. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  144. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  145. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  146. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  147. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  148. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  149. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  150. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  151. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  152. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  153. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  154. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  155. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  156. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  157. package/esm/data_adapters/dataAdapterCache.js +44 -10
  158. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  159. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  160. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  161. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  162. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  163. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  164. package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
  165. package/esm/pluggableElementTypes/DisplayType.js +28 -12
  166. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  167. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  168. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  169. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  170. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  171. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  172. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  173. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  174. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  175. package/esm/pluggableElementTypes/ViewType.js +32 -4
  176. package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
  177. package/esm/pluggableElementTypes/WidgetType.js +6 -0
  178. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  179. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  180. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  181. package/esm/pluggableElementTypes/index.d.ts +2 -1
  182. package/esm/pluggableElementTypes/index.js +2 -9
  183. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  184. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
  185. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
  186. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  187. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  188. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
  189. package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
  190. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  191. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  192. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  193. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  194. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  195. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  196. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  197. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  198. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  199. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  200. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  201. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  202. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  203. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  204. package/esm/pluggableElementTypes/models/index.js +2 -3
  205. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  206. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  207. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  208. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  209. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  210. package/esm/pluginDefinitions.d.ts +34 -7
  211. package/esm/pluginDefinitions.js +54 -20
  212. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  213. package/esm/rpc/BaseRpcDriver.js +25 -30
  214. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  215. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  216. package/esm/rpc/RpcClient.d.ts +18 -6
  217. package/esm/rpc/RpcClient.js +51 -16
  218. package/esm/rpc/RpcManager.d.ts +14 -10
  219. package/esm/rpc/RpcManager.js +11 -1
  220. package/esm/rpc/RpcRegistry.d.ts +40 -7
  221. package/esm/rpc/RpcServer.d.ts +3 -1
  222. package/esm/rpc/RpcServer.js +19 -12
  223. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  224. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  225. package/esm/rpc/byteBudget.d.ts +20 -5
  226. package/esm/rpc/byteBudget.js +16 -5
  227. package/esm/rpc/configSchema.d.ts +7 -21
  228. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  229. package/esm/rpc/coreRpcMethods.js +4 -0
  230. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  231. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  232. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  233. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  234. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  235. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  236. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  237. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  238. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  239. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  240. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  241. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  242. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  243. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  244. package/esm/rpc/methods/layerFeatures.js +29 -0
  245. package/esm/svg/SvgExport.js +6 -7
  246. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  247. package/esm/svg/SvgThemeProviders.js +15 -0
  248. package/esm/svg/exportViewSvg.d.ts +28 -0
  249. package/esm/svg/exportViewSvg.js +13 -0
  250. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  251. package/esm/svg/normalizeSvgMarkup.js +99 -0
  252. package/esm/svg/serializeSvg.d.ts +7 -0
  253. package/esm/svg/serializeSvg.js +11 -0
  254. package/esm/svg/svgId.d.ts +1 -1
  255. package/esm/svg/svgId.js +1 -1
  256. package/esm/svg/svgReady.d.ts +9 -7
  257. package/esm/svg/svgReady.js +8 -7
  258. package/esm/svg/trackNames.d.ts +7 -5
  259. package/esm/svg/trackNames.js +12 -9
  260. package/esm/svg/wrapSvgExport.js +6 -74
  261. package/esm/ui/AddCustomPluginDialog.js +3 -8
  262. package/esm/ui/AppReadyMarker.d.ts +45 -0
  263. package/esm/ui/AppReadyMarker.js +89 -0
  264. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  265. package/esm/ui/CascadingMenu.js +181 -104
  266. package/esm/ui/DropDownMenu.js +2 -1
  267. package/esm/ui/ErrorBanner.js +1 -1
  268. package/esm/ui/ErrorBoundary.d.ts +2 -2
  269. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  270. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  271. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  272. package/esm/ui/FileDropZone.js +2 -1
  273. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  274. package/esm/ui/HoverMenu.d.ts +1 -2
  275. package/esm/ui/HoverMenu.js +6 -3
  276. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  277. package/esm/ui/JexlFilterDialog.js +122 -50
  278. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  279. package/esm/ui/JexlFilterRowEditors.js +90 -0
  280. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  281. package/esm/ui/LazyBaseTooltip.js +9 -0
  282. package/esm/ui/LegendSwatchGlyph.js +26 -21
  283. package/esm/ui/LoadingOverlay.d.ts +14 -0
  284. package/esm/ui/LoadingOverlay.js +4 -2
  285. package/esm/ui/MenuTypes.d.ts +23 -53
  286. package/esm/ui/MenuTypes.js +3 -0
  287. package/esm/ui/MonospaceTextField.d.ts +2 -1
  288. package/esm/ui/MonospaceTextField.js +23 -20
  289. package/esm/ui/PaletteContext.d.ts +10 -5
  290. package/esm/ui/PaletteContext.js +44 -6
  291. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  292. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  293. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  294. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  295. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  296. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  297. package/esm/ui/ResizeHandle.d.ts +3 -1
  298. package/esm/ui/ResizeHandle.js +44 -11
  299. package/esm/ui/ScrollChrome.d.ts +13 -0
  300. package/esm/ui/ScrollChrome.js +11 -0
  301. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  302. package/esm/ui/ScrollEdgeShadow.js +14 -35
  303. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  304. package/esm/ui/ScrollZoomToggle.js +34 -51
  305. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  306. package/esm/ui/SessionJsonPanel.js +14 -0
  307. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  308. package/esm/ui/SettingsChangesTable.js +49 -11
  309. package/esm/ui/ShareLinkField.d.ts +1 -3
  310. package/esm/ui/ShareLinkField.js +13 -40
  311. package/esm/ui/SizeSliderRow.d.ts +1 -3
  312. package/esm/ui/SizeSliderRow.js +4 -6
  313. package/esm/ui/SnackbarModel.js +79 -67
  314. package/esm/ui/StatusProgressBar.js +2 -2
  315. package/esm/ui/SvgColorLegend.d.ts +9 -4
  316. package/esm/ui/SvgColorLegend.js +82 -41
  317. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  318. package/esm/ui/VerticalScrollbar.js +29 -83
  319. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  320. package/esm/ui/ViewLoadingScreen.js +8 -32
  321. package/esm/ui/colorScale.d.ts +92 -0
  322. package/esm/ui/colorScale.js +72 -0
  323. package/esm/ui/colors.d.ts +64 -0
  324. package/esm/ui/colors.js +230 -1
  325. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  326. package/esm/ui/hoverBoxStyle.js +17 -2
  327. package/esm/ui/index.d.ts +12 -12
  328. package/esm/ui/index.js +14 -22
  329. package/esm/ui/launchViewMenu.js +15 -5
  330. package/esm/ui/legendMenuItem.d.ts +10 -32
  331. package/esm/ui/legendMenuItem.js +9 -36
  332. package/esm/ui/legendSpec.d.ts +15 -8
  333. package/esm/ui/legendSpec.js +14 -23
  334. package/esm/ui/makeSizeMenu.d.ts +0 -6
  335. package/esm/ui/makeSizeMenu.js +6 -30
  336. package/esm/ui/measureLegendText.js +1 -1
  337. package/esm/ui/menuItemAdornment.d.ts +9 -20
  338. package/esm/ui/menuItemAdornment.js +10 -32
  339. package/esm/ui/menuItems.d.ts +2 -7
  340. package/esm/ui/menuItems.js +1 -6
  341. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  342. package/esm/ui/palette.d.ts +118 -116
  343. package/esm/ui/palette.js +114 -75
  344. package/esm/ui/replaceViewAction.d.ts +1 -1
  345. package/esm/ui/replaceViewAction.js +1 -1
  346. package/esm/ui/theme.d.ts +43 -119
  347. package/esm/ui/theme.js +62 -78
  348. package/esm/ui/toggleMenuItems.d.ts +1 -3
  349. package/esm/ui/toggleMenuItems.js +6 -5
  350. package/esm/ui/useAssemblySelection.d.ts +4 -4
  351. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  352. package/esm/ui/viewHeaderHeight.js +1 -0
  353. package/esm/util/Base1DUtils.d.ts +5 -3
  354. package/esm/util/Base1DUtils.js +14 -6
  355. package/esm/util/Base1DViewModel.d.ts +2 -1
  356. package/esm/util/Base1DViewModel.js +3 -2
  357. package/esm/util/SvgCanvas.d.ts +15 -13
  358. package/esm/util/SvgCanvas.js +76 -56
  359. package/esm/util/TimeTraveller.d.ts +3 -0
  360. package/esm/util/TimeTraveller.js +34 -2
  361. package/esm/util/aborting.d.ts +39 -0
  362. package/esm/util/aborting.js +88 -6
  363. package/esm/util/adapterMetadata.d.ts +1 -1
  364. package/esm/util/adapterMetadata.js +6 -5
  365. package/esm/util/addAndShowTrack.d.ts +2 -5
  366. package/esm/util/addAndShowTrack.js +5 -1
  367. package/esm/util/addRelativeUris.d.ts +17 -5
  368. package/esm/util/addRelativeUris.js +46 -10
  369. package/esm/util/addTrackFromWidget.d.ts +2 -5
  370. package/esm/util/addTrackFromWidget.js +5 -4
  371. package/esm/util/aggregateFieldName.d.ts +10 -0
  372. package/esm/util/aggregateFieldName.js +8 -0
  373. package/esm/util/analytics.js +46 -13
  374. package/esm/util/animationAllowed.d.ts +9 -0
  375. package/esm/util/animationAllowed.js +13 -0
  376. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  377. package/esm/util/applyRowResizeWheel.js +10 -21
  378. package/esm/util/bandHeight.d.ts +10 -0
  379. package/esm/util/bandHeight.js +29 -0
  380. package/esm/util/bandLayout.d.ts +4 -4
  381. package/esm/util/bandLayout.js +4 -4
  382. package/esm/util/baseDisplayConfig.d.ts +8 -0
  383. package/esm/util/baseDisplayConfig.js +27 -0
  384. package/esm/util/bezierConnector.d.ts +4 -3
  385. package/esm/util/bezierConnector.js +38 -45
  386. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  387. package/esm/util/bgzfWorkerPool.js +20 -74
  388. package/esm/util/binnedAggregate.d.ts +17 -0
  389. package/esm/util/binnedAggregate.js +275 -0
  390. package/esm/util/cacheBudgets.d.ts +22 -19
  391. package/esm/util/cacheBudgets.js +22 -19
  392. package/esm/util/cachedSetup.d.ts +16 -6
  393. package/esm/util/cachedSetup.js +108 -38
  394. package/esm/util/categoricalField.d.ts +56 -0
  395. package/esm/util/categoricalField.js +73 -0
  396. package/esm/util/cellMatches.d.ts +23 -0
  397. package/esm/util/cellMatches.js +264 -0
  398. package/esm/util/cellsStep.d.ts +29 -0
  399. package/esm/util/cellsStep.js +437 -0
  400. package/esm/util/clampToContig.d.ts +17 -0
  401. package/esm/util/clampToContig.js +19 -0
  402. package/esm/util/coarseStripHTML.js +1 -2
  403. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  404. package/esm/util/color/cssColorsLevel4.js +1 -0
  405. package/esm/util/color/index.d.ts +5 -3
  406. package/esm/util/color/index.js +7 -4
  407. package/esm/util/colorBits.d.ts +3 -3
  408. package/esm/util/colorBits.js +19 -44
  409. package/esm/util/colorRamp.d.ts +49 -5
  410. package/esm/util/colorRamp.js +169 -18
  411. package/esm/util/colorScale.d.ts +156 -0
  412. package/esm/util/colorScale.js +243 -0
  413. package/esm/util/colorSchemes.d.ts +21 -0
  414. package/esm/util/colorSchemes.js +30 -0
  415. package/esm/util/copyToClipboard.js +8 -1
  416. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  417. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  418. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  419. package/esm/util/cssColorParse.d.ts +15 -0
  420. package/esm/util/cssColorParse.js +53 -0
  421. package/esm/util/diagonalizeRegions.d.ts +2 -3
  422. package/esm/util/diagonalizeRegions.js +8 -13
  423. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  424. package/esm/util/expandLooseSearchIndex.js +29 -0
  425. package/esm/util/featureTable.d.ts +224 -0
  426. package/esm/util/featureTable.js +366 -0
  427. package/esm/util/featureTransforms.d.ts +81 -0
  428. package/esm/util/featureTransforms.js +1231 -0
  429. package/esm/util/featureTypes.d.ts +24 -0
  430. package/esm/util/featureTypes.js +35 -0
  431. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  432. package/esm/util/fetchContext.d.ts +7 -8
  433. package/esm/util/fetchContext.js +3 -3
  434. package/esm/util/fetchHub.d.ts +4 -2
  435. package/esm/util/fetchHub.js +2 -2
  436. package/esm/util/fetchPhases.d.ts +10 -10
  437. package/esm/util/fetchSeq.d.ts +2 -3
  438. package/esm/util/fetchSeq.js +2 -2
  439. package/esm/util/fieldReader.d.ts +17 -0
  440. package/esm/util/fieldReader.js +62 -0
  441. package/esm/util/formatBytes.js +1 -1
  442. package/esm/util/formatGuessers.d.ts +25 -14
  443. package/esm/util/formatGuessers.js +42 -27
  444. package/esm/util/formatRelativeTime.js +1 -1
  445. package/esm/util/freezeDeep.d.ts +8 -10
  446. package/esm/util/freezeDeep.js +8 -10
  447. package/esm/util/getLocationUri.d.ts +2 -1
  448. package/esm/util/getLocationUri.js +8 -2
  449. package/esm/util/groupKeys.d.ts +76 -0
  450. package/esm/util/groupKeys.js +156 -0
  451. package/esm/util/highlights.d.ts +10 -6
  452. package/esm/util/highlights.js +12 -25
  453. package/esm/util/hooks.d.ts +31 -2
  454. package/esm/util/hooks.js +72 -3
  455. package/esm/util/index.d.ts +11 -11
  456. package/esm/util/index.js +11 -10
  457. package/esm/util/indexCandidates.d.ts +1 -31
  458. package/esm/util/indexCandidates.js +5 -63
  459. package/esm/util/installFetch.d.ts +77 -37
  460. package/esm/util/installFetch.js +65 -38
  461. package/esm/util/installInitAutorun.d.ts +14 -13
  462. package/esm/util/installInitAutorun.js +17 -17
  463. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  464. package/esm/util/installPrerequisiteFetch.js +111 -0
  465. package/esm/util/intervals.js +9 -4
  466. package/esm/util/io/index.js +22 -15
  467. package/esm/util/isDataCurrent.d.ts +7 -5
  468. package/esm/util/isDataCurrent.js +9 -6
  469. package/esm/util/isTextEntryFocused.d.ts +7 -0
  470. package/esm/util/isTextEntryFocused.js +16 -0
  471. package/esm/util/jexl.js +24 -21
  472. package/esm/util/jexlFilterRows.d.ts +89 -0
  473. package/esm/util/jexlFilterRows.js +252 -0
  474. package/esm/util/jexlFilters.d.ts +32 -57
  475. package/esm/util/jexlFilters.js +31 -29
  476. package/esm/util/jexlStrings.d.ts +3 -4
  477. package/esm/util/jexlStrings.js +2 -3
  478. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  479. package/esm/util/layouts/GranularRectLayout.js +25 -8
  480. package/esm/util/lazyAfterAttach.d.ts +13 -0
  481. package/esm/util/lazyAfterAttach.js +31 -0
  482. package/esm/util/lazyWithPreload.d.ts +19 -0
  483. package/esm/util/lazyWithPreload.js +27 -0
  484. package/esm/util/legendCandidates.d.ts +72 -0
  485. package/esm/util/legendCandidates.js +138 -0
  486. package/esm/util/locString.js +5 -2
  487. package/esm/util/localStorage.js +4 -4
  488. package/esm/util/markEncoding.d.ts +150 -0
  489. package/esm/util/markEncoding.js +885 -0
  490. package/esm/util/markEncodingTypes.d.ts +595 -0
  491. package/esm/util/markEncodingTypes.js +8 -0
  492. package/esm/util/mst-reflection.d.ts +2 -20
  493. package/esm/util/mst-reflection.js +3 -53
  494. package/esm/util/mstUtils.d.ts +31 -23
  495. package/esm/util/mstUtils.js +39 -24
  496. package/esm/util/numericUtils.d.ts +7 -0
  497. package/esm/util/numericUtils.js +16 -0
  498. package/esm/util/numericValue.d.ts +14 -0
  499. package/esm/util/numericValue.js +34 -0
  500. package/esm/util/openFeatureWidget.d.ts +5 -0
  501. package/esm/util/openFeatureWidget.js +2 -2
  502. package/esm/util/openViews.d.ts +17 -0
  503. package/esm/util/openViews.js +22 -0
  504. package/esm/util/parentWalk.d.ts +1 -1
  505. package/esm/util/parentWalk.js +1 -1
  506. package/esm/util/parseLineByLine.d.ts +4 -5
  507. package/esm/util/parseLineByLine.js +8 -14
  508. package/esm/util/pluginStore.d.ts +6 -8
  509. package/esm/util/pluginStore.js +17 -16
  510. package/esm/util/preloadComponent.d.ts +5 -0
  511. package/esm/util/preloadComponent.js +11 -0
  512. package/esm/util/progress.d.ts +22 -22
  513. package/esm/util/progress.js +27 -26
  514. package/esm/util/quantileExtent.d.ts +49 -0
  515. package/esm/util/quantileExtent.js +162 -0
  516. package/esm/util/range.d.ts +13 -9
  517. package/esm/util/range.js +17 -8
  518. package/esm/util/renameRegions.d.ts +26 -6
  519. package/esm/util/renameRegions.js +68 -54
  520. package/esm/util/renderToStaticMarkup.js +24 -14
  521. package/esm/util/rxjs.d.ts +23 -8
  522. package/esm/util/rxjs.js +61 -15
  523. package/esm/util/samplesTsv.d.ts +49 -0
  524. package/esm/util/samplesTsv.js +86 -0
  525. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  526. package/esm/util/scheduleDetachedDestroy.js +24 -0
  527. package/esm/util/scrollLatch.d.ts +1 -0
  528. package/esm/util/scrollLatch.js +8 -0
  529. package/esm/util/selectEncodedFeature.d.ts +16 -0
  530. package/esm/util/selectEncodedFeature.js +34 -0
  531. package/esm/util/sessionSharing.d.ts +7 -5
  532. package/esm/util/sessionSharing.js +23 -23
  533. package/esm/util/shapeNameList.d.ts +2 -0
  534. package/esm/util/shapeNameList.js +6 -0
  535. package/esm/util/shapeNames.d.ts +7 -0
  536. package/esm/util/shapeNames.js +11 -0
  537. package/esm/util/simpleFeature.d.ts +0 -1
  538. package/esm/util/springAnimate.js +1 -1
  539. package/esm/util/starFusion.d.ts +26 -0
  540. package/esm/util/starFusion.js +37 -0
  541. package/esm/util/stepTables.d.ts +96 -0
  542. package/esm/util/stepTables.js +277 -0
  543. package/esm/util/svAlt.d.ts +145 -0
  544. package/esm/util/svAlt.js +364 -0
  545. package/esm/util/svgColorProps.d.ts +11 -0
  546. package/esm/util/svgColorProps.js +28 -1
  547. package/esm/util/systemColorScheme.d.ts +12 -0
  548. package/esm/util/systemColorScheme.js +27 -0
  549. package/esm/util/tabix.d.ts +19 -10
  550. package/esm/util/tabix.js +19 -14
  551. package/esm/util/thresholdScale.d.ts +91 -0
  552. package/esm/util/thresholdScale.js +166 -0
  553. package/esm/util/timeGate.d.ts +4 -5
  554. package/esm/util/timeGate.js +4 -5
  555. package/esm/util/trackConfigDelta.d.ts +26 -26
  556. package/esm/util/trackConfigDelta.js +63 -47
  557. package/esm/util/tracks.d.ts +120 -66
  558. package/esm/util/tracks.js +501 -151
  559. package/esm/util/translateTranscript.d.ts +44 -0
  560. package/esm/util/translateTranscript.js +102 -0
  561. package/esm/util/types/data.d.ts +0 -2
  562. package/esm/util/types/index.d.ts +121 -22
  563. package/esm/util/types/index.js +9 -0
  564. package/esm/util/types/mst.d.ts +3 -0
  565. package/esm/util/types/mst.js +4 -0
  566. package/esm/util/types/renameIds.d.ts +1 -0
  567. package/esm/util/types/renameIds.js +29 -0
  568. package/esm/util/types/services.d.ts +1 -1
  569. package/esm/util/unknownSnapshotKeys.d.ts +53 -0
  570. package/esm/util/unknownSnapshotKeys.js +76 -0
  571. package/esm/util/useFeatureSequence.js +5 -5
  572. package/esm/util/useFetch.d.ts +3 -4
  573. package/esm/util/useFetch.js +19 -10
  574. package/esm/util/useFetchPlugins.d.ts +6 -2
  575. package/esm/util/useFetchPlugins.js +7 -3
  576. package/esm/util/usePanZoom.js +10 -3
  577. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  578. package/esm/util/usePanelVirtualScroll.js +9 -36
  579. package/esm/util/useRafCommit.js +1 -0
  580. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  581. package/esm/util/useRowVirtualScroll.js +8 -49
  582. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  583. package/esm/util/useVirtualScrollWheel.js +40 -74
  584. package/esm/util/viewHighlights.d.ts +3 -0
  585. package/esm/util/viewHighlights.js +5 -0
  586. package/esm/util/viewStatus.d.ts +47 -15
  587. package/esm/util/viewStatus.js +34 -0
  588. package/esm/util/wheelZoom.d.ts +7 -1
  589. package/esm/util/wheelZoom.js +85 -19
  590. package/esm/util/whenViewSettled.d.ts +55 -8
  591. package/esm/util/whenViewSettled.js +56 -7
  592. package/esm/util/withFeatureDetails.js +4 -0
  593. package/esm/util/withLaunchInput.d.ts +174 -0
  594. package/esm/util/withLaunchInput.js +274 -0
  595. package/package.json +75 -24
  596. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  597. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  598. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  599. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  600. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  601. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  602. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  603. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  604. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  605. package/esm/ReExports/index.d.ts +0 -1
  606. package/esm/ReExports/index.js +0 -1
  607. package/esm/ReExports/publicUtil.d.ts +0 -1
  608. package/esm/ReExports/publicUtil.js +0 -28
  609. package/esm/configuration/promotableDefaults.d.ts +0 -199
  610. package/esm/configuration/promotableDefaults.js +0 -326
  611. package/esm/configuration/promotablePin.d.ts +0 -55
  612. package/esm/configuration/promotablePin.js +0 -1
  613. package/esm/configuration/promotableResolve.d.ts +0 -108
  614. package/esm/configuration/promotableResolve.js +0 -117
  615. package/esm/configuration/promotableSlots.d.ts +0 -12
  616. package/esm/configuration/promotableSlots.js +0 -45
  617. package/esm/configuration/slotShape.d.ts +0 -12
  618. package/esm/configuration/slotShape.js +0 -84
  619. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  620. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  621. package/esm/ui/PinAdornment.d.ts +0 -5
  622. package/esm/ui/PinAdornment.js +0 -79
  623. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  624. package/esm/ui/SvgGradientLegend.js +0 -26
  625. package/esm/ui/highlightChipReveal.d.ts +0 -32
  626. package/esm/ui/highlightChipReveal.js +0 -39
  627. package/esm/ui/promotableMenuItems.d.ts +0 -19
  628. package/esm/ui/promotableMenuItems.js +0 -89
  629. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  630. package/esm/ui/promotablePinCoverage.js +0 -87
  631. package/esm/util/applyInitSettings.d.ts +0 -79
  632. package/esm/util/applyInitSettings.js +0 -91
  633. package/esm/util/openDisplays.d.ts +0 -23
  634. package/esm/util/openDisplays.js +0 -79
  635. package/esm/util/stopToken.d.ts +0 -211
  636. package/esm/util/stopToken.js +0 -438
  637. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -0,0 +1,43 @@
1
+ import type { RetiredSpelling } from './configurationSchema.ts';
2
+ import type { ConfigurationSchemaMetadata } from './schemaRegistry.ts';
3
+ import type { IAnyType } from '@jbrowse/mobx-state-tree';
4
+ export declare function listed(keys: readonly string[]): string;
5
+ /**
6
+ * The snapshot with each spelling `retired` names rewritten: a lift's members
7
+ * take the old key's place, and what the snapshot already spells wins, member
8
+ * by member inside an object, since writing the current name is the stronger
9
+ * statement — so a retired flag lifting into `scales.y` lands beside a
10
+ * `scales.y` the snapshot writes. The old key goes whether or not it carried a
11
+ * value, so a `closed` schema never meets it. Where two retired names lift
12
+ * onto one member — a slot the entry spelt directly and the same slot inside a
13
+ * retired `renderer` — the one declared first wins.
14
+ */
15
+ export declare function liftRetiredSpellings(schema: ConfigurationSchemaMetadata, snapshot: Record<string, unknown>): Record<string, unknown>;
16
+ /**
17
+ * `liftRetiredSpellings` over a map directly, for a schema whose own
18
+ * `preProcessSnapshot` uncovers a retired name the pass above could not see —
19
+ * one that arrives out of a legacy sub-config rather than off the entry.
20
+ * Applying the same map twice costs nothing, since a lift deletes the name it
21
+ * reads.
22
+ */
23
+ export declare function applyRetiredSpellings(retired: Record<string, RetiredSpelling>, snapshot: Record<string, unknown>): Record<string, unknown>;
24
+ /**
25
+ * What a schema does to every snapshot on its way in, whichever door it
26
+ * arrives by (`create`, `applySnapshot`, `setSubschema`, a settings bag): a
27
+ * bare string or number lifts into the `shorthand` slot taking its form, beside any
28
+ * `shorthandWith` slots, and `null` into the empty object that clears it; a
29
+ * `null` member reads as unset, except in a frozen-family slot, which stores
30
+ * it; a `retired` spelling becomes the members that replaced it; a `closed`
31
+ * schema refuses a key it does not declare, then the schema's
32
+ * own `preProcessSnapshot` runs, and a `jexl:` callback in a slot declaring no
33
+ * `contextVariable` is refused. A bare value the shorthand does not lift
34
+ * passes through for MST to refuse.
35
+ */
36
+ export declare function preProcessSnapshotWith(schema: ConfigurationSchemaMetadata, snapshot: unknown): Record<string, unknown>;
37
+ /**
38
+ * #api core/configuration
39
+ * A snapshot as `type` admits it: the same lift and checks `type.create`
40
+ * applies, so a dialog or a validator refuses exactly what a config file
41
+ * cannot hold. Throws what the schema's `preProcessSnapshot` throws.
42
+ */
43
+ export declare function preProcessConfigSnapshot(type: IAnyType, snapshot: unknown): Record<string, unknown>;
@@ -0,0 +1,161 @@
1
+ import { isJexl } from '../util/jexlStrings.js';
2
+ import { slotWriteRefusal } from './configurationSlot.js';
3
+ import { getConfigurationSchemaMetadata } from './schemaRegistry.js';
4
+ import { bareFormOf, isConstantEntry, shorthandTargets } from './schemaTypes.js';
5
+ // the keys a config file may annotate any object with, as the JSON schema's
6
+ // `patternProperties` admits them
7
+ const COMMENT_KEY = /^_+comment/;
8
+ export function listed(keys) {
9
+ return keys.length > 1
10
+ ? `${keys.slice(0, -1).join(', ')} and ${keys.at(-1)}`
11
+ : (keys[0] ?? 'nothing');
12
+ }
13
+ function refuseUndeclaredKeys({ name, definition, options }, snapshot) {
14
+ const id = options.explicitIdentifier;
15
+ const declared = [
16
+ ...Object.keys(definition).filter(key => !isConstantEntry(definition[key])),
17
+ ...(options.explicitlyTyped ? ['type'] : []),
18
+ ...(id ? [id] : []),
19
+ ];
20
+ const unknown = typeof snapshot === 'string'
21
+ ? [JSON.stringify(snapshot)]
22
+ : Object.keys(snapshot ?? {}).filter(key => !declared.includes(key) && !COMMENT_KEY.test(key));
23
+ if (unknown.length > 0) {
24
+ throw new Error(`${name} takes ${listed(declared)}, not ${unknown.join(', ')}`);
25
+ }
26
+ }
27
+ // Checked here as well as by each slot's MST type because this runs on every
28
+ // create, where MST's own check is off in a build that has not enabled it
29
+ function refuseCallbacks({ name, takesNoCallback }, snapshot) {
30
+ if (typeof snapshot === 'object' && snapshot !== null) {
31
+ for (const key in snapshot) {
32
+ const type = takesNoCallback.get(key);
33
+ const value = snapshot[key];
34
+ if (type !== undefined && isJexl(value)) {
35
+ throw new Error(slotWriteRefusal(`${name}.${key}`, type, value));
36
+ }
37
+ }
38
+ }
39
+ }
40
+ // ADR-146's reset, on the snapshot path: the member keeps its key, so a
41
+ // settings bag still resets it, and `create` reads `undefined` as the default
42
+ function nullMembersAsUnset(snapshot, storesNull) {
43
+ let out = snapshot;
44
+ for (const key in snapshot) {
45
+ if (snapshot[key] === null && !storesNull.has(key)) {
46
+ out = out === snapshot ? { ...snapshot } : out;
47
+ out[key] = undefined;
48
+ }
49
+ }
50
+ return out;
51
+ }
52
+ /**
53
+ * A schema reads its own entry alone. A `displays` union runs every member's
54
+ * preprocessor over every entry while it works out which display an entry is,
55
+ * so an entry naming another type is left as it was, and one naming no type is
56
+ * a bag headed here.
57
+ */
58
+ function isOwnSnapshot({ name, options }, snapshot) {
59
+ return (!options.explicitlyTyped ||
60
+ snapshot.type === undefined ||
61
+ snapshot.type === name);
62
+ }
63
+ function isPlainObject(value) {
64
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
65
+ }
66
+ // `lifted` under `written`: what the snapshot spells wins, member by member
67
+ // where both are objects.
68
+ function underWritten(written, lifted) {
69
+ if (written === undefined) {
70
+ return lifted;
71
+ }
72
+ if (isPlainObject(written) && isPlainObject(lifted)) {
73
+ const out = { ...written };
74
+ for (const [key, value] of Object.entries(lifted)) {
75
+ out[key] = underWritten(written[key], value);
76
+ }
77
+ return out;
78
+ }
79
+ return written;
80
+ }
81
+ /**
82
+ * The snapshot with each spelling `retired` names rewritten: a lift's members
83
+ * take the old key's place, and what the snapshot already spells wins, member
84
+ * by member inside an object, since writing the current name is the stronger
85
+ * statement — so a retired flag lifting into `scales.y` lands beside a
86
+ * `scales.y` the snapshot writes. The old key goes whether or not it carried a
87
+ * value, so a `closed` schema never meets it. Where two retired names lift
88
+ * onto one member — a slot the entry spelt directly and the same slot inside a
89
+ * retired `renderer` — the one declared first wins.
90
+ */
91
+ export function liftRetiredSpellings(schema, snapshot) {
92
+ const { retired } = schema.options;
93
+ return retired && isOwnSnapshot(schema, snapshot)
94
+ ? applyRetiredSpellings(retired, snapshot)
95
+ : snapshot;
96
+ }
97
+ /**
98
+ * `liftRetiredSpellings` over a map directly, for a schema whose own
99
+ * `preProcessSnapshot` uncovers a retired name the pass above could not see —
100
+ * one that arrives out of a legacy sub-config rather than off the entry.
101
+ * Applying the same map twice costs nothing, since a lift deletes the name it
102
+ * reads.
103
+ */
104
+ export function applyRetiredSpellings(retired, snapshot) {
105
+ const present = Object.keys(retired).filter(key => key in snapshot);
106
+ if (present.length === 0) {
107
+ return snapshot;
108
+ }
109
+ const out = { ...snapshot };
110
+ for (const key of present) {
111
+ delete out[key];
112
+ }
113
+ for (const key of present.filter(key => snapshot[key] !== undefined)) {
114
+ const lifted = retired[key](snapshot[key]);
115
+ for (const [name, value] of Object.entries(lifted)) {
116
+ out[name] = underWritten(out[name], value);
117
+ }
118
+ }
119
+ return out;
120
+ }
121
+ /**
122
+ * What a schema does to every snapshot on its way in, whichever door it
123
+ * arrives by (`create`, `applySnapshot`, `setSubschema`, a settings bag): a
124
+ * bare string or number lifts into the `shorthand` slot taking its form, beside any
125
+ * `shorthandWith` slots, and `null` into the empty object that clears it; a
126
+ * `null` member reads as unset, except in a frozen-family slot, which stores
127
+ * it; a `retired` spelling becomes the members that replaced it; a `closed`
128
+ * schema refuses a key it does not declare, then the schema's
129
+ * own `preProcessSnapshot` runs, and a `jexl:` callback in a slot declaring no
130
+ * `contextVariable` is refused. A bare value the shorthand does not lift
131
+ * passes through for MST to refuse.
132
+ */
133
+ export function preProcessSnapshotWith(schema, snapshot) {
134
+ const { shorthandWith, closed, preProcessSnapshot } = schema.options;
135
+ const form = bareFormOf(snapshot);
136
+ const target = form && shorthandTargets(schema)[form];
137
+ const lifted = snapshot === null
138
+ ? {}
139
+ : target !== undefined
140
+ ? { ...shorthandWith, [target]: snapshot }
141
+ : nullMembersAsUnset(snapshot, schema.storesNull);
142
+ const named = liftRetiredSpellings(schema, lifted);
143
+ if (closed) {
144
+ refuseUndeclaredKeys(schema, named);
145
+ }
146
+ const processed = preProcessSnapshot ? preProcessSnapshot(named) : named;
147
+ refuseCallbacks(schema, processed);
148
+ return processed;
149
+ }
150
+ /**
151
+ * #api core/configuration
152
+ * A snapshot as `type` admits it: the same lift and checks `type.create`
153
+ * applies, so a dialog or a validator refuses exactly what a config file
154
+ * cannot hold. Throws what the schema's `preProcessSnapshot` throws.
155
+ */
156
+ export function preProcessConfigSnapshot(type, snapshot) {
157
+ const schema = getConfigurationSchemaMetadata(type);
158
+ return schema
159
+ ? preProcessSnapshotWith(schema, snapshot)
160
+ : snapshot;
161
+ }
@@ -14,7 +14,7 @@
14
14
  * two slots in the opposite order
15
15
  * - `PairwiseIndexedPAFAdapter`'s prose said `<file>.pif.gz.tbi` while its
16
16
  * default said `my.paf.gz.tbi`
17
- * - `PlinkLDTabixAdapter` dropped the `(or .csi)` clause
17
+ * - `PlinkLDTabixAdapter`'s description dropped a clause the other eight carried
18
18
  * - the placeholder extensions disagreed with each other for no reason
19
19
  *
20
20
  * The description is written for every tabix adapter rather than naming one
@@ -24,14 +24,15 @@
24
24
  *
25
25
  * **BAM is deliberately not here.** Its index is BAI/CSI rather than TBI/CSI, so
26
26
  * it is a different enumeration with a different default, and folding the two
27
- * would mean a slot whose vocabulary depends on its adapter.
27
+ * would mean a slot whose vocabulary depends on its adapter. `bamIndexFields`
28
+ * is the same pair over that enumeration, and the two share `fillIndexType`.
28
29
  */
29
30
  export declare const tabixIndexFields: {
30
31
  readonly indexType: {
31
32
  readonly model: import("@jbrowse/mobx-state-tree").ISimpleType<"CSI" | "TBI">;
32
33
  readonly type: 'stringEnum';
33
34
  readonly defaultValue: 'TBI';
34
- readonly description: '`TBI` is the usual `tabix` output. `CSI` is required for a reference longer than 512 Mb, which TBI cannot address.';
35
+ readonly description: '`TBI` is the usual `tabix` output. `CSI` is required for a reference longer than 512 Mb, which TBI cannot address. Derived from the index file name where the config names a `.csi` and leaves this unset.';
35
36
  };
36
37
  readonly location: {
37
38
  readonly type: 'fileLocation';
@@ -39,6 +40,31 @@ export declare const tabixIndexFields: {
39
40
  readonly uri: '/path/to/my.gz.tbi';
40
41
  readonly locationType: 'UriLocation';
41
42
  };
42
- readonly description: 'location of the tabix index. Only needed when it is not named `<file>.tbi` (or `.csi`), which is what the `uri` shorthand assumes.';
43
+ readonly description: 'location of the tabix index. Only needed when it is not named `<file>.tbi`, which is what the `uri` shorthand assumes — a `.csi` beside the file is reached with `csi: true` rather than by spelling this out.';
43
44
  };
44
45
  };
46
+ /**
47
+ * #config TabixIndex
48
+ * #category adapter
49
+ * The `index` every tabix-indexed adapter hangs off itself: where the index is,
50
+ * and which of the two kinds it is. `indexType` is derived from the index file's
51
+ * own name where the config names a `.csi` and leaves it unset, so the usual
52
+ * config states neither — the `uri` shorthand derives both, and `csi: true`
53
+ * beside it switches the pair together. Spell `location` out for an index that
54
+ * does not sit beside its data file; a `.csi` named there is read as a CSI
55
+ * without `indexType` as well.
56
+ */
57
+ export declare function tabixIndexSchema(): import("./configurationSchema.ts").ConfigurationSchemaType<{
58
+ readonly indexType: {
59
+ type: "stringEnum";
60
+ } & {
61
+ model: import("@jbrowse/mobx-state-tree").ISimpleType<"CSI" | "TBI">;
62
+ } & {
63
+ defaultValue: string;
64
+ };
65
+ readonly location: {
66
+ type: "fileLocation";
67
+ } & {
68
+ defaultValue: unknown;
69
+ };
70
+ }, import("./configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined, undefined, import("./requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
@@ -1,4 +1,6 @@
1
1
  import { types } from '@jbrowse/mobx-state-tree';
2
+ import { ConfigurationSchema } from './configurationSchema.js';
3
+ import { fillIndexType } from './indexType.js';
2
4
  /**
3
5
  * The `index` sub-schema every tabix-indexed adapter declares: which index kind,
4
6
  * and where it is.
@@ -15,7 +17,7 @@ import { types } from '@jbrowse/mobx-state-tree';
15
17
  * two slots in the opposite order
16
18
  * - `PairwiseIndexedPAFAdapter`'s prose said `<file>.pif.gz.tbi` while its
17
19
  * default said `my.paf.gz.tbi`
18
- * - `PlinkLDTabixAdapter` dropped the `(or .csi)` clause
20
+ * - `PlinkLDTabixAdapter`'s description dropped a clause the other eight carried
19
21
  * - the placeholder extensions disagreed with each other for no reason
20
22
  *
21
23
  * The description is written for every tabix adapter rather than naming one
@@ -25,14 +27,15 @@ import { types } from '@jbrowse/mobx-state-tree';
25
27
  *
26
28
  * **BAM is deliberately not here.** Its index is BAI/CSI rather than TBI/CSI, so
27
29
  * it is a different enumeration with a different default, and folding the two
28
- * would mean a slot whose vocabulary depends on its adapter.
30
+ * would mean a slot whose vocabulary depends on its adapter. `bamIndexFields`
31
+ * is the same pair over that enumeration, and the two share `fillIndexType`.
29
32
  */
30
33
  export const tabixIndexFields = {
31
34
  indexType: {
32
35
  model: types.enumeration('IndexType', ['TBI', 'CSI']),
33
36
  type: 'stringEnum',
34
37
  defaultValue: 'TBI',
35
- description: '`TBI` is the usual `tabix` output. `CSI` is required for a reference longer than 512 Mb, which TBI cannot address.',
38
+ description: '`TBI` is the usual `tabix` output. `CSI` is required for a reference longer than 512 Mb, which TBI cannot address. Derived from the index file name where the config names a `.csi` and leaves this unset.',
36
39
  },
37
40
  location: {
38
41
  type: 'fileLocation',
@@ -40,6 +43,20 @@ export const tabixIndexFields = {
40
43
  uri: '/path/to/my.gz.tbi',
41
44
  locationType: 'UriLocation',
42
45
  },
43
- description: 'location of the tabix index. Only needed when it is not named `<file>.tbi` (or `.csi`), which is what the `uri` shorthand assumes.',
46
+ description: 'location of the tabix index. Only needed when it is not named `<file>.tbi`, which is what the `uri` shorthand assumes — a `.csi` beside the file is reached with `csi: true` rather than by spelling this out.',
44
47
  },
45
48
  };
49
+ /**
50
+ * #config TabixIndex
51
+ * #category adapter
52
+ * The `index` every tabix-indexed adapter hangs off itself: where the index is,
53
+ * and which of the two kinds it is. `indexType` is derived from the index file's
54
+ * own name where the config names a `.csi` and leaves it unset, so the usual
55
+ * config states neither — the `uri` shorthand derives both, and `csi: true`
56
+ * beside it switches the pair together. Spell `location` out for an index that
57
+ * does not sit beside its data file; a `.csi` named there is read as a CSI
58
+ * without `indexType` as well.
59
+ */
60
+ export function tabixIndexSchema() {
61
+ return ConfigurationSchema('TabixIndex', { ...tabixIndexFields }, { preProcessSnapshot: fillIndexType });
62
+ }
@@ -1,15 +1,32 @@
1
+ import type { IndexType, SiblingIndexType } from './indexType.ts';
1
2
  /**
2
- * The `index` half of a tabix-indexed adapter's shorthand snapshot: given
3
- * `{ uri, baseUri?, csi? }`, where the index file sits and what kind it is.
3
+ * The index type a config asks for, by whichever of its three spellings: the
4
+ * `csi` flag, `index.indexType`, or the extension on the index file it names.
5
+ * Explicit beats derived.
4
6
  *
5
- * Two spellings of the same flag have to agree — `CSI`/`TBI` names the type and
6
- * `.csi`/`.tbi` the file extension — and eight adapters were each writing both
7
- * out. Getting the pair crossed is an adapter that looks for the wrong index
8
- * file, or claims the wrong format for the right one, on a config the user
9
- * wrote correctly.
7
+ * One reader for all three, because they are one fact and disagreeing copies of
8
+ * it open the wrong parser — `openTabixIndexFilehandle` hands @gmod/tabix a
9
+ * `csiFilehandle` or a `tbiFilehandle` off `indexType` alone.
10
10
  */
11
+ export declare function requestedIndexType(snap: Record<string, unknown>, fallback: SiblingIndexType): IndexType;
12
+ /**
13
+ * The `index` half of an indexed adapter's shorthand snapshot. The filename
14
+ * follows from {@link requestedIndexType}, so the type and the extension cannot
15
+ * disagree, and whatever the config wrote under `index` then wins member by
16
+ * member: naming a location keeps the derived type, naming a type keeps the
17
+ * derived location, and an `indexType` the enumeration does not have reaches MST
18
+ * to be refused rather than being quietly read as the sibling format.
19
+ */
20
+ export declare function indexSnapshot(snap: Record<string, unknown>, fallback: SiblingIndexType): {
21
+ indexType: IndexType;
22
+ location: {
23
+ uri: string;
24
+ baseUri: unknown;
25
+ };
26
+ };
27
+ /** {@link indexSnapshot} for the tabix family, whose sibling format is TBI. */
11
28
  export declare function tabixIndexSnapshot(snap: Record<string, unknown>): {
12
- indexType: string;
29
+ indexType: IndexType;
13
30
  location: {
14
31
  uri: string;
15
32
  baseUri: unknown;
@@ -18,17 +35,17 @@ export declare function tabixIndexSnapshot(snap: Record<string, unknown>): {
18
35
  /**
19
36
  * Expand a tabix adapter's one-line shorthand — `{ uri: 'x.gff.gz' }`, plus
20
37
  * optional `csi` — into the full `{ <locationKey>, index }` snapshot, or pass a
21
- * snapshot that is already in full form through untouched.
38
+ * snapshot already in full form through untouched.
22
39
  *
23
40
  * `locationKey` is the only thing that differs between adapters
24
- * (`gffGzLocation`, `vcfGzLocation`, `bedGzLocation`, `pifGzLocation`, …), so
25
- * it is the only thing they now supply. An adapter whose shorthand carries more
26
- * than this (maf's `nhUri`) composes `tabixIndexSnapshot` directly instead.
41
+ * (`gffGzLocation`, `vcfGzLocation`, `bedGzLocation`, `pifGzLocation`, …). An
42
+ * adapter whose shorthand carries more (maf's `nhUri`) composes
43
+ * `tabixIndexSnapshot` directly.
27
44
  *
28
- * Kept a plain function on the adapter type rather than folded into
29
- * `ConfigurationSchema`: `scripts/generateConfigManifest.ts` derives each
30
- * adapter's `shorthandKeys` by EXECUTING `normalizeSnapshot` against probe
31
- * snapshots and diffing what it derived, so the manifest — and the config docs
32
- * built from it — follow this without knowing it exists.
45
+ * Kept a plain function rather than folded into `ConfigurationSchema`:
46
+ * `scripts/generateConfigManifest.ts` derives each adapter's `shorthandKeys` by
47
+ * EXECUTING `normalizeSnapshot` against probe snapshots, so the manifest and the
48
+ * config docs follow this without knowing it exists. It finds the candidate keys
49
+ * by reading them out of source, following what an adapter schema imports.
33
50
  */
34
51
  export declare function expandTabixShorthand(snap: Record<string, unknown>, locationKey: string): Record<string, unknown>;
@@ -1,44 +1,71 @@
1
+ import { isPlainObject } from '../util/objectUtils.js';
2
+ import { fillLocations } from './fillLocations.js';
3
+ import { indexSuffix, isCsiLocation } from './indexType.js';
1
4
  /**
2
- * The `index` half of a tabix-indexed adapter's shorthand snapshot: given
3
- * `{ uri, baseUri?, csi? }`, where the index file sits and what kind it is.
5
+ * The index type a config asks for, by whichever of its three spellings: the
6
+ * `csi` flag, `index.indexType`, or the extension on the index file it names.
7
+ * Explicit beats derived.
4
8
  *
5
- * Two spellings of the same flag have to agree — `CSI`/`TBI` names the type and
6
- * `.csi`/`.tbi` the file extension — and eight adapters were each writing both
7
- * out. Getting the pair crossed is an adapter that looks for the wrong index
8
- * file, or claims the wrong format for the right one, on a config the user
9
- * wrote correctly.
9
+ * One reader for all three, because they are one fact and disagreeing copies of
10
+ * it open the wrong parser — `openTabixIndexFilehandle` hands @gmod/tabix a
11
+ * `csiFilehandle` or a `tbiFilehandle` off `indexType` alone.
10
12
  */
11
- export function tabixIndexSnapshot(snap) {
12
- const csi = Boolean(snap.csi);
13
+ export function requestedIndexType(snap, fallback) {
14
+ const written = isPlainObject(snap.index) ? snap.index : undefined;
15
+ const declared = written?.indexType;
16
+ if (declared === 'CSI') {
17
+ return 'CSI';
18
+ }
19
+ if (declared === fallback) {
20
+ return fallback;
21
+ }
22
+ return snap.csi || isCsiLocation(written?.location) ? 'CSI' : fallback;
23
+ }
24
+ /**
25
+ * The `index` half of an indexed adapter's shorthand snapshot. The filename
26
+ * follows from {@link requestedIndexType}, so the type and the extension cannot
27
+ * disagree, and whatever the config wrote under `index` then wins member by
28
+ * member: naming a location keeps the derived type, naming a type keeps the
29
+ * derived location, and an `indexType` the enumeration does not have reaches MST
30
+ * to be refused rather than being quietly read as the sibling format.
31
+ */
32
+ export function indexSnapshot(snap, fallback) {
33
+ const indexType = requestedIndexType(snap, fallback);
13
34
  return {
14
- indexType: csi ? 'CSI' : 'TBI',
35
+ indexType,
15
36
  location: {
16
- uri: `${snap.uri}.${csi ? 'csi' : 'tbi'}`,
37
+ uri: `${snap.uri}${indexSuffix(indexType)}`,
17
38
  baseUri: snap.baseUri,
18
39
  },
40
+ ...(isPlainObject(snap.index) ? snap.index : {}),
19
41
  };
20
42
  }
43
+ /** {@link indexSnapshot} for the tabix family, whose sibling format is TBI. */
44
+ export function tabixIndexSnapshot(snap) {
45
+ return indexSnapshot(snap, 'TBI');
46
+ }
21
47
  /**
22
48
  * Expand a tabix adapter's one-line shorthand — `{ uri: 'x.gff.gz' }`, plus
23
49
  * optional `csi` — into the full `{ <locationKey>, index }` snapshot, or pass a
24
- * snapshot that is already in full form through untouched.
50
+ * snapshot already in full form through untouched.
25
51
  *
26
52
  * `locationKey` is the only thing that differs between adapters
27
- * (`gffGzLocation`, `vcfGzLocation`, `bedGzLocation`, `pifGzLocation`, …), so
28
- * it is the only thing they now supply. An adapter whose shorthand carries more
29
- * than this (maf's `nhUri`) composes `tabixIndexSnapshot` directly instead.
53
+ * (`gffGzLocation`, `vcfGzLocation`, `bedGzLocation`, `pifGzLocation`, …). An
54
+ * adapter whose shorthand carries more (maf's `nhUri`) composes
55
+ * `tabixIndexSnapshot` directly.
30
56
  *
31
- * Kept a plain function on the adapter type rather than folded into
32
- * `ConfigurationSchema`: `scripts/generateConfigManifest.ts` derives each
33
- * adapter's `shorthandKeys` by EXECUTING `normalizeSnapshot` against probe
34
- * snapshots and diffing what it derived, so the manifest — and the config docs
35
- * built from it — follow this without knowing it exists.
57
+ * Kept a plain function rather than folded into `ConfigurationSchema`:
58
+ * `scripts/generateConfigManifest.ts` derives each adapter's `shorthandKeys` by
59
+ * EXECUTING `normalizeSnapshot` against probe snapshots, so the manifest and the
60
+ * config docs follow this without knowing it exists. It finds the candidate keys
61
+ * by reading them out of source, following what an adapter schema imports.
36
62
  */
37
63
  export function expandTabixShorthand(snap, locationKey) {
38
64
  return snap.uri
39
65
  ? {
40
- ...snap,
41
- [locationKey]: { uri: snap.uri, baseUri: snap.baseUri },
66
+ ...fillLocations(snap, {
67
+ [locationKey]: { uri: snap.uri, baseUri: snap.baseUri },
68
+ }),
42
69
  index: tabixIndexSnapshot(snap),
43
70
  }
44
71
  : snap;