@jbrowse/cli 5.0.0-beta.1 → 5.0.0-beta.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/bundle/index.js CHANGED
@@ -28,7 +28,7 @@ eval("{\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [
28
28
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
29
29
 
30
30
  "use strict";
31
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formats: () => (/* binding */ formats),\n/* harmony export */ matchFormat: () => (/* binding */ matchFormat),\n/* harmony export */ resolveIndexType: () => (/* binding */ resolveIndexType),\n/* harmony export */ trackTypeForAdapter: () => (/* binding */ trackTypeForAdapter)\n/* harmony export */ });\n/* harmony import */ var _trackTypes_generated_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./trackTypes.generated.ts */ \"../../packages/add-track-core/src/trackTypes.generated.ts\");\n\n\n/**\n * A sidecar file sits next to the data file at `${location}${suffix}`, unless it\n * is the index and the caller was handed one explicitly (`fromIndex`).\n */\n\n/**\n * Every file format the \"Add track\" flow knows, in first-match order.\n *\n * One table, two consumers: `@jbrowse/core`'s `Core-guessAdapterForLocation`\n * chain and `@jbrowse/cli`'s `add-track`. ADR-077.\n *\n * An entry here does not make a build able to open the format. Core guesses an\n * entry only when its adapter type is registered, so the plugin providing the\n * adapter is still what decides, and there is no second list to keep in step.\n *\n * Order matters only where two regexes can match the same name:\n * `.anchors.simple.gz` must precede `.anchors.gz`, and the tabix entries must\n * precede their plain counterparts.\n */\nconst formats = [{\n regex: /\\.bam$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BamAdapter',\n locField: 'bamLocation',\n suffix: '.bai',\n indexType: 'BAI'\n }\n}, {\n regex: /\\.cram$/i,\n spec: {\n kind: 'sidecar',\n adapterType: 'CramAdapter',\n locField: 'cramLocation',\n sidecars: [{\n field: 'craiLocation',\n suffix: '.crai',\n fromIndex: true\n }]\n }\n}, {\n regex: /\\.sam(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'SamAdapter',\n locField: 'samLocation'\n }\n}, {\n regex: /\\.gff3?\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'Gff3TabixAdapter',\n locField: 'gffGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.gff3?$/i,\n spec: {\n kind: 'single',\n adapterType: 'Gff3Adapter',\n locField: 'gffLocation'\n }\n}, {\n regex: /\\.gtf\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'GtfTabixAdapter',\n locField: 'gtfGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.gtf$/i,\n spec: {\n kind: 'single',\n adapterType: 'GtfAdapter',\n locField: 'gtfLocation'\n }\n}, {\n regex: /\\.vcf\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'VcfTabixAdapter',\n locField: 'vcfGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.vcf\\.idx$/i,\n spec: {\n kind: 'unsupported'\n }\n}, {\n regex: /\\.vcf$/i,\n spec: {\n kind: 'single',\n adapterType: 'VcfAdapter',\n locField: 'vcfLocation'\n }\n}, {\n regex: /\\.(ld|vcor)\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'PlinkLDTabixAdapter',\n locField: 'ldLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.(ld|vcor)$/i,\n spec: {\n kind: 'single',\n adapterType: 'PlinkLDAdapter',\n locField: 'ldLocation'\n }\n}, {\n regex: /\\.bedpe(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedpeAdapter',\n locField: 'bedpeLocation'\n }\n}, {\n // STAR-Fusion writes a plain TSV, so the tool's name in the filename is the\n // only thing separating it from any other `.tsv`\n regex: [/(star-?fusion|fusion_predictions)/i, /\\.tsv(\\.gz)?$/i],\n spec: {\n kind: 'single',\n adapterType: 'StarFusionAdapter',\n locField: 'starFusionLocation'\n }\n}, {\n regex: /\\.bedmethyl\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedTabixAdapter',\n locField: 'bedGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n },\n trackType: 'MultiQuantitativeTrack'\n}, {\n regex: /\\.bed\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedTabixAdapter',\n locField: 'bedGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.bg\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedGraphTabixAdapter',\n locField: 'bedGraphGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.bg$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedGraphAdapter',\n locField: 'bedGraphLocation'\n }\n}, {\n regex: /\\.pif\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'PairwiseIndexedPAFAdapter',\n locField: 'pifGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.bed$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedAdapter',\n locField: 'bedLocation'\n }\n}, {\n regex: /\\.(bb|bigbed)$/i,\n spec: {\n kind: 'single',\n adapterType: 'BigBedAdapter',\n locField: 'bigBedLocation'\n }\n}, {\n regex: /\\.(bw|bigwig)$/i,\n spec: {\n kind: 'single',\n adapterType: 'BigWigAdapter',\n locField: 'bigWigLocation'\n }\n}, {\n // the Pan-UKBB GWAS flat-file convention. `.bed.gz` is deliberately left to\n // BedTabixAdapter — telling a GWAS BED from a generic one needs\n // column-level sniffing, not an extension\n regex: /\\.txt\\.gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'GWASAdapter',\n locField: 'bedGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.(fa|fasta|fas|fna|mfa)\\.b?gz$/i,\n spec: {\n kind: 'sidecar',\n adapterType: 'BgzipFastaAdapter',\n locField: 'fastaLocation',\n sidecars: [{\n field: 'faiLocation',\n suffix: '.fai'\n }, {\n field: 'gziLocation',\n suffix: '.gzi'\n }]\n }\n}, {\n regex: /\\.(fa|fasta|fas|fna|mfa)$/i,\n spec: {\n kind: 'sidecar',\n adapterType: 'IndexedFastaAdapter',\n locField: 'fastaLocation',\n sidecars: [{\n field: 'faiLocation',\n suffix: '.fai',\n fromIndex: true\n }]\n }\n}, {\n regex: /\\.2bit$/i,\n spec: {\n kind: 'single',\n adapterType: 'TwoBitAdapter',\n locField: 'twoBitLocation'\n }\n}, {\n regex: /\\.sizes$/i,\n spec: {\n kind: 'unsupported'\n }\n}, {\n regex: /trackData\\.jsonz?$/i,\n spec: {\n kind: 'single',\n adapterType: 'NCListAdapter',\n locField: 'rootUrlTemplate'\n }\n}, {\n regex: /^sparql$/i,\n spec: {\n kind: 'single',\n adapterType: 'SPARQLAdapter',\n locField: 'endpoint'\n }\n}, {\n regex: /\\.hic$/i,\n spec: {\n kind: 'single',\n adapterType: 'HicAdapter',\n locField: 'hicLocation'\n }\n}, {\n regex: /\\.paf(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'PAFAdapter',\n locField: 'pafLocation'\n }\n}, {\n regex: /\\.out(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'MashMapAdapter',\n locField: 'outLocation'\n }\n}, {\n regex: /\\.chain(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'ChainAdapter',\n locField: 'chainLocation'\n }\n}, {\n regex: /\\.delta(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'DeltaAdapter',\n locField: 'deltaLocation'\n }\n}, {\n regex: /\\.anchors\\.simple(\\.gz)?$/i,\n spec: {\n kind: 'anchors',\n adapterType: 'MCScanSimpleAnchorsAdapter',\n locField: 'mcscanSimpleAnchorsLocation'\n }\n}, {\n regex: /\\.anchors(\\.gz)?$/i,\n spec: {\n kind: 'anchors',\n adapterType: 'MCScanAnchorsAdapter',\n locField: 'mcscanAnchorsLocation'\n }\n}, {\n // an all-vs-all PAF looks like any `.paf`; the assembly list and the PanSN\n // mapping come from its add-track form\n spec: {\n kind: 'single',\n adapterType: 'AllVsAllPAFAdapter',\n locField: 'pafLocation'\n }\n}, {\n // likewise an all-vs-all PIF against a pairwise one\n spec: {\n kind: 'indexed',\n adapterType: 'AllVsAllIndexedPAFAdapter',\n locField: 'pifGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n spec: {\n kind: 'single',\n adapterType: 'MCScanBlocksAdapter',\n locField: 'mcscanBlocksLocation'\n }\n}, {\n spec: {\n kind: 'single',\n adapterType: 'BlastTabularAdapter',\n locField: 'blastTableLocation'\n }\n}];\nfunction matchesRegex(fileName, regex) {\n return Array.isArray(regex) ? regex.every(r => r.test(fileName)) : regex.test(fileName);\n}\n\n/**\n * The format `fileName` is, or — when `adapterHint` names an adapter type — that\n * adapter's format whatever the filename says. A hint always wins, which is what\n * lets the add-track form open a file the extension alone cannot identify.\n */\nfunction matchFormat(fileName, adapterHint) {\n return adapterHint ? formats.find(f => 'adapterType' in f.spec && f.spec.adapterType === adapterHint) : formats.find(f => f.regex && matchesRegex(fileName, f.regex));\n}\n\n/**\n * The track type to draw `adapterType` with, from its config schema's\n * `#trackType` tag. `fileName` is what distinguishes the formats that share an\n * adapter — a `.bedmethyl.gz` from a plain `.bed.gz` — so pass it when known.\n */\nfunction trackTypeForAdapter(adapterType, fileName) {\n const entry = fileName ? matchFormat(fileName) : undefined;\n return entry?.trackType && 'adapterType' in entry.spec && entry.spec.adapterType === adapterType ? entry.trackType : _trackTypes_generated_ts__WEBPACK_IMPORTED_MODULE_0__.adapterTypesToTrackTypeMap[adapterType];\n}\n\n/**\n * The index spelling a location implies: htslib writes `.csi` in place of a\n * `.bai` or a `.tbi` for a reference over 512 Mb, and on request at any size.\n */\nfunction resolveIndexType(indexName, fallback) {\n return indexName?.toUpperCase().endsWith('CSI') ? 'CSI' : fallback;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/add-track-core/src/formats.ts?\n}");
31
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formats: () => (/* binding */ formats),\n/* harmony export */ matchFormat: () => (/* binding */ matchFormat),\n/* harmony export */ resolveIndexType: () => (/* binding */ resolveIndexType),\n/* harmony export */ trackTypeForAdapter: () => (/* binding */ trackTypeForAdapter)\n/* harmony export */ });\n/* harmony import */ var _trackTypes_generated_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./trackTypes.generated.ts */ \"../../packages/add-track-core/src/trackTypes.generated.ts\");\n\n\n/**\n * A sidecar file sits next to the data file at `${location}${suffix}`, unless it\n * is the index and the caller was handed one explicitly (`fromIndex`).\n */\n\n/**\n * Every file format the \"Add track\" flow knows, in first-match order.\n *\n * One table, two consumers: `@jbrowse/core`'s `Core-guessAdapterForLocation`\n * chain and `@jbrowse/cli`'s `add-track`. ADR-077.\n *\n * An entry here does not make a build able to open the format. Core guesses an\n * entry only when its adapter type is registered, so the plugin providing the\n * adapter is still what decides, and there is no second list to keep in step.\n *\n * Order matters only where two regexes can match the same name:\n * `.anchors.simple.gz` must precede `.anchors.gz`, and the tabix entries must\n * precede their plain counterparts.\n */\nconst formats = [{\n regex: /\\.bam$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BamAdapter',\n locField: 'bamLocation',\n suffix: '.bai',\n indexType: 'BAI'\n }\n}, {\n regex: /\\.cram$/i,\n spec: {\n kind: 'sidecar',\n adapterType: 'CramAdapter',\n locField: 'cramLocation',\n sidecars: [{\n field: 'craiLocation',\n suffix: '.crai',\n fromIndex: true\n }]\n }\n}, {\n regex: /\\.sam(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'SamAdapter',\n locField: 'samLocation'\n }\n}, {\n regex: /\\.gff3?\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'Gff3TabixAdapter',\n locField: 'gffGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.gff3?$/i,\n spec: {\n kind: 'single',\n adapterType: 'Gff3Adapter',\n locField: 'gffLocation'\n }\n}, {\n regex: /\\.gtf\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'GtfTabixAdapter',\n locField: 'gtfGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.gtf$/i,\n spec: {\n kind: 'single',\n adapterType: 'GtfAdapter',\n locField: 'gtfLocation'\n }\n}, {\n regex: /\\.vcf\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'VcfTabixAdapter',\n locField: 'vcfGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.vcf\\.idx$/i,\n spec: {\n kind: 'unsupported'\n }\n}, {\n regex: /\\.vcf$/i,\n spec: {\n kind: 'single',\n adapterType: 'VcfAdapter',\n locField: 'vcfLocation'\n }\n}, {\n regex: /\\.(ld|vcor)\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'PlinkLDTabixAdapter',\n locField: 'ldLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.(ld|vcor)$/i,\n spec: {\n kind: 'single',\n adapterType: 'PlinkLDAdapter',\n locField: 'ldLocation'\n }\n}, {\n regex: /\\.bedpe(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedpeAdapter',\n locField: 'bedpeLocation'\n }\n}, {\n // STAR-Fusion writes a plain TSV, so the tool's name in the filename is the\n // only thing separating it from any other `.tsv`\n regex: [/(star-?fusion|fusion_predictions)/i, /\\.tsv(\\.gz)?$/i],\n spec: {\n kind: 'single',\n adapterType: 'StarFusionAdapter',\n locField: 'starFusionLocation'\n }\n}, {\n regex: /\\.bedmethyl\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedTabixAdapter',\n locField: 'bedGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n },\n trackType: 'MultiQuantitativeTrack'\n}, {\n regex: /\\.bed\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedTabixAdapter',\n locField: 'bedGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n // `.bedGraph` is UCSC's own spelling and what bedGraphToBigWig is pointed\n // at, so it turns up far more often than the `.bg` short form below\n regex: /\\.bedgraph\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedGraphTabixAdapter',\n locField: 'bedGraphGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.bedgraph$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedGraphAdapter',\n locField: 'bedGraphLocation'\n }\n}, {\n regex: /\\.bg\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'BedGraphTabixAdapter',\n locField: 'bedGraphGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.bg$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedGraphAdapter',\n locField: 'bedGraphLocation'\n }\n}, {\n regex: /\\.pif\\.b?gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'PairwiseIndexedPAFAdapter',\n locField: 'pifGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.bed$/i,\n spec: {\n kind: 'single',\n adapterType: 'BedAdapter',\n locField: 'bedLocation'\n }\n}, {\n regex: /\\.(bb|bigbed)$/i,\n spec: {\n kind: 'single',\n adapterType: 'BigBedAdapter',\n locField: 'bigBedLocation'\n }\n}, {\n regex: /\\.(bw|bigwig)$/i,\n spec: {\n kind: 'single',\n adapterType: 'BigWigAdapter',\n locField: 'bigWigLocation'\n }\n}, {\n // the Pan-UKBB GWAS flat-file convention. `.bed.gz` is deliberately left to\n // BedTabixAdapter — telling a GWAS BED from a generic one needs\n // column-level sniffing, not an extension\n regex: /\\.txt\\.gz$/i,\n spec: {\n kind: 'indexed',\n adapterType: 'GWASAdapter',\n locField: 'bedGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n regex: /\\.(fa|fasta|fas|fna|mfa)\\.b?gz$/i,\n spec: {\n kind: 'sidecar',\n adapterType: 'BgzipFastaAdapter',\n locField: 'fastaLocation',\n sidecars: [{\n field: 'faiLocation',\n suffix: '.fai'\n }, {\n field: 'gziLocation',\n suffix: '.gzi'\n }]\n }\n}, {\n regex: /\\.(fa|fasta|fas|fna|mfa)$/i,\n spec: {\n kind: 'sidecar',\n adapterType: 'IndexedFastaAdapter',\n locField: 'fastaLocation',\n sidecars: [{\n field: 'faiLocation',\n suffix: '.fai',\n fromIndex: true\n }]\n }\n}, {\n regex: /\\.2bit$/i,\n spec: {\n kind: 'single',\n adapterType: 'TwoBitAdapter',\n locField: 'twoBitLocation'\n }\n}, {\n regex: /\\.sizes$/i,\n spec: {\n kind: 'unsupported'\n }\n}, {\n regex: /trackData\\.jsonz?$/i,\n spec: {\n kind: 'single',\n adapterType: 'NCListAdapter',\n locField: 'rootUrlTemplate'\n }\n}, {\n regex: /^sparql$/i,\n spec: {\n kind: 'single',\n adapterType: 'SPARQLAdapter',\n locField: 'endpoint'\n }\n}, {\n regex: /\\.hic$/i,\n spec: {\n kind: 'single',\n adapterType: 'HicAdapter',\n locField: 'hicLocation'\n }\n}, {\n regex: /\\.paf(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'PAFAdapter',\n locField: 'pafLocation'\n }\n}, {\n regex: /\\.out(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'MashMapAdapter',\n locField: 'outLocation'\n }\n}, {\n regex: /\\.chain(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'ChainAdapter',\n locField: 'chainLocation'\n }\n}, {\n regex: /\\.delta(\\.gz)?$/i,\n spec: {\n kind: 'single',\n adapterType: 'DeltaAdapter',\n locField: 'deltaLocation'\n }\n}, {\n regex: /\\.anchors\\.simple(\\.gz)?$/i,\n spec: {\n kind: 'anchors',\n adapterType: 'MCScanSimpleAnchorsAdapter',\n locField: 'mcscanSimpleAnchorsLocation'\n }\n}, {\n regex: /\\.anchors(\\.gz)?$/i,\n spec: {\n kind: 'anchors',\n adapterType: 'MCScanAnchorsAdapter',\n locField: 'mcscanAnchorsLocation'\n }\n}, {\n // an all-vs-all PAF looks like any `.paf`; the assembly list and the PanSN\n // mapping come from its add-track form\n spec: {\n kind: 'single',\n adapterType: 'AllVsAllPAFAdapter',\n locField: 'pafLocation'\n }\n}, {\n // likewise an all-vs-all PIF against a pairwise one\n spec: {\n kind: 'indexed',\n adapterType: 'AllVsAllIndexedPAFAdapter',\n locField: 'pifGzLocation',\n suffix: '.tbi',\n indexType: 'TBI'\n }\n}, {\n spec: {\n kind: 'single',\n adapterType: 'MCScanBlocksAdapter',\n locField: 'mcscanBlocksLocation'\n }\n}, {\n spec: {\n kind: 'single',\n adapterType: 'BlastTabularAdapter',\n locField: 'blastTableLocation'\n }\n}];\nfunction matchesRegex(fileName, regex) {\n return Array.isArray(regex) ? regex.every(r => r.test(fileName)) : regex.test(fileName);\n}\n\n/**\n * The format `fileName` is, or — when `adapterHint` names an adapter type — that\n * adapter's format whatever the filename says. A hint always wins, which is what\n * lets the add-track form open a file the extension alone cannot identify.\n */\nfunction matchFormat(fileName, adapterHint) {\n return adapterHint ? formats.find(f => 'adapterType' in f.spec && f.spec.adapterType === adapterHint) : formats.find(f => f.regex && matchesRegex(fileName, f.regex));\n}\n\n/**\n * The track type to draw `adapterType` with, from its config schema's\n * `#trackType` tag. `fileName` is what distinguishes the formats that share an\n * adapter — a `.bedmethyl.gz` from a plain `.bed.gz` — so pass it when known.\n */\nfunction trackTypeForAdapter(adapterType, fileName) {\n const entry = fileName ? matchFormat(fileName) : undefined;\n return entry?.trackType && 'adapterType' in entry.spec && entry.spec.adapterType === adapterType ? entry.trackType : _trackTypes_generated_ts__WEBPACK_IMPORTED_MODULE_0__.adapterTypesToTrackTypeMap[adapterType];\n}\n\n/**\n * The index spelling a location implies: htslib writes `.csi` in place of a\n * `.bai` or a `.tbi` for a reference over 512 Mb, and on request at any size.\n */\nfunction resolveIndexType(indexName, fallback) {\n return indexName?.toUpperCase().endsWith('CSI') ? 'CSI' : fallback;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/add-track-core/src/formats.ts?\n}");
32
32
 
33
33
  /***/ },
34
34
 
@@ -43,6 +43,17 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
43
43
 
44
44
  /***/ },
45
45
 
46
+ /***/ "../../packages/cigar-utils/src/cigarConstants.ts"
47
+ /*!********************************************************!*\
48
+ !*** ../../packages/cigar-utils/src/cigarConstants.ts ***!
49
+ \********************************************************/
50
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
51
+
52
+ "use strict";
53
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CIGAR_D: () => (/* binding */ CIGAR_D),\n/* harmony export */ CIGAR_EQ: () => (/* binding */ CIGAR_EQ),\n/* harmony export */ CIGAR_H: () => (/* binding */ CIGAR_H),\n/* harmony export */ CIGAR_I: () => (/* binding */ CIGAR_I),\n/* harmony export */ CIGAR_INDEL_MASK: () => (/* binding */ CIGAR_INDEL_MASK),\n/* harmony export */ CIGAR_M: () => (/* binding */ CIGAR_M),\n/* harmony export */ CIGAR_M_EQ_MASK: () => (/* binding */ CIGAR_M_EQ_MASK),\n/* harmony export */ CIGAR_N: () => (/* binding */ CIGAR_N),\n/* harmony export */ CIGAR_P: () => (/* binding */ CIGAR_P),\n/* harmony export */ CIGAR_RUN: () => (/* binding */ CIGAR_RUN),\n/* harmony export */ CIGAR_S: () => (/* binding */ CIGAR_S),\n/* harmony export */ CIGAR_X: () => (/* binding */ CIGAR_X)\n/* harmony export */ });\n// CIGAR operation indices from BAM spec (used in packed Uint32Array format: len<<4|op)\nconst CIGAR_M = 0;\nconst CIGAR_I = 1;\nconst CIGAR_D = 2;\nconst CIGAR_N = 3;\nconst CIGAR_S = 4;\nconst CIGAR_H = 5;\nconst CIGAR_P = 6;\nconst CIGAR_EQ = 7;\nconst CIGAR_X = 8;\n\n// Bitmask for CIGAR operation categories (use with: (1 << op) & MASK)\n// Alignment match ops (M=0, ==7) — may contain mismatches, need MD tag\nconst CIGAR_M_EQ_MASK = 0b10000001; // (1<<0)|(1<<7) = 129\n// Indel ops (I=1, D=2, N=3) — each consumes only one axis (a gap on the other)\nconst CIGAR_INDEL_MASK = 0b00001110; // (1<<1)|(1<<2)|(1<<3) = 14\n\n// Not a BAM op: a match run whose two axes advance by different lengths, the\n// coarse tier's fold of the small indels between two kept gaps. Packed as two\n// consecutive words, `(ownLen << 4) | CIGAR_RUN` then `(mateLen << 4) |\n// CIGAR_RUN`. Only parseCoarseCigar writes it.\nconst CIGAR_RUN = 9;\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/cigar-utils/src/cigarConstants.ts?\n}");
54
+
55
+ /***/ },
56
+
46
57
  /***/ "../../packages/cigar-utils/src/cigarReorient.ts"
47
58
  /*!*******************************************************!*\
48
59
  !*** ../../packages/cigar-utils/src/cigarReorient.ts ***!
@@ -50,7 +61,18 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
50
61
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
51
62
 
52
63
  "use strict";
53
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ flipCigar: () => (/* binding */ flipCigar),\n/* harmony export */ swapIndelCigar: () => (/* binding */ swapIndelCigar)\n/* harmony export */ });\n// Reverse a CIGAR's op order and swap insertions<->deletions. Used to view an\n// alignment from the opposite (query<->target) perspective on the reverse\n// strand, where both the direction and the indel sense flip.\nfunction flipCigar(cigar) {\n const ops = [];\n let len = 0;\n for (let i = 0, l = cigar.length; i < l; i++) {\n const c = cigar[i];\n if (c >= '0' && c <= '9') {\n len = len * 10 + (c.charCodeAt(0) - 48);\n } else {\n ops.push([len, c]);\n len = 0;\n }\n }\n let result = '';\n for (let i = ops.length - 1; i >= 0; i--) {\n const [l, op] = ops[i];\n result += l;\n result += op === 'D' ? 'I' : op === 'I' ? 'D' : op;\n }\n return result;\n}\n\n// Swap insertions<->deletions in place, leaving op order untouched. This is the\n// +-strand query<->target perspective flip, where only the indel sense reverses.\nfunction swapIndelCigar(cigar) {\n return cigar.replaceAll(/[DI]/g, op => op === 'D' ? 'I' : 'D');\n}\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/cigar-utils/src/cigarReorient.ts?\n}");
64
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ flipCigar: () => (/* binding */ flipCigar),\n/* harmony export */ swapIndelCigar: () => (/* binding */ swapIndelCigar)\n/* harmony export */ });\n// Both re-orientations keep every byte of the CIGAR and change only which\n// letter an indel wears (and, for the flip, the op order), so each is written\n// straight into a byte buffer the size of its input rather than a string built\n// op by op: 2-3x faster on a multi-kb PAF CIGAR, which make-pif does twice a\n// row and orientAlignment does per fetched row.\nfunction swapIndelByte(code) {\n return code === 68 ? 73 : code === 73 ? 68 : code;\n}\n\n// Reverse a CIGAR's op order and swap insertions<->deletions. Used to view an\n// alignment from the opposite (query<->target) perspective on the reverse\n// strand, where both the direction and the indel sense flip.\nfunction flipCigar(cigar) {\n const src = new TextEncoder().encode(cigar);\n const n = src.length;\n const out = new Uint8Array(n);\n let pos = n;\n let start = 0;\n for (let i = 0; i < n; i++) {\n const code = src[i];\n if (code < 48 || code > 57) {\n pos -= i + 1 - start;\n for (let k = start, p = pos; k < i; k++, p++) {\n out[p] = src[k];\n }\n out[pos + i - start] = swapIndelByte(code);\n start = i + 1;\n }\n }\n return new TextDecoder().decode(out.subarray(pos));\n}\n\n// Swap insertions<->deletions in place, leaving op order untouched. This is the\n// +-strand query<->target perspective flip, where only the indel sense reverses.\nfunction swapIndelCigar(cigar) {\n const bytes = new TextEncoder().encode(cigar);\n for (let i = 0, n = bytes.length; i < n; i++) {\n bytes[i] = swapIndelByte(bytes[i]);\n }\n return new TextDecoder().decode(bytes);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/cigar-utils/src/cigarReorient.ts?\n}");
65
+
66
+ /***/ },
67
+
68
+ /***/ "../../packages/cigar-utils/src/coarseCigar.ts"
69
+ /*!*****************************************************!*\
70
+ !*** ../../packages/cigar-utils/src/coarseCigar.ts ***!
71
+ \*****************************************************/
72
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
73
+
74
+ "use strict";
75
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ coarseCigarOwnAxis: () => (/* binding */ coarseCigarOwnAxis),\n/* harmony export */ coarsenCigar: () => (/* binding */ coarsenCigar),\n/* harmony export */ flipCoarseCigar: () => (/* binding */ flipCoarseCigar),\n/* harmony export */ parseCoarseCigar: () => (/* binding */ parseCoarseCigar),\n/* harmony export */ swapCoarseCigar: () => (/* binding */ swapCoarseCigar)\n/* harmony export */ });\n/* harmony import */ var _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cigarConstants.ts */ \"../../packages/cigar-utils/src/cigarConstants.ts\");\n\n/**\n * #api\n * Fold a CIGAR into a coarse CIGAR whose straight lines stay within `gap` of\n * the alignment's own path. An indel longer than half the gap keeps its letter\n * and length (D/N/I); a shorter one is absorbed into the match run around it,\n * and a run whose two axes advanced by different amounts is written\n * `<own>:<mate>M`, a square run `<n>M`. `=`/`X` count as M. `ownLen`/`mateLen`\n * are the totals each axis consumed, for the caller to check against the row's\n * coordinate columns.\n *\n * The bound: a run is closed before a folded indel would push its running\n * skew (own minus mate) past half the gap, and no folded indel is longer than\n * that, so inside a run the skew never exceeds half the gap and the line\n * between the run's corners is never more than the gap off the path. That is\n * what lets a reader interpolate within a run, and it costs a new run only\n * where the two genomes' small indels are lopsided.\n */\nfunction coarsenCigar(cigar, gap) {\n const skewBound = gap / 2;\n let ops = '';\n let ownLen = 0;\n let mateLen = 0;\n let gapCount = 0;\n let opCount = 0;\n let runOwn = 0;\n let runMate = 0;\n // a run with nothing on one side is the indel it amounts to, and is written\n // as one, so a reader never meets a zero-sided run\n const flushRun = () => {\n if (runOwn > 0 || runMate > 0) {\n ops += runOwn === runMate ? `${runOwn}M` : runOwn === 0 ? `${runMate}I` : runMate === 0 ? `${runOwn}D` : `${runOwn}:${runMate}M`;\n opCount++;\n runOwn = 0;\n runMate = 0;\n }\n };\n const keep = (len, op) => {\n flushRun();\n ops += `${len}${op}`;\n gapCount++;\n opCount++;\n };\n const fold = (own, mate) => {\n if (Math.abs(runOwn + own - runMate - mate) > skewBound) {\n flushRun();\n }\n runOwn += own;\n runMate += mate;\n };\n let len = 0;\n for (let i = 0, l = cigar.length; i < l; i++) {\n const code = cigar.charCodeAt(i);\n if (code >= 48 && code <= 57) {\n len = len * 10 + code - 48;\n } else {\n const op = cigar[i];\n if (op === 'M' || op === '=' || op === 'X') {\n runOwn += len;\n runMate += len;\n ownLen += len;\n mateLen += len;\n } else if (op === 'D' || op === 'N') {\n ownLen += len;\n if (len > skewBound) {\n keep(len, op);\n } else {\n fold(len, 0);\n }\n } else if (op === 'I') {\n mateLen += len;\n if (len > skewBound) {\n keep(len, op);\n } else {\n fold(0, len);\n }\n }\n len = 0;\n }\n }\n flushRun();\n return {\n ops,\n ownLen,\n mateLen,\n gapCount,\n opCount\n };\n}\nfunction parseCoarseOps(s) {\n const out = [];\n let len = 0;\n let ownBeforeColon;\n for (let i = 0, l = s.length; i < l; i++) {\n const code = s.charCodeAt(i);\n if (code >= 48 && code <= 57) {\n len = len * 10 + code - 48;\n } else if (code === 58) {\n ownBeforeColon = len;\n len = 0;\n } else {\n // the alphabet is M I D N plus the run; a reader also takes =/X as M and\n // steps over clips and padding, which a writer never emits\n const op = s[i];\n if (op === 'M' || op === '=' || op === 'X') {\n out.push({\n own: ownBeforeColon === undefined ? len : ownBeforeColon,\n mate: len,\n op: 'M'\n });\n } else if (op === 'I') {\n out.push({\n own: 0,\n mate: len,\n op\n });\n } else if (op === 'D' || op === 'N') {\n out.push({\n own: len,\n mate: 0,\n op\n });\n }\n ownBeforeColon = undefined;\n len = 0;\n }\n }\n return out;\n}\nfunction serializeCoarseOps(ops) {\n let s = '';\n for (const {\n own,\n mate,\n op\n } of ops) {\n s += op === 'M' ? own === mate ? `${own}M` : `${own}:${mate}M` : `${op === 'I' ? mate : own}${op}`;\n }\n return s;\n}\n\n// N keeps its axis as well as its letter, matching `swapIndelCigar`, which\n// swaps only D<->I\nfunction swapAxes({\n own,\n mate,\n op\n}) {\n return op === 'N' ? {\n own,\n mate,\n op\n } : {\n own: mate,\n mate: own,\n op: op === 'D' ? 'I' : op === 'I' ? 'D' : op\n };\n}\n\n/**\n * #api\n * The coarse CIGAR seen from the other axis on the plus strand: the two lengths\n * of every run trade places and D<->I swap, op order untouched. The twin of\n * `swapIndelCigar`.\n */\nfunction swapCoarseCigar(s) {\n return serializeCoarseOps(parseCoarseOps(s).map(swapAxes));\n}\n\n/**\n * #api\n * The coarse CIGAR seen from the other axis on the minus strand: swapped as\n * `swapCoarseCigar` does, and in reverse op order. The twin of `flipCigar`.\n */\nfunction flipCoarseCigar(s) {\n return serializeCoarseOps(parseCoarseOps(s).map(swapAxes).reverse());\n}\n\n/**\n * #api\n * The coarse CIGAR as a plain CIGAR over the row's own axis, for a walk that\n * places mismatches by reference position: a run keeps only its own length, a\n * run with no own length is the insertion it amounts to, and one with no mate\n * length the deletion. Kept indels are exact, so they land where the fine\n * tier's would.\n */\nfunction coarseCigarOwnAxis(s) {\n let out = '';\n for (const {\n own,\n mate,\n op\n } of parseCoarseOps(s)) {\n out += op === 'M' ? own === 0 ? `${mate}I` : mate === 0 ? `${own}D` : `${own}M` : `${op === 'I' ? mate : own}${op}`;\n }\n return out;\n}\n\n// The packed form keeps 28 bits of length, so a longer op is written as several\n// words that sum to it. A run is split with both axes in proportion.\nconst MAX_PACKED_LEN = 2 ** 28 - 1;\nfunction pushPacked(out, len, code) {\n for (let rest = len; rest > 0; rest -= MAX_PACKED_LEN) {\n out.push((Math.min(rest, MAX_PACKED_LEN) << 4 | code) >>> 0);\n }\n}\nfunction pushRun(out, own, mate) {\n if (own === mate) {\n pushPacked(out, own, _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__.CIGAR_M);\n } else {\n const chunks = Math.ceil(Math.max(own, mate) / MAX_PACKED_LEN);\n for (let i = 0; i < chunks; i++) {\n const o = Math.floor(own * (i + 1) / chunks) - Math.floor(own * i / chunks);\n const m = Math.floor(mate * (i + 1) / chunks) - Math.floor(mate * i / chunks);\n out.push((o << 4 | _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__.CIGAR_RUN) >>> 0, (m << 4 | _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__.CIGAR_RUN) >>> 0);\n }\n }\n}\n\n/**\n * #api\n * Parse a coarse CIGAR into the packed `(len << 4) | op` form\n * `visitCigarRenderedSegments` walks. A square run packs as one `CIGAR_M`\n * word; an unequal run as a `CIGAR_RUN` word pair, own axis first.\n */\nfunction parseCoarseCigar(s) {\n const out = [];\n for (const {\n own,\n mate,\n op\n } of parseCoarseOps(s)) {\n if (op === 'M') {\n pushRun(out, own, mate);\n } else if (op === 'I') {\n pushPacked(out, mate, _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__.CIGAR_I);\n } else {\n pushPacked(out, own, op === 'N' ? _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__.CIGAR_N : _cigarConstants_ts__WEBPACK_IMPORTED_MODULE_0__.CIGAR_D);\n }\n }\n return Uint32Array.from(out);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/cigar-utils/src/coarseCigar.ts?\n}");
54
76
 
55
77
  /***/ },
56
78
 
@@ -87,17 +109,6 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
87
109
 
88
110
  /***/ },
89
111
 
90
- /***/ "../../packages/cigar-utils/src/pafIdentity.ts"
91
- /*!*****************************************************!*\
92
- !*** ../../packages/cigar-utils/src/pafIdentity.ts ***!
93
- \*****************************************************/
94
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
95
-
96
- "use strict";
97
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ pafIdentity: () => (/* binding */ pafIdentity)\n/* harmony export */ });\n/**\n * Identity in [0,1] for one PAF row, from whichever of its tags/columns carries\n * it. Prefers the `de:f:` tag (minimap2 gap-compressed divergence) since it is\n * computed from the actual CIGAR — the same quantity rustybam's `rb stats --paf`\n * writes and SVbyEye computes per-bin. Falls back to odgi untangle's `id:f:` tag\n * (a percentage or a fraction), then to residue matches over block length.\n *\n * Lives here, in a package with no framework deps, because two independent\n * pieces of code must agree on it to the digit: the synteny adapters read it at\n * render time, and `jbrowse make-pif` writes the coarse LOD tier's `de:f:` as\n * `1 - pafIdentity(row)`. If the two chains diverge on any rung, identity\n * coloring jumps at the zoom where the view switches tiers — which is exactly\n * what happened when make-pif's copy skipped the `id:f:` rung.\n */\nfunction pafIdentity(row) {\n if (row.de !== undefined) {\n const d = +row.de;\n if (Number.isFinite(d) && d >= 0 && d <= 1) {\n return 1 - d;\n }\n }\n if (row.id !== undefined) {\n const v = +row.id;\n if (Number.isFinite(v)) {\n return v > 1 ? v / 100 : v;\n }\n }\n const matches = +(row.numMatches ?? 0);\n const blockLen = +(row.blockLen ?? 0);\n return blockLen > 0 ? matches / blockLen : 0;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/../../packages/cigar-utils/src/pafIdentity.ts?\n}");
98
-
99
- /***/ },
100
-
101
112
  /***/ "../../packages/text-indexing-core/src/indexFiles.ts"
102
113
  /*!***********************************************************!*\
103
114
  !*** ../../packages/text-indexing-core/src/indexFiles.ts ***!
@@ -248,7 +259,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
248
259
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
249
260
 
250
261
  "use strict";
251
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fileNameOf: () => (/* binding */ fileNameOf),\n/* harmony export */ guessTrack: () => (/* binding */ guessTrack),\n/* harmony export */ guessTrackType: () => (/* binding */ guessTrackType),\n/* harmony export */ makeLocationProtocol: () => (/* binding */ makeLocationProtocol),\n/* harmony export */ siblingSidecar: () => (/* binding */ siblingSidecar),\n/* harmony export */ syntenyAdapterTypes: () => (/* binding */ syntenyAdapterTypes)\n/* harmony export */ });\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jbrowse/add-track-core */ \"../../packages/add-track-core/src/formats.ts\");\n/* harmony import */ var _jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jbrowse/add-track-core */ \"../../packages/add-track-core/src/trackTypes.generated.ts\");\n\n\n\n// the specs that carry a location field, keyed by adapter type, so an explicit\n// --adapterType can be resolved back to its file-layout spec\n\nfunction hasLocField(spec) {\n return 'locField' in spec;\n}\nconst adapterTypeToSpec = {};\nfor (const {\n spec\n} of _jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.formats) {\n if (hasLocField(spec) && !adapterTypeToSpec[spec.adapterType]) {\n adapterTypeToSpec[spec.adapterType] = spec;\n }\n}\n\n// What else the sidecar with this suffix can be named. `.csi` is htslib's\n// alternative for a BAI or a TBI — required for a reference over 512 Mb, and\n// written on request at any size. `stripped` is the form Picard and GATK write:\n// `reads.bai` beside `reads.bam`, where samtools writes `reads.bam.bai`.\n//\n// Per-suffix because the alternatives are: a `.crai` has no CSI form, and\n// stripping the extension off `calls.vcf.gz` would name `calls.vcf.tbi`, which\n// nothing writes. A `.fai`/`.gzi` has neither and so is absent here.\n//\n// This is `indexCandidateNames` in `@jbrowse/core/util/indexCandidates`, which\n// the add-track widget and jbrowse-img share and this CLI cannot import — it\n// carries no `@jbrowse/core` dependency, so `npm i -g @jbrowse/cli` stays a CLI\n// rather than a copy of the app. Change one, change the other.\nconst ALTERNATE_SPELLINGS = {\n '.bai': {\n csi: true,\n stripped: true\n },\n '.crai': {\n stripped: true\n },\n '.tbi': {\n csi: true\n }\n};\n\n/**\n * The sidecar actually sitting beside `location`, or the conventional name when\n * none of the spellings is there — so a missing index still reports the file\n * that was expected, and `--load` still names it.\n *\n * Probed with `existsSync`, which is false for every candidate of a URL and so\n * leaves a remote track with exactly the conventional guess it had before this\n * existed. A remote `.csi` still wants `--indexFile`.\n *\n * The guard on the stripped spelling is load-bearing: `replace` hands back the\n * subject unchanged when the pattern does not match, so `--adapterType\n * BamAdapter` on a file named with no extension at all would offer the data\n * file as its own index — and that file certainly exists.\n */\nfunction siblingSidecar(location, suffix) {\n const {\n csi,\n stripped\n } = ALTERNATE_SPELLINGS[suffix] ?? {};\n const strippedName = location.replace(/\\.[^./\\\\]+$/, suffix);\n const candidates = [`${location}${suffix}`, ...(csi ? [`${location}.csi`] : []), ...(stripped && strippedName !== location ? [strippedName] : [])];\n return candidates.find(c => node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(c)) ?? candidates[0];\n}\n// builds the adapter object and the list of source files for a spec in one\n// place, so the config it writes and the files add-track copies can never drift\nfunction buildFromSpec(spec, {\n location,\n index,\n bed1,\n bed2,\n makeLocation\n}) {\n switch (spec.kind) {\n case 'single':\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location)\n },\n files: [location]\n };\n case 'indexed':\n {\n const idx = index || siblingSidecar(location, spec.suffix);\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location),\n index: {\n location: makeLocation(idx),\n // the type follows the file that was CHOSEN, not the one the user\n // typed, so a detected `.csi` is opened as one\n indexType: (0,_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.resolveIndexType)(idx, spec.indexType)\n }\n },\n files: [location, idx]\n };\n }\n case 'sidecar':\n {\n const sidecars = spec.sidecars.map(s => ({\n field: s.field,\n path: s.fromIndex && index ? index : siblingSidecar(location, s.suffix)\n }));\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location),\n ...Object.fromEntries(sidecars.map(s => [s.field, makeLocation(s.path)]))\n },\n files: [location, ...sidecars.map(s => s.path)]\n };\n }\n case 'anchors':\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location),\n bed1Location: bed1 ? makeLocation(bed1) : undefined,\n bed2Location: bed2 ? makeLocation(bed2) : undefined\n },\n files: [location, bed1, bed2]\n };\n case 'unsupported':\n return {\n adapter: {\n type: 'UNSUPPORTED'\n },\n files: []\n };\n }\n}\nfunction makeLocationProtocol(protocol) {\n return location => {\n if (protocol === 'uri') {\n return {\n uri: location,\n locationType: 'UriLocation'\n };\n }\n if (protocol === 'localPath') {\n return {\n localPath: location,\n locationType: 'LocalPathLocation'\n };\n }\n throw new Error(`invalid protocol ${protocol}`);\n };\n}\n\n/**\n * The bare filename the format table matches against — the same thing\n * `@jbrowse/core`'s `getFileName` hands the guesser chain, so a path and a URL\n * with a presigned query string both reduce to what the regexes expect.\n */\nfunction fileNameOf(location) {\n return location.replaceAll('\\\\', '/').split('/').at(-1)?.split(/[?#]/)[0] ?? '';\n}\n\n// resolves the file-layout spec that both the adapter config and the copied\n// file set derive from, honoring an explicit --adapterType. `typeOverride` is\n// the label to stamp on the adapter when the extension's layout is reused under\n// a different adapter type.\nfunction resolveSpec(location, adapterType) {\n const spec = (0,_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.matchFormat)(fileNameOf(location))?.spec;\n if (adapterType) {\n const known = adapterTypeToSpec[adapterType];\n if (known) {\n // explicit --adapterType resolves back to its known file layout\n return {\n spec: known\n };\n } else if (spec) {\n // unknown adapter type on a recognized extension: reuse that extension's\n // file layout (location field + any sidecar/index files) under the new\n // type name, so e.g. --adapterType MyPAFAdapter on a .paf keeps its\n // pafLocation instead of dropping the file. Override with --config if the\n // custom adapter uses a different field.\n return {\n spec,\n typeOverride: adapterType\n };\n } else {\n // custom adapter type on an unrecognized extension: no layout to reuse\n return {\n typeOverride: adapterType\n };\n }\n } else {\n return {\n spec\n };\n }\n}\n\n// derives the track adapter and the raw source files together from one spec, so\n// the config written and the files add-track copies can never drift. mapLocation\n// turns a raw source path into the location the adapter stores (relative path +\n// protocol wrapper); the returned files stay raw for the copy step.\nfunction guessTrack({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n mapLocation\n}) {\n const {\n spec,\n typeOverride\n } = resolveSpec(location, adapterType);\n if (spec) {\n const {\n adapter,\n files\n } = buildFromSpec(spec, {\n location,\n index,\n bed1,\n bed2,\n makeLocation: mapLocation\n });\n return {\n adapter: typeOverride ? {\n ...adapter,\n type: typeOverride\n } : adapter,\n files\n };\n }\n return {\n adapter: {\n type: typeOverride ?? 'UNKNOWN'\n },\n files: []\n };\n}\nfunction guessTrackType(adapterType, location) {\n return (0,_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.trackTypeForAdapter)(adapterType, location && fileNameOf(location)) || 'FeatureTrack';\n}\n\n// the synteny adapters are exactly those mapping to a SyntenyTrack, so derive\n// the set instead of maintaining a second hand-written list that can drift\nconst syntenyAdapterTypes = new Set(Object.entries(_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_2__.adapterTypesToTrackTypeMap).filter(([, trackType]) => trackType === 'SyntenyTrack').map(([adapterType]) => adapterType));\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/add-track-utils/adapter-utils.ts?\n}");
262
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fileNameOf: () => (/* binding */ fileNameOf),\n/* harmony export */ guessTrack: () => (/* binding */ guessTrack),\n/* harmony export */ guessTrackType: () => (/* binding */ guessTrackType),\n/* harmony export */ makeLocationProtocol: () => (/* binding */ makeLocationProtocol),\n/* harmony export */ siblingSidecar: () => (/* binding */ siblingSidecar),\n/* harmony export */ syntenyAdapterTypes: () => (/* binding */ syntenyAdapterTypes),\n/* harmony export */ withDensityAdapter: () => (/* binding */ withDensityAdapter)\n/* harmony export */ });\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jbrowse/add-track-core */ \"../../packages/add-track-core/src/formats.ts\");\n/* harmony import */ var _jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jbrowse/add-track-core */ \"../../packages/add-track-core/src/trackTypes.generated.ts\");\n/* harmony import */ var _types_common_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../types/common.ts */ \"./src/types/common.ts\");\n/* harmony import */ var _shared_density_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/density.ts */ \"./src/commands/shared/density.ts\");\n\n\n\n\n\n// the specs that carry a location field, keyed by adapter type, so an explicit\n// --adapterType can be resolved back to its file-layout spec\n\nfunction hasLocField(spec) {\n return 'locField' in spec;\n}\nconst adapterTypeToSpec = {};\nfor (const {\n spec\n} of _jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.formats) {\n if (hasLocField(spec) && !adapterTypeToSpec[spec.adapterType]) {\n adapterTypeToSpec[spec.adapterType] = spec;\n }\n}\n\n// What else the sidecar with this suffix can be named. `.csi` is htslib's\n// alternative for a BAI or a TBI — required for a reference over 512 Mb, and\n// written on request at any size. `stripped` is the form Picard and GATK write:\n// `reads.bai` beside `reads.bam`, where samtools writes `reads.bam.bai`.\n//\n// Per-suffix because the alternatives are: a `.crai` has no CSI form, and\n// stripping the extension off `calls.vcf.gz` would name `calls.vcf.tbi`, which\n// nothing writes. A `.fai`/`.gzi` has neither and so is absent here.\n//\n// This is `indexCandidateNames` in `@jbrowse/core/util/indexCandidates`, which\n// the add-track widget and jbrowse-img share and this CLI cannot import — it\n// carries no `@jbrowse/core` dependency, so `npm i -g @jbrowse/cli` stays a CLI\n// rather than a copy of the app. Change one, change the other.\nconst ALTERNATE_SPELLINGS = {\n '.bai': {\n csi: true,\n stripped: true\n },\n '.crai': {\n stripped: true\n },\n '.tbi': {\n csi: true\n }\n};\n\n/**\n * The sidecar actually sitting beside `location`, or the conventional name when\n * none of the spellings is there — so a missing index still reports the file\n * that was expected, and `--load` still names it.\n *\n * Probed with `existsSync`, which is false for every candidate of a URL and so\n * leaves a remote track with exactly the conventional guess it had before this\n * existed. A remote `.csi` still wants `--indexFile`.\n *\n * The guard on the stripped spelling is load-bearing: `replace` hands back the\n * subject unchanged when the pattern does not match, so `--adapterType\n * BamAdapter` on a file named with no extension at all would offer the data\n * file as its own index — and that file certainly exists.\n */\nfunction siblingSidecar(location, suffix) {\n const {\n csi,\n stripped\n } = ALTERNATE_SPELLINGS[suffix] ?? {};\n const strippedName = location.replace(/\\.[^./\\\\]+$/, suffix);\n const candidates = [`${location}${suffix}`, ...(csi ? [`${location}.csi`] : []), ...(stripped && strippedName !== location ? [strippedName] : [])];\n return candidates.find(c => node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(c)) ?? candidates[0];\n}\n\n// The feature adapters whose schema spreads\n// `densityAdapterConfigSchemaFields`, so a `densityAdapter` written onto one\n// resolves to a slot rather than being dropped. Change one, change the other.\nconst densityAdapterTypes = new Set(['BamAdapter', 'CramAdapter', 'HtsgetBamAdapter', 'Gff3TabixAdapter', 'GtfTabixAdapter', 'BedTabixAdapter', 'BigBedAdapter', 'VcfTabixAdapter', 'SplitVcfTabixAdapter']);\n\n/**\n * The adapter with its density sidecar attached, and the local file to load\n * beside the config when there is one.\n *\n * An explicit `--density` is taken as given, since a URL cannot be probed;\n * otherwise the conventional `<file>.density.bw` counts only when it is\n * actually there, the way `siblingSidecar` probes an index.\n */\nfunction withDensityAdapter({\n adapter,\n location,\n density,\n makeLocation\n}) {\n const supported = densityAdapterTypes.has(adapter.type);\n if (density !== undefined && !supported) {\n throw new Error(`--density has no slot on ${adapter.type}. The adapters carrying a density sidecar are: ${[...densityAdapterTypes].join(', ')}`);\n }\n const probed = location !== undefined && node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync((0,_shared_density_ts__WEBPACK_IMPORTED_MODULE_4__.densitySidecarPath)(location)) ? (0,_shared_density_ts__WEBPACK_IMPORTED_MODULE_4__.densitySidecarPath)(location) : undefined;\n if (probed !== undefined && !supported) {\n console.warn(`Warning: ${probed} sits beside the track file but ${adapter.type} has no densityAdapter slot, so it is not attached. The adapters carrying one are indexed: bgzip and tabix the file, then add it.`);\n }\n const file = density === undefined ? supported ? probed : undefined : density;\n return file === undefined ? {\n adapter\n } : {\n adapter: {\n ...adapter,\n densityAdapter: {\n type: 'BigWigAdapter',\n bigWigLocation: makeLocation(file)\n }\n },\n file: (0,_types_common_ts__WEBPACK_IMPORTED_MODULE_3__.isURL)(file) ? undefined : file\n };\n}\n// builds the adapter object and the list of source files for a spec in one\n// place, so the config it writes and the files add-track copies can never drift\nfunction buildFromSpec(spec, {\n location,\n index,\n bed1,\n bed2,\n makeLocation\n}) {\n switch (spec.kind) {\n case 'single':\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location)\n },\n files: [location]\n };\n case 'indexed':\n {\n const idx = index || siblingSidecar(location, spec.suffix);\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location),\n index: {\n location: makeLocation(idx),\n // the type follows the file that was CHOSEN, not the one the user\n // typed, so a detected `.csi` is opened as one\n indexType: (0,_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.resolveIndexType)(idx, spec.indexType)\n }\n },\n files: [location, idx]\n };\n }\n case 'sidecar':\n {\n const sidecars = spec.sidecars.map(s => ({\n field: s.field,\n path: s.fromIndex && index ? index : siblingSidecar(location, s.suffix)\n }));\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location),\n ...Object.fromEntries(sidecars.map(s => [s.field, makeLocation(s.path)]))\n },\n files: [location, ...sidecars.map(s => s.path)]\n };\n }\n case 'anchors':\n return {\n adapter: {\n type: spec.adapterType,\n [spec.locField]: makeLocation(location),\n bed1Location: bed1 ? makeLocation(bed1) : undefined,\n bed2Location: bed2 ? makeLocation(bed2) : undefined\n },\n files: [location, bed1, bed2]\n };\n case 'unsupported':\n return {\n adapter: {\n type: 'UNSUPPORTED'\n },\n files: []\n };\n }\n}\nfunction makeLocationProtocol(protocol) {\n return location => {\n if (protocol === 'uri') {\n return {\n uri: location,\n locationType: 'UriLocation'\n };\n }\n if (protocol === 'localPath') {\n return {\n localPath: location,\n locationType: 'LocalPathLocation'\n };\n }\n throw new Error(`invalid protocol ${protocol}`);\n };\n}\n\n/**\n * The bare filename the format table matches against — the same thing\n * `@jbrowse/core`'s `getFileName` hands the guesser chain, so a path and a URL\n * with a presigned query string both reduce to what the regexes expect.\n */\nfunction fileNameOf(location) {\n return location.replaceAll('\\\\', '/').split('/').at(-1)?.split(/[?#]/)[0] ?? '';\n}\n\n// resolves the file-layout spec that both the adapter config and the copied\n// file set derive from, honoring an explicit --adapterType. `typeOverride` is\n// the label to stamp on the adapter when the extension's layout is reused under\n// a different adapter type.\nfunction resolveSpec(location, adapterType) {\n const spec = (0,_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.matchFormat)(fileNameOf(location))?.spec;\n if (adapterType) {\n const known = adapterTypeToSpec[adapterType];\n if (known) {\n // explicit --adapterType resolves back to its known file layout\n return {\n spec: known\n };\n } else if (spec) {\n // unknown adapter type on a recognized extension: reuse that extension's\n // file layout (location field + any sidecar/index files) under the new\n // type name, so e.g. --adapterType MyPAFAdapter on a .paf keeps its\n // pafLocation instead of dropping the file. Override with --config if the\n // custom adapter uses a different field.\n return {\n spec,\n typeOverride: adapterType\n };\n } else {\n // custom adapter type on an unrecognized extension: no layout to reuse\n return {\n typeOverride: adapterType\n };\n }\n } else {\n return {\n spec\n };\n }\n}\n\n// derives the track adapter and the raw source files together from one spec, so\n// the config written and the files add-track copies can never drift. mapLocation\n// turns a raw source path into the location the adapter stores (relative path +\n// protocol wrapper); the returned files stay raw for the copy step.\nfunction guessTrack({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n mapLocation\n}) {\n const {\n spec,\n typeOverride\n } = resolveSpec(location, adapterType);\n if (spec) {\n const {\n adapter,\n files\n } = buildFromSpec(spec, {\n location,\n index,\n bed1,\n bed2,\n makeLocation: mapLocation\n });\n return {\n adapter: typeOverride ? {\n ...adapter,\n type: typeOverride\n } : adapter,\n files\n };\n }\n return {\n adapter: {\n type: typeOverride ?? 'UNKNOWN'\n },\n files: []\n };\n}\nfunction guessTrackType(adapterType, location) {\n return (0,_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_1__.trackTypeForAdapter)(adapterType, location && fileNameOf(location)) || 'FeatureTrack';\n}\n\n// the synteny adapters are exactly those mapping to a SyntenyTrack, so derive\n// the set instead of maintaining a second hand-written list that can drift\nconst syntenyAdapterTypes = new Set(Object.entries(_jbrowse_add_track_core__WEBPACK_IMPORTED_MODULE_2__.adapterTypesToTrackTypeMap).filter(([, trackType]) => trackType === 'SyntenyTrack').map(([adapterType]) => adapterType));\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/add-track-utils/adapter-utils.ts?\n}");
252
263
 
253
264
  /***/ },
254
265
 
@@ -303,7 +314,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
303
314
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
304
315
 
305
316
  "use strict";
306
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add-track-utils/adapter-utils.ts */ \"./src/commands/add-track-utils/adapter-utils.ts\");\n/* harmony import */ var _add_track_utils_file_operations_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./add-track-utils/file-operations.ts */ \"./src/commands/add-track-utils/file-operations.ts\");\n/* harmony import */ var _add_track_utils_multiwig_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./add-track-utils/multiwig.ts */ \"./src/commands/add-track-utils/multiwig.ts\");\n/* harmony import */ var _add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./add-track-utils/track-config.ts */ \"./src/commands/add-track-utils/track-config.ts\");\n/* harmony import */ var _add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./add-track-utils/validators.ts */ \"./src/commands/add-track-utils/validators.ts\");\n/* harmony import */ var _shared_config_operations_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./shared/config-operations.ts */ \"./src/commands/shared/config-operations.ts\");\n\n\n\n\n\n\n\n\n\nasync function run(args) {\n const options = {\n help: {\n type: 'boolean',\n short: 'h'\n },\n trackType: {\n type: 'string',\n short: 't',\n description: 'Type of track, by default inferred from track file'\n },\n adapterType: {\n type: 'string',\n description: 'Adapter type, by default inferred from track file'\n },\n name: {\n type: 'string',\n short: 'n',\n description: 'Name of the track. Will be defaulted to the trackId if none specified'\n },\n indexFile: {\n type: 'string',\n description: 'Optional index file for the track'\n },\n description: {\n type: 'string',\n short: 'd',\n description: 'Optional description of the track'\n },\n assemblyNames: {\n type: 'string',\n short: 'a',\n description: 'Assembly name or names for track as comma separated string. For pairwise synteny tracks the order is query,target (reverse of minimap2/nucmer argument order); for all-vs-all adapters (AllVsAllPAFAdapter/AllVsAllIndexedPAFAdapter) list every assembly the file covers, in any order'\n },\n category: {\n type: 'string',\n description: 'Optional comma separated string of categories to group tracks'\n },\n config: {\n type: 'string',\n description: 'Any extra config settings to add to a track'\n },\n color: {\n type: 'string',\n description: 'Track color: a plain CSS color or a jexl callback. Merged into displayDefaults'\n },\n height: {\n type: 'string',\n description: 'Track display height in pixels. Merged into displayDefaults'\n },\n displayDefaults: {\n type: 'string',\n description: 'Inline JSON merged into the track displayDefaults (labels, mouseover, jexlFilters, etc.)'\n },\n multiwig: {\n type: 'string',\n description: 'Build a MultiQuantitativeTrack from several BigWigs (in place of the positional track arg): a comma-separated list of BigWig files/URLs, or a .json file holding an array of BigWig locations or subadapter objects, each with its own name/color'\n },\n target: {\n type: 'string',\n description: 'Path to config file in JB2 installation to write out to'\n },\n out: {\n type: 'string',\n description: 'Synonym for target'\n },\n subDir: {\n type: 'string',\n description: 'When using --load a file, output to a subdirectory of the target dir'\n },\n trackId: {\n type: 'string',\n description: 'trackId for the track, by default inferred from filename'\n },\n load: {\n type: 'string',\n short: 'l',\n description: 'How to manage the track file relative to config.json. Required for local files, omit for URLs',\n choices: ['copy', 'symlink', 'move', 'inPlace']\n },\n force: {\n type: 'boolean',\n short: 'f',\n description: 'Overwrite existing track and any existing files'\n },\n protocol: {\n type: 'string',\n description: 'Force protocol to a specific value'\n },\n bed1: {\n type: 'string',\n description: 'Used only for mcscan anchors/simpleAnchors types'\n },\n bed2: {\n type: 'string',\n description: 'Used only for mcscan anchors/simpleAnchors types'\n }\n };\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_1__.parseArgs)({\n args,\n options,\n allowPositionals: true\n });\n const description = 'Add a track to a JBrowse 2 configuration';\n const notes = '--load controls how the data file is placed relative to config.json: ' + 'copy, move, or symlink it into the install directory, or inPlace to ' + 'reference a pre-staged local file where it already sits. Omit --load ' + 'entirely for URLs. For a local file the matching index is whichever ' + 'conventional spelling is actually beside it — <file>.bai/.crai/.tbi, a ' + '<file>.csi, or the reads.bai form Picard writes beside reads.bam. A URL ' + 'cannot be checked, so it gets <file>.bai/.tbi; pass --indexFile for ' + 'anything else.\\n\\n' + '--config takes inline JSON (not a file path) that is merged into the ' + 'generated track config, so you can set fields the dedicated flags do not ' + 'cover, e.g. --config \\'{\"metadata\":{\"skipTextIndex\":true}}\\' to exclude ' + 'the track from jbrowse text-index.\\n\\n' + '--color and --height set the two most common appearance settings without ' + 'writing JSON. Wrap the value in single quotes and use double quotes inside ' + 'a jexl callback so nothing needs escaping, e.g. ' + '--color \\'jexl:feature.strand==1?\"blue\":\"red\"\\'. --displayDefaults takes ' + 'inline JSON for any other appearance setting (labels, mouseover, ' + 'jexlFilters).\\n\\n' + '--multiwig bundles several BigWigs into one MultiQuantitativeTrack, in ' + 'place of the positional track argument: pass a comma-separated list of ' + 'BigWig files/URLs, or a .json file with an array of BigWig locations or ' + 'subadapter objects (each carrying its own name/color/group). With --load, ' + 'local list entries are copied like any other track file.\\n\\n' + 'For pairwise synteny adapters (PAF/Delta/Chain) --assemblyNames is ' + 'query,target — the reverse of the minimap2/nucmer input order. For the ' + 'all-vs-all adapters (AllVsAllPAFAdapter, AllVsAllIndexedPAFAdapter) it is ' + 'instead the full list of assemblies the file covers, in any order, since ' + 'one all-vs-all file backs every pair.';\n const examples = ['# copy /path/to/my.bam and /path/to/my.bam.bai to current directory and adds track to config.json', '$ jbrowse add-track /path/to/my.bam --load copy', '', '# copy my.bam and my.bam.bai to /path/to/jb2/bam and adds track entry to /path/to/jb2/bam/config.json', '$ jbrowse add-track my.bam --load copy --out /path/to/jb2 --subDir bam', '', '# same as above, but specify path to bai file. needed for if the bai file does not have the extension .bam.bai', '$ jbrowse add-track my.bam --indexFile my.bai --load copy', '', '# creates symlink for /path/to/my.bam and adds track to config.json', '$ jbrowse add-track /path/to/my.bam --load symlink', '', '# add track from URL to config.json, no --load flag needed', '$ jbrowse add-track https://mywebsite.com/my.bam', '', '# --load inPlace adds a track without doing file operations', '$ jbrowse add-track /url/relative/path.bam --load inPlace', '', '# color a track by strand and set its height (no escaping: single-quote the value, double-quote inside the jexl)', `$ jbrowse add-track genes.gff3.gz --load copy --color 'jexl:feature.strand==1?\"blue\":\"red\"' --height 200`, '', '# bundle several BigWigs into one MultiQuantitativeTrack (no positional track arg)', '$ jbrowse add-track --multiwig a.bw,b.bw,c.bw --load copy --name \"Coverage\"', '', '# ...or from a sources.json carrying per-row name/color for each BigWig', '$ jbrowse add-track --multiwig sources.json --name \"CATlas ATAC\"'];\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.printHelp)({\n description,\n examples,\n notes,\n usage: 'jbrowse add-track <track> [options]',\n options\n });\n return;\n }\n ;(0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateLoadOption)(flags.load);\n const {\n config,\n force,\n category,\n description: trackDescription,\n load,\n subDir = '',\n target,\n protocol = 'uri',\n out,\n indexFile: index,\n bed1,\n bed2,\n adapterType,\n multiwig\n } = flags;\n const location = positionals[0];\n if (multiwig && location) {\n throw new Error('Pass either a positional track file or --multiwig, not both');\n }\n const wrap = (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.makeLocationProtocol)(protocol);\n const mapLocation = p => wrap((0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.mapLocationForFiles)(p, load, subDir));\n\n // build the adapter (and the set of files to load) up front, so the track-arg\n // and load validation runs before we touch the config on disk\n const {\n adapter,\n files,\n trackType,\n trackId\n } = multiwig ? buildMultiWiggleTrack({\n sources: multiwig,\n mapLocation,\n load,\n trackType: flags.trackType,\n trackId: flags.trackId\n }) : buildFileTrack({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n assemblyNames: flags.assemblyNames,\n mapLocation,\n load,\n trackType: flags.trackType,\n trackId: flags.trackId\n });\n const baseConfigObj = config ? (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.parseConfigFlag)(config) : undefined;\n const displayDefaults = (0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.mergeDisplayDefaults)({\n configObj: baseConfigObj,\n color: flags.color,\n height: flags.height,\n displayDefaults: flags.displayDefaults,\n trackType\n });\n const configObj = displayDefaults ? {\n ...baseConfigObj,\n displayDefaults\n } : baseConfigObj;\n const targetConfigPath = await (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.resolveConfigPath)(target, out);\n const configDir = node_path__WEBPACK_IMPORTED_MODULE_0___default().dirname(targetConfigPath);\n const configContents = await (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.readConfigFile)(targetConfigPath);\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateAssemblies)(configContents, flags.assemblyNames);\n const name = flags.name || trackId;\n const assemblyNames = flags.assemblyNames || configContents.assemblies?.[0]?.name || '';\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.warnUnknownAssemblyNames)(configContents, assemblyNames);\n const trackConfig = (0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.buildTrackConfig)({\n trackType,\n trackId,\n name,\n assemblyNames,\n category,\n description: trackDescription,\n configObj,\n adapter\n });\n const {\n updatedItems: tracks,\n wasOverwritten\n } = (0,_shared_config_operations_ts__WEBPACK_IMPORTED_MODULE_8__.findAndUpdateOrAdd)({\n items: configContents.tracks ?? [],\n newItem: trackConfig,\n idField: 'trackId',\n getId: item => item.trackId,\n force: force ?? false,\n itemType: 'track'\n });\n const updatedConfig = {\n ...configContents,\n tracks\n };\n await (0,_add_track_utils_file_operations_ts__WEBPACK_IMPORTED_MODULE_4__.loadFiles)({\n files,\n destDir: configDir,\n mode: load,\n subDir,\n force\n });\n await (0,_shared_config_operations_ts__WEBPACK_IMPORTED_MODULE_8__.saveConfigAndReport)({\n config: updatedConfig,\n target: targetConfigPath,\n itemType: 'track',\n itemName: name,\n itemId: trackId,\n wasOverwritten\n });\n}\n\n// what both track-building paths resolve to: the adapter, the local files to\n// load beside the config, and the track's type/id (either derived or overridden)\n\n// --multiwig: bundle several BigWigs into one MultiQuantitativeTrack\nfunction buildMultiWiggleTrack({\n sources,\n mapLocation,\n load,\n trackType,\n trackId\n}) {\n const {\n adapter,\n files\n } = (0,_add_track_utils_multiwig_ts__WEBPACK_IMPORTED_MODULE_5__.buildMultiWiggle)({\n sources,\n mapLocation\n });\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateMultiWiggleLoad)(files.length > 0, load);\n return {\n adapter,\n files,\n trackType: trackType || 'MultiQuantitativeTrack',\n trackId: trackId || multiWiggleTrackId(sources)\n };\n}\n\n// the usual path: one positional data file, adapter guessed from its extension\nfunction buildFileTrack({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n assemblyNames,\n mapLocation,\n load,\n trackType,\n trackId\n}) {\n ;(0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateTrackArg)(location);\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateLoadAndLocation)(location, load);\n const {\n adapter: guessedAdapter,\n files\n } = (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.guessTrack)({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n mapLocation\n });\n const adapter = (0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.addSyntenyAssemblyNames)(guessedAdapter, assemblyNames);\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateAdapterType)(adapter.type);\n return {\n adapter,\n files,\n trackType: trackType || (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.guessTrackType)(adapter.type, location),\n trackId: trackId || node_path__WEBPACK_IMPORTED_MODULE_0___default().basename(location, node_path__WEBPACK_IMPORTED_MODULE_0___default().extname(location))\n };\n}\n\n// a .json sources file names the track after itself (sources.json -> sources); a\n// bare comma list has no filename to borrow, so it falls back to 'multiwiggle'\nfunction multiWiggleTrackId(sources) {\n return sources.toLowerCase().endsWith('.json') ? node_path__WEBPACK_IMPORTED_MODULE_0___default().basename(sources, node_path__WEBPACK_IMPORTED_MODULE_0___default().extname(sources)) : 'multiwiggle';\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/add-track.ts?\n}");
317
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add-track-utils/adapter-utils.ts */ \"./src/commands/add-track-utils/adapter-utils.ts\");\n/* harmony import */ var _add_track_utils_file_operations_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./add-track-utils/file-operations.ts */ \"./src/commands/add-track-utils/file-operations.ts\");\n/* harmony import */ var _add_track_utils_multiwig_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./add-track-utils/multiwig.ts */ \"./src/commands/add-track-utils/multiwig.ts\");\n/* harmony import */ var _add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./add-track-utils/track-config.ts */ \"./src/commands/add-track-utils/track-config.ts\");\n/* harmony import */ var _add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./add-track-utils/validators.ts */ \"./src/commands/add-track-utils/validators.ts\");\n/* harmony import */ var _shared_config_operations_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./shared/config-operations.ts */ \"./src/commands/shared/config-operations.ts\");\n\n\n\n\n\n\n\n\n\nasync function run(args) {\n const options = {\n help: {\n type: 'boolean',\n short: 'h'\n },\n trackType: {\n type: 'string',\n short: 't',\n description: 'Type of track, by default inferred from track file'\n },\n adapterType: {\n type: 'string',\n description: 'Adapter type, by default inferred from track file'\n },\n name: {\n type: 'string',\n short: 'n',\n description: 'Name of the track. Will be defaulted to the trackId if none specified'\n },\n indexFile: {\n type: 'string',\n description: 'Optional index file for the track'\n },\n description: {\n type: 'string',\n short: 'd',\n description: 'Optional description of the track'\n },\n assemblyNames: {\n type: 'string',\n short: 'a',\n description: 'Assembly name or names for track as comma separated string. For pairwise synteny tracks the order is query,target (reverse of minimap2/nucmer argument order); for all-vs-all adapters (AllVsAllPAFAdapter/AllVsAllIndexedPAFAdapter) list every assembly the file covers, in any order'\n },\n category: {\n type: 'string',\n description: 'Optional comma separated string of categories to group tracks'\n },\n config: {\n type: 'string',\n description: 'Any extra config settings to add to a track'\n },\n color: {\n type: 'string',\n description: 'Track color: a plain CSS color or a jexl callback. Merged into displayDefaults'\n },\n height: {\n type: 'string',\n description: 'Track display height in pixels. Merged into displayDefaults'\n },\n displayDefaults: {\n type: 'string',\n description: 'Inline JSON merged into the track displayDefaults (labels, mouseover, jexlFilters, etc.)'\n },\n multiwig: {\n type: 'string',\n description: 'Build a MultiQuantitativeTrack from several BigWigs (in place of the positional track arg): a comma-separated list of BigWig files/URLs, or a .json file holding an array of BigWig locations or subadapter objects, each with its own name/color'\n },\n target: {\n type: 'string',\n description: 'Path to config file in JB2 installation to write out to'\n },\n out: {\n type: 'string',\n description: 'Synonym for target'\n },\n subDir: {\n type: 'string',\n description: 'When using --load a file, output to a subdirectory of the target dir'\n },\n trackId: {\n type: 'string',\n description: 'trackId for the track, by default inferred from filename'\n },\n load: {\n type: 'string',\n short: 'l',\n description: 'How to manage the track file relative to config.json. Required for local files, omit for URLs',\n choices: ['copy', 'symlink', 'move', 'inPlace']\n },\n force: {\n type: 'boolean',\n short: 'f',\n description: 'Overwrite existing track and any existing files'\n },\n protocol: {\n type: 'string',\n description: 'Force protocol to a specific value'\n },\n bed1: {\n type: 'string',\n description: 'Used only for mcscan anchors/simpleAnchors types'\n },\n bed2: {\n type: 'string',\n description: 'Used only for mcscan anchors/simpleAnchors types'\n },\n density: {\n type: 'string',\n description: \"Path or URL of a features-per-bin bigWig (jbrowse make-density) to attach as the adapter's densityAdapter. A local <file>.density.bw beside the track file is attached without this flag\"\n }\n };\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_1__.parseArgs)({\n args,\n options,\n allowPositionals: true\n });\n const description = 'Add a track to a JBrowse 2 configuration';\n const notes = '--load controls how the data file is placed relative to config.json: ' + 'copy, move, or symlink it into the install directory, or inPlace to ' + 'reference a pre-staged local file where it already sits. Omit --load ' + 'entirely for URLs. For a local file the matching index is whichever ' + 'conventional spelling is actually beside it — <file>.bai/.crai/.tbi, a ' + '<file>.csi, or the reads.bai form Picard writes beside reads.bam. A URL ' + 'cannot be checked, so it gets <file>.bai/.tbi; pass --indexFile for ' + 'anything else.\\n\\n' + '--config takes inline JSON (not a file path) that is merged into the ' + 'generated track config, so you can set fields the dedicated flags do not ' + 'cover, e.g. --config \\'{\"metadata\":{\"skipTextIndex\":true}}\\' to exclude ' + 'the track from jbrowse text-index.\\n\\n' + '--color and --height set the two most common appearance settings without ' + 'writing JSON. Wrap the value in single quotes and use double quotes inside ' + 'a jexl callback so nothing needs escaping, e.g. ' + '--color \\'jexl:feature.strand==1?\"blue\":\"red\"\\'. --displayDefaults takes ' + 'inline JSON for any other appearance setting (labels, mouseover, ' + 'jexlFilters).\\n\\n' + '--multiwig bundles several BigWigs into one MultiQuantitativeTrack, in ' + 'place of the positional track argument: pass a comma-separated list of ' + 'BigWig files/URLs, or a .json file with an array of BigWig locations or ' + 'subadapter objects (each carrying its own name/color/group). With --load, ' + 'local list entries are copied like any other track file.\\n\\n' + '--density attaches a features-per-bin bigWig (jbrowse make-density) as the ' + \"adapter's densityAdapter, the band a display draws where the region is too \" + 'large to fetch features. A local <file>.density.bw beside the track file is ' + 'attached without the flag; a URL cannot be probed, so a remote sidecar needs ' + 'it. The adapters carrying the slot are BamAdapter, CramAdapter, ' + 'HtsgetBamAdapter, Gff3TabixAdapter, GtfTabixAdapter, BedTabixAdapter, ' + 'BigBedAdapter, VcfTabixAdapter and SplitVcfTabixAdapter.\\n\\n' + 'For pairwise synteny adapters (PAF/Delta/Chain) --assemblyNames is ' + 'query,target — the reverse of the minimap2/nucmer input order. For the ' + 'all-vs-all adapters (AllVsAllPAFAdapter, AllVsAllIndexedPAFAdapter) it is ' + 'instead the full list of assemblies the file covers, in any order, since ' + 'one all-vs-all file backs every pair.';\n const examples = ['# copy /path/to/my.bam and /path/to/my.bam.bai to current directory and adds track to config.json', '$ jbrowse add-track /path/to/my.bam --load copy', '', '# copy my.bam and my.bam.bai to /path/to/jb2/bam and adds track entry to /path/to/jb2/bam/config.json', '$ jbrowse add-track my.bam --load copy --out /path/to/jb2 --subDir bam', '', '# same as above, but specify path to bai file. needed for if the bai file does not have the extension .bam.bai', '$ jbrowse add-track my.bam --indexFile my.bai --load copy', '', '# creates symlink for /path/to/my.bam and adds track to config.json', '$ jbrowse add-track /path/to/my.bam --load symlink', '', '# add track from URL to config.json, no --load flag needed', '$ jbrowse add-track https://mywebsite.com/my.bam', '', '# --load inPlace adds a track without doing file operations', '$ jbrowse add-track /url/relative/path.bam --load inPlace', '', '# color a track by strand and set its height (no escaping: single-quote the value, double-quote inside the jexl)', `$ jbrowse add-track genes.gff3.gz --load copy --color 'jexl:feature.strand==1?\"blue\":\"red\"' --height 200`, '', '# bundle several BigWigs into one MultiQuantitativeTrack (no positional track arg)', '$ jbrowse add-track --multiwig a.bw,b.bw,c.bw --load copy --name \"Coverage\"', '', '# ...or from a sources.json carrying per-row name/color for each BigWig', '$ jbrowse add-track --multiwig sources.json --name \"CATlas ATAC\"', '', '# attach a remote density sidecar (a local genes.gff3.density.bw needs no flag)', '$ jbrowse add-track https://mywebsite.com/genes.gff3.gz --density https://mywebsite.com/genes.gff3.density.bw'];\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.printHelp)({\n description,\n examples,\n notes,\n usage: 'jbrowse add-track <track> [options]',\n options\n });\n return;\n }\n ;(0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateLoadOption)(flags.load);\n const {\n config,\n force,\n category,\n description: trackDescription,\n load,\n subDir = '',\n target,\n protocol = 'uri',\n out,\n indexFile: index,\n bed1,\n bed2,\n adapterType,\n multiwig\n } = flags;\n const location = positionals[0];\n if (multiwig && location) {\n throw new Error('Pass either a positional track file or --multiwig, not both');\n }\n const wrap = (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.makeLocationProtocol)(protocol);\n const mapLocation = p => wrap((0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.mapLocationForFiles)(p, load, subDir));\n\n // build the adapter (and the set of files to load) up front, so the track-arg\n // and load validation runs before we touch the config on disk\n const {\n adapter: builtAdapter,\n files,\n trackType,\n trackId\n } = multiwig ? buildMultiWiggleTrack({\n sources: multiwig,\n mapLocation,\n load,\n trackType: flags.trackType,\n trackId: flags.trackId\n }) : buildFileTrack({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n assemblyNames: flags.assemblyNames,\n mapLocation,\n load,\n trackType: flags.trackType,\n trackId: flags.trackId\n });\n const {\n adapter,\n file: densityFile\n } = (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.withDensityAdapter)({\n adapter: builtAdapter,\n location,\n density: flags.density,\n makeLocation: mapLocation\n });\n if (densityFile !== undefined && !load) {\n throw new Error(`--density names a local file (${densityFile}); pass --load to say how it is placed beside the config`);\n }\n const baseConfigObj = config ? (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.parseConfigFlag)(config) : undefined;\n const displayDefaults = (0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.mergeDisplayDefaults)({\n configObj: baseConfigObj,\n color: flags.color,\n height: flags.height,\n displayDefaults: flags.displayDefaults,\n trackType\n });\n const configObj = displayDefaults ? {\n ...baseConfigObj,\n displayDefaults\n } : baseConfigObj;\n const targetConfigPath = await (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.resolveConfigPath)(target, out);\n const configDir = node_path__WEBPACK_IMPORTED_MODULE_0___default().dirname(targetConfigPath);\n const configContents = await (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.readConfigFile)(targetConfigPath);\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateAssemblies)(configContents, flags.assemblyNames);\n const name = flags.name || trackId;\n const assemblyNames = flags.assemblyNames || configContents.assemblies?.[0]?.name || '';\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.warnUnknownAssemblyNames)(configContents, assemblyNames);\n const trackConfig = (0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.buildTrackConfig)({\n trackType,\n trackId,\n name,\n assemblyNames,\n category,\n description: trackDescription,\n configObj,\n adapter\n });\n const {\n updatedItems: tracks,\n wasOverwritten\n } = (0,_shared_config_operations_ts__WEBPACK_IMPORTED_MODULE_8__.findAndUpdateOrAdd)({\n items: configContents.tracks ?? [],\n newItem: trackConfig,\n idField: 'trackId',\n getId: item => item.trackId,\n force: force ?? false,\n itemType: 'track'\n });\n const updatedConfig = {\n ...configContents,\n tracks\n };\n await (0,_add_track_utils_file_operations_ts__WEBPACK_IMPORTED_MODULE_4__.loadFiles)({\n files: [...files, densityFile],\n destDir: configDir,\n mode: load,\n subDir,\n force\n });\n await (0,_shared_config_operations_ts__WEBPACK_IMPORTED_MODULE_8__.saveConfigAndReport)({\n config: updatedConfig,\n target: targetConfigPath,\n itemType: 'track',\n itemName: name,\n itemId: trackId,\n wasOverwritten\n });\n}\n\n// what both track-building paths resolve to: the adapter, the local files to\n// load beside the config, and the track's type/id (either derived or overridden)\n\n// --multiwig: bundle several BigWigs into one MultiQuantitativeTrack\nfunction buildMultiWiggleTrack({\n sources,\n mapLocation,\n load,\n trackType,\n trackId\n}) {\n const {\n adapter,\n files\n } = (0,_add_track_utils_multiwig_ts__WEBPACK_IMPORTED_MODULE_5__.buildMultiWiggle)({\n sources,\n mapLocation\n });\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateMultiWiggleLoad)(files.length > 0, load);\n return {\n adapter,\n files,\n trackType: trackType || 'MultiQuantitativeTrack',\n trackId: trackId || multiWiggleTrackId(sources)\n };\n}\n\n// the usual path: one positional data file, adapter guessed from its extension\nfunction buildFileTrack({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n assemblyNames,\n mapLocation,\n load,\n trackType,\n trackId\n}) {\n ;(0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateTrackArg)(location);\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateLoadAndLocation)(location, load);\n const {\n adapter: guessedAdapter,\n files\n } = (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.guessTrack)({\n location,\n index,\n bed1,\n bed2,\n adapterType,\n mapLocation\n });\n const adapter = (0,_add_track_utils_track_config_ts__WEBPACK_IMPORTED_MODULE_6__.addSyntenyAssemblyNames)(guessedAdapter, assemblyNames);\n (0,_add_track_utils_validators_ts__WEBPACK_IMPORTED_MODULE_7__.validateAdapterType)(adapter.type);\n return {\n adapter,\n files,\n trackType: trackType || (0,_add_track_utils_adapter_utils_ts__WEBPACK_IMPORTED_MODULE_3__.guessTrackType)(adapter.type, location),\n trackId: trackId || node_path__WEBPACK_IMPORTED_MODULE_0___default().basename(location, node_path__WEBPACK_IMPORTED_MODULE_0___default().extname(location))\n };\n}\n\n// a .json sources file names the track after itself (sources.json -> sources); a\n// bare comma list has no filename to borrow, so it falls back to 'multiwiggle'\nfunction multiWiggleTrackId(sources) {\n return sources.toLowerCase().endsWith('.json') ? node_path__WEBPACK_IMPORTED_MODULE_0___default().basename(sources, node_path__WEBPACK_IMPORTED_MODULE_0___default().extname(sources)) : 'multiwiggle';\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/add-track.ts?\n}");
307
318
 
308
319
  /***/ },
309
320
 
@@ -340,14 +351,25 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
340
351
 
341
352
  /***/ },
342
353
 
343
- /***/ "./src/commands/make-pif/cigar-utils.ts"
344
- /*!**********************************************!*\
345
- !*** ./src/commands/make-pif/cigar-utils.ts ***!
346
- \**********************************************/
354
+ /***/ "./src/commands/make-density/density-generator.ts"
355
+ /*!********************************************************!*\
356
+ !*** ./src/commands/make-density/density-generator.ts ***!
357
+ \********************************************************/
347
358
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
348
359
 
349
360
  "use strict";
350
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ splitCigarOnLargeGaps: () => (/* binding */ splitCigarOnLargeGaps)\n/* harmony export */ });\n/** One split of a row, plus whether the walk that produced it can be trusted. */\n\n// Walk a CIGAR and split the alignment wherever an insertion or deletion is at\n// least `splitGap` bp, so each coarse-tier row's bounding box stays tight.\n// Returns one segment per contiguous run; `splitGap` must be positive (the\n// caller keeps the whole row when there is nothing to split on).\n// PAF semantics: qstart < qend always; '-' strand CIGAR walks query backward.\nfunction splitCigarOnLargeGaps({\n cigar,\n strand,\n tstart,\n tend,\n qstart,\n qend,\n splitGap\n}) {\n const qStep = strand === '-' ? -1 : 1;\n let tCursor = tstart;\n let qCursor = strand === '-' ? qend : qstart;\n let segTStart = tCursor;\n let segQAnchor = qCursor;\n let segBlockLen = 0;\n const out = [];\n const emit = () => {\n if (tCursor > segTStart || qCursor !== segQAnchor) {\n out.push({\n tstart: segTStart,\n tend: tCursor,\n qstart: Math.min(segQAnchor, qCursor),\n qend: Math.max(segQAnchor, qCursor),\n blockLen: segBlockLen\n });\n }\n };\n\n // Parse CIGAR directly to avoid intermediate array + string-to-number conversions\n let i = 0;\n while (i < cigar.length) {\n let len = 0;\n while (i < cigar.length && cigar.charCodeAt(i) >= 48 && cigar.charCodeAt(i) <= 57) {\n len = len * 10 + cigar.charCodeAt(i++) - 48;\n }\n const op = cigar[i++];\n if ('M=X'.includes(op)) {\n tCursor += len;\n qCursor += len * qStep;\n segBlockLen += len;\n } else if ('DIN'.includes(op)) {\n const isLarge = len >= splitGap;\n if (isLarge) {\n emit();\n }\n if (op === 'I') {\n qCursor += len * qStep;\n } else {\n tCursor += len;\n }\n if (isLarge) {\n segTStart = tCursor;\n segQAnchor = qCursor;\n segBlockLen = 0;\n } else {\n segBlockLen += len;\n }\n }\n // S/H/P (clipping/padding) don't consume target or forward-strand query in PAF\n }\n emit();\n return {\n segments: out,\n closed: tCursor === tend && qCursor === (strand === '-' ? qstart : qend)\n };\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-pif/cigar-utils.ts?\n}");
361
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bedGraphLines: () => (/* binding */ bedGraphLines),\n/* harmony export */ chromSizesLines: () => (/* binding */ chromSizesLines),\n/* harmony export */ countFeatureStarts: () => (/* binding */ countFeatureStarts),\n/* harmony export */ densityFormat: () => (/* binding */ densityFormat),\n/* harmony export */ parseBinSize: () => (/* binding */ parseBinSize),\n/* harmony export */ resolveChromSizes: () => (/* binding */ resolveChromSizes)\n/* harmony export */ });\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_readline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:readline */ \"node:readline\");\n/* harmony import */ var node_readline__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_readline__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var node_zlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:zlib */ \"node:zlib\");\n/* harmony import */ var node_zlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_zlib__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n// Which parser a filename selects. BAM/CRAM/SAM are named so the refusal can\n// say what to do instead, rather than falling into the unknown-extension case.\nconst formats = [{\n regex: /\\.gff3?(\\.b?gz)?$/i,\n format: 'gff3'\n}, {\n regex: /\\.gtf(\\.b?gz)?$/i,\n format: 'gtf'\n}, {\n regex: /\\.vcf(\\.b?gz)?$/i,\n format: 'vcf'\n}, {\n regex: /\\.bed(\\.b?gz)?$/i,\n format: 'bed'\n}];\nconst alignmentFormat = /\\.(bam|cram|sam)$/i;\nfunction densityFormat(file) {\n const hit = formats.find(f => f.regex.test(file));\n if (!hit) {\n throw new Error(alignmentFormat.test(file) ? `${file} is an alignment file, which make-density cannot read. Count coverage with a tool that reads BAM/CRAM (e.g. \"bamCoverage\" or \"samtools depth\" piped to bedGraphToBigWig) and pass the result with add-track --density.` : `Cannot tell what kind of file ${file} is. make-density reads GFF3, GTF, BED and VCF, plain or bgzipped.`);\n }\n return hit.format;\n}\n\n/**\n * The reference name and 0-based start of one record, or undefined for a line\n * that contributes nothing: a header, a directive, a short line, or — in GFF3 —\n * a child feature, whose start would count its parent's locus a second time.\n * A GTF row says whether it is a `transcript`, the record its track draws;\n * BED and VCF have no parent link to follow, so every record counts.\n */\nfunction parseRecord(line, format) {\n const columns = line.split('\\t');\n const refName = columns[0];\n const startsHeader = line.startsWith('#') || line.startsWith('track ') || line.startsWith('browser ');\n if (startsHeader || refName === undefined || refName === '') {\n return undefined;\n }\n if (format === 'bed') {\n const start = columns[1];\n return start === undefined ? undefined : {\n refName,\n start: +start,\n transcript: false\n };\n }\n const start = columns[format === 'vcf' ? 1 : 3];\n const attributes = columns[8];\n const isChild = format === 'gff3' && attributes?.includes('Parent=');\n return start === undefined || isChild ? undefined : {\n refName,\n start: +start - 1,\n transcript: format === 'gtf' && columns[2] === 'transcript'\n };\n}\nfunction tally(bins, key, bin) {\n const existing = bins.get(key);\n const perRef = existing === undefined ? new Map() : existing;\n if (existing === undefined) {\n bins.set(key, perRef);\n }\n const count = perRef.get(bin);\n perRef.set(bin, count === undefined ? 1 : count + 1);\n}\nasync function countFeatureStarts({\n file,\n format,\n binSize,\n chromSizes\n}) {\n // A GTF's transcripts are tallied apart from its exons and CDS rows: where a\n // file has transcript rows they are the count, and a file with none (an\n // exon-only GTF) counts every row.\n const all = new Map();\n const transcripts = new Map();\n const unknownRefNames = new Set();\n let records = 0;\n let transcriptRecords = 0;\n const source = (0,node_fs__WEBPACK_IMPORTED_MODULE_0__.createReadStream)(file);\n const lines = (0,node_readline__WEBPACK_IMPORTED_MODULE_1__.createInterface)({\n input: /\\.b?gz$/i.test(file) ? source.pipe((0,node_zlib__WEBPACK_IMPORTED_MODULE_2__.createGunzip)()) : source,\n crlfDelay: Number.POSITIVE_INFINITY\n });\n for await (const line of lines) {\n // everything after a GFF3 ##FASTA directive is sequence, not features\n if (line.trimEnd() === '##FASTA') {\n break;\n }\n const record = parseRecord(line, format);\n if (record && Number.isFinite(record.start)) {\n records++;\n transcriptRecords += record.transcript ? 1 : 0;\n const length = chromSizes.get(record.refName);\n if (length === undefined) {\n unknownRefNames.add(record.refName);\n } else if (record.start >= 0 && record.start < length) {\n const bin = Math.floor(record.start / binSize);\n tally(all, record.refName, bin);\n if (record.transcript) {\n tally(transcripts, record.refName, bin);\n }\n }\n }\n }\n lines.close();\n source.destroy();\n return transcriptRecords > 0 ? {\n bins: transcripts,\n records: transcriptRecords,\n unknownRefNames\n } : {\n bins: all,\n records,\n unknownRefNames\n };\n}\n\n/**\n * bedGraph rows covering every base of every reference, in the order\n * bedGraphToBigWig demands (`sort -k1,1 -k2,2n`): one row per counted bin,\n * clipped to the reference's length, and one per run of empty bins between\n * them. The empty runs are load-bearing: a bigWig's zoom levels average over\n * the bases its rows cover, so a file that skipped them would read, zoomed out,\n * as the mean over the bins that held something rather than over the span, and\n * a gene desert beside a cluster would score the same.\n */\nfunction* bedGraphLines({\n bins,\n chromSizes,\n binSize\n}) {\n const byName = [...chromSizes.entries()].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);\n for (const [refName, length] of byName) {\n const perRef = bins.get(refName);\n const counted = perRef ? [...perRef.entries()].sort(([a], [b]) => a - b) : [];\n let cursor = 0;\n for (const [bin, count] of counted) {\n const start = bin * binSize;\n const end = Math.min(start + binSize, length);\n if (start > cursor) {\n yield `${refName}\\t${cursor}\\t${start}\\t0\\n`;\n }\n yield `${refName}\\t${start}\\t${end}\\t${count}\\n`;\n cursor = end;\n }\n if (cursor < length) {\n yield `${refName}\\t${cursor}\\t${length}\\t0\\n`;\n }\n }\n}\nfunction chromSizesLines(chromSizes) {\n return [...chromSizes.entries()].map(([refName, length]) => `${refName}\\t${length}\\n`).join('');\n}\n\n// a `.chrom.sizes` and a `.fai` both put the name in column 1 and the length in\n// column 2, so one parser reads either\nfunction parseChromSizes(text, source) {\n const sizes = new Map();\n for (const line of text.split('\\n')) {\n const [refName, length] = line.split('\\t');\n if (refName && length !== undefined && Number.isFinite(+length)) {\n sizes.set(refName, +length);\n }\n }\n if (sizes.size === 0) {\n throw new Error(`No reference sequences found in ${source}`);\n }\n return sizes;\n}\n\n/**\n * The reference lengths the bigWig header needs, from an explicit\n * `--chrom-sizes` or from the `.fai` beside an `--assembly` FASTA.\n */\nfunction resolveChromSizes({\n chromSizes,\n assembly\n}) {\n if (chromSizes !== undefined) {\n return parseChromSizes((0,node_fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync)(chromSizes, 'utf8'), chromSizes);\n }\n if (assembly !== undefined) {\n const fai = `${assembly}.fai`;\n if (!(0,node_fs__WEBPACK_IMPORTED_MODULE_0__.existsSync)(fai)) {\n throw new Error(`No index beside ${assembly}: expected ${fai}. Make one with \"samtools faidx ${assembly}\", or pass --chrom-sizes instead.`);\n }\n return parseChromSizes((0,node_fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync)(fai, 'utf8'), fai);\n }\n throw new Error('Reference lengths are required: pass --chrom-sizes <file> or --assembly <fasta> (whose .fai is read)');\n}\nfunction parseBinSize(bin) {\n const binSize = +bin;\n if (!Number.isInteger(binSize) || binSize < 1) {\n throw new Error(`--bin must be a positive whole number of bp, got ${bin}`);\n }\n return binSize;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-density/density-generator.ts?\n}");
362
+
363
+ /***/ },
364
+
365
+ /***/ "./src/commands/make-density/index.ts"
366
+ /*!********************************************!*\
367
+ !*** ./src/commands/make-density/index.ts ***!
368
+ \********************************************/
369
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
370
+
371
+ "use strict";
372
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:child_process */ \"node:child_process\");\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_child_process__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:os */ \"node:os\");\n/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_os__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! node:stream */ \"node:stream\");\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(node_stream__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var node_stream_promises__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! node:stream/promises */ \"node:stream/promises\");\n/* harmony import */ var node_stream_promises__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(node_stream_promises__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _process_utils_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../process-utils.ts */ \"./src/commands/process-utils.ts\");\n/* harmony import */ var _shared_density_ts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../shared/density.ts */ \"./src/commands/shared/density.ts\");\n/* harmony import */ var _shared_validators_ts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shared/validators.ts */ \"./src/commands/shared/validators.ts\");\n/* harmony import */ var _density_generator_ts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./density-generator.ts */ \"./src/commands/make-density/density-generator.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\nasync function run(args) {\n const options = {\n help: {\n type: 'boolean',\n short: 'h'\n },\n bin: {\n type: 'string',\n default: '1000',\n description: 'Width of each bin, in bp'\n },\n 'chrom-sizes': {\n type: 'string',\n description: 'Two-column reference name and length table for the assembly the file is on'\n },\n assembly: {\n type: 'string',\n description: 'FASTA of the assembly the file is on; its .fai supplies the reference lengths, in place of --chrom-sizes'\n },\n out: {\n type: 'string',\n description: 'Where to write the bigWig. Defaults to <file>.density.bw beside the input, which is where add-track looks for it'\n }\n };\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_6__.parseArgs)({\n args,\n options,\n allowPositionals: true\n });\n const description = 'Counts feature starts per bin into a bigWig, the density sidecar a track draws where the region is too large to fetch its features';\n const notes = \"The sidecar is attached to a track through its adapter's densityAdapter \" + 'slot, which BamAdapter, CramAdapter, HtsgetBamAdapter, Gff3TabixAdapter, ' + 'GtfTabixAdapter, BedTabixAdapter, BigBedAdapter, VcfTabixAdapter and ' + 'SplitVcfTabixAdapter declare. add-track attaches it on its own when the ' + 'default <file>.density.bw sits beside the track file, so building it before ' + 'adding the track is all it takes; --density attaches one by path or URL.\\n\\n' + 'GFF3 counts only top-level features — a line whose attributes carry no ' + 'Parent= — so a gene is one count rather than one per exon. GTF, BED and VCF ' + 'have no parent link to follow, so every record counts.\\n\\n' + 'BAM and CRAM are out of scope: read depth is not feature density, and the ' + 'tools that compute it already write bigWig. Point add-track --density at ' + 'what they produce.\\n\\n' + 'Requires bedGraphToBigWig (UCSC) on the PATH.';\n const examples = ['# writes genes.gff3.density.bw beside the input, in 1kb bins', '$ jbrowse make-density genes.gff3.gz --chrom-sizes hg38.chrom.sizes', '', '# take the reference lengths from the assembly FASTA index instead', '$ jbrowse make-density variants.vcf.gz --assembly hg38.fa', '', '# coarser bins, and a name of your own', '$ jbrowse make-density genes.gff3.gz --assembly hg38.fa --bin 10000 --out genes.10kb.bw'];\n const usage = 'jbrowse make-density <file> [options]';\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_7__.printHelp)({\n description,\n examples,\n notes,\n usage,\n options\n });\n return;\n }\n const file = positionals[0];\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_7__.requirePositional)(file, 'file', usage);\n // ahead of the bedGraphToBigWig check, so a file this command cannot read\n // says so even where UCSC's tools are not installed\n const format = (0,_density_generator_ts__WEBPACK_IMPORTED_MODULE_11__.densityFormat)(file);\n (0,_shared_validators_ts__WEBPACK_IMPORTED_MODULE_10__.validateFileArgument)(file, 'make-density', format);\n const binSize = (0,_density_generator_ts__WEBPACK_IMPORTED_MODULE_11__.parseBinSize)(flags.bin);\n const chromSizes = (0,_density_generator_ts__WEBPACK_IMPORTED_MODULE_11__.resolveChromSizes)({\n chromSizes: flags['chrom-sizes'],\n assembly: flags.assembly\n });\n (0,_shared_validators_ts__WEBPACK_IMPORTED_MODULE_10__.validateRequiredCommands)(['bedGraphToBigWig']);\n const outputFile = flags.out === undefined ? (0,_shared_density_ts__WEBPACK_IMPORTED_MODULE_9__.densitySidecarPath)(file) : flags.out;\n const {\n bins,\n records,\n unknownRefNames\n } = await (0,_density_generator_ts__WEBPACK_IMPORTED_MODULE_11__.countFeatureStarts)({\n file,\n format,\n binSize,\n chromSizes\n });\n if (unknownRefNames.size > 0) {\n const shown = [...unknownRefNames].slice(0, 5).join(', ');\n const rest = unknownRefNames.size - Math.min(unknownRefNames.size, 5);\n console.warn(`Warning: skipped records on ${unknownRefNames.size} reference name(s) absent from the reference lengths (${shown}${rest > 0 ? `, and ${rest} more` : ''}). A chr-prefixed file against an unprefixed assembly looks exactly like this.`);\n }\n\n // A file that yielded nothing is refused rather than written as a flat\n // band, which would read as \"no features here\" rather than \"wrong file\"\n const binCount = [...bins.values()].reduce((sum, perRef) => sum + perRef.size, 0);\n if (binCount === 0) {\n throw new Error(`No feature starts found in ${file} on any reference in the given lengths (${records} record(s) read). Is this the right file and assembly?`);\n }\n const tmpDir = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.mkdtempSync)(node_path__WEBPACK_IMPORTED_MODULE_3___default().join(node_os__WEBPACK_IMPORTED_MODULE_2___default().tmpdir(), 'jbrowse-density-'));\n try {\n const bedGraph = node_path__WEBPACK_IMPORTED_MODULE_3___default().join(tmpDir, 'density.bedGraph');\n // normalized rather than the caller's file, so a .fai (five columns) and a\n // chrom.sizes with stray whitespace both reach bedGraphToBigWig as the two\n // columns it reads\n const sizes = node_path__WEBPACK_IMPORTED_MODULE_3___default().join(tmpDir, 'reference.chrom.sizes');\n (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync)(sizes, (0,_density_generator_ts__WEBPACK_IMPORTED_MODULE_11__.chromSizesLines)(chromSizes));\n await (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_5__.pipeline)(node_stream__WEBPACK_IMPORTED_MODULE_4__.Readable.from((0,_density_generator_ts__WEBPACK_IMPORTED_MODULE_11__.bedGraphLines)({\n bins,\n chromSizes,\n binSize\n })), (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.createWriteStream)(bedGraph));\n const child = (0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawn)('bedGraphToBigWig', [bedGraph, sizes, outputFile], {\n stdio: ['ignore', process.stdout, process.stderr]\n });\n const exit = await (0,_process_utils_ts__WEBPACK_IMPORTED_MODULE_8__.waitForProcessClose)(child);\n if (exit.code !== 0) {\n throw new Error(`bedGraphToBigWig exited with ${(0,_process_utils_ts__WEBPACK_IMPORTED_MODULE_8__.describeExit)(exit)}`);\n }\n } finally {\n ;(0,node_fs__WEBPACK_IMPORTED_MODULE_1__.rmSync)(tmpDir, {\n recursive: true,\n force: true\n });\n }\n\n // The slot lives on the indexed adapters, so a plain text file has to be\n // bgzipped and tabix-indexed before the track can carry the sidecar\n const indexed = /\\.b?gz$/i.test(file);\n const preset = format === 'bed' ? 'bed' : format === 'vcf' ? 'vcf' : 'gff';\n const trackFile = indexed ? file : `${file}.gz`;\n const indexFirst = indexed ? '' : ` bgzip ${file} && tabix -p ${preset} ${trackFile}\\n`;\n const nextCommand = outputFile === (0,_shared_density_ts__WEBPACK_IMPORTED_MODULE_9__.densitySidecarPath)(file) ? `Next, add the track it summarizes — a sidecar under this name is picked up automatically:\\n${indexFirst} jbrowse add-track ${trackFile} --load copy` : `Next, add the track it summarizes, naming this sidecar:\\n${indexFirst} jbrowse add-track ${trackFile} --load copy --density ${outputFile}`;\n console.log(`Created ${outputFile}: ${records} feature start(s) in ${binCount} non-empty ${binSize}bp bin(s)\\n\\n${nextCommand}`);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-density/index.ts?\n}");
351
373
 
352
374
  /***/ },
353
375
 
@@ -358,7 +380,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
358
380
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
359
381
 
360
382
  "use strict";
361
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _process_utils_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../process-utils.ts */ \"./src/commands/process-utils.ts\");\n/* harmony import */ var _shared_validators_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/validators.ts */ \"./src/commands/shared/validators.ts\");\n/* harmony import */ var _pif_generator_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pif-generator.ts */ \"./src/commands/make-pif/pif-generator.ts\");\n\n\n\n\n\nasync function run(args) {\n const options = {\n help: {\n type: 'boolean',\n short: 'h'\n },\n out: {\n type: 'string',\n description: 'Where to write the output file. will write ${file}.pif.gz and ${file}.pif.gz.tbi'\n },\n csi: {\n type: 'boolean',\n description: 'Create a CSI index for the PIF file instead of TBI'\n },\n coarse: {\n type: 'string',\n description: 'Minimum insertion/deletion length (bp) at which a coarse-tier row is split into multiple pieces so each row stays tight — 0 emits an unsplit coarse tier. Defaults to 10000. The no-CIGAR coarse tier (prefix T/Q) is emitted alongside the per-row CIGAR fine tier by default so whole-genome synteny views can auto-switch to it; pass --no-coarse to omit it.'\n },\n 'no-coarse': {\n type: 'boolean',\n description: 'Do not emit the coarse no-CIGAR tier; write only the per-row CIGAR fine tier.'\n }\n };\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_0__.parseArgs)({\n args,\n options,\n allowPositionals: true\n });\n const description = 'creates pairwise indexed PAF (PIF), with bgzip and tabix';\n const examples = ['# creates input.pif.gz and input.pif.gz.tbi in the same directory', '$ jbrowse make-pif input.paf', '', '# specify the output file, also creates output.pif.gz.tbi', '$ jbrowse make-pif input.paf --out output.pif.gz', '', '# use a CSI index for assemblies with chromosomes longer than ~512 Mb', '$ jbrowse make-pif input.paf --csi', '', '# emit an unsplit coarse tier (alongside the fine tier)', '$ jbrowse make-pif input.paf --coarse 0', '', '# emit only the per-row CIGAR fine tier, skipping the coarse tier', '$ jbrowse make-pif input.paf --no-coarse'];\n const notes = 'Use --csi for assemblies containing sequences longer than ~512 Mb. The ' + 'default TBI index cannot address coordinates beyond 2^29 (~536 Mb), so a ' + 'CSI index is required for large chromosomes (e.g. some plant and ' + 'amphibian genomes). Requires sh, sort, bgzip, and tabix on the PATH.';\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_1__.printHelp)({\n description,\n examples,\n notes,\n usage: 'jbrowse make-pif <file> [options]',\n options\n });\n return;\n }\n const file = positionals[0];\n (0,_shared_validators_ts__WEBPACK_IMPORTED_MODULE_3__.validateFileArgument)(file, 'make-pif', 'paf');\n (0,_shared_validators_ts__WEBPACK_IMPORTED_MODULE_3__.validateRequiredCommands)(['sh', 'sort', 'tabix', 'bgzip']);\n const {\n out,\n csi = false,\n coarse,\n 'no-coarse': noCoarse = false\n } = flags;\n const outputFile = (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_4__.getOutputFilename)(file, out);\n // --no-coarse used to silently win over an explicit --coarse, so a run asking\n // for both wrote a file with no coarse tier and said nothing about it\n if (noCoarse && coarse !== undefined) {\n throw new Error('--coarse and --no-coarse are mutually exclusive');\n }\n const coarseSplitGap = noCoarse ? undefined : coarse === undefined ? _pif_generator_ts__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_COARSE_SPLIT_GAP : +coarse;\n if (coarseSplitGap !== undefined && (!Number.isFinite(coarseSplitGap) || coarseSplitGap < 0)) {\n throw new Error(`Invalid --coarse value: ${coarse}`);\n }\n const child = (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_4__.spawnSortProcess)(outputFile, csi);\n const stdin = child.stdin;\n // end stdin even if createPIF throws, otherwise the spawned sort/index child\n // is left running with an open stdin\n const stats = await (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_4__.createPIF)(file, stdin, coarseSplitGap).finally(() => {\n stdin.end();\n });\n const {\n samples,\n rows,\n skipped\n } = stats;\n // no SIGPIPE exemption here (unlike sort-gff/sort-bed): this pipeline's output\n // is the .pif.gz file, so anything that killed it early left that file broken\n const exit = await (0,_process_utils_ts__WEBPACK_IMPORTED_MODULE_2__.waitForProcessClose)(child);\n if (exit.code !== 0) {\n throw new Error(`PIF sort/index pipeline exited with ${(0,_process_utils_ts__WEBPACK_IMPORTED_MODULE_2__.describeExit)(exit)}`);\n }\n\n // A file that yielded nothing is almost always the wrong file, not an empty\n // alignment: without this the command wrote a valid, indexed, empty PIF and\n // printed the add-track suggestion for it\n if (rows === 0) {\n throw new Error(`No valid PAF rows found in ${file ?? 'stdin'} (${skipped} line(s) had fewer than the 12 mandatory PAF columns). Is this a PAF file?`);\n }\n if (skipped > 0) {\n console.warn(`Warning: skipped ${skipped} of ${rows + skipped} line(s) with fewer than the 12 mandatory PAF columns`);\n }\n\n // An all-vs-all PAF that does not state every pair indexes perfectly well and\n // then draws an empty synteny band for each pair the aligner never emitted,\n // which reads as \"no homology here\" rather than as \"never computed\". This is\n // the moment someone is looking at the file, and the census it needs was\n // already taken on the pass above.\n const missing = (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_4__.missingPairs)(stats);\n if (missing.length > 0) {\n const shown = missing.slice(0, 5).map(([a, b]) => `${a}<->${b}`).join(', ');\n const rest = missing.length - Math.min(missing.length, 5);\n console.warn(`Warning: this file has ${samples.size} samples but states only ` + `${samples.size * (samples.size - 1) / 2 - missing.length} of their ` + `${samples.size * (samples.size - 1) / 2} pairs. Synteny bands for the ` + `missing pairs (${shown}${rest > 0 ? `, and ${rest} more` : ''}) will draw ` + `empty. That is what a reference-anchored alignment looks like — only ` + `pairs involving the reference are stated. Order the synteny rows so the ` + `reference sits between the others, use a complete all-vs-all if the ` + `project publishes one, or view a larger cohort as a multiple alignment ` + `(MAF) rather than a stack of pairwise bands.`);\n }\n const indexFile = `${outputFile}.${csi ? 'csi' : 'tbi'}`;\n const nextCommand = samples.size > 0 ? 'Next, add it as an all-vs-all synteny track (PanSN names detected):\\n' + ` jbrowse add-track ${outputFile} --adapterType AllVsAllIndexedPAFAdapter -a ${[...samples].sort().join(',')} --load copy` : 'Next, add it as a synteny track (set -a to your query,target assembly names):\\n' + ` jbrowse add-track ${outputFile} -a query,target --load copy`;\n console.log(`Created ${outputFile} and ${indexFile}\\n\\n${nextCommand}`);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-pif/index.ts?\n}");
383
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _process_utils_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../process-utils.ts */ \"./src/commands/process-utils.ts\");\n/* harmony import */ var _shared_validators_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/validators.ts */ \"./src/commands/shared/validators.ts\");\n/* harmony import */ var _pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pif-generator.ts */ \"./src/commands/make-pif/pif-generator.ts\");\n\n\n\n\n\n\nasync function run(args) {\n const options = {\n help: {\n type: 'boolean',\n short: 'h'\n },\n out: {\n type: 'string',\n description: 'Where to write the output file. will write ${file}.pif.gz and ${file}.pif.gz.tbi'\n },\n csi: {\n type: 'boolean',\n description: 'Create a CSI index for the PIF file instead of TBI'\n },\n coarse: {\n type: 'string',\n description: 'Accuracy bound (bp) of the coarse tier. A coarse row replaces its CIGAR with a coarse CIGAR (cr:Z:) that keeps every indel longer than half this length and folds the rest into runs, each run staying within this many bp of the real alignment. Defaults to 10000. The coarse tier (prefix T/Q) is emitted alongside the per-row CIGAR fine tier by default so whole-genome synteny views can auto-switch to it; pass --no-coarse to omit it.'\n },\n 'no-coarse': {\n type: 'boolean',\n description: 'Do not emit the coarse tier; write only the per-row CIGAR fine tier.'\n },\n threads: {\n type: 'string',\n description: 'Compression threads for bgzip. Defaults to 4. Raise it on a machine with cores to spare, or set 1 to leave the rest of the machine alone.'\n }\n };\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_1__.parseArgs)({\n args,\n options,\n allowPositionals: true\n });\n const description = 'creates pairwise indexed PAF (PIF), with bgzip and tabix';\n const examples = ['# creates input.pif.gz and input.pif.gz.tbi in the same directory', '$ jbrowse make-pif input.paf', '', '# specify the output file, also creates output.pif.gz.tbi', '$ jbrowse make-pif input.paf --out output.pif.gz', '', '# use a CSI index for assemblies with chromosomes longer than ~512 Mb', '$ jbrowse make-pif input.paf --csi', '', '# a looser coarse tier: runs within 50kb of the alignment, indels over 25kb kept', '$ jbrowse make-pif input.paf --coarse 50000', '', '# emit only the per-row CIGAR fine tier, skipping the coarse tier', '$ jbrowse make-pif input.paf --no-coarse', '', '# give bgzip more (or fewer) compression threads than the default 4', '$ jbrowse make-pif input.paf --threads 8'];\n const notes = 'Use --csi for assemblies containing sequences longer than ~512 Mb. The ' + 'default TBI index cannot address coordinates beyond 2^29 (~536 Mb), so a ' + 'CSI index is required for large chromosomes (e.g. some plant and ' + 'amphibian genomes). Requires sh, sort, bgzip, and tabix on the PATH.';\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_2__.printHelp)({\n description,\n examples,\n notes,\n usage: 'jbrowse make-pif <file> [options]',\n options\n });\n return;\n }\n const file = positionals[0];\n (0,_shared_validators_ts__WEBPACK_IMPORTED_MODULE_4__.validateFileArgument)(file, 'make-pif', 'paf');\n (0,_shared_validators_ts__WEBPACK_IMPORTED_MODULE_4__.validateRequiredCommands)(['sh', 'sort', 'tabix', 'bgzip']);\n const {\n out,\n csi = false,\n coarse,\n 'no-coarse': noCoarse = false,\n threads\n } = flags;\n const outputFile = (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__.getOutputFilename)(file, out);\n // --no-coarse used to silently win over an explicit --coarse, so a run asking\n // for both wrote a file with no coarse tier and said nothing about it\n if (noCoarse && coarse !== undefined) {\n throw new Error('--coarse and --no-coarse are mutually exclusive');\n }\n const coarseGap = noCoarse ? undefined : coarse === undefined ? _pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_COARSE_GAP : +coarse;\n // a whole number because the header states it as an `i` tag, and positive\n // because a coarse row without a fold means \"one run within the bound\"\n if (coarseGap !== undefined && (!Number.isInteger(coarseGap) || coarseGap <= 0)) {\n throw new Error(`Invalid --coarse value: ${coarse} (must be a positive whole number of bp)`);\n }\n const bgzipThreads = threads === undefined ? _pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_BGZIP_THREADS : +threads;\n if (!Number.isInteger(bgzipThreads) || bgzipThreads < 1) {\n throw new Error(`Invalid --threads value: ${threads}`);\n }\n const indexExt = csi ? 'csi' : 'tbi';\n const indexFile = `${outputFile}.${indexExt}`;\n // The pipeline writes under a temporary name, renamed into place only once\n // the pass, the pipeline and the row census have all succeeded: a truncated\n // .paf.gz or a non-PAF input used to leave a valid, indexed PIF of whatever\n // preceded the failure, which a build script reads as done.\n const partFile = `${outputFile}.part`;\n const partIndex = `${partFile}.${indexExt}`;\n const child = (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__.spawnSortProcess)(partFile, csi, bgzipThreads);\n const closed = (0,_process_utils_ts__WEBPACK_IMPORTED_MODULE_3__.waitForProcessClose)(child);\n const pass = await (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__.createPIF)(file, child.stdin, coarseGap).then(stats => ({\n stats\n }), error => ({\n error: error instanceof Error ? error : new Error(String(error))\n }));\n child.stdin.end();\n // no SIGPIPE exemption here (unlike sort-gff/sort-bed): this pipeline's output\n // is the .pif.gz file, so anything that killed it early left that file broken\n const exit = await closed;\n const discardPart = () => {\n node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(partFile, {\n force: true\n });\n node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(partIndex, {\n force: true\n });\n };\n if ('error' in pass) {\n discardPart();\n throw pass.error;\n }\n if (exit.code !== 0) {\n discardPart();\n throw new Error(`PIF sort/index pipeline exited with ${(0,_process_utils_ts__WEBPACK_IMPORTED_MODULE_3__.describeExit)(exit)}`);\n }\n const {\n stats\n } = pass;\n const {\n samples,\n rows,\n skipped\n } = stats;\n if (rows === 0) {\n discardPart();\n throw new Error(`No valid PAF rows found in ${file ?? 'stdin'} (${skipped} line(s) had fewer than the 12 mandatory PAF columns). Is this a PAF file?`);\n }\n node_fs__WEBPACK_IMPORTED_MODULE_0___default().renameSync(partFile, outputFile);\n node_fs__WEBPACK_IMPORTED_MODULE_0___default().renameSync(partIndex, indexFile);\n if (skipped > 0) {\n console.warn(`Warning: skipped ${skipped} of ${rows + skipped} line(s) with fewer than the 12 mandatory PAF columns`);\n }\n\n // An all-vs-all PAF that does not state every pair indexes perfectly well and\n // then draws an empty synteny band for each pair the aligner never emitted,\n // which reads as \"no homology here\" rather than as \"never computed\". This is\n // the moment someone is looking at the file, and the census it needs was\n // already taken on the pass above.\n const missing = (0,_pif_generator_ts__WEBPACK_IMPORTED_MODULE_5__.missingPairs)(stats);\n if (missing.length > 0) {\n const shown = missing.slice(0, 5).map(([a, b]) => `${a}<->${b}`).join(', ');\n const rest = missing.length - Math.min(missing.length, 5);\n console.warn(`Warning: this file has ${samples.size} samples but states only ` + `${samples.size * (samples.size - 1) / 2 - missing.length} of their ` + `${samples.size * (samples.size - 1) / 2} pairs. Synteny bands for the ` + `missing pairs (${shown}${rest > 0 ? `, and ${rest} more` : ''}) will draw ` + `empty. That is what a reference-anchored alignment looks like — only ` + `pairs involving the reference are stated. Order the synteny rows so the ` + `reference sits between the others, use a complete all-vs-all if the ` + `project publishes one, or view a larger cohort as a multiple alignment ` + `(MAF) rather than a stack of pairwise bands.`);\n }\n const nextCommand = samples.size > 0 ? 'Next, add it as an all-vs-all synteny track (PanSN names detected):\\n' + ` jbrowse add-track ${outputFile} --adapterType AllVsAllIndexedPAFAdapter -a ${[...samples].sort().join(',')} --load copy` : 'Next, add it as a synteny track (set -a to your query,target assembly names):\\n' + ` jbrowse add-track ${outputFile} -a query,target --load copy`;\n console.log(`Created ${outputFile} and ${indexFile}\\n\\n${nextCommand}`);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-pif/index.ts?\n}");
362
384
 
363
385
  /***/ },
364
386
 
@@ -369,7 +391,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
369
391
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
370
392
 
371
393
  "use strict";
372
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_COARSE_SPLIT_GAP: () => (/* binding */ DEFAULT_COARSE_SPLIT_GAP),\n/* harmony export */ createPIF: () => (/* binding */ createPIF),\n/* harmony export */ getOutputFilename: () => (/* binding */ getOutputFilename),\n/* harmony export */ missingPairs: () => (/* binding */ missingPairs),\n/* harmony export */ spawnSortProcess: () => (/* binding */ spawnSortProcess)\n/* harmony export */ });\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:child_process */ \"node:child_process\");\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_child_process__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! node:stream */ \"node:stream\");\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(node_stream__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var node_stream_promises__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! node:stream/promises */ \"node:stream/promises\");\n/* harmony import */ var node_stream_promises__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(node_stream_promises__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var node_zlib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! node:zlib */ \"node:zlib\");\n/* harmony import */ var node_zlib__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(node_zlib__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @jbrowse/cigar-utils */ \"../../packages/cigar-utils/src/cigarReorient.ts\");\n/* harmony import */ var _jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @jbrowse/cigar-utils */ \"../../packages/cigar-utils/src/csToCigar.ts\");\n/* harmony import */ var _jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @jbrowse/cigar-utils */ \"../../packages/cigar-utils/src/pafIdentity.ts\");\n/* harmony import */ var _cigar_utils_ts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./cigar-utils.ts */ \"./src/commands/make-pif/cigar-utils.ts\");\n\n\n\n\n\n\n\n\n// Default split gap (bp) for the coarse tier. A row is broken into multiple\n// coarse pieces wherever a CIGAR insertion/deletion is at least this long, so\n// each coarse row's bounding box stays tight. 10kb matches the adapter's\n// default coarseBpPerPxThreshold (~1px at the zoom where the coarse tier is\n// served), so smaller gaps that would be sub-pixel there don't fragment rows.\nconst DEFAULT_COARSE_SPLIT_GAP = 10_000;\n\n// What one pass over the PAF observed, for the caller's summary and warnings.\n// `samples` collects the PanSN sample prefixes (`sample#…` → `sample`) seen: a\n// non-empty set means the input is all-vs-all rather than pairwise, and the\n// samples are the assembly names to suggest in the add-track command. `skipped`\n// counts rows that were not valid PAF, which would otherwise leave an empty file\n// and a success message.\n\nfunction panSNSample(refName) {\n const i = refName.indexOf('#');\n return i === -1 ? undefined : refName.slice(0, i);\n}\nfunction addPanSNPair(stats, c1, c2) {\n const a = panSNSample(c1);\n const b = panSNSample(c2);\n if (a !== undefined) {\n stats.samples.add(a);\n }\n if (b !== undefined) {\n stats.samples.add(b);\n }\n if (a !== undefined && b !== undefined && a !== b) {\n stats.pairs.add(a < b ? `${a}\\u0000${b}` : `${b}\\u0000${a}`);\n }\n}\n\n/**\n * The sample pairs a complete all-vs-all would state but this file does not.\n * Empty for a pairwise PAF (no PanSN names) and for a genuinely complete file.\n */\nfunction missingPairs({\n samples,\n pairs\n}) {\n const sorted = [...samples].sort();\n const out = [];\n for (let i = 0; i < sorted.length; i++) {\n for (let j = i + 1; j < sorted.length; j++) {\n const a = sorted[i];\n const b = sorted[j];\n if (!pairs.has(`${a}\\u0000${b}`)) {\n out.push([a, b]);\n }\n }\n }\n return out;\n}\n\n// One piece of a row's coarse tier: its bounds plus the num_matches/block_len it\n// reports. Multi-piece rows get the row's PAF totals apportioned by aligned\n// length, so every piece implies the same identity as the row (and as the `de:f:`\n// written beside it) and the pieces sum back to the row.\n\nfunction coarsePieces({\n cigar,\n strand,\n tstart,\n tend,\n qstart,\n qend,\n numMatches,\n blockLen,\n splitGap\n}) {\n const whole = {\n tstart,\n tend,\n qstart,\n qend,\n numMatches,\n blockLen\n };\n const split = cigar && splitGap > 0 ? (0,_cigar_utils_ts__WEBPACK_IMPORTED_MODULE_9__.splitCigarOnLargeGaps)({\n cigar,\n strand,\n tstart,\n tend,\n qstart,\n qend,\n splitGap\n }) : undefined;\n // The walk's reconstruction is taken only when it CLOSED on the row's own far\n // corner (see `CigarSplit.closed`) — otherwise the columns are what the fine\n // tier draws and the coarse row must not drift off them.\n //\n // Closure rather than a piece count: `segments.length < 2` read as \"nothing to\n // split on\", but a large gap at either END also yields a single piece, a\n // genuine tightening that was being thrown away for the loose box. It is the\n // ordinary case below the default `--coarse`. The count also never noticed a\n // MULTI-piece walk that failed to close, which is the case it was written for.\n return split?.closed && split.segments.length > 0 ? split.segments.map(seg => ({\n ...seg,\n numMatches: blockLen > 0 ? Math.round(numMatches * seg.blockLen / blockLen) : 0\n })) : [whole];\n}\n\n// A PIF row carries exactly ONE alignment string — `cg:Z:`, in the orientation\n// of the perspective it is indexed under. A minimap2 `cs:Z:` is folded into that\n// CIGAR and never emitted, for two reasons:\n//\n// - `cs` has its own orientation, and reorienting it means reversing op order\n// AND reverse-complementing the spelled-out bases. Keeping an unflipped `cs`\n// beside a flipped `cg` is silently wrong rather than merely lossy:\n// `SyntenyFeature.forEachMismatch` prefers `cs`, so a row from\n// `minimap2 -c --cs` (which emits both tags) drew every indel with reversed\n// sense from the query perspective.\n// - `csToCigar` yields `=`/`X`, so folding a `cs` in is strictly MORE\n// informative than minimap2's own M-style `cg` — which is why `cs` wins when\n// a row carries both. The substituted base letters are the only thing lost;\n// mismatch positions survive as `X`.\n//\n// Returns the rewritten optional-tag list and where the surviving alignment\n// string sits in it (-1 when the row carries none).\nfunction foldCsIntoCg(tags) {\n const csIdx = tags.findIndex(f => f.startsWith('cs:Z'));\n if (csIdx === -1) {\n return {\n tags,\n cigarIdx: tags.findIndex(f => f.startsWith('cg:Z'))\n };\n }\n const folded = `cg:Z:${(0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_7__.csToCigar)(tags[csIdx].slice(5))}`;\n const rewritten = tags.flatMap((f, i) => i === csIdx ? [folded] : f.startsWith('cg:Z') ? [] : [f]);\n return {\n tags: rewritten,\n cigarIdx: rewritten.indexOf(folded)\n };\n}\n\n// Coarse identity must match the fine tier exactly, or coloring jumps at the\n// zoom where the view switches tiers. So it is written off the SAME function the\n// adapters read the fine tier with (de:f: tag, then odgi's id:f:, then\n// num_matches/block_len) rather than a private copy of that chain — a copy is\n// what previously skipped the id:f: rung. A CIGAR recompute is deliberately not\n// in the chain at all: a cg (M-style) CIGAR folds mismatches into M, so it would\n// report ~0 divergence (spurious 100% identity) for a divergent alignment.\n//\n// When the row's own de:f: is what the reader lands on, that string is passed\n// through byte-for-byte rather than recomputed: a round trip through toFixed(6)\n// would silently truncate a 7-decimal tag and drift the two tiers apart by the\n// exact mechanism this is guarding against.\nfunction coarseDivergence(tags, numMatches, blockLen) {\n const rawDe = tags.find(f => f.startsWith('de:f:'))?.slice(5);\n const identity = (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_8__.pafIdentity)({\n de: rawDe,\n id: tags.find(f => f.startsWith('id:f:'))?.slice(5),\n numMatches,\n blockLen\n });\n return rawDe !== undefined && 1 - +rawDe === identity ? rawDe : (1 - identity).toFixed(6);\n}\nfunction pifRow(fields) {\n return `${fields.join('\\t')}\\n`;\n}\nfunction processLine(line, coarseSplitGap, stats) {\n if (line.startsWith('#')) {\n return '';\n }\n const parts = line.split('\\t');\n // A valid PAF row has 12 mandatory columns; anything shorter (blank, or\n // truncated) would produce NaN coords, so skip it rather than emit garbage.\n if (parts.length < 12) {\n stats.skipped++;\n return '';\n }\n stats.rows++;\n // rest[0]=num_matches, rest[1]=block_len, rest[2]=mapq, rest[3+]=optional tags\n const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = parts;\n addPanSNPair(stats, c1, c2);\n const {\n tags,\n cigarIdx\n } = foldCsIntoCg(rest);\n const cigar = cigarIdx === -1 ? undefined : tags[cigarIdx].slice(5);\n\n // the t-row keeps the CIGAR as PAF spelled it (target perspective); the q-row\n // re-orients it for the query perspective it is indexed under\n const queryTags = cigar === undefined ? tags : tags.map((f, i) => i === cigarIdx ? `cg:Z:${strand === '-' ? (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__.flipCigar)(cigar) : (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__.swapIndelCigar)(cigar)}` : f);\n const fineRows = pifRow([`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...tags]) + pifRow([`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...queryTags]);\n if (coarseSplitGap === undefined) {\n return fineRows;\n }\n const numMatches = +tags[0];\n const blockLen = +tags[1];\n const mapq = tags[2];\n // Every optional tag except the alignment string itself rides along, so a\n // click on a coarse ribbon shows the same attributes as the same alignment\n // does zoomed in (rustybam's tags, minimap2's tp/cm/s1, odgi's id). Only the\n // CIGAR is dropped — dropping it is the entire point of the tier — and de:f:,\n // which is rewritten below. No `cs:Z:` can reach here: it was folded into the\n // cg above, since a PIF row carries one alignment string.\n const passthrough = tags.slice(3).filter(f => !f.startsWith('cg:Z:') && !f.startsWith('de:f:'));\n const de = coarseDivergence(tags, numMatches, blockLen);\n return fineRows + coarsePieces({\n cigar,\n strand: strand,\n tstart: +s2,\n tend: +e2,\n qstart: +s1,\n qend: +e1,\n numMatches,\n blockLen,\n splitGap: coarseSplitGap\n }).flatMap(piece => {\n const tail = [piece.numMatches, piece.blockLen, mapq, ...passthrough, `de:f:${de}`];\n const {\n tstart,\n tend,\n qstart,\n qend\n } = piece;\n return [pifRow([`T${c2}`, l2, tstart, tend, strand, c1, l1, qstart, qend, ...tail]), pifRow([`Q${c1}`, l1, qstart, qend, strand, c2, l2, tstart, tend, ...tail])];\n }).join('');\n}\nfunction makePifTransform(coarseSplitGap, stats) {\n let tail = '';\n return new node_stream__WEBPACK_IMPORTED_MODULE_3__.Transform({\n transform(chunk, _enc, callback) {\n const data = tail + chunk.toString('utf8');\n const lastNl = data.lastIndexOf('\\n');\n if (lastNl === -1) {\n tail = data;\n callback();\n return;\n }\n tail = data.slice(lastNl + 1);\n callback(null, data.slice(0, lastNl).split('\\n').filter(Boolean).map(l => processLine(l, coarseSplitGap, stats)).join(''));\n },\n flush(callback) {\n callback(null, tail ? processLine(tail, coarseSplitGap, stats) : '');\n }\n });\n}\n\n// resolves to what the pass observed: the PanSN samples (empty for a pairwise\n// PAF), so the caller can suggest the right adapter and assembly names, and the\n// row/skip counts so it can warn on a file that was not PAF at all\nasync function createPIF(filename, stream, coarseSplitGap) {\n const stats = {\n samples: new Set(),\n pairs: new Set(),\n rows: 0,\n skipped: 0\n };\n const transform = makePifTransform(coarseSplitGap, stats);\n if (filename) {\n const source = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.createReadStream)(filename);\n await (/\\.b?gz$/i.test(filename) ? (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_4__.pipeline)(source, (0,node_zlib__WEBPACK_IMPORTED_MODULE_5__.createGunzip)(), transform, stream) : (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_4__.pipeline)(source, transform, stream));\n } else {\n await (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_4__.pipeline)(process.stdin, transform, stream);\n }\n return stats;\n}\nfunction spawnSortProcess(outputFile, useCsi) {\n const sortCmd = `sort -t\"\\`printf '\\\\t'\\`\" -k1,1 -k3,3n`;\n const bgzipCommand = `bgzip > \"$1\"`;\n const tabixCommand = `tabix ${useCsi ? '-C ' : ''}-s1 -b3 -e4 -0 \"$1\"`;\n // `&&` (not `;`) so a bgzip failure aborts before tabix runs and propagates\n // as the pipeline's exit code. The output path is passed as the shell's \"$1\"\n // positional rather than interpolated into the command string, so a path\n // with shell metacharacters (`\"`, `$(...)`, backticks) can't break out and\n // execute — same technique as sort-utils.ts. useCsi is a fixed literal.\n const fullCommand = `${sortCmd} | ${bgzipCommand} && ${tabixCommand}`;\n return (0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawn)('sh', ['-c', fullCommand, 'sh', outputFile], {\n env: {\n ...process.env,\n LC_ALL: 'C'\n },\n stdio: ['pipe', process.stdout, process.stderr]\n });\n}\nfunction getOutputFilename(file, out) {\n // strip .paf or .paf.gz so a gzipped input doesn't yield input.paf.gz.pif.gz\n const base = node_path__WEBPACK_IMPORTED_MODULE_2___default().basename(file || 'output').replace(/\\.paf(\\.gz)?$/i, '');\n return out || `${base}.pif.gz`;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-pif/pif-generator.ts?\n}");
394
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_BGZIP_THREADS: () => (/* binding */ DEFAULT_BGZIP_THREADS),\n/* harmony export */ DEFAULT_COARSE_GAP: () => (/* binding */ DEFAULT_COARSE_GAP),\n/* harmony export */ createPIF: () => (/* binding */ createPIF),\n/* harmony export */ getOutputFilename: () => (/* binding */ getOutputFilename),\n/* harmony export */ missingPairs: () => (/* binding */ missingPairs),\n/* harmony export */ pifHeader: () => (/* binding */ pifHeader),\n/* harmony export */ spawnSortProcess: () => (/* binding */ spawnSortProcess)\n/* harmony export */ });\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:child_process */ \"node:child_process\");\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_child_process__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! node:stream */ \"node:stream\");\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(node_stream__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var node_stream_promises__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! node:stream/promises */ \"node:stream/promises\");\n/* harmony import */ var node_stream_promises__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(node_stream_promises__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var node_zlib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! node:zlib */ \"node:zlib\");\n/* harmony import */ var node_zlib__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(node_zlib__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @jbrowse/cigar-utils */ \"../../packages/cigar-utils/src/coarseCigar.ts\");\n/* harmony import */ var _jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @jbrowse/cigar-utils */ \"../../packages/cigar-utils/src/cigarReorient.ts\");\n/* harmony import */ var _jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @jbrowse/cigar-utils */ \"../../packages/cigar-utils/src/csToCigar.ts\");\n\n\n\n\n\n\n\n// Default gap (bp) of the coarse tier's coarse CIGAR: how far a straight line\n// across one of its runs may be from the alignment's real path. Indels longer\n// than half of it keep their letter; shorter ones fold into the runs. 10kb\n// matches the adapter's default coarseBpPerPxThreshold, so at the zoom where the\n// tier is served the bound is ~1px and a folded indel was sub-pixel anyway.\nconst DEFAULT_COARSE_GAP = 10_000;\n\n// What one pass over the PAF observed, for the caller's summary and warnings.\n// `samples` collects the PanSN sample prefixes (`sample#…` → `sample`) seen: a\n// non-empty set means the input is all-vs-all rather than pairwise, and the\n// samples are the assembly names to suggest in the add-track command. `skipped`\n// counts rows that were not valid PAF, which would otherwise leave an empty file\n// and a success message.\n\n/**\n * The one meta line a PIF carries, sorted first by the C-locale sort and kept\n * by tabix as a header. It states the format generation, the tiers written,\n * the coarse tier's accuracy bound (`--coarse`), and whether every input row\n * had a CIGAR — the facts a reader cannot recover from the rows.\n */\nfunction pifHeader(coarseGap, stats) {\n const cigars = stats.cigarRows === 0 ? 'none' : stats.cigarRows === stats.rows && stats.unboundedRows === 0 ? 'all' : 'some';\n const tiers = coarseGap === undefined ? 'fine' : 'fine,coarse';\n const bound = coarseGap === undefined ? '' : `\\tcoarse:i:${coarseGap}`;\n return `#pif\\tversion:i:1\\ttiers:Z:${tiers}${bound}\\tcigars:Z:${cigars}\\n`;\n}\nfunction panSNSample(refName) {\n const i = refName.indexOf('#');\n return i === -1 ? undefined : refName.slice(0, i);\n}\nfunction addPanSNPair(stats, c1, c2) {\n const a = panSNSample(c1);\n const b = panSNSample(c2);\n if (a !== undefined) {\n stats.samples.add(a);\n }\n if (b !== undefined) {\n stats.samples.add(b);\n }\n if (a !== undefined && b !== undefined && a !== b) {\n stats.pairs.add(a < b ? `${a}\\u0000${b}` : `${b}\\u0000${a}`);\n }\n}\n\n/**\n * The sample pairs a complete all-vs-all would state but this file does not.\n * Empty for a pairwise PAF (no PanSN names) and for a genuinely complete file.\n */\nfunction missingPairs({\n samples,\n pairs\n}) {\n const sorted = [...samples].sort();\n const out = [];\n for (let i = 0; i < sorted.length; i++) {\n for (let j = i + 1; j < sorted.length; j++) {\n const a = sorted[i];\n const b = sorted[j];\n if (!pairs.has(`${a}\\u0000${b}`)) {\n out.push([a, b]);\n }\n }\n }\n return out;\n}\n\n// The coarse row's `cr:Z:` value, or nothing, and whether withholding it left\n// the row making a claim it cannot keep.\n//\n// `ops` is nothing when the row has no CIGAR, when the fold is a single run\n// (the coordinate columns already say it all), and when the walk does not close\n// on the row's own far corner — clipping ops, a hand-made cg, a cs whose spans\n// don't add up — since the columns are what the fine tier draws and the coarse\n// row must not disagree with them. A fold of several runs with no kept indel is\n// still written: the runs are where a lopsided cluster of small indels bends\n// the path, which a straight ribbon across the row would miss by up to the\n// whole cluster.\n//\n// `unbounded` separates the last of those from the rest. The first two leave a\n// tagless row a reader may take as one run within `--coarse`, and it is one; a\n// walk that misses its own corner leaves a row that reads the same way and is\n// not, so the header has to stop saying `cigars:Z:all` on its account.\nfunction coarseFold({\n cigar,\n coarseGap,\n ownLen,\n mateLen\n}) {\n const coarse = cigar === undefined ? undefined : (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__.coarsenCigar)(cigar, coarseGap);\n const closed = coarse !== undefined && coarse.ownLen === ownLen && coarse.mateLen === mateLen;\n return {\n ops: closed && (coarse.gapCount > 0 || coarse.opCount > 1) ? coarse.ops : undefined,\n unbounded: cigar !== undefined && !closed\n };\n}\n\n// A PIF row carries exactly ONE alignment string — `cg:Z:`, in the orientation\n// of the perspective it is indexed under. A minimap2 `cs:Z:` is folded into that\n// CIGAR and never emitted, for two reasons:\n//\n// - `cs` has its own orientation, and reorienting it means reversing op order\n// AND reverse-complementing the spelled-out bases. Keeping an unflipped `cs`\n// beside a flipped `cg` is silently wrong rather than merely lossy:\n// `SyntenyFeature.forEachMismatch` prefers `cs`, so a row from\n// `minimap2 -c --cs` (which emits both tags) drew every indel with reversed\n// sense from the query perspective.\n// - `csToCigar` yields `=`/`X`, so folding a `cs` in is strictly MORE\n// informative than minimap2's own M-style `cg` — which is why `cs` wins when\n// a row carries both. The substituted base letters are the only thing lost;\n// mismatch positions survive as `X`.\n//\n// Returns the rewritten optional-tag list and where the surviving alignment\n// string sits in it (-1 when the row carries none).\nfunction foldCsIntoCg(tags) {\n const csIdx = tags.findIndex(f => f.startsWith('cs:Z'));\n if (csIdx === -1) {\n return {\n tags,\n cigarIdx: tags.findIndex(f => f.startsWith('cg:Z'))\n };\n }\n const folded = `cg:Z:${(0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_8__.csToCigar)(tags[csIdx].slice(5))}`;\n const rewritten = tags.flatMap((f, i) => i === csIdx ? [folded] : f.startsWith('cg:Z') ? [] : [f]);\n return {\n tags: rewritten,\n cigarIdx: rewritten.indexOf(folded)\n };\n}\nfunction pifRow(fields) {\n return `${fields.join('\\t')}\\n`;\n}\nfunction processLine(rawLine, coarseGap, stats) {\n const line = rawLine.endsWith('\\r') ? rawLine.slice(0, -1) : rawLine;\n if (line.startsWith('#')) {\n return '';\n }\n const parts = line.split('\\t');\n // A valid PAF row has 12 mandatory columns; anything shorter (blank, or\n // truncated) would produce NaN coords, so skip it rather than emit garbage.\n if (parts.length < 12) {\n stats.skipped++;\n return '';\n }\n stats.rows++;\n // rest[0]=num_matches, rest[1]=block_len, rest[2]=mapq, rest[3+]=optional tags\n const [c1, l1, s1, e1, strand, c2, l2, s2, e2, ...rest] = parts;\n addPanSNPair(stats, c1, c2);\n\n // an incoming cr:Z: (a PIF turned back into PAF, or a tool that adopted the\n // tag) is dropped from both tiers: the fine tier never carries one, and the\n // coarse tier writes its own below\n const {\n tags,\n cigarIdx\n } = foldCsIntoCg(rest.filter(f => !f.startsWith('cr:Z:')));\n const cigar = cigarIdx === -1 ? undefined : tags[cigarIdx].slice(5);\n if (cigar !== undefined) {\n stats.cigarRows++;\n }\n\n // the t-row keeps the CIGAR as PAF spelled it (target perspective); the q-row\n // re-orients it for the query perspective it is indexed under\n const queryTags = cigar === undefined ? tags : tags.map((f, i) => i === cigarIdx ? `cg:Z:${strand === '-' ? (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_7__.flipCigar)(cigar) : (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_7__.swapIndelCigar)(cigar)}` : f);\n const fineRows = pifRow([`t${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...tags]) + pifRow([`q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...queryTags]);\n if (coarseGap === undefined) {\n return fineRows;\n }\n\n // the coarse row is the fine row with its CIGAR replaced by the fold and\n // every other column and tag verbatim, so a click and the identity coloring\n // read the same on both tiers\n const coarse = cigarIdx === -1 ? tags : tags.filter((_, i) => i !== cigarIdx);\n // the T row's own axis is the target, as the PAF CIGAR is written; the Q row\n // re-orients it for the query, the way the fine tier's cg is\n const {\n ops: cr,\n unbounded\n } = coarseFold({\n cigar,\n coarseGap,\n ownLen: +e2 - +s2,\n mateLen: +e1 - +s1\n });\n if (unbounded) {\n stats.unboundedRows++;\n }\n const tCr = cr === undefined ? [] : [`cr:Z:${cr}`];\n const qCr = cr === undefined ? [] : [`cr:Z:${strand === '-' ? (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__.flipCoarseCigar)(cr) : (0,_jbrowse_cigar_utils__WEBPACK_IMPORTED_MODULE_6__.swapCoarseCigar)(cr)}`];\n return fineRows + pifRow([`T${c2}`, l2, s2, e2, strand, c1, l1, s1, e1, ...coarse, ...tCr]) + pifRow([`Q${c1}`, l1, s1, e1, strand, c2, l2, s2, e2, ...coarse, ...qCr]);\n}\nfunction makePifTransform(coarseGap, stats) {\n let tail = '';\n return new node_stream__WEBPACK_IMPORTED_MODULE_3__.Transform({\n transform(chunk, _enc, callback) {\n const data = tail + chunk.toString('utf8');\n const lastNl = data.lastIndexOf('\\n');\n if (lastNl === -1) {\n tail = data;\n callback();\n return;\n }\n tail = data.slice(lastNl + 1);\n callback(null, data.slice(0, lastNl).split('\\n').filter(Boolean).map(l => processLine(l, coarseGap, stats)).join(''));\n },\n flush(callback) {\n // the header goes out last and sorts first: the counts it states are\n // only known once every row has been seen, and `#` precedes every tier\n // letter in the C locale\n callback(null, (tail ? processLine(tail, coarseGap, stats) : '') + pifHeader(coarseGap, stats));\n }\n });\n}\n\n// resolves to what the pass observed: the PanSN samples (empty for a pairwise\n// PAF), so the caller can suggest the right adapter and assembly names, and the\n// row/skip counts so it can warn on a file that was not PAF at all\nasync function createPIF(filename, stream, coarseGap) {\n const stats = {\n samples: new Set(),\n pairs: new Set(),\n rows: 0,\n cigarRows: 0,\n unboundedRows: 0,\n skipped: 0\n };\n const transform = makePifTransform(coarseGap, stats);\n if (filename) {\n const source = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.createReadStream)(filename);\n await (/\\.b?gz$/i.test(filename) ? (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_4__.pipeline)(source, (0,node_zlib__WEBPACK_IMPORTED_MODULE_5__.createGunzip)(), transform, stream) : (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_4__.pipeline)(source, transform, stream));\n } else {\n await (0,node_stream_promises__WEBPACK_IMPORTED_MODULE_4__.pipeline)(process.stdin, transform, stream);\n }\n return stats;\n}\n\n// bgzip is the only stage of this pipeline that cannot use more than one core on\n// its own: sort parallelizes itself and tabix is I/O bound. 4 is enough to take\n// compression off the critical path on the files this command is pointed at\n// without claiming a whole machine.\nconst DEFAULT_BGZIP_THREADS = 4;\nfunction spawnSortProcess(outputFile, useCsi, threads = DEFAULT_BGZIP_THREADS) {\n // -s: tabix wants the rows ordered by (refName, start) and by nothing else,\n // so the whole-line comparison a non-stable sort falls back to on a tie is\n // comparing multi-kb CIGARs to pick an order no reader can observe\n const sortCmd = `sort -s -t\"\\`printf '\\\\t'\\`\" -k1,1 -k3,3n`;\n const bgzipCommand = `bgzip -@ ${threads} > \"$1\"`;\n const tabixCommand = `tabix ${useCsi ? '-C ' : ''}-s1 -b3 -e4 -0 \"$1\"`;\n // `&&` (not `;`) so a bgzip failure aborts before tabix runs and propagates\n // as the pipeline's exit code. The output path is passed as the shell's \"$1\"\n // positional rather than interpolated into the command string, so a path\n // with shell metacharacters (`\"`, `$(...)`, backticks) can't break out and\n // execute — same technique as sort-utils.ts. useCsi is a fixed literal, and\n // the caller has already checked threads is a positive integer.\n const fullCommand = `${sortCmd} | ${bgzipCommand} && ${tabixCommand}`;\n return (0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawn)('sh', ['-c', fullCommand, 'sh', outputFile], {\n env: {\n ...process.env,\n LC_ALL: 'C'\n },\n stdio: ['pipe', process.stdout, process.stderr]\n });\n}\nfunction getOutputFilename(file, out) {\n // strip .paf or .paf.gz so a gzipped input doesn't yield input.paf.gz.pif.gz\n const base = node_path__WEBPACK_IMPORTED_MODULE_2___default().basename(file || 'output').replace(/\\.paf(\\.gz)?$/i, '');\n return out || `${base}.pif.gz`;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/make-pif/pif-generator.ts?\n}");
373
395
 
374
396
  /***/ },
375
397
 
@@ -417,6 +439,17 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
417
439
 
418
440
  /***/ },
419
441
 
442
+ /***/ "./src/commands/shared/density.ts"
443
+ /*!****************************************!*\
444
+ !*** ./src/commands/shared/density.ts ***!
445
+ \****************************************/
446
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
447
+
448
+ "use strict";
449
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ densitySidecarPath: () => (/* binding */ densitySidecarPath)\n/* harmony export */ });\n/**\n * Where the density sidecar for a data file lives: `<file>.density.bw`, with a\n * `.gz`/`.bgz` stripped first so `genes.gff3.gz` yields `genes.gff3.density.bw`\n * rather than a name carrying the compression of a file it is not compressed\n * like.\n *\n * One rule, two commands: `make-density` writes here by default and `add-track`\n * probes here, so a sidecar built with no `--out` is the one the track picks up.\n */\nfunction densitySidecarPath(file) {\n return `${file.replace(/\\.b?gz$/i, '')}.density.bw`;\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/shared/density.ts?\n}");
450
+
451
+ /***/ },
452
+
420
453
  /***/ "./src/commands/shared/sort-utils.ts"
421
454
  /*!*******************************************!*\
422
455
  !*** ./src/commands/shared/sort-utils.ts ***!
@@ -534,7 +567,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
534
567
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
535
568
 
536
569
  "use strict";
537
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ indexDriver: () => (/* binding */ indexDriver),\n/* harmony export */ prepareFileTrackConfigs: () => (/* binding */ prepareFileTrackConfigs)\n/* harmony export */ });\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:stream */ \"node:stream\");\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_stream__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jbrowse/text-indexing-core */ \"../../packages/text-indexing-core/src/types/common.ts\");\n/* harmony import */ var _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jbrowse/text-indexing-core */ \"../../packages/text-indexing-core/src/trixPaths.ts\");\n/* harmony import */ var _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @jbrowse/text-indexing-core */ \"../../packages/text-indexing-core/src/indexFiles.ts\");\n/* harmony import */ var cli_progress__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! cli-progress */ \"../../node_modules/.pnpm/cli-progress@3.12.0/node_modules/cli-progress/cli-progress.js\");\n/* harmony import */ var cli_progress__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(cli_progress__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ixixx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ixixx */ \"../../node_modules/.pnpm/ixixx@3.0.13/node_modules/ixixx/esm/index.js\");\n/* harmony import */ var _types_common_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../types/common.ts */ \"./src/types/common.ts\");\n\n\n\n\n\n\n\n// every index artifact lands in <outLocation>/trix, so the directory is created\n// here rather than by each caller: --dryrun goes nowhere near indexDriver and so\n// no longer leaves an empty trix/ behind\nfunction ensureTrixDir(outLocation) {\n node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_1___default().join(outLocation, _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_4__.TRIX_DIR), {\n recursive: true\n });\n}\nasync function runIxIxx({\n readStream,\n outLocation,\n name,\n prefixSize,\n quiet\n}) {\n const progressBar = new cli_progress__WEBPACK_IMPORTED_MODULE_6__.SingleBar({\n format: '{bar} Sorting and writing index...',\n etaBuffer: 2000\n }, cli_progress__WEBPACK_IMPORTED_MODULE_6__.Presets.shades_classic);\n if (!quiet) {\n progressBar.start(1, 0);\n }\n const {\n ix,\n ixx\n } = (0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_4__.trixFilePaths)(outLocation, name);\n await (0,ixixx__WEBPACK_IMPORTED_MODULE_7__.ixIxxStream)(readStream, ix, ixx, prefixSize);\n if (!quiet) {\n progressBar.update(1);\n progressBar.stop();\n }\n}\nasync function indexDriver({\n trackConfigs,\n attributes,\n outLocation,\n name,\n quiet,\n typesToExclude,\n typesToInclude,\n assemblyNames,\n prefixSize\n}) {\n ensureTrixDir(outLocation);\n const readStream = node_stream__WEBPACK_IMPORTED_MODULE_2__.Readable.from((0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_5__.indexFiles)({\n tracks: trackConfigs,\n attributesToIndex: attributes,\n outDir: outLocation,\n featureTypesToExclude: typesToExclude,\n featureTypesToInclude: typesToInclude,\n makeProgress: quiet ? undefined : trackId => {\n const progressBar = new cli_progress__WEBPACK_IMPORTED_MODULE_6__.SingleBar({\n // eslint-disable-next-line unicorn/no-incorrect-template-string-interpolation -- {bar}/{percentage}/{eta} are cli-progress format tokens, not JS interpolation\n format: `{bar} ${trackId} {percentage}% | ETA: {eta}s`,\n etaBuffer: 2000\n }, cli_progress__WEBPACK_IMPORTED_MODULE_6__.Presets.shades_classic);\n return {\n onStart: totalBytes => {\n progressBar.start(totalBytes, 0);\n },\n onUpdate: receivedBytes => {\n progressBar.update(receivedBytes);\n },\n onDone: () => {\n progressBar.stop();\n }\n };\n }\n }));\n await runIxIxx({\n readStream,\n outLocation,\n name,\n prefixSize,\n quiet\n });\n (0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_3__.generateMeta)({\n configs: trackConfigs,\n attributesToIndex: attributes,\n outDir: outLocation,\n name,\n featureTypesToExclude: typesToExclude,\n featureTypesToInclude: typesToInclude,\n assemblyNames\n });\n}\nfunction prepareFileTrackConfigs(files, fileIds) {\n return files.map((file, i) => {\n const config = (0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_3__.guessAdapterFromFileName)(file);\n if (fileIds?.[i]) {\n config.trackId = fileIds[i];\n }\n // throw rather than silently filtering: a user who named the file with\n // --file should be told it can't be indexed instead of getting a misleading\n // \"successfully created index\" with no output\n if (!(0,_types_common_ts__WEBPACK_IMPORTED_MODULE_8__.supported)(config.adapter?.type)) {\n throw new Error(`Cannot text-index ${file}: adapter type ${config.adapter?.type} is not indexable (only GFF3, GTF and VCF are supported)`);\n }\n return config;\n });\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/text-index/indexing-utils.ts?\n}");
570
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ indexDriver: () => (/* binding */ indexDriver),\n/* harmony export */ prepareFileTrackConfigs: () => (/* binding */ prepareFileTrackConfigs)\n/* harmony export */ });\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ \"node:fs\");\n/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:path */ \"node:path\");\n/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:stream */ \"node:stream\");\n/* harmony import */ var node_stream__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_stream__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jbrowse/text-indexing-core */ \"../../packages/text-indexing-core/src/types/common.ts\");\n/* harmony import */ var _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jbrowse/text-indexing-core */ \"../../packages/text-indexing-core/src/trixPaths.ts\");\n/* harmony import */ var _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @jbrowse/text-indexing-core */ \"../../packages/text-indexing-core/src/indexFiles.ts\");\n/* harmony import */ var cli_progress__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! cli-progress */ \"../../node_modules/.pnpm/cli-progress@3.12.0/node_modules/cli-progress/cli-progress.js\");\n/* harmony import */ var ixixx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ixixx */ \"../../node_modules/.pnpm/ixixx@3.0.13/node_modules/ixixx/esm/index.js\");\n/* harmony import */ var _types_common_ts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../types/common.ts */ \"./src/types/common.ts\");\n\n\n\n\n\n\n\n// every index artifact lands in <outLocation>/trix, so the directory is created\n// here rather than by each caller: --dryrun goes nowhere near indexDriver and so\n// no longer leaves an empty trix/ behind\nfunction ensureTrixDir(outLocation) {\n node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_1___default().join(outLocation, _jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_4__.TRIX_DIR), {\n recursive: true\n });\n}\nasync function runIxIxx({\n readStream,\n outLocation,\n name,\n prefixSize,\n quiet\n}) {\n const progressBar = new cli_progress__WEBPACK_IMPORTED_MODULE_6__.SingleBar({\n format: '{bar} Sorting and writing index...',\n etaBuffer: 2000\n }, cli_progress__WEBPACK_IMPORTED_MODULE_6__.Presets.shades_classic);\n if (!quiet) {\n progressBar.start(1, 0);\n }\n const {\n ix,\n ixx\n } = (0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_4__.trixFilePaths)(outLocation, name);\n await (0,ixixx__WEBPACK_IMPORTED_MODULE_7__.ixIxxStream)(readStream, ix, ixx, prefixSize);\n if (!quiet) {\n progressBar.update(1);\n progressBar.stop();\n }\n}\nasync function indexDriver({\n trackConfigs,\n attributes,\n outLocation,\n name,\n quiet,\n typesToExclude,\n typesToInclude,\n assemblyNames,\n prefixSize\n}) {\n ensureTrixDir(outLocation);\n const readStream = node_stream__WEBPACK_IMPORTED_MODULE_2__.Readable.from((0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_5__.indexFiles)({\n tracks: trackConfigs,\n attributesToIndex: attributes,\n outDir: outLocation,\n featureTypesToExclude: typesToExclude,\n featureTypesToInclude: typesToInclude,\n makeProgress: quiet ? undefined : trackId => {\n const progressBar = new cli_progress__WEBPACK_IMPORTED_MODULE_6__.SingleBar({\n // eslint-disable-next-line unicorn/no-incorrect-template-string-interpolation -- {bar}/{percentage}/{eta} are cli-progress format tokens, not JS interpolation\n format: `{bar} ${trackId} {percentage}% | ETA: {eta}s`,\n etaBuffer: 2000\n }, cli_progress__WEBPACK_IMPORTED_MODULE_6__.Presets.shades_classic);\n return {\n onStart: totalBytes => {\n progressBar.start(totalBytes, 0);\n },\n onUpdate: receivedBytes => {\n progressBar.update(receivedBytes);\n },\n onDone: () => {\n progressBar.stop();\n }\n };\n }\n }));\n await runIxIxx({\n readStream,\n outLocation,\n name,\n prefixSize,\n quiet\n });\n (0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_3__.generateMeta)({\n configs: trackConfigs,\n attributesToIndex: attributes,\n outDir: outLocation,\n name,\n featureTypesToExclude: typesToExclude,\n featureTypesToInclude: typesToInclude,\n assemblyNames\n });\n}\nfunction prepareFileTrackConfigs(files, fileIds) {\n return files.map((file, i) => {\n const config = (0,_jbrowse_text_indexing_core__WEBPACK_IMPORTED_MODULE_3__.guessAdapterFromFileName)(file);\n if (fileIds?.[i]) {\n config.trackId = fileIds[i];\n }\n // throw rather than silently filtering: a user who named the file with\n // --file should be told it can't be indexed instead of getting a misleading\n // \"successfully created index\" with no output\n if (!(0,_types_common_ts__WEBPACK_IMPORTED_MODULE_8__.supported)(config.adapter?.type)) {\n throw new Error(`Cannot text-index ${file}: adapter type ${config.adapter?.type} is not indexable (only GFF3, GTF and VCF are supported)`);\n }\n return config;\n });\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/text-index/indexing-utils.ts?\n}");
538
571
 
539
572
  /***/ },
540
573
 
@@ -578,7 +611,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
578
611
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
579
612
 
580
613
  "use strict";
581
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ configManifest: () => (/* binding */ configManifest)\n/* harmony export */ });\n// Generated by scripts/generateConfigManifest.ts — do not edit by hand.\n// Regenerate with `pnpm autogen` after changing any configSchema.ts.\n\nconst configManifest = {\n \"adapters\": {\n \"CytobandAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"CytobandAdapter\\\"\"\n }, {\n \"name\": \"cytobandLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"CramAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"CramAdapter\\\"\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useSliceWorkerPool\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"cramLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"craiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BamAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BamAdapter\\\"\"\n }, {\n \"name\": \"bamLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"BamIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"SamAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SamAdapter\\\"\"\n }, {\n \"name\": \"samLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"samText\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"HtsgetBamAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"HtsgetBamAdapter\\\"\"\n }, {\n \"name\": \"htsgetBase\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"htsgetTrackId\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": []\n },\n \"BigBedAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BigBedAdapter\\\"\"\n }, {\n \"name\": \"bigBedLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"aggregateField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedAdapter\\\"\"\n }, {\n \"name\": \"bedLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"autoSql\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"colRef\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colStart\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colEnd\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedpeAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedpeAdapter\\\"\"\n }, {\n \"name\": \"bedpeLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"StarFusionAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"StarFusionAdapter\\\"\"\n }, {\n \"name\": \"starFusionLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedTabixAdapter\\\"\"\n }, {\n \"name\": \"bedGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"autoSql\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"BedGraphAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedGraphAdapter\\\"\"\n }, {\n \"name\": \"bedGraphLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedGraphTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedGraphTabixAdapter\\\"\"\n }, {\n \"name\": \"bedGraphGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"FromConfigAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FromConfigAdapter\\\"\"\n }, {\n \"name\": \"adapterId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"features\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"FromConfigRegionsAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FromConfigRegionsAdapter\\\"\"\n }, {\n \"name\": \"adapterId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"features\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"FromConfigSequenceAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FromConfigSequenceAdapter\\\"\"\n }, {\n \"name\": \"adapterId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"features\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"RefNameAliasAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"RefNameAliasAdapter\\\"\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"refNameColumn\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"refNameColumnHeaderName\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"NcbiSequenceReportAliasAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"NcbiSequenceReportAliasAdapter\\\"\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"useNameOverride\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"GtfAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GtfAdapter\\\"\"\n }, {\n \"name\": \"gtfLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"aggregateField\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"GtfTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GtfTabixAdapter\\\"\"\n }, {\n \"name\": \"gtfGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"dontRedispatch\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"aggregateField\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"Gff3TabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"Gff3TabixAdapter\\\"\"\n }, {\n \"name\": \"gffGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"dontRedispatch\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"Gff3Adapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"Gff3Adapter\\\"\"\n }, {\n \"name\": \"gffLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"NCListAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"NCListAdapter\\\"\"\n }, {\n \"name\": \"rootUrlTemplate\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"refNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": []\n },\n \"SPARQLAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SPARQLAdapter\\\"\"\n }, {\n \"name\": \"endpoint\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"queryTemplate\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"refNamesQueryTemplate\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"refNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"additionalQueryParams\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": []\n },\n \"TwoBitAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"TwoBitAdapter\\\"\"\n }, {\n \"name\": \"twoBitLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"chromSizesLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"chromSizes\"]\n },\n \"BgzipFastaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BgzipFastaAdapter\\\"\"\n }, {\n \"name\": \"fastaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"faiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metadataLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"gziLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"ChromSizesAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ChromSizesAdapter\\\"\"\n }, {\n \"name\": \"chromSizesLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"IndexedFastaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"IndexedFastaAdapter\\\"\"\n }, {\n \"name\": \"fastaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"faiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metadataLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"UnindexedFastaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"UnindexedFastaAdapter\\\"\"\n }, {\n \"name\": \"rewriteRefNames\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"fastaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metadataLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"SequenceSearchAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SequenceSearchAdapter\\\"\"\n }, {\n \"name\": \"search\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"searchForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchReverse\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"caseInsensitive\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": []\n },\n \"CrisprGuideAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"CrisprGuideAdapter\\\"\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"pam\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"guideLength\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"pamLocation\",\n \"type\": \"(JexlString | PamLocation)\"\n }, {\n \"name\": \"cutOffset\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"cutOffsetBottom\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"minGcPercent\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxGcPercent\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"excludePolyT\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchReverse\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": []\n },\n \"MotifListAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MotifListAdapter\\\"\"\n }, {\n \"name\": \"motifs\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"searchForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchReverse\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": []\n },\n \"VcfAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"VcfAdapter\\\"\"\n }, {\n \"name\": \"vcfLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"samplesTsvLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"VcfTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"VcfTabixAdapter\\\"\"\n }, {\n \"name\": \"vcfGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"samplesTsvLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"SplitVcfTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SplitVcfTabixAdapter\\\"\"\n }, {\n \"name\": \"vcfGzLocationMap\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"indexLocationMap\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"samplesTsvLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }],\n \"shorthandKeys\": []\n },\n \"PlinkLDAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PlinkLDAdapter\\\"\"\n }, {\n \"name\": \"ldLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"PlinkLDTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PlinkLDTabixAdapter\\\"\"\n }, {\n \"name\": \"ldLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"MultiWiggleAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiWiggleAdapter\\\"\"\n }, {\n \"name\": \"subadapters\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"bigWigs\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"BigWigAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BigWigAdapter\\\"\"\n }, {\n \"name\": \"bigWigLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"source\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"resolutionMultiplier\",\n \"type\": \"(JexlString | number)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"GCContentAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GCContentAdapter\\\"\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"windowSize\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"windowDelta\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"gcMode\",\n \"type\": \"(JexlString | gcMode)\"\n }],\n \"shorthandKeys\": []\n },\n \"BgzipMafAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BgzipMafAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"mafGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"taiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BgzipTaffyAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BgzipTaffyAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"tafGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"taiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BigMafAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BigMafAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"bigBedLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"MafTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MafTabixAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"bedGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"refAssemblyName\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\", \"nhUri\"]\n },\n \"HicAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"HicAdapter\\\"\"\n }, {\n \"name\": \"hicLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"AllVsAllPAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"AllVsAllPAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"pafLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNameToPanSN\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"AllVsAllIndexedPAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"AllVsAllIndexedPAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"pifGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNameToPanSN\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"coarseBpPerPxThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"PAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"pafLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"PairwiseIndexedPAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PairwiseIndexedPAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"pifGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"coarseBpPerPxThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"DeltaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"DeltaAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"deltaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"ChainAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ChainAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"chainLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"MCScanAnchorsAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MCScanAnchorsAdapter\\\"\"\n }, {\n \"name\": \"mcscanAnchorsLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed1Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed2Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"bed1\", \"bed2\", \"chromSizes\", \"csi\", \"htsgetBase\", \"nhUri\"]\n },\n \"MCScanBlocksAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MCScanBlocksAdapter\\\"\"\n }, {\n \"name\": \"mcscanBlocksLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"blockAssemblies\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"bedLocations\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"attributeColumns\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"MCScanSimpleAnchorsAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MCScanSimpleAnchorsAdapter\\\"\"\n }, {\n \"name\": \"mcscanSimpleAnchorsLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed1Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed2Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"bed1\", \"bed2\", \"chromSizes\", \"csi\", \"htsgetBase\", \"nhUri\"]\n },\n \"MashMapAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MashMapAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"outLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BlastTabularAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BlastTabularAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"blastTableLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columns\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": []\n },\n \"GWASAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GWASAdapter\\\"\"\n }, {\n \"name\": \"bedGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"autoSql\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"scoreTransform\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"ldAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n }\n },\n \"tracks\": {\n \"FeatureTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FeatureTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearBasicDisplay\", \"LinearMultiRowFeatureDisplay\", \"LinearArcDisplay\"]\n },\n \"AlignmentsTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"AlignmentsTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearAlignmentsDisplay\"]\n },\n \"SyntenyTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SyntenyTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"DotplotDisplay\", \"LinearSyntenyDisplay\", \"LGVSyntenyDisplay\", \"MultiWaySyntenyDisplay\"]\n },\n \"ReferenceSequenceTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ReferenceSequenceTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"sequenceType\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearReferenceSequenceDisplay\", \"LinearGCContentDisplay\"]\n },\n \"VariantTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"VariantTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"ChordVariantDisplay\", \"LinearVariantDisplay\", \"LinearMultiSampleVariantDisplay\", \"LinearMultiSampleVariantMatrixDisplay\", \"LDDisplay\", \"LinearPairedArcDisplay\"]\n },\n \"LDTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LDTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LDTrackDisplay\"]\n },\n \"QuantitativeTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"QuantitativeTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearWiggleDisplay\"]\n },\n \"MultiQuantitativeTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiQuantitativeTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"MultiLinearWiggleDisplay\"]\n },\n \"GCContentTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GCContentTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearGCContentTrackDisplay\"]\n },\n \"MafTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MafTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearMafDisplay\"]\n },\n \"HicTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"HicTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearHicDisplay\"]\n },\n \"GWASTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GWASTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearManhattanDisplay\"]\n }\n },\n \"displays\": {\n \"LinearBasicDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearBasicDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"maxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | (showLabels | undefined))\"\n }, {\n \"name\": \"maxLabelFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxDescriptionFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"connectorColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"utrColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"outlineColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayMode\",\n \"type\": \"(JexlString | (displayMode | undefined))\"\n }, {\n \"name\": \"geneGlyphMode\",\n \"type\": \"(JexlString | geneGlyphMode)\"\n }, {\n \"name\": \"subfeatureLabels\",\n \"type\": \"(JexlString | (subfeatureLabels | undefined))\"\n }, {\n \"name\": \"displayDirectionalChevrons\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"transcriptTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"canonicalTranscriptField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"canonicalTranscriptTags\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"containerTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"subParts\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"impliedUTRs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hideSourceFeatures\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"labels\",\n \"type\": \"CanvasFeatureLabelsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }]\n }, {\n \"name\": \"showOnlyGenes\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"legend\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"legacyKeys\": [\"renderer\", \"autoHeight\", \"showDescriptions\", \"color1\", \"color2\", \"color3\", \"outline\"],\n \"aliases\": [\"LinearFeatureDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\", \"pinnedFeatureIds\", \"soloFeatureIds\", \"soloApplied\", \"hiddenFeatureIds\", \"expandedGeneIds\", \"featureHighlights\"]\n },\n \"LinearMultiRowFeatureDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMultiRowFeatureDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"partitionField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"lengthField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"sampleColorMap\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"rowOrder\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowProportion\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"legend\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"rowGroups\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\", \"hiddenCategories\"]\n },\n \"LinearAlignmentsDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearAlignmentsDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsLineWidth\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSashimiLabels\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"hideNonCanonicalJunctions\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"maxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | (frozen | undefined))\"\n }, {\n \"name\": \"filterBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"collapseGroupRows\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Coverage autoscale type)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Coverage scale type)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mismatchAlpha\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLowFreqMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sortedBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"largeFeaturesFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"splicedReadsFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showOutline\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"linkedReads\",\n \"type\": \"(JexlString | (LinkedReadsMode | undefined))\"\n }, {\n \"name\": \"showBezierConnections\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showCoverage\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showPileup\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"coverageHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"coverageSnpMinFrequency\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showInterbaseIndicators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"flipStrandLongReadChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorSupplementaryChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawInter\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawProperPairArcs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"minInterchromSupport\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"drawLongRange\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"arcColorByType\",\n \"type\": \"(JexlString | ArcColorByType)\"\n }, {\n \"name\": \"readConnections\",\n \"type\": \"(JexlString | (ReadConnectionsMode | undefined))\"\n }, {\n \"name\": \"readConnectionsDown\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showSashimiArcs\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sashimiArcsMode\",\n \"type\": \"(JexlString | (SashimiArcsMode | undefined))\"\n }, {\n \"name\": \"minSashimiScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"sashimiArcsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSoftClipping\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }],\n \"aliases\": [\"LinearPileupDisplay\", \"LinearSNPCoverageDisplay\", \"LinearReadArcsDisplay\", \"LinearReadCloudDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"ChordVariantDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ChordVariantDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"onChordClick\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"strokeColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"strokeColorSelected\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"strokeColorHover\",\n \"type\": \"(JexlString | string)\"\n }],\n \"legacyKeys\": [\"renderer\"],\n \"stateModelProps\": [\"id\", \"type\", \"bezierRadiusRatio\", \"configuration\"]\n },\n \"DotplotDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"DotplotDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearSyntenyDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearSyntenyDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LGVSyntenyDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LGVSyntenyDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsLineWidth\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSashimiLabels\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"hideNonCanonicalJunctions\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"maxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | (frozen | undefined))\"\n }, {\n \"name\": \"filterBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"collapseGroupRows\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Coverage autoscale type)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Coverage scale type)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mismatchAlpha\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLowFreqMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sortedBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"largeFeaturesFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"splicedReadsFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showOutline\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"linkedReads\",\n \"type\": \"(JexlString | (LinkedReadsMode | undefined))\"\n }, {\n \"name\": \"showBezierConnections\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showCoverage\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showPileup\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"coverageHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"coverageSnpMinFrequency\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showInterbaseIndicators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"flipStrandLongReadChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorSupplementaryChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawInter\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawProperPairArcs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"minInterchromSupport\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"drawLongRange\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"arcColorByType\",\n \"type\": \"(JexlString | ArcColorByType)\"\n }, {\n \"name\": \"readConnections\",\n \"type\": \"(JexlString | (ReadConnectionsMode | undefined))\"\n }, {\n \"name\": \"readConnectionsDown\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showSashimiArcs\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sashimiArcsMode\",\n \"type\": \"(JexlString | (SashimiArcsMode | undefined))\"\n }, {\n \"name\": \"minSashimiScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"sashimiArcsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSoftClipping\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"hideSelfAlignments\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"lodMode\"]\n },\n \"MultiWaySyntenyDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiWaySyntenyDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"utrColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"ribbonColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"ribbonColorBy\",\n \"type\": \"(JexlString | ribbonColorBy)\"\n }, {\n \"name\": \"drawCurves\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"bridgeSkippedLanes\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLaneTicks\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"rowOrder\", \"hiddenLanes\"]\n },\n \"LinearReferenceSequenceDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearReferenceSequenceDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"showForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showReverse\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTranslation\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearVariantDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearVariantDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"maxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | (showLabels | undefined))\"\n }, {\n \"name\": \"maxLabelFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxDescriptionFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"connectorColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"utrColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"outlineColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayMode\",\n \"type\": \"(JexlString | (displayMode | undefined))\"\n }, {\n \"name\": \"geneGlyphMode\",\n \"type\": \"(JexlString | geneGlyphMode)\"\n }, {\n \"name\": \"subfeatureLabels\",\n \"type\": \"(JexlString | (subfeatureLabels | undefined))\"\n }, {\n \"name\": \"displayDirectionalChevrons\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"transcriptTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"canonicalTranscriptField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"canonicalTranscriptTags\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"containerTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"subParts\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"impliedUTRs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hideSourceFeatures\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"labels\",\n \"type\": \"CanvasFeatureLabelsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }]\n }],\n \"legacyKeys\": [\"renderer\", \"autoHeight\", \"showDescriptions\", \"color1\", \"color2\", \"color3\", \"outline\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\", \"pinnedFeatureIds\", \"soloFeatureIds\", \"soloApplied\", \"hiddenFeatureIds\", \"expandedGeneIds\", \"featureHighlights\"]\n },\n \"LinearMultiSampleVariantDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMultiSampleVariantDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"showReferenceAlleles\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTooltips\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"renderingMode\",\n \"type\": \"(JexlString | RenderingMode)\"\n }, {\n \"name\": \"featureColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxMissingnessFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"referenceDrawingMode\",\n \"type\": \"(JexlString | ReferenceDrawingMode)\"\n }, {\n \"name\": \"showInsertionGlyphs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showVariantLane\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"variantLaneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"variantLaneLabels\",\n \"type\": \"(JexlString | variantLaneLabels)\"\n }],\n \"aliases\": [\"MultiLinearVariantDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LinearMultiSampleVariantMatrixDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMultiSampleVariantMatrixDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"showReferenceAlleles\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTooltips\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"renderingMode\",\n \"type\": \"(JexlString | RenderingMode)\"\n }, {\n \"name\": \"featureColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxMissingnessFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"referenceDrawingMode\",\n \"type\": \"(JexlString | ReferenceDrawingMode)\"\n }],\n \"aliases\": [\"LinearVariantMatrixDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LDDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LDDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lengthCutoffFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"ldMetric\",\n \"type\": \"(JexlString | LDMetric)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLDTriangle\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"squashToHeight\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hweFilterThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"callRateFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxVariantSeparation\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showVerticalGuides\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"tickHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useGenomicPositions\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"signedLD\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"ldMethod\",\n \"type\": \"(JexlString | LDMethod)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LDTrackDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LDTrackDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lengthCutoffFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"ldMetric\",\n \"type\": \"(JexlString | LDMetric)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLDTriangle\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"squashToHeight\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hweFilterThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"callRateFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxVariantSeparation\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showVerticalGuides\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"tickHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useGenomicPositions\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"signedLD\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"ldMethod\",\n \"type\": \"(JexlString | LDMethod)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LinearWiggleDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearWiggleDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering type)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useBicolor\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scoreRules\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"configuration\"]\n },\n \"MultiLinearWiggleDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiLinearWiggleDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\"]\n },\n \"LinearGCContentDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearGCContentDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering type)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useBicolor\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scoreRules\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"windowSize\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"windowDelta\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"gcMode\",\n \"type\": \"(JexlString | gcMode)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"configuration\"]\n },\n \"LinearGCContentTrackDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearGCContentTrackDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering type)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useBicolor\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scoreRules\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"windowSize\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"windowDelta\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"gcMode\",\n \"type\": \"(JexlString | gcMode)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"configuration\"]\n },\n \"LinearMafDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMafDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowProportion\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showAllLetters\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"mismatchRendering\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showAsUpperCase\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showCoverage\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showAlignments\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"coverageHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showConservation\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"conservationHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"conservationMode\",\n \"type\": \"(JexlString | MafConservationMode)\"\n }, {\n \"name\": \"rowIdentityMode\",\n \"type\": \"(JexlString | RowIdentityMode)\"\n }, {\n \"name\": \"rowIdentityAutoZoom\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showAnnotations\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTranslation\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorByChromosome\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showInversions\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\"]\n },\n \"LinearHicDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearHicDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"colorScheme\",\n \"type\": \"(JexlString | HicColorScheme)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"resolutionBias\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useLogScale\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"useColorPercentile\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showResolutionControls\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"selectedNormalization\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"squashToHeight\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearArcDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearArcDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"thickness\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"label\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"arcHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"caption\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"displayMode\",\n \"type\": \"(JexlString | DisplayMode)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }],\n \"legacyKeys\": [\"renderer\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearPairedArcDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearPairedArcDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearManhattanDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearManhattanDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | GwasColorBy)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"significanceLine\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"showLdLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"indexSnp\", \"indexSnpPinned\"]\n }\n },\n \"textSearchAdapters\": {\n \"JBrowse1TextSearchAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"JBrowse1TextSearchAdapter\\\"\"\n }, {\n \"name\": \"textSearchAdapterId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"namesIndexLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"tracks\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": []\n },\n \"TrixTextSearchAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"TrixTextSearchAdapter\\\"\"\n }, {\n \"name\": \"textSearchAdapterId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"ixFilePath\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"ixxFilePath\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metaFilePath\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"tracks\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n }\n },\n \"connections\": {\n \"UCSCTrackHubConnection\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"UCSCTrackHubConnection\\\"\"\n }, {\n \"name\": \"connectionId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"hubTxtLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n },\n \"JB2TrackHubConnection\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"JB2TrackHubConnection\\\"\"\n }, {\n \"name\": \"connectionId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"configJsonLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n },\n \"JBrowse1Connection\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"JBrowse1Connection\\\"\"\n }, {\n \"name\": \"connectionId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"dataDirLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }\n },\n \"migratedDisplayKeys\": {\n \"*\": [\"heightPreConfig\"],\n \"LinearAlignmentsDisplay\": [\"PileupDisplay\", \"SNPCoverageDisplay\", \"colorBy\", \"colorBySetting\", \"filterBy\", \"filterBySetting\", \"hideMismatchesSetting\", \"jexlFilters\", \"trackMaxHeight\"],\n \"LinearMultiSampleVariantDisplay\": [\"jexlFilters\"],\n \"LinearMultiSampleVariantMatrixDisplay\": [\"jexlFilters\"]\n }\n};\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/validate/configManifest.generated.ts?\n}");
614
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ configManifest: () => (/* binding */ configManifest)\n/* harmony export */ });\n// Generated by scripts/generateConfigManifest.ts — do not edit by hand.\n// Regenerate with `pnpm autogen` after changing any configSchema.ts.\n\nconst configManifest = {\n \"adapters\": {\n \"CytobandAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"CytobandAdapter\\\"\"\n }, {\n \"name\": \"cytobandLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"CramAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"CramAdapter\\\"\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"useSliceWorkerPool\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"cramLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"craiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BamAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BamAdapter\\\"\"\n }, {\n \"name\": \"bamLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"BamIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"SamAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SamAdapter\\\"\"\n }, {\n \"name\": \"samLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"samText\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"HtsgetBamAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"HtsgetBamAdapter\\\"\"\n }, {\n \"name\": \"htsgetBase\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"htsgetTrackId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"BigBedAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BigBedAdapter\\\"\"\n }, {\n \"name\": \"bigBedLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"aggregateField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedAdapter\\\"\"\n }, {\n \"name\": \"bedLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"autoSql\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"colRef\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colStart\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colEnd\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedpeAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedpeAdapter\\\"\"\n }, {\n \"name\": \"bedpeLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"StarFusionAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"StarFusionAdapter\\\"\"\n }, {\n \"name\": \"starFusionLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedTabixAdapter\\\"\"\n }, {\n \"name\": \"bedGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"autoSql\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"BedGraphAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedGraphAdapter\\\"\"\n }, {\n \"name\": \"bedGraphLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BedGraphTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BedGraphTabixAdapter\\\"\"\n }, {\n \"name\": \"bedGraphGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"FromConfigAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FromConfigAdapter\\\"\"\n }, {\n \"name\": \"adapterId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"features\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"FromConfigRegionsAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FromConfigRegionsAdapter\\\"\"\n }, {\n \"name\": \"adapterId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"features\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"FromConfigSequenceAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FromConfigSequenceAdapter\\\"\"\n }, {\n \"name\": \"adapterId\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"features\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"RefNameAliasAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"RefNameAliasAdapter\\\"\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"refNameColumn\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"refNameColumnHeaderName\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"NcbiSequenceReportAliasAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"NcbiSequenceReportAliasAdapter\\\"\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"useNameOverride\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"GtfAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GtfAdapter\\\"\"\n }, {\n \"name\": \"gtfLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"aggregateField\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"GtfTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GtfTabixAdapter\\\"\"\n }, {\n \"name\": \"gtfGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"dontRedispatch\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"aggregateField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"Gff3TabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"Gff3TabixAdapter\\\"\"\n }, {\n \"name\": \"gffGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"dontRedispatch\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"Gff3Adapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"Gff3Adapter\\\"\"\n }, {\n \"name\": \"gffLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"NCListAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"NCListAdapter\\\"\"\n }, {\n \"name\": \"rootUrlTemplate\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"refNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": []\n },\n \"SPARQLAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SPARQLAdapter\\\"\"\n }, {\n \"name\": \"endpoint\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"queryTemplate\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"refNamesQueryTemplate\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"refNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"additionalQueryParams\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": []\n },\n \"TwoBitAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"TwoBitAdapter\\\"\"\n }, {\n \"name\": \"twoBitLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"chromSizesLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"chromSizes\"]\n },\n \"BgzipFastaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BgzipFastaAdapter\\\"\"\n }, {\n \"name\": \"fastaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"faiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metadataLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"gziLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"ChromSizesAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ChromSizesAdapter\\\"\"\n }, {\n \"name\": \"chromSizesLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"IndexedFastaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"IndexedFastaAdapter\\\"\"\n }, {\n \"name\": \"fastaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"faiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metadataLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"UnindexedFastaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"UnindexedFastaAdapter\\\"\"\n }, {\n \"name\": \"rewriteRefNames\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"fastaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metadataLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"SequenceSearchAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SequenceSearchAdapter\\\"\"\n }, {\n \"name\": \"search\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"searchForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchReverse\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"caseInsensitive\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": []\n },\n \"CrisprGuideAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"CrisprGuideAdapter\\\"\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"pam\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"guideLength\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"pamLocation\",\n \"type\": \"(JexlString | PamLocation)\"\n }, {\n \"name\": \"cutOffset\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"cutOffsetBottom\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"minGcPercent\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxGcPercent\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"excludePolyT\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchReverse\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": []\n },\n \"MotifListAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MotifListAdapter\\\"\"\n }, {\n \"name\": \"motifs\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"searchForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"searchReverse\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"shorthandKeys\": []\n },\n \"VcfAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"VcfAdapter\\\"\"\n }, {\n \"name\": \"vcfLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"samplesTsvLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"VcfTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"VcfTabixAdapter\\\"\"\n }, {\n \"name\": \"vcfGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"samplesTsvLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"SplitVcfTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SplitVcfTabixAdapter\\\"\"\n }, {\n \"name\": \"vcfGzLocationMap\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"indexLocationMap\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"samplesTsvLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"PlinkLDAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PlinkLDAdapter\\\"\"\n }, {\n \"name\": \"ldLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"PlinkLDTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PlinkLDTabixAdapter\\\"\"\n }, {\n \"name\": \"ldLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"MultiWiggleAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiWiggleAdapter\\\"\"\n }, {\n \"name\": \"subadapters\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"bigWigs\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"BigWigAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BigWigAdapter\\\"\"\n }, {\n \"name\": \"bigWigLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"source\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"resolutionMultiplier\",\n \"type\": \"(JexlString | number)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"GCContentAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GCContentAdapter\\\"\"\n }, {\n \"name\": \"sequenceAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"windowSize\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"windowDelta\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"gcMode\",\n \"type\": \"(JexlString | gcMode)\"\n }],\n \"shorthandKeys\": []\n },\n \"BgzipMafAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BgzipMafAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"mafGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"taiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BgzipTaffyAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BgzipTaffyAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"tafGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"taiLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BigMafAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BigMafAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"bigBedLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": []\n },\n \"MafTabixAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MafTabixAdapter\\\"\"\n }, {\n \"name\": \"samples\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"bedGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"refAssemblyName\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"nhLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"summaryAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"annotationAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\", \"nhUri\"]\n },\n \"HicAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"HicAdapter\\\"\"\n }, {\n \"name\": \"hicLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"AllVsAllPAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"AllVsAllPAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"pafLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNameToPanSN\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"AllVsAllIndexedPAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"AllVsAllIndexedPAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"pifGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNameToPanSN\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"coarseBpPerPxThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"PAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"pafLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"PairwiseIndexedPAFAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"PairwiseIndexedPAFAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"pifGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"coarseBpPerPxThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n },\n \"DeltaAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"DeltaAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"deltaLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"ChainAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ChainAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"chainLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"MCScanAnchorsAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MCScanAnchorsAdapter\\\"\"\n }, {\n \"name\": \"mcscanAnchorsLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed1Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed2Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"bed1\", \"bed2\", \"chromSizes\", \"csi\", \"htsgetBase\", \"nhUri\"]\n },\n \"MCScanBlocksAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MCScanBlocksAdapter\\\"\"\n }, {\n \"name\": \"mcscanBlocksLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"blockAssemblies\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"bedLocations\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"attributeColumns\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"MCScanSimpleAnchorsAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MCScanSimpleAnchorsAdapter\\\"\"\n }, {\n \"name\": \"mcscanSimpleAnchorsLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed1Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"bed2Location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"bed1\", \"bed2\", \"chromSizes\", \"csi\", \"htsgetBase\", \"nhUri\"]\n },\n \"MashMapAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MashMapAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"outLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n },\n \"BlastTabularAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"BlastTabularAdapter\\\"\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"targetAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"queryAssembly\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"blastTableLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"columns\",\n \"type\": \"(JexlString | string)\"\n }],\n \"shorthandKeys\": []\n },\n \"GWASAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GWASAdapter\\\"\"\n }, {\n \"name\": \"bedGzLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"index\",\n \"type\": \"TabixIndexConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexType\",\n \"type\": \"(JexlString | IndexType)\"\n }, {\n \"name\": \"location\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }, {\n \"name\": \"columnNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"scoreColumn\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"autoSql\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"disableGeneHeuristic\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"scoreTransform\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"ldAdapter\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\", \"csi\"]\n }\n },\n \"tracks\": {\n \"FeatureTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"FeatureTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearBasicDisplay\", \"LinearMultiRowFeatureDisplay\", \"LinearArcDisplay\"]\n },\n \"AlignmentsTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"AlignmentsTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearAlignmentsDisplay\"]\n },\n \"SyntenyTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"SyntenyTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"DotplotDisplay\", \"LinearSyntenyDisplay\", \"LGVSyntenyDisplay\", \"MultiWaySyntenyDisplay\"]\n },\n \"ReferenceSequenceTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ReferenceSequenceTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"sequenceType\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearReferenceSequenceDisplay\", \"LinearGCContentDisplay\"]\n },\n \"VariantTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"VariantTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"ChordVariantDisplay\", \"LinearVariantDisplay\", \"LinearMultiSampleVariantDisplay\", \"LinearMultiSampleVariantMatrixDisplay\", \"LDDisplay\", \"LinearPairedArcDisplay\"]\n },\n \"LDTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LDTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LDTrackDisplay\"]\n },\n \"QuantitativeTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"QuantitativeTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearWiggleDisplay\"]\n },\n \"MultiQuantitativeTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiQuantitativeTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"MultiLinearWiggleDisplay\"]\n },\n \"GCContentTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GCContentTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearGCContentTrackDisplay\"]\n },\n \"MafTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MafTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearMafDisplay\"]\n },\n \"HicTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"HicTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearHicDisplay\"]\n },\n \"GWASTrack\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"GWASTrack\\\"\"\n }, {\n \"name\": \"trackId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"category\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"metadata\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"adapter\",\n \"type\": \"(CytobandAdapterConfigurationSchema | CramAdapterConfigurationSchema | BamAdapterConfigurationSchema | SamAdapterConfigurationSchema | HtsgetBamAdapterConfigurationSchema | BigBedAdapterConfigurationSchema | BedAdapterConfigurationSchema | BedpeAdapterConfigurationSchema | StarFusionAdapterConfigurationSchema | BedTabixAdapterConfigurationSchema | BedGraphAdapterConfigurationSchema | BedGraphTabixAdapterConfigurationSchema | FromConfigAdapterConfigurationSchema | FromConfigRegionsAdapterConfigurationSchema | FromConfigSequenceAdapterConfigurationSchema | RefNameAliasAdapterConfigurationSchema | NcbiSequenceReportAliasAdapterConfigurationSchema | GtfAdapterConfigurationSchema | GtfTabixAdapterConfigurationSchema | Gff3TabixAdapterConfigurationSchema | Gff3AdapterConfigurationSchema | NCListAdapterConfigurationSchema | SPARQLAdapterConfigurationSchema | TwoBitAdapterConfigurationSchema | BgzipFastaAdapterConfigurationSchema | ChromSizesAdapterConfigurationSchema | IndexedFastaAdapterConfigurationSchema | UnindexedFastaAdapterConfigurationSchema | SequenceSearchAdapterConfigurationSchema | CrisprGuideAdapterConfigurationSchema | MotifListAdapterConfigurationSchema | VcfAdapterConfigurationSchema | VcfTabixAdapterConfigurationSchema | SplitVcfTabixAdapterConfigurationSchema | PlinkLDAdapterConfigurationSchema | PlinkLDTabixAdapterConfigurationSchema | MultiWiggleAdapterConfigurationSchema | BigWigAdapterConfigurationSchema | GCContentAdapterConfigurationSchema | BgzipMafAdapterConfigurationSchema | BgzipTaffyAdapterConfigurationSchema | BigMafAdapterConfigurationSchema | MafTabixAdapterConfigurationSchema | HicAdapterConfigurationSchema | AllVsAllPAFAdapterConfigurationSchema | AllVsAllIndexedPAFAdapterConfigurationSchema | PAFAdapterConfigurationSchema | PairwiseIndexedPAFAdapterConfigurationSchema | DeltaAdapterConfigurationSchema | ChainAdapterConfigurationSchema | MCScanAnchorsAdapterConfigurationSchema | MCScanBlocksAdapterConfigurationSchema | MCScanSimpleAnchorsAdapterConfigurationSchema | MashMapAdapterConfigurationSchema | BlastTabularAdapterConfigurationSchema | GWASAdapterConfigurationSchema)\"\n }, {\n \"name\": \"textSearching\",\n \"type\": \"textSearchingConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"indexingAttributes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToExclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"indexingFeatureTypesToInclude\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"textSearchAdapter\",\n \"type\": \"(JBrowse1TextSearchAdapterConfigurationSchema | TrixTextSearchAdapterConfigurationSchema)\"\n }]\n }, {\n \"name\": \"displays\",\n \"type\": \"(LinearBasicDisplayConfigurationSchema | LinearMultiRowFeatureDisplayConfigurationSchema | LinearAlignmentsDisplayConfigurationSchema | ChordVariantDisplayConfigurationSchema | DotplotDisplayConfigurationSchema | LinearSyntenyDisplayConfigurationSchema | LGVSyntenyDisplayConfigurationSchema | MultiWaySyntenyDisplayConfigurationSchema | LinearReferenceSequenceDisplayConfigurationSchema | LinearVariantDisplayConfigurationSchema | LinearMultiSampleVariantDisplayConfigurationSchema | LinearMultiSampleVariantMatrixDisplayConfigurationSchema | LDDisplayConfigurationSchema | LDTrackDisplayConfigurationSchema | LinearWiggleDisplayConfigurationSchema | MultiLinearWiggleDisplayConfigurationSchema | LinearGCContentDisplayConfigurationSchema | LinearGCContentTrackDisplayConfigurationSchema | LinearMafDisplayConfigurationSchema | LinearHicDisplayConfigurationSchema | LinearArcDisplayConfigurationSchema | LinearPairedArcDisplayConfigurationSchema | LinearManhattanDisplayConfigurationSchema)[]\"\n }, {\n \"name\": \"formatDetails\",\n \"type\": \"FormatDetailsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"feature\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"subfeatures\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"depth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxDepth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }]\n }, {\n \"name\": \"formatAbout\",\n \"type\": \"FormatAboutConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"config\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"hideUris\",\n \"type\": \"(JexlString | boolean)\"\n }]\n }],\n \"displayTypes\": [\"LinearManhattanDisplay\"]\n }\n },\n \"displays\": {\n \"LinearBasicDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearBasicDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | (showLabels | undefined))\"\n }, {\n \"name\": \"maxLabelFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxDescriptionFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"connectorColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"utrColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"outlineColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayMode\",\n \"type\": \"(JexlString | (displayMode | undefined))\"\n }, {\n \"name\": \"geneGlyphMode\",\n \"type\": \"(JexlString | geneGlyphMode)\"\n }, {\n \"name\": \"subfeatureLabels\",\n \"type\": \"(JexlString | (subfeatureLabels | undefined))\"\n }, {\n \"name\": \"displayDirectionalChevrons\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"transcriptTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"canonicalTranscriptField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"canonicalTranscriptTags\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"containerTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"subParts\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"impliedUTRs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hideSourceFeatures\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"labels\",\n \"type\": \"CanvasFeatureLabelsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }]\n }, {\n \"name\": \"showOnlyGenes\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"legend\",\n \"type\": \"(JexlString | frozen)\"\n }],\n \"legacyKeys\": [\"renderer\", \"autoHeight\", \"showDescriptions\", \"color1\", \"color2\", \"color3\", \"outline\"],\n \"aliases\": [\"LinearFeatureDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\", \"pinnedFeatureIds\", \"soloFeatureIds\", \"soloApplied\", \"hiddenFeatureIds\", \"expandedGeneIds\", \"featureHighlights\"]\n },\n \"LinearMultiRowFeatureDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMultiRowFeatureDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"partitionField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"lengthField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"sampleColorMap\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"rowOrder\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowProportion\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"legend\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"rowGroups\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\", \"hiddenCategories\"]\n },\n \"LinearAlignmentsDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearAlignmentsDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsLineWidth\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSashimiLabels\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"hideNonCanonicalJunctions\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"maxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | (frozen | undefined))\"\n }, {\n \"name\": \"filterBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"collapseGroupRows\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Coverage autoscale type)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Coverage scale type)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mismatchAlpha\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLowFreqMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sortedBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"largeFeaturesFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"splicedReadsFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showOutline\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"linkedReads\",\n \"type\": \"(JexlString | (LinkedReadsMode | undefined))\"\n }, {\n \"name\": \"showBezierConnections\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showCoverage\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showPileup\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"coverageHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"coverageSnpMinFrequency\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showInterbaseIndicators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"flipStrandLongReadChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorSupplementaryChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawInter\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawProperPairArcs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"minInterchromSupport\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"drawLongRange\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"arcColorByType\",\n \"type\": \"(JexlString | ArcColorByType)\"\n }, {\n \"name\": \"readConnections\",\n \"type\": \"(JexlString | (ReadConnectionsMode | undefined))\"\n }, {\n \"name\": \"readConnectionsDown\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showSashimiArcs\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sashimiArcsMode\",\n \"type\": \"(JexlString | (SashimiArcsMode | undefined))\"\n }, {\n \"name\": \"minSashimiScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"sashimiArcsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSoftClipping\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }],\n \"aliases\": [\"LinearPileupDisplay\", \"LinearSNPCoverageDisplay\", \"LinearReadArcsDisplay\", \"LinearReadCloudDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"ChordVariantDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"ChordVariantDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"onChordClick\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"strokeColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"strokeColorSelected\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"strokeColorHover\",\n \"type\": \"(JexlString | string)\"\n }],\n \"legacyKeys\": [\"renderer\"],\n \"stateModelProps\": [\"id\", \"type\", \"bezierRadiusRatio\", \"configuration\"]\n },\n \"DotplotDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"DotplotDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearSyntenyDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearSyntenyDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"drawCurves\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"drawLocationMarkers\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LGVSyntenyDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LGVSyntenyDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsLineWidth\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSashimiLabels\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"hideNonCanonicalJunctions\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"maxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | (frozen | undefined))\"\n }, {\n \"name\": \"filterBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"collapseGroupRows\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Coverage autoscale type)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Coverage scale type)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mismatchAlpha\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLowFreqMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sortedBy\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"largeFeaturesFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"splicedReadsFirst\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showOutline\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"linkedReads\",\n \"type\": \"(JexlString | (LinkedReadsMode | undefined))\"\n }, {\n \"name\": \"showBezierConnections\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showCoverage\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showPileup\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"coverageHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"coverageSnpMinFrequency\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showMismatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showInterbaseIndicators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"flipStrandLongReadChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorSupplementaryChains\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawInter\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"drawProperPairArcs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"minInterchromSupport\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"drawLongRange\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"arcColorByType\",\n \"type\": \"(JexlString | ArcColorByType)\"\n }, {\n \"name\": \"readConnections\",\n \"type\": \"(JexlString | (ReadConnectionsMode | undefined))\"\n }, {\n \"name\": \"readConnectionsDown\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showSashimiArcs\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"sashimiArcsMode\",\n \"type\": \"(JexlString | (SashimiArcsMode | undefined))\"\n }, {\n \"name\": \"minSashimiScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"sashimiArcsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"readConnectionsHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showSoftClipping\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"hideSelfAlignments\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"lodMode\"]\n },\n \"MultiWaySyntenyDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiWaySyntenyDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"utrColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"ribbonColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"ribbonColorBy\",\n \"type\": \"(JexlString | ribbonColorBy)\"\n }, {\n \"name\": \"drawCurves\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"bridgeSkippedLanes\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLaneTicks\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"rowOrder\", \"hiddenLanes\"]\n },\n \"LinearReferenceSequenceDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearReferenceSequenceDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"showForward\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showReverse\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTranslation\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearVariantDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearVariantDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"heightMode\",\n \"type\": \"(JexlString | (heightMode | undefined))\"\n }, {\n \"name\": \"growMaxHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | (showLabels | undefined))\"\n }, {\n \"name\": \"maxLabelFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxDescriptionFeatureDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"connectorColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"utrColor\",\n \"type\": \"(JexlString | (string | undefined))\"\n }, {\n \"name\": \"outlineColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"featureHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayMode\",\n \"type\": \"(JexlString | (displayMode | undefined))\"\n }, {\n \"name\": \"geneGlyphMode\",\n \"type\": \"(JexlString | geneGlyphMode)\"\n }, {\n \"name\": \"subfeatureLabels\",\n \"type\": \"(JexlString | (subfeatureLabels | undefined))\"\n }, {\n \"name\": \"displayDirectionalChevrons\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"transcriptTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"canonicalTranscriptField\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"canonicalTranscriptTags\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"containerTypes\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"subParts\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"impliedUTRs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hideSourceFeatures\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"labels\",\n \"type\": \"CanvasFeatureLabelsConfigurationSchema\",\n \"subSlots\": [{\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"description\",\n \"type\": \"(JexlString | string)\"\n }]\n }],\n \"legacyKeys\": [\"renderer\", \"autoHeight\", \"showDescriptions\", \"color1\", \"color2\", \"color3\", \"outline\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\", \"pinnedFeatureIds\", \"soloFeatureIds\", \"soloApplied\", \"hiddenFeatureIds\", \"expandedGeneIds\", \"featureHighlights\"]\n },\n \"LinearMultiSampleVariantDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMultiSampleVariantDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"showReferenceAlleles\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTooltips\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"renderingMode\",\n \"type\": \"(JexlString | RenderingMode)\"\n }, {\n \"name\": \"featureColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxMissingnessFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"referenceDrawingMode\",\n \"type\": \"(JexlString | ReferenceDrawingMode)\"\n }, {\n \"name\": \"showInsertionGlyphs\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showVariantLane\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"variantLaneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"variantLaneLabels\",\n \"type\": \"(JexlString | variantLaneLabels)\"\n }],\n \"aliases\": [\"MultiLinearVariantDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LinearMultiSampleVariantMatrixDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMultiSampleVariantMatrixDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"showReferenceAlleles\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTooltips\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"renderingMode\",\n \"type\": \"(JexlString | RenderingMode)\"\n }, {\n \"name\": \"featureColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxMissingnessFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"groupBy\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"referenceDrawingMode\",\n \"type\": \"(JexlString | ReferenceDrawingMode)\"\n }],\n \"aliases\": [\"LinearVariantMatrixDisplay\"],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LDDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LDDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lengthCutoffFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"ldMetric\",\n \"type\": \"(JexlString | LDMetric)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLDTriangle\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"squashToHeight\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hweFilterThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"callRateFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxVariantSeparation\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showVerticalGuides\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"tickHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useGenomicPositions\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"signedLD\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"ldMethod\",\n \"type\": \"(JexlString | LDMethod)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LDTrackDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LDTrackDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"minorAlleleFrequencyFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lengthCutoffFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"lineZoneHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"ldMetric\",\n \"type\": \"(JexlString | LDMetric)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showLDTriangle\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"squashToHeight\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"hweFilterThreshold\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"callRateFilter\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxVariantSeparation\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showVerticalGuides\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"tickHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useGenomicPositions\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"signedLD\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"ldMethod\",\n \"type\": \"(JexlString | LDMethod)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"jexlFiltersSetting\"]\n },\n \"LinearWiggleDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearWiggleDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering type)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useBicolor\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scoreRules\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"configuration\"]\n },\n \"MultiLinearWiggleDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"MultiLinearWiggleDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowSeparators\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\"]\n },\n \"LinearGCContentDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearGCContentDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering type)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useBicolor\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scoreRules\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"windowSize\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"windowDelta\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"gcMode\",\n \"type\": \"(JexlString | gcMode)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"configuration\"]\n },\n \"LinearGCContentTrackDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearGCContentTrackDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"defaultRendering\",\n \"type\": \"(JexlString | Rendering type)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useBicolor\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"symlogConstant\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"posColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"negColor\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"bicolorPivot\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"densityColorRamp\",\n \"type\": \"(JexlString | Density color ramp)\"\n }, {\n \"name\": \"numQuantile\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"maxGapMultiple\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scoreRules\",\n \"type\": \"(JexlString | frozen)\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"summaryScoreMode\",\n \"type\": \"(JexlString | Score type)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"windowSize\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"windowDelta\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"gcMode\",\n \"type\": \"(JexlString | gcMode)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"resolution\", \"configuration\"]\n },\n \"LinearMafDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearMafDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"rowHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"rowProportion\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showAllLetters\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"mismatchRendering\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showAsUpperCase\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTree\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showBranchLength\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showRowLabels\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"showCoverage\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showAlignments\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"coverageHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"showConservation\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"conservationHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"conservationMode\",\n \"type\": \"(JexlString | MafConservationMode)\"\n }, {\n \"name\": \"rowIdentityMode\",\n \"type\": \"(JexlString | RowIdentityMode)\"\n }, {\n \"name\": \"rowIdentityAutoZoom\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showAnnotations\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showTranslation\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"colorByChromosome\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showInversions\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"layout\", \"clusterTree\", \"clusterProvenance\", \"treeAreaWidth\", \"subtreeFilter\", \"runClustering\", \"clusterRegion\", \"sortRowsBy\", \"configuration\"]\n },\n \"LinearHicDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearHicDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"colorScheme\",\n \"type\": \"(JexlString | HicColorScheme)\"\n }, {\n \"name\": \"showLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }, {\n \"name\": \"resolutionBias\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"useLogScale\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"useColorPercentile\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"showResolutionControls\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"selectedNormalization\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"squashToHeight\",\n \"type\": \"(JexlString | boolean)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearArcDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearArcDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"thickness\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"label\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"arcHeight\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"caption\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"displayMode\",\n \"type\": \"(JexlString | DisplayMode)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }],\n \"legacyKeys\": [\"renderer\"],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearPairedArcDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearPairedArcDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"lineWidth\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\"]\n },\n \"LinearManhattanDisplay\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"LinearManhattanDisplay\\\"\"\n }, {\n \"name\": \"displayId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"maxFeatureScreenDensity\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"fetchSizeLimit\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"forceLoad\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"densityTier\",\n \"type\": \"(JexlString | Density tier)\"\n }, {\n \"name\": \"densityTierBpPerPx\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"height\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"mouseover\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"jexlFilters\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"color\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"colorBy\",\n \"type\": \"(JexlString | GwasColorBy)\"\n }, {\n \"name\": \"minScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"maxScore\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"scaleType\",\n \"type\": \"(JexlString | Scale type)\"\n }, {\n \"name\": \"autoscale\",\n \"type\": \"(JexlString | Autoscale type)\"\n }, {\n \"name\": \"numStdDev\",\n \"type\": \"(JexlString | number)\"\n }, {\n \"name\": \"displayCrossHatches\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"significanceLine\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"minimalTicks\",\n \"type\": \"(JexlString | boolean)\"\n }, {\n \"name\": \"scatterPointSize\",\n \"type\": \"(JexlString | (number | undefined))\"\n }, {\n \"name\": \"showLdLegend\",\n \"type\": \"(JexlString | (boolean | undefined))\"\n }],\n \"stateModelProps\": [\"id\", \"type\", \"configuration\", \"indexSnp\", \"indexSnpPinned\"]\n }\n },\n \"textSearchAdapters\": {\n \"JBrowse1TextSearchAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"JBrowse1TextSearchAdapter\\\"\"\n }, {\n \"name\": \"textSearchAdapterId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"namesIndexLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"tracks\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": []\n },\n \"TrixTextSearchAdapter\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"TrixTextSearchAdapter\\\"\"\n }, {\n \"name\": \"textSearchAdapterId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"ixFilePath\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"ixxFilePath\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"metaFilePath\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }, {\n \"name\": \"tracks\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }],\n \"shorthandKeys\": [\"uri\", \"baseUri\"]\n }\n },\n \"connections\": {\n \"UCSCTrackHubConnection\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"UCSCTrackHubConnection\\\"\"\n }, {\n \"name\": \"connectionId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"hubTxtLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n },\n \"JB2TrackHubConnection\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"JB2TrackHubConnection\\\"\"\n }, {\n \"name\": \"connectionId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"configJsonLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n },\n \"JBrowse1Connection\": {\n \"slots\": [{\n \"name\": \"type\",\n \"type\": \"\\\"JBrowse1Connection\\\"\"\n }, {\n \"name\": \"connectionId\",\n \"type\": \"identifier\"\n }, {\n \"name\": \"name\",\n \"type\": \"(JexlString | string)\"\n }, {\n \"name\": \"assemblyNames\",\n \"type\": \"(JexlString | string[])\"\n }, {\n \"name\": \"dataDirLocation\",\n \"type\": \"(JexlString | (LocalPathLocation | UriLocation | BlobLocation | FileHandleLocation))\"\n }]\n }\n },\n \"views\": {\n \"LinearGenomeView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"highlight\", \"showHighlightChips\", \"type\", \"windowStartBp\", \"windowWidthBp\", \"legacyBpPerPx\", \"displayedRegions\", \"tracks\", \"hideHeader\", \"hideHeaderOverview\", \"hideNoTracksActive\", \"trackSelectorType\", \"showCenterLine\", \"showCytobands\", \"trackLabels\", \"showGridlines\", \"labelsVisible\", \"colorByCDS\", \"showAminoAcids\", \"showTrackOutlines\", \"scalebarOnly\", \"launch\"],\n \"launchKeys\": [\"assembly\", \"displayedRegionNames\", \"grow\", \"highlight\", \"loc\", \"nav\", \"tracklist\", \"tracks\"],\n \"passThrough\": [\"bpPerPx\", \"offsetPx\"]\n },\n \"CircularView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"type\", \"offsetRadians\", \"bpPerPx\", \"autoFit\", \"tracks\", \"hideVerticalResizeHandle\", \"hideTrackSelectorButton\", \"disableImportForm\", \"height\", \"displayedRegions\", \"minimumRadiusPx\", \"spacingPx\", \"paddingPx\", \"minVisibleWidth\", \"trackSelectorType\", \"launch\"],\n \"launchKeys\": [\"assembly\", \"displayedRegionNames\", \"tracks\"]\n },\n \"DotplotView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"highlight\", \"showHighlightChips\", \"colorBy\", \"trackColorBy\", \"trackColors\", \"showColorLegend\", \"type\", \"height\", \"trackSelectorType\", \"assemblyNames\", \"drawCigar\", \"showGridlines\", \"lodMode\", \"lockAspectRatio\", \"lineWidth\", \"alpha\", \"minAlignmentLength\", \"minIdentity\", \"hview\", \"vview\", \"tracks\", \"launch\"],\n \"launchKeys\": [\"autoDiagonalize\", \"highlight\", \"tracks\", \"views\"]\n },\n \"LinearSyntenyView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"type\", \"trackSelectorType\", \"linkViews\", \"followSynteny\", \"sameScale\", \"followAnchorIndex\", \"followMatchOrientation\", \"levels\", \"views\", \"colorBy\", \"trackColorBy\", \"trackColors\", \"showColorLegend\", \"cigarMode\", \"showOffscreenMates\", \"bidirectionalFetch\", \"overdrawPx\", \"alpha\", \"minAlignmentLength\", \"lodMode\", \"opacityByIdentity\", \"fadeThinAlignmentsMode\", \"launch\"],\n \"launchKeys\": [\"autoDiagonalize\", \"collapseEmptyRows\", \"drawCurves\", \"drawLocationMarkers\", \"levelHeights\", \"sameScale\", \"tracks\", \"views\"]\n },\n \"SpreadsheetView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"type\", \"height\", \"hideVerticalResizeHandle\", \"importWizard\", \"spreadsheet\", \"launch\"],\n \"launchKeys\": [\"assembly\", \"baseUri\", \"fileType\", \"filterText\", \"uri\"]\n },\n \"SvInspectorView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"type\", \"height\", \"onlyDisplayRelevantRegionsInCircularView\", \"spreadsheetWidthFraction\", \"spreadsheetView\", \"circularView\", \"launch\"],\n \"launchKeys\": [\"assembly\", \"baseUri\", \"fileType\", \"filterText\", \"uri\"]\n },\n \"BreakpointSplitView\": {\n \"stateModelProps\": [\"id\", \"displayName\", \"minimized\", \"type\", \"height\", \"showIntraviewLinks\", \"linkViews\", \"interactiveOverlay\", \"showHeader\", \"views\", \"launch\"],\n \"launchKeys\": [\"views\"]\n }\n },\n \"migratedDisplayKeys\": {\n \"*\": [\"heightPreConfig\"],\n \"LinearAlignmentsDisplay\": [\"PileupDisplay\", \"SNPCoverageDisplay\", \"colorBy\", \"colorBySetting\", \"filterBy\", \"filterBySetting\", \"hideMismatchesSetting\", \"jexlFilters\", \"trackMaxHeight\"],\n \"LinearMultiSampleVariantDisplay\": [\"jexlFilters\"],\n \"LinearMultiSampleVariantMatrixDisplay\": [\"jexlFilters\"]\n }\n};\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/validate/configManifest.generated.ts?\n}");
582
615
 
583
616
  /***/ },
584
617
 
@@ -600,7 +633,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
600
633
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
601
634
 
602
635
  "use strict";
603
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _validateConfig_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./validateConfig.ts */ \"./src/commands/validate/validateConfig.ts\");\n\n\n\nconst description = 'Check a JBrowse configuration for errors, including the ones JBrowse itself accepts silently';\nconst notes = `A config key JBrowse does not recognize is ignored rather than reported, so a\nmisspelled slot leaves the track loading normally with the setting doing\nnothing. That is what this command is mainly for.\n\nTwo levels are reported:\n\n error JBrowse accepts it and silently does the wrong thing — an unknown\n slot, a track naming an assembly the config never defines, a\n defaultSession naming a trackId that does not exist, a duplicate\n trackId. Exits 1.\n\n warning JBrowse will complain by itself on load, or handles it — a type name\n the core plugins do not register (expected if one of your plugins\n registers it), or a legacy key a migration rewrites. Never fails\n the run.\n\nTypes registered by plugins are not known to this command, so they come through\nas warnings rather than errors.`;\nconst examples = ['# check the config.json in the current directory', '$ jbrowse validate', '', '# check a specific config or saved session', '$ jbrowse validate /path/to/config.json', '$ jbrowse validate mysession.jbrowse', '', '# machine-readable output', '$ jbrowse validate config.json --json'];\nconst options = {\n json: {\n type: 'boolean',\n description: 'Output the findings as JSON instead of text'\n },\n quiet: {\n type: 'boolean',\n short: 'q',\n description: 'Only print errors, suppressing warnings and notes'\n },\n help: {\n type: 'boolean',\n short: 'h',\n description: 'Show help'\n }\n};\nfunction format({\n level,\n where,\n message\n}) {\n return where ? `${level}: ${where}: ${message}` : `${level}: ${message}`;\n}\nasync function run(args) {\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_0__.parseArgs)({\n options,\n args,\n allowPositionals: true\n });\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_1__.printHelp)({\n description,\n examples,\n notes,\n usage: 'jbrowse validate [config.json] [options]',\n options\n });\n return;\n }\n const file = positionals[0] ?? 'config.json';\n // readConfigFile, not readJsonFile: running from the wrong directory is the\n // most common way this fails, and it says which path it looked at.\n const config = await (0,_utils_ts__WEBPACK_IMPORTED_MODULE_1__.readConfigFile)(file);\n const result = (0,_validateConfig_ts__WEBPACK_IMPORTED_MODULE_2__.validateConfig)(config);\n if (flags.json) {\n console.log(JSON.stringify({\n file,\n ok: result.errorCount === 0,\n ...result\n }, null, 2));\n } else {\n const shown = flags.quiet ? result.problems.filter(p => p.level === 'error') : result.problems;\n if (!flags.quiet) {\n for (const note of result.notes) {\n console.log(`note: ${note}`);\n }\n }\n for (const problem of shown) {\n console.log(format(problem));\n }\n if (result.problems.length === 0) {\n console.log(`${file} looks good`);\n } else {\n console.log(`\\n${result.errorCount} error(s), ${result.warningCount} warning(s) in ${file}`);\n }\n }\n if (result.errorCount > 0) {\n // Non-zero so this can gate a deploy. Thrown rather than process.exit so it\n // goes through the same error path as every other command.\n throw new Error(`${result.errorCount} error(s) found in ${file}`\n // no cause: the findings are already printed above\n );\n }\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/validate/index.ts?\n}");
636
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils.ts */ \"./src/utils.ts\");\n/* harmony import */ var _validateConfig_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./validateConfig.ts */ \"./src/commands/validate/validateConfig.ts\");\n\n\n\nconst description = 'Check a JBrowse configuration for errors, including the ones JBrowse itself accepts silently';\nconst notes = `A config key JBrowse does not recognize is ignored rather than reported, so a\nmisspelled slot leaves the track loading normally with the setting doing\nnothing. That is what this command is mainly for.\n\nTwo levels are reported:\n\n error JBrowse accepts it and silently does the wrong thing — an unknown\n slot, a key a defaultSession view or display does not declare, a\n track naming an assembly the config never defines, a defaultSession\n naming a trackId that does not exist, a duplicate trackId. Exits 1.\n\n warning JBrowse will complain by itself on load, or handles it — a type name\n the core plugins do not register (expected if one of your plugins\n registers it), or a legacy key a migration rewrites, such as a view\n nesting its settings under \"init\". Never fails the run.\n\nTypes registered by plugins are not known to this command, so they come through\nas warnings rather than errors.`;\nconst examples = ['# check the config.json in the current directory', '$ jbrowse validate', '', '# check a specific config or saved session', '$ jbrowse validate /path/to/config.json', '$ jbrowse validate mysession.jbrowse', '', '# machine-readable output', '$ jbrowse validate config.json --json'];\nconst options = {\n json: {\n type: 'boolean',\n description: 'Output the findings as JSON instead of text'\n },\n quiet: {\n type: 'boolean',\n short: 'q',\n description: 'Only print errors, suppressing warnings and notes'\n },\n help: {\n type: 'boolean',\n short: 'h',\n description: 'Show help'\n }\n};\nfunction format({\n level,\n where,\n message\n}) {\n return where ? `${level}: ${where}: ${message}` : `${level}: ${message}`;\n}\nasync function run(args) {\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_0__.parseArgs)({\n options,\n args,\n allowPositionals: true\n });\n if (flags.help) {\n (0,_utils_ts__WEBPACK_IMPORTED_MODULE_1__.printHelp)({\n description,\n examples,\n notes,\n usage: 'jbrowse validate [config.json] [options]',\n options\n });\n return;\n }\n const file = positionals[0] ?? 'config.json';\n // readConfigFile, not readJsonFile: running from the wrong directory is the\n // most common way this fails, and it says which path it looked at.\n const config = await (0,_utils_ts__WEBPACK_IMPORTED_MODULE_1__.readConfigFile)(file);\n const result = (0,_validateConfig_ts__WEBPACK_IMPORTED_MODULE_2__.validateConfig)(config);\n if (flags.json) {\n console.log(JSON.stringify({\n file,\n ok: result.errorCount === 0,\n ...result\n }, null, 2));\n } else {\n const shown = flags.quiet ? result.problems.filter(p => p.level === 'error') : result.problems;\n if (!flags.quiet) {\n for (const note of result.notes) {\n console.log(`note: ${note}`);\n }\n }\n for (const problem of shown) {\n console.log(format(problem));\n }\n if (result.problems.length === 0) {\n console.log(`${file} looks good`);\n } else {\n console.log(`\\n${result.errorCount} error(s), ${result.warningCount} warning(s) in ${file}`);\n }\n }\n if (result.errorCount > 0) {\n // Non-zero so this can gate a deploy. Thrown rather than process.exit so it\n // goes through the same error path as every other command.\n throw new Error(`${result.errorCount} error(s) found in ${file}`\n // no cause: the findings are already printed above\n );\n }\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/validate/index.ts?\n}");
604
637
 
605
638
  /***/ },
606
639
 
@@ -622,7 +655,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
622
655
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
623
656
 
624
657
  "use strict";
625
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ validateConfig: () => (/* binding */ validateConfig)\n/* harmony export */ });\n/* harmony import */ var _configManifest_generated_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./configManifest.generated.ts */ \"./src/commands/validate/configManifest.generated.ts\");\n/* harmony import */ var _displayDefaultKeys_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./displayDefaultKeys.ts */ \"./src/commands/validate/displayDefaultKeys.ts\");\n/* harmony import */ var _suggest_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./suggest.ts */ \"./src/commands/validate/suggest.ts\");\n// Checks a JBrowse config (or a saved session file) against the generated\n// config-slot manifest.\n//\n// Why this exists at all, given MST type-checks a config on load: **MST models\n// ignore snapshot keys they do not declare**. Write `bamLocatoin`, or a\n// `renderers: {...}` block from an older config, and nothing anywhere reports\n// it — the track loads, appears, and the setting silently does nothing. That is\n// the check no other layer performs, and it is the mistake config authors\n// (human or agent) make most.\n//\n// Pure: no filesystem, no process exit. The command wrapper owns both.\n\n\n\n\n// ------------------------------------------------------------------ reporting\n\nclass Report {\n problems = [];\n notes = [];\n error(where, message) {\n this.problems.push({\n level: 'error',\n where,\n message\n });\n }\n warn(where, message) {\n this.problems.push({\n level: 'warning',\n where,\n message\n });\n }\n note(message) {\n this.notes.push(message);\n }\n result() {\n return {\n problems: this.problems,\n notes: this.notes,\n errorCount: this.problems.filter(p => p.level === 'error').length,\n warningCount: this.problems.filter(p => p.level === 'warning').length\n };\n }\n}\n\n// ------------------------------------------------------------------- checking\n\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n// Keys a schema entry accepts as input: what it declares, plus the shorthands\n// normalizeSnapshot expands — an adapter written with `uri` never mentions\n// `bamLocation`, and both forms are correct.\nfunction acceptedKeys(entry) {\n return [...entry.slots.map(s => s.name), ...(entry.shorthandKeys ?? [])];\n}\n\n// A key JBrowse fills in for itself, so writing one by hand is an anti-pattern\n// whether or not the schema happens to declare a slot for it. Both halves get a\n// message that says so, because the generic ones send the author looking for a\n// typo in a key that is spelled correctly.\n//\n// `sequenceAdapter` is the standing case, and it is now uniform:\n// `getFeatureAdapter` and `CoreGetRefNames` prime every feature adapter's\n// `sequenceAdapterConfig` from the assembly the track is displayed against, and\n// `getSequenceSubAdapter` is what every adapter that reads a sequence resolves\n// through. So no track has to carry one — three grape/peach/volvox configs were\n// copying their own assembly's FASTA urls into a GC track, and two hg002 tracks\n// carried one on a `CramAdapter`, which declares no such slot at all.\n//\n// Two levels, and the split is this validator's own rule: an undeclared key does\n// nothing where it is written (error), a declared one works and is simply the\n// wrong way round (warning).\nconst SELF_SUPPLIED = {\n sequenceAdapter: {\n undeclared: 'JBrowse takes the sequence from the assembly the track is displayed against, and this adapter declares no `sequenceAdapter` slot, so the one written here is never read — delete it',\n declared: '`sequenceAdapter` is set by hand. JBrowse takes the sequence from the assembly the track is displayed against, so this is only needed to read some OTHER sequence — and it pins the track to that source even when the assembly changes. Delete it unless that is what you meant'\n }\n};\nfunction checkSlots(obj, entry, where, report) {\n const accepted = acceptedKeys(entry);\n const legacyKeys = entry.legacyKeys ?? [];\n for (const key of Object.keys(obj)) {\n if (accepted.includes(key)) {\n const selfSupplied = SELF_SUPPLIED[key];\n if (selfSupplied) {\n report.warn(`${where}.${key}`, selfSupplied.declared);\n }\n continue;\n }\n // JSON has no comments, so people reach for a `_comment` key. MST drops it\n // like any other undeclared key, which is what the author wanted — calling\n // that \"silently does nothing\" is true and useless, and a validator that\n // cries wolf on a deliberate annotation is one an author learns to ignore.\n if (/^_+comment/i.test(key)) {\n continue;\n }\n // A legacy key is consumed by the schema's own preProcessSnapshot and\n // lifted into current slots, so the config does load — but it is stale, and\n // whether every setting inside it survived the lift is worth a look.\n if (legacyKeys.includes(key)) {\n report.warn(`${where}.${key}`, `\"${key}\" is a legacy key that a migration rewrites into current slots — the config loads, but check the settings inside it landed`);\n continue;\n }\n report.error(`${where}.${key}`, SELF_SUPPLIED[key]?.undeclared ?? `unknown slot \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, accepted)} — JBrowse ignores keys it does not declare, so this setting silently does nothing`);\n }\n // Recurse into sub-schemas the config actually filled in. One it omits is\n // fine: the sub-schema supplies its own defaults.\n for (const slot of entry.slots) {\n const value = obj[slot.name];\n if (slot.subSlots && isRecord(value)) {\n checkSlots(value, {\n slots: slot.subSlots\n }, `${where}.${slot.name}`, report);\n }\n }\n}\n\n// Resolves a `type` against one of the manifest's groups.\n//\n// An unrecognized type is a WARNING, never an error, and the line is drawn\n// there deliberately:\n//\n// error = JBrowse accepts the config and silently does the wrong thing\n// warning = JBrowse will complain by itself when the config loads\n//\n// An unknown type is loud — MST throws \"Unknown track type\" on load, so the\n// author finds out either way. It is also frequently not wrong: a plugin\n// registers types this manifest never saw. An unknown *slot* has neither\n// property, which is why that one is the error.\nfunction resolveType(obj, group, groupLabel, where, report) {\n const typeName = obj.type;\n if (typeof typeName !== 'string') {\n report.error(where, `missing \"type\" — expected one of the ${groupLabel} types`);\n return undefined;\n }\n const canonical = typeName in group ? typeName :\n // An old type name a current type still answers to. baseTrackConfig\n // canonicalizes it before validation and sessionMigrations restores the\n // settings that made the old type distinct, so this is supported config\n // — check it against the type that absorbed it.\n Object.keys(group).find(name => group[name].aliases?.includes(typeName));\n const entry = canonical === undefined ? undefined : group[canonical];\n if (entry && canonical !== undefined) {\n return {\n ...entry,\n canonicalName: canonical\n };\n }\n report.warn(where, `${groupLabel} type \"${typeName}\" is not registered by the core plugins${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(typeName, Object.keys(group))} — it may come from a plugin`);\n return undefined;\n}\nfunction checkAdapter(adapter, manifest, where, report) {\n if (!isRecord(adapter)) {\n report.error(where, 'missing \"adapter\"');\n return;\n }\n const entry = resolveType(adapter, manifest.adapters, 'adapter', `${where}.type`, report);\n if (entry) {\n checkSlots(adapter, entry, where, report);\n }\n}\n\n// A pluggable sub-object written inline: resolve its type against `group`, then\n// check its own slots. `connections`, `aggregateTextSearchAdapters` and a\n// track's `textSearching.textSearchAdapter` are all this shape, and none of\n// them was opened at all — a Trix path typo is a search that returns nothing,\n// which is the class of mistake this command exists to catch.\nfunction checkPluggable(obj, group, groupLabel, where, report) {\n if (!isRecord(obj)) {\n report.error(where, `${groupLabel} must be an object`);\n return;\n }\n const entry = resolveType(obj, group, groupLabel, `${where}.type`, report);\n if (entry) {\n checkSlots(obj, entry, where, report);\n }\n}\nfunction checkDisplayDefaults(defaults, trackEntry, manifest, where, report) {\n if (!isRecord(defaults)) {\n report.error(where, 'displayDefaults must be an object of display settings');\n return;\n }\n const accepted = (0,_displayDefaultKeys_ts__WEBPACK_IMPORTED_MODULE_1__.displayDefaultKeys)(trackEntry, manifest);\n if (accepted.length === 0) {\n return;\n }\n for (const key of Object.keys(defaults)) {\n if (!accepted.includes(key)) {\n report.error(`${where}.${key}`, `no display of this track declares \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, accepted)}`);\n }\n }\n}\nfunction checkTrack(track, index, manifest, report, ctx) {\n const where = `tracks[${index}]`;\n // The loose form: a data file and no adapter. JBrowse infers the track type\n // and adapter from the file's extension at load, so neither is required\n // here, and neither can be checked against the manifest without the format\n // plugins' guessers — the keys written beside `uri` still are.\n const loose = typeof track.uri === 'string' && !('adapter' in track);\n const entry = loose && track.type === undefined ? undefined : resolveType(track, manifest.tracks, 'track', `${where}.type`, report);\n const trackId = track.trackId;\n if (typeof trackId !== 'string' || !trackId) {\n report.error(`${where}.trackId`, 'missing \"trackId\"');\n } else if (ctx.seenTrackIds.has(trackId)) {\n report.error(`${where}.trackId`, `duplicate trackId \"${trackId}\" — a later track with the same id shadows the earlier one`);\n } else {\n ctx.seenTrackIds.add(trackId);\n }\n const names = track.assemblyNames;\n if (!Array.isArray(names) || names.length === 0) {\n if (!loose || ctx.assemblyCount !== 1) {\n report.error(`${where}.assemblyNames`, 'missing \"assemblyNames\"');\n }\n } else {\n for (const name of names) {\n if (typeof name === 'string' && !ctx.assemblyNames.has(name)) {\n // The connection caveat leads and the spelling guess trails, because a\n // connection needn't be in this file to supply the assembly — the one\n // that supplies test_data/volvox's `volvox_del2` is added at runtime,\n // and `did you mean \"volvox_del\"?` called a working config a typo.\n report.error(`${where}.assemblyNames`, `assembly \"${name}\" is not defined in this config, and no connection here supplies one — though a connection added at runtime can${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(name, [...ctx.assemblyNames])}`);\n }\n }\n }\n if (entry) {\n // displayDefaults is a shorthand no track schema declares, so it is\n // exempted from the track's own slot check and validated on its own terms.\n checkSlots(track, {\n ...entry,\n shorthandKeys: [...(entry.shorthandKeys ?? []), 'displayDefaults', ...(loose ? ['uri', 'index'] : [])]\n }, where, report);\n if (track.displayDefaults !== undefined) {\n checkDisplayDefaults(track.displayDefaults, entry, manifest, `${where}.displayDefaults`, report);\n }\n }\n if (!loose) {\n checkAdapter(track.adapter, manifest, `${where}.adapter`, report);\n }\n const textSearching = track.textSearching;\n if (isRecord(textSearching) && textSearching.textSearchAdapter !== undefined) {\n checkPluggable(textSearching.textSearchAdapter, manifest.textSearchAdapters, 'text search adapter', `${where}.textSearching.textSearchAdapter`, report);\n }\n if (Array.isArray(track.displays)) {\n for (const [i, display] of track.displays.entries()) {\n if (!isRecord(display)) {\n continue;\n }\n const displayWhere = `${where}.displays[${i}]`;\n const displayEntry = resolveType(display, manifest.displays, 'display', `${displayWhere}.type`, report);\n if (displayEntry) {\n checkSlots(display, displayEntry, displayWhere, report);\n }\n }\n }\n}\nfunction checkAssembly(assembly, index, manifest, report) {\n const where = `assemblies[${index}]`;\n if (typeof assembly.name !== 'string' || !assembly.name) {\n report.error(`${where}.name`, 'missing assembly \"name\"');\n }\n // An assembly has three levels of shorthand, all filled in by\n // assemblyConfigSchema's preProcessSnapshot, and this used to reject every one\n // of them — including `{ name, uri }`, which the cookbook calls the smallest\n // possible config:\n //\n // 1. `{ name, uri }` -> sequence: { adapter: { uri } }\n // 2. `sequence: { adapter: { uri } }` -> adapter type from the extension\n // 3. sequence with no type/trackId -> ReferenceSequenceTrack, derived id\n //\n // Only (2) can't be checked here, and deliberately: the type is guessed\n // through the `Core-guessAdapterForLocation` extension point, and this command\n // loads no plugins on purpose. A `uri` is therefore taken as enough — saying\n // nothing about an adapter we can't name beats calling a working config broken.\n const sequence = assembly.sequence ?? (typeof assembly.uri === 'string' ? {\n adapter: {\n uri: assembly.uri\n }\n } : undefined);\n if (!isRecord(sequence)) {\n report.error(`${where}.sequence`, 'missing \"sequence\" track (or a `uri` naming the sequence file)');\n return;\n }\n if (isRecord(sequence.adapter) && !('type' in sequence.adapter)) {\n if (typeof sequence.adapter.uri !== 'string') {\n report.error(`${where}.sequence.adapter`, 'adapter has neither a \"type\" nor a \"uri\" to infer one from');\n }\n return;\n }\n checkAdapter(sequence.adapter, manifest, `${where}.sequence.adapter`, report);\n}\n\n// A display node written inside a session — `views[].tracks[].displays[]` — is\n// instantiated by the display's STATE MODEL, not by its config schema. Almost\n// every track-menu setting is a config slot now, and a slot name here is dropped\n// exactly like a misspelling: the session loads, the track appears, the setting\n// does nothing. That is the same silent failure the slot checks above exist for,\n// on the surface people hand-write most, and it is why a whole class of these\n// sat unnoticed in this repo's own fixtures.\n//\n// The advice differs from the unknown-slot case, so the messages do too — a slot\n// is real, it is just in the wrong place, and there are two right places for it.\nfunction checkSessionDisplay(display, manifest, where, report) {\n const entry = resolveType(display, manifest.displays, 'display', `${where}.type`, report);\n // A display type the manifest doesn't know (a plugin's) has already been\n // reported as a warning by resolveType; its props are unknowable here.\n if (!entry?.stateModelProps) {\n return;\n }\n const props = entry.stateModelProps;\n const slots = entry.slots.map(slot => slot.name);\n const migrated = new Set([...(manifest.migratedDisplayKeys['*'] ?? []), ...(manifest.migratedDisplayKeys[entry.canonicalName] ?? [])]);\n for (const key of Object.keys(display)) {\n if (props.includes(key)) {\n continue;\n }\n if (migrated.has(key)) {\n report.warn(`${where}.${key}`, `\"${key}\" is a legacy display-instance key that a session migration lifts onto the config slot replacing it — it still works, but writing the current slot is clearer`);\n } else if (slots.includes(key)) {\n report.error(`${where}.${key}`, `\"${key}\" is a config slot, not a display property, so a session snapshot drops it and the setting silently does nothing — put it on the track's \"displays\" entry under \"tracks\", or in a \"trackConfigDeltas\" entry, instead`);\n } else {\n report.error(`${where}.${key}`, `unknown display property \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, [...props, ...slots])} — a session snapshot drops keys the display does not declare, so this setting silently does nothing`);\n }\n }\n}\n\n// Walks the tracks of a view and its sub-views (a synteny view holds a row of\n// LGVs, each with tracks of its own).\nfunction checkSessionViewTracks(view, manifest, where, report) {\n if (!isRecord(view)) {\n return;\n }\n if (Array.isArray(view.tracks)) {\n for (const [i, track] of view.tracks.entries()) {\n if (!isRecord(track) || !Array.isArray(track.displays)) {\n continue;\n }\n for (const [j, display] of track.displays.entries()) {\n if (isRecord(display)) {\n checkSessionDisplay(display, manifest, `${where}.tracks[${i}].displays[${j}]`, report);\n }\n }\n }\n }\n if (Array.isArray(view.views)) {\n for (const [i, sub] of view.views.entries()) {\n checkSessionViewTracks(sub, manifest, `${where}.views[${i}]`, report);\n }\n }\n}\n\n// A view's `init` names tracks and an assembly by id. Nothing validates those at\n// load: a trackId that does not exist simply fails to open, which reads as a\n// rendering bug rather than a typo.\nfunction checkSession(session, manifest, report, ctx) {\n if (!isRecord(session) || !Array.isArray(session.views)) {\n return;\n }\n for (const [i, view] of session.views.entries()) {\n checkSessionViewTracks(view, manifest, `defaultSession.views[${i}]`, report);\n }\n for (const [i, view] of session.views.entries()) {\n if (!isRecord(view) || !isRecord(view.init)) {\n continue;\n }\n const init = view.init;\n const where = `defaultSession.views[${i}].init`;\n if (typeof init.assembly === 'string' && !ctx.assemblyNames.has(init.assembly)) {\n report.error(`${where}.assembly`, `assembly \"${init.assembly}\" is not defined in this config${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(init.assembly, [...ctx.assemblyNames])}`);\n }\n if (Array.isArray(init.tracks)) {\n // A LinearSyntenyView's `tracks` is one array PER LEVEL (`[[a], [b]]`) —\n // the multi-way form — so flatten one level before reading entries.\n // Treating those inner arrays as track entries reported every genome row\n // of every synteny demo as a track with no trackId.\n const entries = init.tracks.flatMap(t => Array.isArray(t) ? t : [t]);\n for (const [j, entry] of entries.entries()) {\n const trackId = typeof entry === 'string' ? entry : isRecord(entry) ? entry.trackId : undefined;\n if (typeof trackId !== 'string') {\n report.error(`${where}.tracks[${j}]`, 'track entry has no trackId');\n } else if (!ctx.seenTrackIds.has(trackId) && !ctx.sequenceTrackIds.has(trackId)) {\n report.error(`${where}.tracks[${j}]`, `trackId \"${trackId}\" is not defined in this config${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(trackId, [...ctx.seenTrackIds, ...ctx.sequenceTrackIds])}`);\n }\n }\n }\n }\n}\nfunction validateConfig(config, manifest = _configManifest_generated_ts__WEBPACK_IMPORTED_MODULE_0__.configManifest) {\n const report = new Report();\n if (!isRecord(config)) {\n report.error('', 'config is not a JSON object');\n return report.result();\n }\n if (Array.isArray(config.plugins) && config.plugins.length > 0) {\n report.note(`config declares ${config.plugins.length} plugin(s); the types and slots they register are not in the manifest and cannot be checked`);\n }\n const assemblies = (Array.isArray(config.assemblies) ? config.assemblies : isRecord(config.assembly) ? [config.assembly] : []).filter(isRecord);\n if (assemblies.length === 0) {\n report.error('assemblies', 'no assemblies — a config needs at least one');\n }\n const connections = Array.isArray(config.connections) ? config.connections : [];\n const ctx = {\n // An assembly's `aliases` are usable wherever its name is — a track can say\n // `assemblyNames: ['vvx']` against an assembly named volvox that lists vvx\n // as an alias. Leaving them out reports working configs as broken.\n assemblyNames: new Set(assemblies.flatMap(a => [a.name, ...(Array.isArray(a.aliases) ? a.aliases : [])]).filter(n => typeof n === 'string')),\n assemblyCount: assemblies.length,\n seenTrackIds: new Set(),\n // Each assembly's ReferenceSequenceTrack is a real track a session may show\n // by id (`init.tracks: ['hg38-ReferenceSequenceTrack']`); it just lives on\n // the assembly rather than in `tracks`, and collecting only `tracks`\n // reported every such reference as undefined. Both the written trackId and\n // the one the `{name, uri}` shorthand derives, since a config using the\n // shorthand still gets the derived id at runtime.\n sequenceTrackIds: new Set(assemblies.flatMap(a => {\n const declared = isRecord(a.sequence) ? a.sequence.trackId : undefined;\n return [...(typeof declared === 'string' ? [declared] : []), ...(typeof a.name === 'string' ? [`${a.name}-ReferenceSequenceTrack`] : [])];\n }))\n };\n for (const [i, assembly] of assemblies.entries()) {\n checkAssembly(assembly, i, manifest, report);\n }\n const tracks = Array.isArray(config.tracks) ? config.tracks.filter(isRecord) : [];\n for (const [i, track] of tracks.entries()) {\n checkTrack(track, i, manifest, report, ctx);\n }\n for (const [i, connection] of connections.entries()) {\n checkPluggable(connection, manifest.connections, 'connection', `connections[${i}]`, report);\n }\n const aggregate = Array.isArray(config.aggregateTextSearchAdapters) ? config.aggregateTextSearchAdapters : [];\n for (const [i, adapter] of aggregate.entries()) {\n checkPluggable(adapter, manifest.textSearchAdapters, 'text search adapter', `aggregateTextSearchAdapters[${i}]`, report);\n }\n\n // Tracks are registered before the session is checked, so a session may\n // reference any track in the file regardless of declaration order.\n checkSession(config.defaultSession, manifest, report, ctx);\n return report.result();\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/validate/validateConfig.ts?\n}");
658
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ validateConfig: () => (/* binding */ validateConfig)\n/* harmony export */ });\n/* harmony import */ var _configManifest_generated_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./configManifest.generated.ts */ \"./src/commands/validate/configManifest.generated.ts\");\n/* harmony import */ var _displayDefaultKeys_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./displayDefaultKeys.ts */ \"./src/commands/validate/displayDefaultKeys.ts\");\n/* harmony import */ var _suggest_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./suggest.ts */ \"./src/commands/validate/suggest.ts\");\n// Checks a JBrowse config (or a saved session file) against the generated\n// config-slot manifest.\n//\n// Why this exists at all, given MST type-checks a config on load: **MST models\n// ignore snapshot keys they do not declare**. Write `bamLocatoin`, or a\n// `renderers: {...}` block from an older config, and nothing anywhere reports\n// it — the track loads, appears, and the setting silently does nothing. That is\n// the check no other layer performs, and it is the mistake config authors\n// (human or agent) make most.\n//\n// Pure: no filesystem, no process exit. The command wrapper owns both.\n\n\n\n\n// ------------------------------------------------------------------ reporting\n\nclass Report {\n problems = [];\n notes = [];\n error(where, message) {\n this.problems.push({\n level: 'error',\n where,\n message\n });\n }\n warn(where, message) {\n this.problems.push({\n level: 'warning',\n where,\n message\n });\n }\n note(message) {\n this.notes.push(message);\n }\n result() {\n return {\n problems: this.problems,\n notes: this.notes,\n errorCount: this.problems.filter(p => p.level === 'error').length,\n warningCount: this.problems.filter(p => p.level === 'warning').length\n };\n }\n}\n\n// ------------------------------------------------------------------- checking\n\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n// Keys a schema entry accepts as input: what it declares, plus the shorthands\n// normalizeSnapshot expands — an adapter written with `uri` never mentions\n// `bamLocation`, and both forms are correct.\nfunction acceptedKeys(entry) {\n return [...entry.slots.map(s => s.name), ...(entry.shorthandKeys ?? [])];\n}\n\n// A key JBrowse fills in for itself, so writing one by hand is an anti-pattern\n// whether or not the schema happens to declare a slot for it. Both halves get a\n// message that says so, because the generic ones send the author looking for a\n// typo in a key that is spelled correctly.\n//\n// `sequenceAdapter` is the standing case, and it is now uniform:\n// `getFeatureAdapter` and `CoreGetRefNames` prime every feature adapter's\n// `sequenceAdapterConfig` from the assembly the track is displayed against, and\n// `getSequenceSubAdapter` is what every adapter that reads a sequence resolves\n// through. So no track has to carry one — three grape/peach/volvox configs were\n// copying their own assembly's FASTA urls into a GC track, and two hg002 tracks\n// carried one on a `CramAdapter`, which declares no such slot at all.\n//\n// Two levels, and the split is this validator's own rule: an undeclared key does\n// nothing where it is written (error), a declared one works and is simply the\n// wrong way round (warning).\nconst SELF_SUPPLIED = {\n sequenceAdapter: {\n undeclared: 'JBrowse takes the sequence from the assembly the track is displayed against, and this adapter declares no `sequenceAdapter` slot, so the one written here is never read — delete it',\n declared: '`sequenceAdapter` is set by hand. JBrowse takes the sequence from the assembly the track is displayed against, so this is only needed to read some OTHER sequence — and it pins the track to that source even when the assembly changes. Delete it unless that is what you meant'\n }\n};\nfunction checkSlots(obj, entry, where, report) {\n const accepted = acceptedKeys(entry);\n const legacyKeys = entry.legacyKeys ?? [];\n for (const key of Object.keys(obj)) {\n if (accepted.includes(key)) {\n const selfSupplied = SELF_SUPPLIED[key];\n if (selfSupplied) {\n report.warn(`${where}.${key}`, selfSupplied.declared);\n }\n continue;\n }\n // JSON has no comments, so people reach for a `_comment` key. MST drops it\n // like any other undeclared key, which is what the author wanted — calling\n // that \"silently does nothing\" is true and useless, and a validator that\n // cries wolf on a deliberate annotation is one an author learns to ignore.\n if (/^_+comment/i.test(key)) {\n continue;\n }\n // A legacy key is consumed by the schema's own preProcessSnapshot and\n // lifted into current slots, so the config does load — but it is stale, and\n // whether every setting inside it survived the lift is worth a look.\n if (legacyKeys.includes(key)) {\n report.warn(`${where}.${key}`, `\"${key}\" is a legacy key that a migration rewrites into current slots — the config loads, but check the settings inside it landed`);\n continue;\n }\n report.error(`${where}.${key}`, SELF_SUPPLIED[key]?.undeclared ?? `unknown slot \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, accepted)} — JBrowse ignores keys it does not declare, so this setting silently does nothing`);\n }\n // Recurse into sub-schemas the config actually filled in. One it omits is\n // fine: the sub-schema supplies its own defaults.\n for (const slot of entry.slots) {\n const value = obj[slot.name];\n if (slot.subSlots && isRecord(value)) {\n checkSlots(value, {\n slots: slot.subSlots\n }, `${where}.${slot.name}`, report);\n }\n }\n}\n\n// Resolves a `type` against one of the manifest's groups.\n//\n// An unrecognized type is a WARNING, never an error, and the line is drawn\n// there deliberately:\n//\n// error = JBrowse accepts the config and silently does the wrong thing\n// warning = JBrowse will complain by itself when the config loads\n//\n// An unknown type is loud — MST throws \"Unknown track type\" on load, so the\n// author finds out either way. It is also frequently not wrong: a plugin\n// registers types this manifest never saw. An unknown *slot* has neither\n// property, which is why that one is the error.\nfunction resolveType(obj, group, groupLabel, where, report) {\n const typeName = obj.type;\n if (typeof typeName !== 'string') {\n report.error(where, `missing \"type\" — expected one of the ${groupLabel} types`);\n return undefined;\n }\n const canonical = typeName in group ? typeName :\n // An old type name a current type still answers to. baseTrackConfig\n // canonicalizes it before validation and sessionMigrations restores the\n // settings that made the old type distinct, so this is supported config\n // — check it against the type that absorbed it.\n Object.keys(group).find(name => group[name].aliases?.includes(typeName));\n const entry = canonical === undefined ? undefined : group[canonical];\n if (entry && canonical !== undefined) {\n return {\n ...entry,\n canonicalName: canonical\n };\n }\n report.warn(where, `${groupLabel} type \"${typeName}\" is not registered by the core plugins${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(typeName, Object.keys(group))} — it may come from a plugin`);\n return undefined;\n}\nfunction checkAdapter(adapter, manifest, where, report) {\n if (!isRecord(adapter)) {\n report.error(where, 'missing \"adapter\"');\n return;\n }\n const entry = resolveType(adapter, manifest.adapters, 'adapter', `${where}.type`, report);\n if (entry) {\n checkSlots(adapter, entry, where, report);\n }\n}\n\n// A pluggable sub-object written inline: resolve its type against `group`, then\n// check its own slots. `connections`, `aggregateTextSearchAdapters` and a\n// track's `textSearching.textSearchAdapter` are all this shape, and none of\n// them was opened at all — a Trix path typo is a search that returns nothing,\n// which is the class of mistake this command exists to catch.\nfunction checkPluggable(obj, group, groupLabel, where, report) {\n if (!isRecord(obj)) {\n report.error(where, `${groupLabel} must be an object`);\n return;\n }\n const entry = resolveType(obj, group, groupLabel, `${where}.type`, report);\n if (entry) {\n checkSlots(obj, entry, where, report);\n }\n}\nfunction checkDisplayDefaults(defaults, trackEntry, manifest, where, report) {\n if (!isRecord(defaults)) {\n report.error(where, 'displayDefaults must be an object of display settings');\n return;\n }\n const accepted = (0,_displayDefaultKeys_ts__WEBPACK_IMPORTED_MODULE_1__.displayDefaultKeys)(trackEntry, manifest);\n if (accepted.length === 0) {\n return;\n }\n for (const key of Object.keys(defaults)) {\n if (!accepted.includes(key)) {\n report.error(`${where}.${key}`, `no display of this track declares \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, accepted)}`);\n }\n }\n}\nfunction checkTrack(track, index, manifest, report, ctx) {\n const where = `tracks[${index}]`;\n // The loose form: a data file and no adapter. JBrowse infers the track type\n // and adapter from the file's extension at load, so neither is required\n // here, and neither can be checked against the manifest without the format\n // plugins' guessers — the keys written beside `uri` still are.\n const loose = typeof track.uri === 'string' && !('adapter' in track);\n const entry = loose && track.type === undefined ? undefined : resolveType(track, manifest.tracks, 'track', `${where}.type`, report);\n const trackId = track.trackId;\n if (typeof trackId !== 'string' || !trackId) {\n report.error(`${where}.trackId`, 'missing \"trackId\"');\n } else if (ctx.seenTrackIds.has(trackId)) {\n report.error(`${where}.trackId`, `duplicate trackId \"${trackId}\" — a later track with the same id shadows the earlier one`);\n } else {\n ctx.seenTrackIds.add(trackId);\n }\n const names = track.assemblyNames;\n if (!Array.isArray(names) || names.length === 0) {\n if (!loose || ctx.assemblyCount !== 1) {\n report.error(`${where}.assemblyNames`, 'missing \"assemblyNames\"');\n }\n } else {\n for (const name of names) {\n if (typeof name === 'string' && !ctx.assemblyNames.has(name)) {\n // The connection caveat leads and the spelling guess trails, because a\n // connection needn't be in this file to supply the assembly — the one\n // that supplies test_data/volvox's `volvox_del2` is added at runtime,\n // and `did you mean \"volvox_del\"?` called a working config a typo.\n report.error(`${where}.assemblyNames`, `assembly \"${name}\" is not defined in this config, and no connection here supplies one — though a connection added at runtime can${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(name, [...ctx.assemblyNames])}`);\n }\n }\n }\n if (entry) {\n // displayDefaults is a shorthand no track schema declares, so it is\n // exempted from the track's own slot check and validated on its own terms.\n checkSlots(track, {\n ...entry,\n shorthandKeys: [...(entry.shorthandKeys ?? []), 'displayDefaults', ...(loose ? ['uri', 'index'] : [])]\n }, where, report);\n if (track.displayDefaults !== undefined) {\n checkDisplayDefaults(track.displayDefaults, entry, manifest, `${where}.displayDefaults`, report);\n }\n }\n if (!loose) {\n checkAdapter(track.adapter, manifest, `${where}.adapter`, report);\n }\n const textSearching = track.textSearching;\n if (isRecord(textSearching) && textSearching.textSearchAdapter !== undefined) {\n checkPluggable(textSearching.textSearchAdapter, manifest.textSearchAdapters, 'text search adapter', `${where}.textSearching.textSearchAdapter`, report);\n }\n if (Array.isArray(track.displays)) {\n for (const [i, display] of track.displays.entries()) {\n if (!isRecord(display)) {\n continue;\n }\n const displayWhere = `${where}.displays[${i}]`;\n const displayEntry = resolveType(display, manifest.displays, 'display', `${displayWhere}.type`, report);\n if (displayEntry) {\n checkSlots(display, displayEntry, displayWhere, report);\n }\n }\n }\n}\nfunction checkAssembly(assembly, index, manifest, report) {\n const where = `assemblies[${index}]`;\n if (typeof assembly.name !== 'string' || !assembly.name) {\n report.error(`${where}.name`, 'missing assembly \"name\"');\n }\n // An assembly has three levels of shorthand, all filled in by\n // assemblyConfigSchema's preProcessSnapshot, and this used to reject every one\n // of them — including `{ name, uri }`, which the cookbook calls the smallest\n // possible config:\n //\n // 1. `{ name, uri }` -> sequence: { adapter: { uri } }\n // 2. `sequence: { adapter: { uri } }` -> adapter type from the extension\n // 3. sequence with no type/trackId -> ReferenceSequenceTrack, derived id\n //\n // Only (2) can't be checked here, and deliberately: the type is guessed\n // through the `Core-guessAdapterForLocation` extension point, and this command\n // loads no plugins on purpose. A `uri` is therefore taken as enough — saying\n // nothing about an adapter we can't name beats calling a working config broken.\n const sequence = assembly.sequence ?? (typeof assembly.uri === 'string' ? {\n adapter: {\n uri: assembly.uri\n }\n } : undefined);\n if (!isRecord(sequence)) {\n report.error(`${where}.sequence`, 'missing \"sequence\" track (or a `uri` naming the sequence file)');\n return;\n }\n if (isRecord(sequence.adapter) && !('type' in sequence.adapter)) {\n if (typeof sequence.adapter.uri !== 'string') {\n report.error(`${where}.sequence.adapter`, 'adapter has neither a \"type\" nor a \"uri\" to infer one from');\n }\n return;\n }\n checkAdapter(sequence.adapter, manifest, `${where}.sequence.adapter`, report);\n}\n\n// A display node written inside a session — `views[].tracks[].displays[]` — is\n// instantiated by the display's STATE MODEL, not by its config schema. Almost\n// every track-menu setting is a config slot now, and a slot name here is dropped\n// exactly like a misspelling: the session loads, the track appears, the setting\n// does nothing. That is the same silent failure the slot checks above exist for,\n// on the surface people hand-write most, and it is why a whole class of these\n// sat unnoticed in this repo's own fixtures.\n//\n// The advice differs from the unknown-slot case, so the messages do too — a slot\n// is real, it is just in the wrong place, and there are two right places for it.\nfunction checkSessionDisplay(display, manifest, where, report) {\n const entry = resolveType(display, manifest.displays, 'display', `${where}.type`, report);\n // A display type the manifest doesn't know (a plugin's) has already been\n // reported as a warning by resolveType; its props are unknowable here.\n if (!entry?.stateModelProps) {\n return;\n }\n const props = entry.stateModelProps;\n const slots = entry.slots.map(slot => slot.name);\n const migrated = new Set([...(manifest.migratedDisplayKeys['*'] ?? []), ...(manifest.migratedDisplayKeys[entry.canonicalName] ?? [])]);\n for (const key of Object.keys(display)) {\n if (props.includes(key)) {\n continue;\n }\n if (migrated.has(key)) {\n report.warn(`${where}.${key}`, `\"${key}\" is a legacy display-instance key that a session migration lifts onto the config slot replacing it — it still works, but writing the current slot is clearer`);\n } else if (slots.includes(key)) {\n report.error(`${where}.${key}`, `\"${key}\" is a config slot, not a display property, so a session snapshot drops it and the setting silently does nothing — put it on the track's \"displays\" entry under \"tracks\", or in a \"trackConfigDeltas\" entry, instead`);\n } else {\n report.error(`${where}.${key}`, `unknown display property \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, [...props, ...slots])} — a session snapshot drops keys the display does not declare, so this setting silently does nothing`);\n }\n }\n}\n\n// Walks the tracks of a view and its sub-views (a synteny view holds a row of\n// LGVs, each with tracks of its own).\nfunction checkSessionViewTracks(view, manifest, where, report) {\n if (!isRecord(view)) {\n return;\n }\n if (Array.isArray(view.tracks)) {\n for (const [i, track] of view.tracks.entries()) {\n if (!isRecord(track) || !Array.isArray(track.displays)) {\n continue;\n }\n for (const [j, display] of track.displays.entries()) {\n if (isRecord(display)) {\n checkSessionDisplay(display, manifest, `${where}.tracks[${i}].displays[${j}]`, report);\n }\n }\n }\n }\n if (Array.isArray(view.views)) {\n for (const [i, sub] of view.views.entries()) {\n checkSessionViewTracks(sub, manifest, `${where}.views[${i}]`, report);\n }\n }\n}\n\n// A view node in a session — `defaultSession.views[]` — is instantiated by the\n// view's STATE MODEL, and a view has no config schema at all, so every setting\n// an author writes lands on that node: the properties MST restores, plus the\n// launch keys a launcher resolves (`assembly`, `loc`, `tracks`). Those two\n// together are the whole accepted set, which is what makes this check\n// exhaustive rather than a guess — anything else is dropped exactly like a\n// misspelling, and the view opens on its defaults with nothing said.\n//\n// The same trap checkSessionDisplay catches one level down, and the same three\n// diagnoses: a real key in the wrong place, a stale spelling that still works,\n// and a key nothing anywhere reads.\nfunction checkSessionViewKeys(view, entry, manifest, where, report) {\n const accepted = [...entry.stateModelProps, ...entry.launchKeys, ...(entry.passThrough ?? [])];\n for (const key of Object.keys(view)) {\n // `init` gets its own message from checkSessionView below\n if (accepted.includes(key) || key === 'init') {\n continue;\n }\n // Whichever other view types do read the key. `assembly` on a DotplotView is\n // not a misspelling and no suggestion reaches it, so naming the views that\n // take it is the only thing that tells the author what they wrote.\n const elsewhere = Object.entries(manifest.views).filter(([name, other]) => name !== entry.canonicalName && [...other.stateModelProps, ...other.launchKeys].includes(key)).map(([name]) => name);\n report.error(`${where}.${key}`, elsewhere.length ? `\"${key}\" is a setting of ${elsewhere.join(', ')}, not of ${entry.canonicalName}${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, accepted)} — a session snapshot drops keys the view does not declare, so this setting silently does nothing` : `unknown view key \"${key}\"${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(key, accepted)} — a session snapshot drops keys the view does not declare, so this setting silently does nothing`);\n }\n}\n\n// The ids a view names, which nothing validates at load: a trackId that does not\n// exist simply fails to open, which reads as a rendering bug rather than a typo.\nfunction checkViewReferences(view, where, report, ctx) {\n const assembly = view.assembly;\n if (typeof assembly === 'string' && !ctx.assemblyNames.has(assembly)) {\n report.error(`${where}.assembly`, `assembly \"${assembly}\" is not defined in this config${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(assembly, [...ctx.assemblyNames])}`);\n }\n if (!Array.isArray(view.tracks)) {\n return;\n }\n // A LinearSyntenyView's `tracks` is one array PER LEVEL (`[[a], [b]]`) — the\n // multi-way form — so flatten one level before reading entries. Treating those\n // inner arrays as track entries reported every genome row of every synteny\n // demo as a track with no trackId.\n const entries = view.tracks.flatMap(t => Array.isArray(t) ? t : [t]);\n for (const [j, entry] of entries.entries()) {\n // A built track snapshot names its config through `configuration` rather\n // than `trackId`, and is state MST restores rather than a reference to open.\n if (isRecord(entry) && !('trackId' in entry)) {\n continue;\n }\n const trackId = isRecord(entry) ? entry.trackId : entry;\n if (typeof trackId !== 'string') {\n report.error(`${where}.tracks[${j}]`, 'track entry has no trackId');\n } else if (!ctx.seenTrackIds.has(trackId) && !ctx.sequenceTrackIds.has(trackId)) {\n report.error(`${where}.tracks[${j}]`, `trackId \"${trackId}\" is not defined in this config${(0,_suggest_ts__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(trackId, [...ctx.seenTrackIds, ...ctx.sequenceTrackIds])}`);\n }\n }\n}\nfunction checkSessionView(view, manifest, where, report, ctx) {\n const entry = resolveType(view, manifest.views, 'view', `${where}.type`, report);\n // A view type the manifest doesn't know (a plugin's) is already a warning from\n // resolveType, and its keys are unknowable here.\n if (!entry) {\n return;\n }\n checkSessionViewKeys(view, entry, manifest, where, report);\n checkViewReferences(view, where, report, ctx);\n\n // A warning, not an error: v5 unwraps the nesting on the way in, so the\n // settings do arrive. The keys inside get the same check the flat ones do,\n // since that is where they land.\n if (view.init !== undefined) {\n report.warn(`${where}.init`, 'settings nested under \"init\", which is deprecated: write every setting directly on the view object');\n if (isRecord(view.init)) {\n checkSessionViewKeys(view.init, entry, manifest, `${where}.init`, report);\n checkViewReferences(view.init, `${where}.init`, report, ctx);\n }\n }\n\n // A synteny or breakpoint row is a whole view snapshot of its own. Only a row\n // carrying a `type` can be checked: a row written as a recipe names no view\n // type, and which one it becomes is the parent launcher's business.\n if (Array.isArray(view.views)) {\n for (const [i, row] of view.views.entries()) {\n if (isRecord(row) && typeof row.type === 'string') {\n checkSessionView(row, manifest, `${where}.views[${i}]`, report, ctx);\n }\n }\n }\n}\nfunction checkSession(session, manifest, report, ctx) {\n if (!isRecord(session) || !Array.isArray(session.views)) {\n return;\n }\n for (const [i, view] of session.views.entries()) {\n checkSessionViewTracks(view, manifest, `defaultSession.views[${i}]`, report);\n }\n for (const [i, view] of session.views.entries()) {\n if (isRecord(view)) {\n checkSessionView(view, manifest, `defaultSession.views[${i}]`, report, ctx);\n }\n }\n}\nfunction validateConfig(config, manifest = _configManifest_generated_ts__WEBPACK_IMPORTED_MODULE_0__.configManifest) {\n const report = new Report();\n if (!isRecord(config)) {\n report.error('', 'config is not a JSON object');\n return report.result();\n }\n if (Array.isArray(config.plugins) && config.plugins.length > 0) {\n report.note(`config declares ${config.plugins.length} plugin(s); the types and slots they register are not in the manifest and cannot be checked`);\n }\n const assemblies = (Array.isArray(config.assemblies) ? config.assemblies : isRecord(config.assembly) ? [config.assembly] : []).filter(isRecord);\n if (assemblies.length === 0) {\n report.error('assemblies', 'no assemblies — a config needs at least one');\n }\n const connections = Array.isArray(config.connections) ? config.connections : [];\n const ctx = {\n // An assembly's `aliases` are usable wherever its name is — a track can say\n // `assemblyNames: ['vvx']` against an assembly named volvox that lists vvx\n // as an alias. Leaving them out reports working configs as broken.\n assemblyNames: new Set(assemblies.flatMap(a => [a.name, ...(Array.isArray(a.aliases) ? a.aliases : [])]).filter(n => typeof n === 'string')),\n assemblyCount: assemblies.length,\n seenTrackIds: new Set(),\n // Each assembly's ReferenceSequenceTrack is a real track a session may show\n // by id (`init.tracks: ['hg38-ReferenceSequenceTrack']`); it just lives on\n // the assembly rather than in `tracks`, and collecting only `tracks`\n // reported every such reference as undefined. Both the written trackId and\n // the one the `{name, uri}` shorthand derives, since a config using the\n // shorthand still gets the derived id at runtime.\n sequenceTrackIds: new Set(assemblies.flatMap(a => {\n const declared = isRecord(a.sequence) ? a.sequence.trackId : undefined;\n return [...(typeof declared === 'string' ? [declared] : []), ...(typeof a.name === 'string' ? [`${a.name}-ReferenceSequenceTrack`] : [])];\n }))\n };\n for (const [i, assembly] of assemblies.entries()) {\n checkAssembly(assembly, i, manifest, report);\n }\n const tracks = Array.isArray(config.tracks) ? config.tracks.filter(isRecord) : [];\n for (const [i, track] of tracks.entries()) {\n checkTrack(track, i, manifest, report, ctx);\n }\n for (const [i, connection] of connections.entries()) {\n checkPluggable(connection, manifest.connections, 'connection', `connections[${i}]`, report);\n }\n const aggregate = Array.isArray(config.aggregateTextSearchAdapters) ? config.aggregateTextSearchAdapters : [];\n for (const [i, adapter] of aggregate.entries()) {\n checkPluggable(adapter, manifest.textSearchAdapters, 'text search adapter', `aggregateTextSearchAdapters[${i}]`, report);\n }\n\n // Tracks are registered before the session is checked, so a session may\n // reference any track in the file regardless of declaration order.\n checkSession(config.defaultSession, manifest, report, ctx);\n return report.result();\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/commands/validate/validateConfig.ts?\n}");
626
659
 
627
660
  /***/ },
628
661
 
@@ -633,7 +666,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
633
666
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
634
667
 
635
668
  "use strict";
636
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ main: () => (/* binding */ main)\n/* harmony export */ });\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _version_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./version.ts */ \"./src/version.ts\");\n//#!/usr/bin/env node\n\n\n\n// single source of truth for both dispatch and the global help listing, so a\n// new command can never be wired into one but forgotten in the other.\n//\n// Each command is LOADED WHEN IT IS DISPATCHED, not imported here: a static\n// import list makes every invocation pay for every command's module graph, and\n// text-index's parsers alone are most of it. `jbrowse add-track` went from\n// 0.35s to 0.21s of startup, which is the whole of what that command does.\nconst registry = [{\n name: 'create',\n summary: 'Downloads and installs the latest JBrowse 2 release',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/create.ts */ \"./src/commands/create.ts\")).then(m => m.run)\n}, {\n name: 'add-assembly',\n summary: 'Add an assembly to a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/add-assembly/index.ts */ \"./src/commands/add-assembly/index.ts\")).then(m => m.run)\n}, {\n name: 'add-track',\n summary: 'Add a track to a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/add-track.ts */ \"./src/commands/add-track.ts\")).then(m => m.run)\n}, {\n name: 'validate',\n summary: 'Check a configuration for errors, including ones JBrowse accepts silently',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/validate/index.ts */ \"./src/commands/validate/index.ts\")).then(m => m.run)\n}, {\n name: 'text-index',\n summary: 'Make a text-indexing file for any given track(s)',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/text-index/index.ts */ \"./src/commands/text-index/index.ts\")).then(m => m.run)\n}, {\n name: 'admin-server',\n summary: 'Start up a small admin server for JBrowse configuration',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/admin-server/index.ts */ \"./src/commands/admin-server/index.ts\")).then(m => m.run)\n}, {\n name: 'upgrade',\n summary: 'Upgrades JBrowse 2 to latest version',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/upgrade.ts */ \"./src/commands/upgrade.ts\")).then(m => m.run)\n}, {\n name: 'make-pif',\n summary: 'Creates pairwise indexed PAF (PIF), with bgzip and tabix',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/make-pif/index.ts */ \"./src/commands/make-pif/index.ts\")).then(m => m.run)\n}, {\n name: 'sort-gff',\n summary: 'Sort a GFF/GTF for tabix: sort -k1,1 -k4,4n, header kept on top',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/sort-gff.ts */ \"./src/commands/sort-gff.ts\")).then(m => m.run)\n}, {\n name: 'sort-bed',\n summary: 'Sort a BED for tabix: sort -k1,1 -k2,2n, header kept on top',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/sort-bed.ts */ \"./src/commands/sort-bed.ts\")).then(m => m.run)\n}, {\n name: 'add-connection',\n summary: 'Add a connection to a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/add-connection.ts */ \"./src/commands/add-connection.ts\")).then(m => m.run)\n}, {\n name: 'add-track-json',\n summary: 'Add a track configuration directly from a JSON hunk',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/add-track-json.ts */ \"./src/commands/add-track-json.ts\")).then(m => m.run)\n}, {\n name: 'remove-track',\n summary: 'Remove a track configuration from a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/remove-track.ts */ \"./src/commands/remove-track.ts\")).then(m => m.run)\n}, {\n name: 'set-default-session',\n summary: 'Set a default session with views and tracks',\n load: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./commands/set-default-session.ts */ \"./src/commands/set-default-session.ts\")).then(m => m.run)\n}];\nasync function main(args) {\n try {\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_0__.parseArgs)({\n args,\n options: {\n help: {\n type: 'boolean',\n short: 'h',\n default: false\n },\n version: {\n type: 'boolean',\n short: 'v',\n default: false\n }\n },\n allowPositionals: true,\n strict: false // Allow unknown flags to be passed to subcommands\n });\n\n // Check if help or version is requested at the global level\n if (flags.help && positionals.length === 0) {\n showGlobalHelp();\n return;\n }\n if (flags.version && positionals.length === 0) {\n console.log(`@jbrowse/cli version ${_version_ts__WEBPACK_IMPORTED_MODULE_1__.version}`);\n return;\n }\n const commandName = positionals[0];\n if (!commandName) {\n console.error('Error: Missing command');\n showGlobalHelp();\n process.exit(1);\n }\n const command = registry.find(c => c.name === commandName);\n if (!command) {\n console.error(`Error: Unknown command \"${commandName}\"`);\n console.error(`Available commands: ${registry.map(c => c.name).join(', ')}`);\n process.exit(1);\n }\n\n // Pass everything after the command token to the command. Slicing from the\n // command's actual position (rather than a hardcoded index 0) keeps this\n // correct when a global flag precedes the command, e.g. `jbrowse -v create`\n const commandArgs = args.slice(args.indexOf(commandName) + 1);\n // ...but that slice drops a help flag written before the command, so\n // `jbrowse --help create` used to run create with no args and fail on the\n // missing positional instead of printing its help\n if (flags.help && !commandArgs.some(a => a === '--help' || a === '-h')) {\n commandArgs.push('--help');\n }\n await (await command.load())(commandArgs);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const code = error instanceof Error ? error.code : undefined;\n console.error('Error:', message);\n if (code === 'EPIPE' || code === 'ENOSPC' || message.includes('EPIPE')) {\n console.error(`\nThis error may be caused by running out of space in the temporary directory.\nTry setting a custom TMPDIR with more available space:\n\n mkdir mytmpdir\n TMPDIR=mytmpdir jbrowse text-index ...\n\n`);\n }\n process.exit(1);\n }\n}\nfunction showGlobalHelp() {\n const width = Math.max(...registry.map(c => c.name.length)) + 2;\n const commandLines = registry.map(c => ` ${c.name.padEnd(width)}${c.summary}`).join('\\n');\n console.log(`\nJBrowse CLI\n\nUSAGE\n $ jbrowse <command> [options]\n\nCOMMANDS\n${commandLines}\n\nOPTIONS\n -h, --help Show help\n -v, --version Show version\n\nUse \"jbrowse <command> --help\" for more information about a command.\n`);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/index.ts?\n}");
669
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ main: () => (/* binding */ main)\n/* harmony export */ });\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:util */ \"node:util\");\n/* harmony import */ var node_util__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_util__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _version_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./version.ts */ \"./src/version.ts\");\n//#!/usr/bin/env node\n\n\n\n// single source of truth for both dispatch and the global help listing, so a\n// new command can never be wired into one but forgotten in the other.\n//\n// Each command is LOADED WHEN IT IS DISPATCHED, not imported here: a static\n// import list makes every invocation pay for every command's module graph, and\n// text-index's parsers alone are most of it. `jbrowse add-track` went from\n// 0.35s to 0.21s of startup, which is the whole of what that command does.\nconst registry = [{\n name: 'create',\n summary: 'Downloads and installs the latest JBrowse 2 release',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/create.ts */ \"./src/commands/create.ts\"))).then(m => m.run)\n}, {\n name: 'add-assembly',\n summary: 'Add an assembly to a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/add-assembly/index.ts */ \"./src/commands/add-assembly/index.ts\"))).then(m => m.run)\n}, {\n name: 'add-track',\n summary: 'Add a track to a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/add-track.ts */ \"./src/commands/add-track.ts\"))).then(m => m.run)\n}, {\n name: 'validate',\n summary: 'Check a configuration for errors, including ones JBrowse accepts silently',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/validate/index.ts */ \"./src/commands/validate/index.ts\"))).then(m => m.run)\n}, {\n name: 'text-index',\n summary: 'Make a text-indexing file for any given track(s)',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/text-index/index.ts */ \"./src/commands/text-index/index.ts\"))).then(m => m.run)\n}, {\n name: 'admin-server',\n summary: 'Start up a small admin server for JBrowse configuration',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/admin-server/index.ts */ \"./src/commands/admin-server/index.ts\"))).then(m => m.run)\n}, {\n name: 'upgrade',\n summary: 'Upgrades JBrowse 2 to latest version',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/upgrade.ts */ \"./src/commands/upgrade.ts\"))).then(m => m.run)\n}, {\n name: 'make-pif',\n summary: 'Creates pairwise indexed PAF (PIF), with bgzip and tabix',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/make-pif/index.ts */ \"./src/commands/make-pif/index.ts\"))).then(m => m.run)\n}, {\n name: 'make-density',\n summary: 'Counts feature starts per bin into a bigWig density sidecar, with bedGraphToBigWig',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/make-density/index.ts */ \"./src/commands/make-density/index.ts\"))).then(m => m.run)\n}, {\n name: 'sort-gff',\n summary: 'Sort a GFF/GTF for tabix: sort -k1,1 -k4,4n, header kept on top',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/sort-gff.ts */ \"./src/commands/sort-gff.ts\"))).then(m => m.run)\n}, {\n name: 'sort-bed',\n summary: 'Sort a BED for tabix: sort -k1,1 -k2,2n, header kept on top',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/sort-bed.ts */ \"./src/commands/sort-bed.ts\"))).then(m => m.run)\n}, {\n name: 'add-connection',\n summary: 'Add a connection to a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/add-connection.ts */ \"./src/commands/add-connection.ts\"))).then(m => m.run)\n}, {\n name: 'add-track-json',\n summary: 'Add a track configuration directly from a JSON hunk',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/add-track-json.ts */ \"./src/commands/add-track-json.ts\"))).then(m => m.run)\n}, {\n name: 'remove-track',\n summary: 'Remove a track configuration from a JBrowse 2 configuration',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/remove-track.ts */ \"./src/commands/remove-track.ts\"))).then(m => m.run)\n}, {\n name: 'set-default-session',\n summary: 'Set a default session with views and tracks',\n load: () => Promise.resolve(/*! import() */).then(() => (__webpack_require__(/*! ./commands/set-default-session.ts */ \"./src/commands/set-default-session.ts\"))).then(m => m.run)\n}];\nasync function main(args) {\n try {\n const {\n values: flags,\n positionals\n } = (0,node_util__WEBPACK_IMPORTED_MODULE_0__.parseArgs)({\n args,\n options: {\n help: {\n type: 'boolean',\n short: 'h',\n default: false\n },\n version: {\n type: 'boolean',\n short: 'v',\n default: false\n }\n },\n allowPositionals: true,\n strict: false // Allow unknown flags to be passed to subcommands\n });\n\n // Check if help or version is requested at the global level\n if (flags.help && positionals.length === 0) {\n showGlobalHelp();\n return;\n }\n if (flags.version && positionals.length === 0) {\n console.log(`@jbrowse/cli version ${_version_ts__WEBPACK_IMPORTED_MODULE_1__.version}`);\n return;\n }\n const commandName = positionals[0];\n if (!commandName) {\n console.error('Error: Missing command');\n showGlobalHelp();\n process.exit(1);\n }\n const command = registry.find(c => c.name === commandName);\n if (!command) {\n console.error(`Error: Unknown command \"${commandName}\"`);\n console.error(`Available commands: ${registry.map(c => c.name).join(', ')}`);\n process.exit(1);\n }\n\n // Pass everything after the command token to the command. Slicing from the\n // command's actual position (rather than a hardcoded index 0) keeps this\n // correct when a global flag precedes the command, e.g. `jbrowse -v create`\n const commandArgs = args.slice(args.indexOf(commandName) + 1);\n // ...but that slice drops a help flag written before the command, so\n // `jbrowse --help create` used to run create with no args and fail on the\n // missing positional instead of printing its help\n if (flags.help && !commandArgs.some(a => a === '--help' || a === '-h')) {\n commandArgs.push('--help');\n }\n await (await command.load())(commandArgs);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const code = error instanceof Error ? error.code : undefined;\n console.error('Error:', message);\n if (code === 'EPIPE' || code === 'ENOSPC' || message.includes('EPIPE')) {\n console.error(`\nThis error may be caused by running out of space in the temporary directory.\nTry setting a custom TMPDIR with more available space:\n\n mkdir mytmpdir\n TMPDIR=mytmpdir jbrowse text-index ...\n\n`);\n }\n process.exit(1);\n }\n}\nfunction showGlobalHelp() {\n const width = Math.max(...registry.map(c => c.name.length)) + 2;\n const commandLines = registry.map(c => ` ${c.name.padEnd(width)}${c.summary}`).join('\\n');\n console.log(`\nJBrowse CLI\n\nUSAGE\n $ jbrowse <command> [options]\n\nCOMMANDS\n${commandLines}\n\nOPTIONS\n -h, --help Show help\n -v, --version Show version\n\nUse \"jbrowse <command> --help\" for more information about a command.\n`);\n}\n\n//# sourceURL=webpack://@jbrowse/cli/./src/index.ts?\n}");
637
670
 
638
671
  /***/ },
639
672
 
@@ -666,7 +699,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
666
699
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
667
700
 
668
701
  "use strict";
669
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = '5.0.0-beta.1';\n\n//# sourceURL=webpack://@jbrowse/cli/./src/version.ts?\n}");
702
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = '5.0.0-beta.2';\n\n//# sourceURL=webpack://@jbrowse/cli/./src/version.ts?\n}");
670
703
 
671
704
  /***/ },
672
705
 
@@ -1503,59 +1536,34 @@ eval("{module.exports = /*#__PURE__*/JSON.parse('{\"application/1d-interleaved-p
1503
1536
  /******/
1504
1537
  /************************************************************************/
1505
1538
  /******/ /* webpack/runtime/compat get default export */
1506
- /******/ (() => {
1507
- /******/ // getDefaultExport function for compatibility with non-harmony modules
1508
- /******/ __webpack_require__.n = (module) => {
1509
- /******/ const getter = module && module.__esModule ?
1510
- /******/ () => (module['default']) :
1511
- /******/ () => (module);
1512
- /******/ __webpack_require__.d(getter, { a: getter });
1513
- /******/ return getter;
1514
- /******/ };
1515
- /******/ })();
1539
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
1540
+ /******/ __webpack_require__.n = (module) => {
1541
+ /******/ const getter = module && module.__esModule ?
1542
+ /******/ () => (module['default']) :
1543
+ /******/ () => (module);
1544
+ /******/ __webpack_require__.d(getter, { a: getter });
1545
+ /******/ return getter;
1546
+ /******/ };
1516
1547
  /******/
1517
1548
  /******/ /* webpack/runtime/define property getters */
1518
- /******/ (() => {
1519
- /******/ // define getter/value functions for harmony exports
1520
- /******/ __webpack_require__.d = (exports, definition) => {
1521
- /******/ if(Array.isArray(definition)) {
1522
- /******/ var i = 0;
1523
- /******/ while(i < definition.length) {
1524
- /******/ var key = definition[i++];
1525
- /******/ var binding = definition[i++];
1526
- /******/ if(!__webpack_require__.o(exports, key)) {
1527
- /******/ if(binding === 0) {
1528
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
1529
- /******/ } else {
1530
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
1531
- /******/ }
1532
- /******/ } else if(binding === 0) { i++; }
1533
- /******/ }
1534
- /******/ } else {
1535
- /******/ for(var key in definition) {
1536
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1537
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1538
- /******/ }
1539
- /******/ }
1549
+ /******/ // define getter/value functions for harmony exports
1550
+ /******/ __webpack_require__.d = (exports, definition) => {
1551
+ /******/ for(var key in definition) {
1552
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1553
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1540
1554
  /******/ }
1541
- /******/ };
1542
- /******/ })();
1555
+ /******/ }
1556
+ /******/ };
1543
1557
  /******/
1544
1558
  /******/ /* webpack/runtime/hasOwnProperty shorthand */
1545
- /******/ (() => {
1546
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1547
- /******/ })();
1559
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
1548
1560
  /******/
1549
1561
  /******/ /* webpack/runtime/make namespace object */
1550
- /******/ (() => {
1551
- /******/ // define __esModule on exports
1552
- /******/ __webpack_require__.r = (exports) => {
1553
- /******/ if(Symbol.toStringTag) {
1554
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1555
- /******/ }
1556
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
1557
- /******/ };
1558
- /******/ })();
1562
+ /******/ // define __esModule on exports
1563
+ /******/ __webpack_require__.r = (exports) => {
1564
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1565
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
1566
+ /******/ };
1559
1567
  /******/
1560
1568
  /************************************************************************/
1561
1569
  /******/