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