@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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Levels of subfeature the `subfeatures` callback runs on when no tier sets
3
- * `depth`. Lives here rather than as the slot's `defaultValue` because the slot
4
- * has to be able to say "unset": see the `depth` slot's own comment.
3
+ * `depth`. Applied by the reader rather than as the slot's `defaultValue`, so
4
+ * the slot can still read as unset and the session's value reach a track.
5
5
  */
6
6
  export declare const DEFAULT_FORMAT_DETAILS_DEPTH = 2;
7
7
  /**
@@ -35,46 +35,20 @@ export declare const DEFAULT_FORMAT_DETAILS_DEPTH = 2;
35
35
  * ```
36
36
  */
37
37
  export declare function FormatDetailsConfigSchemaFactory(): import("./configurationSchema.ts").ConfigurationSchemaType<{
38
- /**
39
- * #slot formatDetails.feature
40
- * callback returning an object of fields to merge onto the clicked feature.
41
- * A plain object works too, for fields that are the same on every feature
42
- */
43
38
  readonly feature: {
44
- readonly type: "frozen";
45
- readonly description: "adds extra fields to the feature details";
46
- readonly defaultValue: {};
47
- readonly contextVariable: ["feature"];
39
+ type: "frozen";
40
+ } & {
41
+ defaultValue: unknown;
48
42
  };
49
- /**
50
- * #slot formatDetails.subfeatures
51
- * the same, applied to each subfeature down to `depth`
52
- */
53
43
  readonly subfeatures: {
54
- readonly type: "frozen";
55
- readonly description: "adds extra fields to the subfeatures of a feature";
56
- readonly defaultValue: {};
57
- readonly contextVariable: ["feature"];
44
+ type: "frozen";
45
+ } & {
46
+ defaultValue: unknown;
58
47
  };
59
- /**
60
- * #slot formatDetails.depth
61
- * how many levels of subfeature the `subfeatures` callback runs on,
62
- * defaulting to 2, which stops at a gene's transcripts rather than
63
- * descending into their exons and CDSs. A track's value wins over the
64
- * session's
65
- */
66
48
  readonly depth: {
67
- readonly type: "maybeNumber";
68
- readonly description: "levels of subfeature the formatDetails.subfeatures callback runs on, default 2";
49
+ type: "maybeNumber";
69
50
  };
70
- /**
71
- * #slot formatDetails.maxDepth
72
- * how many levels of subfeature card the panel renders at all, which is a
73
- * separate question from how deep `subfeatures` formats. Unset means no
74
- * limit. A track's value wins over the session's
75
- */
76
51
  readonly maxDepth: {
77
- readonly type: "maybeNumber";
78
- readonly description: "hide subfeatures nested deeper than this, default no limit";
52
+ type: "maybeNumber";
79
53
  };
80
- }, import("./configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined>>;
54
+ }, import("./configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined, undefined, import("./requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
@@ -1,8 +1,8 @@
1
1
  import { ConfigurationSchema } from './configurationSchema.js';
2
2
  /**
3
3
  * Levels of subfeature the `subfeatures` callback runs on when no tier sets
4
- * `depth`. Lives here rather than as the slot's `defaultValue` because the slot
5
- * has to be able to say "unset": see the `depth` slot's own comment.
4
+ * `depth`. Applied by the reader rather than as the slot's `defaultValue`, so
5
+ * the slot can still read as unset and the session's value reach a track.
6
6
  */
7
7
  export const DEFAULT_FORMAT_DETAILS_DEPTH = 2;
8
8
  /**
@@ -40,23 +40,27 @@ export function FormatDetailsConfigSchemaFactory() {
40
40
  /**
41
41
  * #slot formatDetails.feature
42
42
  * callback returning an object of fields to merge onto the clicked feature.
43
- * A plain object works too, for fields that are the same on every feature
43
+ * `track` is the track's config, so one session-wide callback can link out
44
+ * per assembly or name the track. A plain object works too, for fields
45
+ * that are the same on every feature
44
46
  */
45
47
  feature: {
46
48
  type: 'frozen',
47
49
  description: 'adds extra fields to the feature details',
48
50
  defaultValue: {},
49
- contextVariable: ['feature'],
51
+ contextVariable: ['feature', 'track'],
50
52
  },
51
53
  /**
52
54
  * #slot formatDetails.subfeatures
53
- * the same, applied to each subfeature down to `depth`
55
+ * the same, applied to each subfeature down to `depth`. `parent` is the
56
+ * feature it sits in and `depth` how far down, 1 for a gene's transcript
57
+ * and 2 for the transcript's exon
54
58
  */
55
59
  subfeatures: {
56
60
  type: 'frozen',
57
61
  description: 'adds extra fields to the subfeatures of a feature',
58
62
  defaultValue: {},
59
- contextVariable: ['feature'],
63
+ contextVariable: ['feature', 'parent', 'depth', 'track'],
60
64
  },
61
65
  /**
62
66
  * #slot formatDetails.depth
@@ -66,11 +70,6 @@ export function FormatDetailsConfigSchemaFactory() {
66
70
  * session's
67
71
  */
68
72
  depth: {
69
- // `maybeNumber`, so unset is expressible. With a `defaultValue` the two
70
- // tiers cannot be told apart -- a plain number slot reads back its own
71
- // default, so "the track set 2" and "the track set nothing" are the same
72
- // read, and the session-wide value can never apply to a track. The
73
- // resolved default is DEFAULT_FORMAT_DETAILS_DEPTH, applied by the reader
74
73
  type: 'maybeNumber',
75
74
  description: 'levels of subfeature the formatDetails.subfeatures callback runs on, default 2',
76
75
  },
@@ -81,8 +80,6 @@ export function FormatDetailsConfigSchemaFactory() {
81
80
  * limit. A track's value wins over the session's
82
81
  */
83
82
  maxDepth: {
84
- // `maybeNumber` for the same reason as `depth`, and here unset is also
85
- // the meaningful value: no limit at all
86
83
  type: 'maybeNumber',
87
84
  description: 'hide subfeatures nested deeper than this, default no limit',
88
85
  },
@@ -5,24 +5,9 @@ import type { AnyConfigurationModel } from './types.ts';
5
5
  * via `types.stripDefault`, this returns every slot's current value, so the
6
6
  * result is a self-contained config object an RPC worker can read with no
7
7
  * schema. JEXL callback slots keep their raw `"jexl:..."` string for the worker
8
- * to evaluate per-feature.
9
- *
10
- * **Why this isn't exported from `@jbrowse/core/configuration`.** It was
11
- * (as `getConfSnapshot`), and being reachable was the hazard. A promotable slot
12
- * resolves against the session at read time, so snapshotting one raw ships the
13
- * bare `undefined` inherit sentinel to a worker with no session to resolve it
14
- * against — and every display in the repo now has promotable slots. The public
15
- * form used to defend itself by *throwing* on such a config, which meant the
16
- * obvious spelling in a new `rpcProps()` failed at runtime, on the first fetch,
17
- * in whichever product exercised that display. Off the barrel, the same mistake
18
- * is an unresolved import: it can't be written at all, and
19
- * `getConfigSnapshotWithPromotables(display)` is the one way across the boundary.
20
- * So this is the shared walker those resolvers are built on, not an entry point.
21
- *
22
- * The nested-schema guard below is the part of that defense still worth
23
- * enforcing at runtime, since no import can express it.
24
- *
25
- * Note: only handles slots and direct sub-configuration models. Arrays or maps
26
- * of sub-schemas are silently dropped — nothing has needed them.
8
+ * to evaluate per-feature. A sub-schema recurses, and so does each entry of an
9
+ * array or map of them; an explicitly typed schema carries its `type`, which
10
+ * is what tells the entries of a union list apart. Constants are the editor's
11
+ * and are left out.
27
12
  */
28
13
  export declare function fullConfSnapshot(confObject: AnyConfigurationModel): Record<string, unknown>;
@@ -1,66 +1,44 @@
1
- import { getSnapshot, isArrayType, isMapType, isStateTreeNode, } from '@jbrowse/mobx-state-tree';
2
- import { promotableSlotNames } from './promotableSlots.js';
3
- import { getConfigurationSchemaDefinition } from './schemaRegistry.js';
4
- import { isConfigurationModel, isConfigurationSchemaType, isSlotDefinitionEntry, } from './schemaTypes.js';
1
+ import { getSnapshot, getType, isArrayType, isMapType, isStateTreeNode, } from '@jbrowse/mobx-state-tree';
2
+ import { getConfigurationSchemaMetadata } from './schemaRegistry.js';
3
+ import { isConfigurationSchemaType, isSlotDefinitionEntry, } from './schemaTypes.js';
4
+ // a sub-schema member: one node, or an array or map of them, entry by entry
5
+ function subConfSnapshot(member) {
6
+ if (!isStateTreeNode(member)) {
7
+ return member;
8
+ }
9
+ const type = getType(member);
10
+ if (isArrayType(type)) {
11
+ return member.map(fullConfSnapshot);
12
+ }
13
+ if (isMapType(type)) {
14
+ return Object.fromEntries([...member.entries()].map(([key, node]) => [key, fullConfSnapshot(node)]));
15
+ }
16
+ return fullConfSnapshot(member);
17
+ }
5
18
  /**
6
19
  * Plain-object snapshot of a configuration model including ALL values, even
7
20
  * defaults. Unlike `getSnapshot()`, which strips a slot sitting at its default
8
21
  * via `types.stripDefault`, this returns every slot's current value, so the
9
22
  * result is a self-contained config object an RPC worker can read with no
10
23
  * schema. JEXL callback slots keep their raw `"jexl:..."` string for the worker
11
- * to evaluate per-feature.
12
- *
13
- * **Why this isn't exported from `@jbrowse/core/configuration`.** It was
14
- * (as `getConfSnapshot`), and being reachable was the hazard. A promotable slot
15
- * resolves against the session at read time, so snapshotting one raw ships the
16
- * bare `undefined` inherit sentinel to a worker with no session to resolve it
17
- * against — and every display in the repo now has promotable slots. The public
18
- * form used to defend itself by *throwing* on such a config, which meant the
19
- * obvious spelling in a new `rpcProps()` failed at runtime, on the first fetch,
20
- * in whichever product exercised that display. Off the barrel, the same mistake
21
- * is an unresolved import: it can't be written at all, and
22
- * `getConfigSnapshotWithPromotables(display)` is the one way across the boundary.
23
- * So this is the shared walker those resolvers are built on, not an entry point.
24
- *
25
- * The nested-schema guard below is the part of that defense still worth
26
- * enforcing at runtime, since no import can express it.
27
- *
28
- * Note: only handles slots and direct sub-configuration models. Arrays or maps
29
- * of sub-schemas are silently dropped — nothing has needed them.
24
+ * to evaluate per-feature. A sub-schema recurses, and so does each entry of an
25
+ * array or map of them; an explicitly typed schema carries its `type`, which
26
+ * is what tells the entries of a union list apart. Constants are the editor's
27
+ * and are left out.
30
28
  */
31
29
  export function fullConfSnapshot(confObject) {
32
- const result = {};
33
- const table = getConfigurationSchemaDefinition(confObject);
34
- for (const [key, def] of Object.entries(table ?? {})) {
35
- const v = confObject[key];
30
+ const meta = getConfigurationSchemaMetadata(getType(confObject));
31
+ const result = meta?.options.explicitlyTyped
32
+ ? { type: confObject.type }
33
+ : {};
34
+ for (const [key, def] of Object.entries(meta?.definition ?? {})) {
35
+ const member = confObject[key];
36
36
  if (isSlotDefinitionEntry(def)) {
37
- // jexl callback strings pass through raw for per-feature evaluation in
38
- // the worker.
39
- result[key] = isStateTreeNode(v) ? getSnapshot(v) : v;
37
+ result[key] = isStateTreeNode(member) ? getSnapshot(member) : member;
40
38
  }
41
- else if (isConfigurationSchemaType(def) &&
42
- !isArrayType(def) &&
43
- !isMapType(def) &&
44
- isConfigurationModel(v)) {
45
- // a direct sub-configuration recurses. Arrays/maps of sub-schemas are
46
- // dropped: their MST node also reports as a config model, but the
47
- // array/map type carries no registered slot table, so recursing would
48
- // emit a meaningless `{}` (a type-confusion hazard for a consumer
49
- // expecting the array). Constants are skipped entirely.
50
- assertNoPromotableSlots(v);
51
- result[key] = fullConfSnapshot(v);
39
+ else if (isConfigurationSchemaType(def) && member !== undefined) {
40
+ result[key] = subConfSnapshot(member);
52
41
  }
53
42
  }
54
43
  return result;
55
44
  }
56
- // A promotable slot is only ever resolvable at a config's own top level — the
57
- // resolver walks that one slot table (`promotableSlotNames` / `getSlotDefinition`)
58
- // and never descends. So one declared inside a *nested* schema would resolve
59
- // nowhere and serialize as its bare inherit sentinel, with no import to get wrong
60
- // and no symptom until a worker read the sentinel. Fail at the snapshot instead.
61
- function assertNoPromotableSlots(confObject) {
62
- const promotable = promotableSlotNames(confObject);
63
- if (promotable.size > 0) {
64
- throw new Error(`nested config schema declares promotable slots (${[...promotable].join(', ')}): the cascade only resolves a display config's own top-level slots, so these would serialize as the bare inherit sentinel. Declare them on the display's own schema instead.`);
65
- }
66
- }
@@ -1,5 +1,4 @@
1
- import type { ResolvableDisplay } from './promotableResolve.ts';
2
- import type { AnyConfigurationModel, AnyConfigurationSnapshot, ConfigurationSchemaForModel, ConfigurationSlotName, ConfigurationSlotValue, ConfigurationSlotValueResolved } from './types.ts';
1
+ import type { AnyConfigurationModel, AnyConfigurationSnapshot, ConfigurationSchemaForModel, ConfigurationSlotName, ConfigurationSlotPath, ConfigurationSlotPathValue, ConfigurationSlotValue } from './types.ts';
3
2
  /**
4
3
  * #api core/configuration
5
4
  * Reads a configuration value from a state model that has a `.configuration`
@@ -12,12 +11,6 @@ import type { AnyConfigurationModel, AnyConfigurationSnapshot, ConfigurationSche
12
11
  * It does not consult the session and has no per-slot behavior; what you read is
13
12
  * what the track stores.
14
13
  *
15
- * A `promotable` slot read this way therefore yields the raw stored value,
16
- * `undefined` included — that `undefined` is the cascade's inherit sentinel, and
17
- * `resolveConf` is what turns it into a real value. The read type keeps the
18
- * `undefined` on purpose, so reaching for the wrong reader is a compile error
19
- * rather than a silent one.
20
- *
21
14
  * @param model - object containing a 'configuration' member
22
15
  * @param slotPaths - array of paths to read
23
16
  * @param args - extra arguments e.g. for a feature callback,
@@ -26,36 +19,21 @@ import type { AnyConfigurationModel, AnyConfigurationSnapshot, ConfigurationSche
26
19
  export declare function getConf(model: {
27
20
  configuration: AnyConfigurationModel;
28
21
  }): AnyConfigurationSnapshot;
29
- export declare function getConf<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> | string[] = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(model: {
22
+ export declare function getConf<CONFMODEL extends AnyConfigurationModel, const SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> | ConfigurationSlotPath<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(model: {
30
23
  configuration: CONFMODEL;
31
- }, slotPath: SLOT, args?: Record<string, unknown>): SLOT extends string ? ConfigurationSlotValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT> : any;
24
+ }, slotPath: SLOT, args?: Record<string, unknown>): SLOT extends string ? ConfigurationSlotValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT> : ConfigurationSlotPathValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT>;
32
25
  /**
33
26
  * #api core/configuration
34
- * Reads a `promotable` slot through the display-type-default cascade — the
35
- * track's own value, else the session-wide promoted default for this display
36
- * type, else the slot's `promotedBase`. Always yields a real value, never the
37
- * `undefined` inherit sentinel, so a display's value getter is
38
- * `get displayMode(): DisplayMode { return resolveConf(self, 'displayMode') }`
39
- * with no post-guard and no cast.
40
- *
41
- * Separate from `getConf` rather than folded into it, deliberately: resolution
42
- * consults the session, so it is main-thread only and throws on a detached node.
43
- * Folding it in was built and reverted — ADR-046.
44
- *
45
- * Throws if `slot` isn't promotable — the cascade has nothing to say about a
46
- * plain slot, and `getConf` is what you want there.
27
+ * Write counterpart to `getConf`, and it takes the same path: a slot name, or
28
+ * an array naming a sub-schema's member at any depth —
29
+ * `setConf(self, ['scales', 'y', 'domainMin'], 5)`. Takes the display or track
30
+ * model, or a config node directly.
47
31
  *
48
- * Takes no jexl `args`, unlike `getConf`: a promotable slot cannot hold a
49
- * callback (see `SlotResolution`), so there is no per-feature context to supply.
50
- *
51
- * @param model - the display state model (needs the session + display type)
52
- * @param slot - the promotable slot to resolve
53
- */
54
- export declare function resolveConf<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(model: ResolvableDisplay<CONFMODEL>, slot: SLOT): ConfigurationSlotValueResolved<ConfigurationSchemaForModel<CONFMODEL>, SLOT>;
55
- /**
56
- * #api core/configuration
57
- * Write counterpart to `getConf`: sets a slot on a state model that has a
58
- * `.configuration` member (a track or display state model).
32
+ * **The path length says what the write replaces.** A path ending on a slot
33
+ * writes that slot and leaves the object around it alone; a path ending on a
34
+ * sub-schema replaces the whole object, which is how a channel whose members
35
+ * move together — a facet's field and the domain that field's values order —
36
+ * gets written without a stale member surviving underneath.
59
37
  *
60
38
  * **Prefer this over a bare `self.configuration.setSlot('x', v)`.** The
61
39
  * constraint here mirrors `getConf`'s, so on a model with a concrete schema an
@@ -75,14 +53,40 @@ export declare function resolveConf<CONFMODEL extends AnyConfigurationModel, SLO
75
53
  * `HostChecksSlotNames` pins each one.
76
54
  *
77
55
  * A wrong *value* type still throws at runtime (MST type-checks the assignment)
78
- * rather than at compile time. `value` is deliberately `unknown` because the
79
- * inherit sentinel (`undefined`/`null`) is a legitimate write on every
80
- * promotable slot, which the declared slot value type doesn't include.
56
+ * rather than at compile time. `value` is deliberately `unknown` because
57
+ * `undefined` is a legitimate write — it resets a slot to its schema default —
58
+ * and the declared slot value type doesn't include it.
81
59
  *
82
- * @param model - object containing a 'configuration' member
83
- * @param slotName - the slot to write
60
+ * @param target - a model with a `configuration` member, or a config node
61
+ * @param slotPath - the slot to write, or the path to one
84
62
  * @param value - the new value
85
63
  */
86
- export declare function setConf<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(model: {
64
+ export declare function setConf<CONFMODEL extends AnyConfigurationModel, const SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> | ConfigurationSlotPath<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(target: CONFMODEL | {
87
65
  configuration: CONFMODEL;
88
- }, slotName: SLOT, value: unknown): void;
66
+ }, slotPath: SLOT, value: unknown): void;
67
+ export interface ConfSettingsReport {
68
+ /** the keys the config declares, written */
69
+ applied: string[];
70
+ /** the keys it does not, with the values the lift left them */
71
+ undeclared: Record<string, unknown>;
72
+ /** a declared key whose write threw, and why */
73
+ failed: {
74
+ key: string;
75
+ error: string;
76
+ }[];
77
+ }
78
+ /**
79
+ * #api core/configuration
80
+ * Write a settings bag — a session spec's track entry, a share link, an agent
81
+ * call — onto a config. Each key names a member: a slot or a channel is written
82
+ * whole, as `setConf` writes it, so `null` resets it (ADR-146); a namespace's
83
+ * object names members inside it, at any depth, and the ones it leaves out
84
+ * keep their values. The config's own lift and checks run over the bag first,
85
+ * and each namespace's over its part, so a shorthand or a legacy key reads the
86
+ * same here as in `config.json`. A key the config does not declare is reported
87
+ * for the caller to route or refuse, and a declared key whose write throws
88
+ * costs that key alone.
89
+ */
90
+ export declare function applyConfSettings(target: AnyConfigurationModel | {
91
+ configuration: AnyConfigurationModel;
92
+ }, settings: Record<string, unknown>): ConfSettingsReport;
@@ -1,46 +1,24 @@
1
- import { resolveSlot } from './promotableResolve.js';
1
+ import { getType, isStateTreeNode } from '@jbrowse/mobx-state-tree';
2
+ import { isPlainObject } from '../util/objectUtils.js';
2
3
  import { readConfObject } from './readConfObject.js';
4
+ import { getConfigurationSchemaDefinition, getConfigurationSchemaMetadata, } from './schemaRegistry.js';
5
+ import { isConfigurationModel, isConfigurationSchemaType, isConstantEntry, } from './schemaTypes.js';
6
+ import { preProcessSnapshotWith } from './snapshotPreprocess.js';
3
7
  export function getConf(model, slotPath, args = {}) {
4
8
  return readConfObject(model.configuration, slotPath, args);
5
9
  }
6
10
  /**
7
11
  * #api core/configuration
8
- * Reads a `promotable` slot through the display-type-default cascade — the
9
- * track's own value, else the session-wide promoted default for this display
10
- * type, else the slot's `promotedBase`. Always yields a real value, never the
11
- * `undefined` inherit sentinel, so a display's value getter is
12
- * `get displayMode(): DisplayMode { return resolveConf(self, 'displayMode') }`
13
- * with no post-guard and no cast.
12
+ * Write counterpart to `getConf`, and it takes the same path: a slot name, or
13
+ * an array naming a sub-schema's member at any depth —
14
+ * `setConf(self, ['scales', 'y', 'domainMin'], 5)`. Takes the display or track
15
+ * model, or a config node directly.
14
16
  *
15
- * Separate from `getConf` rather than folded into it, deliberately: resolution
16
- * consults the session, so it is main-thread only and throws on a detached node.
17
- * Folding it in was built and reverted — ADR-046.
18
- *
19
- * Throws if `slot` isn't promotable — the cascade has nothing to say about a
20
- * plain slot, and `getConf` is what you want there.
21
- *
22
- * Takes no jexl `args`, unlike `getConf`: a promotable slot cannot hold a
23
- * callback (see `SlotResolution`), so there is no per-feature context to supply.
24
- *
25
- * @param model - the display state model (needs the session + display type)
26
- * @param slot - the promotable slot to resolve
27
- */
28
- export function resolveConf(
29
- // the display state node itself, not just its `.configuration`: the cascade
30
- // keys the session-wide tier on `type` and reaches the session through the
31
- // node. Asking for that shape is what keeps this cast-free — hand it a bare
32
- // config holder and tsc names the missing members instead of failing at the
33
- // first read. `ResolvableDisplay<CONFMODEL>`, never
34
- // `ResolvableDisplay & { configuration: CONFMODEL }`: the intersection
35
- // re-widens the slot names to `string` (see `ResolvableDisplay`)
36
- model, slot) {
37
- // the resolution is `unknown`, which the declared return type can't infer
38
- return resolveSlot(model, slot).value;
39
- }
40
- /**
41
- * #api core/configuration
42
- * Write counterpart to `getConf`: sets a slot on a state model that has a
43
- * `.configuration` member (a track or display state model).
17
+ * **The path length says what the write replaces.** A path ending on a slot
18
+ * writes that slot and leaves the object around it alone; a path ending on a
19
+ * sub-schema replaces the whole object, which is how a channel whose members
20
+ * move together — a facet's field and the domain that field's values order —
21
+ * gets written without a stale member surviving underneath.
44
22
  *
45
23
  * **Prefer this over a bare `self.configuration.setSlot('x', v)`.** The
46
24
  * constraint here mirrors `getConf`'s, so on a model with a concrete schema an
@@ -60,15 +38,104 @@ model, slot) {
60
38
  * `HostChecksSlotNames` pins each one.
61
39
  *
62
40
  * A wrong *value* type still throws at runtime (MST type-checks the assignment)
63
- * rather than at compile time. `value` is deliberately `unknown` because the
64
- * inherit sentinel (`undefined`/`null`) is a legitimate write on every
65
- * promotable slot, which the declared slot value type doesn't include.
41
+ * rather than at compile time. `value` is deliberately `unknown` because
42
+ * `undefined` is a legitimate write — it resets a slot to its schema default —
43
+ * and the declared slot value type doesn't include it.
66
44
  *
67
- * @param model - object containing a 'configuration' member
68
- * @param slotName - the slot to write
45
+ * @param target - a model with a `configuration` member, or a config node
46
+ * @param slotPath - the slot to write, or the path to one
69
47
  * @param value - the new value
70
48
  */
71
- export function setConf(model, slotName, value) {
72
- // eslint-disable-next-line no-restricted-syntax -- this is setConf
73
- model.configuration.setSlot(slotName, value);
49
+ export function setConf(target, slotPath, value) {
50
+ writeConfPath(isConfigurationModel(target) ? target : target.configuration, typeof slotPath === 'string' ? [slotPath] : slotPath, value);
51
+ }
52
+ /**
53
+ * Walk to the node the last segment names a member of, then write that member
54
+ * through whichever of the node's two write actions the member is: a
55
+ * sub-schema, single or a collection, is replaced whole, and a slot goes
56
+ * through `setSlot` so ADR-052's name guard and the value-type guard both run.
57
+ * MST's `applyPatch` takes the same path and runs neither guard.
58
+ */
59
+ function writeConfPath(conf, path, value) {
60
+ if (!path.length) {
61
+ throw new Error('setConf needs a slot name or a path to one');
62
+ }
63
+ let node = conf;
64
+ for (const segment of path.slice(0, -1)) {
65
+ const child = node[segment];
66
+ if (!isConfigurationModel(child)) {
67
+ throw new Error(`${getType(node).name} has no sub-schema "${segment}", so ${path.join('.')} names nothing to write`);
68
+ }
69
+ node = child;
70
+ }
71
+ const leaf = path.at(-1);
72
+ // Classify off the declaration, never off what the member holds: a
73
+ // `stringArray` slot holds an array node, and an optional sub-schema nobody
74
+ // has written yet holds nothing.
75
+ const declared = getConfigurationSchemaDefinition(node)?.[leaf];
76
+ if (isConfigurationSchemaType(declared)) {
77
+ // eslint-disable-next-line no-restricted-syntax -- this is setConf
78
+ node.setSubschema(leaf, value);
79
+ }
80
+ else {
81
+ // eslint-disable-next-line no-restricted-syntax -- this is setConf
82
+ node.setSlot(leaf, value);
83
+ }
84
+ }
85
+ // A sub-schema of independent settings, whose members a bag names one by one.
86
+ // A channel — a sub-schema with a shorthand — takes one written value, so a
87
+ // bag replaces it whole: `{ field }` after `{ field, domain }` is a facet with
88
+ // no domain, and a merge would leave the old domain standing.
89
+ function namespaceMetadata(member) {
90
+ const meta = isStateTreeNode(member)
91
+ ? getConfigurationSchemaMetadata(getType(member))
92
+ : undefined;
93
+ return meta?.options.shorthand === undefined ? meta : undefined;
94
+ }
95
+ function writeConfMember(conf, key, value) {
96
+ const member = conf[key];
97
+ const namespace = isPlainObject(value) ? namespaceMetadata(member) : undefined;
98
+ if (namespace) {
99
+ for (const [k, v] of Object.entries(preProcessSnapshotWith(namespace, value))) {
100
+ writeConfMember(member, k, v);
101
+ }
102
+ }
103
+ else {
104
+ writeConfPath(conf, [key], value);
105
+ }
106
+ }
107
+ /**
108
+ * #api core/configuration
109
+ * Write a settings bag — a session spec's track entry, a share link, an agent
110
+ * call — onto a config. Each key names a member: a slot or a channel is written
111
+ * whole, as `setConf` writes it, so `null` resets it (ADR-146); a namespace's
112
+ * object names members inside it, at any depth, and the ones it leaves out
113
+ * keep their values. The config's own lift and checks run over the bag first,
114
+ * and each namespace's over its part, so a shorthand or a legacy key reads the
115
+ * same here as in `config.json`. A key the config does not declare is reported
116
+ * for the caller to route or refuse, and a declared key whose write throws
117
+ * costs that key alone.
118
+ */
119
+ export function applyConfSettings(target, settings) {
120
+ const conf = isConfigurationModel(target) ? target : target.configuration;
121
+ const meta = getConfigurationSchemaMetadata(conf);
122
+ const values = meta ? preProcessSnapshotWith(meta, settings) : settings;
123
+ const report = { applied: [], undeclared: {}, failed: [] };
124
+ for (const [key, value] of Object.entries(values)) {
125
+ const declared = Object.hasOwn(meta?.definition ?? {}, key)
126
+ ? meta.definition[key]
127
+ : undefined;
128
+ if (declared === undefined || isConstantEntry(declared)) {
129
+ report.undeclared[key] = value;
130
+ continue;
131
+ }
132
+ try {
133
+ writeConfMember(conf, key, value);
134
+ report.applied.push(key);
135
+ }
136
+ catch (e) {
137
+ report.failed.push({ key, error: `${e}` });
138
+ }
139
+ }
140
+ return report;
74
141
  }
@@ -1,19 +1,32 @@
1
1
  export { ConfigurationReference, ConfigurationSchema, hydrateTrackConfig, } from './configurationSchema.ts';
2
- export type { ConfigurationSchemaDefinition } from './configurationSchema.ts';
3
- export type { AnyConfiguration, AnyConfigurationModel, AnyConfigurationSchemaType, AnyConfigurationSnapshot, ConfigModelForFields, ConfigurationSchemaForModel, ConfigurationSlotName, ConfigurationSlotValue, ConfigurationSnapshot, HostChecksSlotNames, } from './types.ts';
4
- export { getConfigurationSchemaDefinition, getConfigurationSchemaMetadata, } from './schemaRegistry.ts';
2
+ export type { ConfigurationSchemaDefinition, RetiredSpelling, } from './configurationSchema.ts';
3
+ export { ConfigurationSchemaUnion, arraySlotUnion, } from './configurationSchemaUnion.ts';
4
+ export type { ConfigurationSchemaUnionType } from './configurationSchemaUnion.ts';
5
+ export type { ConfigSlotDefinition } from './configurationSlot.ts';
6
+ export type { AnyConfiguration, AnyConfigurationModel, AnyConfigurationSchemaType, AnyConfigurationSnapshot, ConfigModelForFields, ConfigNodeActions, ConfigNodeBrand, ConfigNodeProps, ConfigurationSchemaForModel, ConfigurationSlotName, ConfigurationSlotPath, ConfigurationSlotPathValue, ConfigurationSlotValue, ConfigurationSnapshot, HostChecksSlotNames, IdentifierSlotDef, PluggableConfigNode, TypeSlotDef, } from './types.ts';
7
+ export { getConfigurationSchemaDefinition, getConfigurationSchemaMetadata, getConfigurationSchemaUnion, } from './schemaRegistry.ts';
8
+ export type { ConfigurationSchemaUnionMetadata } from './schemaRegistry.ts';
5
9
  export { getTypeNamesFromExplicitlyTypedUnion, isBareConfigurationSchemaType, isConfigurationModel, isConfigurationSchemaType, isConstantEntry, isSlotDefinitionEntry, } from './schemaTypes.ts';
6
10
  export { FormatAboutConfigSchemaFactory } from './formatAboutConfigSchema.ts';
7
11
  export { DEFAULT_FORMAT_DETAILS_DEPTH, FormatDetailsConfigSchemaFactory, } from './formatDetailsConfigSchema.ts';
8
12
  export { mergeFormatCallbacks } from './mergeFormatCallbacks.ts';
9
- export { readConfObject, readConfSlot, readConfigValue, } from './readConfObject.ts';
10
- export { getConf, resolveConf, setConf } from './getConf.ts';
11
- export { expandTabixShorthand, tabixIndexSnapshot } from './tabixShorthand.ts';
12
- export { tabixIndexFields } from './tabixIndexFields.ts';
13
+ export { readConfObject, readConfigValue } from './readConfObject.ts';
14
+ export { applyConfSettings, getConf, setConf } from './getConf.ts';
15
+ export type { ConfSettingsReport } from './getConf.ts';
16
+ export { fillLocations } from './fillLocations.ts';
17
+ export { applyRetiredSpellings, liftRetiredSpellings, preProcessConfigSnapshot, preProcessSnapshotWith, } from './snapshotPreprocess.ts';
18
+ export { shorthandTargets, shorthandTargetsOf } from './schemaTypes.ts';
19
+ export type { ShorthandForm } from './schemaTypes.ts';
20
+ export { requirementProblems } from './requirements.ts';
21
+ export type { ConfigurationSchemaRequirement, RequirementProblem, } from './requirements.ts';
22
+ export { expandTabixShorthand, indexSnapshot, requestedIndexType, tabixIndexSnapshot, } from './tabixShorthand.ts';
23
+ export { expandUriShorthand } from './uriShorthand.ts';
24
+ export { bamIndexFields, bamIndexSchema } from './bamIndexFields.ts';
25
+ export { tabixIndexFields, tabixIndexSchema } from './tabixIndexFields.ts';
26
+ export { fillIndexType, indexSuffix, isCsiLocation } from './indexType.ts';
27
+ export type { IndexType, SiblingIndexType } from './indexType.ts';
13
28
  export { evaluateJexl, isCallbackValue } from './slotValueUtils.ts';
14
29
  export { toCallbackValue, toFixedValue } from './configurationSlot.ts';
15
- export { getSlotDefinition, isConfigurationSlot, makeSlotFacade, preProcessSlotValues, slotChoices, } from './slotFacade.ts';
30
+ export { getSlotDefinition, isConfigurationSlot, makeSlotFacade, slotChoices, slotValueRefusal, } from './slotFacade.ts';
16
31
  export type { SlotFacade } from './slotFacade.ts';
17
- export type { ResolvableDisplay } from './promotableResolve.ts';
18
- export { clearPromotedDefaults, getDisplayTypeDefaultChanges, isSlotCustomized, makePin, getConfigSnapshotWithPromotables, getTrackConfigWithPromotables, } from './promotableDefaults.ts';
19
- export type { Pin, ResolvedConfigSnapshot, TrackConfigWithPromotables, } from './promotableDefaults.ts';
32
+ export { fullConfSnapshot } from './fullConfSnapshot.ts';
@@ -1,19 +1,27 @@
1
1
  export { ConfigurationReference, ConfigurationSchema, hydrateTrackConfig, } from './configurationSchema.js';
2
+ export { ConfigurationSchemaUnion, arraySlotUnion, } from './configurationSchemaUnion.js';
2
3
  export { getConfigurationSchemaDefinition,
3
4
  // exported for scripts/generateConfigManifest.ts, which needs the
4
5
  // preProcessSnapshot off a schema whose pluggable type does not expose one —
5
6
  // TextSearchAdapterType, where the shorthand is nonetheless the documented
6
7
  // way to write the config
7
- getConfigurationSchemaMetadata, } from './schemaRegistry.js';
8
+ getConfigurationSchemaMetadata, getConfigurationSchemaUnion, } from './schemaRegistry.js';
8
9
  export { getTypeNamesFromExplicitlyTypedUnion, isBareConfigurationSchemaType, isConfigurationModel, isConfigurationSchemaType, isConstantEntry, isSlotDefinitionEntry, } from './schemaTypes.js';
9
10
  export { FormatAboutConfigSchemaFactory } from './formatAboutConfigSchema.js';
10
11
  export { DEFAULT_FORMAT_DETAILS_DEPTH, FormatDetailsConfigSchemaFactory, } from './formatDetailsConfigSchema.js';
11
12
  export { mergeFormatCallbacks } from './mergeFormatCallbacks.js';
12
- export { readConfObject, readConfSlot, readConfigValue, } from './readConfObject.js';
13
- export { getConf, resolveConf, setConf } from './getConf.js';
14
- export { expandTabixShorthand, tabixIndexSnapshot } from './tabixShorthand.js';
15
- export { tabixIndexFields } from './tabixIndexFields.js';
13
+ export { readConfObject, readConfigValue } from './readConfObject.js';
14
+ export { applyConfSettings, getConf, setConf } from './getConf.js';
15
+ export { fillLocations } from './fillLocations.js';
16
+ export { applyRetiredSpellings, liftRetiredSpellings, preProcessConfigSnapshot, preProcessSnapshotWith, } from './snapshotPreprocess.js';
17
+ export { shorthandTargets, shorthandTargetsOf } from './schemaTypes.js';
18
+ export { requirementProblems } from './requirements.js';
19
+ export { expandTabixShorthand, indexSnapshot, requestedIndexType, tabixIndexSnapshot, } from './tabixShorthand.js';
20
+ export { expandUriShorthand } from './uriShorthand.js';
21
+ export { bamIndexFields, bamIndexSchema } from './bamIndexFields.js';
22
+ export { tabixIndexFields, tabixIndexSchema } from './tabixIndexFields.js';
23
+ export { fillIndexType, indexSuffix, isCsiLocation } from './indexType.js';
16
24
  export { evaluateJexl, isCallbackValue } from './slotValueUtils.js';
17
25
  export { toCallbackValue, toFixedValue } from './configurationSlot.js';
18
- export { getSlotDefinition, isConfigurationSlot, makeSlotFacade, preProcessSlotValues, slotChoices, } from './slotFacade.js';
19
- export { clearPromotedDefaults, getDisplayTypeDefaultChanges, isSlotCustomized, makePin, getConfigSnapshotWithPromotables, getTrackConfigWithPromotables, } from './promotableDefaults.js';
26
+ export { getSlotDefinition, isConfigurationSlot, makeSlotFacade, slotChoices, slotValueRefusal, } from './slotFacade.js';
27
+ export { fullConfSnapshot } from './fullConfSnapshot.js';