@jbrowse/core 1.7.11 → 2.1.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 (204) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +20 -4
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +313 -558
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -473
  4. package/BaseFeatureWidget/index.d.ts +2 -2
  5. package/BaseFeatureWidget/index.js +88 -124
  6. package/BaseFeatureWidget/types.d.ts +1 -0
  7. package/BaseFeatureWidget/types.js +1 -4
  8. package/BaseFeatureWidget/util.js +40 -75
  9. package/CorePlugin.js +55 -94
  10. package/Plugin.js +9 -34
  11. package/PluginLoader.js +153 -422
  12. package/PluginManager.d.ts +84 -117
  13. package/PluginManager.js +377 -666
  14. package/ReExports/Attributes.d.ts +2 -0
  15. package/ReExports/Attributes.js +5 -0
  16. package/ReExports/BaseCard.d.ts +2 -0
  17. package/ReExports/BaseCard.js +5 -0
  18. package/ReExports/DataGrid.d.ts +2 -0
  19. package/ReExports/DataGrid.js +6 -0
  20. package/ReExports/FeatureDetails.d.ts +2 -0
  21. package/ReExports/FeatureDetails.js +5 -0
  22. package/ReExports/index.js +6 -12
  23. package/ReExports/list.d.ts +5 -0
  24. package/ReExports/list.js +271 -7
  25. package/ReExports/material-ui-colors.d.ts +1 -19
  26. package/ReExports/material-ui-colors.js +16 -158
  27. package/ReExports/modules.d.ts +68 -109
  28. package/ReExports/modules.js +455 -244
  29. package/TextSearch/BaseResults.js +51 -123
  30. package/TextSearch/TextSearchManager.d.ts +3 -1
  31. package/TextSearch/TextSearchManager.js +66 -144
  32. package/assemblyManager/assembly.js +280 -554
  33. package/assemblyManager/assemblyConfigSchema.js +47 -64
  34. package/assemblyManager/assemblyManager.d.ts +12 -10
  35. package/assemblyManager/assemblyManager.js +126 -270
  36. package/assemblyManager/index.js +9 -22
  37. package/configuration/configurationSchema.js +167 -203
  38. package/configuration/configurationSlot.js +248 -326
  39. package/configuration/index.js +19 -35
  40. package/configuration/util.d.ts +1 -1
  41. package/configuration/util.js +131 -173
  42. package/data_adapters/BaseAdapter.d.ts +2 -2
  43. package/data_adapters/BaseAdapter.js +132 -521
  44. package/data_adapters/CytobandAdapter.js +40 -126
  45. package/data_adapters/dataAdapterCache.js +77 -158
  46. package/package.json +16 -18
  47. package/pluggableElementTypes/AdapterType.js +24 -79
  48. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +17 -0
  49. package/pluggableElementTypes/AddTrackWorkflowType.js +20 -0
  50. package/pluggableElementTypes/ConnectionType.js +22 -65
  51. package/pluggableElementTypes/DisplayType.js +35 -82
  52. package/pluggableElementTypes/InternetAccountType.js +23 -64
  53. package/pluggableElementTypes/PluggableElementBase.js +8 -20
  54. package/pluggableElementTypes/RpcMethodType.js +85 -427
  55. package/pluggableElementTypes/TextSearchAdapterType.js +16 -55
  56. package/pluggableElementTypes/TrackType.js +26 -70
  57. package/pluggableElementTypes/ViewType.js +21 -63
  58. package/pluggableElementTypes/WidgetType.js +21 -64
  59. package/pluggableElementTypes/index.d.ts +4 -3
  60. package/pluggableElementTypes/index.js +42 -125
  61. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +28 -43
  62. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +10 -10
  63. package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
  64. package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -1
  65. package/pluggableElementTypes/models/BaseTrackModel.js +139 -200
  66. package/pluggableElementTypes/models/BaseViewModel.js +24 -40
  67. package/pluggableElementTypes/models/InternetAccountModel.js +116 -263
  68. package/pluggableElementTypes/models/baseConnectionConfig.js +14 -25
  69. package/pluggableElementTypes/models/baseInternetAccountConfig.js +29 -38
  70. package/pluggableElementTypes/models/baseTrackConfig.js +106 -133
  71. package/pluggableElementTypes/models/index.js +21 -70
  72. package/pluggableElementTypes/renderers/BoxRendererType.js +132 -291
  73. package/pluggableElementTypes/renderers/CircularChordRendererType.js +8 -38
  74. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +60 -192
  75. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -2
  76. package/pluggableElementTypes/renderers/FeatureRendererType.js +89 -255
  77. package/pluggableElementTypes/renderers/RendererType.js +31 -105
  78. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +61 -72
  79. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +2 -2
  80. package/pluggableElementTypes/renderers/ServerSideRendererType.js +112 -265
  81. package/pluggableElementTypes/renderers/index.js +19 -62
  82. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +27 -65
  83. package/rpc/BaseRpcDriver.js +169 -405
  84. package/rpc/MainThreadRpcDriver.js +27 -150
  85. package/rpc/RpcManager.js +58 -159
  86. package/rpc/WebWorkerRpcDriver.js +54 -171
  87. package/rpc/configSchema.js +25 -49
  88. package/rpc/coreRpcMethods.d.ts +1 -3
  89. package/rpc/coreRpcMethods.js +221 -959
  90. package/rpc/remoteAbortSignals.js +46 -70
  91. package/tsconfig.build.tsbuildinfo +1 -1
  92. package/ui/AboutDialog.js +107 -158
  93. package/ui/App.js +157 -261
  94. package/ui/AssemblySelector.d.ts +1 -1
  95. package/ui/AssemblySelector.js +59 -115
  96. package/ui/CascadingMenu.js +100 -199
  97. package/ui/ColorPicker.d.ts +16 -0
  98. package/ui/ColorPicker.js +97 -0
  99. package/ui/Drawer.js +28 -58
  100. package/ui/DrawerWidget.js +109 -209
  101. package/ui/DropDownMenu.d.ts +0 -8
  102. package/ui/DropDownMenu.js +60 -97
  103. package/ui/EditableTypography.d.ts +1 -1
  104. package/ui/EditableTypography.js +87 -155
  105. package/ui/ErrorMessage.js +41 -66
  106. package/ui/FactoryResetDialog.js +24 -57
  107. package/ui/FatalErrorDialog.js +59 -91
  108. package/ui/FileSelector/FileSelector.js +123 -189
  109. package/ui/FileSelector/LocalFileChooser.js +44 -71
  110. package/ui/FileSelector/UrlChooser.js +17 -38
  111. package/ui/FileSelector/index.js +6 -12
  112. package/ui/Icons.d.ts +1 -1
  113. package/ui/Icons.js +45 -69
  114. package/ui/Logo.js +57 -110
  115. package/ui/Menu.d.ts +1 -1
  116. package/ui/Menu.js +232 -355
  117. package/ui/PrerenderedCanvas.js +63 -78
  118. package/ui/ResizeHandle.js +87 -114
  119. package/ui/ReturnToImportFormDialog.js +32 -59
  120. package/ui/SanitizedHTML.js +63 -52
  121. package/ui/Snackbar.js +74 -99
  122. package/ui/SnackbarModel.js +37 -51
  123. package/ui/Tooltip.d.ts +3 -1
  124. package/ui/Tooltip.js +49 -74
  125. package/ui/ViewContainer.js +113 -183
  126. package/ui/colors.d.ts +10 -0
  127. package/ui/colors.js +78 -0
  128. package/ui/index.js +51 -181
  129. package/ui/react-colorful.d.ts +17 -0
  130. package/ui/react-colorful.js +455 -0
  131. package/ui/theme.d.ts +279 -131
  132. package/ui/theme.js +197 -225
  133. package/util/Base1DUtils.d.ts +32 -0
  134. package/util/Base1DUtils.js +174 -0
  135. package/util/Base1DViewModel.d.ts +16 -37
  136. package/util/Base1DViewModel.js +116 -295
  137. package/util/QuickLRU.js +84 -332
  138. package/util/TimeTraveller.d.ts +19 -0
  139. package/util/TimeTraveller.js +86 -0
  140. package/util/aborting.js +49 -127
  141. package/util/analytics.js +91 -154
  142. package/util/blockTypes.js +106 -240
  143. package/util/calculateDynamicBlocks.js +98 -128
  144. package/util/calculateStaticBlocks.js +105 -125
  145. package/util/color/cssColorsLevel4.js +156 -160
  146. package/util/color/index.js +33 -55
  147. package/util/compositeMap.js +49 -333
  148. package/util/formatFastaStrings.js +9 -14
  149. package/util/idMaker.js +18 -31
  150. package/util/index.d.ts +18 -39
  151. package/util/index.js +743 -1236
  152. package/util/io/RemoteFileWithRangeCache.js +88 -257
  153. package/util/io/index.js +95 -169
  154. package/util/jexl.js +60 -115
  155. package/util/jexlStrings.js +24 -29
  156. package/util/layouts/BaseLayout.js +1 -4
  157. package/util/layouts/GranularRectLayout.js +388 -557
  158. package/util/layouts/MultiLayout.js +41 -109
  159. package/util/layouts/PrecomputedLayout.js +56 -114
  160. package/util/layouts/PrecomputedMultiLayout.js +22 -59
  161. package/util/layouts/SceneGraph.js +127 -197
  162. package/util/layouts/index.js +29 -66
  163. package/util/mst-reflection.js +55 -71
  164. package/util/offscreenCanvasPonyfill.js +66 -134
  165. package/util/offscreenCanvasUtils.d.ts +2 -7
  166. package/util/offscreenCanvasUtils.js +49 -146
  167. package/util/range.js +29 -40
  168. package/util/rxjs.js +20 -27
  169. package/util/simpleFeature.js +88 -152
  170. package/util/stats.js +91 -151
  171. package/util/tracks.js +130 -171
  172. package/util/types/index.d.ts +3 -3
  173. package/util/types/index.js +110 -179
  174. package/util/types/mst.d.ts +3 -3
  175. package/util/types/mst.js +91 -142
  176. package/util/types/util.js +1 -4
  177. package/util/when.js +54 -101
  178. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +0 -122
  179. package/BaseFeatureWidget/index.test.js +0 -51
  180. package/TextSearch/BaseResults.test.js +0 -42
  181. package/configuration/configurationSchema.test.js +0 -266
  182. package/configuration/configurationSlot.test.js +0 -69
  183. package/configuration/util.test.js +0 -39
  184. package/data_adapters/BaseAdapter.test.js +0 -200
  185. package/declare.d.js +0 -1
  186. package/pluggableElementTypes/RpcMethodType.test.js +0 -118
  187. package/pluggableElementTypes/renderers/declare.d.js +0 -1
  188. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +0 -20
  189. package/rpc/BaseRpcDriver.test.js +0 -540
  190. package/rpc/declaration.d.js +0 -1
  191. package/ui/FatalErrorDialog.test.js +0 -82
  192. package/ui/SanitizedHTML.test.js +0 -36
  193. package/ui/theme.test.js +0 -111
  194. package/util/Base1DViewModel.test.js +0 -130
  195. package/util/calculateDynamicBlocks.test.js +0 -74
  196. package/util/calculateStaticBlocks.test.js +0 -297
  197. package/util/declare.d.js +0 -1
  198. package/util/formatFastaStrings.test.js +0 -40
  199. package/util/index.test.js +0 -213
  200. package/util/jexlStrings.test.js +0 -48
  201. package/util/layouts/GranularRectLayout.test.js +0 -99
  202. package/util/range.test.js +0 -64
  203. package/util/simpleFeature.test.js +0 -34
  204. package/util/stats.test.js +0 -172
@@ -1,67 +1,50 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _configuration = require("../configuration");
9
-
10
- var _default = function _default(pluginManager) {
11
- return (0, _configuration.ConfigurationSchema)('BaseAssembly', {
12
- aliases: {
13
- type: 'stringArray',
14
- defaultValue: [],
15
- description: 'Other possible names for the assembly'
16
- },
17
- sequence: pluginManager.getTrackType('ReferenceSequenceTrack').configSchema,
18
- refNameColors: {
19
- type: 'stringArray',
20
- defaultValue: [],
21
- description: 'Define custom colors for each reference sequence. Will cycle through this list if there are not enough colors for every sequence.'
22
- },
23
- refNameAliases: (0, _configuration.ConfigurationSchema)('RefNameAliases', {
24
- adapter: pluginManager.pluggableConfigSchemaType('adapter')
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const configuration_1 = require("../configuration");
4
+ exports.default = (pluginManager) => {
5
+ return (0, configuration_1.ConfigurationSchema)('BaseAssembly', {
6
+ aliases: {
7
+ type: 'stringArray',
8
+ defaultValue: [],
9
+ description: 'Other possible names for the assembly',
10
+ },
11
+ sequence: pluginManager.getTrackType('ReferenceSequenceTrack')
12
+ .configSchema,
13
+ refNameColors: {
14
+ type: 'stringArray',
15
+ defaultValue: [],
16
+ description: 'Define custom colors for each reference sequence. Will cycle through this list if there are not enough colors for every sequence.',
17
+ },
18
+ refNameAliases: (0, configuration_1.ConfigurationSchema)('RefNameAliases', {
19
+ adapter: pluginManager.pluggableConfigSchemaType('adapter'),
20
+ }, {
21
+ preProcessSnapshot: snap => {
22
+ // allow refNameAliases to be unspecified
23
+ // @ts-ignore
24
+ if (!snap.adapter) {
25
+ return { adapter: { type: 'RefNameAliasAdapter' } };
26
+ }
27
+ return snap;
28
+ },
29
+ }),
30
+ cytobands: (0, configuration_1.ConfigurationSchema)('Cytoband', {
31
+ adapter: pluginManager.pluggableConfigSchemaType('adapter'),
32
+ }, {
33
+ preProcessSnapshot: snap => {
34
+ // allow cytoBand to be unspecified
35
+ // @ts-ignore
36
+ if (!snap.adapter) {
37
+ return { adapter: { type: 'CytobandAdapter' } };
38
+ }
39
+ return snap;
40
+ },
41
+ }),
42
+ displayName: {
43
+ type: 'string',
44
+ defaultValue: '',
45
+ description: 'A human readable display name for the assembly e.g. "Homo sapiens (hg38)" while the assembly name may just be "hg38"',
46
+ },
25
47
  }, {
26
- preProcessSnapshot: function preProcessSnapshot(snap) {
27
- // allow refNameAliases to be unspecified
28
- // @ts-ignore
29
- if (!snap.adapter) {
30
- return {
31
- adapter: {
32
- type: 'RefNameAliasAdapter'
33
- }
34
- };
35
- }
36
-
37
- return snap;
38
- }
39
- }),
40
- cytobands: (0, _configuration.ConfigurationSchema)('Cytoband', {
41
- adapter: pluginManager.pluggableConfigSchemaType('adapter')
42
- }, {
43
- preProcessSnapshot: function preProcessSnapshot(snap) {
44
- // allow cytoBand to be unspecified
45
- // @ts-ignore
46
- if (!snap.adapter) {
47
- return {
48
- adapter: {
49
- type: 'CytobandAdapter'
50
- }
51
- };
52
- }
53
-
54
- return snap;
55
- }
56
- }),
57
- displayName: {
58
- type: 'string',
59
- defaultValue: '',
60
- description: 'A human readable display name for the assembly e.g. "Homo sapiens (hg38)" while the assembly name may just be "hg38"'
61
- }
62
- }, {
63
- explicitIdentifier: 'name'
64
- });
48
+ explicitIdentifier: 'name',
49
+ });
65
50
  };
66
-
67
- exports.default = _default;
@@ -65,9 +65,9 @@ export default function assemblyManagerFactory(assemblyConfigType: IAnyType, plu
65
65
  }>;
66
66
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
67
67
  }, {
68
- get(assemblyName: string): (import("mobx-state-tree").ModelInstanceTypeProps<{
69
- configuration: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<IAnyType>>;
70
- }> & {
68
+ get(assemblyName: string): ({
69
+ configuration: any;
70
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
71
71
  error: Error | undefined;
72
72
  regions: import("./assembly").BasicRegion[] | undefined;
73
73
  refNameAliases: {
@@ -191,7 +191,9 @@ export default function assemblyManagerFactory(assemblyConfigType: IAnyType, plu
191
191
  }>;
192
192
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>) | undefined;
193
193
  readonly assemblyNamesList: string[];
194
- readonly assemblyList: (import("mobx-state-tree").ModelInstanceTypeProps<Record<string, any>> & {
194
+ readonly assemblyList: ({
195
+ [x: string]: any;
196
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
195
197
  setSubschema(slotName: string, data: unknown): any;
196
198
  } & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType> & {
197
199
  name: string;
@@ -200,9 +202,9 @@ export default function assemblyManagerFactory(assemblyConfigType: IAnyType, plu
200
202
  readonly pluginManager: any;
201
203
  readonly allPossibleRefNames: string[] | undefined;
202
204
  } & {
203
- waitForAssembly(assemblyName: string): Promise<(import("mobx-state-tree").ModelInstanceTypeProps<{
204
- configuration: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<IAnyType>>;
205
- }> & {
205
+ waitForAssembly(assemblyName: string): Promise<({
206
+ configuration: any;
207
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
206
208
  error: Error | undefined;
207
209
  regions: import("./assembly").BasicRegion[] | undefined;
208
210
  refNameAliases: {
@@ -339,9 +341,9 @@ export default function assemblyManagerFactory(assemblyConfigType: IAnyType, plu
339
341
  } | undefined>;
340
342
  isValidRefName(refName: string, assemblyName?: string): boolean;
341
343
  } & {
342
- removeAssembly(asm: import("mobx-state-tree").ModelInstanceTypeProps<{
343
- configuration: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<IAnyType>>;
344
- }> & {
344
+ removeAssembly(asm: {
345
+ configuration: any;
346
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
345
347
  error: Error | undefined;
346
348
  regions: import("./assembly").BasicRegion[] | undefined;
347
349
  refNameAliases: {
@@ -1,278 +1,134 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = assemblyManagerFactory;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
- var _mobx = require("mobx");
17
-
18
- var _mobxStateTree = require("mobx-state-tree");
19
-
20
- var _util = require("../util");
21
-
22
- var _configuration = require("../configuration");
23
-
24
- var _assembly = _interopRequireDefault(require("./assembly"));
25
-
26
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
27
-
28
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
-
30
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
31
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const mobx_1 = require("mobx");
7
+ const mobx_state_tree_1 = require("mobx-state-tree");
8
+ const util_1 = require("../util");
9
+ const configuration_1 = require("../configuration");
10
+ const assembly_1 = __importDefault(require("./assembly"));
32
11
  function assemblyManagerFactory(assemblyConfigType, pluginManager) {
33
- var Assembly = (0, _assembly.default)(assemblyConfigType, pluginManager);
34
- return _mobxStateTree.types.model({
35
- assemblies: _mobxStateTree.types.array(Assembly)
36
- }).views(function (self) {
37
- return {
38
- get: function get(assemblyName) {
39
- return self.assemblies.find(function (assembly) {
40
- return assembly.hasName(assemblyName);
41
- });
42
- },
43
-
44
- get assemblyNamesList() {
45
- return this.assemblyList.map(function (asm) {
46
- return asm.name;
47
- });
48
- },
49
-
50
- get assemblyList() {
51
- // name is the explicit identifier and can be accessed without getConf,
52
- // hence the union with {name:string}
53
- var _getParent = (0, _mobxStateTree.getParent)(self),
54
- assemblies = _getParent.jbrowse.assemblies,
55
- _getParent$session = _getParent.session;
56
-
57
- _getParent$session = _getParent$session === void 0 ? {} : _getParent$session;
58
- var _getParent$session$se = _getParent$session.sessionAssemblies,
59
- sessionAssemblies = _getParent$session$se === void 0 ? [] : _getParent$session$se;
60
- return [].concat((0, _toConsumableArray2.default)(assemblies), (0, _toConsumableArray2.default)(sessionAssemblies));
61
- },
62
-
63
- get rpcManager() {
64
- return (0, _mobxStateTree.getParent)(self).rpcManager;
65
- },
66
-
67
- get pluginManager() {
68
- return (0, _mobxStateTree.getParent)(self).pluginManager;
69
- },
70
-
71
- get allPossibleRefNames() {
72
- var refNames = [];
73
-
74
- var _iterator = _createForOfIteratorHelper(self.assemblies),
75
- _step;
76
-
77
- try {
78
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
79
- var assembly = _step.value;
80
-
81
- if (!assembly.allRefNames) {
82
- return undefined;
12
+ const Assembly = (0, assembly_1.default)(assemblyConfigType, pluginManager);
13
+ return mobx_state_tree_1.types
14
+ .model({
15
+ assemblies: mobx_state_tree_1.types.array(Assembly),
16
+ })
17
+ .views(self => ({
18
+ get(assemblyName) {
19
+ return self.assemblies.find(assembly => assembly.hasName(assemblyName));
20
+ },
21
+ get assemblyNamesList() {
22
+ return this.assemblyList.map(asm => asm.name);
23
+ },
24
+ get assemblyList() {
25
+ // name is the explicit identifier and can be accessed without getConf,
26
+ // hence the union with {name:string}
27
+ const { jbrowse: { assemblies }, session: { sessionAssemblies = [] } = {},
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ } = (0, mobx_state_tree_1.getParent)(self);
30
+ return [
31
+ ...assemblies,
32
+ ...sessionAssemblies,
33
+ ];
34
+ },
35
+ get rpcManager() {
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ return (0, mobx_state_tree_1.getParent)(self).rpcManager;
38
+ },
39
+ get pluginManager() {
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ return (0, mobx_state_tree_1.getParent)(self).pluginManager;
42
+ },
43
+ get allPossibleRefNames() {
44
+ let refNames = [];
45
+ for (const assembly of self.assemblies) {
46
+ if (!assembly.allRefNames) {
47
+ return undefined;
48
+ }
49
+ refNames = refNames.concat(assembly.allRefNames);
83
50
  }
84
-
85
- refNames = refNames.concat(assembly.allRefNames);
86
- }
87
- } catch (err) {
88
- _iterator.e(err);
89
- } finally {
90
- _iterator.f();
91
- }
92
-
93
- return refNames;
94
- }
95
-
96
- };
97
- }).views(function (self) {
98
- return {
99
- // use this method instead of assemblyManager.get(assemblyName)
100
- // get an assembly with regions loaded
101
- waitForAssembly: function waitForAssembly(assemblyName) {
102
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
103
- var assembly;
104
- return _regenerator.default.wrap(function _callee$(_context) {
105
- while (1) {
106
- switch (_context.prev = _context.next) {
107
- case 0:
108
- if (assemblyName) {
109
- _context.next = 2;
110
- break;
111
- }
112
-
113
- throw new Error('no assembly name supplied to waitForAssembly');
114
-
115
- case 2:
116
- assembly = self.get(assemblyName);
117
-
118
- if (assembly) {
119
- _context.next = 5;
120
- break;
121
- }
122
-
123
- return _context.abrupt("return", undefined);
124
-
125
- case 5:
126
- _context.next = 7;
127
- return (0, _util.when)(function () {
128
- return Boolean(assembly.regions && assembly.refNameAliases) || !!assembly.error;
129
- });
130
-
131
- case 7:
132
- if (!assembly.error) {
133
- _context.next = 9;
134
- break;
135
- }
136
-
137
- throw assembly.error;
138
-
139
- case 9:
140
- return _context.abrupt("return", assembly);
141
-
142
- case 10:
143
- case "end":
144
- return _context.stop();
145
- }
51
+ return refNames;
52
+ },
53
+ }))
54
+ .views(self => ({
55
+ // use this method instead of assemblyManager.get(assemblyName)
56
+ // get an assembly with regions loaded
57
+ async waitForAssembly(assemblyName) {
58
+ if (!assemblyName) {
59
+ throw new Error('no assembly name supplied to waitForAssembly');
146
60
  }
147
- }, _callee);
148
- }))();
149
- },
150
- getRefNameMapForAdapter: function getRefNameMapForAdapter(adapterConf, assemblyName, opts) {
151
- var _this = this;
152
-
153
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
154
- var asm;
155
- return _regenerator.default.wrap(function _callee2$(_context2) {
156
- while (1) {
157
- switch (_context2.prev = _context2.next) {
158
- case 0:
159
- if (!assemblyName) {
160
- _context2.next = 5;
161
- break;
162
- }
163
-
164
- _context2.next = 3;
165
- return _this.waitForAssembly(assemblyName);
166
-
167
- case 3:
168
- asm = _context2.sent;
169
- return _context2.abrupt("return", asm === null || asm === void 0 ? void 0 : asm.getRefNameMapForAdapter(adapterConf, opts));
170
-
171
- case 5:
172
- return _context2.abrupt("return", {});
173
-
174
- case 6:
175
- case "end":
176
- return _context2.stop();
177
- }
61
+ const assembly = self.get(assemblyName);
62
+ if (!assembly) {
63
+ return undefined;
178
64
  }
179
- }, _callee2);
180
- }))();
181
- },
182
- getReverseRefNameMapForAdapter: function getReverseRefNameMapForAdapter(adapterConf, assemblyName, opts) {
183
- var _this2 = this;
184
-
185
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
186
- var asm;
187
- return _regenerator.default.wrap(function _callee3$(_context3) {
188
- while (1) {
189
- switch (_context3.prev = _context3.next) {
190
- case 0:
191
- if (!assemblyName) {
192
- _context3.next = 5;
193
- break;
194
- }
195
-
196
- _context3.next = 3;
197
- return _this2.waitForAssembly(assemblyName);
198
-
199
- case 3:
200
- asm = _context3.sent;
201
- return _context3.abrupt("return", asm === null || asm === void 0 ? void 0 : asm.getReverseRefNameMapForAdapter(adapterConf, opts));
202
-
203
- case 5:
204
- return _context3.abrupt("return", {});
205
-
206
- case 6:
207
- case "end":
208
- return _context3.stop();
209
- }
65
+ await (0, util_1.when)(() => Boolean(assembly.regions && assembly.refNameAliases) ||
66
+ !!assembly.error);
67
+ if (assembly.error) {
68
+ throw assembly.error;
210
69
  }
211
- }, _callee3);
212
- }))();
213
- },
214
- isValidRefName: function isValidRefName(refName, assemblyName) {
215
- if (assemblyName) {
216
- var assembly = self.get(assemblyName);
217
-
218
- if (assembly) {
219
- return assembly.isValidRefName(refName);
220
- }
221
-
222
- throw new Error("isValidRefName for ".concat(assemblyName, " failed, assembly does not exist"));
223
- }
224
-
225
- if (!self.allPossibleRefNames) {
226
- throw new Error("isValidRefName not available, assemblyManager has not yet finished loading. If you are looking for a refname in a specific assembly, pass assembly argument");
227
- }
228
-
229
- return self.allPossibleRefNames.includes(refName);
230
- }
231
- };
232
- }).actions(function (self) {
233
- return {
234
- removeAssembly: function removeAssembly(asm) {
235
- self.assemblies.remove(asm);
236
- },
237
- afterAttach: function afterAttach() {
238
- var _this3 = this;
239
-
240
- (0, _mobxStateTree.addDisposer)(self, (0, _mobx.reaction)( // have to slice it to be properly reacted to
241
- function () {
242
- return self.assemblyList;
243
- }, function (assemblyConfigs) {
244
- self.assemblies.forEach(function (asm) {
245
- if (!asm.configuration) {
246
- _this3.removeAssembly(asm);
70
+ return assembly;
71
+ },
72
+ async getRefNameMapForAdapter(adapterConf, assemblyName, opts) {
73
+ if (assemblyName) {
74
+ const asm = await this.waitForAssembly(assemblyName);
75
+ return asm === null || asm === void 0 ? void 0 : asm.getRefNameMapForAdapter(adapterConf, opts);
247
76
  }
248
- });
249
- assemblyConfigs.forEach(function (assemblyConfig) {
250
- var existingAssemblyIdx = self.assemblies.findIndex(function (assembly) {
251
- return assembly.name === (0, _configuration.readConfObject)(assemblyConfig, 'name');
252
- });
253
-
254
- if (existingAssemblyIdx === -1) {
255
- _this3.addAssembly(assemblyConfig);
77
+ return {};
78
+ },
79
+ async getReverseRefNameMapForAdapter(adapterConf, assemblyName, opts) {
80
+ if (assemblyName) {
81
+ const asm = await this.waitForAssembly(assemblyName);
82
+ return asm === null || asm === void 0 ? void 0 : asm.getReverseRefNameMapForAdapter(adapterConf, opts);
83
+ }
84
+ return {};
85
+ },
86
+ isValidRefName(refName, assemblyName) {
87
+ if (assemblyName) {
88
+ const assembly = self.get(assemblyName);
89
+ if (assembly) {
90
+ return assembly.isValidRefName(refName);
91
+ }
92
+ throw new Error(`isValidRefName for ${assemblyName} failed, assembly does not exist`);
256
93
  }
257
- });
258
- }, {
259
- fireImmediately: true,
260
- name: 'assemblyManagerAfterAttach'
261
- }));
262
- },
263
- // this can take an active instance of an assembly, in which case it is
264
- // referred to, or it can take an identifier e.g. assembly name, which is
265
- // used as a reference. snapshots cannot be used
266
- addAssembly: function addAssembly(assemblyConfig) {
267
- self.assemblies.push({
268
- configuration: assemblyConfig
269
- });
270
- },
271
- replaceAssembly: function replaceAssembly(idx, assemblyConfig) {
272
- self.assemblies[idx] = (0, _mobxStateTree.cast)({
273
- configuration: assemblyConfig
274
- });
275
- }
276
- };
277
- });
278
- }
94
+ if (!self.allPossibleRefNames) {
95
+ throw new Error(`isValidRefName not available, assemblyManager has not yet finished loading. If you are looking for a refname in a specific assembly, pass assembly argument`);
96
+ }
97
+ return self.allPossibleRefNames.includes(refName);
98
+ },
99
+ }))
100
+ .actions(self => ({
101
+ removeAssembly(asm) {
102
+ self.assemblies.remove(asm);
103
+ },
104
+ afterAttach() {
105
+ (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.reaction)(
106
+ // have to slice it to be properly reacted to
107
+ () => self.assemblyList, assemblyConfigs => {
108
+ self.assemblies.forEach(asm => {
109
+ if (!asm.configuration) {
110
+ this.removeAssembly(asm);
111
+ }
112
+ });
113
+ assemblyConfigs.forEach(assemblyConfig => {
114
+ const existingAssemblyIdx = self.assemblies.findIndex(assembly => assembly.name === (0, configuration_1.readConfObject)(assemblyConfig, 'name'));
115
+ if (existingAssemblyIdx === -1) {
116
+ this.addAssembly(assemblyConfig);
117
+ }
118
+ });
119
+ }, { fireImmediately: true, name: 'assemblyManagerAfterAttach' }));
120
+ },
121
+ // this can take an active instance of an assembly, in which case it is
122
+ // referred to, or it can take an identifier e.g. assembly name, which is
123
+ // used as a reference. snapshots cannot be used
124
+ addAssembly(assemblyConfig) {
125
+ self.assemblies.push({ configuration: assemblyConfig });
126
+ },
127
+ replaceAssembly(idx, assemblyConfig) {
128
+ self.assemblies[idx] = (0, mobx_state_tree_1.cast)({
129
+ configuration: assemblyConfig,
130
+ });
131
+ },
132
+ }));
133
+ }
134
+ exports.default = assemblyManagerFactory;
@@ -1,23 +1,10 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "assemblyConfigSchemaFactory", {
9
- enumerable: true,
10
- get: function get() {
11
- return _assemblyConfigSchema.default;
12
- }
13
- });
14
- Object.defineProperty(exports, "default", {
15
- enumerable: true,
16
- get: function get() {
17
- return _assemblyManager.default;
18
- }
19
- });
20
-
21
- var _assemblyManager = _interopRequireDefault(require("./assemblyManager"));
22
-
23
- var _assemblyConfigSchema = _interopRequireDefault(require("./assemblyConfigSchema"));
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.assemblyConfigSchemaFactory = exports.default = void 0;
7
+ var assemblyManager_1 = require("./assemblyManager");
8
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(assemblyManager_1).default; } });
9
+ var assemblyConfigSchema_1 = require("./assemblyConfigSchema");
10
+ Object.defineProperty(exports, "assemblyConfigSchemaFactory", { enumerable: true, get: function () { return __importDefault(assemblyConfigSchema_1).default; } });