@jbrowse/img 2.2.0 → 2.2.2
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/README.md +1 -4
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +2 -2
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +207 -202
- package/dist/index.js.map +1 -0
- package/dist/parseArgv.d.ts +8 -0
- package/dist/parseArgv.js +42 -33
- package/dist/parseArgv.js.map +1 -0
- package/dist/renderRegion.d.ts +35 -0
- package/dist/renderRegion.js +345 -425
- package/dist/renderRegion.js.map +1 -0
- package/dist/util.d.ts +5 -0
- package/dist/util.js +31 -9
- package/dist/util.js.map +1 -0
- package/esm/bin.d.ts +2 -0
- package/esm/bin.js +4 -0
- package/esm/bin.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.js +186 -0
- package/esm/index.js.map +1 -0
- package/esm/parseArgv.d.ts +8 -0
- package/esm/parseArgv.js +42 -0
- package/esm/parseArgv.js.map +1 -0
- package/esm/renderRegion.d.ts +35 -0
- package/esm/renderRegion.js +366 -0
- package/esm/renderRegion.js.map +1 -0
- package/esm/util.d.ts +5 -0
- package/esm/util.js +25 -0
- package/esm/util.js.map +1 -0
- package/package.json +15 -10
- package/src/bin.js +2 -0
- package/src/index.test.js +179 -0
- package/src/index.ts +210 -0
- package/src/parseArgv.test.js +29 -0
- package/src/parseArgv.ts +48 -0
- package/src/renderRegion.tsx +456 -0
- package/src/util.ts +32 -0
- package/dist/index.testmod.js +0 -210
- package/dist/parseArgv.testmod.js +0 -7
package/README.md
CHANGED
|
@@ -107,10 +107,7 @@ Some jbrowse track types (alignments, gene tracks, etc) will not display if
|
|
|
107
107
|
zoomed too far out. Add force:true to make it render
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
jb2export --
|
|
111
|
-
--loc 1:1,100,000-1,200,000 \
|
|
112
|
-
--assembly hg19 \
|
|
113
|
-
--configtracks hg00096_lowcov force:true
|
|
110
|
+
jb2export --bam file.bam force:true --loc 1:1,100,000-1,200,000 --fasta hg19.fa
|
|
114
111
|
```
|
|
115
112
|
|
|
116
113
|
### Render the sequence track
|
package/dist/bin.d.ts
ADDED
package/dist/bin.js
CHANGED
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.js"],"names":[],"mappings":";;AACA,OAAO,CAAC,YAAY,CAAC,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
|
package/dist/index.js
CHANGED
|
@@ -1,209 +1,214 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const fs_1 = __importDefault(require("fs"));
|
|
30
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
12
31
|
require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
global.nodeImage =
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
const node_fetch_1 = __importStar(require("node-fetch"));
|
|
33
|
+
const jsdom_1 = require("jsdom");
|
|
34
|
+
const canvas_1 = require("canvas");
|
|
35
|
+
// locals
|
|
36
|
+
const parseArgv_1 = require("./parseArgv");
|
|
37
|
+
const renderRegion_1 = require("./renderRegion");
|
|
38
|
+
const util_1 = require("./util");
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
global.nodeImage = canvas_1.Image;
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
global.nodeCreateCanvas = canvas_1.createCanvas;
|
|
43
|
+
const { document } = new jsdom_1.JSDOM(`...`).window;
|
|
24
44
|
global.document = document;
|
|
25
|
-
if
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
45
|
+
// force use of node-fetch polyfill, even if node 18+ fetch is available.
|
|
46
|
+
// native node 18+ fetch currently gives errors related to unidici and
|
|
47
|
+
// Uint8Array:
|
|
48
|
+
//
|
|
49
|
+
//
|
|
50
|
+
// % node --version
|
|
51
|
+
// v18.12.1
|
|
52
|
+
//
|
|
53
|
+
// % jb2export --fasta https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa --bam https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam --loc ctgA:1-1000 --out out4.svg
|
|
54
|
+
// [
|
|
55
|
+
// '(node:1387934) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time\n' +
|
|
56
|
+
// '(Use `node --trace-warnings ...` to show where the warning was created)'
|
|
57
|
+
// ]
|
|
58
|
+
// [
|
|
59
|
+
// RangeError: offset is out of bounds
|
|
60
|
+
// at Uint8Array.set (<anonymous>)
|
|
61
|
+
// at Response.arrayBuffer (node:internal/deps/undici/undici:6117:23)
|
|
62
|
+
// at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
|
|
63
|
+
// ]
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
global.fetch = node_fetch_1.default;
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
global.Headers = node_fetch_1.Headers;
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
global.Response = node_fetch_1.Response;
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
global.Request = node_fetch_1.Request;
|
|
72
|
+
const err = console.error;
|
|
73
|
+
console.error = (...p) => {
|
|
74
|
+
if (!`${p[0]}`.match('useLayoutEffect')) {
|
|
75
|
+
err(p);
|
|
76
|
+
}
|
|
41
77
|
};
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return null;
|
|
48
|
-
} else {
|
|
49
|
-
err(args);
|
|
50
|
-
}
|
|
78
|
+
const warn = console.warn;
|
|
79
|
+
console.warn = (...p) => {
|
|
80
|
+
if (!`${p[0]}`.match('estimation reached timeout')) {
|
|
81
|
+
warn(p);
|
|
82
|
+
}
|
|
51
83
|
};
|
|
52
|
-
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
})
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
84
|
+
// note: yargs is actually unused except for printing help
|
|
85
|
+
// we do custom command line parsing, see parseArgv.ts
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
87
|
+
yargs_1.default
|
|
88
|
+
.command('jb2export', 'Creates a jbrowse 2 image snapshot')
|
|
89
|
+
.option('config', {
|
|
90
|
+
description: 'Path to config file',
|
|
91
|
+
type: 'string',
|
|
92
|
+
})
|
|
93
|
+
.option('session', {
|
|
94
|
+
description: 'Path to session file',
|
|
95
|
+
type: 'string',
|
|
96
|
+
})
|
|
97
|
+
.option('assembly', {
|
|
98
|
+
description: 'Path to an assembly configuration, or a name of an assembly in the configFile',
|
|
99
|
+
type: 'string',
|
|
100
|
+
})
|
|
101
|
+
.option('tracks', {
|
|
102
|
+
description: 'Path to tracks portion of a session',
|
|
103
|
+
type: 'string',
|
|
104
|
+
})
|
|
105
|
+
.option('loc', {
|
|
106
|
+
description: 'A locstring to navigate to, or --loc all to view the whole genome',
|
|
107
|
+
type: 'string',
|
|
108
|
+
})
|
|
109
|
+
.option('fasta', {
|
|
110
|
+
description: 'Supply a fasta for the assembly',
|
|
111
|
+
type: 'string',
|
|
112
|
+
})
|
|
113
|
+
.option('aliases', {
|
|
114
|
+
description: 'Supply aliases for the assembly, e.g. mapping of 1 to chr1. Tab separated file where column 1 matches the names from the FASTA',
|
|
115
|
+
type: 'string',
|
|
116
|
+
})
|
|
117
|
+
.option('width', {
|
|
118
|
+
description: 'Set the width of the window that jbrowse renders to, default: 1500px',
|
|
119
|
+
type: 'number',
|
|
120
|
+
})
|
|
121
|
+
.option('pngwidth', {
|
|
122
|
+
description: 'Set the width of the png canvas if using png output, default 2048px',
|
|
123
|
+
type: 'number',
|
|
124
|
+
default: 2048,
|
|
125
|
+
})
|
|
126
|
+
// track types
|
|
127
|
+
.option('configtracks', {
|
|
128
|
+
description: 'A list of track labels from a config file',
|
|
129
|
+
type: 'array',
|
|
130
|
+
})
|
|
131
|
+
.option('bam', {
|
|
132
|
+
description: 'A bam file, flag --bam can be used multiple times to specify multiple bam files',
|
|
133
|
+
type: 'array',
|
|
134
|
+
})
|
|
135
|
+
.option('bigwig', {
|
|
136
|
+
description: 'A bigwig file, the --bigwig flag can be used multiple times to specify multiple bigwig files',
|
|
137
|
+
type: 'array',
|
|
138
|
+
})
|
|
139
|
+
.option('cram', {
|
|
140
|
+
description: 'A cram file, the --cram flag can be used multiple times to specify multiple cram files',
|
|
141
|
+
type: 'array',
|
|
142
|
+
})
|
|
143
|
+
.option('vcfgz', {
|
|
144
|
+
description: 'A tabixed VCF, the --vcfgz flag can be used multiple times to specify multiple vcfgz files',
|
|
145
|
+
type: 'array',
|
|
146
|
+
})
|
|
147
|
+
.option('gffgz', {
|
|
148
|
+
description: 'A tabixed GFF, the --gffgz can be used multiple times to specify multiple gffgz files',
|
|
149
|
+
type: 'array',
|
|
150
|
+
})
|
|
151
|
+
.option('hic', {
|
|
152
|
+
description: 'A .hic file, the --hic can be used multiple times to specify multiple hic files',
|
|
153
|
+
type: 'array',
|
|
154
|
+
})
|
|
155
|
+
.option('bigbed', {
|
|
156
|
+
description: 'A .bigBed file, the --bigbed can be used multiple times to specify multiple bigbed files',
|
|
157
|
+
type: 'array',
|
|
158
|
+
})
|
|
159
|
+
.option('bedgz', {
|
|
160
|
+
description: 'A bed tabix file, the --bedgz can be used multiple times to specify multiple bedtabix files',
|
|
161
|
+
type: 'array',
|
|
162
|
+
})
|
|
163
|
+
// other
|
|
164
|
+
.option('out', {
|
|
165
|
+
description: 'File to output to. Default: out.svg. If a filename with extension .png is supplied the program will try to automatically execute rsvg-convert to convert it to png',
|
|
166
|
+
type: 'string',
|
|
167
|
+
default: 'out.svg',
|
|
168
|
+
})
|
|
169
|
+
.option('noRasterize', {
|
|
170
|
+
description: 'Use full SVG rendering with no rasterized layers, this can substantially increase filesize',
|
|
171
|
+
type: 'boolean',
|
|
172
|
+
})
|
|
173
|
+
.option('defaultSession', {
|
|
174
|
+
description: 'Use the defaultSession from config.json',
|
|
175
|
+
type: 'boolean',
|
|
176
|
+
})
|
|
177
|
+
.help()
|
|
178
|
+
.alias('help', 'h')
|
|
179
|
+
.alias('width', 'w').argv;
|
|
180
|
+
const args = (0, parseArgv_1.standardizeArgv)((0, parseArgv_1.parseArgv)(process.argv.slice(2)), [
|
|
181
|
+
'bam',
|
|
182
|
+
'cram',
|
|
183
|
+
'vcfgz',
|
|
184
|
+
'hic',
|
|
185
|
+
'bigwig',
|
|
186
|
+
'bigbed',
|
|
187
|
+
'bedgz',
|
|
188
|
+
'gffgz',
|
|
189
|
+
'configtracks',
|
|
190
|
+
]);
|
|
191
|
+
(async () => {
|
|
192
|
+
try {
|
|
193
|
+
const result = await (0, renderRegion_1.renderRegion)(args);
|
|
194
|
+
const { out = 'out.svg', pngwidth = '2048' } = args;
|
|
195
|
+
if (out.endsWith('.png')) {
|
|
196
|
+
(0, util_1.convert)(result, { out, pngwidth });
|
|
147
197
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return (0, _renderRegion.renderRegion)(args);
|
|
163
|
-
case 3:
|
|
164
|
-
result = _context.sent;
|
|
165
|
-
outfile = args.out || 'out.svg';
|
|
166
|
-
if (outfile.endsWith('.png')) {
|
|
167
|
-
tmpobj = _tmp.default.fileSync({
|
|
168
|
-
mode: 420,
|
|
169
|
-
prefix: 'prefix-',
|
|
170
|
-
postfix: '.svg'
|
|
171
|
-
});
|
|
172
|
-
_fs.default.writeFileSync(tmpobj.name, result);
|
|
173
|
-
ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, tmpobj.name, '-o', outfile]);
|
|
174
|
-
console.log("rsvg-convert stderr: ".concat(ls.stderr.toString()));
|
|
175
|
-
console.log("rsvg-convert stdout: ".concat(ls.stdout.toString()));
|
|
176
|
-
_fs.default.unlinkSync(tmpobj.name);
|
|
177
|
-
} else if (outfile.endsWith('.pdf')) {
|
|
178
|
-
_tmpobj = _tmp.default.fileSync({
|
|
179
|
-
mode: 420,
|
|
180
|
-
prefix: 'prefix-',
|
|
181
|
-
postfix: '.svg'
|
|
182
|
-
});
|
|
183
|
-
_fs.default.writeFileSync(_tmpobj.name, result);
|
|
184
|
-
_ls = (0, _child_process.spawnSync)('rsvg-convert', ['-w', args.pngwidth || 2048, _tmpobj.name, '-f', 'pdf', '-o', outfile]);
|
|
185
|
-
console.log("rsvg-convert stderr: ".concat(_ls.stderr.toString()));
|
|
186
|
-
console.log("rsvg-convert stdout: ".concat(_ls.stdout.toString()));
|
|
187
|
-
_fs.default.unlinkSync(_tmpobj.name);
|
|
188
|
-
} else {
|
|
189
|
-
_fs.default.writeFileSync(outfile, result);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// manually exit the process after done rendering because autoruns or
|
|
193
|
-
// something similar otherwise keeps the nodejs process alive xref
|
|
194
|
-
// https://github.com/GMOD/jb2export/issues/6
|
|
195
|
-
process.exit(0);
|
|
196
|
-
_context.next = 13;
|
|
197
|
-
break;
|
|
198
|
-
case 9:
|
|
199
|
-
_context.prev = 9;
|
|
200
|
-
_context.t0 = _context["catch"](0);
|
|
201
|
-
console.error(_context.t0);
|
|
202
|
-
process.exit(1);
|
|
203
|
-
case 13:
|
|
204
|
-
case "end":
|
|
205
|
-
return _context.stop();
|
|
206
|
-
}
|
|
198
|
+
else if (out.endsWith('.pdf')) {
|
|
199
|
+
(0, util_1.convert)(result, { out, pngwidth }, ['-f', 'pdf']);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
fs_1.default.writeFileSync(out, result);
|
|
203
|
+
}
|
|
204
|
+
// manually exit the process after done rendering because autoruns or
|
|
205
|
+
// something similar otherwise keeps the nodejs process alive xref
|
|
206
|
+
// https://github.com/GMOD/jb2export/issues/6
|
|
207
|
+
process.exit(0);
|
|
208
|
+
}
|
|
209
|
+
catch (e) {
|
|
210
|
+
console.error(e);
|
|
211
|
+
process.exit(1);
|
|
207
212
|
}
|
|
208
|
-
|
|
209
|
-
|
|
213
|
+
})();
|
|
214
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type Entry = [string, string[]];
|
|
2
|
+
export declare function parseArgv(argv: string[]): Entry[];
|
|
3
|
+
export declare function standardizeArgv(args: Entry[], trackTypes: string[]): {
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
trackList: Entry[];
|
|
6
|
+
out?: string | undefined;
|
|
7
|
+
pngwidth?: string | undefined;
|
|
8
|
+
};
|
package/dist/parseArgv.js
CHANGED
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.standardizeArgv = exports.parseArgv = void 0;
|
|
4
|
+
// example (see parseArgv.test.js):
|
|
5
|
+
// const args =
|
|
6
|
+
// '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize'
|
|
7
|
+
//
|
|
8
|
+
// expect(parseArgv(args.split(' '))).toEqual([
|
|
9
|
+
// ['bam', ['dad.bam', 'color:red']],
|
|
10
|
+
// ['vcf', ['variants.vcf']],
|
|
11
|
+
// ['bam', ['mom.bam']],
|
|
12
|
+
// ['defaultSession', []],
|
|
13
|
+
// ['out', ['out.svg']],
|
|
14
|
+
// ['noRasterize', []],
|
|
15
|
+
// ])
|
|
8
16
|
function parseArgv(argv) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
const map = [];
|
|
18
|
+
while (argv.length) {
|
|
19
|
+
const val = argv[0].slice(2);
|
|
20
|
+
argv = argv.slice(1);
|
|
21
|
+
const next = argv.findIndex(arg => arg.startsWith('-'));
|
|
22
|
+
if (next !== -1) {
|
|
23
|
+
map.push([val, argv.slice(0, next)]);
|
|
24
|
+
argv = argv.slice(next);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
map.push([val, argv]);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
22
30
|
}
|
|
23
|
-
|
|
24
|
-
return map;
|
|
31
|
+
return map;
|
|
25
32
|
}
|
|
33
|
+
exports.parseArgv = parseArgv;
|
|
26
34
|
function standardizeArgv(args, trackTypes) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
const result = { trackList: [] };
|
|
36
|
+
args.forEach(arg => {
|
|
37
|
+
if (trackTypes.includes(arg[0])) {
|
|
38
|
+
result.trackList.push(arg);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
result[arg[0]] = arg[1][0] || true;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
exports.standardizeArgv = standardizeArgv;
|
|
47
|
+
//# sourceMappingURL=parseArgv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseArgv.js","sourceRoot":"","sources":["../src/parseArgv.ts"],"names":[],"mappings":";;;AAEA,mCAAmC;AACnC,eAAe;AACf,4GAA4G;AAC5G,EAAE;AACF,+CAA+C;AAC/C,uCAAuC;AACvC,+BAA+B;AAC/B,0BAA0B;AAC1B,4BAA4B;AAC5B,0BAA0B;AAC1B,yBAAyB;AACzB,KAAK;AACL,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,GAAG,GAAG,EAAa,CAAA;IACzB,OAAO,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAEvD,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACxB;aAAM;YACL,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;YACrB,MAAK;SACN;KACF;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAhBD,8BAgBC;AAED,SAAgB,eAAe,CAAC,IAAa,EAAE,UAAoB;IACjE,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,EAAE,EAK7B,CAAA;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACjB,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC3B;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;SACnC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC;AAfD,0CAeC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Entry } from './parseArgv';
|
|
2
|
+
export interface Opts {
|
|
3
|
+
noRasterize?: boolean;
|
|
4
|
+
loc?: string;
|
|
5
|
+
width?: number;
|
|
6
|
+
session?: string;
|
|
7
|
+
assembly?: string;
|
|
8
|
+
config?: string;
|
|
9
|
+
fasta?: string;
|
|
10
|
+
aliases?: string;
|
|
11
|
+
cytobands?: string;
|
|
12
|
+
defaultSession?: string;
|
|
13
|
+
trackList: Entry[];
|
|
14
|
+
tracks?: string;
|
|
15
|
+
}
|
|
16
|
+
interface Assembly {
|
|
17
|
+
name: string;
|
|
18
|
+
sequence: Record<string, unknown>;
|
|
19
|
+
refNameAliases?: Record<string, unknown>;
|
|
20
|
+
cytobands?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
interface Track {
|
|
23
|
+
trackId: string;
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
interface Config {
|
|
27
|
+
assemblies: Assembly[];
|
|
28
|
+
assembly: Assembly;
|
|
29
|
+
tracks: Track[];
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
}
|
|
32
|
+
export declare function readData({ assembly: asm, config, session, fasta, aliases, cytobands, defaultSession, tracks, trackList, }: Opts): Config;
|
|
33
|
+
export declare const muiCache: import("@emotion/utils").EmotionCache;
|
|
34
|
+
export declare function renderRegion(opts: Opts): Promise<string>;
|
|
35
|
+
export {};
|