@jbrowse/core 2.4.0 → 2.4.1

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 (88) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.js +13 -9
  2. package/BaseFeatureWidget/SequencePanel.js +1 -1
  3. package/BaseFeatureWidget/index.js +2 -2
  4. package/PluginLoader.js +8 -8
  5. package/PluginManager.d.ts +1 -1
  6. package/PluginManager.js +2 -3
  7. package/ReExports/Attributes.d.ts +1 -2
  8. package/ReExports/Attributes.js +4 -3
  9. package/ReExports/BaseCard.d.ts +1 -2
  10. package/ReExports/BaseCard.js +4 -3
  11. package/ReExports/DataGrid.d.ts +1 -2
  12. package/ReExports/DataGrid.js +2 -2
  13. package/ReExports/FeatureDetails.d.ts +1 -2
  14. package/ReExports/FeatureDetails.js +4 -3
  15. package/ReExports/index.d.ts +1 -2
  16. package/ReExports/index.js +3 -2
  17. package/ReExports/modules.d.ts +1 -1
  18. package/ReExports/modules.js +2 -2
  19. package/assemblyManager/assembly.js +5 -5
  20. package/assemblyManager/assemblyConfigSchema.js +2 -2
  21. package/configuration/configurationSchema.js +1 -1
  22. package/configuration/util.js +1 -1
  23. package/data_adapters/BaseAdapter.js +1 -1
  24. package/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  25. package/data_adapters/dataAdapterCache.d.ts +3 -2
  26. package/data_adapters/dataAdapterCache.js +2 -3
  27. package/package.json +2 -2
  28. package/pluggableElementTypes/RpcMethodType.js +1 -1
  29. package/pluggableElementTypes/index.d.ts +11 -1
  30. package/pluggableElementTypes/index.js +23 -23
  31. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -2
  32. package/pluggableElementTypes/models/BaseTrackModel.js +8 -13
  33. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +2 -2
  34. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +1 -3
  35. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +1 -1
  36. package/pluggableElementTypes/renderers/index.d.ts +7 -9
  37. package/pluggableElementTypes/renderers/index.js +15 -15
  38. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +1 -1
  39. package/rpc/BaseRpcDriver.js +7 -8
  40. package/rpc/WebWorkerRpcDriver.js +18 -12
  41. package/rpc/coreRpcMethods.d.ts +9 -11
  42. package/rpc/coreRpcMethods.js +17 -17
  43. package/rpc/methods/CoreGetFeatureDetails.js +1 -1
  44. package/rpc/methods/util.d.ts +2 -2
  45. package/rpc/methods/util.js +2 -2
  46. package/rpc/remoteAbortSignals.js +0 -1
  47. package/tsconfig.build.tsbuildinfo +1 -1
  48. package/ui/App.js +1 -1
  49. package/ui/AppLogo.js +1 -6
  50. package/ui/ColorPicker.js +1 -1
  51. package/ui/Dialog.js +1 -1
  52. package/ui/DrawerWidget.js +4 -4
  53. package/ui/EditableTypography.js +1 -1
  54. package/ui/FileSelector/FileSelector.d.ts +2 -2
  55. package/ui/FileSelector/FileSelector.js +24 -35
  56. package/ui/FileSelector/index.d.ts +1 -2
  57. package/ui/FileSelector/index.js +3 -2
  58. package/ui/LoadingEllipses.js +4 -4
  59. package/ui/Menu.js +45 -32
  60. package/ui/ResizeBar.js +6 -1
  61. package/ui/ResizeHandle.js +3 -6
  62. package/ui/ViewContainer.js +4 -6
  63. package/ui/theme.js +7 -7
  64. package/util/Base1DUtils.js +16 -14
  65. package/util/Base1DViewModel.d.ts +1 -1
  66. package/util/Base1DViewModel.js +9 -8
  67. package/util/aborting.js +1 -1
  68. package/util/analytics.js +1 -1
  69. package/util/blockTypes.js +10 -10
  70. package/util/color/index.d.ts +1 -2
  71. package/util/color/index.js +4 -3
  72. package/util/idMaker.js +5 -8
  73. package/util/index.d.ts +6 -7
  74. package/util/index.js +25 -48
  75. package/util/io/RemoteFileWithRangeCache.js +2 -2
  76. package/util/io/index.d.ts +1 -2
  77. package/util/io/index.js +6 -6
  78. package/util/jexl.js +3 -1
  79. package/util/layouts/GranularRectLayout.js +10 -4
  80. package/util/layouts/MultiLayout.js +1 -1
  81. package/util/layouts/SceneGraph.js +3 -7
  82. package/util/offscreenCanvasPonyfill.js +4 -3
  83. package/util/offscreenCanvasUtils.js +1 -0
  84. package/util/tracks.d.ts +1 -1
  85. package/util/tracks.js +0 -1
  86. package/util/types/index.d.ts +1 -1
  87. package/util/types/index.js +3 -3
  88. package/util/types/mst.js +3 -3
@@ -67,9 +67,7 @@ class ComparativeServerSideRenderer extends ServerSideRendererType_1.default {
67
67
  const pm = this.pluginManager;
68
68
  const { sessionId, adapterConfig } = renderArgs;
69
69
  const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
70
- let regions = [];
71
- // @ts-ignore this is instantiated by the getFeatures call
72
- regions = renderArgs.regions;
70
+ const regions = renderArgs.regions;
73
71
  if (!regions || regions.length === 0) {
74
72
  console.warn('no regions supplied to comparative renderer');
75
73
  return [];
@@ -25,7 +25,6 @@ export interface RenderArgsDeserialized extends BaseRenderArgs {
25
25
  config: AnyConfigurationModel;
26
26
  filters: SerializableFilterChain;
27
27
  }
28
- export type { RenderResults };
29
28
  export interface ResultsSerialized extends Omit<RenderResults, 'reactElement'> {
30
29
  html: string;
31
30
  }
@@ -87,3 +86,4 @@ export default class ServerSideRenderer extends RendererType {
87
86
  renderInWorker(args: RenderArgsSerialized): Promise<ResultsSerialized>;
88
87
  freeResourcesInClient(rpcManager: RpcManager, args: RenderArgs): Promise<number>;
89
88
  }
89
+ export { type RenderResults } from './RendererType';
@@ -1,9 +1,7 @@
1
- import BoxRendererType from './BoxRendererType';
2
- import CircularChordRendererType from './CircularChordRendererType';
3
- import ComparativeServerSideRendererType from './ComparativeServerSideRendererType';
4
- import FeatureRendererType from './FeatureRendererType';
5
- import RendererType, { RenderProps } from './RendererType';
6
- import ServerSideRenderedContent from './ServerSideRenderedContent';
7
- import ServerSideRendererType from './ServerSideRendererType';
8
- export { BoxRendererType, CircularChordRendererType, ComparativeServerSideRendererType, FeatureRendererType, RendererType, ServerSideRenderedContent, ServerSideRendererType, };
9
- export type { RenderProps };
1
+ export { default as BoxRendererType } from './BoxRendererType';
2
+ export { default as ComparativeServerSideRendererType } from './ComparativeServerSideRendererType';
3
+ export { default as CircularChordRendererType } from './CircularChordRendererType';
4
+ export { default as RendererType, type RenderProps } from './RendererType';
5
+ export { default as FeatureRendererType } from './FeatureRendererType';
6
+ export { default as ServerSideRenderedContent } from './ServerSideRenderedContent';
7
+ export { default as ServerSideRendererType } from './ServerSideRendererType';
@@ -3,18 +3,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ServerSideRendererType = exports.ServerSideRenderedContent = exports.RendererType = exports.FeatureRendererType = exports.ComparativeServerSideRendererType = exports.CircularChordRendererType = exports.BoxRendererType = void 0;
7
- const BoxRendererType_1 = __importDefault(require("./BoxRendererType"));
8
- exports.BoxRendererType = BoxRendererType_1.default;
9
- const CircularChordRendererType_1 = __importDefault(require("./CircularChordRendererType"));
10
- exports.CircularChordRendererType = CircularChordRendererType_1.default;
11
- const ComparativeServerSideRendererType_1 = __importDefault(require("./ComparativeServerSideRendererType"));
12
- exports.ComparativeServerSideRendererType = ComparativeServerSideRendererType_1.default;
13
- const FeatureRendererType_1 = __importDefault(require("./FeatureRendererType"));
14
- exports.FeatureRendererType = FeatureRendererType_1.default;
15
- const RendererType_1 = __importDefault(require("./RendererType"));
16
- exports.RendererType = RendererType_1.default;
17
- const ServerSideRenderedContent_1 = __importDefault(require("./ServerSideRenderedContent"));
18
- exports.ServerSideRenderedContent = ServerSideRenderedContent_1.default;
19
- const ServerSideRendererType_1 = __importDefault(require("./ServerSideRendererType"));
20
- exports.ServerSideRendererType = ServerSideRendererType_1.default;
6
+ exports.ServerSideRendererType = exports.ServerSideRenderedContent = exports.FeatureRendererType = exports.RendererType = exports.CircularChordRendererType = exports.ComparativeServerSideRendererType = exports.BoxRendererType = void 0;
7
+ var BoxRendererType_1 = require("./BoxRendererType");
8
+ Object.defineProperty(exports, "BoxRendererType", { enumerable: true, get: function () { return __importDefault(BoxRendererType_1).default; } });
9
+ var ComparativeServerSideRendererType_1 = require("./ComparativeServerSideRendererType");
10
+ Object.defineProperty(exports, "ComparativeServerSideRendererType", { enumerable: true, get: function () { return __importDefault(ComparativeServerSideRendererType_1).default; } });
11
+ var CircularChordRendererType_1 = require("./CircularChordRendererType");
12
+ Object.defineProperty(exports, "CircularChordRendererType", { enumerable: true, get: function () { return __importDefault(CircularChordRendererType_1).default; } });
13
+ var RendererType_1 = require("./RendererType");
14
+ Object.defineProperty(exports, "RendererType", { enumerable: true, get: function () { return __importDefault(RendererType_1).default; } });
15
+ var FeatureRendererType_1 = require("./FeatureRendererType");
16
+ Object.defineProperty(exports, "FeatureRendererType", { enumerable: true, get: function () { return __importDefault(FeatureRendererType_1).default; } });
17
+ var ServerSideRenderedContent_1 = require("./ServerSideRenderedContent");
18
+ Object.defineProperty(exports, "ServerSideRenderedContent", { enumerable: true, get: function () { return __importDefault(ServerSideRenderedContent_1).default; } });
19
+ var ServerSideRendererType_1 = require("./ServerSideRendererType");
20
+ Object.defineProperty(exports, "ServerSideRendererType", { enumerable: true, get: function () { return __importDefault(ServerSideRendererType_1).default; } });
@@ -15,7 +15,7 @@ class SerializableFilterChain {
15
15
  passes(...args) {
16
16
  for (let i = 0; i < this.filterChain.length; i += 1) {
17
17
  if (
18
- // @ts-ignore
18
+ // @ts-expect-error
19
19
  !this.filterChain[i].expr.evalSync({ feature: args[0] })) {
20
20
  return false;
21
21
  }
@@ -76,7 +76,7 @@ class BaseRpcDriver {
76
76
  filterArgs(thing, sessionId) {
77
77
  if (Array.isArray(thing)) {
78
78
  return thing
79
- .filter(isClonable)
79
+ .filter(thing => isClonable(thing))
80
80
  .map(t => this.filterArgs(t, sessionId));
81
81
  }
82
82
  if (typeof thing === 'object' && thing !== null) {
@@ -106,7 +106,11 @@ class BaseRpcDriver {
106
106
  const hardwareConcurrency = detectHardwareConcurrency();
107
107
  const workerCount = (0, configuration_1.readConfObject)(this.config, 'workerCount') ||
108
108
  (0, util_1.clamp)(1, Math.max(1, hardwareConcurrency - 1), 5);
109
- return [...new Array(workerCount)].map(() => new LazyWorker(this));
109
+ const workers = [];
110
+ for (let i = 0; i < workerCount; i++) {
111
+ workers.push(new LazyWorker(this));
112
+ }
113
+ return workers;
110
114
  }
111
115
  getWorkerPool() {
112
116
  if (!this.workerPool) {
@@ -125,12 +129,7 @@ class BaseRpcDriver {
125
129
  this.lastWorkerAssignment = workerAssignment;
126
130
  workerNumber = workerAssignment;
127
131
  }
128
- // console.log(`${sessionId} -> worker ${workerNumber}`)
129
- const worker = workers[workerNumber].getWorker();
130
- if (!worker) {
131
- throw new Error('no web workers registered for RPC');
132
- }
133
- return worker;
132
+ return workers[workerNumber].getWorker();
134
133
  }
135
134
  async call(pluginManager, sessionId, functionName, args, options = {}) {
136
135
  if (!sessionId) {
@@ -46,18 +46,24 @@ class WebWorkerRpcDriver extends BaseRpcDriver_1.default {
46
46
  // send the worker its boot configuration using info from the pluginManager
47
47
  return new Promise((resolve, reject) => {
48
48
  const listener = (e) => {
49
- if (e.data.message === 'ready') {
50
- resolve(worker);
51
- worker.workers[0].removeEventListener('message', listener);
52
- }
53
- else if (e.data.message === 'readyForConfig') {
54
- worker.workers[0].postMessage({
55
- message: 'config',
56
- config: this.workerBootConfiguration,
57
- });
58
- }
59
- else if (e.data.message === 'error') {
60
- reject((0, serialize_error_1.deserializeError)(e.data.error));
49
+ switch (e.data.message) {
50
+ case 'ready': {
51
+ resolve(worker);
52
+ worker.workers[0].removeEventListener('message', listener);
53
+ break;
54
+ }
55
+ case 'readyForConfig': {
56
+ worker.workers[0].postMessage({
57
+ message: 'config',
58
+ config: this.workerBootConfiguration,
59
+ });
60
+ break;
61
+ }
62
+ case 'error': {
63
+ reject((0, serialize_error_1.deserializeError)(e.data.error));
64
+ break;
65
+ }
66
+ // No default
61
67
  }
62
68
  };
63
69
  worker.workers[0].addEventListener('message', listener);
@@ -1,11 +1,9 @@
1
- import CoreGetRefNames from './methods/CoreGetRefNames';
2
- import CoreGetMetadata from './methods/CoreGetMetadata';
3
- import CoreGetFeatureDetails from './methods/CoreGetFeatureDetails';
4
- import CoreGetFeatures from './methods/CoreGetFeatures';
5
- import CoreGetFileInfo from './methods/CoreGetFileInfo';
6
- import CoreFreeResources from './methods/CoreFreeResources';
7
- import CoreRender from './methods/CoreRender';
8
- import CoreEstimateRegionStats from './methods/CoreEstimateRegionStats';
9
- import { RenderArgs } from './methods/util';
10
- export type { RenderArgs };
11
- export { CoreGetRefNames, CoreGetFileInfo, CoreGetMetadata, CoreGetFeatures, CoreRender, CoreGetFeatureDetails, CoreFreeResources, CoreEstimateRegionStats, };
1
+ export { default as CoreGetRefNames } from './methods/CoreGetRefNames';
2
+ export { default as CoreGetFeatureDetails } from './methods/CoreGetFeatureDetails';
3
+ export { default as CoreGetMetadata } from './methods/CoreGetMetadata';
4
+ export { default as CoreGetFileInfo } from './methods/CoreGetFileInfo';
5
+ export { default as CoreGetFeatures } from './methods/CoreGetFeatures';
6
+ export { default as CoreRender } from './methods/CoreRender';
7
+ export { default as CoreFreeResources } from './methods/CoreFreeResources';
8
+ export { type RenderArgs } from './methods/util';
9
+ export { default as CoreEstimateRegionStats } from './methods/CoreEstimateRegionStats';
@@ -3,20 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CoreEstimateRegionStats = exports.CoreFreeResources = exports.CoreGetFeatureDetails = exports.CoreRender = exports.CoreGetFeatures = exports.CoreGetMetadata = exports.CoreGetFileInfo = exports.CoreGetRefNames = void 0;
7
- const CoreGetRefNames_1 = __importDefault(require("./methods/CoreGetRefNames"));
8
- exports.CoreGetRefNames = CoreGetRefNames_1.default;
9
- const CoreGetMetadata_1 = __importDefault(require("./methods/CoreGetMetadata"));
10
- exports.CoreGetMetadata = CoreGetMetadata_1.default;
11
- const CoreGetFeatureDetails_1 = __importDefault(require("./methods/CoreGetFeatureDetails"));
12
- exports.CoreGetFeatureDetails = CoreGetFeatureDetails_1.default;
13
- const CoreGetFeatures_1 = __importDefault(require("./methods/CoreGetFeatures"));
14
- exports.CoreGetFeatures = CoreGetFeatures_1.default;
15
- const CoreGetFileInfo_1 = __importDefault(require("./methods/CoreGetFileInfo"));
16
- exports.CoreGetFileInfo = CoreGetFileInfo_1.default;
17
- const CoreFreeResources_1 = __importDefault(require("./methods/CoreFreeResources"));
18
- exports.CoreFreeResources = CoreFreeResources_1.default;
19
- const CoreRender_1 = __importDefault(require("./methods/CoreRender"));
20
- exports.CoreRender = CoreRender_1.default;
21
- const CoreEstimateRegionStats_1 = __importDefault(require("./methods/CoreEstimateRegionStats"));
22
- exports.CoreEstimateRegionStats = CoreEstimateRegionStats_1.default;
6
+ exports.CoreEstimateRegionStats = exports.CoreFreeResources = exports.CoreRender = exports.CoreGetFeatures = exports.CoreGetFileInfo = exports.CoreGetMetadata = exports.CoreGetFeatureDetails = exports.CoreGetRefNames = void 0;
7
+ var CoreGetRefNames_1 = require("./methods/CoreGetRefNames");
8
+ Object.defineProperty(exports, "CoreGetRefNames", { enumerable: true, get: function () { return __importDefault(CoreGetRefNames_1).default; } });
9
+ var CoreGetFeatureDetails_1 = require("./methods/CoreGetFeatureDetails");
10
+ Object.defineProperty(exports, "CoreGetFeatureDetails", { enumerable: true, get: function () { return __importDefault(CoreGetFeatureDetails_1).default; } });
11
+ var CoreGetMetadata_1 = require("./methods/CoreGetMetadata");
12
+ Object.defineProperty(exports, "CoreGetMetadata", { enumerable: true, get: function () { return __importDefault(CoreGetMetadata_1).default; } });
13
+ var CoreGetFileInfo_1 = require("./methods/CoreGetFileInfo");
14
+ Object.defineProperty(exports, "CoreGetFileInfo", { enumerable: true, get: function () { return __importDefault(CoreGetFileInfo_1).default; } });
15
+ var CoreGetFeatures_1 = require("./methods/CoreGetFeatures");
16
+ Object.defineProperty(exports, "CoreGetFeatures", { enumerable: true, get: function () { return __importDefault(CoreGetFeatures_1).default; } });
17
+ var CoreRender_1 = require("./methods/CoreRender");
18
+ Object.defineProperty(exports, "CoreRender", { enumerable: true, get: function () { return __importDefault(CoreRender_1).default; } });
19
+ var CoreFreeResources_1 = require("./methods/CoreFreeResources");
20
+ Object.defineProperty(exports, "CoreFreeResources", { enumerable: true, get: function () { return __importDefault(CoreFreeResources_1).default; } });
21
+ var CoreEstimateRegionStats_1 = require("./methods/CoreEstimateRegionStats");
22
+ Object.defineProperty(exports, "CoreEstimateRegionStats", { enumerable: true, get: function () { return __importDefault(CoreEstimateRegionStats_1).default; } });
@@ -34,7 +34,7 @@ class CoreGetFeatureDetails extends RpcMethodType_1.default {
34
34
  }
35
35
  const { rendererType, featureId } = deserializedArgs;
36
36
  const RendererType = (0, util_2.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
37
- // @ts-ignore
37
+ // @ts-expect-error
38
38
  const sess = RendererType.sessions[(0, util_1.getLayoutId)(args)];
39
39
  const { layout } = sess.cachedLayout;
40
40
  const xref = layout.getDataByID(featureId);
@@ -1,4 +1,4 @@
1
- import ServerSideRendererType, { RenderArgs as ServerSideRenderArgs, RenderArgsSerialized as ServerSideRenderArgsSerialized, RenderResults, ResultsSerialized } from '../../pluggableElementTypes/renderers/ServerSideRendererType';
1
+ import ServerSideRendererType, { RenderArgs as ServerSideRenderArgs, RenderArgsSerialized as ServerSideRenderArgsSerialized } from '../../pluggableElementTypes/renderers/ServerSideRendererType';
2
2
  import { Region } from '../../util';
3
3
  export interface RenderArgs extends ServerSideRenderArgs {
4
4
  adapterConfig: {};
@@ -10,5 +10,5 @@ export interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {
10
10
  adapterConfig: {};
11
11
  rendererType: string;
12
12
  }
13
- export type { RenderResults, ResultsSerialized };
14
13
  export declare function validateRendererType<T>(rendererType: string, RendererType: T): T & ServerSideRendererType;
14
+ export { type RenderResults, type ResultsSerialized, } from '../../pluggableElementTypes/renderers/ServerSideRendererType';
@@ -9,12 +9,12 @@ function validateRendererType(rendererType, RendererType) {
9
9
  if (!RendererType) {
10
10
  throw new Error(`renderer "${rendererType}" not found`);
11
11
  }
12
- // @ts-ignore
12
+ // @ts-expect-error
13
13
  if (!RendererType.ReactComponent) {
14
14
  throw new Error(`renderer ${rendererType} has no ReactComponent, it may not be completely implemented yet`);
15
15
  }
16
16
  if (!(RendererType instanceof ServerSideRendererType_1.default)) {
17
- throw new Error('CoreRender requires a renderer that is a subclass of ServerSideRendererType');
17
+ throw new TypeError('CoreRender requires a renderer that is a subclass of ServerSideRendererType');
18
18
  }
19
19
  return RendererType;
20
20
  }
@@ -38,7 +38,6 @@ function isRemoteAbortSignal(thing) {
38
38
  return (typeof thing === 'object' &&
39
39
  thing !== null &&
40
40
  'abortSignalId' in thing &&
41
- // @ts-ignore
42
41
  typeof thing.abortSignalId === 'number');
43
42
  }
44
43
  exports.isRemoteAbortSignal = isRemoteAbortSignal;