@jbrowse/plugin-legacy-jbrowse 1.4.4 → 1.5.3

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 (31) hide show
  1. package/dist/JBrowse1Connection/jb1ToJb2.d.ts +1 -0
  2. package/dist/JBrowse1Connection/types.d.ts +2 -0
  3. package/dist/JBrowse1TextSeachAdapter/HttpMap.d.ts +1 -15
  4. package/dist/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.d.ts +12 -8
  5. package/dist/NCListAdapter/NCListAdapter.d.ts +3 -1
  6. package/dist/plugin-legacy-jbrowse.cjs.development.js +334 -398
  7. package/dist/plugin-legacy-jbrowse.cjs.development.js.map +1 -1
  8. package/dist/plugin-legacy-jbrowse.cjs.production.min.js +1 -1
  9. package/dist/plugin-legacy-jbrowse.cjs.production.min.js.map +1 -1
  10. package/dist/plugin-legacy-jbrowse.esm.js +336 -399
  11. package/dist/plugin-legacy-jbrowse.esm.js.map +1 -1
  12. package/package.json +5 -3
  13. package/src/JBrowse1Connection/configSchema.ts +4 -1
  14. package/src/JBrowse1Connection/jb1ConfigLoad.ts +24 -27
  15. package/src/JBrowse1Connection/jb1ConfigParse.ts +10 -12
  16. package/src/JBrowse1Connection/jb1ToJb2.ts +93 -43
  17. package/src/JBrowse1Connection/types.ts +2 -0
  18. package/src/JBrowse1TextSeachAdapter/HttpMap.test.ts +8 -20
  19. package/src/JBrowse1TextSeachAdapter/HttpMap.ts +17 -75
  20. package/src/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.test.ts +2 -4
  21. package/src/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.ts +42 -58
  22. package/src/JBrowse1TextSeachAdapter/configSchema.ts +2 -2
  23. package/src/NCListAdapter/NCListAdapter.test.ts +4 -1
  24. package/src/NCListAdapter/NCListAdapter.ts +15 -8
  25. package/src/NCListAdapter/configSchema.ts +4 -1
  26. package/src/__snapshots__/index.test.js.snap +3 -0
  27. package/src/index.test.js +1 -0
  28. package/src/index.ts +23 -0
  29. package/dist/JBrowse1TextSeachAdapter/Crc32.d.ts +0 -19
  30. package/src/JBrowse1TextSeachAdapter/Crc32.test.ts +0 -21
  31. package/src/JBrowse1TextSeachAdapter/Crc32.ts +0 -77
@@ -10,17 +10,93 @@ var ConnectionType = _interopDefault(require('@jbrowse/core/pluggableElementType
10
10
  var Plugin = _interopDefault(require('@jbrowse/core/Plugin'));
11
11
  var configuration = require('@jbrowse/core/configuration');
12
12
  var BaseAdapter = require('@jbrowse/core/data_adapters/BaseAdapter');
13
- var BaseResult = require('@jbrowse/core/TextSearch/BaseResults');
14
- var BaseResult__default = _interopDefault(BaseResult);
13
+ var BaseResult = _interopDefault(require('@jbrowse/core/TextSearch/BaseResults'));
14
+ var crc32 = _interopDefault(require('buffer-crc32'));
15
+ var tracks = require('@jbrowse/core/util/tracks');
15
16
  var util = require('@jbrowse/core/util');
16
17
  var models = require('@jbrowse/core/pluggableElementTypes/models');
17
18
  var mobxStateTree = require('mobx-state-tree');
18
19
  var io = require('@jbrowse/core/util/io');
19
20
  var getValue = _interopDefault(require('get-value'));
20
21
  var setValue = _interopDefault(require('set-value'));
21
- var tracks = require('@jbrowse/core/util/tracks');
22
22
  var NCListStore = _interopDefault(require('@gmod/nclist'));
23
23
  var rxjs = require('@jbrowse/core/util/rxjs');
24
+ var genericFilehandle = require('generic-filehandle');
25
+
26
+ function _asyncIterator(iterable) {
27
+ var method,
28
+ async,
29
+ sync,
30
+ retry = 2;
31
+
32
+ if (typeof Symbol !== "undefined") {
33
+ async = Symbol.asyncIterator;
34
+ sync = Symbol.iterator;
35
+ }
36
+
37
+ while (retry--) {
38
+ if (async && (method = iterable[async]) != null) {
39
+ return method.call(iterable);
40
+ }
41
+
42
+ if (sync && (method = iterable[sync]) != null) {
43
+ return new AsyncFromSyncIterator(method.call(iterable));
44
+ }
45
+
46
+ async = "@@asyncIterator";
47
+ sync = "@@iterator";
48
+ }
49
+
50
+ throw new TypeError("Object is not async iterable");
51
+ }
52
+
53
+ function AsyncFromSyncIterator(s) {
54
+ AsyncFromSyncIterator = function (s) {
55
+ this.s = s;
56
+ this.n = s.next;
57
+ };
58
+
59
+ AsyncFromSyncIterator.prototype = {
60
+ s: null,
61
+ n: null,
62
+ next: function () {
63
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
64
+ },
65
+ return: function (value) {
66
+ var ret = this.s.return;
67
+
68
+ if (ret === undefined) {
69
+ return Promise.resolve({
70
+ value: value,
71
+ done: true
72
+ });
73
+ }
74
+
75
+ return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));
76
+ },
77
+ throw: function (value) {
78
+ var thr = this.s.return;
79
+ if (thr === undefined) return Promise.reject(value);
80
+ return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));
81
+ }
82
+ };
83
+
84
+ function AsyncFromSyncIteratorContinuation(r) {
85
+ if (Object(r) !== r) {
86
+ return Promise.reject(new TypeError(r + " is not an object."));
87
+ }
88
+
89
+ var done = r.done;
90
+ return Promise.resolve(r.value).then(function (value) {
91
+ return {
92
+ value: value,
93
+ done: done
94
+ };
95
+ });
96
+ }
97
+
98
+ return new AsyncFromSyncIterator(s);
99
+ }
24
100
 
25
101
  function ownKeys(object, enumerableOnly) {
26
102
  var keys = Object.keys(object);
@@ -76,20 +152,6 @@ function _typeof(obj) {
76
152
  return _typeof(obj);
77
153
  }
78
154
 
79
- function _asyncIterator(iterable) {
80
- var method;
81
-
82
- if (typeof Symbol !== "undefined") {
83
- if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];
84
- if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];
85
- }
86
-
87
- if (method == null) method = iterable["@@asyncIterator"];
88
- if (method == null) method = iterable["@@iterator"];
89
- if (method == null) throw new TypeError("Object is not async iterable");
90
- return method.call(iterable);
91
- }
92
-
93
155
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
94
156
  try {
95
157
  var info = gen[key](arg);
@@ -218,6 +280,8 @@ function _assertThisInitialized(self) {
218
280
  function _possibleConstructorReturn(self, call) {
219
281
  if (call && (typeof call === "object" || typeof call === "function")) {
220
282
  return call;
283
+ } else if (call !== void 0) {
284
+ throw new TypeError("Derived constructors may only return object or undefined");
221
285
  }
222
286
 
223
287
  return _assertThisInitialized(self);
@@ -321,7 +385,8 @@ var ncListAdapterConfigSchema = /*#__PURE__*/configuration.ConfigurationSchema('
321
385
  rootUrlTemplate: {
322
386
  type: 'fileLocation',
323
387
  defaultValue: {
324
- uri: '/path/to/my/{refseq}/trackData.json'
388
+ uri: '/path/to/my/{refseq}/trackData.json',
389
+ locationType: 'UriLocation'
325
390
  }
326
391
  },
327
392
  refNames: {
@@ -430,11 +495,9 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
430
495
 
431
496
 
432
497
  var IteratorPrototype = {};
433
-
434
- IteratorPrototype[iteratorSymbol] = function () {
498
+ define(IteratorPrototype, iteratorSymbol, function () {
435
499
  return this;
436
- };
437
-
500
+ });
438
501
  var getProto = Object.getPrototypeOf;
439
502
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
440
503
 
@@ -445,8 +508,9 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
445
508
  }
446
509
 
447
510
  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
448
- GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
449
- GeneratorFunctionPrototype.constructor = GeneratorFunction;
511
+ GeneratorFunction.prototype = GeneratorFunctionPrototype;
512
+ define(Gp, "constructor", GeneratorFunctionPrototype);
513
+ define(GeneratorFunctionPrototype, "constructor", GeneratorFunction);
450
514
  GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"); // Helper for defining the .next, .throw, and .return methods of the
451
515
  // Iterator interface in terms of a single ._invoke method.
452
516
 
@@ -551,11 +615,9 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
551
615
  }
552
616
 
553
617
  defineIteratorMethods(AsyncIterator.prototype);
554
-
555
- AsyncIterator.prototype[asyncIteratorSymbol] = function () {
618
+ define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
556
619
  return this;
557
- };
558
-
620
+ });
559
621
  exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
560
622
  // AsyncIterator objects; they just return a Promise for the value of
561
623
  // the final result produced by the iterator.
@@ -732,13 +794,12 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
732
794
  // object to not be returned from this call. This ensures that doesn't happen.
733
795
  // See https://github.com/facebook/regenerator/issues/274 for more details.
734
796
 
735
- Gp[iteratorSymbol] = function () {
797
+ define(Gp, iteratorSymbol, function () {
736
798
  return this;
737
- };
738
-
739
- Gp.toString = function () {
799
+ });
800
+ define(Gp, "toString", function () {
740
801
  return "[object Generator]";
741
- };
802
+ });
742
803
 
743
804
  function pushTryEntry(locs) {
744
805
  var entry = {
@@ -1050,86 +1111,28 @@ var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
1050
1111
  } catch (accidentalStrictMode) {
1051
1112
  // This module should not be running in strict mode, so the above
1052
1113
  // assignment should always work unless something is misconfigured. Just
1053
- // in case runtime.js accidentally runs in strict mode, we can escape
1114
+ // in case runtime.js accidentally runs in strict mode, in modern engines
1115
+ // we can explicitly access globalThis. In older engines we can escape
1054
1116
  // strict mode using a global Function call. This could conceivably fail
1055
1117
  // if a Content Security Policy forbids using Function, but in that case
1056
1118
  // the proper solution is to fix the accidental strict mode problem. If
1057
1119
  // you've misconfigured your bundler to force strict mode and applied a
1058
1120
  // CSP to forbid Function, and you're not willing to fix either of those
1059
1121
  // problems, please detail your unique predicament in a GitHub issue.
1060
- Function("r", "regeneratorRuntime = r")(runtime);
1122
+ if (typeof globalThis === "object") {
1123
+ globalThis.regeneratorRuntime = runtime;
1124
+ } else {
1125
+ Function("r", "regeneratorRuntime = r")(runtime);
1126
+ }
1061
1127
  }
1062
1128
  });
1063
1129
 
1064
- var crc32Table = '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'; // Adapted from JBrowse1 crc32 implementation.
1065
- // https://github.com/GMOD/jbrowse/blob/b8324df0033796b6d502696dc65c9ff888aae2f3/src/JBrowse/Digest/Crc32.js
1066
-
1067
- /**
1068
- * Returns an array of bytes given a string
1069
- * @param str - string
1070
- */
1071
-
1072
- function stringToBytes(str) {
1073
- var ch;
1074
- var st;
1075
- var re = [];
1076
-
1077
- for (var i = 0; i < str.length; i++) {
1078
- ch = str.charCodeAt(i); // get char
1079
-
1080
- st = []; // set up "stack"
1081
-
1082
- do {
1083
- st.push(ch & 0xff); // push byte to stack
1084
-
1085
- ch >>= 8; // shift value down by 1 byte
1086
- } while (ch); // add stack contents to result
1087
- // done because chars have "wrong" endianness
1088
-
1089
-
1090
- re = re.concat(st.reverse());
1091
- }
1092
-
1093
- return re;
1094
- }
1095
- /**
1096
- * crc32 given a string
1097
- * @param str - string
1098
- * @param crc - number
1099
- */
1100
-
1101
- function crc32(str) {
1102
- var crc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1103
- var bytes = stringToBytes(str);
1104
- var n = 0; // a number between 0 and 255
1105
-
1106
- var x; // a hex number
1107
-
1108
- var table = crc32Table;
1109
- crc ^= -1;
1110
-
1111
- for (var i = 0, iTop = bytes.length; i < iTop; i++) {
1112
- n = (crc ^ bytes[i]) & 0xff;
1113
- x = "0x".concat(table.substr(n * 9, 8));
1114
- crc = crc >>> 8 ^ parseInt(x, 16);
1115
- }
1116
-
1117
- crc ^= -1; // convert to unsigned 32-bit int if needed
1118
-
1119
- if (crc < 0) {
1120
- crc += 4294967296;
1121
- }
1122
-
1123
- return crc;
1124
- }
1125
-
1126
1130
  var HttpMap = /*#__PURE__*/function () {
1127
1131
  function HttpMap(args) {
1128
1132
  _classCallCheck(this, HttpMap);
1129
1133
 
1130
1134
  // make sure url has a trailing slash
1131
1135
  this.url = /\/$/.test(args.url) ? args.url : "".concat(args.url, "/");
1132
- this.isElectron = args.isElectron;
1133
1136
  }
1134
1137
  /**
1135
1138
  * loads meta.json file from names directory and reads number of hash_bits used
@@ -1145,47 +1148,25 @@ var HttpMap = /*#__PURE__*/function () {
1145
1148
  while (1) {
1146
1149
  switch (_context.prev = _context.next) {
1147
1150
  case 0:
1148
- _context.prev = 0;
1149
- _context.next = 3;
1151
+ _context.next = 2;
1150
1152
  return this.loadFile('meta.json');
1151
1153
 
1152
- case 3:
1154
+ case 2:
1153
1155
  meta = _context.sent;
1154
-
1155
- if (!(meta !== {})) {
1156
- _context.next = 11;
1157
- break;
1158
- }
1159
-
1160
1156
  compress = meta.compress, tracks = meta.track_names;
1161
- this.compress = compress;
1162
1157
  hashHexCharacters = Math.ceil(meta.hash_bits / 4);
1163
- this.hash_hex_characters = hashHexCharacters;
1164
- this.tracks = tracks;
1165
1158
  return _context.abrupt("return", {
1166
1159
  hashHexCharacters: hashHexCharacters,
1167
1160
  compress: compress,
1168
1161
  tracks: tracks
1169
1162
  });
1170
1163
 
1171
- case 11:
1172
- throw new Error('Error parsing meta.json');
1173
-
1174
- case 14:
1175
- _context.prev = 14;
1176
- _context.t0 = _context["catch"](0);
1177
- // throw Error(err)
1178
- console.warn("Error: ".concat(_context.t0));
1179
-
1180
- case 17:
1181
- return _context.abrupt("return", {});
1182
-
1183
- case 18:
1164
+ case 6:
1184
1165
  case "end":
1185
1166
  return _context.stop();
1186
1167
  }
1187
1168
  }
1188
- }, _callee, this, [[0, 14]]);
1169
+ }, _callee, this);
1189
1170
  }));
1190
1171
 
1191
1172
  function readMeta() {
@@ -1203,22 +1184,14 @@ var HttpMap = /*#__PURE__*/function () {
1203
1184
  while (1) {
1204
1185
  switch (_context2.prev = _context2.next) {
1205
1186
  case 0:
1206
- if (!this.hash_hex_characters) {
1207
- _context2.next = 2;
1208
- break;
1209
- }
1210
-
1211
- return _context2.abrupt("return", this.hash_hex_characters);
1212
-
1213
- case 2:
1214
- _context2.next = 4;
1187
+ _context2.next = 2;
1215
1188
  return this.readMeta();
1216
1189
 
1217
- case 4:
1190
+ case 2:
1218
1191
  meta = _context2.sent;
1219
1192
  return _context2.abrupt("return", meta.hashHexCharacters);
1220
1193
 
1221
- case 6:
1194
+ case 4:
1222
1195
  case "end":
1223
1196
  return _context2.stop();
1224
1197
  }
@@ -1241,22 +1214,14 @@ var HttpMap = /*#__PURE__*/function () {
1241
1214
  while (1) {
1242
1215
  switch (_context3.prev = _context3.next) {
1243
1216
  case 0:
1244
- if (!this.compress) {
1245
- _context3.next = 2;
1246
- break;
1247
- }
1248
-
1249
- return _context3.abrupt("return", this.compress);
1250
-
1251
- case 2:
1252
- _context3.next = 4;
1217
+ _context3.next = 2;
1253
1218
  return this.readMeta();
1254
1219
 
1255
- case 4:
1220
+ case 2:
1256
1221
  meta = _context3.sent;
1257
1222
  return _context3.abrupt("return", meta.compress);
1258
1223
 
1259
- case 6:
1224
+ case 4:
1260
1225
  case "end":
1261
1226
  return _context3.stop();
1262
1227
  }
@@ -1279,22 +1244,14 @@ var HttpMap = /*#__PURE__*/function () {
1279
1244
  while (1) {
1280
1245
  switch (_context4.prev = _context4.next) {
1281
1246
  case 0:
1282
- if (!this.tracks) {
1283
- _context4.next = 2;
1284
- break;
1285
- }
1286
-
1287
- return _context4.abrupt("return", this.tracks);
1288
-
1289
- case 2:
1290
- _context4.next = 4;
1247
+ _context4.next = 2;
1291
1248
  return this.readMeta();
1292
1249
 
1293
- case 4:
1250
+ case 2:
1294
1251
  meta = _context4.sent;
1295
1252
  return _context4.abrupt("return", meta.tracks);
1296
1253
 
1297
- case 6:
1254
+ case 4:
1298
1255
  case "end":
1299
1256
  return _context4.stop();
1300
1257
  }
@@ -1352,45 +1309,25 @@ var HttpMap = /*#__PURE__*/function () {
1352
1309
  key: "getBucket",
1353
1310
  value: function () {
1354
1311
  var _getBucket = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee6(key) {
1355
- var bucketIdent, hexToDirPath, value;
1312
+ var bucketIdent, hexToDirPath;
1356
1313
  return runtime_1.wrap(function _callee6$(_context6) {
1357
1314
  while (1) {
1358
1315
  switch (_context6.prev = _context6.next) {
1359
1316
  case 0:
1360
1317
  bucketIdent = this.hash(key);
1361
- _context6.prev = 1;
1362
- _context6.next = 4;
1318
+ _context6.next = 3;
1363
1319
  return this.hexToDirPath(bucketIdent);
1364
1320
 
1365
- case 4:
1321
+ case 3:
1366
1322
  hexToDirPath = _context6.sent;
1367
- _context6.next = 7;
1368
- return this.loadFile(hexToDirPath);
1323
+ return _context6.abrupt("return", this.loadFile(hexToDirPath));
1369
1324
 
1370
- case 7:
1371
- value = _context6.sent;
1372
- return _context6.abrupt("return", value);
1373
-
1374
- case 11:
1375
- _context6.prev = 11;
1376
- _context6.t0 = _context6["catch"](1);
1377
-
1378
- if (!(this.isElectron || _context6.t0.status === 404)) {
1379
- _context6.next = 15;
1380
- break;
1381
- }
1382
-
1383
- return _context6.abrupt("return", {});
1384
-
1385
- case 15:
1386
- return _context6.abrupt("return", {});
1387
-
1388
- case 16:
1325
+ case 5:
1389
1326
  case "end":
1390
1327
  return _context6.stop();
1391
1328
  }
1392
1329
  }
1393
- }, _callee6, this, [[1, 11]]);
1330
+ }, _callee6, this);
1394
1331
  }));
1395
1332
 
1396
1333
  function getBucket(_x2) {
@@ -1409,45 +1346,33 @@ var HttpMap = /*#__PURE__*/function () {
1409
1346
  key: "loadFile",
1410
1347
  value: function () {
1411
1348
  var _loadFile = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee7(id) {
1412
- var response, data;
1349
+ var response;
1413
1350
  return runtime_1.wrap(function _callee7$(_context7) {
1414
1351
  while (1) {
1415
1352
  switch (_context7.prev = _context7.next) {
1416
1353
  case 0:
1417
1354
  _context7.next = 2;
1418
- return fetch("".concat(this.url).concat(id), {
1419
- headers: {
1420
- 'Content-Type': 'application/json',
1421
- 'Access-Control-Allow-Origin': '*'
1422
- }
1423
- });
1355
+ return fetch("".concat(this.url).concat(id));
1424
1356
 
1425
1357
  case 2:
1426
1358
  response = _context7.sent;
1427
- _context7.prev = 3;
1428
- _context7.next = 6;
1429
- return response.json();
1430
1359
 
1431
- case 6:
1432
- data = _context7.sent;
1433
- return _context7.abrupt("return", data);
1360
+ if (response.ok) {
1361
+ _context7.next = 5;
1362
+ break;
1363
+ }
1434
1364
 
1435
- case 10:
1436
- _context7.prev = 10;
1437
- _context7.t0 = _context7["catch"](3);
1438
- // handle error
1439
- // throw Error(err)
1440
- console.warn("Error: ".concat(_context7.t0));
1365
+ throw new Error("HTTP ".concat(response.status, " ").concat(response.statusText));
1441
1366
 
1442
- case 13:
1443
- return _context7.abrupt("return", {});
1367
+ case 5:
1368
+ return _context7.abrupt("return", response.json());
1444
1369
 
1445
- case 14:
1370
+ case 6:
1446
1371
  case "end":
1447
1372
  return _context7.stop();
1448
1373
  }
1449
1374
  }
1450
- }, _callee7, this, [[3, 10]]);
1375
+ }, _callee7, this);
1451
1376
  }));
1452
1377
 
1453
1378
  function loadFile(_x3) {
@@ -1517,33 +1442,29 @@ var HttpMap = /*#__PURE__*/function () {
1517
1442
 
1518
1443
  return hexToDirPath;
1519
1444
  }()
1520
- /**
1521
- * Returns crc32 hash given a string.
1522
- * (Note: this is using JBrowse1 implementation of crc32.)
1523
- * @param data - string
1524
- */
1525
-
1526
1445
  }, {
1527
1446
  key: "hash",
1528
1447
  value: function hash(data) {
1529
- return crc32(data).toString(16).toLowerCase().replace('-', 'n');
1448
+ return crc32(Buffer.from(data)).toString('hex').toLowerCase().replace('-', 'n');
1530
1449
  }
1531
1450
  }]);
1532
1451
 
1533
1452
  return HttpMap;
1534
1453
  }();
1535
1454
 
1455
+ // Uses index built by generate-names.pl
1456
+
1536
1457
  var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
1537
1458
  _inherits(JBrowse1TextSearchAdapter, _BaseAdapter);
1538
1459
 
1539
1460
  var _super = /*#__PURE__*/_createSuper(JBrowse1TextSearchAdapter);
1540
1461
 
1541
- function JBrowse1TextSearchAdapter(config) {
1462
+ function JBrowse1TextSearchAdapter(config, getSubAdapter, pluginManager) {
1542
1463
  var _this;
1543
1464
 
1544
1465
  _classCallCheck(this, JBrowse1TextSearchAdapter);
1545
1466
 
1546
- _this = _super.call(this, config);
1467
+ _this = _super.call(this, config, getSubAdapter, pluginManager);
1547
1468
  var namesIndexLocation = configuration.readConfObject(config, 'namesIndexLocation');
1548
1469
 
1549
1470
  if (!namesIndexLocation) {
@@ -1551,8 +1472,7 @@ var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
1551
1472
  }
1552
1473
 
1553
1474
  _this.httpMap = new HttpMap({
1554
- url: namesIndexLocation.baseUri ? new URL(namesIndexLocation.uri, namesIndexLocation.baseUri).href : namesIndexLocation.uri,
1555
- isElectron: util.isElectron
1475
+ url: namesIndexLocation.baseUri ? new URL(namesIndexLocation.uri, namesIndexLocation.baseUri).href : namesIndexLocation.uri
1556
1476
  });
1557
1477
  return _this;
1558
1478
  }
@@ -1567,19 +1487,13 @@ var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
1567
1487
  key: "loadIndexFile",
1568
1488
  value: function () {
1569
1489
  var _loadIndexFile = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(query) {
1570
- var bucketContents;
1571
1490
  return runtime_1.wrap(function _callee$(_context) {
1572
1491
  while (1) {
1573
1492
  switch (_context.prev = _context.next) {
1574
1493
  case 0:
1575
- _context.next = 2;
1576
- return this.httpMap.getBucket(query);
1577
-
1578
- case 2:
1579
- bucketContents = _context.sent;
1580
- return _context.abrupt("return", bucketContents);
1494
+ return _context.abrupt("return", this.httpMap.getBucket(query));
1581
1495
 
1582
- case 4:
1496
+ case 1:
1583
1497
  case "end":
1584
1498
  return _context.stop();
1585
1499
  }
@@ -1593,12 +1507,6 @@ var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
1593
1507
 
1594
1508
  return loadIndexFile;
1595
1509
  }()
1596
- /**
1597
- * Returns list of results
1598
- * @param args - search options/arguments include: search query
1599
- * limit of results to return, SearchType...prefix | full | exact", etc.
1600
- */
1601
-
1602
1510
  }, {
1603
1511
  key: "searchIndex",
1604
1512
  value: function () {
@@ -1609,42 +1517,38 @@ var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
1609
1517
  switch (_context2.prev = _context2.next) {
1610
1518
  case 0:
1611
1519
  searchType = args.searchType, queryString = args.queryString;
1520
+ _context2.t0 = this.tracksNames;
1612
1521
 
1613
- if (!this.tracksNames) {
1614
- _context2.next = 5;
1522
+ if (_context2.t0) {
1523
+ _context2.next = 6;
1615
1524
  break;
1616
1525
  }
1617
1526
 
1618
- _context2.t0 = this.tracksNames;
1619
- _context2.next = 8;
1620
- break;
1621
-
1622
- case 5:
1623
- _context2.next = 7;
1527
+ _context2.next = 5;
1624
1528
  return this.httpMap.getTrackNames();
1625
1529
 
1626
- case 7:
1530
+ case 5:
1627
1531
  _context2.t0 = _context2.sent;
1628
1532
 
1629
- case 8:
1533
+ case 6:
1630
1534
  tracks = _context2.t0;
1631
- _context2.next = 11;
1632
- return this.loadIndexFile(queryString);
1535
+ _context2.next = 9;
1536
+ return this.loadIndexFile(queryString.toLowerCase());
1633
1537
 
1634
- case 11:
1538
+ case 9:
1635
1539
  entries = _context2.sent;
1636
1540
 
1637
- if (!(entries !== {} && entries[queryString])) {
1638
- _context2.next = 14;
1541
+ if (!entries[queryString]) {
1542
+ _context2.next = 12;
1639
1543
  break;
1640
1544
  }
1641
1545
 
1642
- return _context2.abrupt("return", this.formatResults(entries[queryString][searchType || 'exact'], tracks));
1546
+ return _context2.abrupt("return", this.formatResults(entries[queryString], tracks, searchType));
1643
1547
 
1644
- case 14:
1548
+ case 12:
1645
1549
  return _context2.abrupt("return", []);
1646
1550
 
1647
- case 15:
1551
+ case 13:
1648
1552
  case "end":
1649
1553
  return _context2.stop();
1650
1554
  }
@@ -1660,41 +1564,30 @@ var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
1660
1564
  }()
1661
1565
  }, {
1662
1566
  key: "formatResults",
1663
- value: function formatResults(results, tracksNames) {
1664
- if (results.length === 0) {
1665
- return [];
1666
- }
1667
-
1668
- var formattedResults = results.map(function (result) {
1669
- if (result && Array.isArray(result)) {
1670
- var name = result[0];
1671
- var trackIndex = result[1];
1672
- var refName = result[3];
1673
- var start = result[4];
1674
- var end = result[5];
1675
- var locstring = "".concat(refName || name, ":").concat(start, "-").concat(end);
1676
- var formattedResult = new BaseResult.LocStringResult({
1677
- locString: locstring,
1678
- label: name,
1679
- matchedAttribute: 'name',
1680
- matchedObject: result,
1681
- trackId: tracksNames[trackIndex]
1682
- });
1683
- return formattedResult;
1684
- } // {"name":"too many matches","hitLimit":1}
1685
-
1686
-
1687
- var defaultLabel = _typeof(result) === 'object' ? result.name : result;
1688
- var defaultResult = new BaseResult__default({
1689
- label: defaultLabel,
1567
+ value: function formatResults(results, tracks, searchType) {
1568
+ return [].concat(_toConsumableArray(searchType === 'exact' ? [] : results.prefix.map(function (result) {
1569
+ return new BaseResult({
1570
+ label: _typeof(result) === 'object' ? result.name : result,
1690
1571
  matchedAttribute: 'name',
1691
1572
  matchedObject: {
1692
1573
  result: result
1693
1574
  }
1694
1575
  });
1695
- return defaultResult;
1696
- });
1697
- return formattedResults.filter(function (result) {
1576
+ })), _toConsumableArray(results.exact.map(function (result) {
1577
+ var name = result[0];
1578
+ var trackIndex = result[1];
1579
+ var refName = result[3];
1580
+ var start = result[4];
1581
+ var end = result[5];
1582
+ var locstring = "".concat(refName || name, ":").concat(start, "-").concat(end);
1583
+ return new BaseResult({
1584
+ locString: locstring,
1585
+ label: name,
1586
+ matchedAttribute: 'name',
1587
+ matchedObject: result,
1588
+ trackId: tracks[trackIndex]
1589
+ });
1590
+ }))).filter(function (result) {
1698
1591
  return result.getLabel() !== 'too many matches';
1699
1592
  });
1700
1593
  }
@@ -1711,7 +1604,8 @@ var jbrowse1AdapterConfigSchema = /*#__PURE__*/configuration.ConfigurationSchema
1711
1604
  namesIndexLocation: {
1712
1605
  type: 'fileLocation',
1713
1606
  defaultValue: {
1714
- uri: '/volvox/names'
1607
+ uri: '/volvox/names',
1608
+ locationType: 'UriLocation'
1715
1609
  },
1716
1610
  description: 'the location of the JBrowse1 names index data directory'
1717
1611
  },
@@ -1720,7 +1614,7 @@ var jbrowse1AdapterConfigSchema = /*#__PURE__*/configuration.ConfigurationSchema
1720
1614
  defaultValue: [],
1721
1615
  description: 'List of tracks covered by text search adapter'
1722
1616
  },
1723
- assemblies: {
1617
+ assemblyNames: {
1724
1618
  type: 'stringArray',
1725
1619
  defaultValue: [],
1726
1620
  description: 'List of assemblies covered by text search adapter'
@@ -1734,7 +1628,8 @@ var jbrowse1ConfigSchema = /*#__PURE__*/configuration.ConfigurationSchema('JBrow
1734
1628
  dataDirLocation: {
1735
1629
  type: 'fileLocation',
1736
1630
  defaultValue: {
1737
- uri: 'http://mysite.com/jbrowse/data/'
1631
+ uri: 'http://mysite.com/jbrowse/data/',
1632
+ locationType: 'UriLocation'
1738
1633
  },
1739
1634
  description: 'the location of the JBrowse 1 data directory, often something like http://mysite.com/jbrowse/data/'
1740
1635
  },
@@ -1954,10 +1849,10 @@ function parse(text, url) {
1954
1849
  parsedValue = JSON.parse(match[1]);
1955
1850
  } // parse numbers if it looks numeric
1956
1851
  else if (/^[+-]?[\d.,]+([eE][-+]?\d+)?$/.test(value)) {
1957
- parsedValue = parseFloat(value.replace(/,/g, ''));
1958
- } else {
1959
- parsedValue = value;
1960
- }
1852
+ parsedValue = parseFloat(value.replace(/,/g, ''));
1853
+ } else {
1854
+ parsedValue = value;
1855
+ }
1961
1856
 
1962
1857
  if (!keyPath) {
1963
1858
  throw new Error("Error parsing in section ".concat(section.join(' - ')));
@@ -2013,33 +1908,33 @@ function parse(text, url) {
2013
1908
  }
2014
1909
  } // new value
2015
1910
  else if (match = line.match(value === undefined ? /^([^+=]+)(\+?=)(.*)/ : /^(\S[^+=]+)(\+?=)(.*)/)) {
2016
- recordVal();
2017
- keyPath = match[1].trim().split(/\s*\.\s*/);
2018
- var _match = match;
1911
+ recordVal();
1912
+ keyPath = match[1].trim().split(/\s*\.\s*/);
1913
+ var _match = match;
2019
1914
 
2020
- var _match2 = _slicedToArray(_match, 3);
1915
+ var _match2 = _slicedToArray(_match, 3);
2021
1916
 
2022
- operation = _match2[2];
1917
+ operation = _match2[2];
2023
1918
 
2024
- if (isAlwaysArray(section.concat(keyPath).join('.'))) {
2025
- operation = '+=';
2026
- }
1919
+ if (isAlwaysArray(section.concat(keyPath).join('.'))) {
1920
+ operation = '+=';
1921
+ }
2027
1922
 
2028
- value = match[3].trim();
2029
- } // add to existing array value
2030
- else if (keyPath !== undefined && (match = line.match(/^\s{0,4}\+\s*(.+)/))) {
2031
- recordVal();
2032
- operation = '+=';
2033
- value = match[1].trim();
2034
- } // add to existing value
2035
- else if (value !== undefined && (match = line.match(/^\s+(\S.*)/))) {
2036
- value += value.length ? " ".concat(match[1].trim()) : match[1].trim();
2037
- } // done with last value
2038
- else {
2039
- recordVal();
2040
- keyPath = undefined;
2041
- value = undefined;
2042
- }
1923
+ value = match[3].trim();
1924
+ } // add to existing array value
1925
+ else if (keyPath !== undefined && (match = line.match(/^\s{0,4}\+\s*(.+)/))) {
1926
+ recordVal();
1927
+ operation = '+=';
1928
+ value = match[1].trim();
1929
+ } // add to existing value
1930
+ else if (value !== undefined && (match = line.match(/^\s+(\S.*)/))) {
1931
+ value += value.length ? " ".concat(match[1].trim()) : match[1].trim();
1932
+ } // done with last value
1933
+ else {
1934
+ recordVal();
1935
+ keyPath = undefined;
1936
+ value = undefined;
1937
+ }
2043
1938
  });
2044
1939
  recordVal();
2045
1940
  return data;
@@ -2061,23 +1956,23 @@ function regularizeConf(conf, url) {
2061
1956
  conf.tracks = [conf.tracks];
2062
1957
  } // otherwise, coerce it to an array
2063
1958
  else {
2064
- var tracks = [];
1959
+ var tracks = [];
2065
1960
 
2066
- for (var _i = 0, _Object$keys = Object.keys(conf.tracks); _i < _Object$keys.length; _i++) {
2067
- var label = _Object$keys[_i];
2068
- var track = conf.tracks[label];
1961
+ for (var _i = 0, _Object$keys = Object.keys(conf.tracks); _i < _Object$keys.length; _i++) {
1962
+ var label = _Object$keys[_i];
1963
+ var track = conf.tracks[label];
2069
1964
 
2070
- if (isTrack(track)) {
2071
- tracks.push(track);
2072
- } else {
2073
- tracks.push(_objectSpread2({
2074
- label: label
2075
- }, track));
2076
- }
1965
+ if (isTrack(track)) {
1966
+ tracks.push(track);
1967
+ } else {
1968
+ tracks.push(_objectSpread2({
1969
+ label: label
1970
+ }, track));
2077
1971
  }
2078
-
2079
- conf.tracks = tracks;
2080
1972
  }
1973
+
1974
+ conf.tracks = tracks;
1975
+ }
2081
1976
  } // regularize trackMetadata.sources
2082
1977
 
2083
1978
 
@@ -2378,13 +2273,15 @@ function _fetchJb() {
2378
2273
  switch (_context.prev = _context.next) {
2379
2274
  case 0:
2380
2275
  dataRoot = _args.length > 0 && _args[0] !== undefined ? _args[0] : {
2381
- uri: ''
2276
+ uri: '',
2277
+ locationType: 'UriLocation'
2382
2278
  };
2383
2279
  baseConfig = _args.length > 1 && _args[1] !== undefined ? _args[1] : {
2384
2280
  include: ['{dataRoot}/trackList.json', '{dataRoot}/tracks.conf']
2385
2281
  };
2386
2282
  baseConfigRoot = _args.length > 2 && _args[2] !== undefined ? _args[2] : {
2387
- uri: ''
2283
+ uri: '',
2284
+ locationType: 'UriLocation'
2388
2285
  };
2389
2286
  protocol = 'uri' in dataRoot ? 'uri' : 'localPath';
2390
2287
  dataRootReg = JSON.parse(JSON.stringify(dataRoot));
@@ -2707,7 +2604,8 @@ function _loadIncludes() {
2707
2604
  include.cacheBuster = inputConfig.cacheBuster;
2708
2605
  _context4.next = 3;
2709
2606
  return fetchConfigFile({
2710
- uri: new URL(include.url, sourceUrl).href
2607
+ uri: new URL(include.url, sourceUrl).href,
2608
+ locationType: 'UriLocation'
2711
2609
  });
2712
2610
 
2713
2611
  case 3:
@@ -2913,27 +2811,31 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
2913
2811
  var adapter = {
2914
2812
  type: 'BamAdapter',
2915
2813
  bamLocation: {
2916
- uri: urlTemplate
2814
+ uri: urlTemplate,
2815
+ locationType: 'UriLocation'
2917
2816
  }
2918
2817
  };
2919
2818
 
2920
2819
  if (jb1TrackConfig.baiUrlTemplate) {
2921
2820
  adapter.index = {
2922
2821
  location: {
2923
- uri: resolveUrlTemplate(jb1TrackConfig.baiUrlTemplate)
2822
+ uri: resolveUrlTemplate(jb1TrackConfig.baiUrlTemplate),
2823
+ locationType: 'UriLocation'
2924
2824
  }
2925
2825
  };
2926
2826
  } else if (jb1TrackConfig.csiUrlTemplate) {
2927
2827
  adapter.index = {
2928
2828
  location: {
2929
- uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate)
2829
+ uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),
2830
+ locationType: 'UriLocation'
2930
2831
  },
2931
2832
  indexType: 'CSI'
2932
2833
  };
2933
2834
  } else {
2934
2835
  adapter.index = {
2935
2836
  location: {
2936
- uri: "".concat(urlTemplate, ".bai")
2837
+ uri: "".concat(urlTemplate, ".bai"),
2838
+ locationType: 'UriLocation'
2937
2839
  }
2938
2840
  };
2939
2841
  }
@@ -2948,18 +2850,21 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
2948
2850
  var _adapter = {
2949
2851
  type: 'CramAdapter',
2950
2852
  cramLocation: {
2951
- uri: urlTemplate
2853
+ uri: urlTemplate,
2854
+ locationType: 'UriLocation'
2952
2855
  },
2953
2856
  sequenceAdapter: sequenceAdapter
2954
2857
  };
2955
2858
 
2956
2859
  if (jb1TrackConfig.craiUrlTemplate) {
2957
2860
  _adapter.craiLocation = {
2958
- uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate)
2861
+ uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate),
2862
+ locationType: 'UriLocation'
2959
2863
  };
2960
2864
  } else {
2961
2865
  _adapter.craiLocation = {
2962
- uri: "".concat(urlTemplate, ".crai")
2866
+ uri: "".concat(urlTemplate, ".crai"),
2867
+ locationType: 'UriLocation'
2963
2868
  };
2964
2869
  }
2965
2870
 
@@ -2975,7 +2880,8 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
2975
2880
  adapter: {
2976
2881
  type: 'NCListAdapter',
2977
2882
  rootUrlTemplate: {
2978
- uri: urlTemplate
2883
+ uri: urlTemplate,
2884
+ locationType: 'UriLocation'
2979
2885
  }
2980
2886
  }
2981
2887
  });
@@ -2993,7 +2899,8 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
2993
2899
  adapter: {
2994
2900
  type: 'BigWigAdapter',
2995
2901
  bigWigLocation: {
2996
- uri: urlTemplate
2902
+ uri: urlTemplate,
2903
+ locationType: 'UriLocation'
2997
2904
  }
2998
2905
  }
2999
2906
  });
@@ -3003,27 +2910,31 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3003
2910
  var _adapter2 = {
3004
2911
  type: 'VcfTabixAdapter',
3005
2912
  vcfGzLocation: {
3006
- uri: urlTemplate
2913
+ uri: urlTemplate,
2914
+ locationType: 'UriLocation'
3007
2915
  }
3008
2916
  };
3009
2917
 
3010
2918
  if (jb1TrackConfig.tbiUrlTemplate) {
3011
2919
  _adapter2.index = {
3012
2920
  location: {
3013
- uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate)
2921
+ uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate),
2922
+ locationType: 'UriLocation'
3014
2923
  }
3015
2924
  };
3016
2925
  } else if (jb1TrackConfig.csiUrlTemplate) {
3017
2926
  _adapter2.index = {
3018
2927
  location: {
3019
- uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate)
2928
+ uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),
2929
+ locationType: 'UriLocation'
3020
2930
  },
3021
2931
  indexType: 'CSI'
3022
2932
  };
3023
2933
  } else {
3024
2934
  _adapter2.index = {
3025
2935
  location: {
3026
- uri: "".concat(urlTemplate, ".tbi")
2936
+ uri: "".concat(urlTemplate, ".tbi"),
2937
+ locationType: 'UriLocation'
3027
2938
  }
3028
2939
  };
3029
2940
  }
@@ -3048,7 +2959,8 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3048
2959
  adapter: {
3049
2960
  type: 'BigBedAdapter',
3050
2961
  bigBedLocation: {
3051
- uri: urlTemplate
2962
+ uri: urlTemplate,
2963
+ locationType: 'UriLocation'
3052
2964
  }
3053
2965
  }
3054
2966
  });
@@ -3058,27 +2970,31 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3058
2970
  var _adapter3 = {
3059
2971
  type: 'Gff3TabixAdapter',
3060
2972
  gffGzLocation: {
3061
- uri: urlTemplate
2973
+ uri: urlTemplate,
2974
+ locationType: 'UriLocation'
3062
2975
  }
3063
2976
  };
3064
2977
 
3065
2978
  if (jb1TrackConfig.tbiUrlTemplate) {
3066
2979
  _adapter3.index = {
3067
2980
  location: {
3068
- uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate)
2981
+ uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate),
2982
+ locationType: 'UriLocation'
3069
2983
  }
3070
2984
  };
3071
2985
  } else if (jb1TrackConfig.csiUrlTemplate) {
3072
2986
  _adapter3.index = {
3073
2987
  location: {
3074
- uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate)
2988
+ uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),
2989
+ locationType: 'UriLocation'
3075
2990
  },
3076
2991
  indexType: 'CSI'
3077
2992
  };
3078
2993
  } else {
3079
2994
  _adapter3.index = {
3080
2995
  location: {
3081
- uri: "".concat(urlTemplate, ".tbi")
2996
+ uri: "".concat(urlTemplate, ".tbi"),
2997
+ locationType: 'UriLocation'
3082
2998
  }
3083
2999
  };
3084
3000
  }
@@ -3097,27 +3013,31 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3097
3013
  var _adapter4 = {
3098
3014
  type: 'BedTabixAdapter',
3099
3015
  bedGzLocation: {
3100
- uri: urlTemplate
3016
+ uri: urlTemplate,
3017
+ locationType: 'UriLocation'
3101
3018
  }
3102
3019
  };
3103
3020
 
3104
3021
  if (jb1TrackConfig.tbiUrlTemplate) {
3105
3022
  _adapter4.index = {
3106
3023
  location: {
3107
- uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate)
3024
+ uri: resolveUrlTemplate(jb1TrackConfig.tbiUrlTemplate),
3025
+ locationType: 'UriLocation'
3108
3026
  }
3109
3027
  };
3110
3028
  } else if (jb1TrackConfig.csiUrlTemplate) {
3111
3029
  _adapter4.index = {
3112
3030
  location: {
3113
- uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate)
3031
+ uri: resolveUrlTemplate(jb1TrackConfig.csiUrlTemplate),
3032
+ locationType: 'UriLocation'
3114
3033
  },
3115
3034
  indexType: 'CSI'
3116
3035
  };
3117
3036
  } else {
3118
3037
  _adapter4.index = {
3119
3038
  location: {
3120
- uri: "".concat(urlTemplate, ".tbi")
3039
+ uri: "".concat(urlTemplate, ".tbi"),
3040
+ locationType: 'UriLocation'
3121
3041
  }
3122
3042
  };
3123
3043
  }
@@ -3144,17 +3064,20 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3144
3064
  var _adapter5 = {
3145
3065
  type: 'IndexedFastaAdapter',
3146
3066
  fastaLocation: {
3147
- uri: urlTemplate
3067
+ uri: urlTemplate,
3068
+ locationType: 'UriLocation'
3148
3069
  }
3149
3070
  };
3150
3071
 
3151
3072
  if (jb1TrackConfig.faiUrlTemplate) {
3152
3073
  _adapter5.faiLocation = {
3153
- uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate)
3074
+ uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
3075
+ locationType: 'UriLocation'
3154
3076
  };
3155
3077
  } else {
3156
3078
  _adapter5.faiLocation = {
3157
- uri: "".concat(urlTemplate, ".fai")
3079
+ uri: "".concat(urlTemplate, ".fai"),
3080
+ locationType: 'UriLocation'
3158
3081
  };
3159
3082
  }
3160
3083
 
@@ -3168,27 +3091,32 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3168
3091
  var _adapter6 = {
3169
3092
  type: 'BgzipFastaAdapter',
3170
3093
  fastaLocation: {
3171
- uri: urlTemplate
3094
+ uri: urlTemplate,
3095
+ locationType: 'UriLocation'
3172
3096
  }
3173
3097
  };
3174
3098
 
3175
3099
  if (jb1TrackConfig.faiUrlTemplate) {
3176
3100
  _adapter6.faiLocation = {
3177
- uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate)
3101
+ uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
3102
+ locationType: 'UriLocation'
3178
3103
  };
3179
3104
  } else {
3180
3105
  _adapter6.faiLocation = {
3181
- uri: "".concat(urlTemplate, ".fai")
3106
+ uri: "".concat(urlTemplate, ".fai"),
3107
+ locationType: 'UriLocation'
3182
3108
  };
3183
3109
  }
3184
3110
 
3185
3111
  if (jb1TrackConfig.gziUrlTemplate) {
3186
3112
  _adapter6.gziLocation = {
3187
- uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate)
3113
+ uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate),
3114
+ locationType: 'UriLocation'
3188
3115
  };
3189
3116
  } else {
3190
3117
  _adapter6.gziLocation = {
3191
- uri: "".concat(urlTemplate, ".gzi")
3118
+ uri: "".concat(urlTemplate, ".gzi"),
3119
+ locationType: 'UriLocation'
3192
3120
  };
3193
3121
  }
3194
3122
 
@@ -3204,7 +3132,8 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3204
3132
  adapter: {
3205
3133
  type: 'TwoBitAdapter',
3206
3134
  twoBitLocation: {
3207
- uri: urlTemplate
3135
+ uri: urlTemplate,
3136
+ locationType: 'UriLocation'
3208
3137
  }
3209
3138
  }
3210
3139
  });
@@ -3213,10 +3142,9 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
3213
3142
 
3214
3143
 
3215
3144
  jb2TrackConfig.adapter = tracks.guessAdapter({
3216
- uri: urlTemplate
3217
- }, undefined, function () {
3218
- return urlTemplate;
3219
- });
3145
+ uri: urlTemplate,
3146
+ locationType: 'UriLocation'
3147
+ }, undefined, urlTemplate);
3220
3148
 
3221
3149
  if (!jb2TrackConfig.adapter) {
3222
3150
  throw new Error('Could not determine adapter');
@@ -3324,6 +3252,22 @@ var LegacyJBrowsePlugin = /*#__PURE__*/function (_Plugin) {
3324
3252
  }
3325
3253
  });
3326
3254
  });
3255
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
3256
+ return function (file, index, adapterHint) {
3257
+ var regexGuess = /trackData.jsonz?$/i;
3258
+ var adapterName = 'NCListAdapter';
3259
+ var fileName = tracks.getFileName(file);
3260
+
3261
+ if (regexGuess.test(fileName) || adapterHint === adapterName) {
3262
+ return {
3263
+ type: adapterName,
3264
+ rootUrlTemplate: file
3265
+ };
3266
+ }
3267
+
3268
+ return adapterGuesser(file, index, adapterHint);
3269
+ };
3270
+ });
3327
3271
  pluginManager.addTextSearchAdapterType(function () {
3328
3272
  return new TextSearchAdapterType({
3329
3273
  name: 'JBrowse1TextSearchAdapter',
@@ -3479,12 +3423,12 @@ var NCListAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
3479
3423
 
3480
3424
  var _super = /*#__PURE__*/_createSuper(NCListAdapter);
3481
3425
 
3482
- function NCListAdapter(config) {
3426
+ function NCListAdapter(config, getSubAdapter, pluginManager) {
3483
3427
  var _this;
3484
3428
 
3485
3429
  _classCallCheck(this, NCListAdapter);
3486
3430
 
3487
- _this = _super.call(this, config);
3431
+ _this = _super.call(this, config, getSubAdapter, pluginManager);
3488
3432
  var refNames = configuration.readConfObject(config, 'refNames');
3489
3433
  var rootUrlTemplate = configuration.readConfObject(config, 'rootUrlTemplate');
3490
3434
  _this.configRefNames = refNames;
@@ -3492,7 +3436,7 @@ var NCListAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
3492
3436
  baseUrl: '',
3493
3437
  urlTemplate: rootUrlTemplate.uri,
3494
3438
  readFile: function readFile(url) {
3495
- return io.openUrl(rootUrlTemplate.baseUri ? new URL(url, rootUrlTemplate.baseUri).toString() : url).readFile();
3439
+ return new genericFilehandle.RemoteFile(String(rootUrlTemplate.baseUri ? new URL(url, rootUrlTemplate.baseUri).toString() : url)).readFile();
3496
3440
  }
3497
3441
  });
3498
3442
  return _this;
@@ -3515,14 +3459,14 @@ var NCListAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
3515
3459
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3516
3460
  return rxjs.ObservableCreate( /*#__PURE__*/function () {
3517
3461
  var _ref = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(observer) {
3518
- var signal, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, feature;
3462
+ var signal, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, feature;
3519
3463
 
3520
3464
  return runtime_1.wrap(function _callee$(_context) {
3521
3465
  while (1) {
3522
3466
  switch (_context.prev = _context.next) {
3523
3467
  case 0:
3524
3468
  signal = opts.signal;
3525
- _iteratorNormalCompletion = true;
3469
+ _iteratorAbruptCompletion = false;
3526
3470
  _didIteratorError = false;
3527
3471
  _context.prev = 3;
3528
3472
  _iterator = _asyncIterator(_this2.nclist.getFeatures(region, opts));
@@ -3532,75 +3476,67 @@ var NCListAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
3532
3476
  return _iterator.next();
3533
3477
 
3534
3478
  case 7:
3535
- _step = _context.sent;
3536
- _iteratorNormalCompletion = _step.done;
3537
- _context.next = 11;
3538
- return _step.value;
3539
-
3540
- case 11:
3541
- _value = _context.sent;
3542
-
3543
- if (_iteratorNormalCompletion) {
3544
- _context.next = 19;
3479
+ if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
3480
+ _context.next = 14;
3545
3481
  break;
3546
3482
  }
3547
3483
 
3548
- feature = _value;
3484
+ feature = _step.value;
3549
3485
  util.checkAbortSignal(signal);
3550
3486
  observer.next(_this2.wrapFeature(feature));
3551
3487
 
3552
- case 16:
3553
- _iteratorNormalCompletion = true;
3488
+ case 11:
3489
+ _iteratorAbruptCompletion = false;
3554
3490
  _context.next = 5;
3555
3491
  break;
3556
3492
 
3557
- case 19:
3558
- _context.next = 25;
3493
+ case 14:
3494
+ _context.next = 20;
3559
3495
  break;
3560
3496
 
3561
- case 21:
3562
- _context.prev = 21;
3497
+ case 16:
3498
+ _context.prev = 16;
3563
3499
  _context.t0 = _context["catch"](3);
3564
3500
  _didIteratorError = true;
3565
3501
  _iteratorError = _context.t0;
3566
3502
 
3567
- case 25:
3568
- _context.prev = 25;
3569
- _context.prev = 26;
3503
+ case 20:
3504
+ _context.prev = 20;
3505
+ _context.prev = 21;
3570
3506
 
3571
- if (!(!_iteratorNormalCompletion && _iterator["return"] != null)) {
3572
- _context.next = 30;
3507
+ if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
3508
+ _context.next = 25;
3573
3509
  break;
3574
3510
  }
3575
3511
 
3576
- _context.next = 30;
3512
+ _context.next = 25;
3577
3513
  return _iterator["return"]();
3578
3514
 
3579
- case 30:
3580
- _context.prev = 30;
3515
+ case 25:
3516
+ _context.prev = 25;
3581
3517
 
3582
3518
  if (!_didIteratorError) {
3583
- _context.next = 33;
3519
+ _context.next = 28;
3584
3520
  break;
3585
3521
  }
3586
3522
 
3587
3523
  throw _iteratorError;
3588
3524
 
3589
- case 33:
3590
- return _context.finish(30);
3591
-
3592
- case 34:
3525
+ case 28:
3593
3526
  return _context.finish(25);
3594
3527
 
3595
- case 35:
3528
+ case 29:
3529
+ return _context.finish(20);
3530
+
3531
+ case 30:
3596
3532
  observer.complete();
3597
3533
 
3598
- case 36:
3534
+ case 31:
3599
3535
  case "end":
3600
3536
  return _context.stop();
3601
3537
  }
3602
3538
  }
3603
- }, _callee, null, [[3, 21, 25, 35], [26,, 30, 34]]);
3539
+ }, _callee, null, [[3, 16, 20, 30], [21,, 25, 29]]);
3604
3540
  }));
3605
3541
 
3606
3542
  return function (_x) {