@jbrowse/plugin-legacy-jbrowse 3.6.5 → 3.7.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.
@@ -0,0 +1,10 @@
1
+ export interface Options {
2
+ default?: unknown;
3
+ separator?: string;
4
+ joinChar?: string;
5
+ join?: (segs: string[]) => string;
6
+ split?: (path: string) => string[];
7
+ isValid?: (key: string, target: {}) => boolean;
8
+ }
9
+ declare const getValue: (target: unknown, path: string | number | string[], options?: Options) => unknown;
10
+ export default getValue;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const isObject = v => v !== null && typeof v === 'object';
4
+ const join = (segs, joinChar, options) => {
5
+ if (typeof options.join === 'function') {
6
+ return options.join(segs);
7
+ }
8
+ return segs[0] + joinChar + segs[1];
9
+ };
10
+ const split = (path, splitChar, options) => {
11
+ if (typeof options.split === 'function') {
12
+ return options.split(path);
13
+ }
14
+ return path.split(splitChar);
15
+ };
16
+ const isValid = (key, target = {}, options) => {
17
+ if (typeof (options === null || options === void 0 ? void 0 : options.isValid) === 'function') {
18
+ return options.isValid(key, target);
19
+ }
20
+ return true;
21
+ };
22
+ const isValidObject = (v) => {
23
+ return isObject(v) || typeof v === 'function';
24
+ };
25
+ const getValue = (target, path, options = {}) => {
26
+ if (!isObject(options)) {
27
+ options = { default: options };
28
+ }
29
+ if (!isValidObject(target)) {
30
+ return options.default !== undefined ? options.default : target;
31
+ }
32
+ if (typeof path === 'number') {
33
+ path = String(path);
34
+ }
35
+ const pathIsArray = Array.isArray(path);
36
+ const pathIsString = typeof path === 'string';
37
+ const splitChar = options.separator || '.';
38
+ const joinChar = options.joinChar || (typeof splitChar === 'string' ? splitChar : '.');
39
+ if (!pathIsString && !pathIsArray) {
40
+ return target;
41
+ }
42
+ if (target[path] !== undefined) {
43
+ return isValid(path, target, options) ? target[path] : options.default;
44
+ }
45
+ const segs = pathIsArray ? path : split(path, splitChar, options);
46
+ const len = segs.length;
47
+ let idx = 0;
48
+ do {
49
+ let prop = segs[idx];
50
+ if (typeof prop !== 'string') {
51
+ prop = String(prop);
52
+ }
53
+ while (prop.endsWith('\\')) {
54
+ prop = join([prop.slice(0, -1), segs[++idx] || ''], joinChar, options);
55
+ }
56
+ if (target[prop] !== undefined) {
57
+ if (!isValid(prop, target, options)) {
58
+ return options.default;
59
+ }
60
+ target = target[prop];
61
+ }
62
+ else {
63
+ let hasProp = false;
64
+ let n = idx + 1;
65
+ while (n < len) {
66
+ prop = join([prop, segs[n++]], joinChar, options);
67
+ if ((hasProp = target[prop] !== undefined)) {
68
+ if (!isValid(prop, target, options)) {
69
+ return options.default;
70
+ }
71
+ target = target[prop];
72
+ idx = n - 1;
73
+ break;
74
+ }
75
+ }
76
+ if (!hasProp) {
77
+ return options.default;
78
+ }
79
+ }
80
+ } while (++idx < len && isValidObject(target));
81
+ if (idx === len) {
82
+ return target;
83
+ }
84
+ return options.default;
85
+ };
86
+ exports.default = getValue;
@@ -7,8 +7,8 @@ exports.parseJB1Json = parseJB1Json;
7
7
  exports.parseJB1Conf = parseJB1Conf;
8
8
  exports.regularizeConf = regularizeConf;
9
9
  const util_1 = require("@jbrowse/core/util");
10
- const get_value_1 = __importDefault(require("get-value"));
11
10
  const set_value_1 = __importDefault(require("set-value"));
11
+ const get_value_1 = __importDefault(require("./get-value"));
12
12
  const util_2 = require("./util");
13
13
  function parseJB1Json(config, url) {
14
14
  if (typeof config === 'string') {
@@ -72,16 +72,16 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
72
72
  type: 'CramAdapter',
73
73
  cramLocation: { uri: urlTemplate, locationType: 'UriLocation' },
74
74
  sequenceAdapter,
75
+ craiLocation: jb1TrackConfig.craiUrlTemplate
76
+ ? {
77
+ uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate),
78
+ locationType: 'UriLocation',
79
+ }
80
+ : {
81
+ uri: `${urlTemplate}.crai`,
82
+ locationType: 'UriLocation',
83
+ },
75
84
  };
76
- adapter.craiLocation = jb1TrackConfig.craiUrlTemplate
77
- ? {
78
- uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate),
79
- locationType: 'UriLocation',
80
- }
81
- : {
82
- uri: `${urlTemplate}.crai`,
83
- locationType: 'UriLocation',
84
- };
85
85
  return {
86
86
  ...jb2TrackConfig,
87
87
  type: 'AlignmentsTrack',
@@ -261,16 +261,16 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
261
261
  const adapter = {
262
262
  type: 'IndexedFastaAdapter',
263
263
  fastaLocation: { uri: urlTemplate, locationType: 'UriLocation' },
264
+ faiLocation: jb1TrackConfig.faiUrlTemplate
265
+ ? {
266
+ uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
267
+ locationType: 'UriLocation',
268
+ }
269
+ : {
270
+ uri: `${urlTemplate}.fai`,
271
+ locationType: 'UriLocation',
272
+ },
264
273
  };
265
- adapter.faiLocation = jb1TrackConfig.faiUrlTemplate
266
- ? {
267
- uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
268
- locationType: 'UriLocation',
269
- }
270
- : {
271
- uri: `${urlTemplate}.fai`,
272
- locationType: 'UriLocation',
273
- };
274
274
  return {
275
275
  ...jb2TrackConfig,
276
276
  type: 'SequenceTrack',
@@ -281,25 +281,25 @@ function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
281
281
  const adapter = {
282
282
  type: 'BgzipFastaAdapter',
283
283
  fastaLocation: { uri: urlTemplate, locationType: 'UriLocation' },
284
+ faiLocation: jb1TrackConfig.faiUrlTemplate
285
+ ? {
286
+ uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
287
+ locationType: 'UriLocation',
288
+ }
289
+ : {
290
+ uri: `${urlTemplate}.fai`,
291
+ locationType: 'UriLocation',
292
+ },
293
+ gziLocation: jb1TrackConfig.gziUrlTemplate
294
+ ? {
295
+ uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate),
296
+ locationType: 'UriLocation',
297
+ }
298
+ : {
299
+ uri: `${urlTemplate}.gzi`,
300
+ locationType: 'UriLocation',
301
+ },
284
302
  };
285
- adapter.faiLocation = jb1TrackConfig.faiUrlTemplate
286
- ? {
287
- uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
288
- locationType: 'UriLocation',
289
- }
290
- : {
291
- uri: `${urlTemplate}.fai`,
292
- locationType: 'UriLocation',
293
- };
294
- adapter.gziLocation = jb1TrackConfig.gziUrlTemplate
295
- ? {
296
- uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate),
297
- locationType: 'UriLocation',
298
- }
299
- : {
300
- uri: `${urlTemplate}.gzi`,
301
- locationType: 'UriLocation',
302
- };
303
303
  return {
304
304
  ...jb2TrackConfig,
305
305
  type: 'ReferenceSequenceTrack',
@@ -8,7 +8,7 @@ exports.isSource = isSource;
8
8
  exports.deepUpdate = deepUpdate;
9
9
  exports.fillTemplate = fillTemplate;
10
10
  exports.structuredClone = structuredClone;
11
- const get_value_1 = __importDefault(require("get-value"));
11
+ const get_value_1 = __importDefault(require("./get-value"));
12
12
  function isTrack(arg) {
13
13
  return (arg === null || arg === void 0 ? void 0 : arg.label) && typeof arg.label === 'string';
14
14
  }
@@ -18,9 +18,9 @@ class NCListAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
18
18
  this.nclist = new nclist_1.default({
19
19
  baseUrl: '',
20
20
  urlTemplate: rootUrlTemplate.uri,
21
- readFile: (url) => new generic_filehandle2_1.RemoteFile(String(rootUrlTemplate.baseUri
21
+ readFile: (url) => new generic_filehandle2_1.RemoteFile(rootUrlTemplate.baseUri
22
22
  ? new URL(url, rootUrlTemplate.baseUri).toString()
23
- : url)).readFile(),
23
+ : url).readFile(),
24
24
  });
25
25
  }
26
26
  getFeatures(region, opts = {}) {
@@ -0,0 +1,10 @@
1
+ export interface Options {
2
+ default?: unknown;
3
+ separator?: string;
4
+ joinChar?: string;
5
+ join?: (segs: string[]) => string;
6
+ split?: (path: string) => string[];
7
+ isValid?: (key: string, target: {}) => boolean;
8
+ }
9
+ declare const getValue: (target: unknown, path: string | number | string[], options?: Options) => unknown;
10
+ export default getValue;
@@ -0,0 +1,84 @@
1
+ const isObject = v => v !== null && typeof v === 'object';
2
+ const join = (segs, joinChar, options) => {
3
+ if (typeof options.join === 'function') {
4
+ return options.join(segs);
5
+ }
6
+ return segs[0] + joinChar + segs[1];
7
+ };
8
+ const split = (path, splitChar, options) => {
9
+ if (typeof options.split === 'function') {
10
+ return options.split(path);
11
+ }
12
+ return path.split(splitChar);
13
+ };
14
+ const isValid = (key, target = {}, options) => {
15
+ if (typeof (options === null || options === void 0 ? void 0 : options.isValid) === 'function') {
16
+ return options.isValid(key, target);
17
+ }
18
+ return true;
19
+ };
20
+ const isValidObject = (v) => {
21
+ return isObject(v) || typeof v === 'function';
22
+ };
23
+ const getValue = (target, path, options = {}) => {
24
+ if (!isObject(options)) {
25
+ options = { default: options };
26
+ }
27
+ if (!isValidObject(target)) {
28
+ return options.default !== undefined ? options.default : target;
29
+ }
30
+ if (typeof path === 'number') {
31
+ path = String(path);
32
+ }
33
+ const pathIsArray = Array.isArray(path);
34
+ const pathIsString = typeof path === 'string';
35
+ const splitChar = options.separator || '.';
36
+ const joinChar = options.joinChar || (typeof splitChar === 'string' ? splitChar : '.');
37
+ if (!pathIsString && !pathIsArray) {
38
+ return target;
39
+ }
40
+ if (target[path] !== undefined) {
41
+ return isValid(path, target, options) ? target[path] : options.default;
42
+ }
43
+ const segs = pathIsArray ? path : split(path, splitChar, options);
44
+ const len = segs.length;
45
+ let idx = 0;
46
+ do {
47
+ let prop = segs[idx];
48
+ if (typeof prop !== 'string') {
49
+ prop = String(prop);
50
+ }
51
+ while (prop.endsWith('\\')) {
52
+ prop = join([prop.slice(0, -1), segs[++idx] || ''], joinChar, options);
53
+ }
54
+ if (target[prop] !== undefined) {
55
+ if (!isValid(prop, target, options)) {
56
+ return options.default;
57
+ }
58
+ target = target[prop];
59
+ }
60
+ else {
61
+ let hasProp = false;
62
+ let n = idx + 1;
63
+ while (n < len) {
64
+ prop = join([prop, segs[n++]], joinChar, options);
65
+ if ((hasProp = target[prop] !== undefined)) {
66
+ if (!isValid(prop, target, options)) {
67
+ return options.default;
68
+ }
69
+ target = target[prop];
70
+ idx = n - 1;
71
+ break;
72
+ }
73
+ }
74
+ if (!hasProp) {
75
+ return options.default;
76
+ }
77
+ }
78
+ } while (++idx < len && isValidObject(target));
79
+ if (idx === len) {
80
+ return target;
81
+ }
82
+ return options.default;
83
+ };
84
+ export default getValue;
@@ -1,6 +1,6 @@
1
1
  import { objectHash } from '@jbrowse/core/util';
2
- import getValue from 'get-value';
3
2
  import setValue from 'set-value';
3
+ import getValue from './get-value';
4
4
  import { isSource, isTrack } from './util';
5
5
  export function parseJB1Json(config, url) {
6
6
  if (typeof config === 'string') {
@@ -68,16 +68,16 @@ export function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
68
68
  type: 'CramAdapter',
69
69
  cramLocation: { uri: urlTemplate, locationType: 'UriLocation' },
70
70
  sequenceAdapter,
71
+ craiLocation: jb1TrackConfig.craiUrlTemplate
72
+ ? {
73
+ uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate),
74
+ locationType: 'UriLocation',
75
+ }
76
+ : {
77
+ uri: `${urlTemplate}.crai`,
78
+ locationType: 'UriLocation',
79
+ },
71
80
  };
72
- adapter.craiLocation = jb1TrackConfig.craiUrlTemplate
73
- ? {
74
- uri: resolveUrlTemplate(jb1TrackConfig.craiUrlTemplate),
75
- locationType: 'UriLocation',
76
- }
77
- : {
78
- uri: `${urlTemplate}.crai`,
79
- locationType: 'UriLocation',
80
- };
81
81
  return {
82
82
  ...jb2TrackConfig,
83
83
  type: 'AlignmentsTrack',
@@ -257,16 +257,16 @@ export function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
257
257
  const adapter = {
258
258
  type: 'IndexedFastaAdapter',
259
259
  fastaLocation: { uri: urlTemplate, locationType: 'UriLocation' },
260
+ faiLocation: jb1TrackConfig.faiUrlTemplate
261
+ ? {
262
+ uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
263
+ locationType: 'UriLocation',
264
+ }
265
+ : {
266
+ uri: `${urlTemplate}.fai`,
267
+ locationType: 'UriLocation',
268
+ },
260
269
  };
261
- adapter.faiLocation = jb1TrackConfig.faiUrlTemplate
262
- ? {
263
- uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
264
- locationType: 'UriLocation',
265
- }
266
- : {
267
- uri: `${urlTemplate}.fai`,
268
- locationType: 'UriLocation',
269
- };
270
270
  return {
271
271
  ...jb2TrackConfig,
272
272
  type: 'SequenceTrack',
@@ -277,25 +277,25 @@ export function convertTrackConfig(jb1TrackConfig, dataRoot, sequenceAdapter) {
277
277
  const adapter = {
278
278
  type: 'BgzipFastaAdapter',
279
279
  fastaLocation: { uri: urlTemplate, locationType: 'UriLocation' },
280
+ faiLocation: jb1TrackConfig.faiUrlTemplate
281
+ ? {
282
+ uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
283
+ locationType: 'UriLocation',
284
+ }
285
+ : {
286
+ uri: `${urlTemplate}.fai`,
287
+ locationType: 'UriLocation',
288
+ },
289
+ gziLocation: jb1TrackConfig.gziUrlTemplate
290
+ ? {
291
+ uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate),
292
+ locationType: 'UriLocation',
293
+ }
294
+ : {
295
+ uri: `${urlTemplate}.gzi`,
296
+ locationType: 'UriLocation',
297
+ },
280
298
  };
281
- adapter.faiLocation = jb1TrackConfig.faiUrlTemplate
282
- ? {
283
- uri: resolveUrlTemplate(jb1TrackConfig.faiUrlTemplate),
284
- locationType: 'UriLocation',
285
- }
286
- : {
287
- uri: `${urlTemplate}.fai`,
288
- locationType: 'UriLocation',
289
- };
290
- adapter.gziLocation = jb1TrackConfig.gziUrlTemplate
291
- ? {
292
- uri: resolveUrlTemplate(jb1TrackConfig.gziUrlTemplate),
293
- locationType: 'UriLocation',
294
- }
295
- : {
296
- uri: `${urlTemplate}.gzi`,
297
- locationType: 'UriLocation',
298
- };
299
299
  return {
300
300
  ...jb2TrackConfig,
301
301
  type: 'ReferenceSequenceTrack',
@@ -1,4 +1,4 @@
1
- import getValue from 'get-value';
1
+ import getValue from './get-value';
2
2
  export function isTrack(arg) {
3
3
  return (arg === null || arg === void 0 ? void 0 : arg.label) && typeof arg.label === 'string';
4
4
  }
@@ -13,9 +13,9 @@ export default class NCListAdapter extends BaseFeatureDataAdapter {
13
13
  this.nclist = new NCListStore({
14
14
  baseUrl: '',
15
15
  urlTemplate: rootUrlTemplate.uri,
16
- readFile: (url) => new RemoteFile(String(rootUrlTemplate.baseUri
16
+ readFile: (url) => new RemoteFile(rootUrlTemplate.baseUri
17
17
  ? new URL(url, rootUrlTemplate.baseUri).toString()
18
- : url)).readFile(),
18
+ : url).readFile(),
19
19
  });
20
20
  }
21
21
  getFeatures(region, opts = {}) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-legacy-jbrowse",
3
- "version": "3.6.5",
3
+ "version": "3.7.0",
4
4
  "description": "JBrowse 2 plugin for connecting to and reading JBrowse 1 data",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -37,10 +37,9 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@gmod/nclist": "^3.0.0",
40
- "@jbrowse/core": "^3.6.5",
40
+ "@jbrowse/core": "^3.7.0",
41
41
  "crc": "^4.0.0",
42
42
  "generic-filehandle2": "^2.0.1",
43
- "get-value": "^3.0.0",
44
43
  "mobx": "^6.0.0",
45
44
  "mobx-react": "^9.0.0",
46
45
  "mobx-state-tree": "^5.0.0",
@@ -53,5 +52,5 @@
53
52
  "distModule": "esm/index.js",
54
53
  "srcModule": "src/index.ts",
55
54
  "module": "esm/index.js",
56
- "gitHead": "354d0a87b757b4d84f824b47507662f6f3a1693f"
55
+ "gitHead": "85bdd0d58286b7adbfd408146b15847676317635"
57
56
  }