@jbrowse/img 2.2.0 → 2.2.1

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 (51) hide show
  1. package/README.md +1 -4
  2. package/dist/bin.d.ts +2 -0
  3. package/dist/bin.js +2 -2
  4. package/dist/bin.js.map +1 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +206 -202
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.testmod.d.ts +1 -0
  9. package/dist/index.testmod.js +165 -206
  10. package/dist/index.testmod.js.map +1 -0
  11. package/dist/parseArgv.d.ts +8 -0
  12. package/dist/parseArgv.js +42 -33
  13. package/dist/parseArgv.js.map +1 -0
  14. package/dist/parseArgv.testmod.d.ts +1 -0
  15. package/dist/parseArgv.testmod.js +25 -6
  16. package/dist/parseArgv.testmod.js.map +1 -0
  17. package/dist/renderRegion.d.ts +35 -0
  18. package/dist/renderRegion.js +345 -425
  19. package/dist/renderRegion.js.map +1 -0
  20. package/dist/util.d.ts +5 -0
  21. package/dist/util.js +31 -9
  22. package/dist/util.js.map +1 -0
  23. package/esm/bin.d.ts +2 -0
  24. package/esm/bin.js +4 -0
  25. package/esm/bin.js.map +1 -0
  26. package/esm/index.d.ts +1 -0
  27. package/esm/index.js +185 -0
  28. package/esm/index.js.map +1 -0
  29. package/esm/index.testmod.d.ts +1 -0
  30. package/esm/index.testmod.js +141 -0
  31. package/esm/index.testmod.js.map +1 -0
  32. package/esm/parseArgv.d.ts +8 -0
  33. package/esm/parseArgv.js +42 -0
  34. package/esm/parseArgv.js.map +1 -0
  35. package/esm/parseArgv.testmod.d.ts +1 -0
  36. package/esm/parseArgv.testmod.js +24 -0
  37. package/esm/parseArgv.testmod.js.map +1 -0
  38. package/esm/renderRegion.d.ts +35 -0
  39. package/esm/renderRegion.js +366 -0
  40. package/esm/renderRegion.js.map +1 -0
  41. package/esm/util.d.ts +5 -0
  42. package/esm/util.js +25 -0
  43. package/esm/util.js.map +1 -0
  44. package/package.json +15 -10
  45. package/src/bin.js +2 -0
  46. package/src/index.testmod.js +163 -0
  47. package/src/index.ts +209 -0
  48. package/src/parseArgv.testmod.js +29 -0
  49. package/src/parseArgv.ts +48 -0
  50. package/src/renderRegion.tsx +456 -0
  51. package/src/util.ts +32 -0
@@ -1,210 +1,169 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
- var _renderRegion = require("./renderRegion");
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _jsdom = require("jsdom");
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 renderRegion_1 = require("./renderRegion");
30
+ const fs_1 = __importDefault(require("fs"));
31
+ const jsdom_1 = require("jsdom");
9
32
  require("abortcontroller-polyfill/dist/abortcontroller-polyfill-only");
10
- var _canvas = require("canvas");
11
- var document = new _jsdom.JSDOM("...").window.document;
33
+ const canvas_1 = require("canvas");
34
+ const node_fetch_1 = __importStar(require("node-fetch"));
35
+ global.fetch = node_fetch_1.default;
36
+ global.Headers = node_fetch_1.Headers;
37
+ global.Response = node_fetch_1.Response;
38
+ global.Request = node_fetch_1.Request;
39
+ const { document } = new jsdom_1.JSDOM(`...`).window;
12
40
  global.document = document;
13
- global.nodeImage = _canvas.Image;
14
- global.nodeCreateCanvas = _canvas.createCanvas;
15
- function hashCode(str) {
16
- var hash = 0;
17
- var chr;
18
- if (str.length === 0) {
19
- return hash;
20
- }
21
- for (var i = 0; i < str.length; i++) {
22
- chr = str.charCodeAt(i);
23
- hash = (hash << 5) - hash + chr;
24
- hash |= 0; // Convert to 32bit integer
25
- }
26
-
27
- return hash;
28
- }
29
- var timeout = 20000;
30
-
31
- // commented out for using remote files currently
32
- xtest('renders a region with --session and --config args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
33
- var result;
34
- return _regenerator.default.wrap(function _callee$(_context) {
35
- while (1) {
36
- switch (_context.prev = _context.next) {
37
- case 0:
38
- _context.next = 2;
39
- return (0, _renderRegion.renderRegion)({
40
- session: require.resolve('../test/clingen_session.json'),
41
- config: require.resolve('../data/config.json')
42
- });
43
- case 2:
44
- result = _context.sent;
45
- _fs.default.writeFileSync('svg_from_config_and_session_param.svg', result);
46
- expect(hashCode(result)).toMatchSnapshot();
47
- case 5:
48
- case "end":
49
- return _context.stop();
50
- }
51
- }
52
- }, _callee);
53
- })), timeout);
54
-
55
- // commented out for using remote files currently
56
- xtest('renders a region with --session, --tracks, and --assembly args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
57
- var result;
58
- return _regenerator.default.wrap(function _callee2$(_context2) {
59
- while (1) {
60
- switch (_context2.prev = _context2.next) {
61
- case 0:
62
- _context2.next = 2;
63
- return (0, _renderRegion.renderRegion)({
64
- session: require.resolve('../test/clingen_session.json'),
65
- tracks: require.resolve('../data/tracks.json'),
66
- assembly: require.resolve('../data/assembly.json')
67
- });
68
- case 2:
69
- result = _context2.sent;
70
- _fs.default.writeFileSync('svg_from_separate_session_and_tracks.svg', result);
71
- expect(hashCode(result)).toMatchSnapshot();
72
- case 5:
73
- case "end":
74
- return _context2.stop();
75
- }
76
- }
77
- }, _callee2);
78
- })), timeout);
79
- test('renders volvox with variety of args', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
80
- var fp, result;
81
- return _regenerator.default.wrap(function _callee3$(_context3) {
82
- while (1) {
83
- switch (_context3.prev = _context3.next) {
84
- case 0:
85
- fp = function fp(f) {
86
- return require.resolve('../data/volvox/' + f);
87
- };
88
- console.error = jest.fn();
89
- _context3.next = 4;
90
- return (0, _renderRegion.renderRegion)({
91
- fasta: fp('volvox.fa'),
92
- trackList: [['bam', [fp('volvox-sorted.bam')]], ['cram', [fp('volvox-sorted.cram')]], ['bigwig', [fp('volvox-sorted.bam.coverage.bw')]], ['vcfgz', [fp('volvox.filtered.vcf.gz')]], ['gffgz', [fp('volvox.sort.gff3.gz')]], ['bigbed', [fp('volvox.bb')]], ['bedgz', [fp('volvox-bed12.bed.gz')]]],
93
- loc: 'ctgA:1000-2000'
94
- });
95
- case 4:
96
- result = _context3.sent;
97
- // can't do a snapshot test here, slightly inconsistent results(?)
98
- _fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam.svg'), result);
99
- expect(result).toBeTruthy();
100
- case 7:
101
- case "end":
102
- return _context3.stop();
103
- }
104
- }
105
- }, _callee3);
106
- })), timeout);
107
- test('renders volvox with variety of args (noRasterize)', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
108
- var fp, result;
109
- return _regenerator.default.wrap(function _callee4$(_context4) {
110
- while (1) {
111
- switch (_context4.prev = _context4.next) {
112
- case 0:
113
- fp = function fp(f) {
114
- return require.resolve('../data/volvox/' + f);
115
- };
116
- console.error = jest.fn();
117
- _context4.next = 4;
118
- return (0, _renderRegion.renderRegion)({
119
- fasta: fp('volvox.fa'),
120
- trackList: [['bam', [fp('volvox-sorted.bam')]], ['cram', [fp('volvox-sorted.cram')]], ['bigwig', [fp('volvox-sorted.bam.coverage.bw')]], ['vcfgz', [fp('volvox.filtered.vcf.gz')]], ['gffgz', [fp('volvox.sort.gff3.gz')]], ['bigbed', [fp('volvox.bb')]], ['bedgz', [fp('volvox-bed12.bed.gz')]]],
121
- loc: 'ctgA:1000-2000',
122
- noRasterize: true
123
- });
124
- case 4:
125
- result = _context4.sent;
126
- // can't do a snapshot test here, slightly inconsistent results(?)
127
- _fs.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam_norasterize.svg'), result);
128
- expect(result).toBeTruthy();
129
- case 7:
130
- case "end":
131
- return _context4.stop();
132
- }
133
- }
134
- }, _callee4);
135
- })), timeout);
136
-
41
+ global.nodeImage = canvas_1.Image;
42
+ global.nodeCreateCanvas = canvas_1.createCanvas;
43
+ xtest('renders a region with --session and --config args', async () => {
44
+ const result = await (0, renderRegion_1.renderRegion)({
45
+ session: require.resolve('../test/clingen_session.json'),
46
+ config: require.resolve('../data/config.json'),
47
+ });
48
+ fs_1.default.writeFileSync('svg_from_config_and_session_param.svg', result);
49
+ expect(result).toMatchSnapshot();
50
+ }, 40000);
51
+ xtest('renders a region with --session, --tracks, and --assembly args', async () => {
52
+ const result = await (0, renderRegion_1.renderRegion)({
53
+ session: require.resolve('../test/clingen_session.json'),
54
+ tracks: require.resolve('../data/tracks.json'),
55
+ assembly: require.resolve('../data/assembly.json'),
56
+ });
57
+ fs_1.default.writeFileSync('svg_from_separate_session_and_tracks.svg', result);
58
+ expect(result).toMatchSnapshot();
59
+ }, 40000);
60
+ test('renders volvox with variety of args', async () => {
61
+ const fp = f => require.resolve('../data/volvox/' + f);
62
+ console.error = jest.fn();
63
+ const result = await (0, renderRegion_1.renderRegion)({
64
+ fasta: fp('volvox.fa'),
65
+ trackList: [
66
+ ['bam', [fp('volvox-sorted.bam')]],
67
+ ['cram', [fp('volvox-sorted.cram')]],
68
+ ['bigwig', [fp('volvox-sorted.bam.coverage.bw')]],
69
+ ['vcfgz', [fp('volvox.filtered.vcf.gz')]],
70
+ ['gffgz', [fp('volvox.sort.gff3.gz')]],
71
+ ['bigbed', [fp('volvox.bb')]],
72
+ ['bedgz', [fp('volvox-bed12.bed.gz')]],
73
+ ],
74
+ loc: 'ctgA:1000-2000',
75
+ });
76
+ fs_1.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam.svg'), result);
77
+ expect(result).toBeTruthy();
78
+ }, 40000);
79
+ xtest('renders human large region with remote urls', async () => {
80
+ const result = await (0, renderRegion_1.renderRegion)({
81
+ fasta: 'https://jbrowse.org/genomes/GRCh38/fasta/hg38.prefix.fa.gz',
82
+ trackList: [
83
+ [
84
+ 'cram',
85
+ [
86
+ 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/skbr3/skbr3.ont.sort.mod.cram',
87
+ 'force:true',
88
+ ],
89
+ ],
90
+ ],
91
+ loc: '1:10,000,000-10,030,000',
92
+ });
93
+ fs_1.default.writeFileSync(require.resolve('../test/human_remote_urls_large_region.svg'), result);
94
+ expect(result).toBeTruthy();
95
+ }, 120000);
96
+ xtest('renders volvox with remote urls', async () => {
97
+ const result = await (0, renderRegion_1.renderRegion)({
98
+ fasta: 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.fa',
99
+ trackList: [
100
+ [
101
+ 'bam',
102
+ [
103
+ 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox-sorted.bam',
104
+ ],
105
+ ],
106
+ ],
107
+ loc: 'ctgA:1-1000',
108
+ });
109
+ fs_1.default.writeFileSync(require.resolve('../test/volvox_remote_region.svg'), result);
110
+ expect(result).toBeTruthy();
111
+ }, 20000);
112
+ test('renders volvox with variety of args (noRasterize)', async () => {
113
+ const fp = f => require.resolve('../data/volvox/' + f);
114
+ console.error = jest.fn();
115
+ const result = await (0, renderRegion_1.renderRegion)({
116
+ fasta: fp('volvox.fa'),
117
+ trackList: [
118
+ ['bam', [fp('volvox-sorted.bam')]],
119
+ ['cram', [fp('volvox-sorted.cram')]],
120
+ ['bigwig', [fp('volvox-sorted.bam.coverage.bw')]],
121
+ ['vcfgz', [fp('volvox.filtered.vcf.gz')]],
122
+ ['gffgz', [fp('volvox.sort.gff3.gz')]],
123
+ ['bigbed', [fp('volvox.bb')]],
124
+ ['bedgz', [fp('volvox-bed12.bed.gz')]],
125
+ ],
126
+ loc: 'ctgA:1000-2000',
127
+ noRasterize: true,
128
+ });
129
+ fs_1.default.writeFileSync(require.resolve('../test/svg_from_volvox_fasta_and_bam_norasterize.svg'), result);
130
+ expect(result).toBeTruthy();
131
+ }, 40000);
137
132
  // commented out for using remote files currently
138
- xtest('configtracks arg with urls', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
139
- var result;
140
- return _regenerator.default.wrap(function _callee5$(_context5) {
141
- while (1) {
142
- switch (_context5.prev = _context5.next) {
143
- case 0:
144
- _context5.next = 2;
145
- return (0, _renderRegion.renderRegion)({
146
- config: 'data/config.json',
147
- trackList: [['configtracks', ['ncbi_refseq_109_hg38']]],
148
- assembly: 'GRCh38',
149
- loc: 'chr1:50,000-60,000'
150
- });
151
- case 2:
152
- result = _context5.sent;
153
- // can't do a snapshot test here, slightly inconsistent results(?)
154
- _fs.default.writeFileSync('svg_configtracks_simple.svg', result);
155
- expect(result).toBeTruthy();
156
- case 5:
157
- case "end":
158
- return _context5.stop();
159
- }
160
- }
161
- }, _callee5);
162
- })), timeout * 3);
163
- test('configtracks arg with local files', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
164
- var result;
165
- return _regenerator.default.wrap(function _callee6$(_context6) {
166
- while (1) {
167
- switch (_context6.prev = _context6.next) {
168
- case 0:
169
- _context6.next = 2;
170
- return (0, _renderRegion.renderRegion)({
171
- config: require.resolve('../data/volvox/config.json'),
172
- trackList: [['configtracks', ['volvox_sv']]],
173
- assembly: 'volvox',
174
- loc: 'ctgA:1-50,000'
175
- });
176
- case 2:
177
- result = _context6.sent;
178
- // can't do a snapshot test here, slightly inconsistent results(?)
179
- _fs.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
180
- expect(result).toBeTruthy();
181
- case 5:
182
- case "end":
183
- return _context6.stop();
184
- }
185
- }
186
- }, _callee6);
187
- })), timeout * 3);
188
- xtest('renders --hic', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
189
- var result;
190
- return _regenerator.default.wrap(function _callee7$(_context7) {
191
- while (1) {
192
- switch (_context7.prev = _context7.next) {
193
- case 0:
194
- _context7.next = 2;
195
- return (0, _renderRegion.renderRegion)({
196
- fasta: 'https://jbrowse.org/genomes/hg19/fasta/hg19.fa.gz',
197
- trackList: [['hic', ['https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic']]],
198
- loc: '1:2,000,000-10,000,000'
199
- });
200
- case 2:
201
- result = _context7.sent;
202
- _fs.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
203
- expect(result).toBeTruthy();
204
- case 5:
205
- case "end":
206
- return _context7.stop();
207
- }
208
- }
209
- }, _callee7);
210
- })), 20000);
133
+ xtest('configtracks arg with urls', async () => {
134
+ const result = await (0, renderRegion_1.renderRegion)({
135
+ config: 'data/config.json',
136
+ trackList: [['configtracks', ['ncbi_refseq_109_hg38']]],
137
+ assembly: 'GRCh38',
138
+ loc: 'chr1:50,000-60,000',
139
+ });
140
+ fs_1.default.writeFileSync('svg_configtracks_simple.svg', result);
141
+ expect(result).toBeTruthy();
142
+ }, 40000);
143
+ test('configtracks arg with local files', async () => {
144
+ const result = await (0, renderRegion_1.renderRegion)({
145
+ config: require.resolve('../data/volvox/config.json'),
146
+ trackList: [['configtracks', ['volvox_sv']]],
147
+ assembly: 'volvox',
148
+ loc: 'ctgA:1-50,000',
149
+ });
150
+ fs_1.default.writeFileSync(require.resolve('../test/svg_configtracks_local.svg'), result);
151
+ expect(result).toBeTruthy();
152
+ }, 40000);
153
+ xtest('renders --hic', async () => {
154
+ const result = await (0, renderRegion_1.renderRegion)({
155
+ fasta: 'https://jbrowse.org/genomes/hg19/fasta/hg19.fa.gz',
156
+ trackList: [
157
+ [
158
+ 'hic',
159
+ [
160
+ 'https://s3.amazonaws.com/igv.broadinstitute.org/data/hic/intra_nofrag_30.hic',
161
+ ],
162
+ ],
163
+ ],
164
+ loc: '1:2,000,000-10,000,000',
165
+ });
166
+ fs_1.default.writeFileSync(require.resolve('../test/svg_from_human_hic.svg'), result);
167
+ expect(result).toBeTruthy();
168
+ }, 20000);
169
+ //# sourceMappingURL=index.testmod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.testmod.js","sourceRoot":"","sources":["../src/index.testmod.js"],"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
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parseArgv = parseArgv;
7
- exports.standardizeArgv = standardizeArgv;
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
- var map = [];
10
- while (argv.length) {
11
- var val = argv[0].slice(2);
12
- argv = argv.slice(1);
13
- var next = argv.findIndex(function (arg) {
14
- return arg.startsWith('-');
15
- });
16
- if (next !== -1) {
17
- map.push([val, argv.slice(0, next)]);
18
- argv = argv.slice(next);
19
- } else {
20
- map.push([val, argv]);
21
- break;
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
- var result = {
28
- trackList: []
29
- };
30
- args.forEach(function (arg) {
31
- if (trackTypes.includes(arg[0])) {
32
- result.trackList.push(arg);
33
- } else {
34
- result[arg[0]] = arg[1][0] || true;
35
- }
36
- });
37
- return result;
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 @@
1
+ export {};
@@ -1,7 +1,26 @@
1
1
  "use strict";
2
-
3
- var _parseArgv = require("./parseArgv");
4
- test('parse', function () {
5
- var args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize';
6
- expect((0, _parseArgv.parseArgv)(args.split(' '))).toEqual([['bam', ['dad.bam', 'color:red']], ['vcf', ['variants.vcf']], ['bam', ['mom.bam']], ['defaultSession', []], ['out', ['out.svg']], ['noRasterize', []]]);
7
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const parseArgv_1 = require("./parseArgv");
4
+ test('parse', () => {
5
+ const args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam --defaultSession --out out.svg --noRasterize';
6
+ expect((0, parseArgv_1.parseArgv)(args.split(' '))).toEqual([
7
+ ['bam', ['dad.bam', 'color:red']],
8
+ ['vcf', ['variants.vcf']],
9
+ ['bam', ['mom.bam']],
10
+ ['defaultSession', []],
11
+ ['out', ['out.svg']],
12
+ ['noRasterize', []],
13
+ ]);
14
+ });
15
+ test('parse', () => {
16
+ const args = '--bam dad.bam color:red --vcf variants.vcf --bam mom.bam force:true --defaultSession --out out.svg --noRasterize';
17
+ expect((0, parseArgv_1.parseArgv)(args.split(' '))).toEqual([
18
+ ['bam', ['dad.bam', 'color:red']],
19
+ ['vcf', ['variants.vcf']],
20
+ ['bam', ['mom.bam', 'force:true']],
21
+ ['defaultSession', []],
22
+ ['out', ['out.svg']],
23
+ ['noRasterize', []],
24
+ ]);
25
+ });
26
+ //# sourceMappingURL=parseArgv.testmod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArgv.testmod.js","sourceRoot":"","sources":["../src/parseArgv.testmod.js"],"names":[],"mappings":";;AAAA,2CAAuC;AAEvC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;IACjB,MAAM,IAAI,GACR,uGAAuG,CAAA;IAEzG,MAAM,CAAC,IAAA,qBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC;QACzB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACtB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,aAAa,EAAE,EAAE,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;IACjB,MAAM,IAAI,GACR,kHAAkH,CAAA;IAEpH,MAAM,CAAC,IAAA,qBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC;QACzB,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAClC,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACtB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,aAAa,EAAE,EAAE,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -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 {};