@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
@@ -1,6 +1,6 @@
1
- import { setReExportRegistry } from './ReExports/registry.js';
2
- import { isCJSPluginDefinition, isESMPluginDefinition, isUMDPluginDefinition, pluginDescriptionString, } from './pluginDefinitions.js';
3
- import { isElectron } from './util/index.js';
1
+ import { enableContractReports } from '@jbrowse/render-core/contractReports';
2
+ import { loudOnMissingModule, setReExportRegistry, } from './ReExports/registry.js';
3
+ import { isESMPluginDefinition, isUMDPluginDefinition, maybePluginUrl, pluginDescriptionString, pluginLabel, } from './pluginDefinitions.js';
4
4
  import { isWebWorker } from './util/isWebWorker.js';
5
5
  /**
6
6
  * A definition names exactly one loader. More than one is malformed — no real
@@ -11,7 +11,6 @@ import { isWebWorker } from './util/isWebWorker.js';
11
11
  */
12
12
  function assertSingleKind(def) {
13
13
  const kinds = [
14
- isCJSPluginDefinition(def) ? 'CJS' : undefined,
15
14
  isESMPluginDefinition(def) ? 'ESM' : undefined,
16
15
  isUMDPluginDefinition(def) ? 'UMD' : undefined,
17
16
  ].filter(kind => kind !== undefined);
@@ -19,6 +18,20 @@ function assertSingleKind(def) {
19
18
  throw new Error(`Plugin definition names more than one plugin type (${kinds.join(', ')}), refusing to load: ${JSON.stringify(def)}`);
20
19
  }
21
20
  }
21
+ /**
22
+ * A `cjsUrl` definition loaded by writing the bundle to a temp file and
23
+ * `require`ing it in Electron's renderer, the one loader that needed Node. That
24
+ * renderer runs UMD and ESM, and a plugin reaching the main process does it
25
+ * through `window.require('electron')` whatever format it ships in, so the
26
+ * format bought nothing its two peers do not. Name the successor rather than
27
+ * letting the definition fall through to "could not determine plugin type",
28
+ * which reads as a malformed config.
29
+ */
30
+ function assertRetiredKinds(def) {
31
+ if ('cjsUrl' in def) {
32
+ throw new Error(`CJS plugins are no longer loaded (${String(def.cjsUrl)}). Publish the plugin as UMD or ESM and name it with umdUrl or esmUrl.`);
33
+ }
34
+ }
22
35
  function promisifiedLoadScript(src, integrity) {
23
36
  return new Promise((resolve, reject) => {
24
37
  const script = document.createElement('script');
@@ -45,22 +58,48 @@ function promisifiedLoadScript(src, integrity) {
45
58
  function hasImportScripts(scope) {
46
59
  return 'importScripts' in scope;
47
60
  }
61
+ // A *module* worker has importScripts on its global but throws from it — the
62
+ // spec forbids it there, and the browser says so ("Module scripts don't support
63
+ // importScripts"). That is the whole failure for a UMD plugin in a bundler
64
+ // configured for module workers (Vite's `worker.format: 'es'`), and it reads as
65
+ // a broken plugin unless named. Every other throw is the script's own — a 404,
66
+ // or a bundle that dereferences `window` in a realm that has none — and the
67
+ // script's words are the diagnosis, so they are kept rather than replaced.
68
+ export function workerScriptLoadMessage(scriptUrl, error) {
69
+ const detail = error instanceof Error ? error.message : String(error);
70
+ return /module script/i.test(detail)
71
+ ? `Failed to load ${scriptUrl} in the worker. A UMD plugin is loaded there via importScripts, which module workers do not support — either build the worker as a classic worker, or use a plugin published as ESM.`
72
+ : `Failed to load ${scriptUrl} in the worker: ${detail}`;
73
+ }
74
+ const workerPrefetches = new Map();
75
+ /**
76
+ * `importScripts` blocks until its file arrives, so a worker loading its
77
+ * plugins with it waited one round trip per plugin, in a row. Fetching them all
78
+ * first makes each `importScripts` a cache read — provided the fetch is the
79
+ * request `importScripts` makes: no-cors, with credentials. Chrome and Firefox
80
+ * both re-download for any other mode (probe-worker-script-cache.ts).
81
+ */
82
+ function prefetchWorkerScript(url) {
83
+ if (!workerPrefetches.has(url)) {
84
+ workerPrefetches.set(url, fetch(url, { mode: 'no-cors', credentials: 'include' })
85
+ .then(r => r.arrayBuffer())
86
+ .then(() => { }, () => { }));
87
+ }
88
+ }
48
89
  async function loadScript(scriptUrl, integrity) {
49
90
  const scope = globalThis;
50
91
  if (!isWebWorker()) {
51
92
  return promisifiedLoadScript(scriptUrl, integrity);
52
93
  }
53
94
  else if (hasImportScripts(scope)) {
95
+ await workerPrefetches.get(scriptUrl);
54
96
  try {
55
97
  scope.importScripts(scriptUrl);
56
98
  }
57
99
  catch (error) {
58
- // A *module* worker has importScripts on its global but throws from it —
59
- // the spec forbids it there. That is the whole failure for a UMD plugin
60
- // in a bundler configured for module workers (Vite's `worker.format:
61
- // 'es'`), and the raw TypeError names none of it, so it reads as a broken
62
- // plugin rather than an incompatible pairing.
63
- throw new Error(`Failed to load ${scriptUrl} in the worker. A UMD plugin is loaded there via importScripts, which module workers do not support — either build the worker as a classic worker, or use a plugin published as ESM.`, { cause: error });
100
+ throw new Error(workerScriptLoadMessage(scriptUrl, error), {
101
+ cause: error,
102
+ });
64
103
  }
65
104
  return;
66
105
  }
@@ -97,6 +136,34 @@ function resolvePluginUrl(spec, base) {
97
136
  }
98
137
  return url;
99
138
  }
139
+ // A plugin served from the developer's own machine into an app built for
140
+ // production is the one arrangement that can only be a plugin under
141
+ // development: a shipped site serves its plugins from its own origin, and a
142
+ // developer running the app itself from source already has a development build.
143
+ // So it is the evidence that arms the contract channel without anything for the
144
+ // author to know about first — which is the whole difficulty the channel had,
145
+ // since the population it is written for is the one with nobody to ask. See
146
+ // `@jbrowse/render-core/contractReports`.
147
+ function armIfUnderDevelopment(def) {
148
+ const url = maybePluginUrl(def);
149
+ if (url !== undefined && servedFromThisMachine(url)) {
150
+ enableContractReports(`the plugin at ${url} is served from this machine`);
151
+ }
152
+ }
153
+ function servedFromThisMachine(url) {
154
+ try {
155
+ const { hostname, protocol } = new URL(url);
156
+ return ((protocol === 'http:' || protocol === 'https:') &&
157
+ (hostname === 'localhost' ||
158
+ hostname === '127.0.0.1' ||
159
+ hostname === '[::1]'));
160
+ }
161
+ catch {
162
+ // a relative url is a plugin shipped beside this index.html, which is the
163
+ // site's own rather than one under development
164
+ return false;
165
+ }
166
+ }
100
167
  function addCacheBuster(url) {
101
168
  if (!('__jbrowseCacheBuster' in globalThis)) {
102
169
  return url;
@@ -105,22 +172,66 @@ function addCacheBuster(url) {
105
172
  u.searchParams.set('_cb', Date.now().toString());
106
173
  return u.href;
107
174
  }
175
+ function umdPluginUrl(def, baseUri) {
176
+ return 'url' in def
177
+ ? resolvePluginUrl(def.url, baseUri)
178
+ : 'umdUrl' in def
179
+ ? resolvePluginUrl(def.umdUrl, baseUri)
180
+ : resolvePluginUrl(def.umdLoc.uri, def.umdLoc.baseUri);
181
+ }
182
+ /**
183
+ * The registry has to be published before a plugin bundle runs, but not before
184
+ * it downloads, so each bundle is preloaded while the registry is fetched.
185
+ * Skipped under the cache-buster, whose query string differs per request.
186
+ *
187
+ * Exported for a worker told its plugins ahead of its boot configuration.
188
+ */
189
+ export function preloadUMDBundles(defs, baseUri) {
190
+ if ('__jbrowseCacheBuster' in globalThis) {
191
+ return;
192
+ }
193
+ if (isWebWorker()) {
194
+ for (const def of defs) {
195
+ if (isUMDPluginDefinition(def)) {
196
+ try {
197
+ prefetchWorkerScript(umdPluginUrl(def, baseUri).href);
198
+ }
199
+ catch {
200
+ // loadPlugin reports a url it cannot resolve
201
+ }
202
+ }
203
+ }
204
+ return;
205
+ }
206
+ if (typeof document === 'undefined') {
207
+ return;
208
+ }
209
+ for (const def of defs) {
210
+ if (isUMDPluginDefinition(def)) {
211
+ try {
212
+ const link = document.createElement('link');
213
+ link.rel = 'preload';
214
+ link.as = 'script';
215
+ if (def.integrity) {
216
+ link.setAttribute('integrity', def.integrity);
217
+ link.setAttribute('crossorigin', 'anonymous');
218
+ }
219
+ link.href = umdPluginUrl(def, baseUri).href;
220
+ document.head.append(link);
221
+ }
222
+ catch {
223
+ // loadPlugin reports a url it cannot resolve
224
+ }
225
+ }
226
+ }
227
+ }
108
228
  export default class PluginLoader {
109
229
  definitions = [];
110
230
  fetchESM;
111
- fetchCJS;
112
231
  constructor(defs = [], args) {
113
232
  this.fetchESM = args?.fetchESM;
114
- this.fetchCJS = args?.fetchCJS;
115
233
  this.definitions = structuredClone(defs);
116
234
  }
117
- async loadCJSPlugin(def, baseUri) {
118
- const parsedUrl = resolvePluginUrl(def.cjsUrl, baseUri);
119
- if (!this.fetchCJS) {
120
- throw new Error('No fetchCJS callback provided');
121
- }
122
- return this.fetchCJS(parsedUrl.href);
123
- }
124
235
  async loadESMPlugin(def, baseUri) {
125
236
  const parsedUrl = 'esmUrl' in def
126
237
  ? resolvePluginUrl(def.esmUrl, baseUri)
@@ -136,11 +247,7 @@ export default class PluginLoader {
136
247
  return plugin;
137
248
  }
138
249
  async loadUMDPlugin(def, baseUri) {
139
- const parsedUrl = 'url' in def
140
- ? resolvePluginUrl(def.url, baseUri)
141
- : 'umdUrl' in def
142
- ? resolvePluginUrl(def.umdUrl, baseUri)
143
- : resolvePluginUrl(def.umdLoc.uri, def.umdLoc.baseUri);
250
+ const parsedUrl = umdPluginUrl(def, baseUri);
144
251
  const moduleName = def.name;
145
252
  const umdName = `JBrowsePlugin${moduleName}`;
146
253
  // a cache buster query string would change the bytes the browser hashes for
@@ -154,15 +261,11 @@ export default class PluginLoader {
154
261
  return plugin;
155
262
  }
156
263
  async loadPlugin(def, baseUri) {
264
+ assertRetiredKinds(def);
157
265
  assertSingleKind(def);
266
+ armIfUnderDevelopment(def);
158
267
  let plugin;
159
- if (isCJSPluginDefinition(def)) {
160
- if (!isElectron) {
161
- throw new Error(`CommonJS plugin found, but not in a NodeJS environment: ${JSON.stringify(def)}`);
162
- }
163
- plugin = await this.loadCJSPlugin(def, baseUri);
164
- }
165
- else if (isESMPluginDefinition(def)) {
268
+ if (isESMPluginDefinition(def)) {
166
269
  plugin = await this.loadESMPlugin(def, baseUri);
167
270
  }
168
271
  else if (isUMDPluginDefinition(def)) {
@@ -177,35 +280,36 @@ export default class PluginLoader {
177
280
  }
178
281
  return plugin.default;
179
282
  }
180
- reExportTarget;
283
+ reExports;
181
284
  /**
182
285
  * Ask for the runtime ABI (`JBrowseExports`) to be published on `target`
183
- * before any plugin bundle is evaluated. Records the target; the registry
184
- * itself is fetched in `loadSettled` below.
286
+ * before any plugin bundle is evaluated. Records the target and the loader;
287
+ * `loadSettled` fetches the registry, a ~126 KB gzipped module only a runtime
288
+ * plugin can use (see `ReExports/registry.ts` for why it cannot shrink).
185
289
  *
186
- * The split is the point. Every product calls this at startup, synchronously,
187
- * whether or not the config names a plugin — so importing the registry here
188
- * put it in every host's first paint. It is a ~126 KB gzipped module (see
189
- * `ReExports/registry.ts` for why it cannot shrink) that only a runtime plugin
190
- * can use, and loading one is async anyway.
290
+ * `registry` is the product's generated map — `reExports.generated.ts` on
291
+ * the main thread, `workerReExports.generated.ts` in its worker — which
292
+ * serves every `@jbrowse` package the product bundles. The caller names it
293
+ * because the registry serves this module: an `import()` of it from here is
294
+ * a cycle rolldown keeps in any host bundling this file, whether or not
295
+ * anything loads a plugin (EAGER_BUNDLE.md §3).
191
296
  */
192
- installGlobalReExports(target) {
193
- this.reExportTarget = target;
297
+ installGlobalReExports(target, registry) {
298
+ this.reExports = { target, registry };
194
299
  return this;
195
300
  }
196
301
  async publishReExports() {
197
- const target = this.reExportTarget;
198
- if (!target) {
302
+ if (!this.reExports) {
199
303
  return;
200
304
  }
201
- const { default: ReExports } = await import('./ReExports/index.js');
202
- target.JBrowseExports = {
203
- ...ReExports,
204
- };
305
+ const { target, registry } = this.reExports;
306
+ const { default: ReExports } = await registry();
307
+ target.JBrowseExports =
308
+ loudOnMissingModule({ ...ReExports });
205
309
  // the synchronous half: `pluginManager.jbrequire(name)` is what a CJS
206
310
  // plugin calls, and it cannot await
207
311
  setReExportRegistry(ReExports);
208
- this.reExportTarget = undefined;
312
+ this.reExports = undefined;
209
313
  }
210
314
  /**
211
315
  * Loads every definition and separates the ones that worked from the ones
@@ -224,6 +328,7 @@ export default class PluginLoader {
224
328
  * fail renders with a much worse message) keep using `load`.
225
329
  */
226
330
  async loadSettled(baseUri) {
331
+ preloadUMDBundles(this.definitions, baseUri);
227
332
  // before the first plugin script evaluates — a UMD bundle reads
228
333
  // `JBrowseExports` off the global at module scope
229
334
  await this.publishReExports();
@@ -249,9 +354,20 @@ export default class PluginLoader {
249
354
  async load(baseUri) {
250
355
  const { records, failures } = await this.loadSettled(baseUri);
251
356
  // rethrown by definition order rather than by which rejected first, so the
252
- // error a strict caller sees doesn't depend on network timing
253
- if (failures[0]) {
254
- throw failures[0].error;
357
+ // error a strict caller sees doesn't depend on network timing.
358
+ //
359
+ // Named, because the RPC worker calls this: a plugin that throws while
360
+ // evaluating takes the whole RpcServer with it, and the bare error is
361
+ // whatever the bundle's module scope said — `Cannot read properties of
362
+ // undefined`, or the missing ABI key — with nothing saying which plugin
363
+ // read it. The message is carried rather than the error, since this one
364
+ // crosses postMessage and `serializeError` cannot clone an arbitrary
365
+ // `cause`.
366
+ const failure = failures[0];
367
+ if (failure) {
368
+ const { definition, error } = failure;
369
+ const detail = error instanceof Error ? error.message : String(error);
370
+ throw new Error(`plugin ${pluginLabel(definition)} failed: ${detail}`);
255
371
  }
256
372
  return records;
257
373
  }
@@ -1,6 +1,8 @@
1
1
  import PhasedScheduler from './PhasedScheduler.ts';
2
2
  import './util/tracks.ts';
3
3
  import type Plugin from './Plugin.ts';
4
+ import type { PluginConstructor } from './Plugin.ts';
5
+ import type { PluggableConfigNode } from './configuration/index.ts';
4
6
  import type AdapterType from './pluggableElementTypes/AdapterType.ts';
5
7
  import type AddTrackWorkflowType from './pluggableElementTypes/AddTrackWorkflowType.ts';
6
8
  import type ConnectionType from './pluggableElementTypes/ConnectionType.ts';
@@ -20,8 +22,14 @@ import './ui/buildExtraTrackMenuItems.ts';
20
22
  import './ui/multiTrackMenuItems.ts';
21
23
  import './util/addTrackComponent.ts';
22
24
  import type { AbstractRootModel, AbstractSessionModel, SimpleFeatureSerialized } from './util/index.ts';
23
- import type { IAnyModelType, IStateTreeNode, IAnyType } from '@jbrowse/mobx-state-tree';
25
+ import type { IAnyModelType, IAnyType, IStateTreeNode, IType, SnapshotIn } from '@jbrowse/mobx-state-tree';
24
26
  import type { ComponentType, ReactNode } from 'react';
27
+ /**
28
+ * What `pluggableConfigSchemaType` builds: a union whose members are checked
29
+ * at runtime, read as a config node carrying the `type` every member names
30
+ * itself by; a member's other slots read through `getConf`.
31
+ */
32
+ export type PluggableConfigSchemaType = IType<any, any, PluggableConfigNode>;
25
33
  /**
26
34
  * Every pluggable element group, in the order `elementCreationSchedule` builds
27
35
  * them. The array is the declaration and the union is derived from it, so a
@@ -31,6 +39,12 @@ import type { ComponentType, ReactNode } from 'react';
31
39
  */
32
40
  export declare const pluggableElementTypeGroups: readonly ['adapter', 'text search adapter', 'display', 'track', 'connection', 'view', 'widget', 'rpc method', 'internet account', 'add track workflow'];
33
41
  export type PluggableElementTypeGroup = (typeof pluggableElementTypeGroups)[number];
42
+ /**
43
+ * The group a `pluggableMstType(group, 'stateModel')` union holds, read off
44
+ * its name: with every member a lazy model not yet loaded, the union has no
45
+ * members to recognise it by.
46
+ */
47
+ export declare function pluggableStateModelGroup(type: IAnyType): "adapter" | "add track workflow" | "connection" | "display" | "internet account" | "rpc method" | "text search adapter" | "track" | "view" | "widget" | undefined;
34
48
  /** internal class that holds the info for a certain element type */
35
49
  declare class TypeRecord<ElementClass extends PluggableElementBase> {
36
50
  registeredTypes: Record<string, ElementClass>;
@@ -110,8 +124,10 @@ type WidgetModel = FeatureWidgetModel & {
110
124
  export interface FeaturePanelProps {
111
125
  /** has `trackId` and `trackType` */
112
126
  model: FeatureWidgetModel;
113
- /** snapshot of the feature being shown */
127
+ /** snapshot of the feature being shown, as `formatDetails` reshaped it */
114
128
  feature: SimpleFeatureSerialized;
129
+ /** the same feature before `formatDetails` ran */
130
+ unformatted?: SimpleFeatureSerialized;
115
131
  /**
116
132
  * how far down the subfeature tree this card is: 0 is the feature the user
117
133
  * clicked, 1 its subfeatures, and so on. The point fires for every card, so a
@@ -137,7 +153,18 @@ export interface ReplaceWidgetProps {
137
153
  *
138
154
  * That is what makes `extendViewType(pm, 'LinearGenomeView', …)` hand back a
139
155
  * typed state model, and a misspelled or renamed name a compile error rather
140
- * than an extension that quietly never applies. Declaring them here rather than
156
+ * than an extension that quietly never applies. `getViewType` reads it too, so
157
+ * a caller composing another view's model into its own gets the real type
158
+ * instead of `IAnyModelType`.
159
+ *
160
+ * AN AUGMENTATION IS HAND-WRITTEN, so each registration annotates the model it
161
+ * passes to `ViewType` against its own entry here (`const stateModel:
162
+ * ViewTypeRegistry['CircularView'] = …`). That one line is what makes the
163
+ * registry earn what `getViewType` promises: without it a drifted entry is
164
+ * worse than the `IAnyModelType` it replaced, since a caller would get a
165
+ * confidently wrong type rather than an unchecked one. It cannot live on
166
+ * `ViewType`'s constructor — TypeScript forbids type parameters there, and a
167
+ * class parameter widens `name` to `string`, so the conditional never fires. Declaring them here rather than
141
168
  * beside the helpers is load-bearing: an interface can only be augmented
142
169
  * through the module that declares it, and a barrel re-exporting the type would
143
170
  * give every augmentation its own unrelated copy.
@@ -148,6 +175,33 @@ export interface DisplayTypeRegistry {
148
175
  }
149
176
  export type ViewTypeName = keyof ViewTypeRegistry;
150
177
  export type DisplayTypeName = keyof DisplayTypeRegistry;
178
+ /**
179
+ * What `addView(name, snapshot)` takes for a view type name. A registered name
180
+ * gets the view's authored shape — the snapshot type `withLaunchInput` widened
181
+ * to accept the launch keys beside the declared properties — so a misspelled
182
+ * key is a compile error at the literal site. `type` is optional because
183
+ * `addView` writes it. An unregistered name stays `Record<string, unknown>`,
184
+ * which is what an out-of-tree view's `addView` has always been.
185
+ *
186
+ * Read off `ViewTypeRegistry` rather than registered a second time, so the
187
+ * snapshot type cannot drift from the model: a view that augments the registry
188
+ * has typed `addView`, `replaceView` and `addOrReplaceView` for free.
189
+ */
190
+ export type ViewSnapshotInput<N extends string> = N extends ViewTypeName ? Omit<SnapshotIn<ViewTypeRegistry[N]>, 'type'> & {
191
+ type?: N;
192
+ } : Record<string, unknown>;
193
+ /**
194
+ * what a plugin knows of an assembly the session does not hold, answered
195
+ * without connecting anything: its assembly config as the config holding it
196
+ * writes it, a relative uri carrying the `baseUri` it resolves against, and
197
+ * the adapter of its gene track. A multi-way synteny display holds the
198
+ * assembly as a temporary one while it draws that genome's lane, so renaming
199
+ * reaches its sequence and aliases the way it reaches any assembly's
200
+ */
201
+ export interface AssemblyDescription {
202
+ assembly?: Record<string, unknown>;
203
+ geneAdapter?: Record<string, unknown>;
204
+ }
151
205
  export interface ExtensionPointRegistry {
152
206
  'Core-extendSession': {
153
207
  args: IAnyModelType;
@@ -167,6 +221,14 @@ export interface ExtensionPointRegistry {
167
221
  session?: unknown;
168
222
  };
169
223
  };
224
+ 'Core-describeAssemblies': {
225
+ args: Record<string, AssemblyDescription>;
226
+ result: Record<string, AssemblyDescription>;
227
+ props: {
228
+ assemblyNames: string[];
229
+ session?: unknown;
230
+ };
231
+ };
170
232
  'Core-extendPluggableElement': {
171
233
  args: PluggableElementType;
172
234
  result: PluggableElementType;
@@ -264,18 +326,28 @@ export interface PluginLoadRecord {
264
326
  metadata?: PluginMetadata;
265
327
  plugin: Plugin;
266
328
  }
329
+ /**
330
+ * Instantiate an application's bundled plugin list as `isCore` load records —
331
+ * what tells the plugin store these came with the bundle rather than being
332
+ * installed by the user, so `InstalledPluginsList` filters them out and the
333
+ * About widget lists them. Every product and every test harness builds its
334
+ * manager from one of these lists, and a harness that passed bare instances
335
+ * silently disagreed with the app it was testing.
336
+ */
337
+ export declare function corePluginRecords(plugins: PluginConstructor[]): PluginLoadRecord[];
267
338
  export interface RuntimePluginLoadRecord extends PluginLoadRecord {
268
339
  definition: PluginDefinition;
269
340
  }
270
341
  export default class PluginManager {
342
+ #private;
271
343
  plugins: Plugin[];
272
344
  jexl: import("@jbrowse/jexl").Jexl;
273
345
  pluginMetadata: Record<string, PluginMetadata>;
274
346
  runtimePluginDefinitions: PluginDefinition[];
275
347
  elementCreationSchedule: PhasedScheduler<"adapter" | "add track workflow" | "connection" | "display" | "internet account" | "rpc method" | "text search adapter" | "track" | "view" | "widget">;
276
348
  pluggableElementsCreated: boolean;
277
- adapterTypes: TypeRecord<AdapterType>;
278
- textSearchAdapterTypes: TypeRecord<TextSearchAdapterType>;
349
+ adapterTypes: TypeRecord<AdapterType<any>>;
350
+ textSearchAdapterTypes: TypeRecord<TextSearchAdapterType<any>>;
279
351
  trackTypes: TypeRecord<TrackType>;
280
352
  displayTypes: TypeRecord<DisplayType>;
281
353
  connectionTypes: TypeRecord<ConnectionType>;
@@ -289,25 +361,27 @@ export default class PluginManager {
289
361
  extensionPoints: Map<string, ExtensionPointCallback[]>;
290
362
  warnedClobber: Set<string>;
291
363
  /**
292
- * Lazy-hydration cache for `TrackConfigurationReference`/
293
- * `DisplayConfigurationReference` (configuration/configurationSchema.ts).
364
+ * The lazily-hydrated MST config node for one frozen track config, built by
365
+ * `build` on first ask and returned by identity after that.
366
+ * `configuration/configurationSchema.ts` is the only caller.
367
+ *
294
368
  * `jbrowse.tracks` is `types.frozen` for large-tracklist performance, so a
295
- * track config is a plain JS object until first referenced; hydrating it
296
- * into an MST node is deferred to that read. MST's custom-reference
297
- * `getValue` has no memoization of its own — it reruns on every property
298
- * access — so without this cache, every read of `track.configuration` would
299
- * fabricate a fresh, non-identical MST node. Keyed by schemaType (each track
300
- * type's config schema is rebuilt fresh per PluginManager instance, see
301
- * addTrackType) then by the frozen object itself, so a cache hit can only
302
- * ever come from this same PluginManager instance and this same track type.
303
- * See ADR-031.
369
+ * track config is a plain JS object until first referenced; hydrating it into
370
+ * an MST node is deferred to that read. MST's custom-reference `getValue` has
371
+ * no memoization of its own — it reruns on every property access — so without
372
+ * this, every read of `track.configuration` would fabricate a fresh,
373
+ * non-identical node. Keyed by schemaType (each track type's config schema is
374
+ * rebuilt fresh per PluginManager instance, see addTrackType) then by the
375
+ * frozen object, so a hit can only ever come from this same instance and this
376
+ * same track type. See ADR-031.
304
377
  *
305
- * This node is never mutated: admin edits replace the frozen entry (new
378
+ * The node is never mutated: admin edits replace the frozen entry (new
306
379
  * identity drops the WeakMap entry), and a non-admin's edits go to a private
307
380
  * session working copy, not here (ADR-032). Both levels are `WeakMap`s so
308
- * entries collect normally — no manual invalidation needed.
381
+ * entries collect normally — no manual invalidation needed, which is why this
382
+ * is a memo and not a cache with a lifecycle to expose.
309
383
  */
310
- trackConfigHydrationCache: WeakMap<object, WeakMap<object, unknown>>;
384
+ hydratedTrackConfig(schemaType: IAnyType, frozen: object, build: () => unknown): unknown;
311
385
  constructor(initialPlugins?: (Plugin | PluginLoadRecord | RuntimePluginLoadRecord)[]);
312
386
  pluginConfigurationNamespacedSchemas(): Record<string, unknown>;
313
387
  pluginConfigurationUnnamespacedSchemas(): Record<string, unknown>;
@@ -330,10 +404,17 @@ export default class PluginManager {
330
404
  getRpcElements(): RpcMethodType[];
331
405
  getDisplayElements(): DisplayType[];
332
406
  getAdapterElements(): AdapterType[];
333
- /** get a MST type for the union of all specified pluggable MST types */
407
+ /**
408
+ * get a MST type for the union of all specified pluggable MST types.
409
+ * Membership is late-bound, so a lazily registered state model joins when
410
+ * its loader resolves; a snapshot naming one cannot be cast until then.
411
+ */
334
412
  pluggableMstType(groupName: PluggableElementTypeGroup, fieldName: string, fallback?: IAnyType): IAnyType;
335
- /** get a MST type for the union of all specified pluggable config schemas */
336
- pluggableConfigSchemaType(typeGroup: PluggableElementTypeGroup, fieldName?: string): IAnyType;
413
+ /**
414
+ * The union of every registered config schema of a pluggable element group,
415
+ * whose instance reads as a config node naming its `type`.
416
+ */
417
+ pluggableConfigSchemaType(typeGroup: PluggableElementTypeGroup, fieldName?: string): PluggableConfigSchemaType;
337
418
  jbrequireCache: Map<any, any>;
338
419
  get lib(): Record<string, unknown>;
339
420
  load: <FTYPE extends AnyFunction>(lib: FTYPE) => ReturnType<FTYPE>;
@@ -346,7 +427,7 @@ export default class PluginManager {
346
427
  jbrequire: (lib: string | AnyFunction | {
347
428
  default: AnyFunction;
348
429
  }) => any;
349
- getAdapterType(typeName: string): AdapterType;
430
+ getAdapterType(typeName: string): AdapterType<any>;
350
431
  /**
351
432
  * Whether an adapter type is registered, for a caller walking a config where
352
433
  * `type` names a track, a display and an adapter alike — `getAdapterType`
@@ -354,10 +435,35 @@ export default class PluginManager {
354
435
  * claims to be an adapter and wrong when you are asking whether it is one.
355
436
  */
356
437
  hasAdapterType(typeName: string): boolean;
357
- getTextSearchAdapterType(typeName: string): TextSearchAdapterType;
438
+ getTextSearchAdapterType(typeName: string): TextSearchAdapterType<any>;
358
439
  getTrackType(typeName: string): TrackType;
359
440
  getDisplayType(typeName: string): DisplayType;
441
+ getViewType<N extends ViewTypeName>(typeName: N): Omit<ViewType, 'stateModel'> & {
442
+ stateModel: ViewTypeRegistry[N];
443
+ };
360
444
  getViewType(typeName: string): ViewType;
445
+ /**
446
+ * The registered view and display types a snapshot names, from every `type`
447
+ * string anywhere in it — `heldForMissingPlugins` included. Over-collection
448
+ * is harmless: a name that resolves to neither is dropped here.
449
+ */
450
+ private sessionElementTypes;
451
+ /**
452
+ * Every async code path that hands a snapshot to a synchronous session
453
+ * instantiation (`setSession`, `cast`) must await this first.
454
+ */
455
+ preloadSessionTypes(sessionSnapshot: unknown): Promise<void>;
456
+ unloadedSessionTypes(sessionSnapshot: unknown): string[];
457
+ /**
458
+ * Without this, a snapshot naming an unloaded lazy type fails inside MST as
459
+ * a union mismatch that reads like a corrupt snapshot.
460
+ */
461
+ assertSessionTypesLoaded(sessionSnapshot: unknown): void;
462
+ /**
463
+ * Aliases resolve here because a legacy session names the alias, and the
464
+ * model that remaps it cannot be consulted before it is loaded.
465
+ */
466
+ resolveDisplayTypeRecord(name: string): DisplayType | undefined;
361
467
  getAddTrackWorkflow(typeName: string): AddTrackWorkflowType;
362
468
  getWidgetType(typeName: string): WidgetType;
363
469
  getConnectionType(typeName: string): ConnectionType;