diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b36709..c8ac387 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,13 @@ ## [2.0.4](https://github.com/GMOD/bam-js/compare/v2.0.3...v2.0.4) (2024-08-09) - - ## [2.0.3](https://github.com/GMOD/bam-js/compare/v2.0.2...v2.0.3) (2024-07-23) - ### Reverts -* Revert "Migrate to eslint9" ([65adcbb](https://github.com/GMOD/bam-js/commit/65adcbb2793243659682d30694f8604d241a5337)) -* Revert "Run format" ([2a02535](https://github.com/GMOD/bam-js/commit/2a02535db4df80f245232522cdba771cbf5ea214)) - - +- Revert "Migrate to eslint9" + ([65adcbb](https://github.com/GMOD/bam-js/commit/65adcbb2793243659682d30694f8604d241a5337)) +- Revert "Run format" + ([2a02535](https://github.com/GMOD/bam-js/commit/2a02535db4df80f245232522cdba771cbf5ea214)) ## [2.0.2](https://github.com/GMOD/bam-js/compare/v2.0.1...v2.0.2) (2024-02-21) diff --git a/README.md b/README.md index 96544ca..f8db6c6 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,7 @@ feature.get('end') // 0-based half open end coordinate feature.get('name') // QNAME feature.get('seq') // feature sequence feature.get('qual') // qualities -feature.get('cigar') // cigar string +feature.get('CIGAR') // CIGAR string feature.get('MD') // MD string feature.get('SA') // supplementary alignments feature.get('template_length') // TLEN diff --git a/package.json b/package.json index ce28a49..35bbc8b 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "dependencies": { "@gmod/abortable-promise-cache": "^2.0.0", "@gmod/bgzf-filehandle": "^1.4.4", + "buffer": "^6.0.3", "crc": "^4.3.2", "generic-filehandle": "^3.0.0", "quick-lru": "^4.0.0" @@ -53,7 +54,7 @@ "eslint": "^9.9.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-unicorn": "^55.0.0", + "eslint-plugin-unicorn": "^56.0.0", "prettier": "^3.2.5", "rimraf": "^6.0.1", "standard-changelog": "^6.0.0", diff --git a/src/bamFile.ts b/src/bamFile.ts index 0c61ba0..c157270 100644 --- a/src/bamFile.ts +++ b/src/bamFile.ts @@ -288,12 +288,12 @@ export default class BamFile { const recs = [] as BAMFeature[] for (const feature of records) { - if (feature.seq_id() === chrId) { - if (feature.get('start') >= max) { + if (feature.ref_id === chrId) { + if (feature.start >= max) { // past end of range, can stop iterating done = true break - } else if (feature.get('end') >= min) { + } else if (feature.end >= min) { // must be in range recs.push(feature) } @@ -319,8 +319,8 @@ export default class BamFile { feats.map(ret => { const readNames: Record = {} for (const element of ret) { - const name = element.name() - const id = element.id() + const name = element.name + const id = element.id if (!readNames[name]) { readNames[name] = 0 } @@ -337,10 +337,10 @@ export default class BamFile { const matePromises: Promise[] = [] feats.map(ret => { for (const f of ret) { - const name = f.name() - const start = f.get('start') - const pnext = f._next_pos() - const rnext = f._next_refid() + const name = f.name + const start = f.start + const pnext = f.next_pos + const rnext = f.next_refid if ( this.index && unmatedPairs[name] && @@ -377,7 +377,7 @@ export default class BamFile { dpositions, chunk, )) { - if (unmatedPairs[feature.get('name')] && !readIds[feature.id()]) { + if (unmatedPairs[feature.name] && !readIds[feature.id]) { mateRecs.push(feature) } } diff --git a/src/record.ts b/src/record.ts index 4ca8cd9..206ce27 100644 --- a/src/record.ts +++ b/src/record.ts @@ -1,202 +1,102 @@ import Constants from './constants' +import type { Buffer } from 'buffer' const SEQRET_DECODER = '=ACMGRSVTWYHKDBN'.split('') const CIGAR_DECODER = 'MIDNSHP=X???????'.split('') -/** - * Class of each BAM record returned by this API. - */ +interface Bytes { + start: number + end: number + byteArray: Buffer +} export default class BamRecord { - private data = {} as Record - private bytes: { start: number; end: number; byteArray: Buffer } - private _id: number - private _tagOffset: number | undefined - private _tagList: string[] = [] - private _allTagsParsed = false - - public flags: any - public _refID: number - constructor(args: any) { - const { bytes, fileOffset } = args - const { byteArray, start } = bytes - this.data = { start: byteArray.readInt32LE(start + 8) } - this.bytes = bytes - this._id = fileOffset - this._refID = byteArray.readInt32LE(start + 4) - this.flags = (byteArray.readInt32LE(start + 16) & 0xffff0000) >> 16 - } - - get(field: string) { - //@ts-ignore - if (this[field]) { - //@ts-ignore - if (this.data[field]) { - return this.data[field] - } - //@ts-ignore - this.data[field] = this[field]() - return this.data[field] - } - return this._get(field.toLowerCase()) - } + public fileOffset: number + private bytes: Bytes - end() { - return this.get('start') + this.get('length_on_ref') + constructor(args: { bytes: Bytes; fileOffset: number }) { + this.bytes = args.bytes + this.fileOffset = args.fileOffset } - seq_id() { - return this._refID + get byteArray() { + return this.bytes.byteArray } - // same as get(), except requires lower-case arguments. used - // internally to save lots of calls to field.toLowerCase() - _get(field: string) { - if (field in this.data) { - return this.data[field] - } - this.data[field] = this._parseTag(field) - return this.data[field] - } - - _tags() { - this._parseAllTags() - - let tags = ['seq'] - - if (!this.isSegmentUnmapped()) { - tags.push( - 'start', - 'end', - 'strand', - 'score', - 'qual', - 'MQ', - 'CIGAR', - 'length_on_ref', - 'template_length', - ) - } - if (this.isPaired()) { - tags.push('next_segment_position', 'pair_orientation') - } - tags = tags.concat(this._tagList) - - for (const k of Object.keys(this.data)) { - if (!k.startsWith('_') && k !== 'next_seq_id') { - tags.push(k) - } - } - - const seen: Record = {} - return tags.filter(t => { - if ( - (t in this.data && this.data[t] === undefined) || - t === 'CG' || - t === 'cg' - ) { - return false - } - - const lt = t.toLowerCase() - const s = seen[lt] - seen[lt] = true - return !s - }) + get flags() { + return ( + (this.byteArray.readInt32LE(this.bytes.start + 16) & 0xffff0000) >> 16 + ) + } + get ref_id() { + return this.byteArray.readInt32LE(this.bytes.start + 4) } - parent() { - return + get start() { + return this.byteArray.readInt32LE(this.bytes.start + 8) } - children() { - return this.get('subfeatures') + get end() { + return this.start + this.length_on_ref } - id() { - return this._id + get id() { + return this.fileOffset } - // special parsers - /** - * Mapping quality score. - */ - mq() { - const mq = (this.get('_bin_mq_nl') & 0xff00) >> 8 + get mq() { + const mq = (this.bin_mq_nl & 0xff00) >> 8 return mq === 255 ? undefined : mq } - score() { - return this.get('mq') + get score() { + return this.mq } - qual() { - return this.qualRaw()?.join(' ') + get qual() { + return this.qualRaw?.join(' ') } - qualRaw() { + get qualRaw() { if (this.isSegmentUnmapped()) { return } - const { start, byteArray } = this.bytes const p = - start + - 36 + - this.get('_l_read_name') + - this.get('_n_cigar_op') * 4 + - this.get('_seq_bytes') - const lseq = this.get('seq_length') - return byteArray.subarray(p, p + lseq) + this.b0 + + this.read_name_length + + this.num_cigar_ops * 4 + + this.num_seq_bytes + return this.byteArray.subarray(p, p + this.seq_length) } - strand() { + get strand() { return this.isReverseComplemented() ? -1 : 1 } - multi_segment_next_segment_strand() { - if (this.isMateUnmapped()) { - return - } - return this.isMateReverseComplemented() ? -1 : 1 + get b0() { + return this.bytes.start + 36 } - - name() { - return this.get('_read_name') - } - - _read_name() { - const nl = this.get('_l_read_name') - const { byteArray, start } = this.bytes - return byteArray.toString('ascii', start + 36, start + 36 + nl - 1) + get name() { + return this.byteArray.toString( + 'ascii', + this.b0, + this.b0 + this.read_name_length - 1, + ) } - /** - * Get the value of a tag, parsing the tags as far as necessary. - * Only called if we have not already parsed that field. - */ - _parseTag(tagName?: string) { - // if all of the tags have been parsed and we're still being - // called, we already know that we have no such tag, because - // it would already have been cached. - if (this._allTagsParsed) { - return - } - - const { byteArray, start } = this.bytes + get tags() { + const { byteArray } = this.bytes let p = - this._tagOffset || - start + - 36 + - this.get('_l_read_name') + - this.get('_n_cigar_op') * 4 + - this.get('_seq_bytes') + - this.get('seq_length') + this.b0 + + this.read_name_length + + this.num_cigar_ops * 4 + + this.num_seq_bytes + + this.seq_length const blockEnd = this.bytes.end - let lcTag - while (p < blockEnd && lcTag !== tagName) { + const tags = {} as Record + while (p < blockEnd) { const tag = String.fromCharCode(byteArray[p], byteArray[p + 1]) - lcTag = tag.toLowerCase() const type = String.fromCharCode(byteArray[p + 2]) p += 3 @@ -353,31 +253,9 @@ export default class BamRecord { } // stop parsing tags } - this._tagOffset = p - - this._tagList.push(tag) - if (lcTag === tagName) { - return value - } - - this.data[lcTag] = value + tags[tag] = value } - this._allTagsParsed = true - return - } - - _parseAllTags() { - this._parseTag('') - } - - _parseCigar(cigar: string) { - return ( - //@ts-ignore - cigar - .match(/\d+\D/g) - //@ts-ignore - .map(op => [/\D/.exec(op)[0].toUpperCase(), Number.parseInt(op, 10)]) - ) + return tags } /** @@ -443,26 +321,64 @@ export default class BamRecord { return !!(this.flags & Constants.BAM_FSUPPLEMENTARY) } - cigar() { + get CIGAR() { if (this.isSegmentUnmapped()) { - return + return '' + } + + const { byteArray } = this.bytes + const numCigarOps = this.num_cigar_ops + let p = this.b0 + this.read_name_length + let CIGAR = '' + + // check for CG tag by inspecting whether the CIGAR field contains a clip + // that consumes entire seqLen + let cigop = byteArray.readInt32LE(p) + let lop = cigop >> 4 + let op = CIGAR_DECODER[cigop & 0xf] + if (op === 'S' && lop === this.seq_length) { + // if there is a CG the second CIGAR field will be a N tag the represents + // the length on ref + p += 4 + cigop = byteArray.readInt32LE(p) + lop = cigop >> 4 + op = CIGAR_DECODER[cigop & 0xf] + if (op !== 'N') { + console.warn('CG tag with no N tag') + } + return this.tags.CG as string + } else { + for (let c = 0; c < numCigarOps; ++c) { + cigop = byteArray.readInt32LE(p) + lop = cigop >> 4 + op = CIGAR_DECODER[cigop & 0xf] + CIGAR += lop + op + + p += 4 + } + + return CIGAR + } + } + + get length_on_ref() { + if (this.isSegmentUnmapped()) { + return 0 } - const { byteArray, start } = this.bytes - const numCigarOps = this.get('_n_cigar_op') - let p = start + 36 + this.get('_l_read_name') - const seqLen = this.get('seq_length') - let cigar = '' + const { byteArray } = this.bytes + const numCigarOps = this.num_cigar_ops + let p = this.b0 + this.read_name_length let lref = 0 - // check for CG tag by inspecting whether the CIGAR field - // contains a clip that consumes entire seqLen + // check for CG tag by inspecting whether the CIGAR field contains a clip + // that consumes entire seqLen let cigop = byteArray.readInt32LE(p) let lop = cigop >> 4 let op = CIGAR_DECODER[cigop & 0xf] - if (op === 'S' && lop === seqLen) { - // if there is a CG the second CIGAR field will - // be a N tag the represents the length on ref + if (op === 'S' && lop === this.seq_length) { + // if there is a CG the second CIGAR field will be a N tag the represents + // the length on ref p += 4 cigop = byteArray.readInt32LE(p) lop = cigop >> 4 @@ -470,17 +386,15 @@ export default class BamRecord { if (op !== 'N') { console.warn('CG tag with no N tag') } - this.data.length_on_ref = lop - return this.get('CG') + return lop } else { for (let c = 0; c < numCigarOps; ++c) { cigop = byteArray.readInt32LE(p) lop = cigop >> 4 op = CIGAR_DECODER[cigop & 0xf] - cigar += lop + op - // soft clip, hard clip, and insertion don't count toward - // the length on the reference + // soft clip, hard clip, and insertion don't count toward the length on + // the reference if (op !== 'H' && op !== 'S' && op !== 'I') { lref += lop } @@ -488,45 +402,27 @@ export default class BamRecord { p += 4 } - this.data.length_on_ref = lref - return cigar + return lref } } - length_on_ref() { - if (this.data.length_on_ref) { - return this.data.length_on_ref - } else { - this.get('cigar') // the length_on_ref is set as a side effect - return this.data.length_on_ref - } + get num_cigar_ops() { + return this.flag_nc & 0xffff } - _n_cigar_op() { - return this.get('_flag_nc') & 0xffff + get read_name_length() { + return this.bin_mq_nl & 0xff } - _l_read_name() { - return this.get('_bin_mq_nl') & 0xff + get num_seq_bytes() { + return (this.seq_length + 1) >> 1 } - /** - * number of bytes in the sequence field - */ - _seq_bytes() { - return (this.get('seq_length') + 1) >> 1 - } - - getReadBases() { - return this.seq() - } - - seq() { - const { byteArray, start } = this.bytes - const p = - start + 36 + this.get('_l_read_name') + this.get('_n_cigar_op') * 4 - const seqBytes = this.get('_seq_bytes') - const len = this.get('seq_length') + get seq() { + const { byteArray } = this.bytes + const p = this.b0 + this.read_name_length + this.num_cigar_ops * 4 + const seqBytes = this.num_seq_bytes + const len = this.seq_length let buf = '' let i = 0 for (let j = 0; j < seqBytes; ++j) { @@ -542,11 +438,11 @@ export default class BamRecord { } // adapted from igv.js - getPairOrientation() { + get pair_orientation() { if ( !this.isSegmentUnmapped() && !this.isMateUnmapped() && - this._refID === this._next_refid() + this.ref_id === this.next_refid ) { const s1 = this.isReverseComplemented() ? 'R' : 'F' const s2 = this.isMateReverseComplemented() ? 'R' : 'F' @@ -561,7 +457,7 @@ export default class BamRecord { } const tmp = [] - const isize = this.template_length() + const isize = this.template_length if (isize > 0) { tmp[0] = s1 tmp[1] = o1 @@ -578,28 +474,28 @@ export default class BamRecord { return '' } - _bin_mq_nl() { - return this.bytes.byteArray.readInt32LE(this.bytes.start + 12) + get bin_mq_nl() { + return this.byteArray.readInt32LE(this.bytes.start + 12) } - _flag_nc() { - return this.bytes.byteArray.readInt32LE(this.bytes.start + 16) + get flag_nc() { + return this.byteArray.readInt32LE(this.bytes.start + 16) } - seq_length() { - return this.bytes.byteArray.readInt32LE(this.bytes.start + 20) + get seq_length() { + return this.byteArray.readInt32LE(this.bytes.start + 20) } - _next_refid() { - return this.bytes.byteArray.readInt32LE(this.bytes.start + 24) + get next_refid() { + return this.byteArray.readInt32LE(this.bytes.start + 24) } - _next_pos() { - return this.bytes.byteArray.readInt32LE(this.bytes.start + 28) + get next_pos() { + return this.byteArray.readInt32LE(this.bytes.start + 28) } - template_length() { - return this.bytes.byteArray.readInt32LE(this.bytes.start + 32) + get template_length() { + return this.byteArray.readInt32LE(this.bytes.start + 32) } toJSON() { diff --git a/test/__snapshots__/bai.test.ts.snap b/test/__snapshots__/bai.test.ts.snap index d8e4c78..953c9e1 100644 --- a/test/__snapshots__/bai.test.ts.snap +++ b/test/__snapshots__/bai.test.ts.snap @@ -85,270 +85,61 @@ exports[`check ecoli header and records 1`] = ` exports[`check ecoli header and records 2`] = ` [ { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 113, - "_l_read_name": 69, - "_n_cigar_op": 113, - "cigar": "21M1I6M1I3M1I4M1I10M1I33M1I19M1I8M1I5M1D1M1D8M1D12M1D15M1I12M1I3M2D12M1I6M1D1M1D18M1D3M1D1M1D7M1I3M1I9M1I15M1I1M1I1M1I6M1I3M2I3M1D2M1D9M1D10M1I12M1I31M1I29M1I9M1I11M1I7M1D9M1I1M1I7M1I3M1I20M1I2M1D10M1I6M1D2M1I7M1D7M1I5M1D7M1D7M1I3M1I4M1I7M2I37M", - "end": 533, - "length_on_ref": 533, - "seq_length": 552, - "start": 0, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 149, - "_l_read_name": 69, - "_n_cigar_op": 149, - "cigar": "22M1I10M1I1M1I22M1D1M1D1M1I3M1I6M1D1M1D8M1D25M2D10M1I5M1I3M1D11M1I7M1I31M1I31M1I2M1I8M1D11M1D13M1I36M1I1M2I1M2I3M1D1M3I13M1I20M1D20M2I2M1I4M1D1M1D3M1D2M1D16M1I7M1D30M1I4M1I7M1I1M1D2M1D28M1I6M1I6M1I26M1I5M1D17M1I15M1D33M1D11M1D9M1I2M2I3M1D5M1D4M1I13M1I10M1I3M1I4M1I16M1D3M1I10M1D18M1D12M1I11M1I17M1I6M1I17M1D15M1I1M1D3M2I4M1D14M1D14M", - "end": 799, - "length_on_ref": 799, - "seq_length": 817, - "start": 0, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 145, - "_l_read_name": 69, - "_n_cigar_op": 145, - "cigar": "23M1I5M1D4M1D4M1I12M2D23M1D2M1D21M1D24M1I2M1I12M1I14M1D49M1I7M1I21M1D2M1I5M1I38M2I1M1I8M1I12M1D3M1I14M1I5M1I6M1D20M1I2M1I6M1D18M1D3M1I19M1D14M1D3M1D3M1D12M1I4M1I1M1D6M1D19M1I11M1I25M1D1M1I15M1D24M1D28M1I7M1I16M1D14M1I3M2I18M1I36M1D70M1D3M1I3M1I13M1D12M1D27M1D45M1I21M1D21M1D1M2D1M1D5M1I2M1D25M1I36M1I6M1I46M1D19M1I13M1D6M1D12M1I52M", - "end": 1121, - "length_on_ref": 1121, - "seq_length": 1123, - "start": 0, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 291, - "_l_read_name": 69, - "_n_cigar_op": 291, - "cigar": "13M1I10M2I1M1I1M1I6M1I3M1I5M1I10M1D3M1I5M1I2M1I14M1D2M1I5M1I6M2I10M1I3M1I3M1I17M1I2M1D9M1I5M1D19M1I1M1I33M1D13M1D2M1D8M1D1M1I5M1D2M1D3M1I7M1I16M1I9M2I4M1I12M1D9M1I4M1I3M1D9M1I16M1I19M1I10M1I6M1I3M2I1M4I8M1I6M1I21M1I5M1D4M1I36M1I10M1I33M1I1M1D26M4I4M1I1M1D20M1I7M1I1M1I2M1I8M1I14M1I10M1I3M1I4M2I11M1I10M1I4M1I12M1I5M1I4M1I7M1I9M2I1M1D3M2I21M1I3M1D11M1I8M1D1M1I11M1D47M1I11M1D10M1I4M1I10M1I25M1I2M1I14M1I25M1I6M1I7M1I38M1I3M1D6M1D19M1I19M1D10M1D11M1I3M2I13M1I17M1I7M1D9M1D1M1D11M1I4M1I3M2D6M1I16M1I7M1I2M2I2M1I7M1I5M1I22M1I4M2I6M2D11M1D99M1I19M1D9M1I20M1I1M2I10M1D1M1D19M1I10M1D11M1I8M1I3M1I5M1D58M1D6M1I9M1I15M1I9M1I3M1I6M1I12M1D1M1D9M1D4M", - "end": 1506, - "length_on_ref": 1506, - "seq_length": 1588, - "start": 0, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 251, - "_l_read_name": 69, - "_n_cigar_op": 251, - "cigar": "31M1D33M1D3M1I8M1I8M2I6M1I2M1D4M1I7M1I16M1I7M1I3M1D5M1I3M1D18M1D13M1D27M1I6M1I7M1D2M1I4M1I7M2I69M2D2M1D13M1D3M1I7M1D57M1D13M1I16M2D5M1D36M1I60M1I3M1I16M1I6M1I5M1I7M1I3M1I5M1D18M1D6M1I2M1I5M1D29M1I1M1D8M1I4M1I14M1D12M1I23M1I11M1D13M1I7M1D8M1D15M1D17M1I1M3I11M1I3M1I17M1D24M1D3M1I6M1I12M1D36M1I13M1I11M1I20M1D6M1I11M2I5M1D5M1I12M1D4M1D5M1D24M1I7M1D2M1D3M1I5M1I5M1D11M1D5M1I1M1I6M1I15M1D7M1D14M1I19M1D2M1I2M1I25M1I10M1D31M1D14M1I48M1D4M1I17M1D21M1D16M2D5M1D2M1D10M1I2M1D12M1I3M2I29M1D14M1D8M1D41M1D28M1D26M1I26M1I1M1I29M1D2M1D8M1D18M1D15M1I21M1D8M1I15M1D1M1D11M2D23M", - "end": 1681, - "length_on_ref": 1681, - "seq_length": 1686, - "start": 0, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1049021, - "_l_read_name": 69, - "_n_cigar_op": 445, - "cigar": "42M1D13M1I25M1I12M1I17M1D18M1I2M1D25M1I1M1I95M1I7M1I2M1I40M1I46M1D8M1D12M1I8M1I17M1I1M1D21M1D30M1I10M1D28M1I13M2D1M1D9M1D11M1I12M1D5M1D18M1D10M1I15M1D8M1I1M1I32M1I31M1I15M1I12M1I43M1D13M1I3M1I18M1D27M1D24M1I9M1I24M1D12M1D1M1D59M1D9M1I19M1D21M1I40M1D36M1D20M1I7M1D8M1D1M1D6M1D32M1D10M2D8M1I3M1D23M1D20M2I38M1D14M1D19M1D12M1I12M1D1M2D19M1I5M1I36M1D10M1I9M2I23M1I49M1D27M1D15M1I21M1I4M1D9M1I11M1D19M1I3M1I25M1I5M1I1M1D2M1I44M1D56M1I1M1I97M1I21M1I9M1I12M1D10M1D2M1I24M1D4M1D11M1D32M1D3M1D7M1D34M1D16M1D30M1D89M1I6M1D11M3I11M1I13M1D5M1D4M1D8M1D18M1I17M1I8M1I7M1I3M1D3M1D18M1D6M1D66M1D9M2D18M2D26M1I38M1I12M1D6M1I4M1D61M1D6M1D34M1D4M1D26M1D5M1I4M1D51M1I11M1I4M1I3M1I11M1I34M1I42M1I44M1I9M2I15M1D12M1I3M1I9M1I1M1D16M1D12M1I17M1I10M1D3M1I10M1I18M1I4M1D8M1I2M1I5M1D29M2I2M1D9M1I1M1I7M1I83M1I4M1D39M1D10M1D34M1D4M1I5M1D37M1I2M1I30M1D5M1I8M1I15M1I20M1D11M1I15M1D1M1D1M1D18M1I1M15I1M3I1M4I1M9I1M4I1M2I1M6I9M1I1M3I1M2I4M1I1M3I4M1I1M2I2M2I3M2I2M3I3M1I3M1I3M1I1M4I2M1I1M3I1M1I4M1I5M1I1M2I5M2I1M2I4M1I2M2I4M1I1M1D7M1D24M", - "end": 3468, - "length_on_ref": 3468, - "seq_length": 3556, - "start": 0, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1049037, - "_l_read_name": 69, - "_n_cigar_op": 461, - "cigar": "3M1D41M1I26M1I3M1I17M1I9M1I12M1I11M1I7M1I83M1D14M1I4M1I9M1I17M1D35M1I7M2D10M2I83M1I1M1D6M1I6M1I8M1I3M1D98M1I2M1D1M1D10M1I24M1D3M1D10M1I6M1D3M1D11M1D15M1I8M1I8M1I18M1D24M1D17M1I8M1I15M2I5M1D21M1I19M1I20M1D27M1I9M1I16M2I5M1I37M1D5M2I8M1I16M3I1M1I6M1I5M1D3M1I16M1D29M2I17M1I17M1I5M2I48M1I8M1I72M1I114M1I8M1D1M1D21M2I9M1D49M1I53M1I2M1D1M1I1M1I27M1I2M1D35M1D12M1I19M1I4M1I57M1I24M1I2M1I18M1I19M1I14M1I8M1I11M1D12M1D5M1D14M1D21M1I32M1I1M1D18M1D37M1I13M1I27M1I1M1I3M1I27M1I6M1I7M1I1M1I15M1I6M1D17M1D16M1D37M1D3M1I4M1I9M1D24M1D19M1D5M1D70M1I23M2I2M5I18M1I14M1I5M1D26M1I6M1I3M1D16M1D28M1D3M1I20M2D2M1I26M1I3M1I3M1I11M1I11M1D9M1D5M1I3M1I10M1I37M1I9M1I9M2I6M1I26M1I13M1I1M1I23M1D3M1I3M1I18M1I11M1I10M1I5M1D7M1D25M1I7M1I34M1I4M1I6M1D19M1I1M1I16M1D1M1I69M1D6M1I14M1D26M1I62M1D1M1I1M1I21M1I4M4I4M4I33M1I10M1I14M1I11M1D7M1I52M1D20M3I9M1D11M1D4M1D6M1I10M1I37M1I1M1I15M1I22M1D7M1I7M1I13M1D8M1I11M1D17M1I20M1I25M1D14M1D2M1D1M1I11M1I20M1D10M1I8M1I2M1I5M1D10M1I15M1I28M1I4M1I17M1I14M1I15M1D8M2D13M1I7M1I1M1I3M1D9M1I3M1D20M1I10M1I11M1D3M1I84M1I11M1I3M1I5M1D5M1D2M1I6M", - "end": 3649, - "length_on_ref": 3649, - "seq_length": 3749, - "start": 0, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1049287, - "_l_read_name": 69, - "_n_cigar_op": 711, - "cigar": "10M1I7M1I28M1I3M3D5M1D12M1I64M1I16M1D1M1D1M1D7M1I1M1I9M1D19M1I8M1D20M1D47M1D4M2I19M1D1M1D2M1D18M1I10M1I31M2D12M1D17M1I8M1D11M1I8M1D1M1D1M1D3M1I3M1I42M1D5M1D11M1I6M1D1M1D9M1D11M1I7M1I6M3I20M1I1M1I22M1I22M1D14M1D3M1I4M1I15M1I18M1I6M1D18M1D7M1I6M1I12M1D3M1D5M2D5M1I10M1D6M1D45M1D11M1D6M1I66M1I5M1D3M1I26M1I16M2D7M1D7M1D68M1I5M1I2M1D9M1I21M1D11M1D6M1D18M1I60M1D5M1I27M1I42M1D23M1I20M1D3M1D11M1I2M1I23M1I16M1I16M1I3M1I8M1I23M1I15M1I8M1I3M1I7M1I7M1I28M1I9M1I25M1I6M1D24M1I8M1D27M1I13M1I4M1I3M1D1M1D17M1I7M1D6M1D2M1I4M1D5M1D14M2I1M1I5M1I21M1I5M1I4M1I1M1I17M1I9M1D2M1D48M1I7M1D12M1I2M1D26M1I7M1I15M1D15M1D12M1D24M1I2M2I4M1I11M1I14M1D35M1I16M1I2M1D4M1I18M1I7M1I4M1I14M1D11M1I12M1I1M1D1M1D2M1I2M1D5M1D2M1I12M1D1M1D1M1D2M1D27M1D22M1D1M1D31M1I4M2I1M2I13M1I5M1D5M2I10M1D3M1D4M1D27M4I1M1I2M1I6M1I4M1D12M1I4M1I26M1D27M1D6M1D15M1D1M1I10M1I39M1D1M1I9M1I20M1D6M1I6M1I6M1I5M2D4M1I3M1D7M1D3M1I3M2I2M1I12M1D3M1I3M1I3M1I1M1D1M1I1M1D7M1I32M1D18M1D5M1D17M1D19M2I2M3I4M1I8M1I2M2I1M4I3M1I6M1I8M1D4M1I1M1I5M1D7M3I8M1I4M2I4M1D11M1I7M1I13M1D18M1D4M1I5M1D8M1I9M2D33M1D5M1I22M1D4M1I4M1D6M1D1M1D9M1I8M1I2M1I2M1D10M1D2M1I4M1I62M1I10M1I3M1I4M1D3M1I5M1D15M2I3M2I1M1I8M1D57M1D1M2D7M1I1M1D9M1I8M2D2M1I2M1D4M1D19M1I14M1I13M1D1M1I5M1I3M1I23M1I38M1I7M1D1M1D11M1D6M1D8M1I5M1I4M1I1M1I12M1I3M1I10M1D4M1D8M1D14M1I8M1I44M2D22M1D10M1I7M1I17M1D7M1I7M1I11M1I17M1D3M1I20M1I8M1D11M1D10M1I7M1I24M1I2M1D5M1I11M1I14M1D2M1I12M1I5M1D30M1I6M1I13M1I8M1D1M1I2M1D3M1D11M1D21M1I7M1I2M1D15M1I17M1I8M1I3M1D7M1I6M1I5M1D11M1D5M1I7M1I5M1I2M1I11M1D3M1I10M1D7M2D11M1I6M1I15M2I9M1D6M1I3M1I16M1D13M2I2M1D7M1D3M1I12M1D10M1I29M1I26M", - "end": 3988, - "length_on_ref": 3988, - "seq_length": 4054, - "start": 0, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 611, - "_l_read_name": 69, - "_n_cigar_op": 611, - "cigar": "19M1I3M1D38M1D16M1D2M1I23M1I42M2I5M1D11M1D40M2I10M1I10M1I9M1I3M1I3M1I7M1I11M1I10M1D3M1D3M1I6M2D1M1I3M1I13M1I23M1D13M1D11M1I84M1D42M1D18M1D6M1I20M2I1M1I1M1I11M2I2M1D8M1I5M1I1M1I18M1I4M1I11M1D10M1D2M1D1M1D7M1I3M1D13M1D20M1I2M2D2M2D2M1D4M1D8M1D4M1D2M1D22M1D6M1D10M1I7M1I17M2I11M1D16M2I9M2D1M1I2M1I20M1D14M1D1M1D2M1D1M1D48M1I14M1I17M1I2M1I1M2I19M1I2M2D8M1D15M1I1M1D30M1D14M1I4M1I3M8I23M1I3M1I13M1I2M1D2M1D6M1I22M1D17M1I4M1I5M1I40M1D33M1I13M1I10M1D37M1D39M1D16M1D5M1D9M1D18M1I3M1I3M1I2M1I1M1I7M1I11M1D5M2I11M1I11M1D6M1I13M1I12M1I7M1I38M1I5M1I9M1I24M1D3M1I14M1I6M1I5M1I13M1I20M1D20M1I3M1D5M1I2M1I5M1I9M1I63M1D1M1D20M1D4M1D9M1I10M1I10M1D31M1I7M1I11M1D9M1D49M1D61M1D5M1I12M1I24M2D45M1D22M1I2M1I27M1I6M1I8M1D4M1D51M2I3M1D8M1I7M1I22M1D12M1I47M1D15M2I7M1D18M1I12M1D12M1D19M1I6M1I2M1I5M1I16M1D32M1D11M3I52M1I12M1I6M1D48M1I2M1I2M1I43M1I26M2I1M1D16M1I6M1I13M2D7M1D12M1I59M1I11M1D1M1D12M3I21M1I9M2D26M1I4M2I28M1I11M1D20M1I3M2D13M1D31M1I15M1I20M1I7M2I15M1I6M1D24M1I4M1D9M2I3M1D12M1I3M2D12M1D5M1I15M1I5M1I1M1I6M1D27M1D11M1D24M1I2M1I4M1I1M1D8M1I18M1I41M1I41M1I6M1D4M4I1M1I9M1I28M2I9M1I15M2I3M1D6M1I9M1D6M1D25M1D6M1D39M1I1M1I10M1D17M1I3M1I9M1D14M1D3M1D10M1D9M1I10M1D2M1I31M1I4M1I3M1I11M1D4M1D6M1I25M1D16M1I54M1I5M1I12M1I7M1I1M1D33M1I2M1I8M1I7M1D6M1D3M1D5M4I22M1I9M1I25M1D13M1I7M1I4M1I28M1I2M1I3M1I4M1I17M1D12M1I45M1I3M1I6M1I4M1I17M1I27M1I16M1I20M1D3M1I1M1D7M3D3M1I1M1D2M1I5M1I6M1I14M1I12M", - "end": 4103, - "length_on_ref": 4103, - "seq_length": 4189, - "start": 0, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1049439, - "_l_read_name": 69, - "_n_cigar_op": 863, - "cigar": "8M1D2M1I21M1I7M1D6M1I35M1D20M2I36M1D14M1I11M1D11M1I34M1D14M1I10M1D4M1I26M1I8M3D15M1D5M1I2M1I4M2D13M1I31M1I1M1D10M1D7M1I38M1I12M1D6M1I34M1I29M1D8M1D6M1D25M1D20M1D5M1I3M1D2M1D11M1D22M1I31M1D6M1D27M1I37M1D2M1D2M1I28M1D6M1D3M1I4M1I17M1D13M1D17M1D18M1D10M1D5M1D25M1D19M1I11M1D24M1D16M1D4M1D12M1I5M1I19M1I22M1I14M1I26M1D27M1D1M1D9M1I2M1I11M1D8M1I6M1D1M1D32M1I2M3D8M1D4M1D13M1D17M1D18M1D2M1I6M1I4M1I18M1I1M1I1M1D8M1I2M1D3M1I1M1D7M1I11M1D6M1D16M1I3M1I9M1D6M1D1M1I3M1D30M1I7M1D3M1I17M1I1M1D8M1D1M1I1M1I5M1I5M1D1M1D6M1I7M1D5M1I1M1I6M1D11M1I9M1D7M1I12M1D5M1I4M1D14M1I12M2I2M1D8M1D13M1I19M1I5M1I4M1D23M1I1M1D8M1I5M1I15M1I6M1I2M1D30M1I32M2D38M2I16M2I4M1I3M1I1M1I11M1I3M1D28M2I2M1I5M1I5M2I3M1I13M1I13M1D15M1D2M1D4M1D3M1I7M1D9M1I7M1D19M2I17M1D2M1D2M1D15M1D39M1D4M1I7M1I3M1D4M1I2M3I5M1I9M2I3M1I28M1I4M1I10M1I2M1D2M1I7M2I1M1I10M1I51M1I23M1D9M1I11M1I12M1I7M1I3M1I11M1I1M1I1M1D20M1I37M2I10M1D4M1I7M1I20M1I11M1D4M1I6M1I12M1D1M1I9M1I1M1D1M1I1M1I3M1I2M2I12M1I15M1D32M1D9M1I21M1I14M1I19M1I5M1I7M9I1M1I20M1I25M1I2M7I2M1I1M1I7M1I8M1I3M1I32M1I6M1D7M1I7M1I10M1I2M1I8M1D4M1D3M1D2M3I2M1I10M1D10M1I5M1I6M1D5M1D4M1I20M1D20M1I5M1I12M2I1M6I1M3I25M1D5M1I28M1I3M3I2M1I29M1D22M3D11M1I3M1I2M1D10M1I4M1I2M1D8M1D1M1D2M1D7M1D6M1I4M1D12M1I36M1I10M1I2M1I5M1I21M1I7M1I14M1D11M1D6M1I5M1I10M1I2M1I15M1I5M1I1M1I13M1I2M1D5M1D2M1I6M1I8M1I4M12I17M1D4M1I2M1D4M1I15M1D8M1I1M1I9M2D8M1I2M2I22M1D4M1D7M1D2M1I3M1D3M1I2M2I6M1I6M1D14M1I1M1I2M1D2M1D1M1D29M1I10M1I7M1I17M1I11M1D4M1I9M1I5M1D4M1I17M1I16M1I1M1I1M1D8M1D3M1D8M1I12M2I2M1I13M1D10M1D6M1I6M1I3M1I2M1I7M2I13M1I9M1D7M1I5M1D3M2I4M1I6M1I9M2I3M1I28M1I8M1I6M1D26M1I6M1I3M2I13M1I5M1I10M1I3M1I3M1I7M1I4M2I2M1D8M1I2M1I2M1I3M1I12M1I7M2I22M2D7M1D4M1I14M1D6M1I3M1D3M1I4M1I10M1D4M1D17M1I8M3I7M1D11M1I20M1I6M1D16M1D3M1I7M1D12M1I5M1D11M2D4M1I10M1D15M1I1M1I9M1I11M1I8M1I4M1I19M1I3M1I9M1I20M1D7M1D8M1I13M1D5M1I3M1I27M2I3M1D30M3I1M1I2M1I3M1D20M1I11M2D4M1D5M1D18M1D6M1D29M1I2M1I28M1D1M1D6M1D26M1I2M1I3M1D13M", - "end": 4385, - "length_on_ref": 4385, - "seq_length": 4532, - "start": 0, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1049841, - "_l_read_name": 69, - "_n_cigar_op": 1265, - "cigar": "18M1D12M1I16M1I6M1D40M1D24M1D45M1I20M1D11M1D3M1D8M1D4M1I3M1D27M1I17M1D9M1D12M1I19M1I43M1D27M1I16M1I5M1I3M1D8M1D2M1D4M2I9M1D9M1D14M1D39M1I12M1D7M1I4M1D34M1D16M1D9M1I5M1D3M1I4M1D21M1D11M1I14M1D20M1I9M1D18M1D2M1D11M1I17M1D2M1I6M2D11M1D4M1I13M1D3M1D7M1I3M1I3M1I5M1I1M1D1M1D4M2D6M1D3M1I7M1I27M1I24M1D5M1I13M1I28M1D16M1D5M1I23M1D1M1D8M1D5M1I24M1D6M1D22M1I6M1D5M1D2M1I7M1I1M1I5M1I1M3I3M1I4M2I1M2I3M2I4M1I6M1I19M1D8M2I10M1I32M1I7M1I3M1I2M1I1M2I6M1D5M1D3M1I21M1I3M1D2M1I6M1D32M1I15M1D1M1D4M1I5M1D4M1D16M2I4M1I22M1D26M1D3M1I4M1I6M1I29M1D11M1D14M1D39M1I17M1I18M1I6M1I2M1I5M1I4M1I3M9I1M5I4M1I19M1I1M1I3M1I1M3I26M1I2M1I2M1I1M1I1M1I2M1D17M1I4M1I6M1I3M1I1M1I9M1I2M1I1M1I11M1I3M1D19M2I15M2I11M1I2M1I3M1D12M1I3M2I1M1I1M2I2M1I1M1D3M1I1M1I19M1I26M1D12M1D4M1D12M2I2M1I7M1I8M2I3M1I6M1I29M1I1M1I2M8I5M1I20M1I2M1I1M1I2M1I1M1I2M1I2M1I7M2I18M1I5M1I3M1I1M1I2M1I5M4I6M1D10M1I2M1I7M2I3M1I2M1I1M1D3M1I4M1I4M4I3M1I8M1I1M1I7M1D5M1I7M1I7M1D4M1D2M1I5M2I7M1D2M1I1M2I2M1I1M2I1M1I4M1I3M1I1M1I3M1D23M1I12M1I11M1I8M1I4M1D3M1I10M1I2M1I1M1I3M1I2M1I4M3I2M1I8M2D1M1D5M1I1M1D24M3I5M1I1M1I4M2I3M1D2M1D2M1I4M1D9M1I29M1I8M1I2M2I3M1I9M1I5M1I1M1I3M1D3M1I9M1I1M1I9M1I7M1I3M4I1M1I18M1I6M1I5M1I13M1D12M1I2M1I1M1D1M2I1M3I1M2I22M1I2M1D3M1I5M3I1M1I10M1I2M1D3M1D6M1D8M1I14M1I1M4I2M1I15M1I3M1I4M1I1M1I1M1I8M1I2M2I1M8I1M1I16M1D24M1D1M1I5M1D1M1D17M2D11M1D15M1I11M1I8M1D6M1D13M1D4M1I11M1D6M1D6M1I2M1D11M1I5M2I14M1I2M1I9M1I16M1I3M1I17M1D1M1D22M1D9M1I2M1D3M2I15M1I6M1I2M3I3M1I20M1I3M1I2M1I3M2D6M1I2M2I2M1I4M1I3M1I2M1I5M1I1M1I9M1I3M1I11M4I2M1I17M1D18M1I15M1I8M1I7M1I26M1I23M2D5M1D12M1I4M1I5M1I5M1D6M1I5M1I6M1D4M1I1M1I1M2I3M1I25M1I10M1I9M1D2M1D3M1I2M1I1M1I3M1D2M1I11M2I2M4I19M2I2M1D3M1I3M1I5M1I5M1I2M1D9M1I1M1I9M1I1M1I3M1I1M1I9M2I5M1I1M1I6M3I12M1D10M1I1M1I3M1I13M1D4M4I5M1I9M2I3M2I6M1I1M1D1M1I27M1I3M1I17M1I6M1I7M1I2M1I2M1I10M1I2M1I13M1I1M4I2M3I2M1I7M2I3M1I2M1I7M1I2M1I1M1I1M2I12M1I6M1I6M1I4M1I7M1D10M1I3M3I3M1I1M1I4M1I2M1I9M1I1M1D8M1D1M1D40M1D7M1I7M1I1M1D4M2I1M1I3M1I2M1I1M1I1M1I1M5I1M3I1M1I3M1I17M1I4M1I1M1I3M1I6M1I15M1I3M1I1M1I5M8I1M2I1M2I2M1I2M1I1M1I1M1I9M1D5M1D3M1D3M2I1M1I1M1I2M1D3M2I2M1D3M1D5M1D10M1D5M1I4M1I1M1I2M1D4M1I4M2I4M1I6M1I4M1D3M1D4M1I1M1I1M1I1M1I4M3I3M2I5M1I6M2I2M1I3M1D21M3I1M2I1M2I7M1I26M2I3M1I8M1D6M1I18M1D7M1I1M1D5M1I1M1I2M1I30M1I5M1D9M1I6M2I14M1I2M1D2M1I3M1D5M1I2M1I4M2D11M1I5M1I1M3I1M1I2M5I2M1I3M7I2M14I2M1I1M5I1M4I2M20I2M2I1M1I1M1I1M5I1M5I1M1I1M4I1M10I1M2I1M8I1M6I1M2I1M10I1M3I1M1I2M2I1M1I16M1D5M1I3M1D11M1I13M1D3M1I6M2I11M1I1M3I2M1I1M4I1M3I1M2I1M6I1M2I1M1I1M8I1M10I1M2I1M11I1M15I3M2I2M3I1M1I1M3I2M1I1M3I1M3I1M3I1M1I1M1I1M2I2M2I1M1I3M1I3M1I5M2I5M1D2M1I7M1I1M2I16M1I3M2I1M1I18M1I5M1I2M1I2M1I6M1I4M4I13M1D8M1I1M1I6M1I5M1I15M1I9M1I1M1D5M1D3M1I1M1I22M1I12M1I18M1D12M1I5M1I21M1I5M1D8M1I2M1I6M1D18M1D2M1D16M2D1M1D10M1D6M1I20M", - "end": 4436, - "length_on_ref": 4436, - "seq_length": 5046, - "start": 0, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839108, - "_flag_nc": 25, - "_l_read_name": 68, - "_n_cigar_op": 25, - "cigar": "5M1D2M1D9M1D9M1I38M1I3M1D9M1I1M1D6M1D7M1I28M1I31M1D27M", - "end": 183, - "length_on_ref": 182, - "seq_length": 180, - "start": 1, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1049115, - "_l_read_name": 69, - "_n_cigar_op": 539, - "cigar": "9M2I4M1I38M1D2M1I37M1I1M1I15M1I3M1D16M2I16M1D11M1D1M1I15M1D18M2I3M1D1M1I13M1I15M1I5M1I5M1I7M1I3M1I6M1I17M1D7M1I4M2D10M1D2M1I34M2I2M1I29M1I2M1I5M1D12M2D12M1D7M1I19M1D16M1I1M1D4M1D12M1D23M1D3M1I3M1I2M1D11M1I2M1D9M1I8M1D28M2I10M1I14M1D6M1I3M1D2M1D15M2I4M1D8M1I22M1D37M1I22M1I12M1D5M1D4M1D7M1I9M1I8M1D35M1I26M1I2M1I4M1I8M1D17M1I32M1D1M1D16M1D15M1I13M1I7M1I16M1I7M1D5M1I40M1D26M1I4M2D1M1I4M1I8M1D11M1I1M1I28M1I11M1I2M1I1M1I2M1I5M1D6M1D20M2D32M2D2M1D3M1I7M1D25M1I3M1I6M1I2M1D4M1I13M1D8M1I5M1D11M1I3M1D15M1I25M1I7M1D5M1I40M3D1M1I12M1I14M1D2M1I6M1I3M1D19M1I10M1I5M1I7M1D4M1I16M1D1M1D2M1D15M1I7M1D6M1I12M1I2M1D5M1I5M1I2M1I6M1D27M1I27M1I6M3I3M1I7M1I3M2D6M1I14M2I6M1D17M2I1M1I20M1I4M1I6M1I8M1D26M1I6M1I2M1D15M1I3M1D23M1I8M1I17M1D8M1I14M1D2M1I3M1D18M1D4M1D8M1I10M1D23M1I12M1D1M2D36M2I4M1I3M1I2M1I5M1D3M1I10M1I3M1I9M1D3M1D11M1D9M1I12M1I4M1I14M1I67M1I10M1D7M1I12M1I4M1I21M1I11M1I3M1D20M1I7M1I8M1I10M1I27M1D1M1I26M1D6M1D13M1I9M1I30M1I5M2I3M1I4M1D27M2I8M1I17M1I12M1I5M1I25M1I8M1D12M1I2M1I12M1I3M1I1M1D2M1I14M1I18M1I19M1I7M2D11M1I37M1I7M1I4M1I2M1D1M1D2M1D2M1D35M1I28M1I10M1I12M1D10M1I2M1I17M1D3M1D16M1I3M1D13M1I1M1I3M2D17M1I1M1D22M1I7M1I8M1I3M1D2M1I5M2I2M1I25M1I4M1D2M1D36M1D21M1I7M1D29M1I2M1D9M1I3M1D12M1D17M", - "end": 3017, - "length_on_ref": 3016, - "seq_length": 3084, - "start": 1, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 701, - "_l_read_name": 69, - "_n_cigar_op": 701, - "cigar": "12M1I3M1I9M1D6M2I8M1D4M1I7M1I1M1I12M1I4M1I6M1I9M1I8M1I38M1D8M1I6M5I2M1D4M1I3M1D3M1D4M1I1M1I14M1I7M2I7M1I1M1I3M1I11M2D9M1I1M1I5M1D17M2I11M3I8M1I4M1I3M1I3M1I5M1I2M1D5M4I1M2I3M1I1M1I5M2I1M1I3M1I17M1I5M1D16M2I5M2I1M1D1M1I2M1I7M1I12M1D7M3I11M1I6M1I1M1D2M1D4M1I3M1I12M1I12M1I10M1D3M2I4M1I2M1I2M1D5M1I6M1I2M1I7M2I18M1D5M1D7M1I42M1I9M1I12M2I4M1D2M1I3M1I21M1I16M1I9M1D5M1I2M1I3M1D7M2I5M2I1M1I24M1I13M1I4M1I5M1I13M1I14M1I1M1I6M1I1M1D9M1I15M1I9M1D3M1I9M1I4M1I14M3I9M1I7M1I9M1I8M1I11M1I1M1I14M1I8M1I19M1I21M1I5M1I4M1I4M1I13M1I27M4I10M2I3M1I3M1I6M1I7M1I7M1I2M1I2M2I4M1I3M1D1M1D8M1I19M1I9M1I2M1I1M1D4M2I2M1I1M1I3M1I2M2I13M1I11M2I4M1I12M1I18M1I34M3D18M1D21M1D8M1I9M1I6M1I14M1I4M1I1M1I10M1I55M1I3M1I1M1I3M2D2M1I5M1I2M1I5M1I4M1I2M1I5M1I4M1I3M1I6M2I4M1I2M1I2M1I6M1D13M1D8M1I12M1I1M1I9M1I2M1I2M1I8M1I13M1I24M1D5M1I24M1I13M1I16M1I11M1I1M1I7M1I16M1I9M2I4M1I1M1I5M1I13M1I3M2I5M1D8M1I1M1I3M1I2M1I6M1I6M1I1M1I2M4I3M1I23M1I14M1I8M1I11M1I4M1I13M1I8M1I10M1I1M1I11M1I10M1I5M1I1M1I11M1I3M1I3M1I1M1I3M1I12M3I3M1I11M1I2M1I13M1I4M1I6M1I5M1I1M1I3M2I3M1I5M2I4M1I5M1I8M1D5M3I6M1I3M1D18M1D4M1I2M1I6M1D3M1I21M6I25M1I16M1D4M1I11M1D9M4I1M1I12M1I4M1D8M1I20M1I2M1I5M1I2M4I2M1I9M1I8M1I1M3I1M2I3M1D5M1D18M1I14M1I5M1I2M1I2M1I4M1I4M1I3M1I6M1I6M1I16M1I2M1I5M1I6M5I3M1I6M2I16M1I11M1I10M1I7M1I1M1I5M1I9M1I9M3I26M1I13M2D3M2I1M1I3M1I5M1I9M1D6M3I2M1D1M1D27M4I28M2I4M2I12M1I3M1I5M1I12M1I18M1I4M2I5M3I4M1D9M2I1M2I7M1I17M1I3M2I7M2I3M1I25M1I13M1I2M1I2M1I3M1I1M2I1M1I10M1D4M1I17M1I12M1I1M1I2M1I5M1D12M1I6M1I23M1D1M1I3M1I12M1D10M1I7M1I4M1D17M1I9M1I2M1I23M", - "end": 2717, - "length_on_ref": 2715, - "seq_length": 3036, - "start": 2, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1048817, - "_l_read_name": 69, - "_n_cigar_op": 241, - "cigar": "1M6I1M1I3M1I9M1I35M1D9M1I20M1I5M1I4M1I2M2I1M2D33M1I12M1D14M1I25M1D24M1I1M1I9M1I5M1D5M1D2M1I1M1I26M1I2M1I35M2I39M1I16M1I28M1I24M1I7M1D21M1I3M1D21M1D17M1I3M1D2M2I9M1I3M1I44M1I1M1I17M1I52M1I10M1D22M1I48M2I18M1I3M1I10M1D12M1I24M1I31M1I6M1I1M1I7M1D25M1D1M1I19M1I27M1D9M1I5M1I1M1I1M1I12M1I10M1I57M1I2M1I11M1D4M1I28M1D9M1I30M1I13M1D24M1D11M1I13M1D29M1I27M1I4M1I9M1I7M1I20M1I6M1D21M1I37M1D2M1D16M1I16M1I6M1I9M1D7M1I3M1I1M1I15M1I2M1I2M1I11M1D1M1D6M1I17M1I25M1I58M1D12M1D13M1D2M1I13M1D6M1I26M1D9M1I8M1I11M1I5M1D22M1D15M1I12M1I4M1D13M1I31M1I2M1I4M1I11M1I26M", - "end": 1735, - "length_on_ref": 1732, - "seq_length": 1792, - "start": 3, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 425, - "_l_read_name": 69, - "_n_cigar_op": 425, - "cigar": "1M2I1M5I1M3I22M1I57M1D13M1D3M1I1M1D8M1I12M1I36M2I8M1D8M1D2M1D13M1I1M1I14M1I4M2D23M1I9M1D14M1D13M1I33M1D1M1I6M1D9M1D9M1I4M1D17M1I6M1D6M1I6M1I7M1I26M1I2M1D56M1I18M1I8M1I6M1I17M1I8M1D2M1D5M1D32M1I1M1D22M1D1M1D2M1D14M1I21M1D21M1I5M1D5M1D4M1I15M1I9M1I47M1I7M1D17M1D34M1D10M1I25M1I4M1I11M1I20M1D12M1D29M1D28M1I4M1D31M1I18M1I19M1D5M1D9M1D7M1I1M1I8M1I18M1D23M1D26M1D8M2I2M1I26M1D4M2D1M2I1M1D1M2D16M1I2M1I1M1D8M2D13M2I8M1I10M1I5M1I22M1D14M1I22M1I16M1D3M1I11M1D3M1I11M1I2M1I2M1I1M1I2M1D38M2I5M1D4M1D18M1I5M2I7M1I7M1D11M1D3M2I3M1D1M1D13M2I7M1I3M1D13M1D3M1D4M1D7M1I1M1D8M1D7M1D8M1D3M1I6M1D1M1I14M1D24M1I8M2I4M1I7M2D9M1I7M1D7M1I6M1I3M1I1M1I15M1D1M1D4M1D2M1I2M1D10M8I25M1D14M1I3M1D7M1D28M1D16M1I10M1I3M1I18M1D11M1I2M1I6M1D1M1D6M1D8M1I1M2I7M1I5M1I4M1I2M1I8M1I7M1D15M1D10M1I7M2I9M1I2M1D3M1I5M1D6M1I3M1I3M1I2M2I5M1D6M1D3M1I10M2I32M2I10M1I27M1D4M1I6M1D4M2I20M1I20M1I8M1I17M1I15M1I5M1I16M1I4M1D3M1D3M1D3M1I26M1I13M1D9M1I1M1I1M1I2M1I7M1I6M1D3M2I7M", - "end": 2258, - "length_on_ref": 2255, - "seq_length": 2310, - "start": 3, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 1048797, - "_l_read_name": 69, - "_n_cigar_op": 221, - "cigar": "28M1D1M1D22M1D12M1I13M1D30M1I15M1D1M1D19M1D14M1I4M1I5M1D49M1D10M1I3M1D4M1I3M1I30M1I11M1D10M1I3M1D5M1D5M1I12M1D15M1D5M1I29M1I7M1I39M1D6M1I22M1D17M1I19M1I9M1I8M1I5M1I20M1D12M1I12M1I21M1D53M1I24M1D6M1I3M1I12M1I12M1I32M1I18M1I7M1I16M1D9M1D22M1I7M1D14M1I6M1I23M1I8M1I2M1I4M1D8M1I16M1I14M2D21M1D3M1D19M1D14M6I4M1I4M2I12M1D2M1D11M1D4M1I2M1D16M1D6M1I47M1I71M1I8M1I15M1I11M1I9M1D9M1D28M1I4M1I14M1D3M1D11M1I1M1D16M1I2M1I1M1I8M1I19M1D17M1I25M2I1M1I7M1I4M1I2M1I25M1I22M1I1M1I23M1D35M1I10M1D6M1I31M1I12M2I7M1D2M1I9M", - "end": 1565, - "length_on_ref": 1548, - "seq_length": 1581, - "start": 17, - }, - "flags": 16, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 587, - "_l_read_name": 69, - "_n_cigar_op": 587, - "cigar": "39M1D15M1D1M1I5M1D10M1I11M1D3M1I6M1D6M1I12M1D5M1I9M1I35M1I2M1I27M3I8M1I1M1I1M2I10M1I24M1I13M1I25M1I8M1I4M1I6M1I8M1I2M1I12M1D20M1D3M1I3M1I3M1I4M2I25M1I5M1D11M1D2M1D16M1I3M1D24M1I11M1I13M1I2M1I7M1I11M1I2M2D2M1I1M1I4M1I5M1I5M1D14M1D12M1D36M1I14M1I13M1D3M1I7M1D9M2I4M1D1M1D11M1I1M1I30M1I6M1D3M1I13M1I6M3I24M1D26M1D4M2I44M1I23M1I17M1I8M1I30M1D5M1D17M1I11M1I8M1I9M1D6M1D31M1I3M1D16M1I13M2D30M1I3M1I9M1I15M1I6M1D11M1D2M1D24M1I2M2I6M1I7M2D45M1I3M1D14M12I31M1I6M1I32M1I21M1I2M1D2M1I43M1I5M2I30M1I8M1I3M1I7M1I8M1D15M1I8M1D2M1I10M1I18M1D25M1I12M1D2M1I15M1D32M1I4M1I2M1I36M1D5M1I1M1I3M1I27M1I14M1D31M1D14M1D2M1I11M1I13M1D22M1I1M1I1M1D11M1I6M3I10M1I9M1I36M1I3M1I2M1I5M1D52M1D6M2D19M1I2M1I18M1D12M1I33M1I21M1I3M1I8M1I5M1D4M1I4M1I5M2I16M1I17M1I22M1D11M1D8M1I18M1D1M1D13M1I5M1D32M1D5M1I24M1I3M1I1M1D9M1I3M1I10M1D15M1I8M1D12M1D4M1D10M1I22M1D14M1D5M1I13M1D11M4D1M1D19M1I9M1I15M1I11M1D6M1I6M1I5M1I5M1I13M1D3M1I3M1I2M1I4M1I20M1I6M1D3M1I6M1D3M1D9M1D6M1I6M1I2M1I3M1I6M1I4M1D4M1I5M1I2M1D3M2D3M1D8M1I32M1I30M1D13M1I1M1D35M1I3M1I22M1D8M1I6M1D4M1D3M1I3M1D8M1I8M1D13M1I3M1D1M1D15M1I4M1D4M1D8M1I32M1I29M1D3M2D24M1D6M2D5M1D25M1D8M1I4M1I17M1I11M1D2M1I6M1D19M3I19M1D4M2D40M1I5M1I39M1I47M1D29M1I2M1I6M1I5M1I3M1I5M1D12M1D10M1D9M1I7M2I10M1I5M1I8M1I11M1I7M1I3M1D3M1D20M1D26M1D14M1I47M1I9M1D8M2I1M1I45M1D9M1I11M1D10M1D6M1D10M1I2M1D29M1I29M", - "end": 3590, - "length_on_ref": 3559, - "seq_length": 3645, - "start": 31, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306839109, - "_flag_nc": 201, - "_l_read_name": 69, - "_n_cigar_op": 201, - "cigar": "22M1I12M1I16M1D7M1I43M1D11M1D22M1I8M1D15M1I18M1I36M1D18M1D36M1I5M1I24M1I14M1D1M1D3M1D21M1I28M1I4M1I10M1I13M1I3M1I12M1I5M1I8M1D10M1I4M1D3M1I30M1D8M1I16M1I23M1D20M1I3M1I10M1I4M1I6M1I29M1I19M1I6M1D9M1D5M1D6M1D39M1D6M1I11M1I50M1D13M2I7M1D10M1I4M1I2M1D6M1I4M1I32M1D18M2I4M1I16M1I2M1D11M1D8M1D13M1D2M1I3M1D2M1D11M1D2M1D46M1I1M1I21M1I2M1D5M1I10M1I8M1I5M1D44M1I13M1I7M1I4M1I6M1D4M1I1M2D7M2I19M1I44M1I30M1I4M1I73M1I11M1I3M1I16M1I13M1D22M1D10M1I19M1I12M1I12M1I52M1I67M", - "end": 1565, - "length_on_ref": 1530, - "seq_length": 1560, - "start": 35, - }, - "flags": 0, + "fileOffset": 6645730, + }, + { + "fileOffset": 6647152, + }, + { + "fileOffset": 6649116, + }, + { + "fileOffset": 6651523, + }, + { + "fileOffset": 6655211, + }, + { + "fileOffset": 6658886, + }, + { + "fileOffset": 6666142, + }, + { + "fileOffset": 6673752, + }, + { + "fileOffset": 6682819, + }, + { + "fileOffset": 6691689, + }, + { + "fileOffset": 13886185, + }, + { + "fileOffset": 13898957, + }, + { + "fileOffset": 13899467, + }, + { + "fileOffset": 13906392, + }, + { + "fileOffset": 13913893, + }, + { + "fileOffset": 13917686, + }, + { + "fileOffset": 13922994, + }, + { + "fileOffset": 13926392, + }, + { + "fileOffset": 13934351, }, ] `; @@ -356,18 +147,7 @@ exports[`check ecoli header and records 2`] = ` exports[`deep check 1000 genomes bai 1`] = ` [ { - "data": { - "_bin_mq_nl": 306774051, - "_flag_nc": 9502722, - "_l_read_name": 35, - "_n_cigar_op": 2, - "cigar": "183S67M", - "end": 10066, - "length_on_ref": 67, - "seq_length": 250, - "start": 9999, - }, - "flags": 145, + "fileOffset": 636682, }, ] `; @@ -375,32 +155,10 @@ exports[`deep check 1000 genomes bai 1`] = ` exports[`deep check volvox-sorted.bam 1`] = ` [ { - "data": { - "_bin_mq_nl": 306783516, - "_flag_nc": 1, - "_l_read_name": 28, - "_n_cigar_op": 1, - "cigar": "100M", - "end": 102, - "length_on_ref": 100, - "seq_length": 100, - "start": 2, - }, - "flags": 0, - }, - { - "data": { - "_bin_mq_nl": 306783516, - "_flag_nc": 1, - "_l_read_name": 28, - "_n_cigar_op": 1, - "cigar": "100M", - "end": 107, - "length_on_ref": 100, - "seq_length": 100, - "start": 7, - }, - "flags": 0, + "fileOffset": 2501248, + }, + { + "fileOffset": 2501501, }, ] `; @@ -741,31 +499,20 @@ exports[`loads volvox-sorted.bam 1`] = ` `; exports[`long tag list 1`] = ` -[ - "seq", - "start", - "end", - "strand", - "score", - "qual", - "MQ", - "CIGAR", - "length_on_ref", - "template_length", - "AS", - "NM", - "XI", - "XS", - "XE", - "XR", - "MD", - "SV", - "QS", - "QE", - "CV", - "ID", - "KB", - "SB", - "seq_length", -] +{ + "AS": 1794, + "CV": 99.56829833984375, + "ID": 78190, + "KB": 96.84300231933594, + "MD": "37^G130^T6^T1^T17^T44T13^C118^G24^A2C24^G14G12^G70^A8^G25^T5^G10^G79^G6^T28^G22C15^C2^G22^A1^G56C15T28^G16^C18^G12^G18A58G2^C21^G15^C24^C49^G17^C9C1^A7G23^A106C8^G16C20^C17^G6C81^CC14^C12^C30^T3^C11C6^CC20^C17T19^T16^C81", + "NM": 286, + "QE": 1853, + "QS": 8, + "SB": 96.84300231933594, + "SV": 2, + "XE": 1794, + "XI": 0.8489000201225281, + "XR": 1845, + "XS": 0, +} `; diff --git a/test/bai.test.ts b/test/bai.test.ts index 3f8d9c9..288ee9c 100644 --- a/test/bai.test.ts +++ b/test/bai.test.ts @@ -42,18 +42,18 @@ test('gets features from volvox-sorted.bam', async () => { await ti.getHeader() const records = await ti.getRecordsForRange('ctgA', 0, 1000) expect(records.length).toEqual(131) - expect(records[0].get('start')).toEqual(2) - expect(records[0].get('end')).toEqual(102) - expect(records[0].get('cigar')).toEqual('100M') - expect(records[0].get('name')).toEqual('ctgA_3_555_0:0:0_2:0:0_102d') - expect(records[0].get('qual')).toEqual( + expect(records[0].start).toEqual(2) + expect(records[0].end).toEqual(102) + expect(records[0].CIGAR).toEqual('100M') + expect(records[0].name).toEqual('ctgA_3_555_0:0:0_2:0:0_102d') + expect(records[0].qual).toEqual( '17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17', ) - expect(records[0].get('md')).toEqual('100') - expect(records[0].getReadBases()).toEqual( + expect(records[0].tags.MD).toEqual('100') + expect(records[0].seq).toEqual( 'TTGTTGCGGAGTTGAACAACGGCATTAGGAACACTTCCGTCTCTCACTTTTATACGATTATGATTGGTTCTTTAGCCTTGGTTTAGATTGGTAGTAGTAG', ) - expect(records[0].get('seq')).toEqual( + expect(records[0].seq).toEqual( 'TTGTTGCGGAGTTGAACAACGGCATTAGGAACACTTCCGTCTCTCACTTTTATACGATTATGATTGGTTCTTTAGCCTTGGTTTAGATTGGTAGTAGTAG', ) }) @@ -125,9 +125,7 @@ test('BamFile with test_deletion_2_0.snps.bwa_align.sorted.grouped.bam', async ( const features = await b.getRecordsForRange('Chromosome', 17000, 18000) expect(features.length).toEqual(124) expect( - features.every( - feature => feature.get('seq_length') === feature.getReadBases().length, - ), + features.every(feature => feature.seq_length === feature.seq.length), ).toBeTruthy() }) @@ -158,10 +156,10 @@ test('BamFile with B tags', async () => { const features = await b.getRecordsForRange('chr1', 980654, 981663) // ZC:B:i,364,359,1,0 ZD:B:f,0.01,0.02,0.03 ZE:B:c,0,1,2,3 ZK:B:s,45,46,47 - const ret = features[1].get('ZD').split(',') - expect(features[1].get('ZC')).toEqual('364,359,1,0') - expect(features[1].get('ZE')).toEqual('0,1,2,3') - expect(features[1].get('ZK')).toEqual('45,46,47') + const ret = (features[1].tags.ZD as string).split(',') + expect(features[1].tags.ZC).toEqual('364,359,1,0') + expect(features[1].tags.ZE).toEqual('0,1,2,3') + expect(features[1].tags.ZK).toEqual('45,46,47') expect(+ret[0]).toBeCloseTo(0.01) expect(+ret[1]).toBeCloseTo(0.02) expect(+ret[2]).toBeCloseTo(0.03) @@ -174,8 +172,8 @@ test('paired ends', async () => { const features = await b.getRecordsForRange('20', 62500, 64500) const f = features[0] - expect(f._next_refid()).toEqual(19) - expect(f._next_pos()).toEqual(62352) + expect(f.next_refid).toEqual(19) + expect(f.next_pos).toEqual(62352) }) test('read as pairs', async () => { const b = new BamFile({ bamPath: 'test/data/paired.bam' }) @@ -188,12 +186,12 @@ test('read as pairs', async () => { viewAsPairs: true, }) const features2 = await p.getRecordsForRange('20', 0, 70000) - expect(features.map(f => f.get('name')).sort()).toEqual( - features2.map(f => f.get('name')).sort(), + expect(features.map(f => f.name).sort()).toEqual( + features2.map(f => f.name).sort(), ) const f = features[features.length - 1] const f2 = features2[features2.length - 1] - expect(f.get('start')).toEqual(f2.get('start')) + expect(f.start).toEqual(f2.start) }) test('test pair orientations', async () => { @@ -209,18 +207,18 @@ test('test pair orientations', async () => { const b10 = new FakeRecord(false, 'F', 'R', -100) const b11 = new FakeRecord(false, 'R', 'R', -100) const b12 = new FakeRecord(false, 'R', 'F', -100) - expect(b1.getPairOrientation()).toEqual('F1F2') - expect(b2.getPairOrientation()).toEqual('F1R2') - expect(b3.getPairOrientation()).toEqual('R1R2') - expect(b4.getPairOrientation()).toEqual('R1F2') - expect(b5.getPairOrientation()).toEqual('F2F1') - expect(b6.getPairOrientation()).toEqual('F2R1') - expect(b7.getPairOrientation()).toEqual('R2R1') - expect(b8.getPairOrientation()).toEqual('R2F1') - expect(b9.getPairOrientation()).toEqual('F1F2') - expect(b10.getPairOrientation()).toEqual('R1F2') - expect(b11.getPairOrientation()).toEqual('R1R2') - expect(b12.getPairOrientation()).toEqual('F1R2') + expect(b1.pair_orientation).toEqual('F1F2') + expect(b2.pair_orientation).toEqual('F1R2') + expect(b3.pair_orientation).toEqual('R1R2') + expect(b4.pair_orientation).toEqual('R1F2') + expect(b5.pair_orientation).toEqual('F2F1') + expect(b6.pair_orientation).toEqual('F2R1') + expect(b7.pair_orientation).toEqual('R2R1') + expect(b8.pair_orientation).toEqual('R2F1') + expect(b9.pair_orientation).toEqual('F1F2') + expect(b10.pair_orientation).toEqual('R1F2') + expect(b11.pair_orientation).toEqual('R1R2') + expect(b12.pair_orientation).toEqual('F1R2') }) test('SAM spec pdf', async () => { @@ -229,8 +227,8 @@ test('SAM spec pdf', async () => { const features = await b.getRecordsForRange('ref', 1, 100) expect(features.length).toEqual(6) - expect(features[2].get('sa')).toEqual('ref,29,-,6H5M,17,0;') - expect(features[4].get('sa')).toEqual('ref,9,+,5S6M,30,1;') + expect(features[2].tags.SA).toEqual('ref,29,-,6H5M,17,0;') + expect(features[4].tags.SA).toEqual('ref,9,+,5S6M,30,1;') }) test('trigger range out of bounds file', async () => { const b = new BamFile({ bamPath: 'test/data/cho.bam' }) @@ -257,7 +255,7 @@ test('unique id for duplicate features', async () => { const ti = new BamFile({ bamPath: 'test/data/exact_duplicate.bam' }) await ti.getHeader() const ret = await ti.getRecordsForRange('ctgA', 0, 1000) - expect(ret[0].id() !== ret[1].id()).toBeTruthy() + expect(ret[0].id !== ret[1].id).toBeTruthy() }) test('usage of the chr22 ultralong nanopore', async () => { @@ -266,17 +264,17 @@ test('usage of the chr22 ultralong nanopore', async () => { const ret1 = await ti.getRecordsForRange('22', 16559999, 16564499) const ret2 = await ti.getRecordsForRange('22', 16564499, 16564999) const [r1, r2] = [ret1, ret2].map(x => - x.find(k => k.get('name') === '3d509937-5c54-46d7-8dec-c49c7165d2d5'), + x.find(k => k.name === '3d509937-5c54-46d7-8dec-c49c7165d2d5'), ) - expect(r1?.getReadBases()).toEqual(r2?.getReadBases()) - expect(r1?.getReadBases()).toBe( + expect(r1?.seq).toEqual(r2?.seq) + expect(r1?.seq).toBe( 'TCTTCAGACCCTCGAAACAGTGTTCTGAAATCCTATGGCAGGGAACAACAGAACCCAGCCACTGTGTGCTGGAATCCTGTCTGAGGACAAACATTCAAACACTCATGAAAGTGTTCTGGAATCTTATGTGAGTGATAAGCAATCAGAAACCAGCAGCGGTGCTCTGTAATCCTTTGTGAGGACAAACAGTACACAGAGCAAGTTCTGGAGTTCTATGTGAGGGACAAACTCTCATGACAGCAGCAGTGTTCTGGAATCACTTGTGAGGGCCAAACACTCAGACTTATGCAGCAGTATTTACAGATCTTATGTGTGATGGAAAACACTCTGAACCCAGCAGCAGTGTTCTGGAATCCTATATGAGGAAAAACTCAGAACCTGCAGCAGTGTTCTGGAATCCTTAGTGAGGAGGTATTCAGAACCTCATATCAGTGTTATGGAATCGTATGTGAGGACAAACACTCTGAAACCAGCAGCAGTGTTCTGGAATCCCATGTGAGAGACAAACACGAGAATCCAGCAGCAGTATTCTGGAATCCTATGTGTGAAAACACCCAGAAACCAGCAGCGTAGTACTGGAAGGAAATCTTTGTTAGGGGCTAACATTCAGACACAAGCTGTATTCTGGAATCTATGTGAGGACAAACACTCCTATCAGTAGCAATGTTCTGCAATTCTTTAGCAGCAGACAACATCTTCAGGCCCTCATGCAGCAGTTTCAAAAATTCCACAAGAGTGAGAGATTAAACACTCCAGAACCCAGCAGAAATGCAGGGATCTATGTGAGGGCAAATACTTGGAATCCAGCAGCACTGTTCTTGAAACCTATGTGAGGGACAAGCACTCACAACAGCCACTGTGTACCAGAATCCTATTTGATTGTCAAACACTTCAGACCCTAGTAGAGGAGTGTTCTGGAATCCCTATGTGAAGGACAAACTCTAAATAACCAGCATAGCAGTGCTCTGGAATCTTTGGGAGAGAAAGCATCAGACCCTAGCAGTGTTCTGGGATCCTATGTGAGGGAAAAACATTCCAGACCCGCATAGCAGTGTTTGGAATCTATACGAGTGACAAACACTCAGAACCCACCAGCAGTGTTCTGAATCTTTTTGTGAGGTAAAAACACTCAGACCCTCAAAGCAGTGTTCTGGAATCCTGCGTGATGGAAAAACATTCAGACGTAGCTGTGTTCTGGAATCCTATGTGAGGGAGAAACATTGTGACCCTCATGTAGCATTGTTCTGGAATCCAATATGAGGGACAAACACTCAGAAGCCAGCAGCTGTATTCTGGAATGCCATATTGAGAAAAGACTCCAGAACCCAACAGCAGTGTTCTGGAGATCTATCAAGGAAATAACCCTAGAGATTGGAGCACTGTACTGGAAGTCTTATATTAGGGACACATATTCAGACACTCGTAGAAGTGTTCTGGAATACTATGTGAAAGGACAAACACTAAGAAAACAGCAGCAGGGCTTTGGAATCCTTTGTGAGGACAAAAAAACAGAACCCATCAGCAGTGTTCTGAGAATCATTGTGAGAAAAATGTTTCTAGGTCCTATTAACAGTGTTCTGGAGATCCTATGTGAGGTAAACATTCAGATCCCTCATAGCAGTGGTCTGGAATCGTATGTGAGAGACAAACCCTCACAACCCAGCAGCAGTGTTCTGCAATCCCTATGTGAGCGACGAACATTGAGAACTTCGTAGCAGTGTTCTGATATTCTATGTAGAGCAAACACTCACAACCCGGCAGCACTGCTCTGGAATCGTATGTGAGGACAACAACAGAACCCAGCAGCCGTGTTCTGGAAACCTCGTGAGGGACAAAATCTCAGAGCTCAGCAGCAGTGTTCTGCAATCCTATGTGAGTGACAAATACTCAGAACCCAGCAGCAGTGTTCTGGAATCTTTGTGAGGACAAACACTAGAACCCAGCAGCAGTGTTCTAGAGTCCTTTGTGAGGACAAACATTCAGAAACTCTCTTCCAGTGTTCTGGAATCTTAGGTGAGGGACAAACACACTGAACCCAGCAGCTGTTTTGGAATCCCATGTGAGGCAGAAACACTCAGAACTCAGCAGTGTTCTGGAATCTATGTGAGTGAAAAACACTCAGGAGCCAACAGCAGTGTTCACAGAATCTTTGTGGGCAAACCTTCAAGACCCTAGAATCAGTGTTCTGGAATCCTATGTGATGAACAAACACTCAGAACCCAACAGCAGTGTTTTTGATTCCTTTGTTTTGGAGAAACATTCAGACCATTGTAGCACTGTTCCACTATTCTATGTGAGGGACAAACTCTCAGAACCCAGTAGCAGTGCTAAGTCCTATGTGAGGACAAACACTCAGAACCCAGCAGCAGGGTTCTGGAATCCTATGTGAGGGTCAAGCACTCAGAGGCAGCAGCAGTGTTCTGGAATCCCTATGTGAGGGCTTACTAAGAACCCAGTCACTGTGTGCTGGAATCCTATGTGGGAGAAACATTAGAGACAGTCACTGTGTGCTGGAATCCTATCTCAAGGACAAACATTCAGACCATTGTAGCACTGTTCCGCTATCCCTAGCGAGGGACAAACTCTCAGAACCCAGTAGCAGTGCTCTAGGAATCCTATGTGAGGACAGAAACACTGAACCCAGCAGCAGCAGGAATACTGGAATCCTATGTGAGGTCAAACACTCAGAAGGCAGCAGCAGTATTCTGGAATACATGGCAGGAGAAACATTCAGAACCCAGTGCTGTGTGCTGGAATCCTATGTGAGGGGAGAAACACTCACAACTCAGTCACTATGTGCTGGAATCCTATCTGAGGACAAACATTCAGACATGTAGAAGTGTCCTGGAATCCTATGAGGGACAAACACTGAGAACCCAGCAGCAGAGTTCTAGAATTCTTCGTGAAGACAAACATTCAGACACTCGAAGCAGTGTCCTAGAATCTATGTGAGGACAAACACTTCTAGAACCCAGCAGAATTGTTCTGGAATCCTTTGTGATGGATGAGCATTTGAGCCCTCGTGGCAGTGTTCTGGAAACCTAAGTGAGGGCAAACACTCAGTTGTAGCAGTGTTCTGGAATCCTATGTGACTGACAAACACTCAGAACCCTGAAGCAATGTTATGAAATCCTGTGTGAGTGCAAACACTCAGAACCCACCATCAATGCTCTGCAATCCTATGTGAGGAAAGAAACACTCAGAAACCTGCAGCAGTGTTCTGGAATCTATATATGGGTCAATAATTCAGACCATCATAGCACTGTTCTGGAATGCTCTGTGAGGACAAACATTCAGAAACTTGTAGCAGAGTTCTGGAATCTATGTGAGGGAGAAACCCTCAGAACCTAGCAGTAGTGTTCTGGAATCCTTATGTGAGATAACACTCAAGACCAGCCGCAGTGTTCTGGAATGCTATGTGAGGACAAACACTCAAAACCAAGCAGCAGGATTCTGTTATCTACCATGAGACAAACACTCGAACCCAGCAGAACTGTTATGGAATCTATGTGAGGACAAACACTCACAAACAAGCAGCTTTTGGAATCCCTATGTGAGGAGAAATCTTCAGAACCTAGCAGCAGTGTTCTGGAATCGTATGTGTGGACTTCAGCACACTCAGAACCCAGCAGCATGTTGAGAATGCTATGTGAGGGAGAAACACACAAAACCCACCAGCAGTGTTCTGGTTTAATATATGCGGGACAAACACACAGAACCCAGCAGAAGTGTTCTGTAATCCCATGTGAGGGTCAAACACTCACAAACCAGCAGCAATGTTTTGGAGTCTCTTTGTGAGGGACAAACATTAAACCTCAATAAAGTGCTCTGCAATCTATCAGCGAGGAACAACACTCTACAGGCCCAGCAGCAATGTTTTCGAATCCCATGAAAGGGACAAACACTCAGAACTTCGGCAGCATTTTCTGGAATCCTATGGTGACAAACTCTCAGAACACAGCAGCGGTGTTCTAGAATCACTGTAGGAGACAAACATTCAGAATGATCATAACAGTGTTCTGGTATCTCATGTGAGGACAAACACTCGGAAACCAGCAGCAGTGCTCTGAATTCTTGCAGGACAAACAAACCGAAGAGGTTCTGGAATTACTGTAAAGGACCAAGCACTGAGAACCCAGGAGCAGCGTTCTGGAATCCCATGTGAGGGACAAACGCTCAGAACCCAACAGCAGTGTTCTGTAATCTAATTGAGGACAGACACTCACAGCCCAGCATTGTTCTAGATTCGCTGTGAGGAACCAAGCATTTCAGACCCTCGGCAGTGTTCTGGAATGTTATGTGAGGGACAACCCTCTGAACCCAGCAGGGTTCTGGAATCAGTGAGTGACAAACACTCAAAACCCAGCAGCAGTGTTCCGGAATCCTTTGTGAGGACAAGCTTTCCAAACCTCGAAGCATTGTTATGGAGTCACCTTAGCAACGAGGAACACACTCAGAATCCCGCGCGCAGCGATATGATCTTGTGATGGACAAACATCCAGACACTCTTAGCAGTGTTCTGGAACGCTATGTGATGATTGTAAACCTACAGGCCAGGCAGTGTTCTGGAATCCTCTGTGAGGACAAACACTCAGAACCCAGTAGTAGTGTTCTGGAATCTAATGCATGAGGACAAACACACTAAGAACCCAAGGAGCAGTGTTCTGCAATCTATGAGGGACAAACACTACAGCCCACCAGCATGGCAGTGTTCTAGAATCCTTTGTGAGGAAAAACATTCAGACCATCGAATCAGTGTTCTGGAATCTATATGTGGGGAGACAAACGCTCAGAACCCAGCAGCAGTTTTCTGATCCTTTTCAGACAGACAAACCTTTAGACGATCTTAGCAGTGTTCTGTTATCTATGTAAGGGACAAACACTCAGAACCCAGCAGCAGTGCTCTGGATTCCTTTGTGGGGACGAGCACTTAGAACCCAGGAGCAGTGTTCTGGAATCCTATGTGAGGACAAACACTCAGAATCCAGCAGCAGTGTTCTGGAATCTTAGAGTGAGGACAGACACTCACAACCCAGCAGCAGTGTTCTAGAATCCTTTGTGAGGGACAAACAGCATCAGACCACAGAAGCAGTGTTTCTGGAATCTATGTGAGAGCAAACACTCAGAGACACAGCATCAGTGTTTCACAGAATCCTATCTTGAGTGACAAACTAGAACCAGAACAGTATTCATCCATTGTAGAGGACAAACATTCTGTCTCAGCGAAGCATTTTTCTGGATTCCTATGCTGAGGGACACACTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATGTGTGGGACAAACACTCAGAAACCAGCAGCAGTGTTCTGGAATCCTACCGTGAGGGACAAACACTCAGAACACAGCTACTCTGTACTGGGAATCTATCTGAGTATTGACAACATTCAGACTCTTGCAGAAGTGTTCTGGAATCCTATGTGATGGACAAACACTAACAAACTAGCAGCAGCGCTCTGGAATTCTTTGTGATACAGACGTGTTCAAGGAGCTCTTTAACAGTGTTCTGGAATCGTATGTGAGTACAAACACTCAAAACTCAGCAGCAGTGTTCTGGAATTCTATTTGAGGACAAACTCTCAGAACCCAGCAGCCATGCTGTGAAATGATATGTGGACAGACACTCAGAACCCAACAGCAGAGTTCTGGTATCTAAGTGAGGAACAAACACTCAGAACCCTGCAGAAGTATTCTGGAATCATGTGAGGGACAAACACTCAAAATCCAAGAAGGCAGTGTTCTGGAATCCTATGTGAGGACAAACACTCACACCCTCGAAGTGTTCTGGAATCTATGTGAAGGACAAACACTCAGAACCCAGTAGCAGTGTTCTGGAATCTGGTGTGAAGGACAAGCGTTCAGACTTGCTCGTAGCAGTGATATGGAGTTGCTGTAGAGACAAGCATTCCAGACACACTTATGTTCTGGAATCCTAAGTGAGAGAAACCCTCAAAAACAAGCTGCAGTGTTCTAGGAAATCTATGAAAGGACAATCCCTCAGTATCGAGGCAGTGTTTGGAATCCTATCTGAGGGACAAACACTCAGAACTCAGCAGCAGTGTTCTGGAATCCTGTGTGAAGGAGAAACACTAGAACCCAACAGCAGTGTTCTGATTCCCGAAGTGTGGGACAATCACTCAAAACCCAGCCACTGTGTTCTGGAATCCTATCTGAGGTCAATGTAGGAACCTCGAGGAAGAGTTCTGGAATCCTATGTGAGGGAAAACACTCTGAAACCAGCAGAAGTGTTCTGGAATCCTTTGTGAGGGACAAACACTGAGAAATCAGAGCCGTGTTCTGGCATCCTATGTAGCGACAAACACTCTGAACCCAGCAGCAGTGTTTTGAATCACGTGAGCGACAAACACTCAGAACCCAAAGCAGTGTTCTGGAATACTTTTTGAGGACAATCATTCAGAACCTTGTAGCTGTGTTTCTGGAATCATATGTGAGGGCCAGCGAACACTTTGAACCCAGCTGCAGTGTTTTTGATTCCCCTGTGAAGGGAAAAACACTCAGGGCAGCAGCAGTGTTCTAGAATCAGCGTAATGGGACTAACATTCAGACCCTCAACGGTAACTTTTGGTCTATGTGAGGGACAAACACTGAGAACCCAACTGCAGTATTCTGCAATCCTTTGTGACAGAGAAACACTCAGACCATCGTAGCAGTGTTCTGGCATCCTATGTGCAGGAAAAACACTCCAAGAAACCAGCATCAGTGCTCTGGATTCCTTTGTGAGGGACAAACAAACAGAACCAGCAGCAGAGTTCTGGAATCCTATGTTGAGGACAAACACTCCAGAACCCATCAGCAGTGGTCAGAAATAATTTGAGGACAAACATTCAGAACCTAGTAGCAGTGTTCTGGAATAGTATGTGAGGACAAACACTCTAGGCAAACTGGCAGTCTTTTGGAATCACACGTGAGGGACAAAAACTCCAGAACCAAGCAGCAATGTTCTGAATACCATGTGAGAGACAACACTCAGAGCCCAGCAGCAGTGTTCTGGAATCTTATTTGAGTGACAAACACTGAGCTTAGCAGCAGAGTATTTACAGAGTCCTTTATGAGAACAAACTTCAGACACGCAGTCTTAAGATCCTATGTGAGAGACAAACCCTCAGAACCTTGAAGCAATGTTCTGCAATCCTTTTTGTTGGACAAACATTCCAGACCCTCGTAGCAGTGTTCCAGAATCCTATGTGGCGAAGGAACAAACACTCAGAACCCAGCAGTAGTGTTCGGGAATCCTATGGGAGGGACAACCATTTCCAGATCCAGCAGCAGTGTTGTGTAGTCTGTGAGGACAAACACTTTCAGAACCCAGCAGCTGTGTTCTGAAACCTATGTGAGGAAAATCATGAACCCAGCGTGTTGTGTTCTGGAATCCTATCTGAGGGAGAAATATTCAAACACTGTAGAAGAGTTCTGGAATCCTATGTGAGGGAAAAACCCTCAGAAGCCAGCAGTGCTCTGGAATCCTTTGAGCAAACAAATCAGAACCCTAGAAGCAGTGTTCTTGGATCTTTCCAGCTAGGAAAAACAGCTTCAAGACCCTCATAATAGTATTTTGGAATCCTATCTGAGGGACAACACTCAGACCAGCAGCTGTGTTCTGGAATCCTATATTATTAAGATAAACACTTAGAACCCAGCACAATATTCTGGAATACTACGTGAGCGACAAACTTTCAGAAGTTTGTAGCAGTATTCTACAGAATTCTATGTGAGGGACAAACACACAAGGCCAACAACTTGATAAGTGGTTCCTAAGTGAGGACAAACATTCAGAACCCAGCAGCAGTGTTCTGGTATCCTATGTGAGGACAAACACTCAGAACCCAGCAGCAGTGTTCTACAGAAATCCCTTTGTGAAGAGAAAAATGGCAGACCCTGCGCAGTGTTCTACTGGAATCCTATGTGATAGAAAAGTTCATACCCTCATAGCAGTGTTCTGGGATCCTATATGAGGTTGGCTTACAGAACCCACCAGCAGCGCTCGGAAACCACACTCTCTAGTGTTCTTGAATCCCATGTGAGAGAAACCTTCATACCCTCGTAGCATTGTTCTGGAATCAATATGAGGACAAACACTCAGAACCAGCCCAACATTCTGGAACCTTTATTGAGGATAAACATTCAGACCGTCATAGCAGTGTGCTGGAATCCTATGTGAGGGACAAATGCTCGAACCCAGCAGCAGTGGACTGGAGTCCTATGTGAGGACAGTACTCTGAGCTTAGCAGCAGTGTTCTGGAATCCTCTGTGAGGGACAAACTTTCACAACTGGCAGTGTTCTGGAGGCTTGTGAGTACAAACATTCAGAACCCAGCAGTGTTCTGGAAGTCCTTTGTGAGAACATTGTTGGAACCTCATAGCAATGTTCAGGGAGTAGGCGTACGTAAGGGACAAACACTCAGGAACACAGCAGCAGTGTTCTGCAATCCCATATGGACAAACACTCGAACCCAGCTGCAATGTTCTGTAATCCCTGTTTGACGACAAAGGCTCAGAAACCAGCAGCACTGTTCAAGAATCCTTTTTTGTGTGACAAACATTCTGAACCTCTAAAAGCAGTGTTCTGGAATCCTACTGTGAGGACAAACACCACAATCCCTGCAGCAGTTTTCTGGAATCCTTTGTGATGGACAAACATATTCAGACCCTCGTAGCAGTTTTCAGAATCCTATGTGTGGGACAAACACTCAGAACACAGCAACAGTGGTCTAGAATCCTTTGTGTGGGACAAAGATTCAGAACCCAGCAGCAGTGTTCTGGAATCCTATCAGGTACAAACACTCAGAAACAGTACAGCTTGTACTTTTGGATTCCACTGTGTACTGGAATCCTATCTGAAGGAAAAACATTCCGAACTTCGTAGAAGTTTTGGAATCCTGTGTGACGGACAAACACTAGAAATCTGCAGCAGTGTTCTAGAATCCTTTCTGAGTGACAAACAAACAGAACCCAGGAGCAGTGTGCTGCTATCCTTTTGAGGAAAAACTTTCACATCCTTATAGCAGTGTTCTGAAACCTATGTGAGGAAAGAAATTCAGACCCTCGTAGCAGTGCTCTGGAATCCTATATGAGGACAAACACTCAGAACCCAGCAGCAGTCTTCTGGAATCCTTTGGAGGAAAAACATTCACACCCTCGTAAAAGTGTTCTGGAATCTGTGAAGGAAAACATTCAGACCCTCGTAGCATTGTTCTGGAATCTAATATGAGGACAAACAGTCAGAACCCAGTTGCAGTGTTCTGGAATACTATGTGAGTGACAACACTCAGAACCCAGGAACTGGGTTCTGGAATTGTCTGTGCGGGCCAGTCATTCAGAACCTCATTATGATATTTCTGAGTCTATGTGAGGGAAAAACACTGTGATCTCAGCAGCAGTGTTCTGGAATCTATGTGAGGGCGAAACCTCTGACCAGCAGTCGTGTTCTGGAATCCCATGTGAGACAAACACTGAGATCTAGCAGCCTGTTCTGAATCCTATGTGAGTACAAACTCTCAGAACCCAGCAGCAGTGTTATGGAGTCCTTTGTGAGAGACAAACATTCAGACCCTCGTAGCAGTGTTCTGGAATCTTGTGAGGCACAAACACTCACAGCAGTAGACCCTCGTAGGAGTGTTCTGGAATCTACGTAAGGGACAAACACTCAGAACTCAGTGATTATTTTCTTGAAAGCTAAGTGAGTACAAACACTCGAAACCAGCAGTGTTCTGGGAATCTTGGTGAGGACTAACACTCCAGAACCCAACAGCATGTTCTGGGAGTATATGTGAAACAAGAACTCAAGAACTCAAACAGTGTTCTGGAATCGTATGTGAGGAACAAGCAATCAGGGCCAGCAGCAGCAGCCATGGAATCCTATGTGAGGGACAAACACTCAAACCCAGCCACTGTGTTCTGGAAACCTATCTAGTGATGACAAACATTCAGACACTCGTGGAAGTGTTCTGGAATCCTCGTGAGAGGCGGCTCAGAAACCAGCATAGGTGTTCTGGAATCCTTTTTGTGGAGAAACAAACAGAACCCAGCAGCAGTCTTCTGGAATCTATGTGAGGGAAAATATTTAGAACCCCGTAGCAGTGAAATACCTGGAATTCTATGAGGACACAACACACAGGACCCAGCAGCAGTGTTCTGGAACCTTATGTGATGGACAAACACTGAGAACACAACAGCAGTGTTCTGAAATCACATGTCAGCAGAAAAACATTCAGAAATTCATAGCAGTGTTCTGGAATCCTTTGTGACAGACAACACTCAGACTGTCGTAGCAGTGTTCTGATTTCCCATGAGAACAAACACAGCTAACATGTCTCAAAATCTCATGGGATCTATGCAAGGAACAACACAAGAGCACCCACACTATGTTCTTAAATACTAAAGAAACAACTTATTCAAACACTGGCCAAAGTATTCTAGAATCTATGTGAGGATAAACACTCAGAAACCAGCAGCAGTATTCTGGAATCCTTTGTGAGGGAAAAACATTAGACTCACGCATTCTTTAAAAATCTCTGTGTGAGGGACAAACCGTCTGAACTGAGCAGCAGTGTTCTGCAATCACTCTTGAGAGACAAACACTCACAGACAGCAGCAGTGTTCTGAAATCTAAATGAGGAACAAACCCTCAGAGACAGCAGCAGTGTTCTGAGTCCTTGTGGGGTACAACATTCAGAACCTCGAAGCAGTGTTCTGGAATCTATTTGAGGACAAACTCACAGAACCCAGCAGCAGTATTCTGGAATCCCAAGTGAGGGACAAACACTCAGAAACCAGCAGCAGTGTGCTGGAATGCTTTGAGGACAACATTCAGACCTTCGAAGCAGTGTTCTGCAATCCTATGTGATTGACAACTCTCAGAACCTAGGAGCAATCTTCTGTAATCTGTTGTGATGGAGAAACATTCGGAACCTCTTCGCCAGTGTTCTGGAATCTAGGTGTGGGAGAAACACTCAGAATCCAGCAGCAATGTTGGAAGTCTCTGTGAGAAAACACTCAAGGCTCAGCAGCGTAGTGTTCTGGAATCCTATGTGACCAGACAAACACTCAGATCACTGCAGCAGGGGGTCTGAAATCCTATGTGAAGGATAAGCACTCAGAACCCAGGAGCAGCGTTCTGGAATCCTTTCTGAGGACAAACATTCAGAACCTCGTAACAGTGTTCTGGAATCTTATGTGAGGACAAACACTCAGAACCCAACTTGGCAGCATTGTTCTGGAATCTTAGATGTGGGACAAACACTCCAGAACCAGGCATTAACAGTTCTGGAGTCCCATGTGAGGACAAACACTCAGAACCCAACAGCAGTATTCTGGAATCCTATGTGAGTGACAAACACTCAGAATCCAGCAGCAGTGTTCTAGAATTCTTTGTGTGGGACAAGCTTCATGCCCTCAAAGCAGTACTCTGGAATCCTATGTGAGGGAGGAACAGTCACAACCCAGCAGCAGTGTTCAGGAATCCTTTGTGACTGGACAAACATTCAGACCGTCGGAGCAGTGTTCTGGAATCTAAGTGAGGACAAACTACTCAGAACCAAGCCACTGTGTTCTGGAATCCTTCTGAGGGACAAATATTCAGACACCGTGAGTGTTCTGGAATCTATGTGAGGACAAACACTCAGAAAACAGCAGCAGTGCTATGGAGACCTTTGTGAGGAGCAGCAAACACAGCCAGAGTTTTATTCTGTAACCTTTTTGAGAGAAAACATTCAGAACCCCGTAGCAGTGTTCTGGAATCTATGTAGGGGACAAACATTCAGAACCCAGCAGCCGTGTTTTGGAATCCTGAGTGAAGACAAAGATTCAGAACTTCATAGCACTGTTCTGGAATCCCAGCTGAGACAGAAACACTCAGAACCCAGCAGTGTTCTAGAATCTATGTGAAGACAAACCCTCAGAACCCAACAGCAGTGTTCTGGAATCCATGTGAGGGACAAACACTCAGTACCCAACCACTGTGTTCTGGAATCCTATATGAAAAGGGACAAACATTCAGACAATCGTAGAAGTGTTCTGGAATCCTATATGAGGACAACACTCAGAAACCACCAGCAGTGCTCTGGAATCTTTTGTGAGGACAAAAATCTGAACCCAGCAGCACTCATTATTCTCTAATCATTTTAGGGACAAACGTTCAGAACCTCGTAGGAGGTTCTTGAATCTAAGTGAGGATAAAGCCCAGGCAGCAGCAGTGTTCTGGAATCTGCGTGAGTGACAAACACTCCGAACCCCGCAGGAATGTTCTTGAATCCTTTGTGAGGGACAAACATTCAAACCCTCGAAGCTATGGTGCTATGGAATCTATACATGAGGTACAAACAGTCATAACCCAGCAGAAATCTTCTGGAATCCTTGTTATGGACAAACATTGAGCCCTTGTAGCAGTGTTACGATCTAATGGAGGCACAAACACTCAGAACCCAGCAGCAGTGTTCTGGAATCTTATGTGAGGGACAAACACTGCAATCCAGCAGAAGTGTTCTGGAATCCTATCTGAGGACATACACTCAGAACCCAGTAGCAGTATTCTGGAATTCTATGTGATGGTACACGCTCAGAAACCAACAGCTGTTTTCTGGAATCTTGTCCAGTGACAAATATTCAGACACTCGTGGAAGTGTTCTGGAATCCTATGTGAGGGATAAACACTCAGAAACTAGCAGCGGTGATCTGGAATCCTTTGTAGAGGCTCAACAGAACCCAGCAGCTGTGTTCTGGAATCTTTGTGAGGAAAAATATTTAGACCCTTGTAGCAGTGTTCTGGAATCTATGTGAGGGACAAACACTGATACAACCCAGCGGCAGTGTTCTGGACTCCTCTATGAAGTCAAACCCTCAGAACCCAGCAGCAGTTTTCTGAAATAAAATGTGAGCAACAAACATTCAGAATTTCGTAGCAGAGTTCTGGAATCCTAGCGAGTGACAAACACTCAGGGAAACCAGCAGCAGTGTTCTAGAATCCTTTCTGTGGGACAAACTTTCAGACGCTCAAAGCAGTGTTCTGGAATCCTATGTGATGGACAAACACTCCGATCCCATCAGCAATGTTCTGCAATCCTTTGTGATGGGCAAACATTCAGACCCTCGTAACAGATTTTGGAATCTAAGTGAGGGACAAACACTCCAGAACCCAGCAGCAAGCAGTGTTCTAGAATCCTATATGAAGAACAAACACTCACAACCCAGCAGCCAGTATTGCTAATCTGTTTGAGGGACAAACACTCCAGAACCCACTCACTGTGTACAGGAATCCTATCTACCATGGGCTAACACATTCAGACCCTCGTAGCAGTGTTCTGGAATCCTATGTGAGGAGAAACTCTAAAAAACCAACAGCAGTGCTCTGGAATCCTTTATGAGGGAAAACATTCAGACCTTTAGCAGTGTTCTGGAATCCTATGTGAGGGAAATATTTTCAGAGCCTCATAGCAATGTTTCTTAATCATATATGAGTGACAAACGCCAGAAACCAGCAGCAGTGTTCTGGAATCCCTTGAGAGGGAAAAACATTTACACCTTCATAACAGTGTTCTGGAATCCTTACTGTGGGAAAAATATTCAGACCCTCGTAACAGTGTTCTGGAATCCTATATGAGGGACAAACACTCAAAACCAGCAGCAGTGTTCTGGAATCTATAGCCAGAGAAGCGTACTCAGAGCTGTACAGTGTTCTGGAGTCTATGGAGTGACAAACTTTTGAAATTCGCTGGCAGTATTCTGGAATCTTATGTGAGGACAAACACACAGAACCCAGTAGCAGTGTTCTGGAATCTTATGTGAGTAACAAACACTCAGAATCCAGCAACAGTGTTCTGGAATCCTATGTGAGGACAAACACTCCAGAACTAGCAGCAGTGTTCTAGGAATACTTTGTGAGGAAAAACACTCAGAACACAGTAGTGTTCTGGTATCCACTATTATTATAGAATCCTATCTGAGACAAACATTCAGAACCTAATAGTAGAAATGTTGCAATTCTACGTGAGGGACAAATACTAAGAAATCTGCAGCAGTGCTCTGGAATCTATTGTGAAGGTCAAACAAATAGAACCCAGTAGCCTTGTTCTACAATACTTTATGAGGAAAAACTTTCAGACCCTCATGGTGGTCTGGAATCACACGTAGGAACAAACACTCAGAGACAGCAGCAGTGTTCTGTACTCCTTTGTGAGGACAACATTCAGTTCCTCAGAGCAGTATTTGGAATCCTATGCTTTGAATGACAAGCACTAAGAAACCATCAACAGTGTTCTGGAATCTATGCTGAATGACAAACCTAAGAAACCATCAGCAGTGTTCTGGAATCCTTTGTGAGTAGCTAAACATTCGACCCCCTTAGCAGGGTTCTGGAACTATGTGAGGACATTCAGACACTTAGCAGTGTTTTGGCGCCTTAGCAGTGTTTGGAAACCAATGTGAGGGCCAAACAGTCAGAACCCAGCATCAGTGTTCTGGAATACTTGGTAAGGGACAAGCATTCAGAAAATCTTATCAGTTTTCTGGAATCCCAACTGAGGAGAAACGCTCCAGAAAATATCTGCAGTGTTCTAGAATTCTATGTGAGGACAAACCCTCATTGCGAGCTGCAGTGTTCTGGATTCCCTAGGTGAGGGACAAACACTCCAGAACAAAGCAGCAGTGTTCACAGTCTCATAACGATGGACAAAAACTCAGAACCCAGCAGTGTTCTGATACCTATGGGAGGGACAAACACTCAGAACCCAGCCCCTGTGTTCTGGAATCCTATCTGAAGGACAAACATTCGGAGACTTGAAGAAGTTTTCTGGAATCTATGTGAAGGACAAACAGTCAGAAACCTGTAGCAATGTTCTGGAATCATTTGCAGGAACAAACACTCAAAACTCAAAAGCAGTATCCTGGAATCCTACGTGAGGCCCAAGCCTAAGAACCCAGCAGCAGTATTTTCGAATCCTTAATGAGTGACAAACAGTCCAGAAACTTGCAACATTATTTTAGGTTGCTGTCTCTAGTACAGAGTTCTGGCCAAGAACAAACGCCAGAACAACCACTGTATTTCACAGAATATTGCTCTGAGAAAAAATAGCCGAGCCTCGTAGAAATTATTTCACAGAATCCCTATGGTAACCAAATACTCGAAAACCGCTCAACAGTGCTCTGGAATCCTTTGTGATGGATAAATAAACAGAGCCCAGCAGCAGTGTTCTGGAATCCTTCGTGAGGACAAACATTCAGAACCTTGTAGCCGTGTTCTGGAATCGTATGTGAAGGGTCAAACACTTTGAACCAGCAGCTGTGTTCTGGAATCTCTATGTGAGGGACAGAAGCACTAGAACCCAGCAACAGTGTTCTGTAATCCTTACTAGTAGAGGACAAAGCACAAGAGCCTTAGCATTGTTCTGCAATCCTTTGTGTGGGGACAAAACACTCAGGCCCAGCAGCAGAGTTGAATCCCATGTGAGGGACAAACGTTCAGGCACTCAGAATAGTGTTTGGAATCCTATGTTAGGGACAAACACTCAGAAAACTGCAGCAGTGTTCTGGAATCACACGTGGGGATGTGACTGAATCCTGATAGCACTGTTGTGGAATGCTCTGTGAGGAACAAACAATCAGACCCTCATCAGCAGTGTTCACAATCCTATGTAAGTACAAACCCTCACAACTCAACTAACTTTCTGGAATTCTATGCGAGGACAAACTCAGAACCTAACAACTTGTTCTGGAATCATACGTAAGGTAATAACACTCAGAACCCTGCAGCAGTGTTCTGGAATGCTATGTAAGAGACAAACACAAAACAGAGCAGTAGTATTCTGGTATCCTATATGAGGTAAAAACACTCAGAGACAACAGAAGTGTTCTGAAATCTATGTCAGGCACAAACATTTAGAGCTCCCAGAAGTGTTCTGGAATATTATGTGAAGGACAAAAACTCAGAATCAGGTGCAGTATTCTGGAATCCTATGTGAGGGACAAACATTCAGACCCTCCTAGCAAGTGTTCTGGAATGCAATCTGTTGTAAAAACCCTCAGAACACAGAAGCAGTTGTCTGGAATCCTTTGTGATGAAGAAACTATTCCAGACCCTAGTAGCAGTGTTCTGGAATCTATGTGACGGACAAACCTTCAGAATCCAGCAATAGTGTACTGGAATCCTCTGTGAGGACATACACTCAGAACCCAGCAGTAGTGTTTTGGAATCCTTTGTGAGGACAAACCCTCAGAATCAGCAGTAGTGTTCTGGAATCCTCTGTGAGGGCCATACCCTCAGAACCAACCCGGTATTGTTCTGGAATCCTATGTCAGGAGGACAAACATTGAAACCAGCAGTTTTCTGGAATCCTATGTGAGGACAAACACTCAGAAACCAGCAGCAGTGTTCTACTGCAATCCCTATGTGAGGACAAACACTCTGGAAACCCAGCAGCAGTGTTCTAGAATCCTATGTGATGACAAACATTCAGAATTTTGTAGCAATGTTCTGCCATTCCATGTGAGTGACAAACACTCAGAAACCAGCAACAGCCTTCTAGAATCTATCGCAAGGAAAAACACTCAGAAGCCAGCAACAATGTTCTAGCATCCCTTGTGAGGGACAAACATTCAGAATCTCGTAGAAGTGCTCTGGAATCGCAAGTGAGGGAGAAACACACAGGCCCAGCAGCCCAATGTTTTGGAATCCTGTTTGAGCGACAAAGATACAGAACTCGTTGCAATGTTCTGGAATCCCATGTGAGGGACAAACACTGTGAGAATCCCAGCAGCAGTGTCTATGAGCTTATTACAGCTTACACATTTTTGTTACCCTTTTGCGCATTTTTATGTGCACACACACCAACCCACCCACCCACTTACACTATGTGAACAAACACTCAGAACCCAGCAGTGTTCTACAATCTATGTGAGGACAAACATTCAAGCTCATGTAGTGTTCTGCAATCCCTGTGTGAGGACAAACACTCAGAACCCAGCCACTGTGTTCTGGAATCTATCTGAGGACAAACATTCAGACACTTGGCAGAAGTGTTCACAGAATCCTATGAGGGTAAACACTCAGAAACAAGCAGCGGTGCTCTGGAGATGCCACAGAGGGACAAACAGAGCCCAGCAGTGTCCTGGAATCGAGGAAAATGGTGAGACCCTCGTCTCAGTTTTTACAATCCTATGTGAGGGAGAAACACTCAGAACTGGCAACAGTGTTCTAGAATCCATGTGAGAGACAAACACTGAGTTCTAGCAGCCCTGTTCTGGAATCCTATGTGAGTACAAACTCAGACACTCACGAAGCAGTGTTTGGGATCCCTATGTGAGGACCGGTCAGAACCTTGGCAGTCTTCTGATTCCCTAGAGTGGCTGTTCCGACCCTCGCTTGAGGATTCTGGAATCTATGTGAGGACAAACGCCAGAACCTACCCCTTAGTATTACAGAATCTTGAACAATACTCAAGGCGCGCAGGGTC', ) - expect(r1?.get('cigar')).toEqual(r2?.get('cigar')) - expect(r1?.get('cigar')).toBe( + expect(r1?.CIGAR).toEqual(r2?.CIGAR) + expect(r1?.CIGAR).toBe( '48M4D36M1D97M5D14M1D5M1D37M2D44M1D5M1I11M2I3M2D6M2I8M1D45M3D43M1D4M2D41M1D58M1D31M2D7M1D31M5I3M1D24M2D1M1D19M1D8M1D16M2D25M1I11M1I14M2I7M1D10M2I1M1I4M1I8M1I8M1I18M2D7M1D8M1D64M2D38M1I17M2I13M1I32M2I16M1D11M1D6M1D5M3D41M1I20M1D6M1D47M1I72M4D50M1I71M1I5M3D8M1I25M1I2M1D5M1D4M1I20M1D3M2D10M1I57M1I49M1D34M1I12M2D6M1I5M1I24M1I14M2D11M1I71M1I55M1D48M1D9M2D30M1D100M1D46M1D24M1I49M2D39M3D17M1D41M1I6M1D10M3D8M1I161M2D3M1D12M1D62M1D23M1I12M5D1M2I37M2D12M1D3M1I1M2D68M1I4M1D39M1I13M1D4M2I7M2D14M2I2M1I2M1I16M1D40M1D3M1D25M1D24M1I48M1D17M2D23M2D89M1D8M1D11M2I84M1D14M2D2M2D75M1D49M1I37M1D56M1D38M1D47M1I9M2D2M1D8M1I3M2D30M1D38M1D3M1I16M1D25M1D8M1D28M4D6M1I9M1D47M1D5M3I1M1I26M1D149M1I20M2D7M1I3M1D14M1D4M2I20M2I49M1I9M1D17M3D40M1I1M2D20M1I33M1D39M4D18M2D3M1D2M1D11M2D3M1I8M1I83M1D8M1D18M3D18M1I1M2D9M1I6M1I12M2D29M1D13M3D18M3D53M1D38M2I6M3I6M2D17M1I12M1D1M1D3M2D56M3I1M1D11M2D5M2D24M1D44M2I3M1D6M2I13M1I20M3D19M1D3M3I4M2I26M1D39M1I11M1I32M2D2M1I48M1D54M1D49M1D42M1I5M1D59M2I18M1I9M1D8M1D15M1I14M1I3M1I11M1I14M3D4M1D3M1D11M4D9M1I2M1D18M1I26M1I6M2D86M1I39M1I14M3I95M2D6M2I5M2I3M1D3M1I27M1D47M1D45M3D38M1D48M2D26M1I4M1I24M1D20M1D2M2D13M1D73M2I23M1I1M2D3M1D13M1I12M4D18M2D35M1I10M1D23M2D7M1D77M1D83M1D4M1D3M1D41M1D64M1D25M1D31M1D8M2D27M1D27M1D29M1I22M3I45M1I14M2D23M2I1M3D2M1I22M1D3M1D4M2I5M1D120M2I52M1D42M1I31M2D3M1D47M1D59M1I22M1D18M1D57M2D14M1I3M2I16M1D6M1D6M2D14M2D71M1I35M4I59M1I30M3D5M1D10M2I23M1D13M1D9M2D1M1D7M2I2M1D44M1D46M3D21M2D3M3D6M1I11M1I24M2I4M1D9M2I3M1I40M1D10M2D28M2I83M2I25M2D4M1I9M1D5M2I4M1D11M1D47M1D35M3I3M1I12M1I6M1D10M1I1M3D8M3I23M2D41M2I1M4D26M1D15M4D23M2D37M1D8M1D16M1D4M2I5M3D18M1D59M1D35M1D4M1D61M2D1M2D12M1D5M1D5M1D18M3D16M1I11M5D5M2I23M1I5M3I23M1I32M3D12M1D25M1I9M1D40M1I28M2I23M1I4M1D56M2I19M1D110M2D25M2I4M1D5M3I63M2D27M1D82M1D33M1D13M1D47M1D43M1D3M1D39M3D8M1D44M1D115M3I6M1D1M1D4M1D4M1D47M1D17M1D6M2D28M2D17M1D7M1D8M1D13M1D88M2D20M8D6M80D26M1D31M1I4M1D20M1D12M1D5M3D12M1I5M1D8M1D11M1I15M1D31M1I8M1D2M1D38M1D14M1I62M3I3M1D41M1D10M1I39M1D38M1D11M1D26M3I1M1I12M2D3M1D5M1I92M1I93M3D8M5D8M4D12M39D2M1I6M1D13M1D8M1I6M2D22M3D6M1D3M2I30M1D8M1D59M1D3M2D4M1D4M3D6M3I4M1I69M2D1M1I23M1D24M1I1M2D15M1D6M1D11M1D33M1D8M1D88M2D5M1D4M1D114M1I14M1D41M2D13M2D2M1D19M2I24M1I27M1I69M1D47M1D20M5I39M1I17M1I19M1D104M1D86M1I39M1D8M1D8M1I56M1D4M1D2M1D12M1D8M1D49M1I11M1D68M1D55M1D67M3D17M1D8M1D38M1D55M3I49M1D46M1D26M4I11M1D35M1D10M1D8M1D4M1D9M3D21M1D82M1I1M2I12M1D4M2I45M1D20M1D20M2D2M1D68M1D35M1D49M1D138M1I7M5D37M1D38M1D23M2I123M1D18M2I163M1D5M1D20M1I67M1I5M1I2M2D3M1D20M1I34M3I5M1D3M2I41M1D50M1D16M2D56M1I4M1D24M1D145M1D25M1D4M1I19M5D5M2I14M1D4M1D15M1D9M1I26M1D95M1D11M1I5M1D17M1I31M3D24M1D2M2I16M2D17M3I12M2D111M1D22M3D18M1D19M1I1M2D29M1D30M1D12M3I42M1D5M1I12M1D40M1I11M1D24M2D8M1D13M2I14M1I1M1I10M1D113M1D11M1I36M1D15M1D22M1I21M1I21M1I10M1D23M3D16M1D96M1D53M1D59M1D50M1I29M2D3M18D8M1D11M2I2M8D2M3D8M1D5M2D10M1I4M1I9M1I6M1D9M1D18M2I4M1I6M1I6M3D4M1I16M1I76M1D46M1I40M1I14M1I2M1I4M1D30M2I1M1I2M1I2M1D7M1I3M1D7M1I3M3D23M1I5M1I10M1D16M3D43M1D67M3D3M1I6M1D56M1I10M2D1M1I10M1D22M2D25M1D7M2D16M1D76M2D55M1I1M2D20M1D23M1D50M1D55M1I74M1I4M1I3M1I27M1D56M1D47M1D17M1D50M1I28M2I11M2D5M3D26M1D31M3I7M1I9M1D14M2I33M1D86M1D119M1D9M2I41M1D40M2I7M1I13M1D2M1I3M4I3M73I6M3D18M3D17M1D8M1D12M2D8M1D15M1I9M1D38M1D8M1D20M1I12M1I10M2D4M1D35M1I2M1I2M2D20M3D18M6D1M1D7M1I1M2D22M1D32M1D21M1D23M1D32M1D7M2D10M2I12M1D6M1I10M4D17M2D10M1D6M3D2M1D6M2D2M1I30M1D8M1D10M1D11M46S', ) - expect(r1?.id()).toEqual(r2?.id()) + expect(r1?.id).toEqual(r2?.id) }) test('pair across chrom', async () => { @@ -306,11 +304,11 @@ test('long read consistent IDs', async () => { const [r1, r2] = [ret1, ret2].map(x => x.find( k => - k.get('name') === + k.name === 'm131004_105332_42213_c100572142530000001823103304021442_s1_p0/103296', ), ) - expect(r1?.id()).toEqual(r2?.id()) + expect(r1?.id).toEqual(r2?.id) }) test('long read consistent IDs chm1 pacbio', async () => { @@ -323,11 +321,11 @@ test('long read consistent IDs chm1 pacbio', async () => { const [r1, r2] = [ret1, ret2].map(x => x.find( k => - k.get('name') === + k.name === 'm131009_195631_42213_c100579462550000001823095604021430_s1_p0/145814', ), ) - expect(r1?.id()).toEqual(r2?.id()) + expect(r1?.id).toEqual(r2?.id) }) test('long read consistent IDs hg002 nanopore', async () => { @@ -336,9 +334,9 @@ test('long read consistent IDs hg002 nanopore', async () => { const ret1 = await ti.getRecordsForRange('1', 200000, 700000) const ret2 = await ti.getRecordsForRange('1', 700000, 900000) const [r1, r2] = [ret1, ret2].map(x => - x.find(k => k.get('name') === '901e456a-b7cf-4624-bd27-e2981a6c7ca5'), + x.find(k => k.name === '901e456a-b7cf-4624-bd27-e2981a6c7ca5'), ) - expect(r1?.id()).toEqual(r2?.id()) + expect(r1?.id).toEqual(r2?.id) }) test('long read consistent IDs hg002 nanopore 2', async () => { @@ -347,17 +345,16 @@ test('long read consistent IDs hg002 nanopore 2', async () => { const ret3 = await ti.getRecordsForRange('1', 200000, 560000) const ret4 = await ti.getRecordsForRange('1', 500000, 700000) const [r3, r4] = [ret3, ret4].map(x => - x.find(k => k.get('name') === '7c318bae-cae9-4cf9-8efc-c761304aa0da'), + x.find(k => k.name === '7c318bae-cae9-4cf9-8efc-c761304aa0da'), ) - expect(r3?.id()).toEqual(r4?.id()) + expect(r3?.id).toEqual(r4?.id) }) test('long tag list', async () => { const ti = new BamFile({ bamPath: 'test/data/long_tag_list.bam' }) await ti.getHeader() const ret1 = await ti.getRecordsForRange('1', 0, 3000000) - expect(ret1[0]._tags().includes('SB')).toBeTruthy() - expect(ret1[0]._tags()).toMatchSnapshot() + expect(ret1[0].tags).toMatchSnapshot() }) test('fix decoding error for ID tag', async () => { @@ -365,22 +362,22 @@ test('fix decoding error for ID tag', async () => { await ti1.getHeader() const ret1 = await ti1.getRecordsForRange('1', 0, 3000000) - expect(ret1[0].get('ID')).toBe(78190) - expect(ret1[1].get('ID')).toBe(4440) + expect(ret1[0].tags.ID).toBe(78190) + expect(ret1[1].tags.ID).toBe(4440) }) test('fix decoding error for DI tag', async () => { const ti1 = new BamFile({ bamPath: 'test/data/long_tag_list2.bam' }) await ti1.getHeader() const ret1 = await ti1.getRecordsForRange('1', 0, 3000000) - expect(ret1[0].get('DI')).toBe(78190) - expect(ret1[1].get('DI')).toBe(4440) + expect(ret1[0].tags.DI).toBe(78190) + expect(ret1[1].tags.DI).toBe(4440) }) test('get CIGAR from a CG long tag', async () => { const ti1 = new BamFile({ bamPath: 'test/data/cg.bam' }) await ti1.getHeader() const ret1 = await ti1.getRecordsForRange('chr1', 0, 3000000) - expect(ret1[0].get('CIGAR').slice(0, 4)).toBe('1M1D') + expect(ret1[0].CIGAR.slice(0, 4)).toBe('1M1D') }) test('get header text', async () => { diff --git a/test/csi.test.ts b/test/csi.test.ts index 4de50e9..5526d8a 100644 --- a/test/csi.test.ts +++ b/test/csi.test.ts @@ -82,6 +82,6 @@ test('SAM spec pdf', async () => { const features = await b.getRecordsForRange('ref', 1, 100) expect(features.length).toEqual(6) - expect(features[2].get('sa')).toEqual('ref,29,-,6H5M,17,0;') - expect(features[4].get('sa')).toEqual('ref,9,+,5S6M,30,1;') + expect(features[2].tags.SA).toEqual('ref,29,-,6H5M,17,0;') + expect(features[4].tags.SA).toEqual('ref,9,+,5S6M,30,1;') }) diff --git a/test/fakerecord.ts b/test/fakerecord.ts index 8f3cdb2..e6e90ba 100644 --- a/test/fakerecord.ts +++ b/test/fakerecord.ts @@ -9,6 +9,8 @@ export default class FakeRecord extends Record { start: 0, byteArray: Buffer.from([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, ]), }, }) @@ -17,7 +19,8 @@ export default class FakeRecord extends Record { this.strand1 = strand1 === 'R' this.strand2 = strand2 === 'R' this.tlen = tlen - this._refID = 1 + this.nextrefid = 1 + this.refid = 1 } isRead1() { @@ -36,11 +39,15 @@ export default class FakeRecord extends Record { return this.strand1 } - template_length() { + get template_length() { return this.tlen } - _next_refid() { - return 1 + get next_refid() { + return this.nextrefid + } + + get ref_id() { + return this.refid } } diff --git a/test/vanilla-node.test.ts b/test/vanilla-node.test.ts index 1973d0c..6765c8b 100644 --- a/test/vanilla-node.test.ts +++ b/test/vanilla-node.test.ts @@ -28,15 +28,15 @@ test('gets features from volvox-sorted.bam', async () => { await ti.getHeader() const records = await ti.getRecordsForRange('ctgA', 0, 1000) expect(records.length).toEqual(131) - expect(records[0].get('start')).toEqual(2) - expect(records[0].get('end')).toEqual(102) - expect(records[0].get('cigar')).toEqual('100M') - expect(records[0].get('name')).toEqual('ctgA_3_555_0:0:0_2:0:0_102d') - expect(records[0].get('qual')).toEqual( + expect(records[0].start).toEqual(2) + expect(records[0].end).toEqual(102) + expect(records[0].CIGAR).toEqual('100M') + expect(records[0].name).toEqual('ctgA_3_555_0:0:0_2:0:0_102d') + expect(records[0].qual).toEqual( '17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17', ) - expect(records[0].get('md')).toEqual('100') - expect(records[0].getReadBases()).toEqual( + expect(records[0].tags.MD).toEqual('100') + expect(records[0].seq).toEqual( 'TTGTTGCGGAGTTGAACAACGGCATTAGGAACACTTCCGTCTCTCACTTTTATACGATTATGATTGGTTCTTTAGCCTTGGTTTAGATTGGTAGTAGTAG', ) await bam.close() diff --git a/yarn.lock b/yarn.lock index e3c73b5..5e934ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11,48 +11,38 @@ "@jridgewell/trace-mapping" "^0.3.24" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.5", "@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" +"@babel/helper-validator-identifier@^7.24.7", "@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== "@babel/parser@^7.25.4": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" - integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.26.0" -"@babel/types@^7.25.4", "@babel/types@^7.25.6": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" - integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== +"@babel/types@^7.25.4", "@babel/types@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -183,16 +173,16 @@ integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/config-array@^0.18.0": version "0.18.0" @@ -203,6 +193,11 @@ debug "^4.3.1" minimatch "^3.1.2" +"@eslint/core@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3" + integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== + "@eslint/eslintrc@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" @@ -218,16 +213,23 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.9.1": - version "9.9.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.1.tgz#4a97e85e982099d6c7ee8410aacb55adaa576f06" - integrity sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ== +"@eslint/js@9.14.0": + version "9.14.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.14.0.tgz#2347a871042ebd11a00fd8c2d3d56a265ee6857e" + integrity sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg== "@eslint/object-schema@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== +"@eslint/plugin-kit@^0.2.0": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6" + integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw== + dependencies: + levn "^0.4.1" + "@gmod/abortable-promise-cache@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@gmod/abortable-promise-cache/-/abortable-promise-cache-2.0.1.tgz#d01cbcb2d9ad23cf0f421824b7e759a441815ebc" @@ -243,15 +245,33 @@ long "^4.0.0" pako "^1.0.11" +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/retry@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" - integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@hutson/parse-repository-url@^5.0.0": version "5.0.0" @@ -320,7 +340,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -338,90 +358,105 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== -"@rollup/rollup-android-arm-eabi@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz#0412834dc423d1ff7be4cb1fc13a86a0cd262c11" - integrity sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg== - -"@rollup/rollup-android-arm64@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz#baf1a014b13654f3b9e835388df9caf8c35389cb" - integrity sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA== - -"@rollup/rollup-darwin-arm64@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz#0a2c364e775acdf1172fe3327662eec7c46e55b1" - integrity sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q== - -"@rollup/rollup-darwin-x64@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz#a972db75890dfab8df0da228c28993220a468c42" - integrity sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w== - -"@rollup/rollup-linux-arm-gnueabihf@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz#1609d0630ef61109dd19a278353e5176d92e30a1" - integrity sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w== - -"@rollup/rollup-linux-arm-musleabihf@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz#3c1dca5f160aa2e79e4b20ff6395eab21804f266" - integrity sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w== - -"@rollup/rollup-linux-arm64-gnu@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz#c2fe376e8b04eafb52a286668a8df7c761470ac7" - integrity sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw== - -"@rollup/rollup-linux-arm64-musl@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz#e62a4235f01e0f66dbba587c087ca6db8008ec80" - integrity sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w== - -"@rollup/rollup-linux-powerpc64le-gnu@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz#24b3457e75ee9ae5b1c198bd39eea53222a74e54" - integrity sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ== - -"@rollup/rollup-linux-riscv64-gnu@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz#38edfba9620fe2ca8116c97e02bd9f2d606bde09" - integrity sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg== - -"@rollup/rollup-linux-s390x-gnu@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz#a3bfb8bc5f1e802f8c76cff4a4be2e9f9ac36a18" - integrity sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ== - -"@rollup/rollup-linux-x64-gnu@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz#0dadf34be9199fcdda44b5985a086326344f30ad" - integrity sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw== - -"@rollup/rollup-linux-x64-musl@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz#7b7deddce240400eb87f2406a445061b4fed99a8" - integrity sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg== - -"@rollup/rollup-win32-arm64-msvc@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz#a0ca0c5149c2cfb26fab32e6ba3f16996fbdb504" - integrity sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ== - -"@rollup/rollup-win32-ia32-msvc@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz#aae2886beec3024203dbb5569db3a137bc385f8e" - integrity sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw== - -"@rollup/rollup-win32-x64-msvc@4.21.2": - version "4.21.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz#e4291e3c1bc637083f87936c333cdbcad22af63b" - integrity sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA== - -"@types/estree@1.0.5", "@types/estree@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@rollup/rollup-android-arm-eabi@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8" + integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw== + +"@rollup/rollup-android-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1" + integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA== + +"@rollup/rollup-darwin-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce" + integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ== + +"@rollup/rollup-darwin-x64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46" + integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg== + +"@rollup/rollup-freebsd-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b" + integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw== + +"@rollup/rollup-freebsd-x64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e" + integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g== + +"@rollup/rollup-linux-arm-gnueabihf@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9" + integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA== + +"@rollup/rollup-linux-arm-musleabihf@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42" + integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw== + +"@rollup/rollup-linux-arm64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102" + integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg== + +"@rollup/rollup-linux-arm64-musl@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907" + integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75" + integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA== + +"@rollup/rollup-linux-riscv64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988" + integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw== + +"@rollup/rollup-linux-s390x-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82" + integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ== + +"@rollup/rollup-linux-x64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz#e473de5e4acb95fcf930a35cbb7d3e8080e57a6f" + integrity sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA== + +"@rollup/rollup-linux-x64-musl@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz#0af12dd2578c29af4037f0c834b4321429dd5b01" + integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q== + +"@rollup/rollup-win32-arm64-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871" + integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA== + +"@rollup/rollup-win32-ia32-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c" + integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg== + +"@rollup/rollup-win32-x64-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454" + integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg== + +"@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/long@^4.0.0": version "4.0.2" @@ -429,9 +464,9 @@ integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== "@types/node@^20.11.19": - version "20.16.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.2.tgz#9e388f503a5af306e8c63319334887390966a11e" - integrity sha512-91s/n4qUPV/wg8eE9KHYW1kouTfDk2FPGjXbBMfRWP/2vg1rCXNQL1OCabwGs0XSdukuK+MwCDXE30QpSeMUhQ== + version "20.17.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.6.tgz#6e4073230c180d3579e8c60141f99efdf5df0081" + integrity sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ== dependencies: undici-types "~6.19.2" @@ -445,62 +480,62 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== -"@typescript-eslint/eslint-plugin@8.3.0", "@typescript-eslint/eslint-plugin@^8.1.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz#726627fad16d41d20539637efee8c2329fe6be32" - integrity sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA== +"@typescript-eslint/eslint-plugin@8.13.0", "@typescript-eslint/eslint-plugin@^8.1.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz#650c50b8c795b5d092189f139f6d00535b5b0f3d" + integrity sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.3.0" - "@typescript-eslint/type-utils" "8.3.0" - "@typescript-eslint/utils" "8.3.0" - "@typescript-eslint/visitor-keys" "8.3.0" + "@typescript-eslint/scope-manager" "8.13.0" + "@typescript-eslint/type-utils" "8.13.0" + "@typescript-eslint/utils" "8.13.0" + "@typescript-eslint/visitor-keys" "8.13.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@8.3.0", "@typescript-eslint/parser@^8.1.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.3.0.tgz#3c72c32bc909cb91ce3569e7d11d729ad84deafa" - integrity sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ== +"@typescript-eslint/parser@8.13.0", "@typescript-eslint/parser@^8.1.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.13.0.tgz#ef76203b7cac515aa3ccc4f7ce5320dd61c46b29" + integrity sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ== dependencies: - "@typescript-eslint/scope-manager" "8.3.0" - "@typescript-eslint/types" "8.3.0" - "@typescript-eslint/typescript-estree" "8.3.0" - "@typescript-eslint/visitor-keys" "8.3.0" + "@typescript-eslint/scope-manager" "8.13.0" + "@typescript-eslint/types" "8.13.0" + "@typescript-eslint/typescript-estree" "8.13.0" + "@typescript-eslint/visitor-keys" "8.13.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz#834301d2e70baf924c26818b911bdc40086f7468" - integrity sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg== +"@typescript-eslint/scope-manager@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz#2f4aed0b87d72360e64e4ea194b1fde14a59082e" + integrity sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA== dependencies: - "@typescript-eslint/types" "8.3.0" - "@typescript-eslint/visitor-keys" "8.3.0" + "@typescript-eslint/types" "8.13.0" + "@typescript-eslint/visitor-keys" "8.13.0" -"@typescript-eslint/type-utils@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz#c1ae6af8c21a27254321016b052af67ddb44a9ac" - integrity sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg== +"@typescript-eslint/type-utils@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz#8c8fa68490dcb9ae1687ffc7de8fbe23c26417bd" + integrity sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA== dependencies: - "@typescript-eslint/typescript-estree" "8.3.0" - "@typescript-eslint/utils" "8.3.0" + "@typescript-eslint/typescript-estree" "8.13.0" + "@typescript-eslint/utils" "8.13.0" debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/types@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.3.0.tgz#378e62447c2d7028236e55a81d3391026600563b" - integrity sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw== +"@typescript-eslint/types@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.13.0.tgz#3f35dead2b2491a04339370dcbcd17bbdfc204d8" + integrity sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng== -"@typescript-eslint/typescript-estree@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz#3e3d38af101ba61a8568f034733b72bfc9f176b9" - integrity sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA== +"@typescript-eslint/typescript-estree@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz#db8c93dd5437ca3ce417a255fb35ddc3c12c3e95" + integrity sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g== dependencies: - "@typescript-eslint/types" "8.3.0" - "@typescript-eslint/visitor-keys" "8.3.0" + "@typescript-eslint/types" "8.13.0" + "@typescript-eslint/visitor-keys" "8.13.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -508,91 +543,99 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.3.0.tgz#b10972319deac5959c7a7075d0cf2b5e1de7ec08" - integrity sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA== +"@typescript-eslint/utils@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.13.0.tgz#f6d40e8b5053dcaeabbd2e26463857abf27d62c0" + integrity sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.3.0" - "@typescript-eslint/types" "8.3.0" - "@typescript-eslint/typescript-estree" "8.3.0" + "@typescript-eslint/scope-manager" "8.13.0" + "@typescript-eslint/types" "8.13.0" + "@typescript-eslint/typescript-estree" "8.13.0" -"@typescript-eslint/visitor-keys@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz#320d747d107af1eef1eb43fbc4ccdbddda13068b" - integrity sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA== +"@typescript-eslint/visitor-keys@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz#e97b0d92b266ef38a1faf40a74da289b66683a5b" + integrity sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw== dependencies: - "@typescript-eslint/types" "8.3.0" + "@typescript-eslint/types" "8.13.0" eslint-visitor-keys "^3.4.3" "@vitest/coverage-v8@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-2.0.5.tgz#411961ce4fd1177a32b4dd74ab576ed3b859155e" - integrity sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg== + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-2.1.4.tgz#c0df11cda12b3a04570e8065754917d35baa0c55" + integrity sha512-FPKQuJfR6VTfcNMcGpqInmtJuVXFSCd9HQltYncfR01AzXhLucMEtQ5SinPdZxsT5x/5BK7I5qFJ5/ApGCmyTQ== dependencies: "@ampproject/remapping" "^2.3.0" "@bcoe/v8-coverage" "^0.2.3" - debug "^4.3.5" + debug "^4.3.7" istanbul-lib-coverage "^3.2.2" istanbul-lib-report "^3.0.1" istanbul-lib-source-maps "^5.0.6" istanbul-reports "^3.1.7" - magic-string "^0.30.10" - magicast "^0.3.4" + magic-string "^0.30.12" + magicast "^0.3.5" std-env "^3.7.0" test-exclude "^7.0.1" tinyrainbow "^1.2.0" -"@vitest/expect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.0.5.tgz#f3745a6a2c18acbea4d39f5935e913f40d26fa86" - integrity sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA== +"@vitest/expect@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.4.tgz#48f4f53a01092a3bdc118cff245f79ef388bdd8e" + integrity sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA== dependencies: - "@vitest/spy" "2.0.5" - "@vitest/utils" "2.0.5" - chai "^5.1.1" + "@vitest/spy" "2.1.4" + "@vitest/utils" "2.1.4" + chai "^5.1.2" tinyrainbow "^1.2.0" -"@vitest/pretty-format@2.0.5", "@vitest/pretty-format@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.0.5.tgz#91d2e6d3a7235c742e1a6cc50e7786e2f2979b1e" - integrity sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ== +"@vitest/mocker@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.4.tgz#0dc07edb9114f7f080a0181fbcdb16cd4a2d855d" + integrity sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ== + dependencies: + "@vitest/spy" "2.1.4" + estree-walker "^3.0.3" + magic-string "^0.30.12" + +"@vitest/pretty-format@2.1.4", "@vitest/pretty-format@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.4.tgz#fc31993bdc1ef5a6c1a4aa6844e7ba55658a4f9f" + integrity sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww== dependencies: tinyrainbow "^1.2.0" -"@vitest/runner@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.0.5.tgz#89197e712bb93513537d6876995a4843392b2a84" - integrity sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig== +"@vitest/runner@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.4.tgz#f9346500bdd0be1c926daaac5d683bae87ceda2c" + integrity sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA== dependencies: - "@vitest/utils" "2.0.5" + "@vitest/utils" "2.1.4" pathe "^1.1.2" -"@vitest/snapshot@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.0.5.tgz#a2346bc5013b73c44670c277c430e0334690a162" - integrity sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew== +"@vitest/snapshot@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.4.tgz#ef8c3f605fbc23a32773256d37d3fdfd9b23d353" + integrity sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q== dependencies: - "@vitest/pretty-format" "2.0.5" - magic-string "^0.30.10" + "@vitest/pretty-format" "2.1.4" + magic-string "^0.30.12" pathe "^1.1.2" -"@vitest/spy@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.0.5.tgz#590fc07df84a78b8e9dd976ec2090920084a2b9f" - integrity sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA== +"@vitest/spy@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.4.tgz#4e90f9783437c5841a27c80f8fd84d7289a6100a" + integrity sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg== dependencies: - tinyspy "^3.0.0" + tinyspy "^3.0.2" -"@vitest/utils@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.0.5.tgz#6f8307a4b6bc6ceb9270007f73c67c915944e926" - integrity sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ== +"@vitest/utils@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.4.tgz#6d67ac966647a21ce8bc497472ce230de3b64537" + integrity sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg== dependencies: - "@vitest/pretty-format" "2.0.5" - estree-walker "^3.0.3" - loupe "^3.1.1" + "@vitest/pretty-format" "2.1.4" + loupe "^3.1.2" tinyrainbow "^1.2.0" acorn-jsx@^5.3.2: @@ -600,10 +643,10 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.12.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== add-stream@^1.0.0: version "1.0.0" @@ -626,16 +669,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -669,6 +705,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -691,15 +732,23 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.23.3: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== +browserslist@^4.24.2: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" node-releases "^2.0.18" - update-browserslist-db "^1.1.0" + update-browserslist-db "^1.1.1" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" builtin-modules@^3.3.0: version "3.3.0" @@ -716,15 +765,15 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001646: - version "1.0.30001655" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz#0ce881f5a19a2dcfda2ecd927df4d5c1684b982f" - integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== +caniuse-lite@^1.0.30001669: + version "1.0.30001677" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f" + integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog== -chai@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c" - integrity sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA== +chai@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" + integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== dependencies: assertion-error "^2.0.1" check-error "^2.1.1" @@ -732,15 +781,6 @@ chai@^5.1.1: loupe "^3.1.0" pathval "^2.0.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -766,13 +806,6 @@ clean-regexp@^1.0.0: dependencies: escape-string-regexp "^1.0.5" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -780,11 +813,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -849,19 +877,19 @@ conventional-commits-parser@^6.0.0: dependencies: meow "^13.0.0" -core-js-compat@^3.37.0: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" - integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== +core-js-compat@^3.38.1: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== dependencies: - browserslist "^4.23.3" + browserslist "^4.24.2" crc@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/crc/-/crc-4.3.2.tgz#49b7821cbf2cf61dfd079ed93863bbebd5469b9a" integrity sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A== -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -870,12 +898,12 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== +debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" deep-eql@^5.0.1: version "5.0.2" @@ -899,10 +927,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.5.4: - version "1.5.13" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" - integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== +electron-to-chromium@^1.5.41: + version "1.5.52" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz#2bed832c95a56a195504f918150e548474687da8" + integrity sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ== emoji-regex@^8.0.0: version "8.0.0" @@ -960,7 +988,7 @@ esbuild@^0.21.3: "@esbuild/win32-ia32" "0.21.5" "@esbuild/win32-x64" "0.21.5" -escalade@^3.1.2: +escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -988,18 +1016,18 @@ eslint-plugin-prettier@^5.1.3: prettier-linter-helpers "^1.0.0" synckit "^0.9.1" -eslint-plugin-unicorn@^55.0.0: - version "55.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-55.0.0.tgz#e2aeb397914799895702480970e7d148df5bcc7b" - integrity sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA== +eslint-plugin-unicorn@^56.0.0: + version "56.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.0.tgz#9fd3ebe6f478571734541fa745026b743175b59e" + integrity sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw== dependencies: - "@babel/helper-validator-identifier" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.7" "@eslint-community/eslint-utils" "^4.4.0" ci-info "^4.0.0" clean-regexp "^1.0.0" - core-js-compat "^3.37.0" - esquery "^1.5.0" - globals "^15.7.0" + core-js-compat "^3.38.1" + esquery "^1.6.0" + globals "^15.9.0" indent-string "^4.0.0" is-builtin-module "^3.2.1" jsesc "^3.0.2" @@ -1007,48 +1035,52 @@ eslint-plugin-unicorn@^55.0.0: read-pkg-up "^7.0.1" regexp-tree "^0.1.27" regjsparser "^0.10.0" - semver "^7.6.1" + semver "^7.6.3" strip-indent "^3.0.0" -eslint-scope@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" - integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" - integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint@^9.9.0: - version "9.9.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.9.1.tgz#147ac9305d56696fb84cf5bdecafd6517ddc77ec" - integrity sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg== + version "9.14.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.14.0.tgz#534180a97c00af08bcf2b60b0ebf0c4d6c1b2c95" + integrity sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.11.0" + "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.18.0" + "@eslint/core" "^0.7.0" "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.9.1" + "@eslint/js" "9.14.0" + "@eslint/plugin-kit" "^0.2.0" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.0" - "@nodelib/fs.walk" "^1.2.8" + "@humanwhocodes/retry" "^0.4.0" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.0.2" - eslint-visitor-keys "^4.0.0" - espree "^10.1.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1058,26 +1090,23 @@ eslint@^9.9.0: ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^10.0.1, espree@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" - integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^8.12.0" + acorn "^8.14.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.0.0" + eslint-visitor-keys "^4.2.0" -esquery@^1.5.0: +esquery@^1.5.0, esquery@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -1108,20 +1137,10 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" +expect-type@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.1.0.tgz#a146e414250d13dfc49eafcfd1344a4060fa4c75" + integrity sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -1234,16 +1253,6 @@ generic-filehandle@^3.0.0: dependencies: es6-promisify "^6.1.1" -get-func-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - git-raw-commits@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-5.0.0.tgz#38af4301e70c17be03fec01a37a6cd90ce0db04e" @@ -1303,10 +1312,10 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globals@^15.7.0: - version "15.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.9.0.tgz#e9de01771091ffbc37db5714dab484f9f69ff399" - integrity sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA== +globals@^15.9.0: + version "15.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.12.0.tgz#1811872883ad8f41055b61457a130221297de5b5" + integrity sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ== graphemer@^1.4.0: version "1.4.0" @@ -1325,11 +1334,6 @@ handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -1359,10 +1363,10 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" @@ -1438,16 +1442,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1494,13 +1488,11 @@ jackspeak@^3.1.2: "@pkgjs/parseargs" "^0.11.0" jackspeak@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.1.tgz#9fca4ce961af6083e259c376e9e3541431f5287b" - integrity sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog== + version "4.0.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.2.tgz#11f9468a3730c6ff6f56823a820d7e3be9bef015" + integrity sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw== dependencies: "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" js-tokens@^4.0.0: version "4.0.0" @@ -1588,12 +1580,10 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -loupe@^3.1.0, loupe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.1.tgz#71d038d59007d890e3247c5db97c1ec5a92edc54" - integrity sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw== - dependencies: - get-func-name "^2.0.1" +loupe@^3.1.0, loupe@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" + integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== lru-cache@^10.0.1, lru-cache@^10.2.0: version "10.4.3" @@ -1601,18 +1591,18 @@ lru-cache@^10.0.1, lru-cache@^10.2.0: integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.0.tgz#15d93a196f189034d7166caf9fe55e7384c98a21" - integrity sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA== + version "11.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" + integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== -magic-string@^0.30.10: - version "0.30.11" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" - integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== +magic-string@^0.30.12: + version "0.30.12" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.12.tgz#9eb11c9d072b9bcb4940a5b2c2e1a217e4ee1a60" + integrity sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw== dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" -magicast@^0.3.4: +magicast@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739" integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== @@ -1633,11 +1623,6 @@ meow@^13.0.0: resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f" integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -1651,11 +1636,6 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^2.3.1" -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -1692,10 +1672,10 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.3.7: version "3.3.7" @@ -1736,20 +1716,6 @@ normalize-package-data@^6.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -1796,9 +1762,9 @@ p-try@^2.0.0: integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== pako@^1.0.11: version "1.0.11" @@ -1841,11 +1807,6 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -1877,10 +1838,10 @@ pathval@^2.0.0: resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.3.1: version "2.3.1" @@ -1892,14 +1853,14 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postcss@^8.4.41: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" prelude-ls@^1.2.1: version "1.2.1" @@ -2012,28 +1973,30 @@ rimraf@^6.0.1: package-json-from-dist "^1.0.0" rollup@^4.20.0: - version "4.21.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.2.tgz#f41f277a448d6264e923dd1ea179f0a926aaf9b7" - integrity sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw== + version "4.24.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.4.tgz#fdc76918de02213c95447c9ffff5e35dddb1d058" + integrity sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.21.2" - "@rollup/rollup-android-arm64" "4.21.2" - "@rollup/rollup-darwin-arm64" "4.21.2" - "@rollup/rollup-darwin-x64" "4.21.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.21.2" - "@rollup/rollup-linux-arm-musleabihf" "4.21.2" - "@rollup/rollup-linux-arm64-gnu" "4.21.2" - "@rollup/rollup-linux-arm64-musl" "4.21.2" - "@rollup/rollup-linux-powerpc64le-gnu" "4.21.2" - "@rollup/rollup-linux-riscv64-gnu" "4.21.2" - "@rollup/rollup-linux-s390x-gnu" "4.21.2" - "@rollup/rollup-linux-x64-gnu" "4.21.2" - "@rollup/rollup-linux-x64-musl" "4.21.2" - "@rollup/rollup-win32-arm64-msvc" "4.21.2" - "@rollup/rollup-win32-ia32-msvc" "4.21.2" - "@rollup/rollup-win32-x64-msvc" "4.21.2" + "@rollup/rollup-android-arm-eabi" "4.24.4" + "@rollup/rollup-android-arm64" "4.24.4" + "@rollup/rollup-darwin-arm64" "4.24.4" + "@rollup/rollup-darwin-x64" "4.24.4" + "@rollup/rollup-freebsd-arm64" "4.24.4" + "@rollup/rollup-freebsd-x64" "4.24.4" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.4" + "@rollup/rollup-linux-arm-musleabihf" "4.24.4" + "@rollup/rollup-linux-arm64-gnu" "4.24.4" + "@rollup/rollup-linux-arm64-musl" "4.24.4" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.4" + "@rollup/rollup-linux-riscv64-gnu" "4.24.4" + "@rollup/rollup-linux-s390x-gnu" "4.24.4" + "@rollup/rollup-linux-x64-gnu" "4.24.4" + "@rollup/rollup-linux-x64-musl" "4.24.4" + "@rollup/rollup-win32-arm64-msvc" "4.24.4" + "@rollup/rollup-win32-ia32-msvc" "4.24.4" + "@rollup/rollup-win32-x64-msvc" "4.24.4" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -2048,7 +2011,7 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.6.0, semver@^7.6.1: +semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -2070,15 +2033,15 @@ siginfo@^2.0.0: resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^4.0.1, signal-exit@^4.1.0: +signal-exit@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.0, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map@^0.6.1: version "0.6.1" @@ -2179,11 +2142,6 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -2196,13 +2154,6 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -2216,9 +2167,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== synckit@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" - integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== + version "0.9.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" + integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== dependencies: "@pkgr/core" "^0.1.0" tslib "^2.6.2" @@ -2237,12 +2188,17 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -tinybench@^2.8.0: +tinybench@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== -tinypool@^1.0.0: +tinyexec@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.1.tgz#0ab0daf93b43e2c211212396bdb836b468c97c98" + integrity sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ== + +tinypool@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe" integrity sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA== @@ -2252,15 +2208,10 @@ tinyrainbow@^1.2.0: resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== -tinyspy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.0.tgz#cb61644f2713cd84dee184863f4642e06ddf0585" - integrity sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +tinyspy@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== to-regex-range@^5.0.1: version "5.0.1" @@ -2270,14 +2221,14 @@ to-regex-range@^5.0.1: is-number "^7.0.0" ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c" + integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ== tslib@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -2297,23 +2248,23 @@ type-fest@^0.8.1: integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^4.6.0, type-fest@^4.7.1: - version "4.26.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.0.tgz#703f263af10c093cd6277d079e26b9e17d517c4b" - integrity sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw== + version "4.26.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" + integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== typescript-eslint@^8.1.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.3.0.tgz#f4d9c5ba71f6bead03ec41ecb2bece1de511e49f" - integrity sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA== + version "8.13.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.13.0.tgz#c7d92cc06188176c7d0e3825e10305b9c22fb102" + integrity sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw== dependencies: - "@typescript-eslint/eslint-plugin" "8.3.0" - "@typescript-eslint/parser" "8.3.0" - "@typescript-eslint/utils" "8.3.0" + "@typescript-eslint/eslint-plugin" "8.13.0" + "@typescript-eslint/parser" "8.13.0" + "@typescript-eslint/utils" "8.13.0" typescript@^5.0.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== uglify-js@^3.1.4: version "3.19.3" @@ -2330,13 +2281,13 @@ unicorn-magic@^0.1.0: resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" uri-js@^4.2.2: version "4.4.1" @@ -2353,51 +2304,51 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vite-node@2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.0.5.tgz#36d909188fc6e3aba3da5fc095b3637d0d18e27b" - integrity sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q== +vite-node@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.4.tgz#97ffb6de913fd8d42253afe441f9512e9dbdfd5c" + integrity sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg== dependencies: cac "^6.7.14" - debug "^4.3.5" + debug "^4.3.7" pathe "^1.1.2" - tinyrainbow "^1.2.0" vite "^5.0.0" vite@^5.0.0: - version "5.4.2" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.2.tgz#8acb6ec4bfab823cdfc1cb2d6c53ed311bc4e47e" - integrity sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA== + version "5.4.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18" + integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ== dependencies: esbuild "^0.21.3" - postcss "^8.4.41" + postcss "^8.4.43" rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" vitest@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.0.5.tgz#2f15a532704a7181528e399cc5b754c7f335fd62" - integrity sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA== - dependencies: - "@ampproject/remapping" "^2.3.0" - "@vitest/expect" "2.0.5" - "@vitest/pretty-format" "^2.0.5" - "@vitest/runner" "2.0.5" - "@vitest/snapshot" "2.0.5" - "@vitest/spy" "2.0.5" - "@vitest/utils" "2.0.5" - chai "^5.1.1" - debug "^4.3.5" - execa "^8.0.1" - magic-string "^0.30.10" + version "2.1.4" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.1.4.tgz#ba8f4589fb639cf5a9e6af54781667312b3e8230" + integrity sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ== + dependencies: + "@vitest/expect" "2.1.4" + "@vitest/mocker" "2.1.4" + "@vitest/pretty-format" "^2.1.4" + "@vitest/runner" "2.1.4" + "@vitest/snapshot" "2.1.4" + "@vitest/spy" "2.1.4" + "@vitest/utils" "2.1.4" + chai "^5.1.2" + debug "^4.3.7" + expect-type "^1.1.0" + magic-string "^0.30.12" pathe "^1.1.2" std-env "^3.7.0" - tinybench "^2.8.0" - tinypool "^1.0.0" + tinybench "^2.9.0" + tinyexec "^0.3.1" + tinypool "^1.0.1" tinyrainbow "^1.2.0" vite "^5.0.0" - vite-node "2.0.5" + vite-node "2.1.4" why-is-node-running "^2.3.0" which@^2.0.1: