@jbrowse/core 4.3.0 → 5.0.0-beta.2
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 +822 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -10
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +62 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +18 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +50 -63
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -59
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
- package/esm/BaseFeatureWidget/configSchema.js +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
- package/esm/BaseFeatureWidget/formatDetails.js +103 -0
- package/esm/BaseFeatureWidget/index.d.ts +3 -1
- package/esm/BaseFeatureWidget/index.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
- package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
- package/esm/BaseFeatureWidget/types.d.ts +4 -3
- package/esm/BaseFeatureWidget/util.d.ts +4 -29
- package/esm/BaseFeatureWidget/util.js +20 -84
- package/esm/CorePlugin.js +11 -6
- package/esm/PhasedScheduler.d.ts +4 -2
- package/esm/PhasedScheduler.js +18 -2
- package/esm/Plugin.d.ts +6 -1
- package/esm/Plugin.js +7 -0
- package/esm/PluginLoader.d.ts +41 -40
- package/esm/PluginLoader.js +206 -78
- package/esm/PluginManager.d.ts +421 -55
- package/esm/PluginManager.js +461 -89
- package/esm/ReExports/BaseFeatureDetails.js +7 -6
- package/esm/ReExports/MuiDataGridReExports.d.ts +2 -2
- package/esm/ReExports/MuiDataGridReExports.js +58 -130
- package/esm/ReExports/MuiReExports.d.ts +3 -134
- package/esm/ReExports/MuiReExports.js +43 -16
- package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
- package/esm/ReExports/MuiStylesReExports.js +55 -0
- package/esm/ReExports/index.js +1 -1
- package/esm/ReExports/lazify.d.ts +2 -2
- package/esm/ReExports/lazify.js +16 -3
- package/esm/ReExports/list.js +54 -229
- package/esm/ReExports/modules.js +62 -93
- package/esm/ReExports/muiComponentNames.d.ts +18 -0
- package/esm/ReExports/muiComponentNames.js +130 -0
- package/esm/ReExports/publicUtil.d.ts +1 -0
- package/esm/ReExports/publicUtil.js +28 -0
- package/esm/ReExports/registry.d.ts +2 -0
- package/esm/ReExports/registry.js +28 -0
- package/esm/ReExports/sharedModules.d.ts +96 -0
- package/esm/ReExports/sharedModules.js +59 -0
- package/esm/ReExports/uiStub.d.ts +1 -0
- package/esm/ReExports/uiStub.js +13 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +10 -0
- package/esm/TextSearch/BaseResults.d.ts +20 -21
- package/esm/TextSearch/BaseResults.js +8 -33
- package/esm/TextSearch/TextSearchManager.d.ts +14 -34
- package/esm/TextSearch/TextSearchManager.js +87 -34
- package/esm/assemblyManager/assembly.d.ts +307 -34
- package/esm/assemblyManager/assembly.js +551 -262
- package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
- package/esm/assemblyManager/assemblyAdapters.js +18 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
- package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
- package/esm/assemblyManager/assemblyManager.d.ts +711 -303
- package/esm/assemblyManager/assemblyManager.js +351 -46
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
- package/esm/assemblyManager/geneticCodes.d.ts +21 -0
- package/esm/assemblyManager/geneticCodes.js +47 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
- package/esm/assemblyManager/index.d.ts +1 -1
- package/esm/assemblyManager/index.js +2 -2
- package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
- package/esm/assemblyManager/loadRefNameMap.js +80 -0
- package/esm/assemblyManager/refNameColors.d.ts +1 -0
- package/esm/assemblyManager/refNameColors.js +32 -0
- package/esm/assemblyManager/refNameMaps.d.ts +26 -0
- package/esm/assemblyManager/refNameMaps.js +87 -0
- package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
- package/esm/assemblyManager/refNameMismatch.js +66 -0
- package/esm/checkPlugins.d.ts +11 -0
- package/esm/checkPlugins.js +77 -0
- package/esm/configuration/configurationSchema.d.ts +122 -20
- package/esm/configuration/configurationSchema.js +374 -140
- package/esm/configuration/configurationSlot.d.ts +283 -30
- package/esm/configuration/configurationSlot.js +205 -226
- package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
- package/esm/configuration/formatAboutConfigSchema.js +58 -0
- package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
- package/esm/configuration/formatDetailsConfigSchema.js +90 -0
- package/esm/configuration/fullConfSnapshot.d.ts +28 -0
- package/esm/configuration/fullConfSnapshot.js +66 -0
- package/esm/configuration/getConf.d.ts +88 -0
- package/esm/configuration/getConf.js +74 -0
- package/esm/configuration/index.d.ts +19 -3
- package/esm/configuration/index.js +19 -2
- package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
- package/esm/configuration/mergeFormatCallbacks.js +24 -0
- package/esm/configuration/promotableDefaults.d.ts +199 -0
- package/esm/configuration/promotableDefaults.js +332 -0
- package/esm/configuration/promotablePin.d.ts +55 -0
- package/esm/configuration/promotableResolve.d.ts +108 -0
- package/esm/configuration/promotableResolve.js +117 -0
- package/esm/configuration/promotableSlots.d.ts +12 -0
- package/esm/configuration/promotableSlots.js +45 -0
- package/esm/configuration/readConfObject.d.ts +56 -0
- package/esm/configuration/readConfObject.js +161 -0
- package/esm/configuration/schemaRegistry.d.ts +35 -0
- package/esm/configuration/schemaRegistry.js +50 -0
- package/esm/configuration/schemaTypes.d.ts +23 -0
- package/esm/configuration/schemaTypes.js +94 -0
- package/esm/configuration/slotFacade.d.ts +82 -0
- package/esm/configuration/slotFacade.js +89 -0
- package/esm/configuration/slotShape.d.ts +12 -0
- package/esm/configuration/slotShape.js +84 -0
- package/esm/configuration/slotValueUtils.d.ts +17 -0
- package/esm/configuration/slotValueUtils.js +25 -0
- package/esm/configuration/tabixIndexFields.d.ts +44 -0
- package/esm/configuration/tabixIndexFields.js +45 -0
- package/esm/configuration/tabixShorthand.d.ts +34 -0
- package/esm/configuration/tabixShorthand.js +45 -0
- package/esm/configuration/types.d.ts +170 -7
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +132 -7
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +136 -25
- package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
- package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
- package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +29 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +17 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
- package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +7 -4
- package/esm/data_adapters/BaseAdapter/index.js +6 -5
- package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
- package/esm/data_adapters/BaseAdapter/stats.js +89 -24
- package/esm/data_adapters/BaseAdapter/types.d.ts +11 -8
- package/esm/data_adapters/BaseAdapter/types.js +1 -0
- package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
- package/esm/data_adapters/BaseAdapter/util.js +14 -3
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
- package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
- package/esm/data_adapters/CytobandAdapter/index.js +3 -3
- package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
- package/esm/data_adapters/adapterSessionRefcount.js +96 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +35 -1
- package/esm/data_adapters/dataAdapterCache.js +62 -22
- package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
- package/esm/data_adapters/getFeatureAdapter.js +27 -0
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
- package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
- package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
- package/esm/pluggableElementTypes/AdapterType.js +44 -5
- package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
- package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
- package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
- package/esm/pluggableElementTypes/ConnectionType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +19 -10
- package/esm/pluggableElementTypes/DisplayType.js +53 -5
- package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
- package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
- package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
- package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +3 -3
- package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
- package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
- package/esm/pluggableElementTypes/TrackType.js +1 -1
- package/esm/pluggableElementTypes/ViewType.d.ts +27 -3
- package/esm/pluggableElementTypes/ViewType.js +84 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
- package/esm/pluggableElementTypes/WidgetType.js +1 -1
- package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
- package/esm/pluggableElementTypes/addMenuItems.js +82 -0
- package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
- package/esm/pluggableElementTypes/extendElementType.js +73 -0
- package/esm/pluggableElementTypes/index.d.ts +7 -7
- package/esm/pluggableElementTypes/index.js +24 -14
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +646 -84
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +241 -60
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +216 -35
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +365 -83
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +216 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +150 -16
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +177 -0
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
- package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
- package/esm/pluggableElementTypes/models/index.d.ts +6 -3
- package/esm/pluggableElementTypes/models/index.js +10 -8
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
- package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
- package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
- package/esm/pluginDefinitions.d.ts +198 -0
- package/esm/pluginDefinitions.js +220 -0
- package/esm/rpc/BaseRpcDriver.d.ts +27 -35
- package/esm/rpc/BaseRpcDriver.js +74 -107
- package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
- package/esm/rpc/MainThreadRpcDriver.js +18 -29
- package/esm/rpc/RpcClient.d.ts +38 -0
- package/esm/rpc/RpcClient.js +154 -0
- package/esm/rpc/RpcManager.d.ts +116 -27
- package/esm/rpc/RpcManager.js +177 -50
- package/esm/rpc/RpcRegistry.d.ts +275 -0
- package/esm/rpc/RpcRegistry.js +1 -0
- package/esm/rpc/RpcServer.d.ts +41 -0
- package/esm/rpc/RpcServer.js +235 -0
- package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
- package/esm/rpc/WebWorkerRpcDriver.js +312 -27
- package/esm/rpc/byteBudget.d.ts +58 -0
- package/esm/rpc/byteBudget.js +50 -0
- package/esm/rpc/configSchema.d.ts +27 -5
- package/esm/rpc/configSchema.js +40 -16
- package/esm/rpc/coreRpcMethods.d.ts +3 -5
- package/esm/rpc/coreRpcMethods.js +10 -12
- package/esm/rpc/explainTransferError.d.ts +35 -0
- package/esm/rpc/explainTransferError.js +158 -0
- package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
- package/esm/rpc/methods/CoreFreeResources.js +17 -6
- package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
- package/esm/rpc/methods/CoreGetExportData.js +26 -15
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
- package/esm/rpc/methods/CoreGetFeatures.js +15 -17
- package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
- package/esm/rpc/methods/CoreGetInfo.js +12 -0
- package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
- package/esm/rpc/methods/CoreGetMetadata.js +6 -9
- package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
- package/esm/rpc/methods/CoreGetRefNames.js +24 -13
- package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
- package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
- package/esm/rpc/methods/CoreGetRegions.js +6 -9
- package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
- package/esm/rpc/methods/CoreGetSequence.js +12 -13
- package/esm/rpc/serializeError/index.d.ts +9 -0
- package/esm/rpc/serializeError/index.js +86 -0
- package/esm/svg/SvgExport.d.ts +30 -0
- package/esm/svg/SvgExport.js +53 -0
- package/esm/svg/constants.d.ts +1 -0
- package/esm/svg/constants.js +5 -0
- package/esm/svg/saveSvgAsImage.d.ts +6 -0
- package/esm/svg/saveSvgAsImage.js +90 -0
- package/esm/svg/svgId.d.ts +42 -0
- package/esm/svg/svgId.js +84 -0
- package/esm/svg/svgReady.d.ts +137 -0
- package/esm/svg/svgReady.js +164 -0
- package/esm/svg/trackNames.d.ts +27 -0
- package/esm/svg/trackNames.js +31 -0
- package/esm/svg/wrapSvgExport.d.ts +12 -0
- package/esm/svg/wrapSvgExport.js +78 -0
- package/esm/ui/ActionLink.d.ts +7 -0
- package/esm/ui/ActionLink.js +9 -0
- package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
- package/esm/ui/AddCustomPluginDialog.js +61 -0
- package/esm/ui/AddGenomePane.d.ts +8 -0
- package/esm/ui/AddGenomePane.js +228 -0
- package/esm/ui/AdvancedOptions.d.ts +6 -0
- package/esm/ui/AdvancedOptions.js +17 -0
- package/esm/ui/AppLogo.d.ts +1 -1
- package/esm/ui/AppLogo.js +2 -2
- package/esm/ui/AssemblySelector.d.ts +5 -8
- package/esm/ui/AssemblySelector.js +8 -26
- package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
- package/esm/ui/BaseExportSvgDialog.js +84 -0
- package/esm/ui/BaseTooltip.d.ts +14 -3
- package/esm/ui/BaseTooltip.js +151 -34
- package/esm/ui/CascadingMenu.d.ts +9 -18
- package/esm/ui/CascadingMenu.js +390 -41
- package/esm/ui/CascadingMenuButton.d.ts +9 -11
- package/esm/ui/CascadingMenuButton.js +36 -18
- package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -5
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
- package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
- package/esm/ui/ColorPicker.d.ts +6 -9
- package/esm/ui/ColorPicker.js +36 -39
- package/esm/ui/ConfirmDialog.d.ts +2 -9
- package/esm/ui/ConfirmDialog.js +6 -9
- package/esm/ui/ContextMenu.d.ts +50 -0
- package/esm/ui/ContextMenu.js +55 -0
- package/esm/ui/CopyToClipboardButton.d.ts +10 -0
- package/esm/ui/CopyToClipboardButton.js +14 -0
- package/esm/ui/Crosshairs.d.ts +10 -0
- package/esm/ui/Crosshairs.js +15 -0
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
- package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
- package/esm/ui/DataGridFlexContainer.d.ts +9 -2
- package/esm/ui/DataGridFlexContainer.js +4 -3
- package/esm/ui/Dialog.d.ts +5 -2
- package/esm/ui/Dialog.js +35 -27
- package/esm/ui/DraggableDialog.d.ts +3 -3
- package/esm/ui/DraggableDialog.js +50 -12
- package/esm/ui/DropDownMenu.d.ts +4 -2
- package/esm/ui/DropDownMenu.js +4 -4
- package/esm/ui/EditableTypography.d.ts +3 -1
- package/esm/ui/EditableTypography.js +34 -26
- package/esm/ui/ErrorActions.d.ts +24 -0
- package/esm/ui/ErrorActions.js +20 -0
- package/esm/ui/ErrorBanner.d.ts +7 -0
- package/esm/ui/ErrorBanner.js +35 -0
- package/esm/ui/ErrorBar.d.ts +6 -0
- package/esm/ui/ErrorBar.js +35 -0
- package/esm/ui/ErrorBoundary.d.ts +29 -5
- package/esm/ui/ErrorBoundary.js +32 -2
- package/esm/ui/ErrorMessage.d.ts +2 -4
- package/esm/ui/ErrorMessage.js +17 -52
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceContents.js +3 -3
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +57 -96
- package/esm/ui/ErrorOverlay.d.ts +8 -0
- package/esm/ui/ErrorOverlay.js +5 -0
- package/esm/ui/ExportSvgDialog.d.ts +7 -0
- package/esm/ui/ExportSvgDialog.js +9 -0
- package/esm/ui/ExternalLink.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.d.ts +1 -1
- package/esm/ui/FactoryResetDialog.js +6 -15
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -5
- package/esm/ui/FileDropZone.d.ts +25 -0
- package/esm/ui/FileDropZone.js +128 -0
- package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
- package/esm/ui/FileSelector/FileSelector.js +59 -30
- package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
- package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
- package/esm/ui/FileSelector/LocationInput.js +8 -12
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
- package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
- package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
- package/esm/ui/FileSelector/UrlChooser.js +26 -2
- package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
- package/esm/ui/FileSelector/emptySourceType.js +14 -0
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +383 -71
- package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
- package/esm/ui/FileSelector/util.d.ts +58 -3
- package/esm/ui/FileSelector/util.js +128 -11
- package/esm/ui/GpuFallbackButton.d.ts +12 -0
- package/esm/ui/GpuFallbackButton.js +20 -0
- package/esm/ui/HoverMenu.d.ts +12 -3
- package/esm/ui/HoverMenu.js +31 -9
- package/esm/ui/HoverTooltip.d.ts +27 -0
- package/esm/ui/HoverTooltip.js +24 -0
- package/esm/ui/Icons.d.ts +6 -4
- package/esm/ui/Icons.js +9 -0
- package/esm/ui/InfoDialog.d.ts +7 -0
- package/esm/ui/InfoDialog.js +16 -0
- package/esm/ui/InlineMenuControls.d.ts +6 -0
- package/esm/ui/InlineMenuControls.js +17 -0
- package/esm/ui/JexlFilterDialog.d.ts +23 -0
- package/esm/ui/JexlFilterDialog.js +94 -0
- package/esm/ui/LabeledCheckbox.d.ts +9 -0
- package/esm/ui/LabeledCheckbox.js +7 -0
- package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
- package/esm/ui/LegendSwatchGlyph.js +25 -0
- package/esm/ui/LoadingDots.d.ts +1 -0
- package/esm/ui/LoadingDots.js +30 -0
- package/esm/ui/LoadingEllipses.d.ts +17 -1
- package/esm/ui/LoadingEllipses.js +20 -29
- package/esm/ui/LoadingOverlay.d.ts +23 -0
- package/esm/ui/LoadingOverlay.js +137 -0
- package/esm/ui/LoadingProgress.d.ts +16 -0
- package/esm/ui/LoadingProgress.js +16 -0
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +23 -24
- package/esm/ui/Menu.js +1 -1
- package/esm/ui/MenuItemChevron.d.ts +3 -0
- package/esm/ui/MenuItemChevron.js +19 -0
- package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
- package/esm/ui/MenuItemEndDecoration.js +28 -0
- package/esm/ui/MenuItemTrailing.d.ts +12 -0
- package/esm/ui/MenuItemTrailing.js +42 -0
- package/esm/ui/MenuTypes.d.ts +134 -5
- package/esm/ui/MenuTypes.js +16 -1
- package/esm/ui/MonospaceTextField.d.ts +9 -0
- package/esm/ui/MonospaceTextField.js +37 -0
- package/esm/ui/NumberTextField.d.ts +31 -0
- package/esm/ui/NumberTextField.js +33 -0
- package/esm/ui/PaletteContext.d.ts +92 -0
- package/esm/ui/PaletteContext.js +133 -0
- package/esm/ui/PinAdornment.d.ts +5 -0
- package/esm/ui/PinAdornment.js +85 -0
- package/esm/ui/PluggableComponent.d.ts +10 -0
- package/esm/ui/PluggableComponent.js +19 -0
- package/esm/ui/PluggableComponents.d.ts +29 -0
- package/esm/ui/PluggableComponents.js +28 -0
- package/esm/ui/PluggableElements.d.ts +23 -0
- package/esm/ui/PluggableElements.js +24 -0
- package/esm/ui/PluginStoreCard.d.ts +17 -0
- package/esm/ui/PluginStoreCard.js +45 -0
- package/esm/ui/PopoverPicker.d.ts +6 -0
- package/esm/ui/PopoverPicker.js +25 -0
- package/esm/ui/PrerenderedCanvas.d.ts +1 -1
- package/esm/ui/PrerenderedCanvas.js +5 -4
- package/esm/ui/ProgressChip.d.ts +37 -0
- package/esm/ui/ProgressChip.js +66 -0
- package/esm/ui/RedErrorMessageBox.d.ts +1 -1
- package/esm/ui/RedErrorMessageBox.js +9 -3
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +22 -0
- package/esm/ui/RefNameAutocomplete/index.js +78 -0
- package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
- package/esm/ui/RefNameAutocomplete/util.js +168 -0
- package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
- package/esm/ui/ReplaceCurrentViewButton.js +22 -0
- package/esm/ui/ResizeHandle.d.ts +13 -7
- package/esm/ui/ResizeHandle.js +42 -55
- package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
- package/esm/ui/ReturnToImportFormDialog.js +7 -9
- package/esm/ui/SanitizedHTML.d.ts +6 -1
- package/esm/ui/SanitizedHTML.js +7 -47
- package/esm/ui/ScrollEdgeShadow.d.ts +44 -0
- package/esm/ui/ScrollEdgeShadow.js +98 -0
- package/esm/ui/ScrollZoomToggle.d.ts +38 -0
- package/esm/ui/ScrollZoomToggle.js +92 -0
- package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
- package/esm/ui/SequenceAdapterInputs.js +30 -0
- package/esm/ui/SettingsChangesTable.d.ts +14 -0
- package/esm/ui/SettingsChangesTable.js +49 -0
- package/esm/ui/ShareLinkField.d.ts +6 -0
- package/esm/ui/ShareLinkField.js +42 -0
- package/esm/ui/SingleSlider.d.ts +8 -0
- package/esm/ui/SingleSlider.js +11 -0
- package/esm/ui/SizeSliderRow.d.ts +16 -0
- package/esm/ui/SizeSliderRow.js +50 -0
- package/esm/ui/SliderTooltip.d.ts +2 -0
- package/esm/ui/SliderTooltip.js +17 -0
- package/esm/ui/Snackbar.d.ts +4 -2
- package/esm/ui/Snackbar.js +11 -8
- package/esm/ui/SnackbarContents.d.ts +1 -1
- package/esm/ui/SnackbarContents.js +21 -3
- package/esm/ui/SnackbarModel.d.ts +40 -0
- package/esm/ui/SnackbarModel.js +43 -11
- package/esm/ui/StackTraceButton.d.ts +5 -0
- package/esm/ui/StackTraceButton.js +16 -0
- package/esm/ui/StatusProgressBar.d.ts +37 -0
- package/esm/ui/StatusProgressBar.js +76 -0
- package/esm/ui/SubmitDialog.d.ts +6 -0
- package/esm/ui/SubmitDialog.js +9 -0
- package/esm/ui/SubmitForm.d.ts +23 -0
- package/esm/ui/SubmitForm.js +23 -0
- package/esm/ui/SvgColorLegend.d.ts +13 -0
- package/esm/ui/SvgColorLegend.js +65 -0
- package/esm/ui/SvgGradientLegend.d.ts +26 -0
- package/esm/ui/SvgGradientLegend.js +26 -0
- package/esm/ui/TagTextField.d.ts +40 -0
- package/esm/ui/TagTextField.js +32 -0
- package/esm/ui/VerticalScrollbar.d.ts +45 -0
- package/esm/ui/VerticalScrollbar.js +158 -0
- package/esm/ui/ViewLoadingScreen.d.ts +24 -0
- package/esm/ui/ViewLoadingScreen.js +76 -0
- package/esm/ui/addExtensionElement.d.ts +18 -0
- package/esm/ui/addExtensionElement.js +23 -0
- package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
- package/esm/ui/buildExtraTrackMenuItems.js +14 -0
- package/esm/ui/colorSwatchStyle.d.ts +9 -0
- package/esm/ui/colorSwatchStyle.js +11 -0
- package/esm/ui/colors.d.ts +61 -8
- package/esm/ui/colors.js +135 -1
- package/esm/ui/extensionSelectors.d.ts +38 -0
- package/esm/ui/extensionSelectors.js +49 -0
- package/esm/ui/filterMenuItems.d.ts +112 -0
- package/esm/ui/filterMenuItems.js +86 -0
- package/esm/ui/formatErrorStack.d.ts +1 -0
- package/esm/ui/formatErrorStack.js +56 -0
- package/esm/ui/gpuFallback.d.ts +33 -0
- package/esm/ui/gpuFallback.js +39 -0
- package/esm/ui/highlightChipReveal.d.ts +32 -0
- package/esm/ui/highlightChipReveal.js +39 -0
- package/esm/ui/hoverBoxStyle.d.ts +11 -0
- package/esm/ui/hoverBoxStyle.js +13 -0
- package/esm/ui/index.d.ts +76 -4
- package/esm/ui/index.js +90 -19
- package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
- package/esm/ui/inlineMenuRowWidth.js +8 -0
- package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
- package/esm/ui/launchTargetsMenuItem.js +24 -0
- package/esm/ui/launchViewMenu.d.ts +4 -0
- package/esm/ui/launchViewMenu.js +42 -0
- package/esm/ui/legendMenuItem.d.ts +38 -0
- package/esm/ui/legendMenuItem.js +44 -0
- package/esm/ui/legendSpec.d.ts +62 -0
- package/esm/ui/legendSpec.js +78 -0
- package/esm/ui/loadingDotKeyframes.d.ts +18 -0
- package/esm/ui/loadingDotKeyframes.js +17 -0
- package/esm/ui/makeSizeMenu.d.ts +30 -0
- package/esm/ui/makeSizeMenu.js +82 -0
- package/esm/ui/mapStackTrace.d.ts +8 -0
- package/esm/ui/mapStackTrace.js +108 -0
- package/esm/ui/measureLegendText.d.ts +1 -0
- package/esm/ui/measureLegendText.js +8 -0
- package/esm/ui/menuItemAdornment.d.ts +33 -0
- package/esm/ui/menuItemAdornment.js +50 -0
- package/esm/ui/menuItems.d.ts +28 -0
- package/esm/ui/menuItems.js +26 -0
- package/esm/ui/menuLabels.d.ts +41 -0
- package/esm/ui/menuLabels.js +43 -0
- package/esm/ui/multiTrackMenuItems.d.ts +19 -0
- package/esm/ui/multiTrackMenuItems.js +15 -0
- package/esm/ui/palette.d.ts +559 -0
- package/esm/ui/palette.js +746 -0
- package/esm/ui/parseError.d.ts +4 -0
- package/esm/ui/parseError.js +18 -0
- package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
- package/esm/ui/persistentScrollbarStyle.js +53 -0
- package/esm/ui/promotableMenuItems.d.ts +19 -0
- package/esm/ui/promotableMenuItems.js +91 -0
- package/esm/ui/promotablePinCoverage.d.ts +44 -0
- package/esm/ui/promotablePinCoverage.js +88 -0
- package/esm/ui/radioSubMenu.d.ts +33 -0
- package/esm/ui/radioSubMenu.js +32 -0
- package/esm/ui/react-colorful.js +5 -1
- package/esm/ui/replaceViewAction.d.ts +31 -0
- package/esm/ui/replaceViewAction.js +39 -0
- package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
- package/esm/ui/rewriteExternalAnchors.js +8 -0
- package/esm/ui/scrollZoomLabels.d.ts +17 -0
- package/esm/ui/scrollZoomLabels.js +22 -0
- package/esm/ui/showSubMenu.d.ts +19 -0
- package/esm/ui/showSubMenu.js +30 -0
- package/esm/ui/sliderScale.d.ts +6 -0
- package/esm/ui/sliderScale.js +30 -0
- package/esm/ui/statusProgressKeyframes.d.ts +6 -0
- package/esm/ui/statusProgressKeyframes.js +14 -0
- package/esm/ui/stripStackTraceMessage.d.ts +1 -0
- package/esm/ui/stripStackTraceMessage.js +9 -0
- package/esm/ui/styleTheme.d.ts +158 -0
- package/esm/ui/styleTheme.js +115 -0
- package/esm/ui/submenuAim.d.ts +30 -0
- package/esm/ui/submenuAim.js +37 -0
- package/esm/ui/theme.d.ts +343 -29
- package/esm/ui/theme.js +258 -342
- package/esm/ui/toggleMenuItems.d.ts +42 -0
- package/esm/ui/toggleMenuItems.js +60 -0
- package/esm/ui/useAssemblySelection.d.ts +153 -0
- package/esm/ui/useAssemblySelection.js +54 -0
- package/esm/ui/useCoalescedPointer.d.ts +36 -0
- package/esm/ui/useCoalescedPointer.js +60 -0
- package/esm/ui/useCopyToClipboard.d.ts +15 -0
- package/esm/ui/useCopyToClipboard.js +41 -0
- package/esm/ui/useExportSvgPreference.d.ts +1 -0
- package/esm/ui/useExportSvgPreference.js +4 -0
- package/esm/ui/useMouseTracking.d.ts +71 -0
- package/esm/ui/useMouseTracking.js +179 -0
- package/esm/ui/useRecentLocations.d.ts +28 -0
- package/esm/ui/useRecentLocations.js +31 -0
- package/esm/ui/wrapComponent.d.ts +47 -0
- package/esm/ui/wrapComponent.js +58 -0
- package/esm/ui/zIndexes.d.ts +28 -0
- package/esm/ui/zIndexes.js +38 -0
- package/esm/util/Base1DUtils.d.ts +204 -16
- package/esm/util/Base1DUtils.js +310 -175
- package/esm/util/Base1DViewModel.d.ts +97 -20
- package/esm/util/Base1DViewModel.js +148 -39
- package/esm/util/FileSaver/index.d.ts +1 -0
- package/esm/util/FileSaver/index.js +27 -0
- package/esm/util/IntervalTree.d.ts +18 -39
- package/esm/util/IntervalTree.js +63 -244
- package/esm/util/SvgCanvas.d.ts +81 -0
- package/esm/util/SvgCanvas.js +500 -0
- package/esm/util/TimeTraveller.d.ts +12 -0
- package/esm/util/TimeTraveller.js +130 -27
- package/esm/util/aborting.d.ts +17 -4
- package/esm/util/aborting.js +30 -25
- package/esm/util/adapterMetadata.d.ts +20 -0
- package/esm/util/adapterMetadata.js +39 -0
- package/esm/util/addAndShowTrack.d.ts +22 -0
- package/esm/util/addAndShowTrack.js +27 -0
- package/esm/util/addRelativeUris.d.ts +17 -0
- package/esm/util/addRelativeUris.js +42 -0
- package/esm/util/addTrackComponent.d.ts +72 -0
- package/esm/util/addTrackComponent.js +53 -0
- package/esm/util/addTrackFromWidget.d.ts +94 -0
- package/esm/util/addTrackFromWidget.js +90 -0
- package/esm/util/analytics.d.ts +32 -3
- package/esm/util/analytics.js +102 -49
- package/esm/util/animationAllowed.d.ts +17 -0
- package/esm/util/animationAllowed.js +22 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -0
- package/esm/util/applyRowResizeWheel.js +34 -0
- package/esm/util/assemblyConfigUtils.d.ts +144 -0
- package/esm/util/assemblyConfigUtils.js +498 -0
- package/esm/util/bandHeight.d.ts +53 -0
- package/esm/util/bandHeight.js +56 -0
- package/esm/util/bandLayout.d.ts +51 -0
- package/esm/util/bandLayout.js +36 -0
- package/esm/util/bezierConnector.d.ts +14 -0
- package/esm/util/bezierConnector.js +108 -0
- package/esm/util/bgzfWorkerPool.d.ts +78 -0
- package/esm/util/bgzfWorkerPool.js +81 -0
- package/esm/util/blockTypes.d.ts +64 -45
- package/esm/util/blockTypes.js +67 -74
- package/esm/util/bpUtils.d.ts +81 -0
- package/esm/util/bpUtils.js +103 -0
- package/esm/util/cacheBudgets.d.ts +55 -0
- package/esm/util/cacheBudgets.js +55 -0
- package/esm/util/cachedSetup.d.ts +51 -0
- package/esm/util/cachedSetup.js +87 -0
- package/esm/util/calculateDynamicBlocks.d.ts +5 -0
- package/esm/util/calculateDynamicBlocks.js +85 -82
- package/esm/util/calculateStaticBlocks.d.ts +2 -3
- package/esm/util/calculateStaticBlocks.js +48 -71
- package/esm/util/chooseGridPitch.d.ts +9 -0
- package/esm/util/chooseGridPitch.js +31 -0
- package/esm/util/clampToContig.d.ts +26 -0
- package/esm/util/clampToContig.js +28 -0
- package/esm/util/cmpStr.d.ts +1 -0
- package/esm/util/cmpStr.js +7 -0
- package/esm/util/coarseStripHTML.js +3 -15
- package/esm/util/color/cssColorsLevel4.js +6 -2
- package/esm/util/color/index.d.ts +81 -2
- package/esm/util/color/index.js +194 -25
- package/esm/util/color-bits/bit.d.ts +4 -0
- package/esm/util/color-bits/bit.js +37 -0
- package/esm/util/color-bits/convert.d.ts +23 -0
- package/esm/util/color-bits/convert.js +294 -0
- package/esm/util/color-bits/core.d.ts +34 -0
- package/esm/util/color-bits/core.js +67 -0
- package/esm/util/color-bits/format.d.ts +24 -0
- package/esm/util/color-bits/format.js +82 -0
- package/esm/util/color-bits/functions.d.ts +33 -0
- package/esm/util/color-bits/functions.js +70 -0
- package/esm/util/color-bits/index.d.ts +5 -0
- package/esm/util/color-bits/index.js +4 -0
- package/esm/util/color-bits/parse.d.ts +17 -0
- package/esm/util/color-bits/parse.js +382 -0
- package/esm/util/colorBits.d.ts +39 -0
- package/esm/util/colorBits.js +180 -0
- package/esm/util/colorRamp.d.ts +37 -0
- package/esm/util/colorRamp.js +93 -0
- package/esm/util/colord.d.ts +8 -0
- package/esm/util/colord.js +43 -191
- package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
- package/esm/util/convertCodingSequenceToPeptides.js +51 -4
- package/esm/util/copyText.d.ts +18 -0
- package/esm/util/copyText.js +30 -0
- package/esm/util/copyToClipboard.d.ts +4 -0
- package/esm/util/copyToClipboard.js +58 -0
- package/esm/util/createStopTokenRotation.d.ts +118 -0
- package/esm/util/createStopTokenRotation.js +127 -0
- package/esm/util/createSvgRasterCanvas.d.ts +7 -0
- package/esm/util/createSvgRasterCanvas.js +22 -0
- package/esm/util/crypto.d.ts +24 -0
- package/esm/util/crypto.js +85 -2
- package/esm/util/dataGridUtils.d.ts +9 -0
- package/esm/util/dataGridUtils.js +36 -0
- package/esm/util/dedupe.js +1 -0
- package/esm/util/deepEqual.d.ts +8 -0
- package/esm/util/deepEqual.js +22 -0
- package/esm/util/deepMerge.d.ts +20 -0
- package/esm/util/deepMerge.js +44 -0
- package/esm/util/diagonalizeRegions.d.ts +23 -0
- package/esm/util/diagonalizeRegions.js +192 -0
- package/esm/util/environment.d.ts +4 -0
- package/esm/util/environment.js +43 -0
- package/esm/util/eventPoint.d.ts +32 -0
- package/esm/util/eventPoint.js +28 -0
- package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
- package/esm/util/fetchAndMaybeUnzip.js +64 -0
- package/esm/util/fetchContext.d.ts +82 -0
- package/esm/util/fetchContext.js +59 -0
- package/esm/util/fetchHub.d.ts +15 -0
- package/esm/util/fetchHub.js +31 -0
- package/esm/util/fetchJson.d.ts +1 -0
- package/esm/util/fetchJson.js +7 -0
- package/esm/util/fetchPhases.d.ts +77 -0
- package/esm/util/fetchPhases.js +1 -0
- package/esm/util/fetchSeq.d.ts +5 -1
- package/esm/util/fetchSeq.js +18 -6
- package/esm/util/fileHandleStore.d.ts +19 -2
- package/esm/util/fileHandleStore.js +95 -35
- package/esm/util/flatbush/index.d.ts +27 -6
- package/esm/util/flatbush/index.js +194 -218
- package/esm/util/formatBytes.d.ts +9 -0
- package/esm/util/formatBytes.js +18 -0
- package/esm/util/formatFastaStrings.d.ts +13 -0
- package/esm/util/formatFastaStrings.js +13 -0
- package/esm/util/formatGuessers.d.ts +30 -0
- package/esm/util/formatGuessers.js +69 -0
- package/esm/util/formatRelativeTime.d.ts +1 -0
- package/esm/util/formatRelativeTime.js +25 -0
- package/esm/util/frameCoalescer.d.ts +30 -0
- package/esm/util/frameCoalescer.js +22 -0
- package/esm/util/freezeDeep.d.ts +28 -0
- package/esm/util/freezeDeep.js +41 -0
- package/esm/util/geneticCodes.d.ts +56 -0
- package/esm/util/geneticCodes.js +371 -0
- package/esm/util/getFileName.d.ts +11 -0
- package/esm/util/getFileName.js +34 -0
- package/esm/util/getLocationUri.d.ts +49 -0
- package/esm/util/getLocationUri.js +63 -0
- package/esm/util/getRelativeX.d.ts +4 -0
- package/esm/util/getRelativeX.js +7 -0
- package/esm/util/getStr.d.ts +6 -0
- package/esm/util/getStr.js +15 -0
- package/esm/util/highlights.d.ts +21 -0
- package/esm/util/highlights.js +100 -0
- package/esm/util/hooks.d.ts +168 -0
- package/esm/util/hooks.js +443 -0
- package/esm/util/htmlText.d.ts +13 -0
- package/esm/util/htmlText.js +66 -0
- package/esm/util/idMaker.d.ts +1 -1
- package/esm/util/idMaker.js +31 -18
- package/esm/util/index.d.ts +81 -268
- package/esm/util/index.js +135 -853
- package/esm/util/indexCandidates.d.ts +50 -0
- package/esm/util/indexCandidates.js +101 -0
- package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
- package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
- package/esm/util/installFetch.d.ts +220 -0
- package/esm/util/installFetch.js +206 -0
- package/esm/util/installInitAutorun.d.ts +62 -0
- package/esm/util/installInitAutorun.js +107 -0
- package/esm/util/intervals.d.ts +20 -0
- package/esm/util/intervals.js +37 -0
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
- package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
- package/esm/util/io/index.d.ts +39 -2
- package/esm/util/io/index.js +115 -12
- package/esm/util/isDataCurrent.d.ts +7 -0
- package/esm/util/isDataCurrent.js +9 -0
- package/esm/util/isWebWorker.js +1 -2
- package/esm/util/iupac.d.ts +4 -0
- package/esm/util/iupac.js +59 -0
- package/esm/util/jexl.js +141 -17
- package/esm/util/jexlFilters.d.ts +75 -0
- package/esm/util/jexlFilters.js +49 -0
- package/esm/util/jexlStrings.d.ts +22 -1
- package/esm/util/jexlStrings.js +21 -14
- package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
- package/esm/util/layouts/GranularRectLayout.js +99 -356
- package/esm/util/layouts/index.d.ts +1 -7
- package/esm/util/layouts/index.js +2 -6
- package/esm/util/layouts/intervalUtils.d.ts +12 -1
- package/esm/util/layouts/intervalUtils.js +13 -31
- package/esm/util/layouts/placeRect.d.ts +50 -0
- package/esm/util/layouts/placeRect.js +97 -0
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/leadingEdgeAutorun.d.ts +40 -0
- package/esm/util/leadingEdgeAutorun.js +51 -0
- package/esm/util/legendCandidates.d.ts +50 -0
- package/esm/util/legendCandidates.js +87 -0
- package/esm/util/librpc.d.ts +5 -2
- package/esm/util/librpc.js +6 -1
- package/esm/util/linkify.js +2 -0
- package/esm/util/locString.d.ts +72 -0
- package/esm/util/locString.js +178 -7
- package/esm/util/locStringsToRegions.d.ts +10 -0
- package/esm/util/locStringsToRegions.js +35 -0
- package/esm/util/localStorage.d.ts +36 -0
- package/esm/util/localStorage.js +137 -0
- package/esm/util/makeAssembly.d.ts +54 -0
- package/esm/util/makeAssembly.js +52 -0
- package/esm/util/makeTrackId.d.ts +14 -0
- package/esm/util/makeTrackId.js +14 -0
- package/esm/util/matchTrackId.d.ts +11 -0
- package/esm/util/matchTrackId.js +14 -0
- package/esm/util/measureText.d.ts +24 -0
- package/esm/util/measureText.js +51 -0
- package/esm/util/mst-reflection.d.ts +14 -4
- package/esm/util/mst-reflection.js +33 -32
- package/esm/util/mstUtils.d.ts +100 -0
- package/esm/util/mstUtils.js +140 -0
- package/esm/util/nanoid.d.ts +0 -4
- package/esm/util/nanoid.js +10 -20
- package/esm/util/numericUtils.d.ts +20 -0
- package/esm/util/numericUtils.js +127 -0
- package/esm/util/objectUtils.d.ts +2 -0
- package/esm/util/objectUtils.js +9 -0
- package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
- package/esm/util/offscreenCanvasPonyfill.js +5 -47
- package/esm/util/openDisplays.d.ts +23 -0
- package/esm/util/openDisplays.js +79 -0
- package/esm/util/openFeatureWidget.d.ts +33 -0
- package/esm/util/openFeatureWidget.js +64 -0
- package/esm/util/paintLayer.d.ts +32 -0
- package/esm/util/paintLayer.js +33 -0
- package/esm/util/parentWalk.d.ts +32 -0
- package/esm/util/parentWalk.js +84 -0
- package/esm/util/parseLineByLine.d.ts +45 -2
- package/esm/util/parseLineByLine.js +156 -15
- package/esm/util/parseMotifList.d.ts +17 -0
- package/esm/util/parseMotifList.js +69 -0
- package/esm/util/pluginStore.d.ts +114 -0
- package/esm/util/pluginStore.js +260 -0
- package/esm/util/pointerPresence.d.ts +5 -0
- package/esm/util/pointerPresence.js +21 -0
- package/esm/util/progress.d.ts +459 -0
- package/esm/util/progress.js +820 -0
- package/esm/util/range.d.ts +46 -1
- package/esm/util/range.js +68 -2
- package/esm/util/renameRegions.d.ts +21 -0
- package/esm/util/renameRegions.js +129 -0
- package/esm/util/renderToStaticMarkup.d.ts +2 -0
- package/esm/util/renderToStaticMarkup.js +50 -0
- package/esm/util/reorder.d.ts +35 -0
- package/esm/util/reorder.js +83 -0
- package/esm/util/resolveRowHeight.d.ts +27 -0
- package/esm/util/resolveRowHeight.js +30 -0
- package/esm/util/revlist.d.ts +13 -0
- package/esm/util/revlist.js +14 -0
- package/esm/util/rowStackGeometry.d.ts +66 -0
- package/esm/util/rowStackGeometry.js +70 -0
- package/esm/util/rpc.d.ts +16 -1
- package/esm/util/rpc.js +12 -1
- package/esm/util/rxjs.d.ts +30 -1
- package/esm/util/rxjs.js +88 -10
- package/esm/util/sameStrings.d.ts +16 -0
- package/esm/util/sameStrings.js +20 -0
- package/esm/util/scrollLatch.d.ts +4 -0
- package/esm/util/scrollLatch.js +59 -0
- package/esm/util/selectNamedRegions.d.ts +136 -0
- package/esm/util/selectNamedRegions.js +222 -0
- package/esm/util/seqUtils.d.ts +17 -0
- package/esm/util/seqUtils.js +80 -0
- package/esm/util/sessionServices.d.ts +29 -0
- package/esm/util/sessionServices.js +46 -0
- package/esm/util/sessionSharing.d.ts +38 -0
- package/esm/util/sessionSharing.js +154 -0
- package/esm/util/sessionStorage.d.ts +1 -0
- package/esm/util/sessionStorage.js +15 -0
- package/esm/util/setStackTraceLimit.d.ts +6 -0
- package/esm/util/setStackTraceLimit.js +20 -0
- package/esm/util/simpleFeature.d.ts +112 -4
- package/esm/util/simpleFeature.js +181 -29
- package/esm/util/springAnimate.d.ts +20 -0
- package/esm/util/springAnimate.js +80 -0
- package/esm/util/stats.d.ts +25 -2
- package/esm/util/stats.js +39 -8
- package/esm/util/stopToken.d.ts +207 -15
- package/esm/util/stopToken.js +403 -55
- package/esm/util/stringUtils.d.ts +5 -0
- package/esm/util/stringUtils.js +34 -0
- package/esm/util/svgColorProps.d.ts +7 -0
- package/esm/util/svgColorProps.js +28 -0
- package/esm/util/tabix.d.ts +126 -0
- package/esm/util/tabix.js +149 -0
- package/esm/util/tags.d.ts +2 -0
- package/esm/util/tags.js +5 -0
- package/esm/util/temporaryAssembly.d.ts +21 -0
- package/esm/util/temporaryAssembly.js +29 -0
- package/esm/util/tickLabels.d.ts +36 -0
- package/esm/util/tickLabels.js +45 -0
- package/esm/util/timeGate.d.ts +26 -0
- package/esm/util/timeGate.js +79 -0
- package/esm/util/trackConfigDelta.d.ts +84 -0
- package/esm/util/trackConfigDelta.js +190 -0
- package/esm/util/tracks.d.ts +398 -30
- package/esm/util/tracks.js +699 -191
- package/esm/util/tss-react/cssAndCx.js +11 -66
- package/esm/util/tss-react/index.d.ts +11 -2
- package/esm/util/tss-react/index.js +9 -2
- package/esm/util/tss-react/makeStyles.js +7 -4
- package/esm/util/tss-react/mergeClasses.js +1 -0
- package/esm/util/tss-react/tools/classnames.d.ts +3 -0
- package/esm/util/tss-react/tools/classnames.js +3 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
- package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
- package/esm/util/tss-react/types.d.ts +1 -1
- package/esm/util/tss-react/types.js +1 -6
- package/esm/util/types/ElementId.js +1 -1
- package/esm/util/types/data.d.ts +75 -0
- package/esm/util/types/data.js +41 -0
- package/esm/util/types/index.d.ts +402 -120
- package/esm/util/types/index.js +90 -64
- package/esm/util/types/isAny.d.ts +11 -0
- package/esm/util/types/isAny.js +1 -0
- package/esm/util/types/mst.d.ts +71 -47
- package/esm/util/types/mst.js +27 -22
- package/esm/util/types/predicate.d.ts +9 -0
- package/esm/util/types/predicate.js +1 -0
- package/esm/util/types/renderingServices.d.ts +16 -0
- package/esm/util/types/renderingServices.js +1 -0
- package/esm/util/types/services.d.ts +55 -0
- package/esm/util/types/services.js +10 -0
- package/esm/util/types/util.d.ts +8 -2
- package/esm/util/unknownSnapshotKeys.d.ts +36 -0
- package/esm/util/unknownSnapshotKeys.js +69 -0
- package/esm/util/unzip.d.ts +1 -0
- package/esm/util/unzip.js +6 -0
- package/esm/util/useEventCallback.d.ts +1 -0
- package/esm/util/useEventCallback.js +16 -0
- package/esm/util/useFeatureSequence.d.ts +13 -7
- package/esm/util/useFeatureSequence.js +56 -78
- package/esm/util/useFetch.d.ts +56 -0
- package/esm/util/useFetch.js +188 -0
- package/esm/util/useFetchPlugins.d.ts +12 -0
- package/esm/util/useFetchPlugins.js +14 -0
- package/esm/util/useMeasure.d.ts +11 -1
- package/esm/util/useMeasure.js +20 -6
- package/esm/util/usePanZoom.d.ts +75 -0
- package/esm/util/usePanZoom.js +175 -0
- package/esm/util/usePanelVirtualScroll.d.ts +37 -0
- package/esm/util/usePanelVirtualScroll.js +42 -0
- package/esm/util/usePointerDrag.d.ts +37 -0
- package/esm/util/usePointerDrag.js +61 -0
- package/esm/util/useRafCommit.d.ts +4 -0
- package/esm/util/useRafCommit.js +50 -0
- package/esm/util/useResizeDrag.d.ts +91 -0
- package/esm/util/useResizeDrag.js +105 -0
- package/esm/util/useRowVirtualScroll.d.ts +32 -0
- package/esm/util/useRowVirtualScroll.js +63 -0
- package/esm/util/useVirtualScrollWheel.d.ts +7 -0
- package/esm/util/useVirtualScrollWheel.js +108 -0
- package/esm/util/viewStatus.d.ts +81 -0
- package/esm/util/viewStatus.js +37 -0
- package/esm/util/virtualRange.d.ts +36 -0
- package/esm/util/virtualRange.js +26 -0
- package/esm/util/webStorage.d.ts +26 -0
- package/esm/util/webStorage.js +92 -0
- package/esm/util/wheelZoom.d.ts +59 -0
- package/esm/util/wheelZoom.js +231 -0
- package/esm/util/whenViewSettled.d.ts +40 -0
- package/esm/util/whenViewSettled.js +41 -0
- package/esm/util/withFeatureDetails.d.ts +34 -0
- package/esm/util/withFeatureDetails.js +59 -0
- package/esm/util/withLaunchInput.d.ts +123 -0
- package/esm/util/withLaunchInput.js +228 -0
- package/package.json +243 -820
- package/esm/ReExports/DataGrid.d.ts +0 -1
- package/esm/ReExports/DataGrid.js +0 -1
- package/esm/configuration/util.d.ts +0 -10
- package/esm/configuration/util.js +0 -123
- package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
- package/esm/data_adapters/util.d.ts +0 -1
- package/esm/data_adapters/util.js +0 -6
- package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
- package/esm/pluggableElementTypes/GlyphType.js +0 -18
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
- package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
- package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
- package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
- package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
- package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
- package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
- package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
- package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
- package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
- package/esm/pluggableElementTypes/renderers/index.js +0 -6
- package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
- package/esm/pluggableElementTypes/renderers/util.js +0 -14
- package/esm/rpc/baseRpcConfig.d.ts +0 -8
- package/esm/rpc/baseRpcConfig.js +0 -10
- package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
- package/esm/rpc/mainThreadRpcConfig.js +0 -8
- package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
- package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
- package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
- package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
- package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
- package/esm/rpc/methods/CoreRender.d.ts +0 -14
- package/esm/rpc/methods/CoreRender.js +0 -40
- package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
- package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
- package/esm/rpc/methods/util.d.ts +0 -15
- package/esm/rpc/methods/util.js +0 -7
- package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
- package/esm/rpc/webWorkerRpcConfig.js +0 -8
- package/esm/ui/MenuButton.d.ts +0 -1
- package/esm/ui/MenuButton.js +0 -1
- package/esm/ui/MenuItems.d.ts +0 -15
- package/esm/ui/MenuItems.js +0 -59
- package/esm/ui/useEvent.d.ts +0 -1
- package/esm/ui/useEvent.js +0 -10
- package/esm/util/blobToDataURL.d.ts +0 -1
- package/esm/util/blobToDataURL.js +0 -14
- package/esm/util/compositeMap.d.ts +0 -11
- package/esm/util/compositeMap.js +0 -59
- package/esm/util/flatqueue/index.d.ts +0 -11
- package/esm/util/flatqueue/index.js +0 -61
- package/esm/util/layouts/BaseLayout.d.ts +0 -30
- package/esm/util/layouts/MultiLayout.d.ts +0 -12
- package/esm/util/layouts/MultiLayout.js +0 -40
- package/esm/util/layouts/PileupLayout.d.ts +0 -41
- package/esm/util/layouts/PileupLayout.js +0 -202
- package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
- package/esm/util/layouts/PrecomputedLayout.js +0 -71
- package/esm/util/layouts/SceneGraph.d.ts +0 -31
- package/esm/util/layouts/SceneGraph.js +0 -121
- package/esm/util/makeAbortableReaction.d.ts +0 -3
- package/esm/util/makeAbortableReaction.js +0 -47
- package/esm/util/map-obj/index.d.ts +0 -13
- package/esm/util/map-obj/index.js +0 -92
- package/esm/util/nextTick.d.ts +0 -1
- package/esm/util/nextTick.js +0 -3
- package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
- package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
- package/esm/util/offscreenCanvasUtils.d.ts +0 -12
- package/esm/util/offscreenCanvasUtils.js +0 -19
- package/esm/util/renderToAbstractCanvas.d.ts +0 -17
- package/esm/util/renderToAbstractCanvas.js +0 -53
- package/esm/util/transferables.d.ts +0 -2
- package/esm/util/transferables.js +0 -35
- package/esm/util/tss-react/mui/index.d.ts +0 -1
- package/esm/util/tss-react/mui/index.js +0 -1
- package/esm/util/tss-react/mui/mui.d.ts +0 -10
- package/esm/util/tss-react/mui/mui.js +0 -5
- package/esm/util/when.d.ts +0 -1
- package/esm/util/when.js +0 -1
- /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
- /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import type { FeatureDensity } from '../data_adapters/BaseAdapter/featureDensity.ts';
|
|
2
|
+
import type { StatusCallback } from '../util/progress.ts';
|
|
3
|
+
import type { UnwrapRpcResult } from '../util/rpc.ts';
|
|
4
|
+
import type { Feature, SimpleFeatureSerialized } from '../util/simpleFeature.ts';
|
|
5
|
+
import type { StopToken } from '../util/stopToken.ts';
|
|
6
|
+
import type { NoAssemblyRegion } from '../util/types/data.ts';
|
|
7
|
+
import type { RpcResult } from './RpcServer.ts';
|
|
8
|
+
import type { ByteEstimateScope } from './byteBudget.ts';
|
|
9
|
+
export interface RegionLike {
|
|
10
|
+
refName: string;
|
|
11
|
+
start: number;
|
|
12
|
+
end: number;
|
|
13
|
+
assemblyName: string;
|
|
14
|
+
}
|
|
15
|
+
export interface RpcRegistry {
|
|
16
|
+
CoreGetRefNames: {
|
|
17
|
+
args: {
|
|
18
|
+
adapterConfig: Record<string, unknown>;
|
|
19
|
+
sequenceAdapter?: Record<string, unknown>;
|
|
20
|
+
assemblyName?: string;
|
|
21
|
+
};
|
|
22
|
+
return: string[];
|
|
23
|
+
};
|
|
24
|
+
CoreGetRegions: {
|
|
25
|
+
args: {
|
|
26
|
+
adapterConfig: Record<string, unknown>;
|
|
27
|
+
};
|
|
28
|
+
return: NoAssemblyRegion[];
|
|
29
|
+
};
|
|
30
|
+
CoreGetSequence: {
|
|
31
|
+
args: {
|
|
32
|
+
region: RegionLike;
|
|
33
|
+
adapterConfig: Record<string, unknown>;
|
|
34
|
+
};
|
|
35
|
+
return: string | undefined;
|
|
36
|
+
};
|
|
37
|
+
CoreGetFeatures: {
|
|
38
|
+
args: {
|
|
39
|
+
regions: RegionLike[];
|
|
40
|
+
adapterConfig: Record<string, unknown>;
|
|
41
|
+
sequenceAdapter?: Record<string, unknown>;
|
|
42
|
+
opts?: Record<string, unknown>;
|
|
43
|
+
};
|
|
44
|
+
return: Feature[];
|
|
45
|
+
wire: SimpleFeatureSerialized[];
|
|
46
|
+
};
|
|
47
|
+
CoreGetRegionByteEstimate: {
|
|
48
|
+
args: {
|
|
49
|
+
adapterConfig: Record<string, unknown>;
|
|
50
|
+
regions: RegionLike[];
|
|
51
|
+
scope: ByteEstimateScope;
|
|
52
|
+
headers?: Record<string, string>;
|
|
53
|
+
};
|
|
54
|
+
return: number | undefined;
|
|
55
|
+
};
|
|
56
|
+
CoreGetFeatureDensity: {
|
|
57
|
+
args: {
|
|
58
|
+
adapterConfig: Record<string, unknown>;
|
|
59
|
+
regions: RegionLike[];
|
|
60
|
+
bpPerPx: number;
|
|
61
|
+
headers?: Record<string, string>;
|
|
62
|
+
};
|
|
63
|
+
return: FeatureDensity[] | undefined;
|
|
64
|
+
};
|
|
65
|
+
CoreGetInfo: {
|
|
66
|
+
args: {
|
|
67
|
+
adapterConfig: Record<string, unknown>;
|
|
68
|
+
};
|
|
69
|
+
return: unknown;
|
|
70
|
+
};
|
|
71
|
+
CoreGetMetadata: {
|
|
72
|
+
args: {
|
|
73
|
+
adapterConfig: Record<string, unknown>;
|
|
74
|
+
};
|
|
75
|
+
return: unknown;
|
|
76
|
+
};
|
|
77
|
+
CoreGetExportData: {
|
|
78
|
+
args: {
|
|
79
|
+
regions: RegionLike[];
|
|
80
|
+
adapterConfig: Record<string, unknown>;
|
|
81
|
+
formatType: string;
|
|
82
|
+
opts?: Record<string, unknown>;
|
|
83
|
+
};
|
|
84
|
+
return: string | undefined;
|
|
85
|
+
};
|
|
86
|
+
CoreFreeResources: {
|
|
87
|
+
args: Record<string, unknown>;
|
|
88
|
+
return: void;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export type RpcMethodName = keyof RpcRegistry;
|
|
92
|
+
export type RpcArgs<M extends RpcMethodName> = RpcRegistry[M]['args'];
|
|
93
|
+
export type RpcReturn<M extends RpcMethodName> = RpcRegistry[M]['return'];
|
|
94
|
+
/**
|
|
95
|
+
* The caller's handles on an operation: how to stop it, and where it reports.
|
|
96
|
+
*
|
|
97
|
+
* Deliberately NOT part of any method's `args`. They are properties of the
|
|
98
|
+
* call, not of the payload — every method can be cancelled and every method can
|
|
99
|
+
* report — so they are part of {@link RpcCallArgs} instead, accepted for every
|
|
100
|
+
* method whatever its entry says. A registry entry that declares them is stating
|
|
101
|
+
* something it does not get to decide.
|
|
102
|
+
*
|
|
103
|
+
* They used to be per-entry, and the cost was not the 82 repeated lines: it was
|
|
104
|
+
* that omitting them made a method silently uncancellable and silent, with the
|
|
105
|
+
* call site still type-checking (an `...opts` spread suppresses the
|
|
106
|
+
* excess-property check). `CoreGetExportData` shipped that way.
|
|
107
|
+
*
|
|
108
|
+
* A `type`, not an `interface`, and that is load-bearing rather than style. An
|
|
109
|
+
* interface gets no implicit index signature, and an intersection containing one
|
|
110
|
+
* inherits the lack — so `RpcExecuteArgs<M>` would stop being assignable to the
|
|
111
|
+
* `Record<string, unknown>` that adapter options are typed as. Handing the whole
|
|
112
|
+
* args bag to the adapter is how most methods forward these two without naming
|
|
113
|
+
* them (`getRefNames(deserializedArgs)`), so an interface here breaks exactly
|
|
114
|
+
* the pattern the type exists to support.
|
|
115
|
+
*/
|
|
116
|
+
export type RpcHandles = {
|
|
117
|
+
stopToken?: StopToken;
|
|
118
|
+
statusCallback?: StatusCallback;
|
|
119
|
+
};
|
|
120
|
+
export type RpcSession = {
|
|
121
|
+
sessionId: string;
|
|
122
|
+
};
|
|
123
|
+
export type RpcCallContext = RpcSession & RpcHandles;
|
|
124
|
+
/**
|
|
125
|
+
* What {@link RpcExecuteArgs} and {@link RpcWireReturn} resolve to for a method
|
|
126
|
+
* name that was written out but has no registry entry: a shape nothing
|
|
127
|
+
* satisfies, so the miss is a compile error naming the method rather than
|
|
128
|
+
* silence.
|
|
129
|
+
*
|
|
130
|
+
* The silence was the problem. Both derivations are conditionals over `keyof
|
|
131
|
+
* RpcRegistry`, and a name that misses falls out the bottom — where `unknown`
|
|
132
|
+
* used to be. So `RpcMethodType<'GetFeatureDetails'>` type-checked with an
|
|
133
|
+
* `execute` free to take and return anything at all. `GetFeatureDetails` is the
|
|
134
|
+
* *class* name; the registry key beside it is `GetPileupFeatureDetails`, and
|
|
135
|
+
* both classes called `GetFeatureDetails` (alignments, canvas) register under a
|
|
136
|
+
* name their class does not carry — so the wrong guess is the natural one, and
|
|
137
|
+
* an opt-in that silently opts you back out is worse than none, because it
|
|
138
|
+
* reads as checked.
|
|
139
|
+
*
|
|
140
|
+
* Only for a name written out. The bare default `string` is the escape hatch
|
|
141
|
+
* documented on {@link RpcMethodType} and still resolves to `unknown`;
|
|
142
|
+
* `string extends M` is what tells the two apart.
|
|
143
|
+
*/
|
|
144
|
+
export interface NotInRpcRegistry<M extends string> {
|
|
145
|
+
__rpcRegistryError: `no RpcRegistry entry for '${M}'`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* What a registered method's `execute` actually receives: its declared args,
|
|
149
|
+
* plus the session it is pinned to, plus the handles the driver merged in.
|
|
150
|
+
*
|
|
151
|
+
* Derived rather than hand-written, for the reason {@link RpcWireReturn} is:
|
|
152
|
+
* the return type has been checked against the registry for a while and the
|
|
153
|
+
* args have not, which is the whole reason the two could drift. A method
|
|
154
|
+
* parameterized with its own name (`RpcMethodType<'CoreGetSequence'>`) gets
|
|
155
|
+
* both ends checked.
|
|
156
|
+
*/
|
|
157
|
+
export type RpcExecuteArgs<M extends string> = M extends RpcMethodName ? RpcArgs<M & RpcMethodName> & RpcCallContext : string extends M ? unknown : NotInRpcRegistry<M>;
|
|
158
|
+
/**
|
|
159
|
+
* What a CALLER passes to `rpcManager.call`: the method's own data, plus the
|
|
160
|
+
* {@link RpcHandles} every method takes. No {@link RpcSession} — that one is
|
|
161
|
+
* the call's first parameter, not part of the bag a caller builds.
|
|
162
|
+
*
|
|
163
|
+
* Exported and used by everything that types a `call` — `RpcManager` itself and
|
|
164
|
+
* the structural `RpcMethodCaller` the clustering helpers take — because there
|
|
165
|
+
* were three hand-written copies of this expression and the third one silently
|
|
166
|
+
* lagged the other two the moment the handles moved.
|
|
167
|
+
*
|
|
168
|
+
* A written-out name with no entry lands on {@link NotInRpcRegistry}; it used to
|
|
169
|
+
* fall through to `Record<string, unknown>`, so a mistyped name accepted any
|
|
170
|
+
* args and failed at runtime in the worker. Bare `string` is still the hatch for
|
|
171
|
+
* a caller dispatching on a variable.
|
|
172
|
+
*/
|
|
173
|
+
export type RpcCallArgs<M extends string> = M extends RpcMethodName ? RpcArgs<M & RpcMethodName> & RpcHandles : string extends M ? Record<string, unknown> & RpcHandles : NotInRpcRegistry<M>;
|
|
174
|
+
/**
|
|
175
|
+
* What a registered method's `execute` resolves to. An RpcMethodType
|
|
176
|
+
* parameterized with its own name (`RpcMethodType<'CoreGetRegions'>`) gets its
|
|
177
|
+
* executor checked against this, so a registry entry can't drift from what the
|
|
178
|
+
* worker actually sends back. `string` (the default) resolves to `unknown`,
|
|
179
|
+
* leaving unparameterized methods unconstrained; a name that is not a key
|
|
180
|
+
* resolves to NotInRpcRegistry, which nothing satisfies.
|
|
181
|
+
*
|
|
182
|
+
* `RpcReturn` is what the CALLER gets, this is what went over, and fifteen
|
|
183
|
+
* entries differ in one of two ways: the return is wrapped in `rpcResult` so
|
|
184
|
+
* postMessage can transfer its buffers, or `deserializeReturn` rebuilds it
|
|
185
|
+
* (features travel serialized and arrive as `SimpleFeature`s). An entry says
|
|
186
|
+
* which, beside the `return` it has to be read against:
|
|
187
|
+
*
|
|
188
|
+
* - **`transferables: true`** — the whole return is wrapped. Ten entries.
|
|
189
|
+
* - **`transferables: T`** — only the `T` arm of a union return is, because only
|
|
190
|
+
* that arm owns any buffers; the canvas gates wrap their data half and not
|
|
191
|
+
* their region-too-large half. Two entries.
|
|
192
|
+
* - **`wire: T`** — the return is not what went over at all, and
|
|
193
|
+
* `deserializeReturn` is what closes the gap. Three entries.
|
|
194
|
+
*
|
|
195
|
+
* The first two are FACTS, not types, so the wire shape is derived from the
|
|
196
|
+
* `return` and the two cannot come apart. The gates restated theirs until the
|
|
197
|
+
* fact got an argument — and a restatement of a union some other file owns is
|
|
198
|
+
* the kind that drifts, since editing `RenderFeatureDataResult` was not visibly
|
|
199
|
+
* editing this. Only `wire:` restates now, which is why
|
|
200
|
+
* {@link _NoRedundantWireInRegistry} fails compilation on one the derivation
|
|
201
|
+
* could have produced: two spellings of "the wire differs" is how the field got
|
|
202
|
+
* two meanings the first time.
|
|
203
|
+
*
|
|
204
|
+
* All of it was a second type parameter on the class until recently, which is a
|
|
205
|
+
* copy of the registry rather than a reference to it — `RpcResult<
|
|
206
|
+
* WiggleDataResult[]> | number` on RenderWiggleData type-checked clean while
|
|
207
|
+
* callers went on receiving `WiggleDataResult[]`.
|
|
208
|
+
*/
|
|
209
|
+
export type RpcWireReturn<M extends string> = M extends RpcMethodName ? WireOf<RpcRegistry[M & RpcMethodName]> : string extends M ? unknown : NotInRpcRegistry<M>;
|
|
210
|
+
type WireOf<Entry> = Entry extends {
|
|
211
|
+
wire: infer W;
|
|
212
|
+
} ? W : Entry extends {
|
|
213
|
+
transferables: true;
|
|
214
|
+
return: infer R;
|
|
215
|
+
} ? RpcResult<R> : Entry extends {
|
|
216
|
+
transferables: infer Wrapped;
|
|
217
|
+
return: infer R;
|
|
218
|
+
} ? RpcResult<Wrapped> | Exclude<R, Wrapped> : Entry extends {
|
|
219
|
+
return: infer R;
|
|
220
|
+
} ? R : never;
|
|
221
|
+
/**
|
|
222
|
+
* {@link RpcWireReturn} with the `rpcResult` envelope off: what
|
|
223
|
+
* {@link unwrapRpcResult} hands a `deserializeReturn` to rebuild the caller's
|
|
224
|
+
* value from, and — for the majority of methods, which do not override it —
|
|
225
|
+
* what the caller gets.
|
|
226
|
+
*/
|
|
227
|
+
type RpcUnwrappedWireReturn<M extends string> = UnwrapRpcResult<RpcWireReturn<M>>;
|
|
228
|
+
/**
|
|
229
|
+
* What the CALLER of a registered method ends up holding: the entry's `return`.
|
|
230
|
+
*
|
|
231
|
+
* The counterpart of {@link RpcCallArgs}, and here rather than on `RpcManager`
|
|
232
|
+
* for the reason that one is: `RpcManager.call` is not the only signature that
|
|
233
|
+
* has to state it. `RpcMethodType.deserializeReturn` — the code that actually
|
|
234
|
+
* PRODUCES this value, by rebuilding the wire shape — returned `unknown`, so
|
|
235
|
+
* the registry's `return` was a claim checked against `execute` (through
|
|
236
|
+
* {@link RpcWireReturn}) and against nothing at all on the way back out;
|
|
237
|
+
* `RpcManager.call` then cast to it. Typing the hook with this is what closes
|
|
238
|
+
* that half, and it closes covariantly, which is the direction that bites.
|
|
239
|
+
*/
|
|
240
|
+
export type RpcCallReturn<M extends string> = M extends RpcMethodName ? RpcReturn<M & RpcMethodName> : string extends M ? unknown : NotInRpcRegistry<M>;
|
|
241
|
+
/**
|
|
242
|
+
* Registry entries that declare a field belonging to the CALL rather than to
|
|
243
|
+
* the payload. Should always be `never`; {@link AssertNoCallLevelFields} below
|
|
244
|
+
* is what makes a non-empty one a compile error naming the entry.
|
|
245
|
+
*
|
|
246
|
+
* Checked rather than written down because it went wrong the same way twice: a
|
|
247
|
+
* caller needs the field on one method, it goes into that method's `args`, and
|
|
248
|
+
* the other forty can no longer be passed it. The handles went that way
|
|
249
|
+
* (CoreGetExportData shipped uncancellable), and `sessionId` spread to 22 of 41
|
|
250
|
+
* entries because `RpcCallArgs` had been subtracting it back off.
|
|
251
|
+
*/
|
|
252
|
+
type EntriesDeclaringCallLevelFields = {
|
|
253
|
+
[K in RpcMethodName]: Extract<keyof RpcArgs<K>, keyof RpcCallContext> extends never ? never : K;
|
|
254
|
+
}[RpcMethodName];
|
|
255
|
+
type AssertNoCallLevelFields<T extends never> = T;
|
|
256
|
+
export type _NoCallLevelFieldsInRegistry = AssertNoCallLevelFields<EntriesDeclaringCallLevelFields>;
|
|
257
|
+
/**
|
|
258
|
+
* Entries whose `wire` says nothing `transferables` could not have derived —
|
|
259
|
+
* the wire unwraps to the declared `return`, so no `deserializeReturn` is
|
|
260
|
+
* closing any gap and the restatement is only waiting to drift from the type it
|
|
261
|
+
* copies. Should always be `never`.
|
|
262
|
+
*
|
|
263
|
+
* The rule this keeps: `wire:` means "the caller does not receive what the
|
|
264
|
+
* worker sent, and a `deserializeReturn` rebuilds it". It meant that AND "only
|
|
265
|
+
* part of the return is wrapped" until the latter became `transferables: T`,
|
|
266
|
+
* and a field with two meanings is one nobody can read off a single entry.
|
|
267
|
+
*/
|
|
268
|
+
type EntriesWithRedundantWire = {
|
|
269
|
+
[K in RpcMethodName]: RpcRegistry[K] extends {
|
|
270
|
+
wire: unknown;
|
|
271
|
+
} ? RpcUnwrappedWireReturn<K> extends RpcReturn<K> ? K : never : never;
|
|
272
|
+
}[RpcMethodName];
|
|
273
|
+
type AssertNoRedundantWire<T extends never> = T;
|
|
274
|
+
export type _NoRedundantWireInRegistry = AssertNoRedundantWire<EntriesWithRedundantWire>;
|
|
275
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ErrorObject } from './serializeError/index.ts';
|
|
2
|
+
export interface RpcResult<T = unknown> {
|
|
3
|
+
__rpcResult: true;
|
|
4
|
+
value: T;
|
|
5
|
+
transferables: Transferable[];
|
|
6
|
+
}
|
|
7
|
+
export declare function rpcResult<T>(value: T, transferables: Transferable[]): RpcResult<T>;
|
|
8
|
+
export declare function rpcResultWithArrayBuffers<T extends object>(value: T): RpcResult<T>;
|
|
9
|
+
type Procedure = (data: unknown) => Promise<unknown>;
|
|
10
|
+
interface RpcMessageData {
|
|
11
|
+
method: string;
|
|
12
|
+
uid: string;
|
|
13
|
+
libRpc?: true;
|
|
14
|
+
data: unknown;
|
|
15
|
+
stopToken?: string;
|
|
16
|
+
}
|
|
17
|
+
export default class RpcServer {
|
|
18
|
+
protected methods: Record<string, Procedure>;
|
|
19
|
+
private self;
|
|
20
|
+
constructor(methods: Record<string, Procedure>);
|
|
21
|
+
handler(e: MessageEvent<RpcMessageData>): void;
|
|
22
|
+
private post;
|
|
23
|
+
protected reply(uid: string, response: unknown, method?: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* The only frame that must never fail to send, because it is the last one: a
|
|
26
|
+
* `throw` that throws leaves the call unsettled, and an unsettled call is a
|
|
27
|
+
* display spinning forever with no error to show. Everything upstream of here
|
|
28
|
+
* routes a failure into this, including {@link reply}'s own catch, so there is
|
|
29
|
+
* nothing left to catch it.
|
|
30
|
+
*
|
|
31
|
+
* It can fail. `serializeError` copies an error's own-enumerable properties so
|
|
32
|
+
* custom data survives the boundary, and it only skips the ones that are
|
|
33
|
+
* *themselves* functions — a property holding an object with a method on it
|
|
34
|
+
* (an arrow-function class field, an adapter, a `cause` that is a `Response`)
|
|
35
|
+
* is copied whole and is not structured-cloneable. So fall back to the
|
|
36
|
+
* message, which by construction is a string.
|
|
37
|
+
*/
|
|
38
|
+
protected throw(uid: string, error: ErrorObject | string): void;
|
|
39
|
+
emit(eventName: string, data: unknown, transferables?: Transferable[]): void;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { isRpcResult } from '../util/rpc.js';
|
|
2
|
+
import { markStopTokenStopped } from '../util/stopToken.js';
|
|
3
|
+
import { bufferPaths, containerEntries, explainTransferError, } from './explainTransferError.js';
|
|
4
|
+
import { serializeError } from './serializeError/index.js';
|
|
5
|
+
// `self` is a DedicatedWorkerGlobalScope in the worker, but the DOM lib types the
|
|
6
|
+
// ambient `self` as Window (whose postMessage overloads differ), so narrow it to
|
|
7
|
+
// the surface RpcServer uses. Absent entirely under plain node.
|
|
8
|
+
const workerSelf = typeof self === 'undefined' ? undefined : self;
|
|
9
|
+
/**
|
|
10
|
+
* Under test, report a hand-built transfer list that disagrees with the payload
|
|
11
|
+
* it describes. Nothing else checks one, and neither direction shows up as a
|
|
12
|
+
* failure of its own:
|
|
13
|
+
*
|
|
14
|
+
* - a field added to the result and forgotten here is silently STRUCTURE-CLONED,
|
|
15
|
+
* a copy per fetch of the largest arrays a worker produces;
|
|
16
|
+
* - an entry naming a buffer the payload does not carry detaches something for
|
|
17
|
+
* nobody, and the throw lands on a later call as a `DataCloneError` naming an
|
|
18
|
+
* index.
|
|
19
|
+
*
|
|
20
|
+
* A check rather than a derivation, which is the whole reason it is safe to
|
|
21
|
+
* apply to every result at once. Deriving the list would mean transferring
|
|
22
|
+
* whatever a walk finds, and transferring MOVES: `positionOrder` returned a
|
|
23
|
+
* module-level empty result, a wider walk swept it in, and every
|
|
24
|
+
* `hg002_haplotypes_*` figure was unrenderable until it was fixed (2026-08-15).
|
|
25
|
+
* This reports and transfers nothing.
|
|
26
|
+
*
|
|
27
|
+
* Test-only because it walks the payload, which also carries plain data — a
|
|
28
|
+
* `featureIds` array of half a million strings — and `bufferPaths` was written
|
|
29
|
+
* for the error path for exactly that reason. `rpcResultWithArrayBuffers`
|
|
30
|
+
* derives its own list and so cannot disagree with itself; it is checked anyway,
|
|
31
|
+
* since its walk stops one level down and the deeper one here is what would
|
|
32
|
+
* catch a producer that nests further.
|
|
33
|
+
*/
|
|
34
|
+
function checkTransferList(value, transferables) {
|
|
35
|
+
const listed = new Set(transferables.filter(t => t instanceof ArrayBuffer));
|
|
36
|
+
const carried = bufferPaths(value);
|
|
37
|
+
const missing = [];
|
|
38
|
+
for (const [buffer, paths] of carried) {
|
|
39
|
+
// A SharedArrayBuffer cannot be transferred at all, only cloned, so its
|
|
40
|
+
// absence from the list is the correct answer rather than an omission.
|
|
41
|
+
if (buffer instanceof ArrayBuffer && !listed.has(buffer)) {
|
|
42
|
+
missing.push(paths.join(' = '));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const stray = [...listed].filter(b => !carried.has(b)).length;
|
|
46
|
+
if (missing.length > 0 || stray > 0) {
|
|
47
|
+
const parts = [
|
|
48
|
+
missing.length > 0
|
|
49
|
+
? `not transferred, so structure-cloned: ${missing.join(', ')}`
|
|
50
|
+
: undefined,
|
|
51
|
+
stray > 0
|
|
52
|
+
? `${stray} transfer-list entr${stray === 1 ? 'y is' : 'ies are'} not in the payload`
|
|
53
|
+
: undefined,
|
|
54
|
+
].filter(p => p !== undefined);
|
|
55
|
+
throw new Error(`RPC transfer list disagrees with its payload — ${parts.join('; ')}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function rpcResult(value, transferables) {
|
|
59
|
+
if (process.env.NODE_ENV === 'test') {
|
|
60
|
+
checkTransferList(value, transferables);
|
|
61
|
+
}
|
|
62
|
+
return { __rpcResult: true, value, transferables };
|
|
63
|
+
}
|
|
64
|
+
// A buffer postMessage will refuse, and which field it arrived on. `detached` is
|
|
65
|
+
// ES2024 and is what a moved buffer reports; the byteLength fallback is for a
|
|
66
|
+
// runtime without it, where a detached buffer measures 0 under a view that does
|
|
67
|
+
// not.
|
|
68
|
+
//
|
|
69
|
+
// Worth naming rather than letting postMessage throw: its own message is
|
|
70
|
+
// "ArrayBuffer at index N is already detached", and N is a position in a list
|
|
71
|
+
// the reader cannot see. One of those cost a figure a release cycle.
|
|
72
|
+
function detachedFieldName(view, path) {
|
|
73
|
+
const { buffer } = view;
|
|
74
|
+
const detached = 'detached' in buffer
|
|
75
|
+
? buffer.detached
|
|
76
|
+
: buffer.byteLength === 0 && view.byteLength > 0;
|
|
77
|
+
return detached ? path : undefined;
|
|
78
|
+
}
|
|
79
|
+
// rpcResult with transferables auto-derived from the result's TypedArray fields,
|
|
80
|
+
// so a newly-added one is transferred (moved, zero-copy) rather than silently
|
|
81
|
+
// structurally cloned just because a hand-maintained buffer list wasn't
|
|
82
|
+
// extended. Use for any worker RPC whose result is typed arrays (canvas /
|
|
83
|
+
// synteny / dotplot / wiggle packers).
|
|
84
|
+
//
|
|
85
|
+
// Walks one level into plain-object fields, because a packer that groups its
|
|
86
|
+
// arrays (`{ ...featureData, instanceData }`) is otherwise back to maintaining
|
|
87
|
+
// the nested half by hand — which is where the bug this guards against lived.
|
|
88
|
+
//
|
|
89
|
+
// A Map or Set counts as a container, so a matrix keyed by sample name — what
|
|
90
|
+
// the wiggle score matrix and the variant genotype matrix return — derives its
|
|
91
|
+
// list here rather than looping at the call site. Both had to, because
|
|
92
|
+
// `Object.entries` is blank on either.
|
|
93
|
+
export function rpcResultWithArrayBuffers(value) {
|
|
94
|
+
// A Set because several fields can be views onto one allocation (subarrays of
|
|
95
|
+
// a shared buffer), and postMessage rejects a transfer list with a duplicate
|
|
96
|
+
// entry outright. SharedArrayBuffer-backed views are skipped for the same
|
|
97
|
+
// reason: a SAB can't be transferred, only cloned.
|
|
98
|
+
const transferables = new Set();
|
|
99
|
+
const detached = [];
|
|
100
|
+
function collect(obj, prefix, depth) {
|
|
101
|
+
for (const [path, field] of containerEntries(obj, prefix)) {
|
|
102
|
+
if (ArrayBuffer.isView(field)) {
|
|
103
|
+
if (field.buffer instanceof ArrayBuffer) {
|
|
104
|
+
const bad = detachedFieldName(field, path);
|
|
105
|
+
if (bad) {
|
|
106
|
+
detached.push(bad);
|
|
107
|
+
}
|
|
108
|
+
transferables.add(field.buffer);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (depth > 0 &&
|
|
112
|
+
field !== null &&
|
|
113
|
+
typeof field === 'object' &&
|
|
114
|
+
!Array.isArray(field)) {
|
|
115
|
+
collect(field, path, depth - 1);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
collect(value, '', 1);
|
|
120
|
+
if (detached.length > 0) {
|
|
121
|
+
throw new Error(`RPC result carries already-detached buffer(s): ${detached.join(', ')}. ` +
|
|
122
|
+
'A typed array is being held across calls and re-posted; allocate it per call.');
|
|
123
|
+
}
|
|
124
|
+
return rpcResult(value, [...transferables]);
|
|
125
|
+
}
|
|
126
|
+
export default class RpcServer {
|
|
127
|
+
methods;
|
|
128
|
+
self;
|
|
129
|
+
constructor(methods) {
|
|
130
|
+
if (!workerSelf) {
|
|
131
|
+
throw new Error('RpcServer must be constructed in a worker global scope');
|
|
132
|
+
}
|
|
133
|
+
this.methods = methods;
|
|
134
|
+
this.self = workerSelf;
|
|
135
|
+
this.self.addEventListener('message', (e) => {
|
|
136
|
+
this.handler(e);
|
|
137
|
+
});
|
|
138
|
+
// A call frame this realm could not deserialize. It carries no uid, so
|
|
139
|
+
// there is nothing to reply to and the caller's promise is already lost —
|
|
140
|
+
// all this can do is say so, which beats the silence it replaced.
|
|
141
|
+
this.self.addEventListener('messageerror', () => {
|
|
142
|
+
console.error('[Worker RPC] a message could not be deserialized');
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
handler(e) {
|
|
146
|
+
const { libRpc, method, uid, data, stopToken } = e.data;
|
|
147
|
+
if (!libRpc) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (stopToken !== undefined) {
|
|
151
|
+
// Every in-flight method holding this token now sees it as stopped at its
|
|
152
|
+
// next await boundary, and any AbortSignal taken against it aborts, so a
|
|
153
|
+
// canceled read drops off the socket. Handled ahead of the method lookup:
|
|
154
|
+
// this frame has no method name and would otherwise land in the unknown
|
|
155
|
+
// method branch with no uid to reply to.
|
|
156
|
+
markStopTokenStopped(stopToken);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const methodFn = Object.hasOwn(this.methods, method)
|
|
160
|
+
? this.methods[method]
|
|
161
|
+
: undefined;
|
|
162
|
+
if (methodFn) {
|
|
163
|
+
// wrap so a synchronous throw inside methodFn still routes to .throw()
|
|
164
|
+
;
|
|
165
|
+
(async () => methodFn(data))()
|
|
166
|
+
.then(response => {
|
|
167
|
+
this.reply(uid, response, method);
|
|
168
|
+
})
|
|
169
|
+
.catch((error) => {
|
|
170
|
+
this.throw(uid, serializeError(error));
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.throw(uid, `Unknown RPC method "${method}"`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// every outgoing message carries the libRpc tag so the client can tell our
|
|
178
|
+
// frames apart from unrelated worker traffic
|
|
179
|
+
post(payload, transferables) {
|
|
180
|
+
this.self.postMessage({ ...payload, libRpc: true }, transferables);
|
|
181
|
+
}
|
|
182
|
+
reply(uid, response, method) {
|
|
183
|
+
// a renderer may return an rpcResult wrapper carrying transferables for
|
|
184
|
+
// zero-copy; a plain return travels as data with nothing to transfer
|
|
185
|
+
const { value, transferables } = isRpcResult(response)
|
|
186
|
+
? response
|
|
187
|
+
: { value: response, transferables: [] };
|
|
188
|
+
try {
|
|
189
|
+
this.post({ uid, data: value }, transferables);
|
|
190
|
+
}
|
|
191
|
+
catch (e) {
|
|
192
|
+
// postMessage blames a transfer-list entry by index alone, into a list
|
|
193
|
+
// assembled by hand here in the worker — so name the method and the field
|
|
194
|
+
// before the error leaves. The method is not otherwise recoverable: the
|
|
195
|
+
// throw happens in a `.then`, so the stack is `post`/`reply` and nothing
|
|
196
|
+
// above them. See explainTransferError; it only runs here.
|
|
197
|
+
this.throw(uid, serializeError(explainTransferError(e, value, transferables, method)));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* The only frame that must never fail to send, because it is the last one: a
|
|
202
|
+
* `throw` that throws leaves the call unsettled, and an unsettled call is a
|
|
203
|
+
* display spinning forever with no error to show. Everything upstream of here
|
|
204
|
+
* routes a failure into this, including {@link reply}'s own catch, so there is
|
|
205
|
+
* nothing left to catch it.
|
|
206
|
+
*
|
|
207
|
+
* It can fail. `serializeError` copies an error's own-enumerable properties so
|
|
208
|
+
* custom data survives the boundary, and it only skips the ones that are
|
|
209
|
+
* *themselves* functions — a property holding an object with a method on it
|
|
210
|
+
* (an arrow-function class field, an adapter, a `cause` that is a `Response`)
|
|
211
|
+
* is copied whole and is not structured-cloneable. So fall back to the
|
|
212
|
+
* message, which by construction is a string.
|
|
213
|
+
*/
|
|
214
|
+
throw(uid, error) {
|
|
215
|
+
try {
|
|
216
|
+
this.post({ uid, error }, []);
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
const message = typeof error === 'string' ? error : error.message;
|
|
220
|
+
// Never empty. `new Error()` has an empty message, and the client tells an
|
|
221
|
+
// error frame from a reply by which key the frame carries — so an empty
|
|
222
|
+
// one is a rejection the caller cannot read a reason from, and used to be
|
|
223
|
+
// a frame it read as a reply. Naming the error's own class is the most the
|
|
224
|
+
// fallback still has to work with.
|
|
225
|
+
this.post({
|
|
226
|
+
uid,
|
|
227
|
+
error: message ||
|
|
228
|
+
`${typeof error === 'string' ? 'Error' : (error.name ?? 'Error')} (no message)`,
|
|
229
|
+
}, []);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
emit(eventName, data, transferables) {
|
|
233
|
+
this.post({ eventName, data }, transferables ?? []);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
@@ -1,31 +1,78 @@
|
|
|
1
1
|
import BaseRpcDriver from './BaseRpcDriver.ts';
|
|
2
|
-
import type
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import type PluginManager from '../PluginManager.ts';
|
|
3
|
+
import type { AnyConfigurationModel } from '../configuration/index.ts';
|
|
4
|
+
import type RpcMethodType from '../pluggableElementTypes/RpcMethodType.ts';
|
|
5
|
+
import type { PluginDefinition } from '../pluginDefinitions.ts';
|
|
6
|
+
import type { StatusCallback } from '../util/progress.ts';
|
|
7
|
+
export interface WorkerHandle {
|
|
8
|
+
destroy(): void;
|
|
9
|
+
onError?(callback: () => void): void;
|
|
10
|
+
notifyStopToken?(id: string): void;
|
|
11
|
+
on?(eventName: string, listener: (data: unknown) => void): void;
|
|
12
|
+
postMessage?(message: unknown): void;
|
|
13
|
+
call(functionName: string, args?: unknown, options?: {
|
|
14
|
+
statusCallback?: StatusCallback;
|
|
15
|
+
}): Promise<unknown>;
|
|
6
16
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
17
|
+
declare module '@jbrowse/core/PluginManager' {
|
|
18
|
+
interface ExtensionPointRegistry {
|
|
19
|
+
'Core-extendWorker': {
|
|
20
|
+
args: WorkerHandle;
|
|
21
|
+
result: WorkerHandle;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
10
24
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
call(funcName: string, args: Record<string, unknown>, opts: Options): Promise<unknown>;
|
|
25
|
+
export interface WebWorkerRpcDriverOptions {
|
|
26
|
+
makeWorkerInstance: () => Worker;
|
|
27
|
+
plugins: PluginDefinition[];
|
|
28
|
+
windowHref: string;
|
|
29
|
+
numberGrouping: boolean;
|
|
17
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Runs RPC methods in a pool of lazily-booted web workers, with our own
|
|
33
|
+
* state-group-aware round-robin assignment (one sticky worker per session) so a
|
|
34
|
+
* session's calls land on the same worker and can share cached adapters.
|
|
35
|
+
*
|
|
36
|
+
* The pool is here rather than in a `WorkerPoolRpcDriver` above it: that base
|
|
37
|
+
* abstracted `makeWorker`, which has one implementation. It is a plain
|
|
38
|
+
* overridable method now, which is all the seam was ever used for. ADR-086.
|
|
39
|
+
*/
|
|
18
40
|
export default class WebWorkerRpcDriver extends BaseRpcDriver {
|
|
19
|
-
|
|
20
|
-
plugins: PluginDefinition[];
|
|
21
|
-
windowHref: string;
|
|
22
|
-
};
|
|
41
|
+
private options;
|
|
23
42
|
name: string;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
43
|
+
private lastWorkerAssignment;
|
|
44
|
+
private workerAssignments;
|
|
45
|
+
private workerPool?;
|
|
46
|
+
private unregisterBroadcaster;
|
|
47
|
+
private destroyed;
|
|
48
|
+
constructor(pluginManager: PluginManager, config: AnyConfigurationModel, options: WebWorkerRpcDriverOptions);
|
|
49
|
+
/**
|
|
50
|
+
* Free the session on the worker it was assigned to, and drop the assignment
|
|
51
|
+
* so it doesn't accumulate for the life of the driver.
|
|
52
|
+
*
|
|
53
|
+
* A session with no assignment never dispatched anything, so there is nothing
|
|
54
|
+
* cached anywhere to free — and no pool to build in order to find that out.
|
|
55
|
+
*/
|
|
56
|
+
freeSession(sessionId: string): Promise<void>;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
private createWorkerPool;
|
|
59
|
+
private getWorkerPool;
|
|
60
|
+
getWorker(sessionId: string): Promise<WorkerHandle>;
|
|
61
|
+
/**
|
|
62
|
+
* Hand a freshly booted worker to whatever plugins want to extend it, and use
|
|
63
|
+
* whatever comes back as the pooled handle.
|
|
64
|
+
*
|
|
65
|
+
* Called from {@link LazyWorker.getWorker} rather than from `makeWorker`,
|
|
66
|
+
* which subclasses override — a seam that skipped the fold would silently
|
|
67
|
+
* un-extend every worker. It answers "what is this worker", not "what is this
|
|
68
|
+
* call", so folding at dispatch needed a WeakMap to stop rebuilding a
|
|
69
|
+
* plugin's wrapper per RPC; once per boot has nothing to memoize.
|
|
70
|
+
*/
|
|
71
|
+
extendWorker(worker: WorkerHandle): WorkerHandle;
|
|
72
|
+
protected transport(sessionId: string, rpcMethod: RpcMethodType, serializedArgs: Record<string, unknown>, statusCallback: StatusCallback | undefined): Promise<unknown>;
|
|
73
|
+
/**
|
|
74
|
+
* Boot one worker and run the configuration handshake. Overridable so a test
|
|
75
|
+
* can hand the pool a fake handle without a `Worker`; nothing in the app does.
|
|
76
|
+
*/
|
|
77
|
+
makeWorker(): Promise<WorkerHandle>;
|
|
30
78
|
}
|
|
31
|
-
export {};
|