@jbrowse/core 2.13.1 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +2 -2
  2. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +1 -1
  3. package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +3 -1
  4. package/BaseFeatureWidget/BaseFeatureDetail/index.js +23 -51
  5. package/BaseFeatureWidget/BaseFeatureDetail/util.js +1 -1
  6. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +11 -5
  7. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
  8. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +11 -7
  9. package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +1 -1
  10. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +6 -2
  11. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -5
  12. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +15 -5
  13. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +4 -2
  14. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +15 -5
  15. package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +2 -2
  16. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +2 -2
  17. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +5 -3
  18. package/BaseFeatureWidget/stateModelFactory.js +0 -2
  19. package/PluginLoader.d.ts +1 -2
  20. package/PluginLoader.js +16 -6
  21. package/PluginManager.d.ts +13 -13
  22. package/PluginManager.js +7 -2
  23. package/ReExports/modules.js +2 -11
  24. package/assemblyManager/assembly.d.ts +18 -12
  25. package/assemblyManager/assembly.js +75 -52
  26. package/assemblyManager/assemblyConfigSchema.d.ts +9 -7
  27. package/assemblyManager/assemblyConfigSchema.js +15 -16
  28. package/assemblyManager/assemblyManager.d.ts +109 -81
  29. package/assemblyManager/assemblyManager.js +3 -6
  30. package/configuration/configurationSchema.d.ts +1 -1
  31. package/configuration/configurationSchema.js +1 -2
  32. package/configuration/configurationSlot.js +7 -8
  33. package/configuration/util.js +0 -7
  34. package/data_adapters/BaseAdapter/BaseAdapter.d.ts +2 -1
  35. package/data_adapters/BaseAdapter/BaseAdapter.js +2 -1
  36. package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +6 -6
  37. package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +6 -6
  38. package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
  39. package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +0 -1
  40. package/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -8
  41. package/data_adapters/dataAdapterCache.d.ts +9 -6
  42. package/data_adapters/dataAdapterCache.js +16 -22
  43. package/package.json +5 -5
  44. package/pluggableElementTypes/AddTrackWorkflowType.js +0 -6
  45. package/pluggableElementTypes/ConnectionType.js +0 -6
  46. package/pluggableElementTypes/DisplayType.js +0 -20
  47. package/pluggableElementTypes/InternetAccountType.js +0 -11
  48. package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
  49. package/pluggableElementTypes/TextSearchAdapterType.js +0 -3
  50. package/pluggableElementTypes/TrackType.js +0 -11
  51. package/pluggableElementTypes/ViewType.js +0 -6
  52. package/pluggableElementTypes/WidgetType.js +0 -6
  53. package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +4 -3
  54. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +1 -3
  55. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +4 -5
  56. package/pluggableElementTypes/models/BaseDisplayModel.js +6 -14
  57. package/pluggableElementTypes/models/BaseTrackModel.js +8 -5
  58. package/pluggableElementTypes/models/InternetAccountModel.d.ts +1 -1
  59. package/pluggableElementTypes/models/InternetAccountModel.js +19 -13
  60. package/pluggableElementTypes/models/baseTrackConfig.js +2 -5
  61. package/pluggableElementTypes/renderers/BoxRendererType.d.ts +10 -4
  62. package/pluggableElementTypes/renderers/BoxRendererType.js +10 -26
  63. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +1 -1
  64. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +9 -12
  65. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +12 -19
  66. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +5 -5
  67. package/pluggableElementTypes/renderers/FeatureRendererType.js +6 -13
  68. package/pluggableElementTypes/renderers/RendererType.js +0 -10
  69. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +1 -1
  70. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +11 -9
  71. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +14 -14
  72. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +4 -4
  73. package/pluggableElementTypes/renderers/ServerSideRendererType.js +7 -5
  74. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +0 -1
  75. package/rpc/BaseRpcDriver.d.ts +1 -1
  76. package/rpc/BaseRpcDriver.js +12 -11
  77. package/rpc/MainThreadRpcDriver.d.ts +2 -2
  78. package/rpc/MainThreadRpcDriver.js +3 -0
  79. package/rpc/RpcManager.d.ts +1 -1
  80. package/rpc/RpcManager.js +11 -8
  81. package/rpc/configSchema.js +0 -1
  82. package/rpc/methods/CoreFreeResources.d.ts +2 -2
  83. package/rpc/methods/CoreGetFeatureDensityStats.d.ts +2 -2
  84. package/rpc/methods/CoreGetFeatureDetails.d.ts +1 -1
  85. package/rpc/methods/CoreGetFeatureDetails.js +3 -3
  86. package/rpc/methods/CoreGetFeatures.d.ts +1 -1
  87. package/rpc/methods/CoreGetFileInfo.d.ts +1 -1
  88. package/rpc/methods/CoreGetMetadata.d.ts +1 -1
  89. package/rpc/methods/CoreGetRefNames.d.ts +1 -1
  90. package/rpc/methods/util.d.ts +2 -2
  91. package/rpc/methods/util.js +0 -3
  92. package/tsconfig.build.tsbuildinfo +1 -1
  93. package/ui/AssemblySelector.js +3 -1
  94. package/ui/CascadingMenu.js +2 -1
  95. package/ui/CascadingMenuButton.js +3 -1
  96. package/ui/ColorPicker.js +14 -4
  97. package/ui/DropDownMenu.js +3 -1
  98. package/ui/EditableTypography.js +6 -2
  99. package/ui/ErrorMessage.d.ts +2 -2
  100. package/ui/ErrorMessage.js +37 -20
  101. package/ui/ErrorMessageStackTraceDialog.js +11 -9
  102. package/ui/FactoryResetDialog.d.ts +1 -1
  103. package/ui/FactoryResetDialog.js +9 -3
  104. package/ui/FatalErrorDialog.js +9 -3
  105. package/ui/FileSelector/FileSelector.js +8 -4
  106. package/ui/FileSelector/LocalFileChooser.js +7 -6
  107. package/ui/LoadingEllipses.js +1 -1
  108. package/ui/Menu.d.ts +4 -4
  109. package/ui/Menu.js +6 -4
  110. package/ui/MenuButton.js +6 -2
  111. package/ui/PrerenderedCanvas.js +8 -5
  112. package/ui/RedErrorMessageBox.js +13 -8
  113. package/ui/ResizeHandle.d.ts +1 -1
  114. package/ui/ReturnToImportFormDialog.js +3 -1
  115. package/ui/SanitizedHTML.js +1 -3
  116. package/ui/SnackbarModel.d.ts +12 -1
  117. package/ui/SnackbarModel.js +19 -3
  118. package/ui/theme.js +10 -7
  119. package/util/Base1DViewModel.js +3 -1
  120. package/util/QuickLRU.js +8 -8
  121. package/util/TimeTraveller.js +12 -4
  122. package/util/aborting.js +1 -1
  123. package/util/analytics.js +0 -1
  124. package/util/blockTypes.js +5 -9
  125. package/util/calculateStaticBlocks.d.ts +1 -1
  126. package/util/compositeMap.js +2 -2
  127. package/util/idMaker.js +0 -1
  128. package/util/index.d.ts +9 -8
  129. package/util/index.js +92 -51
  130. package/util/io/RemoteFileWithRangeCache.js +1 -3
  131. package/util/io/index.js +3 -5
  132. package/util/jexlStrings.js +5 -8
  133. package/util/layouts/GranularRectLayout.js +1 -4
  134. package/util/layouts/SceneGraph.d.ts +1 -1
  135. package/util/layouts/SceneGraph.js +2 -6
  136. package/util/map-obj.js +15 -7
  137. package/util/mst-reflection.js +1 -2
  138. package/util/nanoid.js +9 -8
  139. package/util/offscreenCanvasPonyfill.d.ts +1 -1
  140. package/util/offscreenCanvasPonyfill.js +7 -10
  141. package/util/offscreenCanvasUtils.d.ts +1 -1
  142. package/util/offscreenCanvasUtils.js +1 -3
  143. package/util/rxjs.js +5 -5
  144. package/util/simpleFeature.d.ts +2 -3
  145. package/util/simpleFeature.js +9 -12
  146. package/util/stats.js +3 -1
  147. package/util/tracks.d.ts +4 -2
  148. package/util/tracks.js +10 -11
  149. package/util/types/index.d.ts +5 -5
  150. package/util/types/index.js +8 -1
  151. package/util/types/mst.js +1 -0
  152. package/util/when.js +7 -2
package/rpc/RpcManager.js CHANGED
@@ -7,6 +7,7 @@ const configuration_1 = require("../configuration");
7
7
  const configSchema_1 = __importDefault(require("./configSchema"));
8
8
  const WebWorkerRpcDriver_1 = __importDefault(require("./WebWorkerRpcDriver"));
9
9
  const MainThreadRpcDriver_1 = __importDefault(require("./MainThreadRpcDriver"));
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
11
  const DriverClasses = {
11
12
  WebWorkerRpcDriver: WebWorkerRpcDriver_1.default,
12
13
  MainThreadRpcDriver: MainThreadRpcDriver_1.default,
@@ -16,9 +17,6 @@ class RpcManager {
16
17
  this.pluginManager = pluginManager;
17
18
  this.mainConfiguration = mainConfiguration;
18
19
  this.backendConfigurations = backendConfigurations;
19
- if (!mainConfiguration) {
20
- throw new Error('RpcManager requires at least a main configuration');
21
- }
22
20
  this.driverObjects = new Map();
23
21
  }
24
22
  getDriver(backendName) {
@@ -26,30 +24,35 @@ class RpcManager {
26
24
  if (driver) {
27
25
  return driver;
28
26
  }
29
- let newDriver;
30
27
  const config = this.mainConfiguration.drivers.get('WebWorkerRpcDriver');
31
28
  if (backendName === 'MainThreadRpcDriver') {
32
29
  const backendConfiguration = this.backendConfigurations.MainThreadRpcDriver;
33
30
  if (!backendConfiguration) {
34
31
  throw new Error(`requested RPC driver "${backendName}" is missing config`);
35
32
  }
36
- newDriver = new MainThreadRpcDriver_1.default({ ...backendConfiguration, config });
33
+ const newDriver = new MainThreadRpcDriver_1.default({
34
+ ...backendConfiguration,
35
+ config,
36
+ });
37
+ this.driverObjects.set(backendName, newDriver);
38
+ return newDriver;
37
39
  }
40
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
38
41
  else if (backendName === 'WebWorkerRpcDriver') {
39
42
  const backendConfiguration = this.backendConfigurations.WebWorkerRpcDriver;
40
43
  if (!backendConfiguration) {
41
44
  throw new Error(`requested RPC driver "${backendName}" is missing config`);
42
45
  }
43
- newDriver = new WebWorkerRpcDriver_1.default({ ...backendConfiguration, config }, {
46
+ const newDriver = new WebWorkerRpcDriver_1.default({ ...backendConfiguration, config }, {
44
47
  plugins: this.pluginManager.runtimePluginDefinitions,
45
48
  windowHref: window.location.href,
46
49
  });
50
+ this.driverObjects.set(backendName, newDriver);
51
+ return newDriver;
47
52
  }
48
53
  else {
49
54
  throw new Error(`requested RPC driver "${backendName}" is not installed`);
50
55
  }
51
- this.driverObjects.set(backendName, newDriver);
52
- return newDriver;
53
56
  }
54
57
  async getDriverForCall(_sessionId, _functionName, args) {
55
58
  const backendName = args.rpcDriverName ||
@@ -28,7 +28,6 @@ exports.default = (0, configuration_1.ConfigurationSchema)('RpcOptions', {
28
28
  WebWorkerRpcDriver: { type: 'WebWorkerRpcDriver' },
29
29
  }),
30
30
  }, {
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
31
  actions: (self) => ({
33
32
  addDriverConfig(configName, configSnapshot) {
34
33
  self.drivers.set(configName, configSnapshot);
@@ -7,6 +7,6 @@ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
7
7
  */
8
8
  export default class CoreFreeResources extends RpcMethodType {
9
9
  name: string;
10
- execute(specification: {}): Promise<number>;
11
- serializeArguments(args: {}, _rpcDriver: string): Promise<{}>;
10
+ execute(specification: Record<string, unknown>): Promise<number>;
11
+ serializeArguments(args: Record<string, unknown>, _rpcDriver: string): Promise<Record<string, unknown>>;
12
12
  }
@@ -7,9 +7,9 @@ export default class CoreGetFeatureDensityStats extends RpcMethodType {
7
7
  serializeArguments(args: RenderArgs & {
8
8
  signal?: AbortSignal;
9
9
  statusCallback?: (arg: string) => void;
10
- }, rpcDriver: string): Promise<{}>;
10
+ }, rpcDriver: string): Promise<Record<string, unknown>>;
11
11
  execute(args: {
12
- adapterConfig: {};
12
+ adapterConfig: Record<string, unknown>;
13
13
  regions: Region[];
14
14
  signal?: RemoteAbortSignal;
15
15
  headers?: Record<string, string>;
@@ -7,7 +7,7 @@ import { RenderArgsSerialized } from './util';
7
7
  */
8
8
  export default class CoreGetFeatureDetails extends RpcMethodType {
9
9
  name: string;
10
- serializeArguments(args: RenderArgs, rpcDriver: string): Promise<import("../../pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsSerialized | RenderArgs>;
10
+ serializeArguments(args: RenderArgs, rpcDriver: string): Promise<any>;
11
11
  execute(args: RenderArgsSerialized & {
12
12
  signal?: RemoteAbortSignal;
13
13
  }, rpcDriver: string): Promise<{
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
7
7
  const util_1 = require("../../util");
8
- const util_2 = require("./util");
9
8
  /**
10
9
  * fetches features from an adapter and call a renderer with them
11
10
  */
@@ -23,7 +22,8 @@ class CoreGetFeatureDetails extends RpcMethodType_1.default {
23
22
  return superArgs;
24
23
  }
25
24
  const { rendererType } = args;
26
- const RendererType = (0, util_2.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
25
+ const RendererType = this.pluginManager.getRendererType(rendererType);
26
+ // @ts-expect-error
27
27
  return RendererType.serializeArgsInClient(superArgs);
28
28
  }
29
29
  async execute(args, rpcDriver) {
@@ -33,7 +33,7 @@ class CoreGetFeatureDetails extends RpcMethodType_1.default {
33
33
  deserializedArgs = await this.deserializeArguments(args, rpcDriver);
34
34
  }
35
35
  const { rendererType, featureId } = deserializedArgs;
36
- const RendererType = (0, util_2.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
36
+ const RendererType = this.pluginManager.getRendererType(rendererType);
37
37
  return {
38
38
  // @ts-expect-error
39
39
  feature: (_b = (_a = RendererType.sessions[(0, util_1.getLayoutId)(args)]) === null || _a === void 0 ? void 0 : _a.cachedLayout.layout.getDataByID(featureId)) === null || _b === void 0 ? void 0 : _b.toJSON(),
@@ -10,7 +10,7 @@ export default class CoreGetFeatures extends RpcMethodType {
10
10
  execute(args: {
11
11
  sessionId: string;
12
12
  regions: Region[];
13
- adapterConfig: {};
13
+ adapterConfig: Record<string, unknown>;
14
14
  signal?: RemoteAbortSignal;
15
15
  opts?: any;
16
16
  }, rpcDriver: string): Promise<SimpleFeatureSerialized[]>;
@@ -5,6 +5,6 @@ export default class CoreGetFileInfo extends RpcMethodType {
5
5
  execute(args: {
6
6
  sessionId: string;
7
7
  signal: RemoteAbortSignal;
8
- adapterConfig: {};
8
+ adapterConfig: Record<string, unknown>;
9
9
  }, rpcDriver: string): Promise<unknown>;
10
10
  }
@@ -5,6 +5,6 @@ export default class CoreGetMetadata extends RpcMethodType {
5
5
  execute(args: {
6
6
  sessionId: string;
7
7
  signal: RemoteAbortSignal;
8
- adapterConfig: {};
8
+ adapterConfig: Record<string, unknown>;
9
9
  }, rpcDriver: string): Promise<unknown>;
10
10
  }
@@ -5,6 +5,6 @@ export default class CoreGetRefNames extends RpcMethodType {
5
5
  execute(args: {
6
6
  sessionId: string;
7
7
  signal: RemoteAbortSignal;
8
- adapterConfig: {};
8
+ adapterConfig: Record<string, unknown>;
9
9
  }, rpcDriver: string): Promise<string[]>;
10
10
  }
@@ -2,13 +2,13 @@ import { ServerSideRendererType } from '../../pluggableElementTypes';
2
2
  import { RenderArgs as ServerSideRenderArgs, RenderArgsSerialized as ServerSideRenderArgsSerialized } from '../../pluggableElementTypes/renderers/ServerSideRendererType';
3
3
  import { Region } from '../../util';
4
4
  export interface RenderArgs extends ServerSideRenderArgs {
5
- adapterConfig: {};
5
+ adapterConfig: Record<string, unknown>;
6
6
  rendererType: string;
7
7
  }
8
8
  export interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {
9
9
  assemblyName: string;
10
10
  regions: Region[];
11
- adapterConfig: {};
11
+ adapterConfig: Record<string, unknown>;
12
12
  rendererType: string;
13
13
  }
14
14
  export declare function validateRendererType<T>(rendererType: string, RendererType: T): ServerSideRendererType;
@@ -2,9 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateRendererType = validateRendererType;
4
4
  function validateRendererType(rendererType, RendererType) {
5
- if (!RendererType) {
6
- throw new Error(`renderer "${rendererType}" not found`);
7
- }
8
5
  // @ts-expect-error
9
6
  if (!RendererType.ReactComponent) {
10
7
  throw new Error(`renderer ${rendererType} has no ReactComponent, it may not be completely implemented yet`);