@jbrowse/plugin-legacy-jbrowse 2.1.0 → 2.1.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.
- package/dist/JBrowse1Connection/configSchema.js +2 -2
- package/dist/JBrowse1Connection/configSchema.js.map +1 -1
- package/dist/JBrowse1Connection/jb1ConfigLoad.js +132 -285
- package/dist/JBrowse1Connection/jb1ConfigLoad.js.map +1 -1
- package/dist/JBrowse1Connection/jb1ConfigParse.js +58 -127
- package/dist/JBrowse1Connection/jb1ConfigParse.js.map +1 -1
- package/dist/JBrowse1Connection/jb1ToJb2.js +155 -159
- package/dist/JBrowse1Connection/jb1ToJb2.js.map +1 -1
- package/dist/JBrowse1Connection/model.js +20 -20
- package/dist/JBrowse1Connection/model.js.map +1 -1
- package/dist/JBrowse1Connection/util.js +18 -41
- package/dist/JBrowse1Connection/util.js.map +1 -1
- package/dist/JBrowse1TextSeachAdapter/HttpMap.js +58 -168
- package/dist/JBrowse1TextSeachAdapter/HttpMap.js.map +1 -1
- package/dist/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.js +48 -145
- package/dist/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.js.map +1 -1
- package/dist/JBrowse1TextSeachAdapter/configSchema.js +1 -1
- package/dist/JBrowse1TextSeachAdapter/configSchema.js.map +1 -1
- package/dist/NCListAdapter/NCListAdapter.js +38 -147
- package/dist/NCListAdapter/NCListAdapter.js.map +1 -1
- package/dist/NCListAdapter/NCListFeature.js +35 -39
- package/dist/NCListAdapter/NCListFeature.js.map +1 -1
- package/dist/NCListAdapter/configSchema.js +1 -1
- package/dist/NCListAdapter/configSchema.js.map +1 -1
- package/dist/index.js +39 -65
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const models_1 = require("@jbrowse/core/pluggableElementTypes/models");
|
|
4
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
5
5
|
exports.default = (0, configuration_1.ConfigurationSchema)('JBrowse1Connection', {
|
|
6
6
|
dataDirLocation: {
|
|
7
7
|
type: 'fileLocation',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/JBrowse1Connection/configSchema.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/JBrowse1Connection/configSchema.ts"],"names":[],"mappings":";;AAAA,uEAAiF;AACjF,+DAAiE;AAEjE,kBAAe,IAAA,mCAAmB,EAChC,oBAAoB,EACpB;IACE,eAAe,EAAE;QACf,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE;YACZ,GAAG,EAAE,iCAAiC;YACtC,YAAY,EAAE,aAAa;SAC5B;QACD,WAAW,EACT,oGAAoG;KACvG;IACD,aAAa,EAAE;QACb,WAAW,EACT,0EAA0E;QAC5E,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;KACjB;CACF,EACD,EAAE,iBAAiB,EAAE,6BAAoB,EAAE,CAC5C,CAAA"}
|
|
@@ -1,198 +1,90 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __values = (this && this.__values) || function(o) {
|
|
39
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
40
|
-
if (m) return m.call(o);
|
|
41
|
-
if (o && typeof o.length === "number") return {
|
|
42
|
-
next: function () {
|
|
43
|
-
if (o && i >= o.length) o = void 0;
|
|
44
|
-
return { value: o && o[i++], done: !o };
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
48
|
-
};
|
|
49
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
3
|
exports.parseJb1 = exports.fetchConfigFile = exports.createFinalConfig = exports.fetchJb1 = void 0;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
4
|
+
const io_1 = require("@jbrowse/core/util/io");
|
|
5
|
+
const jb1ConfigParse_1 = require("./jb1ConfigParse");
|
|
6
|
+
const util_1 = require("./util");
|
|
54
7
|
function isUriLocation(location) {
|
|
55
8
|
return location.uri !== undefined;
|
|
56
9
|
}
|
|
57
10
|
function isLocalPathLocation(location) {
|
|
58
11
|
return location.localPath !== undefined;
|
|
59
12
|
}
|
|
60
|
-
function fetchJb1(dataRoot,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
newConfig_1 = {};
|
|
98
|
-
_e.label = 1;
|
|
99
|
-
case 1:
|
|
100
|
-
_e.trys.push([1, 9, 10, 11]);
|
|
101
|
-
_a = __values(['jbrowse.conf', 'jbrowse_conf.json']), _b = _a.next();
|
|
102
|
-
_e.label = 2;
|
|
103
|
-
case 2:
|
|
104
|
-
if (!!_b.done) return [3 /*break*/, 8];
|
|
105
|
-
conf = _b.value;
|
|
106
|
-
fetchedConfig = null;
|
|
107
|
-
_e.label = 3;
|
|
108
|
-
case 3:
|
|
109
|
-
_e.trys.push([3, 5, , 6]);
|
|
110
|
-
return [4 /*yield*/, fetchConfigFile((_d = {},
|
|
111
|
-
_d[baseProtocol] = "".concat(baseConfigLocation, "/").concat(conf),
|
|
112
|
-
_d))];
|
|
113
|
-
case 4:
|
|
114
|
-
// @ts-ignore
|
|
115
|
-
fetchedConfig = _e.sent();
|
|
116
|
-
return [3 /*break*/, 6];
|
|
117
|
-
case 5:
|
|
118
|
-
error_1 = _e.sent();
|
|
119
|
-
console.error("tried to access ".concat(baseConfigLocation, "/").concat(conf, ", but failed"));
|
|
120
|
-
return [3 /*break*/, 6];
|
|
121
|
-
case 6:
|
|
122
|
-
newConfig_1 = mergeConfigs(newConfig_1, fetchedConfig) || {};
|
|
123
|
-
_e.label = 7;
|
|
124
|
-
case 7:
|
|
125
|
-
_b = _a.next();
|
|
126
|
-
return [3 /*break*/, 2];
|
|
127
|
-
case 8: return [3 /*break*/, 11];
|
|
128
|
-
case 9:
|
|
129
|
-
e_1_1 = _e.sent();
|
|
130
|
-
e_1 = { error: e_1_1 };
|
|
131
|
-
return [3 /*break*/, 11];
|
|
132
|
-
case 10:
|
|
133
|
-
try {
|
|
134
|
-
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
135
|
-
}
|
|
136
|
-
finally { if (e_1) throw e_1.error; }
|
|
137
|
-
return [7 /*endfinally*/];
|
|
138
|
-
case 11:
|
|
139
|
-
if (dataRootReg[protocol]) {
|
|
140
|
-
newConfig_1.dataRoot = dataRootReg[protocol];
|
|
141
|
-
}
|
|
142
|
-
return [2 /*return*/, createFinalConfig(newConfig_1)];
|
|
143
|
-
case 12:
|
|
144
|
-
newConfig = (0, jb1ConfigParse_1.regularizeConf)(baseConfig, window.location.href);
|
|
145
|
-
if (dataRootReg[protocol]) {
|
|
146
|
-
newConfig.dataRoot = dataRootReg[protocol];
|
|
147
|
-
}
|
|
148
|
-
return [2 /*return*/, createFinalConfig(newConfig)];
|
|
13
|
+
async function fetchJb1(dataRoot = { uri: '', locationType: 'UriLocation' }, baseConfig = {
|
|
14
|
+
include: ['{dataRoot}/trackList.json', '{dataRoot}/tracks.conf'],
|
|
15
|
+
}, baseConfigRoot = { uri: '', locationType: 'UriLocation' }) {
|
|
16
|
+
const protocol = 'uri' in dataRoot ? 'uri' : 'localPath';
|
|
17
|
+
const dataRootReg = JSON.parse(JSON.stringify(dataRoot));
|
|
18
|
+
let dataRootLocation = '';
|
|
19
|
+
if (isUriLocation(dataRoot)) {
|
|
20
|
+
dataRootLocation = dataRoot.uri;
|
|
21
|
+
}
|
|
22
|
+
if (isLocalPathLocation(dataRoot)) {
|
|
23
|
+
dataRootLocation = dataRoot.localPath;
|
|
24
|
+
}
|
|
25
|
+
if (dataRootLocation.endsWith('/')) {
|
|
26
|
+
dataRootReg[protocol] = dataRootLocation.slice(0, dataRootLocation.length - 1);
|
|
27
|
+
}
|
|
28
|
+
if ((isUriLocation(baseConfigRoot) && baseConfigRoot.uri) ||
|
|
29
|
+
(isLocalPathLocation(baseConfigRoot) && baseConfigRoot.localPath)) {
|
|
30
|
+
const baseProtocol = 'uri' in baseConfigRoot ? 'uri' : 'localPath';
|
|
31
|
+
let baseConfigLocation = '';
|
|
32
|
+
if (isUriLocation(baseConfigRoot)) {
|
|
33
|
+
baseConfigLocation = baseConfigRoot.uri;
|
|
34
|
+
}
|
|
35
|
+
if (isLocalPathLocation(baseConfigRoot)) {
|
|
36
|
+
baseConfigLocation = baseConfigRoot.localPath;
|
|
37
|
+
}
|
|
38
|
+
if (baseConfigLocation.endsWith('/')) {
|
|
39
|
+
baseConfigLocation = baseConfigLocation.slice(0, baseConfigLocation.length - 1);
|
|
40
|
+
}
|
|
41
|
+
let newConfig = {};
|
|
42
|
+
for (const conf of ['jbrowse.conf', 'jbrowse_conf.json']) {
|
|
43
|
+
let fetchedConfig = null;
|
|
44
|
+
try {
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
fetchedConfig = await fetchConfigFile({
|
|
47
|
+
[baseProtocol]: `${baseConfigLocation}/${conf}`,
|
|
48
|
+
});
|
|
149
49
|
}
|
|
150
|
-
|
|
151
|
-
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error(`tried to access ${baseConfigLocation}/${conf}, but failed`);
|
|
52
|
+
}
|
|
53
|
+
newConfig = mergeConfigs(newConfig, fetchedConfig) || {};
|
|
54
|
+
}
|
|
55
|
+
if (dataRootReg[protocol]) {
|
|
56
|
+
newConfig.dataRoot = dataRootReg[protocol];
|
|
57
|
+
}
|
|
58
|
+
return createFinalConfig(newConfig);
|
|
59
|
+
}
|
|
60
|
+
const newConfig = (0, jb1ConfigParse_1.regularizeConf)(baseConfig, window.location.href);
|
|
61
|
+
if (dataRootReg[protocol]) {
|
|
62
|
+
newConfig.dataRoot = dataRootReg[protocol];
|
|
63
|
+
}
|
|
64
|
+
return createFinalConfig(newConfig);
|
|
152
65
|
}
|
|
153
66
|
exports.fetchJb1 = fetchJb1;
|
|
154
|
-
function createFinalConfig(baseConfig, defaults) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
configWithDefaults = (0, util_1.deepUpdate)((0, util_1.clone)(defaults), baseConfig);
|
|
162
|
-
return [4 /*yield*/, loadIncludes(configWithDefaults)];
|
|
163
|
-
case 1:
|
|
164
|
-
finalConfig = _a.sent();
|
|
165
|
-
finalConfig = mergeConfigs(finalConfig, baseConfig) || finalConfig;
|
|
166
|
-
fillTemplates(finalConfig, finalConfig);
|
|
167
|
-
validateConfig(finalConfig);
|
|
168
|
-
return [2 /*return*/, finalConfig];
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
});
|
|
67
|
+
async function createFinalConfig(baseConfig, defaults = configDefaults) {
|
|
68
|
+
const configWithDefaults = (0, util_1.deepUpdate)((0, util_1.clone)(defaults), baseConfig);
|
|
69
|
+
let finalConfig = await loadIncludes(configWithDefaults);
|
|
70
|
+
finalConfig = mergeConfigs(finalConfig, baseConfig) || finalConfig;
|
|
71
|
+
fillTemplates(finalConfig, finalConfig);
|
|
72
|
+
validateConfig(finalConfig);
|
|
73
|
+
return finalConfig;
|
|
172
74
|
}
|
|
173
75
|
exports.createFinalConfig = createFinalConfig;
|
|
174
|
-
function fetchConfigFile(location) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
return
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return [2 /*return*/, parseJb1(result, location.uri)];
|
|
184
|
-
}
|
|
185
|
-
if (isLocalPathLocation(location)) {
|
|
186
|
-
return [2 /*return*/, parseJb1(result, location.localPath)];
|
|
187
|
-
}
|
|
188
|
-
return [2 /*return*/, parseJb1(result)];
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
});
|
|
76
|
+
async function fetchConfigFile(location) {
|
|
77
|
+
const result = await (0, io_1.openLocation)(location).readFile('utf8');
|
|
78
|
+
if (isUriLocation(location)) {
|
|
79
|
+
return parseJb1(result, location.uri);
|
|
80
|
+
}
|
|
81
|
+
if (isLocalPathLocation(location)) {
|
|
82
|
+
return parseJb1(result, location.localPath);
|
|
83
|
+
}
|
|
84
|
+
return parseJb1(result);
|
|
192
85
|
}
|
|
193
86
|
exports.fetchConfigFile = fetchConfigFile;
|
|
194
|
-
function parseJb1(config, url) {
|
|
195
|
-
if (url === void 0) { url = ''; }
|
|
87
|
+
function parseJb1(config, url = '') {
|
|
196
88
|
if (config.trim().startsWith('{')) {
|
|
197
89
|
return (0, jb1ConfigParse_1.parseJB1Json)(config, url);
|
|
198
90
|
}
|
|
@@ -203,54 +95,43 @@ exports.parseJb1 = parseJb1;
|
|
|
203
95
|
* Merges config object b into a. Properties in b override those in a.
|
|
204
96
|
*/
|
|
205
97
|
function mergeConfigs(a, b) {
|
|
206
|
-
var e_2, _a;
|
|
207
98
|
if (b === null) {
|
|
208
99
|
return null;
|
|
209
100
|
}
|
|
210
101
|
if (a === null) {
|
|
211
102
|
a = {};
|
|
212
103
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (Array.isArray(aTracks) && Array.isArray(bTracks)) {
|
|
220
|
-
a[prop] = mergeTrackConfigs(aTracks || [], bTracks || []);
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
throw new Error("Track config has not been properly regularized: ".concat(aTracks, " ").concat(bTracks));
|
|
224
|
-
}
|
|
104
|
+
for (const prop of Object.keys(b)) {
|
|
105
|
+
if (prop === 'tracks' && prop in a) {
|
|
106
|
+
const aTracks = a[prop] || [];
|
|
107
|
+
const bTracks = b[prop] || [];
|
|
108
|
+
if (Array.isArray(aTracks) && Array.isArray(bTracks)) {
|
|
109
|
+
a[prop] = mergeTrackConfigs(aTracks || [], bTracks || []);
|
|
225
110
|
}
|
|
226
|
-
else
|
|
227
|
-
|
|
228
|
-
// @ts-ignore
|
|
229
|
-
typeof b[prop] === 'object' &&
|
|
230
|
-
// @ts-ignore
|
|
231
|
-
typeof a[prop] === 'object') {
|
|
232
|
-
// @ts-ignore
|
|
233
|
-
a[prop] = (0, util_1.deepUpdate)(a[prop], b[prop]);
|
|
234
|
-
}
|
|
235
|
-
else if (prop === 'dataRoot') {
|
|
236
|
-
if (a[prop] === undefined ||
|
|
237
|
-
(a[prop] === 'data' && b[prop] !== undefined)) {
|
|
238
|
-
a[prop] = b[prop];
|
|
239
|
-
}
|
|
240
|
-
// @ts-ignore
|
|
111
|
+
else {
|
|
112
|
+
throw new Error(`Track config has not been properly regularized: ${aTracks} ${bTracks}`);
|
|
241
113
|
}
|
|
242
|
-
|
|
243
|
-
|
|
114
|
+
}
|
|
115
|
+
else if (!noRecursiveMerge(prop) &&
|
|
116
|
+
prop in a &&
|
|
117
|
+
// @ts-ignore
|
|
118
|
+
typeof b[prop] === 'object' &&
|
|
119
|
+
// @ts-ignore
|
|
120
|
+
typeof a[prop] === 'object') {
|
|
121
|
+
// @ts-ignore
|
|
122
|
+
a[prop] = (0, util_1.deepUpdate)(a[prop], b[prop]);
|
|
123
|
+
}
|
|
124
|
+
else if (prop === 'dataRoot') {
|
|
125
|
+
if (a[prop] === undefined ||
|
|
126
|
+
(a[prop] === 'data' && b[prop] !== undefined)) {
|
|
244
127
|
a[prop] = b[prop];
|
|
245
128
|
}
|
|
129
|
+
// @ts-ignore
|
|
246
130
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
try {
|
|
251
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
131
|
+
else if (a[prop] === undefined || b[prop] !== undefined) {
|
|
132
|
+
// @ts-ignore
|
|
133
|
+
a[prop] = b[prop];
|
|
252
134
|
}
|
|
253
|
-
finally { if (e_2) throw e_2.error; }
|
|
254
135
|
}
|
|
255
136
|
return a;
|
|
256
137
|
}
|
|
@@ -262,13 +143,13 @@ function mergeTrackConfigs(a, b) {
|
|
|
262
143
|
return a;
|
|
263
144
|
}
|
|
264
145
|
// index the tracks in `a` by track label
|
|
265
|
-
|
|
266
|
-
a.forEach(
|
|
146
|
+
const aTracks = {};
|
|
147
|
+
a.forEach((t, i) => {
|
|
267
148
|
t.index = i;
|
|
268
149
|
aTracks[t.label] = t;
|
|
269
150
|
});
|
|
270
|
-
b.forEach(
|
|
271
|
-
|
|
151
|
+
b.forEach((bT) => {
|
|
152
|
+
const aT = aTracks[bT.label];
|
|
272
153
|
if (aT) {
|
|
273
154
|
mergeConfigs(aT, bT);
|
|
274
155
|
}
|
|
@@ -283,57 +164,34 @@ function mergeTrackConfigs(a, b) {
|
|
|
283
164
|
* object. Calls the callback with the resulting configuration when finished.
|
|
284
165
|
* @param inputConfig - Config to load includes into
|
|
285
166
|
*/
|
|
286
|
-
function loadIncludes(inputConfig) {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
return __generator(this, function (_a) {
|
|
293
|
-
switch (_a.label) {
|
|
294
|
-
case 0:
|
|
295
|
-
sourceUrl = config.sourceUrl || config.baseUrl;
|
|
296
|
-
if (!sourceUrl) {
|
|
297
|
-
throw new Error("Could not determine source URL: ".concat(JSON.stringify(config)));
|
|
298
|
-
}
|
|
299
|
-
newUpstreamConf = mergeConfigs((0, util_1.clone)(upstreamConf), config);
|
|
300
|
-
if (!newUpstreamConf) {
|
|
301
|
-
throw new Error('Problem merging configs');
|
|
302
|
-
}
|
|
303
|
-
includes = fillTemplates(regularizeIncludes(config.include || []), newUpstreamConf);
|
|
304
|
-
delete config.include;
|
|
305
|
-
loads = includes.map(function (include) { return __awaiter(_this, void 0, void 0, function () {
|
|
306
|
-
var includedData;
|
|
307
|
-
return __generator(this, function (_a) {
|
|
308
|
-
switch (_a.label) {
|
|
309
|
-
case 0:
|
|
310
|
-
include.cacheBuster = inputConfig.cacheBuster;
|
|
311
|
-
return [4 /*yield*/, fetchConfigFile({
|
|
312
|
-
uri: new URL(include.url, sourceUrl).href,
|
|
313
|
-
locationType: 'UriLocation',
|
|
314
|
-
})];
|
|
315
|
-
case 1:
|
|
316
|
-
includedData = _a.sent();
|
|
317
|
-
return [2 /*return*/, loadRecur(includedData, newUpstreamConf)];
|
|
318
|
-
}
|
|
319
|
-
});
|
|
320
|
-
}); });
|
|
321
|
-
return [4 /*yield*/, Promise.all(loads)];
|
|
322
|
-
case 1:
|
|
323
|
-
includedDataObjects = _a.sent();
|
|
324
|
-
includedDataObjects.forEach(function (includedData) {
|
|
325
|
-
config = mergeConfigs(config, includedData) || config;
|
|
326
|
-
});
|
|
327
|
-
return [2 /*return*/, config];
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
});
|
|
167
|
+
async function loadIncludes(inputConfig) {
|
|
168
|
+
inputConfig = (0, util_1.clone)(inputConfig);
|
|
169
|
+
async function loadRecur(config, upstreamConf) {
|
|
170
|
+
const sourceUrl = config.sourceUrl || config.baseUrl;
|
|
171
|
+
if (!sourceUrl) {
|
|
172
|
+
throw new Error(`Could not determine source URL: ${JSON.stringify(config)}`);
|
|
331
173
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
174
|
+
const newUpstreamConf = mergeConfigs((0, util_1.clone)(upstreamConf), config);
|
|
175
|
+
if (!newUpstreamConf) {
|
|
176
|
+
throw new Error('Problem merging configs');
|
|
177
|
+
}
|
|
178
|
+
const includes = fillTemplates(regularizeIncludes(config.include || []), newUpstreamConf);
|
|
179
|
+
delete config.include;
|
|
180
|
+
const loads = includes.map(async (include) => {
|
|
181
|
+
include.cacheBuster = inputConfig.cacheBuster;
|
|
182
|
+
const includedData = await fetchConfigFile({
|
|
183
|
+
uri: new URL(include.url, sourceUrl).href,
|
|
184
|
+
locationType: 'UriLocation',
|
|
185
|
+
});
|
|
186
|
+
return loadRecur(includedData, newUpstreamConf);
|
|
335
187
|
});
|
|
336
|
-
|
|
188
|
+
const includedDataObjects = await Promise.all(loads);
|
|
189
|
+
includedDataObjects.forEach((includedData) => {
|
|
190
|
+
config = mergeConfigs(config, includedData) || config;
|
|
191
|
+
});
|
|
192
|
+
return config;
|
|
193
|
+
}
|
|
194
|
+
return loadRecur(inputConfig, {});
|
|
337
195
|
}
|
|
338
196
|
function regularizeIncludes(includes) {
|
|
339
197
|
if (!includes) {
|
|
@@ -343,7 +201,7 @@ function regularizeIncludes(includes) {
|
|
|
343
201
|
if (!Array.isArray(includes)) {
|
|
344
202
|
includes = [includes];
|
|
345
203
|
}
|
|
346
|
-
return includes.map(
|
|
204
|
+
return includes.map((include) => {
|
|
347
205
|
// coerce bare strings in the includes to URLs
|
|
348
206
|
if (typeof include === 'string') {
|
|
349
207
|
include = { url: include };
|
|
@@ -360,30 +218,19 @@ function regularizeIncludes(includes) {
|
|
|
360
218
|
}
|
|
361
219
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unnecessary-type-constraint
|
|
362
220
|
function fillTemplates(subconfig, config) {
|
|
363
|
-
var e_3, _a;
|
|
364
221
|
if (!subconfig) {
|
|
365
222
|
return subconfig;
|
|
366
223
|
}
|
|
367
224
|
if (Array.isArray(subconfig)) {
|
|
368
|
-
for (
|
|
225
|
+
for (let i = 0; i < subconfig.length; i += 1) {
|
|
369
226
|
subconfig[i] = fillTemplates(subconfig[i], config);
|
|
370
227
|
}
|
|
371
228
|
}
|
|
372
229
|
else if (typeof subconfig === 'object') {
|
|
373
230
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
var name_1 = _c.value;
|
|
378
|
-
sub[name_1] = fillTemplates(sub[name_1], config);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
382
|
-
finally {
|
|
383
|
-
try {
|
|
384
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
385
|
-
}
|
|
386
|
-
finally { if (e_3) throw e_3.error; }
|
|
231
|
+
const sub = subconfig;
|
|
232
|
+
for (const name of Object.keys(sub)) {
|
|
233
|
+
sub[name] = fillTemplates(sub[name], config);
|
|
387
234
|
}
|
|
388
235
|
}
|
|
389
236
|
else if (typeof subconfig === 'string') {
|
|
@@ -399,7 +246,7 @@ function fillTemplates(subconfig, config) {
|
|
|
399
246
|
function noRecursiveMerge(propName) {
|
|
400
247
|
return propName === 'datasets';
|
|
401
248
|
}
|
|
402
|
-
|
|
249
|
+
const configDefaults = {
|
|
403
250
|
tracks: [],
|
|
404
251
|
containerID: 'GenomeBrowser',
|
|
405
252
|
dataRoot: 'data',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jb1ConfigLoad.js","sourceRoot":"","sources":["../../src/JBrowse1Connection/jb1ConfigLoad.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jb1ConfigLoad.js","sourceRoot":"","sources":["../../src/JBrowse1Connection/jb1ConfigLoad.ts"],"names":[],"mappings":"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"}
|