@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.
- package/README.md +1709 -390
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +37 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +49 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +8 -5
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
- package/esm/BaseFeatureWidget/formatDetails.js +62 -83
- package/esm/BaseFeatureWidget/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
- package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
- package/esm/BaseFeatureWidget/types.d.ts +12 -6
- package/esm/BaseFeatureWidget/util.d.ts +0 -10
- package/esm/BaseFeatureWidget/util.js +0 -17
- package/esm/CorePlugin.js +34 -3
- package/esm/PluginLoader.d.ts +24 -13
- package/esm/PluginLoader.js +167 -51
- package/esm/PluginManager.d.ts +130 -24
- package/esm/PluginManager.js +180 -32
- package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
- package/esm/ReExports/MuiDataGridReExports.js +2 -2
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +530 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +490 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/list.js +528 -79
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -165
- package/esm/ReExports/registry.d.ts +1 -0
- package/esm/ReExports/registry.js +23 -5
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/TextSearchManager.d.ts +27 -13
- package/esm/TextSearch/TextSearchManager.js +77 -36
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +21 -19
- package/esm/assemblyManager/assembly.js +28 -26
- package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
- package/esm/assemblyManager/assemblyAdapters.js +8 -2
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
- package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
- package/esm/assemblyManager/assemblyManager.d.ts +35 -180
- package/esm/assemblyManager/assemblyManager.js +47 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
- package/esm/assemblyManager/geneticCodes.js +2 -5
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
- package/esm/assemblyManager/loadRefNameMap.js +4 -9
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -0
- package/esm/checkPlugins.d.ts +2 -0
- package/esm/checkPlugins.js +38 -17
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +101 -71
- package/esm/configuration/configurationSchema.js +207 -134
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +150 -60
- package/esm/configuration/configurationSlot.js +103 -75
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
- package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
- package/esm/configuration/formatDetailsConfigSchema.js +10 -13
- package/esm/configuration/fullConfSnapshot.d.ts +4 -19
- package/esm/configuration/fullConfSnapshot.js +30 -52
- package/esm/configuration/getConf.d.ts +45 -41
- package/esm/configuration/getConf.js +111 -44
- package/esm/configuration/index.d.ts +26 -11
- package/esm/configuration/index.js +16 -7
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
- package/esm/configuration/mergeFormatCallbacks.js +13 -10
- package/esm/configuration/plot.d.ts +61 -0
- package/esm/configuration/plot.js +142 -0
- package/esm/configuration/readConfObject.d.ts +2 -24
- package/esm/configuration/readConfObject.js +20 -63
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +32 -15
- package/esm/configuration/schemaRegistry.js +33 -35
- package/esm/configuration/schemaTypes.d.ts +21 -5
- package/esm/configuration/schemaTypes.js +66 -55
- package/esm/configuration/slotFacade.d.ts +12 -29
- package/esm/configuration/slotFacade.js +44 -23
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +30 -4
- package/esm/configuration/tabixIndexFields.js +21 -4
- package/esm/configuration/tabixShorthand.d.ts +34 -17
- package/esm/configuration/tabixShorthand.js +49 -22
- package/esm/configuration/types.d.ts +182 -43
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
- package/esm/data_adapters/BaseAdapter/index.js +1 -0
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
- package/esm/data_adapters/BaseAdapter/stats.js +52 -13
- package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
- package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
- package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
- package/esm/data_adapters/dataAdapterCache.js +44 -10
- package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
- package/esm/data_adapters/getFeatureAdapter.js +8 -8
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
- package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
- package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
- package/esm/pluggableElementTypes/AdapterType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
- package/esm/pluggableElementTypes/DisplayType.js +28 -12
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
- package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
- package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
- package/esm/pluggableElementTypes/ViewType.js +32 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
- package/esm/pluggableElementTypes/WidgetType.js +6 -0
- package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
- package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
- package/esm/pluggableElementTypes/extendElementType.js +9 -5
- package/esm/pluggableElementTypes/index.d.ts +2 -1
- package/esm/pluggableElementTypes/index.js +2 -9
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
- package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
- package/esm/pluggableElementTypes/models/index.d.ts +2 -3
- package/esm/pluggableElementTypes/models/index.js +2 -3
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
- package/esm/pluginDefinitions.d.ts +34 -7
- package/esm/pluginDefinitions.js +54 -20
- package/esm/rpc/BaseRpcDriver.d.ts +2 -2
- package/esm/rpc/BaseRpcDriver.js +25 -30
- package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/esm/rpc/MainThreadRpcDriver.js +13 -8
- package/esm/rpc/RpcClient.d.ts +18 -6
- package/esm/rpc/RpcClient.js +51 -16
- package/esm/rpc/RpcManager.d.ts +14 -10
- package/esm/rpc/RpcManager.js +11 -1
- package/esm/rpc/RpcRegistry.d.ts +40 -7
- package/esm/rpc/RpcServer.d.ts +3 -1
- package/esm/rpc/RpcServer.js +19 -12
- package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
- package/esm/rpc/WebWorkerRpcDriver.js +64 -68
- package/esm/rpc/byteBudget.d.ts +20 -5
- package/esm/rpc/byteBudget.js +16 -5
- package/esm/rpc/configSchema.d.ts +7 -21
- package/esm/rpc/coreRpcMethods.d.ts +4 -0
- package/esm/rpc/coreRpcMethods.js +4 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.js +3 -4
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.js +3 -5
- package/esm/rpc/methods/CoreGetRefNames.js +2 -12
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
- package/esm/rpc/methods/CoreGetSequence.js +2 -2
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- package/esm/svg/SvgExport.js +6 -7
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +1 -1
- package/esm/svg/svgId.js +1 -1
- package/esm/svg/svgReady.d.ts +9 -7
- package/esm/svg/svgReady.js +8 -7
- package/esm/svg/trackNames.d.ts +7 -5
- package/esm/svg/trackNames.js +12 -9
- package/esm/svg/wrapSvgExport.js +6 -74
- package/esm/ui/AddCustomPluginDialog.js +3 -8
- package/esm/ui/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
- package/esm/ui/CascadingMenu.js +181 -104
- package/esm/ui/DropDownMenu.js +2 -1
- package/esm/ui/ErrorBanner.js +1 -1
- package/esm/ui/ErrorBoundary.d.ts +2 -2
- package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
- package/esm/ui/ExportSvgDialog.d.ts +1 -1
- package/esm/ui/FileDropZone.js +2 -1
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
- package/esm/ui/HoverMenu.d.ts +1 -2
- package/esm/ui/HoverMenu.js +6 -3
- package/esm/ui/JexlFilterDialog.d.ts +13 -10
- package/esm/ui/JexlFilterDialog.js +122 -50
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.js +26 -21
- package/esm/ui/LoadingOverlay.d.ts +14 -0
- package/esm/ui/LoadingOverlay.js +4 -2
- package/esm/ui/MenuTypes.d.ts +23 -53
- package/esm/ui/MenuTypes.js +3 -0
- package/esm/ui/MonospaceTextField.d.ts +2 -1
- package/esm/ui/MonospaceTextField.js +23 -20
- package/esm/ui/PaletteContext.d.ts +10 -5
- package/esm/ui/PaletteContext.js +44 -6
- package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
- package/esm/ui/RefNameAutocomplete/index.js +8 -2
- package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/util.js +42 -1
- package/esm/ui/ResizeHandle.d.ts +3 -1
- package/esm/ui/ResizeHandle.js +44 -11
- package/esm/ui/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
- package/esm/ui/ScrollEdgeShadow.js +14 -35
- package/esm/ui/ScrollZoomToggle.d.ts +4 -27
- package/esm/ui/ScrollZoomToggle.js +34 -51
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +1 -0
- package/esm/ui/SettingsChangesTable.js +49 -11
- package/esm/ui/ShareLinkField.d.ts +1 -3
- package/esm/ui/ShareLinkField.js +13 -40
- package/esm/ui/SizeSliderRow.d.ts +1 -3
- package/esm/ui/SizeSliderRow.js +4 -6
- package/esm/ui/SnackbarModel.js +79 -67
- package/esm/ui/StatusProgressBar.js +2 -2
- package/esm/ui/SvgColorLegend.d.ts +9 -4
- package/esm/ui/SvgColorLegend.js +82 -41
- package/esm/ui/VerticalScrollbar.d.ts +13 -34
- package/esm/ui/VerticalScrollbar.js +29 -83
- package/esm/ui/ViewLoadingScreen.d.ts +5 -4
- package/esm/ui/ViewLoadingScreen.js +8 -32
- package/esm/ui/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colors.d.ts +64 -0
- package/esm/ui/colors.js +230 -1
- package/esm/ui/hoverBoxStyle.d.ts +14 -2
- package/esm/ui/hoverBoxStyle.js +17 -2
- package/esm/ui/index.d.ts +12 -12
- package/esm/ui/index.js +14 -22
- package/esm/ui/launchViewMenu.js +15 -5
- package/esm/ui/legendMenuItem.d.ts +10 -32
- package/esm/ui/legendMenuItem.js +9 -36
- package/esm/ui/legendSpec.d.ts +15 -8
- package/esm/ui/legendSpec.js +14 -23
- package/esm/ui/makeSizeMenu.d.ts +0 -6
- package/esm/ui/makeSizeMenu.js +6 -30
- package/esm/ui/measureLegendText.js +1 -1
- package/esm/ui/menuItemAdornment.d.ts +9 -20
- package/esm/ui/menuItemAdornment.js +10 -32
- package/esm/ui/menuItems.d.ts +2 -7
- package/esm/ui/menuItems.js +1 -6
- package/esm/ui/multiTrackMenuItems.d.ts +6 -0
- package/esm/ui/palette.d.ts +118 -116
- package/esm/ui/palette.js +114 -75
- package/esm/ui/replaceViewAction.d.ts +1 -1
- package/esm/ui/replaceViewAction.js +1 -1
- package/esm/ui/theme.d.ts +43 -119
- package/esm/ui/theme.js +62 -78
- package/esm/ui/toggleMenuItems.d.ts +1 -3
- package/esm/ui/toggleMenuItems.js +6 -5
- package/esm/ui/useAssemblySelection.d.ts +4 -4
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/util/Base1DUtils.d.ts +5 -3
- package/esm/util/Base1DUtils.js +14 -6
- package/esm/util/Base1DViewModel.d.ts +2 -1
- package/esm/util/Base1DViewModel.js +3 -2
- package/esm/util/SvgCanvas.d.ts +15 -13
- package/esm/util/SvgCanvas.js +76 -56
- package/esm/util/TimeTraveller.d.ts +3 -0
- package/esm/util/TimeTraveller.js +34 -2
- package/esm/util/aborting.d.ts +39 -0
- package/esm/util/aborting.js +88 -6
- package/esm/util/adapterMetadata.d.ts +1 -1
- package/esm/util/adapterMetadata.js +6 -5
- package/esm/util/addAndShowTrack.d.ts +2 -5
- package/esm/util/addAndShowTrack.js +5 -1
- package/esm/util/addRelativeUris.d.ts +17 -5
- package/esm/util/addRelativeUris.js +46 -10
- package/esm/util/addTrackFromWidget.d.ts +2 -5
- package/esm/util/addTrackFromWidget.js +5 -4
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.js +46 -13
- package/esm/util/animationAllowed.d.ts +9 -0
- package/esm/util/animationAllowed.js +13 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -5
- package/esm/util/applyRowResizeWheel.js +10 -21
- package/esm/util/bandHeight.d.ts +10 -0
- package/esm/util/bandHeight.js +29 -0
- package/esm/util/bandLayout.d.ts +4 -4
- package/esm/util/bandLayout.js +4 -4
- package/esm/util/baseDisplayConfig.d.ts +8 -0
- package/esm/util/baseDisplayConfig.js +27 -0
- package/esm/util/bezierConnector.d.ts +4 -3
- package/esm/util/bezierConnector.js +38 -45
- package/esm/util/bgzfWorkerPool.d.ts +20 -74
- package/esm/util/bgzfWorkerPool.js +20 -74
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/cacheBudgets.d.ts +22 -19
- package/esm/util/cacheBudgets.js +22 -19
- package/esm/util/cachedSetup.d.ts +16 -6
- package/esm/util/cachedSetup.js +108 -38
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/cellMatches.d.ts +23 -0
- package/esm/util/cellMatches.js +264 -0
- package/esm/util/cellsStep.d.ts +29 -0
- package/esm/util/cellsStep.js +437 -0
- package/esm/util/clampToContig.d.ts +17 -0
- package/esm/util/clampToContig.js +19 -0
- package/esm/util/coarseStripHTML.js +1 -2
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +1 -0
- package/esm/util/color/index.d.ts +5 -3
- package/esm/util/color/index.js +7 -4
- package/esm/util/colorBits.d.ts +3 -3
- package/esm/util/colorBits.js +19 -44
- package/esm/util/colorRamp.d.ts +49 -5
- package/esm/util/colorRamp.js +169 -18
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -0
- package/esm/util/copyToClipboard.js +8 -1
- package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
- package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
- package/esm/util/createSvgRasterCanvas.d.ts +10 -0
- package/esm/util/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- package/esm/util/diagonalizeRegions.d.ts +2 -3
- package/esm/util/diagonalizeRegions.js +8 -13
- package/esm/util/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +81 -0
- package/esm/util/featureTransforms.js +1231 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.js +16 -9
- package/esm/util/fetchContext.d.ts +7 -8
- package/esm/util/fetchContext.js +3 -3
- package/esm/util/fetchHub.d.ts +4 -2
- package/esm/util/fetchHub.js +2 -2
- package/esm/util/fetchPhases.d.ts +10 -10
- package/esm/util/fetchSeq.d.ts +2 -3
- package/esm/util/fetchSeq.js +2 -2
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- package/esm/util/formatBytes.js +1 -1
- package/esm/util/formatGuessers.d.ts +25 -14
- package/esm/util/formatGuessers.js +42 -27
- package/esm/util/formatRelativeTime.js +1 -1
- package/esm/util/freezeDeep.d.ts +8 -10
- package/esm/util/freezeDeep.js +8 -10
- package/esm/util/getLocationUri.d.ts +2 -1
- package/esm/util/getLocationUri.js +8 -2
- package/esm/util/groupKeys.d.ts +76 -0
- package/esm/util/groupKeys.js +156 -0
- package/esm/util/highlights.d.ts +10 -6
- package/esm/util/highlights.js +12 -25
- package/esm/util/hooks.d.ts +31 -2
- package/esm/util/hooks.js +72 -3
- package/esm/util/index.d.ts +11 -11
- package/esm/util/index.js +11 -10
- package/esm/util/indexCandidates.d.ts +1 -31
- package/esm/util/indexCandidates.js +5 -63
- package/esm/util/installFetch.d.ts +77 -37
- package/esm/util/installFetch.js +65 -38
- package/esm/util/installInitAutorun.d.ts +14 -13
- package/esm/util/installInitAutorun.js +17 -17
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -0
- package/esm/util/intervals.js +9 -4
- package/esm/util/io/index.js +22 -15
- package/esm/util/isDataCurrent.d.ts +7 -5
- package/esm/util/isDataCurrent.js +9 -6
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -0
- package/esm/util/jexl.js +24 -21
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +32 -57
- package/esm/util/jexlFilters.js +31 -29
- package/esm/util/jexlStrings.d.ts +3 -4
- package/esm/util/jexlStrings.js +2 -3
- package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
- package/esm/util/layouts/GranularRectLayout.js +25 -8
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -0
- package/esm/util/locString.js +5 -2
- package/esm/util/localStorage.js +4 -4
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +885 -0
- package/esm/util/markEncodingTypes.d.ts +595 -0
- package/esm/util/markEncodingTypes.js +8 -0
- package/esm/util/mst-reflection.d.ts +2 -20
- package/esm/util/mst-reflection.js +3 -53
- package/esm/util/mstUtils.d.ts +31 -23
- package/esm/util/mstUtils.js +39 -24
- package/esm/util/numericUtils.d.ts +7 -0
- package/esm/util/numericUtils.js +16 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -0
- package/esm/util/openFeatureWidget.d.ts +5 -0
- package/esm/util/openFeatureWidget.js +2 -2
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -0
- package/esm/util/parentWalk.d.ts +1 -1
- package/esm/util/parentWalk.js +1 -1
- package/esm/util/parseLineByLine.d.ts +4 -5
- package/esm/util/parseLineByLine.js +8 -14
- package/esm/util/pluginStore.d.ts +6 -8
- package/esm/util/pluginStore.js +17 -16
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +22 -22
- package/esm/util/progress.js +27 -26
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +13 -9
- package/esm/util/range.js +17 -8
- package/esm/util/renameRegions.d.ts +26 -6
- package/esm/util/renameRegions.js +68 -54
- package/esm/util/renderToStaticMarkup.js +24 -14
- package/esm/util/rxjs.d.ts +23 -8
- package/esm/util/rxjs.js +61 -15
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +1 -0
- package/esm/util/scrollLatch.js +8 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -0
- package/esm/util/sessionSharing.d.ts +7 -5
- package/esm/util/sessionSharing.js +23 -23
- package/esm/util/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +0 -1
- package/esm/util/springAnimate.js +1 -1
- package/esm/util/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stepTables.d.ts +96 -0
- package/esm/util/stepTables.js +277 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +11 -0
- package/esm/util/svgColorProps.js +28 -1
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +19 -10
- package/esm/util/tabix.js +19 -14
- package/esm/util/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/timeGate.d.ts +4 -5
- package/esm/util/timeGate.js +4 -5
- package/esm/util/trackConfigDelta.d.ts +26 -26
- package/esm/util/trackConfigDelta.js +63 -47
- package/esm/util/tracks.d.ts +120 -66
- package/esm/util/tracks.js +501 -151
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/types/data.d.ts +0 -2
- package/esm/util/types/index.d.ts +121 -22
- package/esm/util/types/index.js +9 -0
- package/esm/util/types/mst.d.ts +3 -0
- package/esm/util/types/mst.js +4 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/services.d.ts +1 -1
- package/esm/util/unknownSnapshotKeys.d.ts +53 -0
- package/esm/util/unknownSnapshotKeys.js +76 -0
- package/esm/util/useFeatureSequence.js +5 -5
- package/esm/util/useFetch.d.ts +3 -4
- package/esm/util/useFetch.js +19 -10
- package/esm/util/useFetchPlugins.d.ts +6 -2
- package/esm/util/useFetchPlugins.js +7 -3
- package/esm/util/usePanZoom.js +10 -3
- package/esm/util/usePanelVirtualScroll.d.ts +7 -35
- package/esm/util/usePanelVirtualScroll.js +9 -36
- package/esm/util/useRafCommit.js +1 -0
- package/esm/util/useRowVirtualScroll.d.ts +6 -29
- package/esm/util/useRowVirtualScroll.js +8 -49
- package/esm/util/useVirtualScrollWheel.d.ts +20 -4
- package/esm/util/useVirtualScrollWheel.js +40 -74
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +47 -15
- package/esm/util/viewStatus.js +34 -0
- package/esm/util/wheelZoom.d.ts +7 -1
- package/esm/util/wheelZoom.js +85 -19
- package/esm/util/whenViewSettled.d.ts +55 -8
- package/esm/util/whenViewSettled.js +56 -7
- package/esm/util/withFeatureDetails.js +4 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +75 -24
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -10
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/ReExports/publicUtil.d.ts +0 -1
- package/esm/ReExports/publicUtil.js +0 -28
- package/esm/configuration/promotableDefaults.d.ts +0 -199
- package/esm/configuration/promotableDefaults.js +0 -326
- package/esm/configuration/promotablePin.d.ts +0 -55
- package/esm/configuration/promotablePin.js +0 -1
- package/esm/configuration/promotableResolve.d.ts +0 -108
- package/esm/configuration/promotableResolve.js +0 -117
- package/esm/configuration/promotableSlots.d.ts +0 -12
- package/esm/configuration/promotableSlots.js +0 -45
- package/esm/configuration/slotShape.d.ts +0 -12
- package/esm/configuration/slotShape.js +0 -84
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
- package/esm/ui/PinAdornment.d.ts +0 -5
- package/esm/ui/PinAdornment.js +0 -79
- package/esm/ui/SvgGradientLegend.d.ts +0 -26
- package/esm/ui/SvgGradientLegend.js +0 -26
- package/esm/ui/highlightChipReveal.d.ts +0 -32
- package/esm/ui/highlightChipReveal.js +0 -39
- package/esm/ui/promotableMenuItems.d.ts +0 -19
- package/esm/ui/promotableMenuItems.js +0 -89
- package/esm/ui/promotablePinCoverage.d.ts +0 -44
- package/esm/ui/promotablePinCoverage.js +0 -87
- package/esm/util/applyInitSettings.d.ts +0 -79
- package/esm/util/applyInitSettings.js +0 -91
- package/esm/util/openDisplays.d.ts +0 -23
- package/esm/util/openDisplays.js +0 -79
- package/esm/util/stopToken.d.ts +0 -211
- package/esm/util/stopToken.js +0 -438
- /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
import type PluginManager from '../PluginManager.ts';
|
|
2
|
+
export declare function referenceSequenceTrackId(assemblyName: unknown): string;
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `
|
|
6
|
-
*
|
|
7
|
-
* so every host describes a custom genome with just a URL and lets jbrowse-core
|
|
8
|
-
* pick the adapter — no adapter-type table in the Python/R/JS bindings.
|
|
9
|
-
*
|
|
10
|
-
* The guesser also derives the index locations (`.fai`/`.gzi`) from the uri;
|
|
11
|
-
* explicit adapter fields (e.g. a non-sibling `faiLocation`) are spread on top
|
|
12
|
-
* so they win. A `uri` matching no sequence adapter is left untouched, so a
|
|
13
|
-
* genuinely bad config still surfaces its own downstream error. Returns the same
|
|
14
|
-
* object reference when there is nothing to expand, so callers can cheaply skip
|
|
15
|
-
* a rebuild.
|
|
4
|
+
* The part of {@link expandAssemblyShorthand} that needs no plugin manager, for
|
|
5
|
+
* a reader of raw config JSON: the flat `{ name, uri }` form moves onto
|
|
6
|
+
* `sequence.adapter`, and `sequence.type` and `sequence.trackId` are each
|
|
7
|
+
* filled in when omitted. Returns `snap` itself when there is nothing to do.
|
|
16
8
|
*/
|
|
9
|
+
export declare function expandAssemblySequence<T>(snap: T): T;
|
|
17
10
|
/**
|
|
18
11
|
* Expand an assembly snapshot's own shorthands into the `sequence` an assembly
|
|
19
|
-
* config declares:
|
|
20
|
-
*
|
|
21
|
-
* `sequence.type`/`trackId`.
|
|
12
|
+
* config declares: {@link expandAssemblySequence}, then the sequence adapter's
|
|
13
|
+
* type guessed from its `uri`.
|
|
22
14
|
*
|
|
23
15
|
* This is the assembly config schema's `preProcessSnapshot`, lifted out so a
|
|
24
16
|
* caller that has to see canonical locations *before* MST builds the tree can
|
|
25
17
|
* run it too. `localFiles` is that caller: it rewrites `{ uri: <a registered
|
|
26
18
|
* name> }` location nodes into blobs, and until this has run the only `uri` in
|
|
27
19
|
* a shorthand assembly is on the assembly itself, where it is not a location
|
|
28
|
-
* node and must not be rewritten as one. Idempotent
|
|
29
|
-
*
|
|
20
|
+
* node and must not be rewritten as one. Idempotent, and returns `snap` itself
|
|
21
|
+
* when there is nothing to expand.
|
|
30
22
|
*/
|
|
31
23
|
export declare function expandAssemblyShorthand<T>(snap: T, pluginManager: PluginManager): T;
|
|
24
|
+
/**
|
|
25
|
+
* Fill in an assembly `sequence.adapter`'s `type` from its `uri` when the type
|
|
26
|
+
* is omitted, so `sequence: { adapter: { uri: 'genome.fa.gz' } }` resolves to a
|
|
27
|
+
* `BgzipFastaAdapter` (and `.fa` → indexed, `.2bit` → `TwoBitAdapter`). Uses the
|
|
28
|
+
* same `Core-guessAdapterForLocation` extension point the "Add track" flow uses,
|
|
29
|
+
* so every host describes a custom genome with just a URL and lets jbrowse-core
|
|
30
|
+
* pick the adapter — no adapter-type table in the Python/R/JS bindings.
|
|
31
|
+
*
|
|
32
|
+
* Only the type comes off the guess: the adapter's own `normalizeSnapshot`
|
|
33
|
+
* expands the `uri` into the location slots it declares, so the shorthand
|
|
34
|
+
* expands to the same thing here as it does when the config names the type.
|
|
35
|
+
* A `uri` matching no sequence adapter is left untouched, and the same object
|
|
36
|
+
* reference comes back when there is nothing to expand, so callers can cheaply
|
|
37
|
+
* skip a rebuild.
|
|
38
|
+
*/
|
|
32
39
|
export declare function expandAssemblySequenceAdapter(sequence: unknown, pluginManager: PluginManager): unknown;
|
|
@@ -1,65 +1,78 @@
|
|
|
1
|
+
import { isPlainObject } from '../util/objectUtils.js';
|
|
1
2
|
import { UNKNOWN } from '../util/tracks.js';
|
|
2
|
-
function
|
|
3
|
-
return
|
|
3
|
+
export function referenceSequenceTrackId(assemblyName) {
|
|
4
|
+
return `${assemblyName}-ReferenceSequenceTrack`;
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
10
|
-
* so every host describes a custom genome with just a URL and lets jbrowse-core
|
|
11
|
-
* pick the adapter — no adapter-type table in the Python/R/JS bindings.
|
|
12
|
-
*
|
|
13
|
-
* The guesser also derives the index locations (`.fai`/`.gzi`) from the uri;
|
|
14
|
-
* explicit adapter fields (e.g. a non-sibling `faiLocation`) are spread on top
|
|
15
|
-
* so they win. A `uri` matching no sequence adapter is left untouched, so a
|
|
16
|
-
* genuinely bad config still surfaces its own downstream error. Returns the same
|
|
17
|
-
* object reference when there is nothing to expand, so callers can cheaply skip
|
|
18
|
-
* a rebuild.
|
|
7
|
+
* The part of {@link expandAssemblyShorthand} that needs no plugin manager, for
|
|
8
|
+
* a reader of raw config JSON: the flat `{ name, uri }` form moves onto
|
|
9
|
+
* `sequence.adapter`, and `sequence.type` and `sequence.trackId` are each
|
|
10
|
+
* filled in when omitted. Returns `snap` itself when there is nothing to do.
|
|
19
11
|
*/
|
|
12
|
+
export function expandAssemblySequence(snap) {
|
|
13
|
+
if (!isPlainObject(snap)) {
|
|
14
|
+
return snap;
|
|
15
|
+
}
|
|
16
|
+
const { uri, baseUri, ...rest } = snap;
|
|
17
|
+
const given = rest.sequence;
|
|
18
|
+
// baseUri, stamped next to `uri` by addRelativeUris, rides down onto the
|
|
19
|
+
// adapter so the sequence resolves against the config's location
|
|
20
|
+
const seq = typeof uri === 'string' &&
|
|
21
|
+
(given === undefined || (isPlainObject(given) && !given.adapter))
|
|
22
|
+
? {
|
|
23
|
+
...(isPlainObject(given) ? given : {}),
|
|
24
|
+
adapter: { uri, ...(baseUri ? { baseUri } : {}) },
|
|
25
|
+
}
|
|
26
|
+
: given;
|
|
27
|
+
if (!isPlainObject(seq) ||
|
|
28
|
+
(seq === snap.sequence && 'type' in seq && 'trackId' in seq)) {
|
|
29
|
+
return snap;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
...rest,
|
|
33
|
+
sequence: {
|
|
34
|
+
type: 'ReferenceSequenceTrack',
|
|
35
|
+
trackId: referenceSequenceTrackId(snap.name),
|
|
36
|
+
...seq,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
20
40
|
/**
|
|
21
41
|
* Expand an assembly snapshot's own shorthands into the `sequence` an assembly
|
|
22
|
-
* config declares:
|
|
23
|
-
*
|
|
24
|
-
* `sequence.type`/`trackId`.
|
|
42
|
+
* config declares: {@link expandAssemblySequence}, then the sequence adapter's
|
|
43
|
+
* type guessed from its `uri`.
|
|
25
44
|
*
|
|
26
45
|
* This is the assembly config schema's `preProcessSnapshot`, lifted out so a
|
|
27
46
|
* caller that has to see canonical locations *before* MST builds the tree can
|
|
28
47
|
* run it too. `localFiles` is that caller: it rewrites `{ uri: <a registered
|
|
29
48
|
* name> }` location nodes into blobs, and until this has run the only `uri` in
|
|
30
49
|
* a shorthand assembly is on the assembly itself, where it is not a location
|
|
31
|
-
* node and must not be rewritten as one. Idempotent
|
|
32
|
-
*
|
|
50
|
+
* node and must not be rewritten as one. Idempotent, and returns `snap` itself
|
|
51
|
+
* when there is nothing to expand.
|
|
33
52
|
*/
|
|
34
53
|
export function expandAssemblyShorthand(snap, pluginManager) {
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
const expanded = expandAssemblySequence(snap);
|
|
55
|
+
if (!isPlainObject(expanded)) {
|
|
56
|
+
return expanded;
|
|
37
57
|
}
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
// assembly by its sequence file alone. baseUri, stamped next to the
|
|
41
|
-
// `uri` key by addRelativeUris (hub/relative configs), rides down onto
|
|
42
|
-
// the adapter so the sequence resolves against the config's location.
|
|
43
|
-
const rawSequence = rest.sequence ??
|
|
44
|
-
(typeof uri === 'string'
|
|
45
|
-
? { adapter: { uri, ...(baseUri ? { baseUri } : {}) } }
|
|
46
|
-
: undefined);
|
|
47
|
-
// infer sequence.adapter.type from its uri when omitted, so a config can
|
|
48
|
-
// give just `sequence: { adapter: { uri: 'genome.fa.gz' } }` and core
|
|
49
|
-
// picks the adapter (Bgzip/Indexed/TwoBit) — no adapter table in hosts
|
|
50
|
-
const seq = expandAssemblySequenceAdapter(rawSequence, pluginManager);
|
|
51
|
-
// then allow sequence.type/trackId to be omitted, since they are always
|
|
52
|
-
// 'ReferenceSequenceTrack' and a name derived from the assembly name
|
|
53
|
-
const sequence = seq && typeof seq === 'object' && !('type' in seq)
|
|
54
|
-
? {
|
|
55
|
-
type: 'ReferenceSequenceTrack',
|
|
56
|
-
trackId: `${name}-ReferenceSequenceTrack`,
|
|
57
|
-
...seq,
|
|
58
|
-
}
|
|
59
|
-
: seq;
|
|
60
|
-
// preserve the identity-unchanged case so nothing rebuilds needlessly
|
|
61
|
-
return (sequence === snap.sequence ? snap : { ...rest, name, sequence });
|
|
58
|
+
const sequence = expandAssemblySequenceAdapter(expanded.sequence, pluginManager);
|
|
59
|
+
return sequence === expanded.sequence ? expanded : { ...expanded, sequence };
|
|
62
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Fill in an assembly `sequence.adapter`'s `type` from its `uri` when the type
|
|
63
|
+
* is omitted, so `sequence: { adapter: { uri: 'genome.fa.gz' } }` resolves to a
|
|
64
|
+
* `BgzipFastaAdapter` (and `.fa` → indexed, `.2bit` → `TwoBitAdapter`). Uses the
|
|
65
|
+
* same `Core-guessAdapterForLocation` extension point the "Add track" flow uses,
|
|
66
|
+
* so every host describes a custom genome with just a URL and lets jbrowse-core
|
|
67
|
+
* pick the adapter — no adapter-type table in the Python/R/JS bindings.
|
|
68
|
+
*
|
|
69
|
+
* Only the type comes off the guess: the adapter's own `normalizeSnapshot`
|
|
70
|
+
* expands the `uri` into the location slots it declares, so the shorthand
|
|
71
|
+
* expands to the same thing here as it does when the config names the type.
|
|
72
|
+
* A `uri` matching no sequence adapter is left untouched, and the same object
|
|
73
|
+
* reference comes back when there is nothing to expand, so callers can cheaply
|
|
74
|
+
* skip a rebuild.
|
|
75
|
+
*/
|
|
63
76
|
export function expandAssemblySequenceAdapter(sequence, pluginManager) {
|
|
64
77
|
const adapter = isPlainObject(sequence) ? sequence.adapter : undefined;
|
|
65
78
|
if (isPlainObject(sequence) &&
|
|
@@ -77,9 +90,25 @@ export function expandAssemblySequenceAdapter(sequence, pluginManager) {
|
|
|
77
90
|
...(typeof baseUri === 'string' ? { baseUri } : {}),
|
|
78
91
|
};
|
|
79
92
|
const guess = guesser(file, undefined);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
if (!guess || guess.type === UNKNOWN) {
|
|
94
|
+
return sequence;
|
|
95
|
+
}
|
|
96
|
+
// the type is the only thing the guess is needed for. The adapter's own
|
|
97
|
+
// normalizeSnapshot expands `uri` and everything riding with it — a 2bit's
|
|
98
|
+
// `chromSizes`, which the guess has no slot for and MST then dropped
|
|
99
|
+
// unannounced — so this is not a second place that knows how a sequence
|
|
100
|
+
// file names its sidecars. An adapter declaring no shorthand keeps the
|
|
101
|
+
// guess's derived locations.
|
|
102
|
+
const normalize = pluginManager.hasAdapterType(guess.type)
|
|
103
|
+
? pluginManager.getAdapterType(guess.type).normalizeSnapshot
|
|
104
|
+
: undefined;
|
|
105
|
+
const shorthand = { ...adapter, type: guess.type };
|
|
106
|
+
const normalized = normalize?.(shorthand) ?? shorthand;
|
|
107
|
+
// `uri` is consumed, and it has to GO: localFiles substitutes a blob into a
|
|
108
|
+
// location node, and an adapter still carrying `uri` reads as one
|
|
109
|
+
const full = normalized === shorthand ? { ...guess, ...extras } : normalized;
|
|
110
|
+
const { uri: _consumed, baseUri: _spent, ...expanded } = full;
|
|
111
|
+
return { ...sequence, adapter: expanded };
|
|
83
112
|
}
|
|
84
113
|
return sequence;
|
|
85
114
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isBlank } from '../util/assemblyConfigUtils.js';
|
|
2
1
|
import { fetchAndMaybeUnzipText } from '../util/fetchAndMaybeUnzip.js';
|
|
3
2
|
import { parseTranslTable } from '../util/geneticCodes.js';
|
|
4
3
|
import { openLocation } from '../util/io/index.js';
|
|
@@ -24,14 +23,12 @@ export function lookupGeneticCodeId(refName, refNameAliases, maps) {
|
|
|
24
23
|
.find(id => id !== undefined) ?? STANDARD_GENETIC_CODE_ID);
|
|
25
24
|
}
|
|
26
25
|
// Loads an optional `refName<TAB>geneticCodeId` TSV (# comments allowed) into a
|
|
27
|
-
// map;
|
|
26
|
+
// map; no location yields {} so the inline geneticCodes slot is the only
|
|
28
27
|
// source. Kept as a plain file read rather than a pluggable adapter because the
|
|
29
28
|
// mapping is trivial and format-fixed.
|
|
30
29
|
export async function getGeneticCodesFromFile({ location, pluginManager, opts, }) {
|
|
31
30
|
const map = {};
|
|
32
|
-
|
|
33
|
-
// yields the refName -> geneticCodeId map
|
|
34
|
-
if (location && !isBlank(location)) {
|
|
31
|
+
if (location) {
|
|
35
32
|
const text = await fetchAndMaybeUnzipText(openLocation(location, pluginManager), opts, 'Downloading genetic codes');
|
|
36
33
|
for (const line of text.split(/\r\n|\r|\n/)) {
|
|
37
34
|
if (line && !line.startsWith('#')) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AnyConfigurationModel } from '../configuration/index.ts';
|
|
1
2
|
import type { Assembly } from './assembly.ts';
|
|
2
3
|
/**
|
|
3
4
|
* The assembly's reference-sequence adapter config as a plain snapshot, or
|
|
@@ -7,3 +8,12 @@ import type { Assembly } from './assembly.ts';
|
|
|
7
8
|
* safe) or undefined (?. handles it).
|
|
8
9
|
*/
|
|
9
10
|
export declare function getSequenceAdapterConfig(assembly?: Pick<Assembly, 'configuration'>): Record<string, unknown> | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* {@link getSequenceAdapterConfig} for a name, canonical or alias, read off
|
|
13
|
+
* the config rather than the built model, so it answers before the model
|
|
14
|
+
* exists and does not report an unknown name the way `assemblyManager.get`
|
|
15
|
+
* does; a track config may name an assembly the session lacks.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getSequenceAdapterConfigByName(assemblyManager: {
|
|
18
|
+
confByName: Map<string, AnyConfigurationModel>;
|
|
19
|
+
}, assemblyName: string): Record<string, unknown> | undefined;
|
|
@@ -10,3 +10,13 @@ export function getSequenceAdapterConfig(assembly) {
|
|
|
10
10
|
const adapter = assembly?.configuration?.sequence?.adapter;
|
|
11
11
|
return adapter ? getSnapshot(adapter) : undefined;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* {@link getSequenceAdapterConfig} for a name, canonical or alias, read off
|
|
15
|
+
* the config rather than the built model, so it answers before the model
|
|
16
|
+
* exists and does not report an unknown name the way `assemblyManager.get`
|
|
17
|
+
* does; a track config may name an assembly the session lacks.
|
|
18
|
+
*/
|
|
19
|
+
export function getSequenceAdapterConfigByName(assemblyManager, assemblyName) {
|
|
20
|
+
const adapter = assemblyManager.confByName.get(assemblyName)?.sequence?.adapter;
|
|
21
|
+
return adapter ? getSnapshot(adapter) : undefined;
|
|
22
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* name -> item for every name an assembly answers to. An assembly's own name
|
|
3
|
+
* beats another assembly's alias, and otherwise the first to claim a name keeps
|
|
4
|
+
* it, so the answer never depends on which array an assembly sits in.
|
|
5
|
+
*/
|
|
6
|
+
export declare function indexAssemblyNames<T>(items: Iterable<T>, namesOf: (item: T) => {
|
|
7
|
+
name: string;
|
|
8
|
+
aliases: readonly string[];
|
|
9
|
+
}): Map<string, T>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* name -> item for every name an assembly answers to. An assembly's own name
|
|
3
|
+
* beats another assembly's alias, and otherwise the first to claim a name keeps
|
|
4
|
+
* it, so the answer never depends on which array an assembly sits in.
|
|
5
|
+
*/
|
|
6
|
+
export function indexAssemblyNames(items, namesOf) {
|
|
7
|
+
const index = new Map();
|
|
8
|
+
const named = Array.from(items, item => ({ item, ...namesOf(item) }));
|
|
9
|
+
for (const { item, name } of named) {
|
|
10
|
+
if (!index.has(name)) {
|
|
11
|
+
index.set(name, item);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
for (const { item, aliases } of named) {
|
|
15
|
+
for (const alias of aliases) {
|
|
16
|
+
if (!index.has(alias)) {
|
|
17
|
+
index.set(alias, item);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return index;
|
|
22
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BaseOptions } from '../data_adapters/BaseAdapter/index.ts';
|
|
2
2
|
import type { Assembly } from './assembly.ts';
|
|
3
3
|
import type { RefNameAliases } from './refNameMaps.ts';
|
|
4
|
-
export type RefNameMapAssembly = Pick<Assembly, 'name' | 'load' | 'error' | 'regions' | 'refNames' | 'refNameAliases' | 'rpcManager' | '
|
|
4
|
+
export type RefNameMapAssembly = Pick<Assembly, 'name' | 'load' | 'error' | 'regions' | 'refNames' | 'refNameAliases' | 'rpcManager' | 'getCanonicalRefName' | 'setRefNameMismatch'>;
|
|
5
5
|
export declare function loadRefNameMap(assembly: RefNameMapAssembly, adapterConfig: unknown, options: BaseOptions): Promise<RefNameAliases>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { adapterConfigCacheKey } from '../data_adapters/dataAdapterCache.js';
|
|
2
2
|
import { updateStatus } from '../util/progress.js';
|
|
3
|
-
import { getSequenceAdapterConfig } from './getSequenceAdapterConfig.js';
|
|
4
3
|
import { checkRefName } from './refNameMaps.js';
|
|
5
4
|
import { detectRefNameMismatch } from './refNameMismatch.js';
|
|
6
5
|
export async function loadRefNameMap(assembly, adapterConfig, options) {
|
|
@@ -12,10 +11,6 @@ export async function loadRefNameMap(assembly, adapterConfig, options) {
|
|
|
12
11
|
// set, so awaiting it is a direct, promise-based alternative to a reactive
|
|
13
12
|
// `when` on those volatiles. It rejects on failure, so no error check follows
|
|
14
13
|
await assembly.load();
|
|
15
|
-
// pass the assembly's sequence adapter config (as a snapshot, since MST
|
|
16
|
-
// objects can't be assigned elsewhere) so BAM/CRAM adapters can cache it for
|
|
17
|
-
// later use when fetching features
|
|
18
|
-
const sequenceAdapter = getSequenceAdapterConfig(assembly);
|
|
19
14
|
// Labelled, because this is the multi-second stall before any RPC's own
|
|
20
15
|
// status appears: `renameRegionsIfNeeded` runs inside `serializeArguments`,
|
|
21
16
|
// so every fetch waits here first, and the byte-granularity progress below
|
|
@@ -26,11 +21,11 @@ export async function loadRefNameMap(assembly, adapterConfig, options) {
|
|
|
26
21
|
const refNames = await updateStatus('Loading', options.statusCallback, () => assembly.rpcManager.call(sessionId, 'CoreGetRefNames', {
|
|
27
22
|
adapterConfig: adapterConfig,
|
|
28
23
|
assemblyName: assembly.name,
|
|
29
|
-
|
|
30
|
-
//
|
|
24
|
+
haplotypes: options.haplotypes,
|
|
25
|
+
// signal intentionally not passed, fixes issues like #2221.
|
|
31
26
|
// alternative fix #2540 was proposed but non-working currently
|
|
32
|
-
|
|
33
|
-
// Forwarded rather than dropped (unlike
|
|
27
|
+
signal: undefined,
|
|
28
|
+
// Forwarded rather than dropped (unlike signal above), because the
|
|
34
29
|
// adapter's index download happens here during refname mapping
|
|
35
30
|
// (getRefNames -> setup) and this is the only place its "Downloading
|
|
36
31
|
// index" progress can surface. For an in-memory adapter it is not an
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BaseOptions } from '../data_adapters/BaseAdapter/index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* A source that reads only the lanes it is asked about answers a different
|
|
4
|
+
* refName set per selection, so each selection loads its own map; the worker
|
|
5
|
+
* keeps each lane's names, so a second selection reads only its new lanes.
|
|
6
|
+
*/
|
|
7
|
+
export declare function refNameMapKey(adapterConf: Record<string, unknown>, options: BaseOptions): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { adapterConfigCacheKey } from '../data_adapters/dataAdapterCache.js';
|
|
2
|
+
/**
|
|
3
|
+
* A source that reads only the lanes it is asked about answers a different
|
|
4
|
+
* refName set per selection, so each selection loads its own map; the worker
|
|
5
|
+
* keeps each lane's names, so a second selection reads only its new lanes.
|
|
6
|
+
*/
|
|
7
|
+
export function refNameMapKey(adapterConf, options) {
|
|
8
|
+
const key = adapterConfigCacheKey(adapterConf);
|
|
9
|
+
return options.haplotypes === undefined
|
|
10
|
+
? key
|
|
11
|
+
: `${key}|${[...options.haplotypes].sort().join(',')}`;
|
|
12
|
+
}
|
package/esm/checkPlugins.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export declare const PLUGIN_STORE_URL = "https://jbrowse.org/plugin-store/v2/plu
|
|
|
5
5
|
export declare function fetchPlugins(): Promise<{
|
|
6
6
|
plugins: JBrowsePlugin[];
|
|
7
7
|
}>;
|
|
8
|
+
/** Drops the cached manifest, so the next read fetches again. For tests. */
|
|
9
|
+
export declare function forgetFetchedPlugins(): void;
|
|
8
10
|
export declare function checkPluginsAgainstStore(pluginsToCheck: PluginDefinition[], storePlugins: {
|
|
9
11
|
plugins: JBrowsePlugin[];
|
|
10
12
|
}): boolean;
|
package/esm/checkPlugins.js
CHANGED
|
@@ -7,18 +7,44 @@ import { isStorePluginDefinition, maybePluginUrl, pluginUrl, } from './pluginDef
|
|
|
7
7
|
// reach PluginLoader with unvetted definitions.
|
|
8
8
|
export const TRUSTED_PLUGIN_URL_PREFIXES = ['https://jbrowse.org/plugins/'];
|
|
9
9
|
// v2 adds per-version JBrowse compatibility ranges + integrity hashes; the v1
|
|
10
|
-
// plugins.json is still served for older clients.
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
// one of them silently ends up on the unhashed v1 list
|
|
14
|
-
//
|
|
10
|
+
// plugins.json is still served for older clients. Read only through
|
|
11
|
+
// `fetchPlugins` below — the gate, the ref resolver and every install surface
|
|
12
|
+
// have to be looking at the same manifest, and a second copy of the fetch is
|
|
13
|
+
// how one of them silently ends up on the unhashed v1 list and then rejects a
|
|
14
|
+
// plugin the store just offered.
|
|
15
15
|
export const PLUGIN_STORE_URL = 'https://jbrowse.org/plugin-store/v2/plugins.json';
|
|
16
|
+
// One request per page, shared by every reader.
|
|
17
|
+
//
|
|
18
|
+
// There are four in a boot that needs them — the config's trust gate, the
|
|
19
|
+
// config's store refs, the session's gate, the session's refs — plus one per
|
|
20
|
+
// time the plugin store widget is opened, since `useFetch` holds no data cache.
|
|
21
|
+
// The HTTP cache does not fold them: the manifest is served
|
|
22
|
+
// `cache-control: no-cache, must-revalidate`, so each is at least a
|
|
23
|
+
// revalidation round trip, and concurrent ones do not dedupe at all.
|
|
24
|
+
//
|
|
25
|
+
// Held for the life of the page rather than for a window. A manifest that
|
|
26
|
+
// changes mid-session would only matter to a store listing the user is looking
|
|
27
|
+
// at, and an install from a stale row still resolves against the version the
|
|
28
|
+
// row named.
|
|
29
|
+
let cached;
|
|
16
30
|
export async function fetchPlugins() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
31
|
+
// Rethrown to every caller and then forgotten, so a store that was down when
|
|
32
|
+
// the config loaded is retried when the widget opens.
|
|
33
|
+
cached ??= (async () => {
|
|
34
|
+
const response = await fetch(PLUGIN_STORE_URL);
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
throw new Error(`HTTP ${response.status} ${response.statusText} fetching plugins`);
|
|
37
|
+
}
|
|
38
|
+
return response.json();
|
|
39
|
+
})().catch((error) => {
|
|
40
|
+
cached = undefined;
|
|
41
|
+
throw error;
|
|
42
|
+
});
|
|
43
|
+
return cached;
|
|
44
|
+
}
|
|
45
|
+
/** Drops the cached manifest, so the next read fetches again. For tests. */
|
|
46
|
+
export function forgetFetchedPlugins() {
|
|
47
|
+
cached = undefined;
|
|
22
48
|
}
|
|
23
49
|
function isTrustedUrl(url) {
|
|
24
50
|
return TRUSTED_PLUGIN_URL_PREFIXES.some(prefix => url.startsWith(prefix));
|
|
@@ -47,13 +73,8 @@ function isTrustedDefinition(def) {
|
|
|
47
73
|
// version-pinned build. A config plugin is "in the store" if its url is any of
|
|
48
74
|
// these.
|
|
49
75
|
function storePluginUrls(p) {
|
|
50
|
-
const top = [p.url, p.umdUrl, p.esmUrl
|
|
51
|
-
const versioned = (p.versions ?? []).flatMap(v => [
|
|
52
|
-
v.url,
|
|
53
|
-
v.umdUrl,
|
|
54
|
-
v.esmUrl,
|
|
55
|
-
v.cjsUrl,
|
|
56
|
-
]);
|
|
76
|
+
const top = [p.url, p.umdUrl, p.esmUrl];
|
|
77
|
+
const versioned = (p.versions ?? []).flatMap(v => [v.url, v.umdUrl, v.esmUrl]);
|
|
57
78
|
return [...top, ...versioned].filter(url => url !== undefined);
|
|
58
79
|
}
|
|
59
80
|
export function checkPluginsAgainstStore(pluginsToCheck, storePlugins) {
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BAM's `index`, which is the tabix pair over a different enumeration: BAI/CSI
|
|
3
|
+
* rather than TBI/CSI, with its own default and its own placeholder name.
|
|
4
|
+
* Folding the two would mean a slot whose vocabulary depends on its adapter,
|
|
5
|
+
* which is why `tabixIndexFields` says BAM is deliberately not there.
|
|
6
|
+
*
|
|
7
|
+
* Only the enumeration differs. `fillIndexType` is the same function, since a
|
|
8
|
+
* `.csi` names itself the same way whichever sibling format it stands in for.
|
|
9
|
+
*/
|
|
10
|
+
export declare const bamIndexFields: {
|
|
11
|
+
readonly indexType: {
|
|
12
|
+
readonly model: import("@jbrowse/mobx-state-tree").ISimpleType<"BAI" | "CSI">;
|
|
13
|
+
readonly type: 'stringEnum';
|
|
14
|
+
readonly defaultValue: 'BAI';
|
|
15
|
+
readonly description: '`BAI` is the usual `samtools index` output. `CSI` is required for a reference longer than 512 Mb, which BAI cannot address. Derived from the index file name where the config names a `.csi` and leaves this unset.';
|
|
16
|
+
};
|
|
17
|
+
readonly location: {
|
|
18
|
+
readonly type: 'fileLocation';
|
|
19
|
+
readonly defaultValue: {
|
|
20
|
+
readonly uri: '/path/to/my.bam.bai';
|
|
21
|
+
readonly locationType: 'UriLocation';
|
|
22
|
+
};
|
|
23
|
+
readonly description: 'location of the index. Only needed when it is not named `<file>.bam.bai` (or `.bam.csi`), the names the `uri` shorthand assumes.';
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* #config BamIndex
|
|
28
|
+
* #category adapter
|
|
29
|
+
* Where a BAM's index is and which of the two kinds it is. `indexType` is
|
|
30
|
+
* derived from the index file's own name where the config names a `.csi` and
|
|
31
|
+
* leaves it unset, so the usual config states neither — the `uri` shorthand
|
|
32
|
+
* derives both, and `csi: true` beside it switches the pair together. Spell
|
|
33
|
+
* `location` out for an index that does not sit beside its BAM; a `.csi` named
|
|
34
|
+
* there is read as a CSI without `indexType` as well.
|
|
35
|
+
*/
|
|
36
|
+
export declare function bamIndexSchema(): import("./configurationSchema.ts").ConfigurationSchemaType<{
|
|
37
|
+
readonly indexType: {
|
|
38
|
+
type: "stringEnum";
|
|
39
|
+
} & {
|
|
40
|
+
model: import("@jbrowse/mobx-state-tree").ISimpleType<"BAI" | "CSI">;
|
|
41
|
+
} & {
|
|
42
|
+
defaultValue: string;
|
|
43
|
+
};
|
|
44
|
+
readonly location: {
|
|
45
|
+
type: "fileLocation";
|
|
46
|
+
} & {
|
|
47
|
+
defaultValue: unknown;
|
|
48
|
+
};
|
|
49
|
+
}, import("./configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined, undefined, import("./requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { types } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
import { ConfigurationSchema } from './configurationSchema.js';
|
|
3
|
+
import { fillIndexType } from './indexType.js';
|
|
4
|
+
/**
|
|
5
|
+
* BAM's `index`, which is the tabix pair over a different enumeration: BAI/CSI
|
|
6
|
+
* rather than TBI/CSI, with its own default and its own placeholder name.
|
|
7
|
+
* Folding the two would mean a slot whose vocabulary depends on its adapter,
|
|
8
|
+
* which is why `tabixIndexFields` says BAM is deliberately not there.
|
|
9
|
+
*
|
|
10
|
+
* Only the enumeration differs. `fillIndexType` is the same function, since a
|
|
11
|
+
* `.csi` names itself the same way whichever sibling format it stands in for.
|
|
12
|
+
*/
|
|
13
|
+
export const bamIndexFields = {
|
|
14
|
+
indexType: {
|
|
15
|
+
model: types.enumeration('IndexType', ['BAI', 'CSI']),
|
|
16
|
+
type: 'stringEnum',
|
|
17
|
+
defaultValue: 'BAI',
|
|
18
|
+
description: '`BAI` is the usual `samtools index` output. `CSI` is required for a reference longer than 512 Mb, which BAI cannot address. Derived from the index file name where the config names a `.csi` and leaves this unset.',
|
|
19
|
+
},
|
|
20
|
+
location: {
|
|
21
|
+
type: 'fileLocation',
|
|
22
|
+
defaultValue: {
|
|
23
|
+
uri: '/path/to/my.bam.bai',
|
|
24
|
+
locationType: 'UriLocation',
|
|
25
|
+
},
|
|
26
|
+
description: 'location of the index. Only needed when it is not named `<file>.bam.bai` (or `.bam.csi`), the names the `uri` shorthand assumes.',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* #config BamIndex
|
|
31
|
+
* #category adapter
|
|
32
|
+
* Where a BAM's index is and which of the two kinds it is. `indexType` is
|
|
33
|
+
* derived from the index file's own name where the config names a `.csi` and
|
|
34
|
+
* leaves it unset, so the usual config states neither — the `uri` shorthand
|
|
35
|
+
* derives both, and `csi: true` beside it switches the pair together. Spell
|
|
36
|
+
* `location` out for an index that does not sit beside its BAM; a `.csi` named
|
|
37
|
+
* there is read as a CSI without `indexType` as well.
|
|
38
|
+
*/
|
|
39
|
+
export function bamIndexSchema() {
|
|
40
|
+
return ConfigurationSchema('BamIndex', { ...bamIndexFields }, { preProcessSnapshot: fillIndexType });
|
|
41
|
+
}
|