@jbrowse/core 2.0.1 → 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 (179) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +6 -0
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +313 -592
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -479
  4. package/BaseFeatureWidget/index.js +88 -126
  5. package/BaseFeatureWidget/types.js +1 -4
  6. package/BaseFeatureWidget/util.js +40 -75
  7. package/CorePlugin.js +55 -94
  8. package/Plugin.js +9 -34
  9. package/PluginLoader.js +153 -422
  10. package/PluginManager.d.ts +17 -14
  11. package/PluginManager.js +377 -666
  12. package/ReExports/Attributes.js +3 -10
  13. package/ReExports/BaseCard.js +3 -10
  14. package/ReExports/DataGrid.js +5 -12
  15. package/ReExports/FeatureDetails.js +3 -10
  16. package/ReExports/index.js +6 -12
  17. package/ReExports/list.d.ts +5 -0
  18. package/ReExports/list.js +271 -7
  19. package/ReExports/material-ui-colors.js +15 -16
  20. package/ReExports/modules.d.ts +0 -1
  21. package/ReExports/modules.js +453 -798
  22. package/TextSearch/BaseResults.js +51 -123
  23. package/TextSearch/TextSearchManager.js +66 -144
  24. package/assemblyManager/assembly.js +280 -555
  25. package/assemblyManager/assemblyConfigSchema.js +47 -64
  26. package/assemblyManager/assemblyManager.js +126 -272
  27. package/assemblyManager/index.js +9 -22
  28. package/configuration/configurationSchema.js +167 -203
  29. package/configuration/configurationSlot.js +248 -326
  30. package/configuration/index.js +19 -35
  31. package/configuration/util.js +131 -173
  32. package/data_adapters/BaseAdapter.d.ts +2 -2
  33. package/data_adapters/BaseAdapter.js +132 -521
  34. package/data_adapters/CytobandAdapter.js +40 -126
  35. package/data_adapters/dataAdapterCache.js +77 -158
  36. package/package.json +4 -5
  37. package/pluggableElementTypes/AdapterType.js +24 -79
  38. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +17 -0
  39. package/pluggableElementTypes/AddTrackWorkflowType.js +20 -0
  40. package/pluggableElementTypes/ConnectionType.js +22 -65
  41. package/pluggableElementTypes/DisplayType.js +35 -82
  42. package/pluggableElementTypes/InternetAccountType.js +23 -64
  43. package/pluggableElementTypes/PluggableElementBase.js +8 -20
  44. package/pluggableElementTypes/RpcMethodType.js +85 -427
  45. package/pluggableElementTypes/TextSearchAdapterType.js +16 -55
  46. package/pluggableElementTypes/TrackType.js +26 -70
  47. package/pluggableElementTypes/ViewType.js +21 -63
  48. package/pluggableElementTypes/WidgetType.js +21 -64
  49. package/pluggableElementTypes/index.d.ts +4 -3
  50. package/pluggableElementTypes/index.js +42 -125
  51. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +28 -43
  52. package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
  53. package/pluggableElementTypes/models/BaseTrackModel.js +139 -199
  54. package/pluggableElementTypes/models/BaseViewModel.js +24 -40
  55. package/pluggableElementTypes/models/InternetAccountModel.js +116 -263
  56. package/pluggableElementTypes/models/baseConnectionConfig.js +14 -25
  57. package/pluggableElementTypes/models/baseInternetAccountConfig.js +29 -38
  58. package/pluggableElementTypes/models/baseTrackConfig.js +106 -133
  59. package/pluggableElementTypes/models/index.js +21 -70
  60. package/pluggableElementTypes/renderers/BoxRendererType.js +132 -291
  61. package/pluggableElementTypes/renderers/CircularChordRendererType.js +8 -38
  62. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +60 -192
  63. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -2
  64. package/pluggableElementTypes/renderers/FeatureRendererType.js +89 -264
  65. package/pluggableElementTypes/renderers/RendererType.js +31 -105
  66. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +61 -72
  67. package/pluggableElementTypes/renderers/ServerSideRendererType.js +112 -265
  68. package/pluggableElementTypes/renderers/index.js +19 -62
  69. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +27 -65
  70. package/rpc/BaseRpcDriver.js +169 -405
  71. package/rpc/MainThreadRpcDriver.js +27 -150
  72. package/rpc/RpcManager.js +58 -159
  73. package/rpc/WebWorkerRpcDriver.js +54 -171
  74. package/rpc/configSchema.js +25 -49
  75. package/rpc/coreRpcMethods.js +221 -959
  76. package/rpc/remoteAbortSignals.js +46 -70
  77. package/tsconfig.build.tsbuildinfo +1 -1
  78. package/ui/AboutDialog.js +106 -162
  79. package/ui/App.js +157 -242
  80. package/ui/AssemblySelector.js +59 -120
  81. package/ui/CascadingMenu.js +101 -196
  82. package/ui/ColorPicker.d.ts +16 -0
  83. package/ui/ColorPicker.js +97 -0
  84. package/ui/Drawer.js +28 -61
  85. package/ui/DrawerWidget.js +108 -202
  86. package/ui/DropDownMenu.js +60 -91
  87. package/ui/EditableTypography.js +87 -149
  88. package/ui/ErrorMessage.js +41 -56
  89. package/ui/FactoryResetDialog.js +24 -57
  90. package/ui/FatalErrorDialog.js +59 -91
  91. package/ui/FileSelector/FileSelector.js +123 -189
  92. package/ui/FileSelector/LocalFileChooser.js +44 -75
  93. package/ui/FileSelector/UrlChooser.js +17 -38
  94. package/ui/FileSelector/index.js +6 -12
  95. package/ui/Icons.js +45 -69
  96. package/ui/Logo.js +57 -110
  97. package/ui/Menu.js +232 -354
  98. package/ui/PrerenderedCanvas.js +63 -87
  99. package/ui/ResizeHandle.js +87 -116
  100. package/ui/ReturnToImportFormDialog.js +32 -63
  101. package/ui/SanitizedHTML.js +64 -47
  102. package/ui/Snackbar.js +74 -101
  103. package/ui/SnackbarModel.js +37 -51
  104. package/ui/Tooltip.js +49 -76
  105. package/ui/ViewContainer.js +113 -196
  106. package/ui/colors.d.ts +10 -0
  107. package/ui/colors.js +78 -0
  108. package/ui/index.js +51 -181
  109. package/ui/react-colorful.d.ts +17 -0
  110. package/ui/react-colorful.js +455 -0
  111. package/ui/theme.js +199 -247
  112. package/util/Base1DUtils.js +163 -202
  113. package/util/Base1DViewModel.js +121 -168
  114. package/util/QuickLRU.js +84 -332
  115. package/util/TimeTraveller.d.ts +19 -0
  116. package/util/TimeTraveller.js +86 -0
  117. package/util/aborting.js +49 -127
  118. package/util/analytics.js +91 -154
  119. package/util/blockTypes.js +106 -240
  120. package/util/calculateDynamicBlocks.js +98 -128
  121. package/util/calculateStaticBlocks.js +105 -125
  122. package/util/color/cssColorsLevel4.js +156 -160
  123. package/util/color/index.js +33 -55
  124. package/util/compositeMap.js +49 -333
  125. package/util/formatFastaStrings.js +9 -14
  126. package/util/idMaker.js +18 -31
  127. package/util/index.d.ts +7 -20
  128. package/util/index.js +742 -1188
  129. package/util/io/RemoteFileWithRangeCache.js +88 -257
  130. package/util/io/index.js +95 -169
  131. package/util/jexl.js +60 -115
  132. package/util/jexlStrings.js +24 -29
  133. package/util/layouts/BaseLayout.js +1 -4
  134. package/util/layouts/GranularRectLayout.js +388 -555
  135. package/util/layouts/MultiLayout.js +41 -109
  136. package/util/layouts/PrecomputedLayout.js +56 -112
  137. package/util/layouts/PrecomputedMultiLayout.js +22 -59
  138. package/util/layouts/SceneGraph.js +127 -197
  139. package/util/layouts/index.js +29 -66
  140. package/util/mst-reflection.js +55 -71
  141. package/util/offscreenCanvasPonyfill.js +66 -134
  142. package/util/offscreenCanvasUtils.d.ts +2 -7
  143. package/util/offscreenCanvasUtils.js +49 -146
  144. package/util/range.js +29 -40
  145. package/util/rxjs.js +20 -27
  146. package/util/simpleFeature.js +88 -152
  147. package/util/stats.js +91 -151
  148. package/util/tracks.js +130 -173
  149. package/util/types/index.js +110 -179
  150. package/util/types/mst.js +91 -146
  151. package/util/types/util.js +1 -4
  152. package/util/when.js +54 -101
  153. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +0 -122
  154. package/BaseFeatureWidget/index.test.js +0 -69
  155. package/TextSearch/BaseResults.test.js +0 -42
  156. package/configuration/configurationSchema.test.js +0 -266
  157. package/configuration/configurationSlot.test.js +0 -69
  158. package/configuration/util.test.js +0 -39
  159. package/data_adapters/BaseAdapter.test.js +0 -200
  160. package/declare.d.js +0 -1
  161. package/pluggableElementTypes/RpcMethodType.test.js +0 -118
  162. package/pluggableElementTypes/renderers/declare.d.js +0 -1
  163. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +0 -20
  164. package/rpc/BaseRpcDriver.test.js +0 -540
  165. package/rpc/declaration.d.js +0 -1
  166. package/ui/FatalErrorDialog.test.js +0 -82
  167. package/ui/SanitizedHTML.test.js +0 -36
  168. package/ui/theme.test.js +0 -92
  169. package/util/Base1DViewModel.test.js +0 -130
  170. package/util/calculateDynamicBlocks.test.js +0 -74
  171. package/util/calculateStaticBlocks.test.js +0 -297
  172. package/util/declare.d.js +0 -1
  173. package/util/formatFastaStrings.test.js +0 -40
  174. package/util/index.test.js +0 -213
  175. package/util/jexlStrings.test.js +0 -48
  176. package/util/layouts/GranularRectLayout.test.js +0 -99
  177. package/util/range.test.js +0 -64
  178. package/util/simpleFeature.test.js +0 -34
  179. package/util/stats.test.js +0 -172
package/util/tracks.js CHANGED
@@ -1,147 +1,108 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.UNSUPPORTED = exports.UNKNOWN = void 0;
7
- exports.generateUnknownTrackConf = generateUnknownTrackConf;
8
- exports.generateUnsupportedTrackConf = generateUnsupportedTrackConf;
9
- exports.getBlob = getBlob;
10
- exports.getBlobMap = getBlobMap;
11
- exports.getFileName = getFileName;
12
- exports.getParentRenderProps = getParentRenderProps;
13
- exports.getRpcSessionId = getRpcSessionId;
14
- exports.getTrackAssemblyNames = getTrackAssemblyNames;
15
- exports.guessAdapter = guessAdapter;
16
- exports.guessTrackType = guessTrackType;
17
- exports.makeIndex = makeIndex;
18
- exports.makeIndexType = makeIndexType;
19
- exports.setBlobMap = setBlobMap;
20
- exports.storeBlobLocation = storeBlobLocation;
21
-
22
- var _mobxStateTree = require("mobx-state-tree");
23
-
24
- var _index2 = require("./index");
25
-
26
- var _configuration = require("../configuration");
27
-
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUnknownTrackConf = exports.generateUnsupportedTrackConf = exports.guessTrackType = exports.guessAdapter = exports.getFileName = exports.makeIndexType = exports.makeIndex = exports.storeBlobLocation = exports.setBlobMap = exports.getBlobMap = exports.getBlob = exports.UNSUPPORTED = exports.UNKNOWN = exports.getParentRenderProps = exports.getRpcSessionId = exports.getTrackAssemblyNames = void 0;
4
+ const mobx_state_tree_1 = require("mobx-state-tree");
5
+ const index_1 = require("./index");
6
+ const configuration_1 = require("../configuration");
28
7
  /* utility functions for use by track models and so forth */
29
8
  function getTrackAssemblyNames(track) {
30
- var trackConf = track.configuration;
31
- var trackAssemblyNames = (0, _configuration.readConfObject)(trackConf, 'assemblyNames');
32
-
33
- if (!trackAssemblyNames) {
34
- // Check if it's an assembly sequence track
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
- var parent = (0, _mobxStateTree.getParent)(track.configuration);
37
-
38
- if ('sequence' in parent) {
39
- return [(0, _configuration.readConfObject)(parent, 'name')];
9
+ const trackConf = track.configuration;
10
+ const trackAssemblyNames = (0, configuration_1.readConfObject)(trackConf, 'assemblyNames');
11
+ if (!trackAssemblyNames) {
12
+ // Check if it's an assembly sequence track
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ const parent = (0, mobx_state_tree_1.getParent)(track.configuration);
15
+ if ('sequence' in parent) {
16
+ return [(0, configuration_1.readConfObject)(parent, 'name')];
17
+ }
40
18
  }
41
- }
42
-
43
- return trackAssemblyNames;
19
+ return trackAssemblyNames;
44
20
  }
21
+ exports.getTrackAssemblyNames = getTrackAssemblyNames;
45
22
  /** return the rpcSessionId of the highest parent node in the tree that has an rpcSessionId */
46
-
47
-
48
23
  function getRpcSessionId(thisNode) {
49
- var highestRpcSessionId; // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
-
51
- for (var node = thisNode; !(0, _mobxStateTree.isRoot)(node); node = (0, _mobxStateTree.getParent)(node)) {
52
- if ('rpcSessionId' in node) {
53
- highestRpcSessionId = node.rpcSessionId;
24
+ let highestRpcSessionId;
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ for (let node = thisNode; !(0, mobx_state_tree_1.isRoot)(node); node = (0, mobx_state_tree_1.getParent)(node)) {
27
+ if ('rpcSessionId' in node) {
28
+ highestRpcSessionId = node.rpcSessionId;
29
+ }
30
+ }
31
+ if (!highestRpcSessionId) {
32
+ throw new Error('getRpcSessionId failed, no parent node in the state tree has an `rpcSessionId` attribute');
54
33
  }
55
- }
56
-
57
- if (!highestRpcSessionId) {
58
- throw new Error('getRpcSessionId failed, no parent node in the state tree has an `rpcSessionId` attribute');
59
- }
60
-
61
- return highestRpcSessionId;
34
+ return highestRpcSessionId;
62
35
  }
36
+ exports.getRpcSessionId = getRpcSessionId;
63
37
  /**
64
38
  * given an MST node, get the renderprops of the first parent container that has
65
39
  * renderProps
66
40
  * @param node -
67
41
  * @returns renderprops, or empty object if none found
68
42
  */
69
-
70
-
71
43
  function getParentRenderProps(node) {
72
- for ( // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
- var currentNode = (0, _mobxStateTree.getParent)(node); !(0, _mobxStateTree.isRoot)(currentNode); // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
- currentNode = (0, _mobxStateTree.getParent)(currentNode)) {
75
- if ('renderProps' in currentNode) {
76
- return currentNode.renderProps();
44
+ for (
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ let currentNode = (0, mobx_state_tree_1.getParent)(node); !(0, mobx_state_tree_1.isRoot)(currentNode);
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ currentNode = (0, mobx_state_tree_1.getParent)(currentNode)) {
49
+ if ('renderProps' in currentNode) {
50
+ return currentNode.renderProps();
51
+ }
77
52
  }
78
- }
79
-
80
- return {};
53
+ return {};
81
54
  }
82
-
83
- var UNKNOWN = 'UNKNOWN';
84
- exports.UNKNOWN = UNKNOWN;
85
- var UNSUPPORTED = 'UNSUPPORTED';
86
- exports.UNSUPPORTED = UNSUPPORTED;
87
- var blobMap = {}; // get a specific blob
88
-
55
+ exports.getParentRenderProps = getParentRenderProps;
56
+ exports.UNKNOWN = 'UNKNOWN';
57
+ exports.UNSUPPORTED = 'UNSUPPORTED';
58
+ let blobMap = {};
59
+ // get a specific blob
89
60
  function getBlob(id) {
90
- return blobMap[id];
91
- } // used to export entire context to webworker
92
-
93
-
61
+ return blobMap[id];
62
+ }
63
+ exports.getBlob = getBlob;
64
+ // used to export entire context to webworker
94
65
  function getBlobMap() {
95
- return blobMap;
96
- } // used in new contexts like webworkers
97
-
98
-
66
+ return blobMap;
67
+ }
68
+ exports.getBlobMap = getBlobMap;
69
+ // used in new contexts like webworkers
99
70
  function setBlobMap(map) {
100
- blobMap = map;
101
- } // blob files are stored in a global map
102
-
103
-
71
+ blobMap = map;
72
+ }
73
+ exports.setBlobMap = setBlobMap;
74
+ let counter = 0;
75
+ // blob files are stored in a global map. the blobId is based on a combination
76
+ // of timestamp plus counter to be unique across sessions and fast repeated
77
+ // calls
104
78
  function storeBlobLocation(location) {
105
- if (location && 'blob' in location) {
106
- // possibly we should be more clear about when this is not undefined, and
107
- // also allow mix of blob and url for index and file
108
- // @ts-ignore
109
- var blobId = "b".concat(+Date.now());
110
- blobMap[blobId] = location.blob;
111
- return {
112
- name: location === null || location === void 0 ? void 0 : location.blob.name,
113
- blobId: blobId,
114
- locationType: 'BlobLocation'
115
- };
116
- }
117
-
118
- return location;
79
+ if (location && 'blob' in location) {
80
+ const blobId = `b${+Date.now()}-${counter++}`;
81
+ blobMap[blobId] = location.blob;
82
+ return { name: location === null || location === void 0 ? void 0 : location.blob.name, blobId, locationType: 'BlobLocation' };
83
+ }
84
+ return location;
119
85
  }
86
+ exports.storeBlobLocation = storeBlobLocation;
120
87
  /**
121
88
  * creates a new location from the provided location including the appropriate suffix and location type
122
89
  * @param location - the FileLocation
123
90
  * @param suffix - the file suffix (e.g. .bam)
124
91
  * @returns the constructed location object from the provided prameters
125
92
  */
126
-
127
-
128
93
  function makeIndex(location, suffix) {
129
- if ('uri' in location) {
130
- return {
131
- uri: location.uri + suffix,
132
- locationType: 'UriLocation'
133
- };
134
- }
135
-
136
- if ('localPath' in location) {
137
- return {
138
- localPath: location.localPath + suffix,
139
- locationType: 'LocalPathLocation'
140
- };
141
- }
142
-
143
- return location;
94
+ if ('uri' in location) {
95
+ return { uri: location.uri + suffix, locationType: 'UriLocation' };
96
+ }
97
+ if ('localPath' in location) {
98
+ return {
99
+ localPath: location.localPath + suffix,
100
+ locationType: 'LocalPathLocation',
101
+ };
102
+ }
103
+ return location;
144
104
  }
105
+ exports.makeIndex = makeIndex;
145
106
  /**
146
107
  * constructs a potential index file (with suffix) from the provided file name
147
108
  * @param name - the name of the index file
@@ -149,76 +110,72 @@ function makeIndex(location, suffix) {
149
110
  * @param typeB - the second option of a potential two file suffix (e.g. CSI, BAI)
150
111
  * @returns a likely name of the index file for a given filename
151
112
  */
152
-
153
-
154
113
  function makeIndexType(name, typeA, typeB) {
155
- return name !== null && name !== void 0 && name.toUpperCase().endsWith(typeA) ? typeA : typeB;
114
+ return (name === null || name === void 0 ? void 0 : name.toUpperCase().endsWith(typeA)) ? typeA : typeB;
156
115
  }
157
-
116
+ exports.makeIndexType = makeIndexType;
158
117
  function getFileName(track) {
159
- var uri = 'uri' in track ? track.uri : undefined;
160
- var localPath = 'localPath' in track ? track.localPath : undefined;
161
- var blob = 'blobId' in track ? track : undefined;
162
- return (blob === null || blob === void 0 ? void 0 : blob.name) || (uri === null || uri === void 0 ? void 0 : uri.slice(uri.lastIndexOf('/') + 1)) || (localPath === null || localPath === void 0 ? void 0 : localPath.slice(localPath.lastIndexOf('/') + 1)) || '';
118
+ const uri = 'uri' in track ? track.uri : undefined;
119
+ const localPath = 'localPath' in track ? track.localPath : undefined;
120
+ const blob = 'blobId' in track ? track : undefined;
121
+ return ((blob === null || blob === void 0 ? void 0 : blob.name) ||
122
+ (uri === null || uri === void 0 ? void 0 : uri.slice(uri.lastIndexOf('/') + 1)) ||
123
+ (localPath === null || localPath === void 0 ? void 0 : localPath.slice(localPath.lastIndexOf('/') + 1)) ||
124
+ '');
163
125
  }
164
-
126
+ exports.getFileName = getFileName;
165
127
  function guessAdapter(file, index, adapterHint, model) {
166
- if (model) {
167
- var _getEnv = (0, _mobxStateTree.getEnv)(model),
168
- pluginManager = _getEnv.pluginManager;
169
-
170
- var adapterGuesser = pluginManager.evaluateExtensionPoint('Core-guessAdapterForLocation', function (_file, _index, _adapterHint) {
171
- return undefined;
172
- });
173
- var adapter = adapterGuesser(file, index, adapterHint);
174
-
175
- if (adapter) {
176
- return adapter;
128
+ if (model) {
129
+ const { pluginManager } = (0, mobx_state_tree_1.getEnv)(model);
130
+ const adapterGuesser = pluginManager.evaluateExtensionPoint('Core-guessAdapterForLocation', (_file, _index, _adapterHint) => {
131
+ return undefined;
132
+ });
133
+ const adapter = adapterGuesser(file, index, adapterHint);
134
+ if (adapter) {
135
+ return adapter;
136
+ }
177
137
  }
178
- }
179
-
180
- return {
181
- type: UNKNOWN
182
- };
138
+ return {
139
+ type: exports.UNKNOWN,
140
+ };
183
141
  }
184
-
142
+ exports.guessAdapter = guessAdapter;
185
143
  function guessTrackType(adapterType, model) {
186
- if (model) {
187
- // @ts-ignore
188
- var session = (0, _index2.getSession)(model);
189
- var trackTypeGuesser = (0, _mobxStateTree.getEnv)(session).pluginManager.evaluateExtensionPoint('Core-guessTrackTypeForLocation', function (_adapterName) {
190
- return undefined;
191
- });
192
- var trackType = trackTypeGuesser(adapterType);
193
-
194
- if (trackType) {
195
- return trackType;
144
+ if (model) {
145
+ // @ts-ignore
146
+ const session = (0, index_1.getSession)(model);
147
+ const trackTypeGuesser = (0, mobx_state_tree_1.getEnv)(session).pluginManager.evaluateExtensionPoint('Core-guessTrackTypeForLocation', (_adapterName) => {
148
+ return undefined;
149
+ });
150
+ const trackType = trackTypeGuesser(adapterType);
151
+ if (trackType) {
152
+ return trackType;
153
+ }
196
154
  }
197
- }
198
-
199
- return 'FeatureTrack';
155
+ return 'FeatureTrack';
200
156
  }
201
-
157
+ exports.guessTrackType = guessTrackType;
202
158
  function generateUnsupportedTrackConf(trackName, trackUrl, categories) {
203
- var conf = {
204
- type: 'FeatureTrack',
205
- name: "".concat(trackName, " (Unsupported)"),
206
- description: "Support not yet implemented for \"".concat(trackUrl, "\""),
207
- category: categories,
208
- trackId: ''
209
- };
210
- conf.trackId = (0, _index2.objectHash)(conf);
211
- return conf;
159
+ const conf = {
160
+ type: 'FeatureTrack',
161
+ name: `${trackName} (Unsupported)`,
162
+ description: `Support not yet implemented for "${trackUrl}"`,
163
+ category: categories,
164
+ trackId: '',
165
+ };
166
+ conf.trackId = (0, index_1.objectHash)(conf);
167
+ return conf;
212
168
  }
213
-
169
+ exports.generateUnsupportedTrackConf = generateUnsupportedTrackConf;
214
170
  function generateUnknownTrackConf(trackName, trackUrl, categories) {
215
- var conf = {
216
- type: 'FeatureTrack',
217
- name: "".concat(trackName, " (Unknown)"),
218
- description: "Could not determine track type for \"".concat(trackUrl, "\""),
219
- category: categories,
220
- trackId: ''
221
- };
222
- conf.trackId = (0, _index2.objectHash)(conf);
223
- return conf;
224
- }
171
+ const conf = {
172
+ type: 'FeatureTrack',
173
+ name: `${trackName} (Unknown)`,
174
+ description: `Could not determine track type for "${trackUrl}"`,
175
+ category: categories,
176
+ trackId: '',
177
+ };
178
+ conf.trackId = (0, index_1.objectHash)(conf);
179
+ return conf;
180
+ }
181
+ exports.generateUnknownTrackConf = generateUnknownTrackConf;