@jbrowse/core 2.13.0 → 2.14.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 (149) 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 +28 -25
  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/BaseFeatureDataAdapter.d.ts +6 -6
  35. package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +6 -6
  36. package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
  37. package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +0 -1
  38. package/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -8
  39. package/data_adapters/dataAdapterCache.d.ts +9 -6
  40. package/data_adapters/dataAdapterCache.js +16 -22
  41. package/package.json +3 -3
  42. package/pluggableElementTypes/AddTrackWorkflowType.js +0 -6
  43. package/pluggableElementTypes/ConnectionType.js +0 -6
  44. package/pluggableElementTypes/DisplayType.js +0 -20
  45. package/pluggableElementTypes/InternetAccountType.js +0 -11
  46. package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
  47. package/pluggableElementTypes/TextSearchAdapterType.js +0 -3
  48. package/pluggableElementTypes/TrackType.js +0 -11
  49. package/pluggableElementTypes/ViewType.js +0 -6
  50. package/pluggableElementTypes/WidgetType.js +0 -6
  51. package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +4 -3
  52. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +1 -3
  53. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +4 -5
  54. package/pluggableElementTypes/models/BaseDisplayModel.js +6 -14
  55. package/pluggableElementTypes/models/BaseTrackModel.js +8 -5
  56. package/pluggableElementTypes/models/InternetAccountModel.d.ts +1 -1
  57. package/pluggableElementTypes/models/InternetAccountModel.js +19 -13
  58. package/pluggableElementTypes/models/baseTrackConfig.js +2 -5
  59. package/pluggableElementTypes/renderers/BoxRendererType.d.ts +10 -4
  60. package/pluggableElementTypes/renderers/BoxRendererType.js +10 -26
  61. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +1 -1
  62. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +9 -12
  63. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +12 -19
  64. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +5 -5
  65. package/pluggableElementTypes/renderers/FeatureRendererType.js +6 -13
  66. package/pluggableElementTypes/renderers/RendererType.js +0 -10
  67. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +1 -1
  68. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +8 -9
  69. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +11 -14
  70. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +4 -4
  71. package/pluggableElementTypes/renderers/ServerSideRendererType.js +7 -5
  72. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +0 -1
  73. package/rpc/BaseRpcDriver.d.ts +1 -1
  74. package/rpc/BaseRpcDriver.js +12 -11
  75. package/rpc/MainThreadRpcDriver.d.ts +2 -2
  76. package/rpc/MainThreadRpcDriver.js +3 -0
  77. package/rpc/RpcManager.d.ts +1 -1
  78. package/rpc/RpcManager.js +11 -8
  79. package/rpc/configSchema.js +0 -1
  80. package/rpc/methods/CoreFreeResources.d.ts +2 -2
  81. package/rpc/methods/CoreGetFeatureDensityStats.d.ts +2 -2
  82. package/rpc/methods/CoreGetFeatureDetails.d.ts +1 -1
  83. package/rpc/methods/CoreGetFeatureDetails.js +3 -3
  84. package/rpc/methods/CoreGetFeatures.d.ts +1 -1
  85. package/rpc/methods/CoreGetFileInfo.d.ts +1 -1
  86. package/rpc/methods/CoreGetMetadata.d.ts +1 -1
  87. package/rpc/methods/CoreGetRefNames.d.ts +1 -1
  88. package/rpc/methods/util.d.ts +2 -2
  89. package/rpc/methods/util.js +0 -3
  90. package/tsconfig.build.tsbuildinfo +1 -1
  91. package/ui/AssemblySelector.js +3 -1
  92. package/ui/CascadingMenu.js +2 -1
  93. package/ui/CascadingMenuButton.js +3 -1
  94. package/ui/ColorPicker.js +14 -4
  95. package/ui/DropDownMenu.js +3 -1
  96. package/ui/EditableTypography.js +6 -2
  97. package/ui/ErrorMessage.d.ts +2 -2
  98. package/ui/ErrorMessage.js +37 -20
  99. package/ui/ErrorMessageStackTraceDialog.js +11 -9
  100. package/ui/FactoryResetDialog.d.ts +1 -1
  101. package/ui/FactoryResetDialog.js +9 -3
  102. package/ui/FatalErrorDialog.js +9 -3
  103. package/ui/FileSelector/FileSelector.js +8 -4
  104. package/ui/FileSelector/LocalFileChooser.js +7 -6
  105. package/ui/LoadingEllipses.js +1 -1
  106. package/ui/Menu.d.ts +4 -4
  107. package/ui/Menu.js +6 -9
  108. package/ui/MenuButton.js +6 -2
  109. package/ui/PrerenderedCanvas.js +8 -5
  110. package/ui/RedErrorMessageBox.js +13 -8
  111. package/ui/ResizeHandle.d.ts +1 -1
  112. package/ui/ReturnToImportFormDialog.js +3 -1
  113. package/ui/SanitizedHTML.js +1 -3
  114. package/ui/SnackbarModel.d.ts +12 -1
  115. package/ui/SnackbarModel.js +19 -3
  116. package/ui/theme.js +5 -5
  117. package/util/Base1DViewModel.js +3 -1
  118. package/util/QuickLRU.js +8 -8
  119. package/util/TimeTraveller.js +12 -4
  120. package/util/analytics.js +0 -1
  121. package/util/blockTypes.js +5 -9
  122. package/util/calculateStaticBlocks.d.ts +1 -1
  123. package/util/compositeMap.js +2 -2
  124. package/util/idMaker.js +0 -1
  125. package/util/index.d.ts +9 -8
  126. package/util/index.js +91 -51
  127. package/util/io/RemoteFileWithRangeCache.js +1 -3
  128. package/util/io/index.js +3 -5
  129. package/util/jexlStrings.js +5 -8
  130. package/util/layouts/GranularRectLayout.js +1 -4
  131. package/util/layouts/SceneGraph.d.ts +1 -1
  132. package/util/layouts/SceneGraph.js +2 -6
  133. package/util/map-obj.js +15 -7
  134. package/util/mst-reflection.js +1 -2
  135. package/util/nanoid.js +9 -8
  136. package/util/offscreenCanvasPonyfill.d.ts +1 -1
  137. package/util/offscreenCanvasPonyfill.js +7 -10
  138. package/util/offscreenCanvasUtils.d.ts +1 -1
  139. package/util/offscreenCanvasUtils.js +1 -3
  140. package/util/rxjs.js +4 -2
  141. package/util/simpleFeature.d.ts +2 -3
  142. package/util/simpleFeature.js +9 -12
  143. package/util/stats.js +3 -1
  144. package/util/tracks.d.ts +4 -2
  145. package/util/tracks.js +10 -11
  146. package/util/types/index.d.ts +5 -5
  147. package/util/types/index.js +8 -1
  148. package/util/types/mst.js +1 -0
  149. package/util/when.js +7 -2
@@ -42,7 +42,18 @@ function SnackbarModel() {
42
42
  return mobx_state_tree_1.types
43
43
  .model({})
44
44
  .volatile(() => ({
45
+ /**
46
+ * #volatile
47
+ */
45
48
  snackbarMessages: mobx_1.observable.array(),
49
+ }))
50
+ .views(self => ({
51
+ /**
52
+ * #getter
53
+ */
54
+ get snackbarMessageSet() {
55
+ return new Map(self.snackbarMessages.map(s => [s.message, s]));
56
+ },
46
57
  }))
47
58
  .actions(self => ({
48
59
  /**
@@ -56,6 +67,9 @@ function SnackbarModel() {
56
67
  }, 5000);
57
68
  }
58
69
  },
70
+ /**
71
+ * #action
72
+ */
59
73
  notifyError(errorMessage, error, extra) {
60
74
  this.notify(errorMessage, 'error', {
61
75
  name: react_1.default.createElement(Report_1.default, null),
@@ -76,7 +90,9 @@ function SnackbarModel() {
76
90
  * #action
77
91
  */
78
92
  pushSnackbarMessage(message, level, action) {
79
- return self.snackbarMessages.push({ message, level, action });
93
+ if (action || !self.snackbarMessageSet.has(message)) {
94
+ self.snackbarMessages.push({ message, level, action });
95
+ }
80
96
  },
81
97
  /**
82
98
  * #action
@@ -88,8 +104,8 @@ function SnackbarModel() {
88
104
  * #action
89
105
  */
90
106
  removeSnackbarMessage(message) {
91
- const element = self.snackbarMessages.find(f => f.message === message);
92
- if (element) {
107
+ const element = self.snackbarMessageSet.get(message);
108
+ if (element !== undefined) {
93
109
  self.snackbarMessages.remove(element);
94
110
  }
95
111
  },
package/ui/theme.js CHANGED
@@ -372,11 +372,11 @@ function createJBrowseTheme(configTheme = {}, themes = exports.defaultThemes, th
372
372
  ? (0, deepmerge_1.default)(themes.default, augmentTheme(configTheme), {
373
373
  arrayMerge: overwriteArrayMerge,
374
374
  })
375
- : augmentThemePlus(themes[themeName]) || themes.default));
375
+ : augmentThemePlus(themes[themeName])));
376
376
  }
377
377
  function augmentTheme(theme = {}) {
378
378
  var _a, _b;
379
- if ((_a = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _a === void 0 ? void 0 : _a.tertiary) {
379
+ if ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.tertiary) {
380
380
  theme = (0, deepmerge_1.default)(theme, {
381
381
  palette: {
382
382
  tertiary: refTheme.palette.augmentColor('color' in theme.palette.tertiary
@@ -385,7 +385,7 @@ function augmentTheme(theme = {}) {
385
385
  },
386
386
  });
387
387
  }
388
- if ((_b = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _b === void 0 ? void 0 : _b.quaternary) {
388
+ if ((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.quaternary) {
389
389
  theme = (0, deepmerge_1.default)(theme, {
390
390
  palette: {
391
391
  quaternary: refTheme.palette.augmentColor('color' in theme.palette.quaternary
@@ -400,7 +400,7 @@ function augmentTheme(theme = {}) {
400
400
  function augmentThemePlus(theme = {}) {
401
401
  var _a, _b;
402
402
  theme = augmentTheme(theme);
403
- if (!((_a = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary)) {
403
+ if (!((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary)) {
404
404
  theme = (0, deepmerge_1.default)(theme, {
405
405
  palette: {
406
406
  quaternary: refTheme.palette.augmentColor({
@@ -411,7 +411,7 @@ function augmentThemePlus(theme = {}) {
411
411
  },
412
412
  });
413
413
  }
414
- if (!((_b = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _b === void 0 ? void 0 : _b.tertiary)) {
414
+ if (!((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.tertiary)) {
415
415
  theme = (0, deepmerge_1.default)(theme, {
416
416
  palette: {
417
417
  tertiary: refTheme.palette.augmentColor({
@@ -175,7 +175,9 @@ const Base1DView = mobx_state_tree_1.types
175
175
  * #action
176
176
  */
177
177
  zoomTo(bpPerPx, offset = self.width / 2) {
178
- const newBpPerPx = (0, index_1.clamp)(bpPerPx, 'minBpPerPx' in self ? self.minBpPerPx : 0, 'maxBpPerPx' in self ? self.maxBpPerPx : Infinity);
178
+ const newBpPerPx = (0, index_1.clamp)(bpPerPx, 'minBpPerPx' in self ? self.minBpPerPx : 0, 'maxBpPerPx' in self
179
+ ? self.maxBpPerPx
180
+ : Number.POSITIVE_INFINITY);
179
181
  const oldBpPerPx = self.bpPerPx;
180
182
  if (Math.abs(oldBpPerPx - newBpPerPx) < 0.000001) {
181
183
  return oldBpPerPx;
package/util/QuickLRU.js CHANGED
@@ -44,7 +44,7 @@ class QuickLRU extends Map {
44
44
  }
45
45
  _getOrDeleteIfExpired(key, item) {
46
46
  const deleted = this._deleteIfExpired(key, item);
47
- if (deleted === false) {
47
+ if (!deleted) {
48
48
  return item.value;
49
49
  }
50
50
  }
@@ -74,7 +74,7 @@ class QuickLRU extends Map {
74
74
  const [key, value] = item;
75
75
  if (!this.cache.has(key)) {
76
76
  const deleted = this._deleteIfExpired(key, value);
77
- if (deleted === false) {
77
+ if (!deleted) {
78
78
  yield item;
79
79
  }
80
80
  }
@@ -82,7 +82,7 @@ class QuickLRU extends Map {
82
82
  for (const item of this.cache) {
83
83
  const [key, value] = item;
84
84
  const deleted = this._deleteIfExpired(key, value);
85
- if (deleted === false) {
85
+ if (!deleted) {
86
86
  yield item;
87
87
  }
88
88
  }
@@ -94,7 +94,7 @@ class QuickLRU extends Map {
94
94
  }
95
95
  if (this.oldCache.has(key)) {
96
96
  const item = this.oldCache.get(key);
97
- if (this._deleteIfExpired(key, item) === false) {
97
+ if (!this._deleteIfExpired(key, item)) {
98
98
  this._moveToRecent(key, item);
99
99
  return item.value;
100
100
  }
@@ -178,7 +178,7 @@ class QuickLRU extends Map {
178
178
  for (const item of this.cache) {
179
179
  const [key, value] = item;
180
180
  const deleted = this._deleteIfExpired(key, value);
181
- if (deleted === false) {
181
+ if (!deleted) {
182
182
  yield [key, value.value];
183
183
  }
184
184
  }
@@ -186,7 +186,7 @@ class QuickLRU extends Map {
186
186
  const [key, value] = item;
187
187
  if (!this.cache.has(key)) {
188
188
  const deleted = this._deleteIfExpired(key, value);
189
- if (deleted === false) {
189
+ if (!deleted) {
190
190
  yield [key, value.value];
191
191
  }
192
192
  }
@@ -198,7 +198,7 @@ class QuickLRU extends Map {
198
198
  const item = items[i];
199
199
  const [key, value] = item;
200
200
  const deleted = this._deleteIfExpired(key, value);
201
- if (deleted === false) {
201
+ if (!deleted) {
202
202
  yield [key, value.value];
203
203
  }
204
204
  }
@@ -208,7 +208,7 @@ class QuickLRU extends Map {
208
208
  const [key, value] = item;
209
209
  if (!this.cache.has(key)) {
210
210
  const deleted = this._deleteIfExpired(key, value);
211
- if (deleted === false) {
211
+ if (!deleted) {
212
212
  yield [key, value.value];
213
213
  }
214
214
  }
@@ -7,7 +7,9 @@ function debounce(func, timeout = 300) {
7
7
  let timer;
8
8
  return (...args) => {
9
9
  clearTimeout(timer);
10
- timer = setTimeout(() => func(...args), timeout);
10
+ timer = setTimeout(() => {
11
+ func(...args);
12
+ }, timeout);
11
13
  };
12
14
  }
13
15
  const TimeTraveller = mobx_state_tree_1.types
@@ -66,7 +68,9 @@ const TimeTraveller = mobx_state_tree_1.types
66
68
  if (!targetStore) {
67
69
  throw new Error('Failed to find target store for TimeTraveller. Please provide `targetPath` property, or a `targetStore` in the environment');
68
70
  }
69
- snapshotDisposer = (0, mobx_state_tree_1.onSnapshot)(targetStore, debounce((snapshot) => this.addUndoState(snapshot), 300));
71
+ snapshotDisposer = (0, mobx_state_tree_1.onSnapshot)(targetStore, debounce((snapshot) => {
72
+ this.addUndoState(snapshot);
73
+ }, 300));
70
74
  if (self.history.length === 0) {
71
75
  this.addUndoState((0, mobx_state_tree_1.getSnapshot)(targetStore));
72
76
  }
@@ -74,12 +78,16 @@ const TimeTraveller = mobx_state_tree_1.types
74
78
  undo() {
75
79
  self.undoIdx--;
76
80
  skipNextUndoState = true;
77
- (0, mobx_state_tree_1.applySnapshot)(targetStore, self.history[self.undoIdx]);
81
+ if (targetStore) {
82
+ (0, mobx_state_tree_1.applySnapshot)(targetStore, self.history[self.undoIdx]);
83
+ }
78
84
  },
79
85
  redo() {
80
86
  self.undoIdx++;
81
87
  skipNextUndoState = true;
82
- (0, mobx_state_tree_1.applySnapshot)(targetStore, self.history[self.undoIdx]);
88
+ if (targetStore) {
89
+ (0, mobx_state_tree_1.applySnapshot)(targetStore, self.history[self.undoIdx]);
90
+ }
83
91
  },
84
92
  };
85
93
  });
package/util/analytics.js CHANGED
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.writeAWSAnalytics = writeAWSAnalytics;
4
4
  exports.writeGAAnalytics = writeGAAnalytics;
5
5
  exports.doAnalytics = doAnalytics;
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
6
  const configuration_1 = require("../configuration");
8
7
  const util_1 = require("../util");
9
8
  async function writeAWSAnalytics(rootModel, initialTimeStamp, sessionQuery) {
@@ -29,7 +29,7 @@ class BlockSet {
29
29
  }
30
30
  forEach(func, thisarg) {
31
31
  // eslint-disable-next-line unicorn/no-array-method-this-argument
32
- return this.blocks.forEach(func, thisarg);
32
+ this.blocks.forEach(func, thisarg);
33
33
  }
34
34
  get length() {
35
35
  return this.blocks.length;
@@ -61,7 +61,6 @@ class BaseBlock {
61
61
  /**
62
62
  * a block that should be shown as filled with data
63
63
  */
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
64
  constructor(data) {
66
65
  this.type = 'BaseBlock';
67
66
  this.widthPx = 0;
@@ -96,7 +95,6 @@ exports.ContentBlock = ContentBlock;
96
95
  * too small to be shown at the current zoom level
97
96
  */
98
97
  class ElidedBlock extends BaseBlock {
99
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
98
  constructor(data) {
101
99
  super(data);
102
100
  this.type = 'ElidedBlock';
@@ -105,12 +103,10 @@ class ElidedBlock extends BaseBlock {
105
103
  }
106
104
  push(otherBlock) {
107
105
  this.elidedBlockCount += 1;
108
- if (otherBlock) {
109
- this.refName = '';
110
- this.start = 0;
111
- this.end = 0;
112
- this.widthPx += otherBlock.widthPx;
113
- }
106
+ this.refName = '';
107
+ this.start = 0;
108
+ this.end = 0;
109
+ this.widthPx += otherBlock.widthPx;
114
110
  }
115
111
  }
116
112
  exports.ElidedBlock = ElidedBlock;
@@ -1,7 +1,7 @@
1
1
  import { Instance } from 'mobx-state-tree';
2
2
  import { BlockSet } from './blockTypes';
3
3
  import { Region } from './types';
4
- import { Region as RegionModel } from './types/mst';
4
+ import type { Region as RegionModel } from './types/mst';
5
5
  export interface Base1DViewModel {
6
6
  offsetPx: number;
7
7
  width: number;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // takes an array or Map or Set (anything iterable with values()) of Maps
4
- // and lets you query them as one Map
3
+ // takes an array or Map or Set (anything iterable with values()) of Maps and
4
+ // lets you query them as one Map
5
5
  class CompositeMap {
6
6
  constructor(submaps) {
7
7
  this.submaps = submaps;
package/util/idMaker.js CHANGED
@@ -5,7 +5,6 @@ const _1 = require("./");
5
5
  // generates a short "id fingerprint" from the config passed to the base
6
6
  // feature adapter by recursively enumerating props, but if config is too big
7
7
  // does not process entire config (FromConfigAdapter for example can be large)
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
8
  function idMaker(args, id = '') {
10
9
  const keys = Object.keys(args);
11
10
  for (const key of keys) {
package/util/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { IAnyStateTreeNode, IStateTreeNode, Instance } from 'mobx-state-tree';
4
4
  import { IReactionPublic, IReactionOptions } from 'mobx';
5
5
  import { Feature } from './simpleFeature';
6
6
  import { AssemblyManager, Region, TypeTestedByPredicate } from './types';
7
- import { Region as MUIRegion } from './types/mst';
7
+ import type { Region as MUIRegion } from './types/mst';
8
8
  import { BaseBlock } from './blockTypes';
9
9
  export * from './types';
10
10
  export * from './aborting';
@@ -206,7 +206,7 @@ export declare function findLast<T>(array: T[], predicate: (value: T, index: num
206
206
  * @param errorFunction -
207
207
  */
208
208
  export declare function makeAbortableReaction<T, U, V>(self: T, dataFunction: (arg: T) => U, asyncReactionFunction: (arg: U | undefined, signal: AbortSignal, model: T, handle: IReactionPublic) => Promise<V>, reactionOptions: IReactionOptions, startedFunction: (aborter: AbortController) => void, successFunction: (arg: V) => void, errorFunction: (err: unknown) => void): void;
209
- export declare function renameRegionIfNeeded(refNameMap: Record<string, string>, region: Region | Instance<typeof MUIRegion>): Region & {
209
+ export declare function renameRegionIfNeeded(refNameMap: Record<string, string> | undefined, region: Region | Instance<typeof MUIRegion>): Region & {
210
210
  originalRefName?: string;
211
211
  };
212
212
  export declare function renameRegionsIfNeeded<ARGTYPE extends {
@@ -221,7 +221,7 @@ export declare function renameRegionsIfNeeded<ARGTYPE extends {
221
221
  originalRefName?: string;
222
222
  })[];
223
223
  }>;
224
- export declare function minmax(a: number, b: number): number[];
224
+ export declare function minmax(a: number, b: number): readonly [number, number];
225
225
  export declare function shorten(name: string, max?: number, short?: number): string;
226
226
  export declare function stringify({ refName, coord, assemblyName, oob, }: {
227
227
  assemblyName?: string;
@@ -233,7 +233,7 @@ export declare const isElectron: boolean;
233
233
  export declare function revcom(seqString: string): string;
234
234
  export declare function reverse(seqString: string): string;
235
235
  export declare const complement: (seqString: string) => string;
236
- export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions) => number) & typeof requestIdleCallback) | ((cb: Function) => any);
236
+ export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions) => number) & typeof requestIdleCallback) | ((cb: () => void) => void);
237
237
  export declare function measureText(str: unknown, fontSize?: number): number;
238
238
  export type Frame = 1 | 2 | 3 | -1 | -2 | -3;
239
239
  export declare function getFrame(start: number, end: number, strand: 1 | -1, phase: 0 | 1 | 2): Frame;
@@ -341,7 +341,7 @@ export interface ViewSnap {
341
341
  assemblyName: string;
342
342
  })[];
343
343
  }
344
- export declare function isSupportedIndexingAdapter(type: string): boolean;
344
+ export declare function isSupportedIndexingAdapter(type?: string): boolean;
345
345
  export declare function getBpDisplayStr(totalBp: number): string;
346
346
  export declare function toLocale(n: number): string;
347
347
  export declare function getTickDisplayStr(totalBp: number, bpPerPx: number): string;
@@ -379,18 +379,18 @@ export declare function max(arr: number[], init?: number): number;
379
379
  export declare function min(arr: number[], init?: number): number;
380
380
  export declare function sum(arr: number[]): number;
381
381
  export declare function avg(arr: number[]): number;
382
- export declare function groupBy<T>(array: Iterable<T>, predicate: (v: T) => string): Record<string, T[] | undefined>;
382
+ export declare function groupBy<T>(array: Iterable<T>, predicate: (v: T) => string): Record<string, T[]>;
383
383
  export declare function notEmpty<T>(value: T | null | undefined): value is T;
384
384
  export declare function mergeIntervals<T extends {
385
385
  start: number;
386
386
  end: number;
387
- }>(intervals: T[], w?: number): T[];
387
+ }>(intervals: T[], w?: number): (T | undefined)[];
388
388
  interface BasicFeature {
389
389
  end: number;
390
390
  start: number;
391
391
  refName: string;
392
392
  }
393
- export declare function gatherOverlaps(regions: BasicFeature[]): BasicFeature[];
393
+ export declare function gatherOverlaps(regions: BasicFeature[]): (BasicFeature | undefined)[];
394
394
  export declare function stripAlpha(str: string): string;
395
395
  export declare function getStrokeProps(str: string): {
396
396
  strokeOpacity: number;
@@ -403,5 +403,6 @@ export declare function getFillProps(str: string): {
403
403
  export declare function renderToStaticMarkup(node: React.ReactElement, createRootFn?: (elt: Element | DocumentFragment) => {
404
404
  render: (node: React.ReactElement) => unknown;
405
405
  }): string;
406
+ export declare function isGzip(buf: Buffer): boolean;
406
407
  export { default as SimpleFeature, type Feature, type SimpleFeatureSerialized, isFeature, } from './simpleFeature';
407
408
  export { blobToDataURL } from './blobToDataURL';